backup.vue 9.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203
  1. <template>
  2. <div class="hc-page-box">
  3. <HcCard ui="hc-backup-bg-white">
  4. <template #header>
  5. <div class="hc-card-header-project-alias">安康至来凤国家高速公路奉节至巫山段</div>
  6. </template>
  7. <div class="hc-backup-box">
  8. <div class="hc-backup-tab-box">
  9. <template v-for="item in backupTabData" :key="item.num">
  10. <div class="hc-backup-tab" :class="item.num === backupTabKey ? 'cut':''" @click="backupTabClick(item.num)">
  11. <span class="font-FZGongYHJW num">{{item.num}}</span>
  12. <span class="text">{{item.name}}</span>
  13. </div>
  14. </template>
  15. </div>
  16. <div class="hc-backup-card-box">
  17. <el-scrollbar>
  18. <div class="hc-backup-card-body" v-if="backupTabKey === 1">
  19. <div class="hc-backup-table-box">
  20. <div class="tr-left">OSS当前存储内容</div>
  21. <div class="tr-body">
  22. <div class="tr-item">
  23. <div class="td-name">阿里云</div>
  24. <div class="td-item-tr">
  25. <div class="td-item">对象最小计量大小</div>
  26. <div class="td-item">存储时间要求</div>
  27. <div class="td-item">数据访问特点</div>
  28. <div class="td-item">存储空间价格</div>
  29. <div class="td-item">数据取回费用</div>
  30. </div>
  31. <div class="td-item-tr">
  32. <div class="td-item">-</div>
  33. <div class="td-item">-</div>
  34. <div class="td-item">-</div>
  35. <div class="td-item">-</div>
  36. <div class="td-item">-</div>
  37. </div>
  38. </div>
  39. <div class="tr-item">
  40. <div class="td-name">备份云</div>
  41. <div class="td-item-tr">
  42. <div class="td-item">对象最小计量大小</div>
  43. <div class="td-item">存储时间要求</div>
  44. <div class="td-item">数据访问特点</div>
  45. <div class="td-item">存储空间价格</div>
  46. <div class="td-item">数据取回费用</div>
  47. </div>
  48. <div class="td-item-tr">
  49. <div class="td-item">-</div>
  50. <div class="td-item">-</div>
  51. <div class="td-item">-</div>
  52. <div class="td-item">-</div>
  53. <div class="td-item">-</div>
  54. </div>
  55. </div>
  56. </div>
  57. </div>
  58. <div class="hc-backup-card-tip">
  59. <div>云存储优点:</div>
  60. <div>1、提供企业级多层次安全防护,包括服务端加密、客户端加密、防盗链、IP黑白名单、细粒度权限管控、日志审计、WORM特性等。</div>
  61. <div> 多用户资源隔离机制,支持异地容灾机制。获得多项合规认证,包括SEC和FINRA 等,满足企业数据安全与合规要求。</div>
  62. <div>2、提供多种数据处理能力,如图片处理、视频截帧、文档预览、图片场景识别、人脸识别、SQL就地查询</div>
  63. </div>
  64. </div>
  65. <div class="hc-backup-card-body" v-if="backupTabKey === 2">
  66. <div class="hc-backup-card-btn">
  67. <el-button type="primary" hc-btn @click="balenewDataClick" :loading="balenewDataClickLoading">
  68. <span>打包最新数据</span>
  69. </el-button>
  70. <el-button type="primary" hc-btn @click="downUtilsClick" :loading="downUtilsClickLoading">
  71. <HcIcon name="download-2"/>
  72. <span>下载脱机载体工具</span>
  73. </el-button>
  74. </div>
  75. <HcTable :column="tableBasicColumn" :datas="tableBasicData" :isIndex="false" border/>
  76. <div class="mt-5 hc-backup-table-box">
  77. <div class="tr-left">功能描述</div>
  78. <div class="tr-body">
  79. <div class="tr-item">
  80. <div class="td-name">档案存储</div>
  81. <div class="td-item-tr">
  82. <div class="td-item">离线存储</div>
  83. <div class="td-item">离线导入</div>
  84. </div>
  85. </div>
  86. <div class="tr-item">
  87. <div class="td-name">档案查询</div>
  88. <div class="td-item-tr">
  89. <div class="td-item">多条件检索查询</div>
  90. <div class="td-item">预览</div>
  91. <div class="td-item">下载</div>
  92. <div class="td-item">打印</div>
  93. </div>
  94. </div>
  95. </div>
  96. </div>
  97. <div class="hc-backup-card-tip">
  98. <div>脱机储优点:</div>
  99. <div>1、支持为运营阶段移交整套数据。</div>
  100. <div>2、为企业单位提供本地备份的可视化工具,直接点击下载即可将整个项目数据打包下载到本地软件存储</div>
  101. </div>
  102. </div>
  103. </el-scrollbar>
  104. </div>
  105. </div>
  106. </HcCard>
  107. </div>
  108. </template>
  109. <script setup>
  110. import {ref, onMounted} from "vue";
  111. import {useAppStore} from "~src/store";
  112. import backupApi from "~api/backup/backupApi.js";
  113. import { Loading } from "element-plus/es/components/loading/src/service";
  114. //变量
  115. const useAppState = useAppStore()
  116. const projectId = ref(useAppState.getProjectId);
  117. const contractId = ref(useAppState.getContractId);
  118. const projectInfo = ref(useAppState.getProjectInfo);
  119. //渲染完成
  120. onMounted(() => {
  121. getFileData()
  122. })
  123. //tab数据
  124. const backupTabKey = ref(1)
  125. const backupTabData = ref([
  126. {num: 1, name: 'OSS云存储'},
  127. {num: 2, name: '脱机软件存储'},
  128. ])
  129. const backupTabClick = (num) => {
  130. backupTabKey.value = num
  131. }
  132. //下载脱机载体工具
  133. const downUtilsClickLoading = ref(false)
  134. const downFileUrl=ref('')
  135. const getFileData=async()=>{
  136. const { error,response,data, res} = await backupApi.DownloadVersionInfo({
  137. projectId:projectId.value
  138. })
  139. if (!error) {
  140. downFileUrl.value=data.fileUrl
  141. tableBasicData.value[0].size=data.fileSize
  142. tableBasicData.value[0].num=data.fileSize
  143. tableBasicData.value[0].baledate=data.uploadDate
  144. }else{
  145. downUtilsClickLoading.value=false
  146. }
  147. }
  148. const downUtilsClick = () => {
  149. if (downFileUrl.value) {
  150. window.open(downFileUrl.value, '_blank')
  151. }
  152. }
  153. //打包最新数据
  154. const balenewDataClickLoading = ref(false)
  155. const balenewDataClick = async() => {
  156. balenewDataClickLoading.value=true
  157. const { error,response, res,data} = await backupApi.getpackData({
  158. projectId:projectId.value
  159. })
  160. if (!error) {
  161. window.$message?.success(data)
  162. balenewDataClickLoading.value=false
  163. }else{
  164. balenewDataClickLoading.value=false
  165. }
  166. }
  167. //表格
  168. const tableBasicColumn = [
  169. {key:'name', name: '软件名称', align: 'center'},
  170. {key:'type', name: '软件打开方式', align: 'center'},
  171. {key:'size', name: '软件包大小', align: 'center'},
  172. {key:'num', name: '目前存储量', align: 'center'},
  173. {key:'baledate', name: '打包日期', align: 'center'}
  174. ]
  175. const tableBasicData = ref([
  176. {name:'工程档案离线存储软件', type: '桌面、U盘、硬盘皆可支持安装存放', size: '2.3G', num: '331G',baledate:'2020.03.03'}
  177. ])
  178. </script>
  179. <style lang="scss" scoped>
  180. @import '~style/custody/scoped/backup.scss';
  181. </style>
  182. <style lang="scss" >
  183. .hc-backup-card-body .hc-table-ref-box {
  184. border: 0;
  185. }
  186. </style>