backup.vue 13 KB

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