MyFile.vue 56 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572
  1. <template>
  2. <div>
  3. <div class="bigBox">
  4. <div class="settingBox" @click="mouseClick">
  5. <!-- 设置盒子顶部搜索 -->
  6. <div class="topSearch">
  7. <div style="position: relative;">
  8. <el-input v-model="searchFire" class="searchFire" size="large" placeholder="搜索文件"
  9. style="width: 15rem;" />
  10. <el-icon style="color: gray;display: inline-block;position: absolute;top: 8px;right: 5px;">
  11. <Search />
  12. </el-icon>
  13. </div>
  14. <div>
  15. <el-icon style="font-size: 24px;" @click="createNewMenu(1)">
  16. <Plus />
  17. </el-icon>
  18. <!-- @click="createNewFile" -->
  19. </div>
  20. </div>
  21. <!-- 方块点击盒子 -->
  22. <div
  23. style="display: flex;justify-content: flex-start;align-items: flex-start;flex-wrap: wrap;height: 80vh;align-content: flex-start;overflow-y: auto;">
  24. <!-- v-for盒子 -->
  25. <template v-for="(item, index) in fileMenu">
  26. <div class="setBox" @click="changeFile(item, index)">
  27. <el-dropdown trigger="click" class="selectChe">
  28. <span class="el-dropdown-link">
  29. ...
  30. </span>
  31. <template #dropdown>
  32. <el-dropdown-menu>
  33. <el-dropdown-item @click="restName(item, index)">重命名</el-dropdown-item>
  34. <el-dropdown-item @click="delName(item, index)">删除</el-dropdown-item>
  35. </el-dropdown-menu>
  36. </template>
  37. </el-dropdown>
  38. <img src="../../assets/images/fileStyle.png" style="width: 72px;height: 72px;">
  39. <p class="ellipsis-text">{{ item.dirName }}</p>
  40. </div>
  41. </template>
  42. </div>
  43. <div>
  44. <p>
  45. <span style="margin-left: 5px;">{{ useSpace ? useSpace + 'G' : '0' }}/{{ allSpace ?
  46. allSpace
  47. * 1024 + 'G' : '0' }}</span>
  48. <span style="margin-left: 5px;font-size: 12px;color: blue;cursor: pointer;"
  49. @click="askApply">申请扩容</span>
  50. </p>
  51. <el-progress style="margin-left: 8px;" :percentage="percent()" />
  52. </div>
  53. </div>
  54. <!-- 右侧大盒子 -->
  55. <div class="mesBox" v-if="editOnline">
  56. <!-- 功能盒子 -->
  57. <div class="useBox">
  58. <!-- table切换 -->
  59. <div style="width: 100%;height: 24px;background-color: #7084B4;line-height: 20px;">
  60. <template v-for="(item, index) in menuList">
  61. <span @click="tableChange(item, index)"
  62. :class="['tables', { tableLis: selectedIndex === index }]">
  63. {{ item.name }}
  64. <img v-if="selectedIndex === index ? true : false"
  65. style="position: absolute;top: 4px;right: 4px;" src="../../assets/images/close.png"
  66. @click="shotdown(item)">
  67. </span>
  68. </template>
  69. </div>
  70. <!-- 众多功能 -->
  71. <div class="manyUse">
  72. <div
  73. style="display: flex;width: 82px;height: 32px;justify-content: flex-start;align-items: center;">
  74. <div style="margin-left: 5px;">
  75. <el-icon
  76. style="background-color: #7084B4;width: 24px;height: 24px;border-radius: 50%;color: white;"
  77. @click="createNewMenu(0)">
  78. <Plus />
  79. </el-icon>
  80. </div>
  81. <div style="margin-left: 5px;" @click="createNewMenu(0)">
  82. <span style="font-size: 14px;">新建</span>
  83. </div>
  84. </div>
  85. <template v-for="(item, index) in useMenu">
  86. <div style="display: flex;width: 82px;height: 32px;justify-content: flex-start;align-items: center;line-height: 18px;"
  87. @click="getMenu(item, index)">
  88. <div style="margin-left: 5px;">
  89. <img :src="item.img" style="width: 24px;height: 24px;" alt="">
  90. </div>
  91. <div style="margin-left: 5px;">
  92. <span style="font-size: 14px;">{{ item.name }}</span>
  93. </div>
  94. </div>
  95. </template>
  96. <div
  97. style="display: flex;width: 92px;height: 32px;justify-content: flex-start;align-items: center;line-height: 18px;">
  98. <div style="margin-left: 5px;">
  99. <img src="../../assets/images/upload.png" style="width: 24px;height: 24px;" alt="">
  100. </div>
  101. <div style="margin-left: 5px;">
  102. <span style="color: black;cursor: pointer;" @click="uploadModal = true">上传
  103. </span>
  104. </div>
  105. </div>
  106. </div>
  107. <!-- 面包屑功能栏 -->
  108. <div class="breadBox">
  109. <!-- 左侧 -->
  110. <div style="display: flex;justify-content: space-around;align-items: center;">
  111. <!-- 前进后退 -->
  112. <div style="display: flex;justify-content: space-around;align-items: center;">
  113. <img style="display:block;width: 11px;height: 11px;" :src="blueLeft" alt=""
  114. @click="getAllTop">
  115. <img style="display:block;width: 16px;height: 16px;" :src="grayRight" alt="">
  116. </div>
  117. <!-- 面包屑 -->
  118. <div>
  119. <BreadMenu></BreadMenu>
  120. </div>
  121. </div>
  122. <!-- 右侧 -->
  123. <div>
  124. <img :src="sort" alt="">
  125. <img :src="squre" alt="">
  126. </div>
  127. </div>
  128. </div>
  129. <!-- 展示文件夹盒子 -->
  130. <!-- 文件夹 -->
  131. <div class="detailBox" @click="mouseClick">
  132. <el-collapse v-model="folder" accordion class="collapseSell">
  133. <el-collapse-item title="文件夹" name="1" class="custom-collapse-item">
  134. <el-table :data="folderList" style="width: 100%" @selection-change="handleSelectionChange1"
  135. :single-select="true" @row-click="folderClick" @row-contextmenu="folderRClick">
  136. <el-table-column type="selection" width="55" />
  137. <el-table-column label="名称" width="180">
  138. <template #default="scope">
  139. <span>
  140. <img src="../../assets/images/fileBox.png" style="width: 20px;height: 24px;"
  141. alt="">
  142. {{ scope.row.dirName }}
  143. </span>
  144. </template>
  145. </el-table-column>
  146. <el-table-column prop="createTime" label="时间" width="180" />
  147. <el-table-column prop="dirType" label="类型">
  148. <template #default="scope">
  149. <span>{{ scope.row.dirType === "1" ? "文件夹" : "未知类型" }}</span>
  150. </template>
  151. </el-table-column>
  152. <el-table-column label="大小">
  153. <template #default="scope">
  154. <span>
  155. 10KB
  156. </span>
  157. </template>
  158. </el-table-column>
  159. </el-table>
  160. </el-collapse-item>
  161. </el-collapse>
  162. <!-- 右键唤出的菜单 -->
  163. <div class="right_menu" v-if="folderVisible"
  164. :style="{ left: folderleft + 'px', top: foldertop + 'px' }">
  165. <div class="menu_item" @click="restName(null, null)">
  166. <!-- <img src="@/assets/images/textbox.png" alt="" /> -->
  167. <span>重命名</span>
  168. </div>
  169. <div class="menu_item" @click="folderClick(null, null)">
  170. <!-- <img src="@/assets/images/trash.png" alt="" /> -->
  171. <span>打开</span>
  172. </div>
  173. </div>
  174. </div>
  175. <!-- 文件 -->
  176. <div class="fileTable">
  177. <el-collapse v-model="files" accordion class="collapse" style="height: 200px;">
  178. <el-collapse-item title="文件" name="2" class="">
  179. <el-table :data="fileList" style="width: 100%" @row-contextmenu="handleRowClick"
  180. @selection-change="handleSelectionChange" @row-click="mouseClick">
  181. <el-table-column type="selection" width="55" />
  182. <el-table-column label="名称" width="200">
  183. <template #default="scope">
  184. <span style="white-space: nowrap;overflow: hidden;text-overflow: ellipsis;">
  185. <el-icon v-if="collectImg">
  186. <Star />
  187. </el-icon>
  188. <img v-else src="../../assets/images/yellowstar.png" alt="">
  189. <img :src="getImage(scope.row.fileType)" alt="">
  190. {{ scope.row.fileName }}
  191. </span>
  192. </template>
  193. </el-table-column>
  194. <el-table-column prop="createTime" label="时间" width="180" />
  195. <el-table-column prop="fileType" label="类型" />
  196. <el-table-column label="大小">
  197. <template #default="scope">
  198. <span>
  199. {{ scope.row.fileSize }}KB
  200. </span>
  201. </template>
  202. </el-table-column>
  203. </el-table>
  204. <div class="setCli" v-if="cliCC">
  205. <template v-for="(item, index) in filterMouseCli()">
  206. <p @click="chooseSet(item, index)" class="chooseSet">
  207. <img :src="item.img" alt="">
  208. {{ item.name }}
  209. <span v-if="item.name == '在线编辑' || item.name == '协作' ? true : false"
  210. style="color: #7084B4;float: right;position: relative;" class="arrow">></span>
  211. </p>
  212. </template>
  213. </div>
  214. <div class="setCli1" v-if="anyP">
  215. <p @click="chooseSet1(0)" class="">
  216. <img src="../../assets/images/user.png" alt="">
  217. 选择人员
  218. </p>
  219. <p class="chooseSet">
  220. <img src="../../assets/images/archiveTray.png" alt="">
  221. 归档
  222. </p>
  223. </div>
  224. </el-collapse-item>
  225. </el-collapse>
  226. </div>
  227. </div>
  228. <div v-else>
  229. <div>
  230. <el-button @click="editOnline = true">返回</el-button>
  231. </div>
  232. <FileEdit :docId="clickRowId" :copyRow="copyRow" :historyPrew="historyPrew"
  233. :historycopyRow="historycopyRow"></FileEdit>
  234. </div>
  235. <!-- 扩容弹窗 -->
  236. <div>
  237. <el-dialog v-model="askTo" title="扩容申请" width="30%">
  238. <el-form>
  239. <el-form-item label="新容量">
  240. <el-input-number v-model="askNum" :min="1" :max="10" />
  241. </el-form-item>
  242. <el-form-item label="申请理由">
  243. <el-input v-model="askTalk" maxlength="150" placeholder="请输入申请理由" show-word-limit
  244. type="textarea" />
  245. </el-form-item>
  246. </el-form>
  247. <template #footer>
  248. <span class="dialog-footer">
  249. <el-button @click="askTo = false">取消</el-button>
  250. <el-button type="primary" @click="sureAsk">
  251. 确定
  252. </el-button>
  253. </span>
  254. </template>
  255. </el-dialog>
  256. </div>
  257. <!-- 新增文件夹弹窗 -->
  258. <div>
  259. <CreateFloder v-if="folderCase" :folderCase="folderCase" @getChildrenC="getChildrenC" :oneOrTwo="oneOrTwo"
  260. :impDirId="impDirId"
  261. :impSpaceId="impSpaceId"
  262. :newDirId="newDirId"
  263. :newSpaceId="newSpaceId"
  264. :getAllTop="getAllTop"
  265. >
  266. </CreateFloder>
  267. </div>
  268. <!-- 废弃的顶层目录新增 -->
  269. <div>
  270. <el-dialog v-model="addFile" title="Tips" width="30%">
  271. <el-form :model="fileForm" label-width="120px">
  272. <el-form-item label="空间类型">
  273. <el-select v-model="spaceValue" placeholder="请选择空间类型">
  274. <el-option v-for="(item, index) in spaceSelect" :key="item.value" :label="item.label"
  275. :value="item.value" :disabled="item.disabled" />
  276. </el-select>
  277. </el-form-item>
  278. <el-form-item label="空间名称">
  279. <el-input v-model="fileForm.spaceName" />
  280. </el-form-item>
  281. <el-form-item label="备注">
  282. <el-input v-model="fileForm.remark" />
  283. </el-form-item>
  284. </el-form>
  285. <template #footer>
  286. <span class="dialog-footer">
  287. <el-button @click="addFile = false">取消</el-button>
  288. <el-button type="primary" @click="sureAddFile">
  289. 确认
  290. </el-button>
  291. </span>
  292. </template>
  293. </el-dialog>
  294. </div>
  295. <!-- 文件上传 -->
  296. <div>
  297. <el-dialog v-model="uploadModal" title="文件上传" width="30%">
  298. <el-upload class="upload-demo" drag :http-request="onSuccess" multiple>
  299. <el-icon class="el-icon--upload"><upload-filled /></el-icon>
  300. <div class="el-upload__text">
  301. 拖入或<em>点击上传</em>
  302. </div>
  303. <template #tip>
  304. <div class="el-upload__tip">
  305. 请选择或拖入文件
  306. </div>
  307. </template>
  308. </el-upload>
  309. <template #footer>
  310. <span class="dialog-footer">
  311. <el-button @click="uploadModal = false">取消</el-button>
  312. <el-button type="primary" @click="sureUpload">
  313. 确认
  314. </el-button>
  315. </span>
  316. </template>
  317. </el-dialog>
  318. </div>
  319. <!-- 文件重命名 -->
  320. <div>
  321. <el-dialog v-model="fileNameChange" title="重命名" width="30%">
  322. <el-form :model="nameForm" label-width="120px">
  323. <el-form-item label="新名字">
  324. <el-input v-model="nameForm.name"></el-input>
  325. </el-form-item>
  326. </el-form>
  327. <template #footer>
  328. <span class="dialog-footer">
  329. <el-button @click="fileNameChange = false">取消</el-button>
  330. <el-button type="primary" @click="sureChangeName">
  331. 确认
  332. </el-button>
  333. </span>
  334. </template>
  335. </el-dialog>
  336. </div>
  337. <!-- 文件收藏 -->
  338. <div>
  339. <el-dialog v-model="fileCollect" title="重命名" width="30%">
  340. <el-form :model="collectForm" label-width="120px">
  341. <el-form-item label="名称">
  342. <el-input v-model="collectForm.name" />
  343. </el-form-item>
  344. <el-form-item label="收藏标签">
  345. <div class="newTag" v-if="tagCollect">
  346. <el-input v-model="newTag" placeholder="请输入新标签" @blur="tagBlur"></el-input>
  347. </div>
  348. <el-select v-model="collectForm.folders" class="m-2" placeholder="请选择" size="large"
  349. @change="collectChange">
  350. <el-option v-for="(item, index) in collectList" :key="item.labelId" :label="item.label"
  351. :value="item.labelId" />
  352. </el-select>
  353. </el-form-item>
  354. </el-form>
  355. <el-button @click="createTag">新建标签</el-button>
  356. <template #footer>
  357. <span class="dialog-footer">
  358. <el-button @click="fileCollect = false">取消</el-button>
  359. <el-button type="primary" @click="sureCollect">
  360. 确认
  361. </el-button>
  362. </span>
  363. </template>
  364. </el-dialog>
  365. </div>
  366. <!-- 中栏重命名 -->
  367. <div>
  368. <el-dialog v-model="folderName" title="重命名" width="30%">
  369. <el-input v-model="newName"></el-input>
  370. <template #footer>
  371. <span class="dialog-footer">
  372. <el-button @click="folderName = false">取消</el-button>
  373. <el-button type="primary" @click="sureFolderName">确认</el-button>
  374. </span>
  375. </template>
  376. </el-dialog>
  377. </div>
  378. <ImgPreview :previewData="previewData" :copyFileType="copyFileType" :showPreview="showPreview"
  379. @closeImgPreview="closeImgPreview"></ImgPreview>
  380. <div>
  381. <FileTree v-if="fileTrees" :fileTrees="fileTrees" :newSpaceId="newSpaceId" :fileId="clickRowId"
  382. @getChildren="getChildren" :copyOrMove="copyOrMove"></FileTree>
  383. </div>
  384. <!-- 穿梭框 -->
  385. <div>
  386. <TransferModal v-if="thanks" :thanks="thanks" :clickRowId="clickRowId" :workOrEdit="workOrEdit"
  387. @getCback="getCback"></TransferModal>
  388. </div>
  389. </div>
  390. </div>
  391. <!-- 图片预览 -->
  392. <!-- 历史版本 -->
  393. <historyList :openFile="openForwardFile" :docId="clickRowId" :name="nameForm.name" :copyRow="copyRow"
  394. @close="openForwardFile = false" :fileUserTreeData="fileUserTreeData.data" @changeMsgClose="changeMsgClose">
  395. </historyList>
  396. <!-- 历史版本 -->
  397. </template>
  398. <script>
  399. import { ref, toRaw, onMounted } from 'vue'
  400. import myfile from '../../api/myfile/myfile'
  401. import documents from '../../api/document/document'
  402. import fileSpace from '../../api/filespace/fileSpace'
  403. import fileShare from '../../api/fileShare/fileShare'
  404. import collect from '../../api/collect/collect'
  405. import FileTree from './components/FileTree.vue'
  406. import BreadMenu from './components/BreadMenu.vue'
  407. import FileEdit from './components/FileEdit.vue'
  408. import TransferModal from './modalComponebts/Transfer.vue'
  409. import CreateFloder from './modalComponebts/CreateFloder.vue'
  410. import ImgFile from "./jsComponents/ImgFile"
  411. import { Search } from '@element-plus/icons-vue'
  412. import blueLeft from '../../assets/images/blueLeft.png'
  413. import grayRight from "../../assets/images/grayRight.png"
  414. import sort from '../../assets/images/sort.png'
  415. import squre from '../../assets/images/squre.png'
  416. import { ElMessage } from 'element-plus'
  417. import ImgPreview from '@/components/ImgPreview/ImgPreview.vue'
  418. import { preview } from "@/api/common/common.js";
  419. import historyList from "@/components/historyList/index.vue"; //选择文件发送的列表,历史版本
  420. import { listVersion } from "@/api/biz/version";
  421. import useUserStore from "@/store/modules/user";
  422. import { useRouter, useRoute } from "vue-router";
  423. export default {
  424. setup() {
  425. let fileTrees = ref(false)//filetree父传子
  426. let thanks = ref(false)//transfer父传子
  427. let folderCase = ref(false)
  428. let editOnline = ref(true)
  429. let searchFire = ref('')
  430. let selectedIndex = ref(0)
  431. let folder = ref(['1'])
  432. let files = ref(['2'])
  433. let folderList = ref([])
  434. let askTo = ref(false)
  435. let folderName = ref(false)
  436. let askNum = ref(1)
  437. let askTalk = ref('')
  438. let newTag = ref('')
  439. let cliCC = ref(false)
  440. let addFile = ref(false)
  441. let anyP = ref(false)
  442. let uploadModal = ref(false)
  443. let collectImg = ref(true)
  444. let fileCollect = ref(false)
  445. let tagCollect = ref(false)//添加收藏标签时显示
  446. let selectedBox = ref(-1)
  447. let newName = ref('')
  448. let clickRowId = ref(0)
  449. let trandata = ref()
  450. let folderId = ref('')
  451. let fileId = ref('')
  452. let tranvalue = ref([])
  453. let useSpace = ref(0)
  454. let allSpace = ref(0)
  455. let fileArr = ref([])
  456. let copyDirId = ref(0)//需要操作的dirid
  457. let copySpaceId = ref(0)//需要操作的spaceid
  458. let copyDocId = ref(0)//需要操作的docid
  459. let copyFileId = ref(0)//需要操作的fileid
  460. let copyFileSize = ref(0)//需要操作的filesize
  461. let copyFileType = ref('')//需要操作的文件类型
  462. let copyFileName = ref("")//需要操作的文件名
  463. let directoryId = ref('')
  464. let impSpaceId = ref("")
  465. let impDirId = ref("")
  466. let impNum = ref(0)
  467. let copyParentId = ref("")//文件夹
  468. let needBag = ref("")
  469. let copyOrMove = ref(0)//0代表复制,1代表移动
  470. let oneOrTwo = ref(0)//0代表二级,1代表一级
  471. let sortNum = ref(0)
  472. const openForwardFile = ref(false) //历史版本展示
  473. const historyPrew = ref(false)
  474. const fileUserTreeData = reactive({ data: {} });
  475. let fileForm = ref({
  476. spaceType: '',
  477. spaceName: "",
  478. remark: "",
  479. })
  480. let fileList = ref([
  481. ])
  482. let menuList = ref([
  483. ])
  484. let useMenu = ref([
  485. {
  486. img: ImgFile.copy,
  487. name: "复制"
  488. },
  489. {
  490. img: ImgFile.clipboard,
  491. name: "粘贴"
  492. },
  493. {
  494. img: ImgFile.share,
  495. name: "分享给"
  496. },
  497. {
  498. img: ImgFile.trash,
  499. name: "删除"
  500. },
  501. ])
  502. let arrorMenu = ref([
  503. {
  504. img: ImgFile.file,
  505. name: "文件"
  506. },
  507. {
  508. img: ImgFile.folder,
  509. name: '文件夹'
  510. },
  511. {
  512. img: ImgFile.image,
  513. name: "图片"
  514. },
  515. {
  516. img: ImgFile.filmSlate,
  517. name: "视频"
  518. },
  519. {
  520. img: ImgFile.musicNotes,
  521. name: "音频"
  522. }
  523. ])
  524. let mouseCli = ref([
  525. {
  526. img: ImgFile.previewIcon,
  527. name: "预览"
  528. },
  529. {
  530. img: ImgFile.addolder,
  531. name: "移动",
  532. },
  533. {
  534. img: ImgFile.copy,
  535. name: "复制",
  536. },
  537. // {
  538. // img: ImgFile.clipboard,
  539. // name: "粘贴"
  540. // },
  541. {
  542. img: ImgFile.collect,
  543. name: "收藏"
  544. },
  545. {
  546. img: ImgFile.downLoad,
  547. name: "下载"
  548. },
  549. {
  550. img: ImgFile.textbox,
  551. name: "重命名"
  552. },
  553. // {
  554. // img: ImgFile.goon,
  555. // name: "发送"
  556. // },
  557. {
  558. img: ImgFile.share,
  559. name: "分享"
  560. },
  561. {
  562. img: ImgFile.notePencil,
  563. name: "在线编辑"
  564. },
  565. {
  566. img: ImgFile.togger,
  567. name: "协作"
  568. },
  569. {
  570. img: ImgFile.icc,
  571. name: "文字识别"
  572. },
  573. {
  574. img: ImgFile.history,
  575. name: "历史版本"
  576. },
  577. {
  578. img: ImgFile.trash,
  579. name: "删除"
  580. }
  581. ])
  582. let nameForm = ref({
  583. name: ""
  584. })
  585. let collectForm = ref({
  586. name: "",
  587. folders: "",
  588. })
  589. let fileNameChange = ref(false)
  590. let fileMenu = ref([])
  591. let collectList = ref([])
  592. let copyRow = ref({})
  593. let spaceValue = ref("")
  594. let newDirId = ref('')
  595. let newSpaceId = ref('')
  596. let spaceSelect = ref([
  597. {
  598. label: "个人空间",
  599. value: 3,
  600. },
  601. {
  602. label: "部门空间",
  603. value: 2,
  604. disabled: true
  605. },
  606. {
  607. label: "公共空间",
  608. value: 1,
  609. disabled: true
  610. },
  611. ])
  612. let workOrEdit = ref(0)
  613. const showPreview = ref(false)//控制图片预览组件显示
  614. const previewData = ref()//需要预览的文件的数据
  615. const router = useRouter(); //注册路由
  616. const folderVisible = ref(false); //显示文件夹右键菜单
  617. const foldertop = ref(0);
  618. const folderleft = ref(0);
  619. const thisFolder = ref({}); //当前右键的文件夹
  620. function getAllCollect() {
  621. collect.getCollect({}).then(res => {
  622. const maxAge = res.rows.reduce((max, obj) => (obj.orderNum > max ? obj.orderNum : max), res.rows[0].orderNum)
  623. sortNum.value = maxAge
  624. collectList.value = res.rows.map(item => {
  625. return {
  626. label: item.labelName,
  627. labelId: item.labelId,
  628. order: item.orderNum
  629. }
  630. })
  631. })
  632. }
  633. // 获取文件夹,中栏,文件
  634. function getAllTop() {
  635. documents.getTop(3).then(res => {
  636. let userMe = [res]
  637. impDirId.value = userMe[0].dirId//固定
  638. impSpaceId.value = userMe[0].spaceId//固定
  639. newSpaceId.value = userMe[0].spaceId//变化
  640. newDirId.value = userMe[0].dirId//变化
  641. documents.getALLdocument({ parentId: userMe[0].dirId - 0, spaceId: userMe[0].spaceId }).then(res => {
  642. fileMenu.value = res.data
  643. folderList.value = res.data
  644. })
  645. myfile.getById(userMe[0].dirId - 0).then(res => {
  646. if (res.code === 200) {
  647. fileList.value = res.rows
  648. }
  649. })
  650. })
  651. }
  652. function changeFile(row, num) {
  653. copyParentId.value = row.parentId
  654. newDirId.value = row.dirId
  655. newSpaceId.value = row.spaceId
  656. documents.getALLdocument({ parentId: row.dirId - 0, spaceId: row.spaceId - 0 }).then(res => {
  657. folderList.value = res.data
  658. // if (res.code === 200) {
  659. if (res.data.length === 0) {
  660. myfile.getById(newDirId.value)
  661. .then(res => {
  662. if (res.code === 200) {
  663. fileList.value = res.rows;
  664. }
  665. })
  666. .catch(error => {
  667. console.error("myfile.getAllFileMenu 调用失败:", error);
  668. });
  669. } else {
  670. myfile.getById(res.data[0].dirId - 0)
  671. .then(res => {
  672. if (res.code === 200) {
  673. fileList.value = res.rows;
  674. }
  675. })
  676. .catch(error => {
  677. console.error("myfile.getAllFileMenu 调用失败:", error);
  678. });
  679. }
  680. // }
  681. })
  682. this.selectedIndex = num
  683. const newItem = {
  684. name: row.dirName,
  685. choose: row.dirName
  686. };
  687. // 检查 newItem 是否已存在于 menuList 中
  688. const isItemExist = menuList.value.some(item => item.choose === newItem.choose);
  689. // 如果不存在,则添加它
  690. if (!isItemExist) {
  691. menuList.value.push(newItem);
  692. }
  693. useSpace.value = row.usedCap
  694. allSpace.value = row.spaceCap
  695. }
  696. // tableMenu切换
  697. function tableChange(row, num) {
  698. this.selectedIndex = num
  699. }
  700. // x图标事件
  701. function shotdown(row) {
  702. this.menuList = this.menuList.filter(item => item.name !== row.name)
  703. }
  704. // 文件名表格每一行点击事件
  705. function handleRowClick(row, col, e) {
  706. e.preventDefault();
  707. e.stopPropagation();
  708. copyRow.value = row
  709. clickRowId.value = row.docId
  710. copyDirId.value = row.dirId
  711. copySpaceId.value = row.spaceId
  712. copyFileId.value = row.fileId
  713. copyFileSize.value = row.fileSize
  714. copyFileType.value = row.fileType
  715. nameForm.value.name = row.fileName
  716. if (cliCC.value === true) {
  717. cliCC.value = false
  718. } else {
  719. cliCC.value = true
  720. }
  721. }
  722. // 申请扩容
  723. function askApply() {
  724. this.askTo = true
  725. }
  726. function sureAsk() {
  727. this.askTo = false
  728. }
  729. //mouse弹框
  730. async function chooseSet(row, index, num) {
  731. if (row.name == '在线编辑' || row.name == '协作') {
  732. cliCC.value = true
  733. } else {
  734. cliCC.value = false
  735. }
  736. if (row.name == '分享') {
  737. workOrEdit.value = num
  738. thanks.value = true
  739. } else {
  740. thanks.value = false
  741. }
  742. if (row.name == '协作') {
  743. if (anyP.value) {
  744. anyP.value = false
  745. } else {
  746. anyP.value = true
  747. }
  748. } else {
  749. anyP.value = false
  750. }
  751. if (row.name == '删除') {
  752. myfile.delMenu(clickRowId.value).then(res => {
  753. if (res.code === 200) {
  754. ElMessage({
  755. type: "success",
  756. message: "删除成功"
  757. })
  758. getAllTop()
  759. }
  760. })
  761. }
  762. if (row.name === '复制') {
  763. copyOrMove.value = 0
  764. fileTrees.value = true
  765. }
  766. if (row.name === '移动') {
  767. copyOrMove.value = 1
  768. fileTrees.value = true
  769. }
  770. if (row.name === '重命名') {
  771. fileNameChange.value = true
  772. }
  773. if (row.name === "下载") {
  774. location.href = `${import.meta.env.VITE_APP_BASE_API}/api/download/${copyFileId.value}`;
  775. }
  776. if (row.name === '收藏') {
  777. collectForm.value.name = nameForm.value.name
  778. fileCollect.value = true
  779. }
  780. if (row.name === '在线编辑') {
  781. editOnline.value = false
  782. cliCC.value = false
  783. }
  784. if (row.name === '文字识别') {
  785. router.push({
  786. path: '/identifyFont',
  787. query: {
  788. fileId: copyFileId.value,
  789. fileType: copyFileType.value
  790. }
  791. })
  792. }
  793. if (row.name === '预览') {
  794. // console.log('row=', toRaw(row));
  795. // console.log('copyFileId',copyFileId.value);//文件id
  796. // console.log('copyFileType',copyFileType.value);//文件type
  797. showPreview.value = true
  798. const res = await preview(copyFileId.value)
  799. previewData.value = URL.createObjectURL(res)
  800. // console.log('res',res);
  801. } else if (row.name === "历史版本") {
  802. const resHistory = await listVersion({ docId: clickRowId.value })
  803. fileUserTreeData.data = resHistory.rows;
  804. openForwardFile.value = true
  805. }
  806. }
  807. function chooseSet1(num) {
  808. workOrEdit.value = num
  809. thanks.value = true
  810. anyP.value = false
  811. }
  812. function createNewMenu(num) {
  813. oneOrTwo.value = num
  814. folderCase.value = true
  815. }
  816. function createNewFile() {
  817. addFile.value = true
  818. }
  819. // 确定新增中栏
  820. function sureAddFile() {
  821. fileSpace.addFileSpace(
  822. {
  823. "spaceName": fileForm.value.spaceName,
  824. "spaceType": fileForm.value.spaceType,
  825. "remark": fileForm.value.remark,//备注
  826. }
  827. ).then(res => {
  828. if (res.code === 200) {
  829. ElMessage({
  830. message: "新增成功",
  831. type: "success"
  832. })
  833. getAllTop()
  834. addFile.value = false
  835. } else {
  836. ElMessage({
  837. message: "请检查错误",
  838. type: "warning"
  839. })
  840. }
  841. })
  842. }
  843. function arrowClick(row, num) {
  844. if (row.name === '文件') {
  845. uploadModal.value = true
  846. } else {
  847. uploadModal.value = false
  848. }
  849. }
  850. // 确认上传
  851. function sureUpload() {
  852. if (fileArr.value.length > 0) {
  853. for (var i = 1; i <= fileArr.value.length; i++) {
  854. myfile.uploadFile({
  855. spaceId: newSpaceId.value - 0,
  856. dirId: newDirId.value - 0,
  857. file: fileArr.value[i - 1]
  858. }).then(res => {
  859. if (res.code === 200) {
  860. ElMessage({
  861. message: "上传文件成功",
  862. type: "success"
  863. })
  864. getAllTop()
  865. uploadModal.value = false
  866. fileArr.value = []
  867. }
  868. })
  869. }
  870. }
  871. }
  872. function onSuccess(files, val) {
  873. fileArr.value.push(files.file)
  874. }
  875. // 筛选后缀图片
  876. function getImage(file) {
  877. if (file === '.txt') {
  878. return ImgFile.txt
  879. } else if (file === '.xlxs' || file === '.docx') {
  880. return ImgFile.xlxs
  881. } else if (file === '.pptx') {
  882. return ImgFile.pptx
  883. } else if (file === '.word') {
  884. return ImgFile.word
  885. } else if (file === '.pdf') {
  886. return ImgFile.pdf
  887. }
  888. }
  889. // 表格多选框
  890. function handleSelectionChange(val) {
  891. if (val.length > 1) {
  892. // 如果选择了多项,只保留最后一项
  893. val.shift();
  894. }
  895. if (val.length === 1) {
  896. fileId.value = val[0].docId
  897. }
  898. }
  899. // 文件夹
  900. function handleSelectionChange1(val) {
  901. if (val.length > 1) {
  902. // 如果选择了多项,只保留最后一项
  903. val.shift();
  904. }
  905. if (val.length === 1) {
  906. folderId.value = val[0].dirId
  907. }
  908. }
  909. // 重命名
  910. function restName(row, index) {
  911. // 判断是点击打开还是右键菜单打开
  912. row = row ? row : thisFolder.value
  913. newName.value = row.dirName
  914. folderName.value = true
  915. selectedBox.value = row.dirId
  916. }
  917. function getMenu(row, num) {
  918. if (row.name === '删除') {
  919. // 文件夹删除
  920. documents.delDocument(folderId.value).then(res => {
  921. if (res.code === 200) {
  922. ElMessage({
  923. message: "删除成功",
  924. type: "success"
  925. })
  926. getAllTop()
  927. } else {
  928. ElMessage({
  929. message: "删除失败,目录应不为空",
  930. type: "error"
  931. })
  932. }
  933. })
  934. myfile.delMenu(fileId.value).then(res => {
  935. if (res.code === 200) {
  936. ElMessage({
  937. message: "删除成功",
  938. type: "success"
  939. })
  940. getAllTop()
  941. }
  942. })
  943. }
  944. }
  945. function delName(row, num) {
  946. documents.delDocument(row.dirId).then(res => {
  947. if (res.code === 200) {
  948. getAllTop()
  949. ElMessage({
  950. message: "删除成功",
  951. type: "success"
  952. })
  953. }
  954. })
  955. }
  956. // 计算百分比
  957. function percent() {
  958. let numP = 0
  959. if (useSpace.value) {
  960. numP = parseInt(useSpace.value / (allSpace.value * 1024) * 100)
  961. }
  962. return numP
  963. }
  964. // 文件夹每行点击事件
  965. function folderClick(row, list) {
  966. // 上一级dirId就是下一级的parentId
  967. // 判断是点击打开还是右键菜单打开
  968. row = row ? row : thisFolder.value
  969. console.log('row', row);
  970. newDirId.value = row.dirId
  971. newSpaceId.value = row.spaceId
  972. documents.getALLdocument({ parentId: row.dirId - 0, spaceId: row.spaceId - 0 }).then(res => {
  973. folderList.value = res.data
  974. if (res.data.length === 0) {
  975. myfile.getById(newDirId.value).then(res => {
  976. if (res.code === 200) {
  977. fileList.value = res.rows
  978. }
  979. })
  980. } else {
  981. myfile.getById(res.data[0].dirId - 0).then(res => {
  982. if (res.code === 200) {
  983. fileList.value = res.rows
  984. }
  985. })
  986. }
  987. })
  988. }
  989. // 确认文件重命名
  990. function sureChangeName() {
  991. myfile.editNewMenu({
  992. dirId: copyDirId.value - 0,
  993. docId: clickRowId.value - 0,
  994. fileId: copyFileId.value,
  995. fileName: nameForm.value.name,
  996. fileSize: copyFileSize.value - 0,
  997. fileType: copyFileType.value,
  998. remark: '',
  999. spaceId: copySpaceId.value - 0,
  1000. }).then(res => {
  1001. if (res.code === 200) {
  1002. ElMessage({
  1003. message: "重命名成功",
  1004. type: "success"
  1005. })
  1006. fileNameChange.value = false
  1007. getAllTop()
  1008. }
  1009. })
  1010. }
  1011. // 确认收藏
  1012. function sureCollect() {
  1013. collect.addCollect({
  1014. "docInfo": {
  1015. "fileId": copyFileId.value - 0,
  1016. "labelId": collectForm.value.folders - 0,
  1017. },
  1018. }).then(res => {
  1019. if (res.code === 200) {
  1020. ElMessage({
  1021. message: "收藏成功",
  1022. type: "success"
  1023. })
  1024. }
  1025. })
  1026. fileCollect.value = false
  1027. }
  1028. function collectChange(e) {
  1029. collectForm.value.folders = e
  1030. }
  1031. // 新建收藏标签
  1032. function createTag() {
  1033. newTag.value = ''
  1034. tagCollect.value = true
  1035. }
  1036. function tagBlur() {
  1037. collect.addNewTag({ labelName: newTag.value, orderNum: sortNum.value + 1 }).then(res => {
  1038. if (res.code === 200) {
  1039. ElMessage({
  1040. message: "新建标签成功",
  1041. type: "success"
  1042. })
  1043. getAllCollect()
  1044. }
  1045. })
  1046. tagCollect.value = false
  1047. }
  1048. // 判断id
  1049. function isId() {
  1050. if (directoryId.value === '') {
  1051. directoryId.value = 0
  1052. getAllTop()
  1053. }
  1054. if (folderId.value === '') {
  1055. folderId.value = 0
  1056. getAllTop()
  1057. }
  1058. }
  1059. // 中栏重命名
  1060. function sureFolderName() {
  1061. documents.editDocument({
  1062. dirId: selectedBox.value - 0,
  1063. name: newName.value,
  1064. }).then(res => {
  1065. if (res.code === 200) {
  1066. getAllTop()
  1067. folderName.value = false
  1068. ElMessage({
  1069. message: '重命名成功',
  1070. type: "success"
  1071. })
  1072. }
  1073. })
  1074. }
  1075. //关闭图片预览事件
  1076. const closeImgPreview = () => {
  1077. // console.log('close');
  1078. showPreview.value = false
  1079. }
  1080. function getChildren(data) {
  1081. fileTrees.value = data
  1082. }
  1083. function getCback(data) {
  1084. thanks.value = data
  1085. }
  1086. function getChildrenC(data) {
  1087. folderCase.value = data
  1088. }
  1089. //历史版本
  1090. const forwardTreeData = reactive({ data: {} });
  1091. const historycopyRow = ref({})
  1092. function changeMsgClose(val, item) {
  1093. if (val) {
  1094. historycopyRow.value = item
  1095. editOnline.value = false
  1096. cliCC.value = false
  1097. historyPrew.value = true
  1098. }
  1099. openForwardFile.value = val
  1100. }
  1101. //对mouseCli数组进行筛选,实现菜单的区分显示
  1102. const filterMouseCli = () => {
  1103. const typeArr = ['.png', '.jpg', '.jpeg', '.JPG', '.mp3', '.mp4', '.pdf']
  1104. const imgTypeArr = ['.png', '.jpg', '.jpeg', '.JPG']
  1105. let arr = []
  1106. if (!typeArr.includes(copyFileType.value)) {
  1107. arr = mouseCli.value.filter(item => item.name !== "预览")
  1108. } else {
  1109. arr = mouseCli.value.filter(item => item.name !== "在线编辑" && item.name !== "协作" && item.name !== "历史版本")
  1110. }
  1111. if (!imgTypeArr.includes(copyFileType.value)) {
  1112. arr = arr.filter(item => item.name !== "文字识别")
  1113. }
  1114. return arr
  1115. }
  1116. function mouseClick() {
  1117. if (cliCC.value) {
  1118. cliCC.value = false
  1119. }
  1120. if (anyP) {
  1121. anyP.value = false
  1122. }
  1123. }
  1124. // 文件夹右键事件
  1125. const folderRClick = (row, col, e) => {
  1126. e.preventDefault();
  1127. e.stopPropagation();
  1128. let thisRow = toRaw(row)
  1129. // console.log("row", thisRow);
  1130. // console.log("col", toRaw(col));
  1131. // console.log("e", e);
  1132. // console.log("item", toRaw(item));
  1133. thisFolder.value = thisRow;
  1134. // 唤出右键菜单,思路:获取鼠标位置来定位菜单
  1135. folderVisible.value = true;
  1136. foldertop.value = e.pageY;
  1137. folderleft.value = e.pageX;
  1138. };
  1139. // 关闭文件夹右键菜单
  1140. const closeRMenu = () => {
  1141. // console.log("close");
  1142. folderVisible.value = false;
  1143. };
  1144. onMounted(() => {
  1145. getAllTop()
  1146. getAllCollect()
  1147. // 添加监听,点击其他地方关闭文件夹右键菜单
  1148. window.addEventListener("click", closeRMenu, true);
  1149. })
  1150. return {
  1151. folderList,//文件夹的数据
  1152. fileList,//文件夹的数据
  1153. searchFire,//搜索文件的model
  1154. changeFile,//切换右侧视图的file
  1155. menuList,//右侧切换
  1156. tableChange,//改变class点击事件
  1157. selectedIndex,//当前选中下标
  1158. shotdown,//筛选出当前数据
  1159. useMenu,
  1160. arrorMenu,
  1161. blueLeft,//返回
  1162. grayRight,//前进
  1163. squre,//视图切换
  1164. sort,//排序
  1165. folder,
  1166. files,
  1167. handleRowClick,
  1168. askApply,//申请扩容
  1169. askTo,
  1170. sureAsk,
  1171. askNum,
  1172. askTalk,
  1173. cliCC,
  1174. mouseCli,//文件点击弹框
  1175. chooseSet,
  1176. trandata,
  1177. tranvalue,
  1178. anyP,
  1179. chooseSet1,
  1180. fileMenu,
  1181. createNewMenu,
  1182. // delBoser,
  1183. clickRowId,
  1184. addFile,
  1185. createNewFile,
  1186. fileForm,
  1187. sureAddFile,
  1188. // fileUpload,
  1189. getImage,//筛选文件类型
  1190. handleSelectionChange,
  1191. handleSelectionChange1,
  1192. selectedBox,//重命名相关
  1193. restName,//重命名相关
  1194. newName,//重命名相关
  1195. getMenu,
  1196. folderId,
  1197. fileId,
  1198. // getAllMiddle,//拿到所有空间信息
  1199. delName,//删除空间信息
  1200. useSpace,//使用空间
  1201. allSpace,//总空间
  1202. percent,
  1203. arrowClick,
  1204. uploadModal,
  1205. sureUpload,
  1206. onSuccess,
  1207. fileArr,
  1208. directoryId,
  1209. folderClick,
  1210. copyDirId,//复制移动需要的↓
  1211. copyDocId,
  1212. copySpaceId,
  1213. copyFileId,
  1214. copyFileName,
  1215. copyFileSize,
  1216. copyFileType,
  1217. sureChangeName,//文件重命名
  1218. fileNameChange,//文件重命名模态框
  1219. nameForm,
  1220. collectImg,//收藏小星星
  1221. fileCollect,
  1222. collectForm,
  1223. sureCollect,
  1224. getAllCollect,//获取所有收藏文件夹
  1225. collectList,//文件收藏表
  1226. createTag,
  1227. tagCollect,
  1228. tagBlur,
  1229. newTag,
  1230. collectChange,
  1231. sortNum,
  1232. needBag,
  1233. isId,
  1234. editOnline,//在线编辑
  1235. copyParentId,
  1236. folderName,
  1237. sureFolderName,
  1238. copyRow,
  1239. getAllTop,
  1240. spaceValue,
  1241. spaceSelect,
  1242. newDirId,
  1243. newSpaceId,
  1244. showPreview,//控制图片预览
  1245. closeImgPreview,//关闭预览事件
  1246. previewData,//预览文件数据
  1247. router,
  1248. fileTrees,
  1249. getChildren,//子传父
  1250. copyOrMove,
  1251. impDirId,
  1252. impNum,
  1253. impSpaceId,
  1254. //历史版本=========
  1255. openForwardFile,
  1256. forwardTreeData,
  1257. fileUserTreeData,
  1258. filterMouseCli,
  1259. changeMsgClose,
  1260. historyPrew,
  1261. historycopyRow,
  1262. thanks,
  1263. getCback,
  1264. mouseClick,
  1265. folderVisible,
  1266. foldertop,
  1267. folderleft,
  1268. thisFolder,
  1269. folderRClick,
  1270. closeRMenu,
  1271. //历史版本=========
  1272. fileUserTreeData,
  1273. thanks,
  1274. getCback,
  1275. mouseClick,
  1276. workOrEdit,
  1277. folderCase,//新建文件夹传值
  1278. getChildrenC,
  1279. oneOrTwo,//父传子判断
  1280. }
  1281. },
  1282. watch: {
  1283. },
  1284. components: {
  1285. BreadMenu,
  1286. FileEdit,
  1287. ImgPreview,
  1288. FileTree,
  1289. historyList,
  1290. TransferModal,
  1291. CreateFloder,
  1292. },
  1293. }
  1294. </script>
  1295. <style lang="scss" scoped>
  1296. p {
  1297. margin: 0;
  1298. padding: 0;
  1299. }
  1300. .bigBox {
  1301. width: 100%;
  1302. height: 100%;
  1303. display: flex;
  1304. justify-content: flex-start;
  1305. overflow: hidden;
  1306. }
  1307. .settingBox {
  1308. width: 25vw;
  1309. height: 92vh;
  1310. border: 1px solid black;
  1311. border-radius: 4px;
  1312. /* margin: 5px 5px; */
  1313. margin-right: 5px;
  1314. background-color: white;
  1315. }
  1316. .topSearch {
  1317. width: 100%;
  1318. height: 48px;
  1319. background-color: #EBEFF6;
  1320. display: flex;
  1321. justify-content: space-around;
  1322. align-items: center;
  1323. }
  1324. .searchFire {
  1325. width: 248px;
  1326. height: 32px;
  1327. }
  1328. .setBox {
  1329. width: 88px;
  1330. height: 112px;
  1331. text-align: center;
  1332. margin-left: 5px;
  1333. margin-top: 5px;
  1334. position: relative;
  1335. }
  1336. .setBox:hover {
  1337. background-color: #EEF9FF;
  1338. }
  1339. .setBox:hover .selectChe {
  1340. background-color: #EEF9FF;
  1341. display: block;
  1342. }
  1343. .selectChe {
  1344. display: none;
  1345. width: 20px;
  1346. height: 20px;
  1347. background: rgba(255, 255, 255, 0.7);
  1348. border-radius: 4px 4px 4px 4px;
  1349. position: absolute;
  1350. top: 2px;
  1351. right: 2px;
  1352. line-height: 10px;
  1353. }
  1354. .mesBox {
  1355. width: 75vw;
  1356. height: 92vh;
  1357. border-radius: 4px;
  1358. background-color: white;
  1359. }
  1360. .useBox {
  1361. width: 100%;
  1362. height: 96px;
  1363. }
  1364. .tables {
  1365. display: inline-block;
  1366. width: 112px;
  1367. height: 22px;
  1368. border-radius: 4px;
  1369. line-height: 21px;
  1370. text-align: center;
  1371. font-size: 12px;
  1372. margin-left: 5px;
  1373. position: relative;
  1374. white-space: nowrap;
  1375. overflow: hidden;
  1376. text-overflow: ellipsis;
  1377. }
  1378. .tableLis {
  1379. display: inline-block;
  1380. width: 112px;
  1381. height: 22px;
  1382. border-radius: 4px;
  1383. background-color: #EBEFF6;
  1384. line-height: 21px;
  1385. text-align: center;
  1386. font-size: 12px;
  1387. margin-left: 5px;
  1388. position: relative;
  1389. white-space: nowrap;
  1390. overflow: hidden;
  1391. text-overflow: ellipsis;
  1392. max-width: auto;
  1393. }
  1394. .manyUse {
  1395. width: 100%;
  1396. height: 48px;
  1397. /* background-color: gray; */
  1398. line-height: 48px;
  1399. display: flex;
  1400. justify-content: flex-start;
  1401. align-items: center;
  1402. }
  1403. .el-dropdown-link {
  1404. color: white;
  1405. }
  1406. .breadBox {
  1407. width: 100%;
  1408. height: 24px;
  1409. display: flex;
  1410. justify-content: space-between;
  1411. align-items: center;
  1412. background-color: #D9E0F0;
  1413. }
  1414. :deep(.el-collapse-item__header) {
  1415. height: 24px !important;
  1416. background-color: #EBEFF6 !important;
  1417. }
  1418. .detailBox {
  1419. width: 100%;
  1420. height: 270px;
  1421. }
  1422. :deep(.el-dialog__header) {
  1423. background-color: #ECEFF7;
  1424. margin-right: 0px;
  1425. }
  1426. .fileTable {
  1427. position: relative;
  1428. height: 100%;
  1429. /* overflow-y: auto; */
  1430. }
  1431. .setCli {
  1432. width: 156px;
  1433. max-height: 380px;
  1434. position: absolute;
  1435. top: -70px;
  1436. left: 300px;
  1437. flex-wrap: 400;
  1438. background-color: white;
  1439. border: 1px solid gray;
  1440. border-radius: 4px;
  1441. z-index: 10;
  1442. overflow-y: auto;
  1443. }
  1444. .setCli1 {
  1445. width: 156px;
  1446. height: auto;
  1447. position: absolute;
  1448. top: 185px;
  1449. left: 455px;
  1450. background-color: white;
  1451. border: 1px solid gray;
  1452. border-radius: 4px;
  1453. z-index: 2;
  1454. overflow-y: auto;
  1455. }
  1456. .chooseSet {
  1457. width: 140px;
  1458. height: 30px;
  1459. line-height: 30px;
  1460. margin: 5px auto;
  1461. // display: flex;
  1462. // align-items: center;
  1463. // position: relative;
  1464. img {
  1465. margin-right: 4px;
  1466. vertical-align: middle;
  1467. }
  1468. }
  1469. .chooseSet:hover {
  1470. width: 140px;
  1471. height: 30px;
  1472. line-height: 30px;
  1473. margin: 5px auto;
  1474. background-color: #F5F7F9;
  1475. /* color: white; */
  1476. }
  1477. :deep([data-v-69cdaa40] .el-collapse-item__header) {
  1478. padding-left: 10px;
  1479. }
  1480. :deep(.el-collapse-item__content) {
  1481. // height: 235px;
  1482. overflow-y: auto;
  1483. }
  1484. .ellipsis-text {
  1485. white-space: nowrap;
  1486. overflow: hidden;
  1487. text-overflow: ellipsis;
  1488. max-width: auto;
  1489. }
  1490. .right_menu {
  1491. width: 100px;
  1492. position: absolute;
  1493. padding: 8px;
  1494. box-shadow: 0px 2px 10px 1px rgba(199, 203, 216);
  1495. border-radius: 4px 4px 4px 4px;
  1496. border: 1px solid #c1cce3;
  1497. background-color: #fff;
  1498. z-index: 10000;
  1499. .menu_item {
  1500. width: 100%;
  1501. height: 40px;
  1502. border-radius: 4px 4px 4px 4px;
  1503. display: flex;
  1504. align-items: center;
  1505. &:hover {
  1506. background-color: #f5f7f9;
  1507. }
  1508. span {
  1509. margin-left: 4px;
  1510. }
  1511. }
  1512. }
  1513. :deep(.el-tag__content) {
  1514. display: block;
  1515. }
  1516. :deep(.el-icon el-tag__close) {
  1517. display: block;
  1518. }
  1519. :deep(.el-collapse-item__content) {
  1520. height: 100%;
  1521. border-bottom: none;
  1522. }
  1523. :deep(.el-collapse-item__wrap) {
  1524. height: 300px;
  1525. }
  1526. </style>