From a434bbbc1223bcafcbdf1f42c02f841f22728601 Mon Sep 17 00:00:00 2001 From: ssongliu Date: Wed, 5 Apr 2023 21:58:28 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E9=A1=B5=E9=9D=A2=E5=A2=9E=E5=8A=A0?= =?UTF-8?q?=E8=85=BE=E8=AE=AF=E4=BA=91=E3=80=81=E9=98=BF=E9=87=8C=E4=BA=91?= =?UTF-8?q?=E5=A4=87=E4=BB=BD=E8=B4=A6=E5=8F=B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- backend/app/dto/backup.go | 2 +- backend/app/dto/setting.go | 2 +- backend/utils/cloud_storage/client/cos.go | 2 +- frontend/src/assets/iconfont/iconfont.css | 20 +++- frontend/src/assets/iconfont/iconfont.js | 2 +- frontend/src/assets/iconfont/iconfont.json | 21 ++++ frontend/src/assets/iconfont/iconfont.svg | 6 + frontend/src/assets/iconfont/iconfont.ttf | Bin 13372 -> 14244 bytes frontend/src/assets/iconfont/iconfont.woff | Bin 8296 -> 8844 bytes frontend/src/assets/iconfont/iconfont.woff2 | Bin 6944 -> 7412 bytes frontend/src/lang/modules/en.ts | 3 + frontend/src/lang/modules/zh.ts | 3 + .../views/setting/backup-account/index.vue | 103 ++++++++++++++++++ .../setting/backup-account/operate/index.vue | 18 ++- 14 files changed, 171 insertions(+), 11 deletions(-) diff --git a/backend/app/dto/backup.go b/backend/app/dto/backup.go index 9e1685ddb..a180d1586 100644 --- a/backend/app/dto/backup.go +++ b/backend/app/dto/backup.go @@ -59,7 +59,7 @@ type BackupRecords struct { } type DownloadRecord struct { - Source string `json:"source" validate:"required,oneof=OSS S3 SFTP MINIO LOCAL"` + Source string `json:"source" validate:"required,oneof=OSS S3 SFTP MINIO LOCAL COS KODO"` FileDir string `json:"fileDir" validate:"required"` FileName string `json:"fileName" validate:"required"` } diff --git a/backend/app/dto/setting.go b/backend/app/dto/setting.go index e6beda926..ee399ccbe 100644 --- a/backend/app/dto/setting.go +++ b/backend/app/dto/setting.go @@ -49,7 +49,7 @@ type PortUpdate struct { } type SnapshotCreate struct { - From string `json:"from" validate:"required,oneof=OSS S3 SFTP MINIO"` + From string `json:"from" validate:"required,oneof=OSS S3 SFTP MINIO COS KODO"` Description string `json:"description"` } type SnapshotRecover struct { diff --git a/backend/utils/cloud_storage/client/cos.go b/backend/utils/cloud_storage/client/cos.go index 67e33f09a..232099d61 100644 --- a/backend/utils/cloud_storage/client/cos.go +++ b/backend/utils/cloud_storage/client/cos.go @@ -57,7 +57,7 @@ func (cos cosClient) ListBuckets() ([]interface{}, error) { } var datas []interface{} for _, bucket := range buckets.Buckets { - datas = append(datas, bucket) + datas = append(datas, bucket.Name) } return datas, nil } diff --git a/frontend/src/assets/iconfont/iconfont.css b/frontend/src/assets/iconfont/iconfont.css index cec4075e6..b0cf9a486 100644 --- a/frontend/src/assets/iconfont/iconfont.css +++ b/frontend/src/assets/iconfont/iconfont.css @@ -1,9 +1,9 @@ @font-face { font-family: "panel"; /* Project id 3575356 */ - src: url('iconfont.woff2?t=1673865903517') format('woff2'), - url('iconfont.woff?t=1673865903517') format('woff'), - url('iconfont.ttf?t=1673865903517') format('truetype'), - url('iconfont.svg?t=1673865903517#panel') format('svg'); + src: url('iconfont.woff2?t=1680702361679') format('woff2'), + url('iconfont.woff?t=1680702361679') format('woff'), + url('iconfont.ttf?t=1680702361679') format('truetype'), + url('iconfont.svg?t=1680702361679#panel') format('svg'); } .panel { @@ -14,6 +14,18 @@ -moz-osx-font-smoothing: grayscale; } +.p-tengxunyun1:before { + content: "\e651"; +} + +.p-qiniuyun:before { + content: "\e62c"; +} + +.p-file-png:before { + content: "\e7ae"; +} + .p-file-ppt:before { content: "\e6e2"; } diff --git a/frontend/src/assets/iconfont/iconfont.js b/frontend/src/assets/iconfont/iconfont.js index a2bf259a4..74c27e960 100644 --- a/frontend/src/assets/iconfont/iconfont.js +++ b/frontend/src/assets/iconfont/iconfont.js @@ -1 +1 @@ -window._iconfont_svg_string_3575356='',function(c){var l=(l=document.getElementsByTagName("script"))[l.length-1],h=l.getAttribute("data-injectcss"),l=l.getAttribute("data-disable-injectsvg");if(!l){var a,t,v,p,i,z=function(l,h){h.parentNode.insertBefore(l,h)};if(h&&!c.__iconfont__svg__cssinject__){c.__iconfont__svg__cssinject__=!0;try{document.write("")}catch(l){console&&console.log(l)}}a=function(){var l,h=document.createElement("div");h.innerHTML=c._iconfont_svg_string_3575356,(h=h.getElementsByTagName("svg")[0])&&(h.setAttribute("aria-hidden","true"),h.style.position="absolute",h.style.width=0,h.style.height=0,h.style.overflow="hidden",h=h,(l=document.body).firstChild?z(h,l.firstChild):l.appendChild(h))},document.addEventListener?~["complete","loaded","interactive"].indexOf(document.readyState)?setTimeout(a,0):(t=function(){document.removeEventListener("DOMContentLoaded",t,!1),a()},document.addEventListener("DOMContentLoaded",t,!1)):document.attachEvent&&(v=a,p=c.document,i=!1,o(),p.onreadystatechange=function(){"complete"==p.readyState&&(p.onreadystatechange=null,m())})}function m(){i||(i=!0,v())}function o(){try{p.documentElement.doScroll("left")}catch(l){return void setTimeout(o,50)}m()}}(window); \ No newline at end of file +window._iconfont_svg_string_3575356='',function(c){var l=(l=document.getElementsByTagName("script"))[l.length-1],h=l.getAttribute("data-injectcss"),l=l.getAttribute("data-disable-injectsvg");if(!l){var a,t,v,p,i,z=function(l,h){h.parentNode.insertBefore(l,h)};if(h&&!c.__iconfont__svg__cssinject__){c.__iconfont__svg__cssinject__=!0;try{document.write("")}catch(l){console&&console.log(l)}}a=function(){var l,h=document.createElement("div");h.innerHTML=c._iconfont_svg_string_3575356,(h=h.getElementsByTagName("svg")[0])&&(h.setAttribute("aria-hidden","true"),h.style.position="absolute",h.style.width=0,h.style.height=0,h.style.overflow="hidden",h=h,(l=document.body).firstChild?z(h,l.firstChild):l.appendChild(h))},document.addEventListener?~["complete","loaded","interactive"].indexOf(document.readyState)?setTimeout(a,0):(t=function(){document.removeEventListener("DOMContentLoaded",t,!1),a()},document.addEventListener("DOMContentLoaded",t,!1)):document.attachEvent&&(v=a,p=c.document,i=!1,o(),p.onreadystatechange=function(){"complete"==p.readyState&&(p.onreadystatechange=null,m())})}function m(){i||(i=!0,v())}function o(){try{p.documentElement.doScroll("left")}catch(l){return void setTimeout(o,50)}m()}}(window); \ No newline at end of file diff --git a/frontend/src/assets/iconfont/iconfont.json b/frontend/src/assets/iconfont/iconfont.json index 062e2b741..efb95c41c 100644 --- a/frontend/src/assets/iconfont/iconfont.json +++ b/frontend/src/assets/iconfont/iconfont.json @@ -5,6 +5,27 @@ "css_prefix_text": "p-", "description": "", "glyphs": [ + { + "icon_id": "12959160", + "name": "腾讯云", + "font_class": "tengxunyun1", + "unicode": "e651", + "unicode_decimal": 58961 + }, + { + "icon_id": "24877229", + "name": "七牛云", + "font_class": "qiniuyun", + "unicode": "e62c", + "unicode_decimal": 58924 + }, + { + "icon_id": "19671162", + "name": "png-1", + "font_class": "file-png", + "unicode": "e7ae", + "unicode_decimal": 59310 + }, { "icon_id": "26815641", "name": "PPT", diff --git a/frontend/src/assets/iconfont/iconfont.svg b/frontend/src/assets/iconfont/iconfont.svg index 42e3cf61a..b0124106d 100644 --- a/frontend/src/assets/iconfont/iconfont.svg +++ b/frontend/src/assets/iconfont/iconfont.svg @@ -14,6 +14,12 @@ /> + + + + + + diff --git a/frontend/src/assets/iconfont/iconfont.ttf b/frontend/src/assets/iconfont/iconfont.ttf index 6cb47955fb45deeee919fc6dc112d3a722e78f46..8fb7649ccbc38f9626ea2fca232402eced9abfd6 100644 GIT binary patch delta 2084 zcmZ{ldrVVT7{I@CZhIdET1sC$3#GLPlme~XG6ZA-;^H(iTOVjd#3DFeGBmImi)Mcq zV~n$AOEzP+jg#klP+vl(5SS=^$_)a{RLW;5q@u(@PW=aL2XT@U#9W9RgD&v(xG z&N=scoZAb%$A=Di6U_kR003<29_SkW?wffN0Q3xi(Z02Ryr;P#@*{xk11Jyl#=Exo z<43Dd_YR`=;(%$l*opE5#Me78I(F%!nMb(a@7TZCKh)hN9R2$mfOHZ2n+LkahRHH` zfb-edFBaBOdKLNF!L z^+DP)J5`Bo&n)_i(OCkh6XxK{!VTP42VWZ)Hachk27!a70Mq9XGzyr=LGyq~95fV| zC80l1DFa(42dxK&2kPi)!fH9_5n%Nk^bN2!4tfb#J4eqIwvL0I1J=z!9|DVW(3`+^ zaUhX}!etJ+7}!+~Ivdz89CSOdUpW{6V0Ss7TZN|UU`&8%9E=XI6bIu3>^F{{z-*F( zu>&>*kkB6(M$ndUFrc7CIT%{dHgYh?p!IPu+@Rq#(!s!kc94T90NP;=CIe_m4yFZY zXE>N3pq=Glsw6-=haCj72DB?2%pXW${BLiY&o8ppLs0vi_A%Drgdl5k*rI$-L`x7rS_eUxA6cB1b}dp-onGH;6=Q5KtgWf z@=Kx=B;H~(k^E94iKtS@Sx8Ex5(9tz1!|v^O?=QuwmPyQ zXl_;gIoqb=WnW&&@|U^N{;c_-+2Zn)D*3f7^k%rDPN0IUE-qUZRE(`7MV^QGxyz-7 zNRHFnm{{8Aqsx`%?!omnR;RhOe`JFzlYI8M)!J?{F`}4jTNamM4&gnRxhb3$$}#gh z@!o~--PHvp{t|yN+Ai8%PM4FYE~i5>Q*U)~i3?5ERU+yl^0MyQ_BL!rHFx)SN)xF;YStYsXqk=liHhZjz0% zV6;<%L6XxIiQ1?yZ(E*^IO|qB2%$zIlbr1GkW7dyrW-P=Lw#$40lECSJyWmfyVDpo zP=VHO2q|wEQC~2c?3JP@DxxeJTqASCSYMmXhjvNStZ@^sE?d`8~y zC?IYJopiXT?~tNDusI%!or*?3h{dL3F?{kL%CmzX*3OB-1SxR*`>Ml@>rW8R^v~G6 zH$5KHOEenQn^XE@w!r!8()(qkDmfDBn1?~CBGr&K8Xw#`wqtO7$6&R*y>GB@2TF2J QUw^z}cyR0auR}xRKWWw20{{R3 delta 1217 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 maTsw@KVm4nNmF;wRk};GNiEP#w!) + + +
+ +  {{ $t('setting.COS') }} +
+ + {{ $t('commons.button.edit') }} + + + {{ $t('commons.button.delete') }} + +
+ +
+
+ + {{ cosData.varsJson['region'] }} + + + {{ cosData.bucket }} + + + {{ dateFormat(0, 0, cosData.createdAt) }} + +
+ + + {{ $t('setting.createBackupAccount', ['COS']) }} + + +
+ +
+ +  {{ $t('setting.KODO') }} +
+ + {{ $t('commons.button.edit') }} + + + {{ $t('commons.button.delete') }} + +
+
+ + +
+ + {{ kodoData.varsJson['domain'] }} + + + {{ kodoData.bucket }} + + + {{ dateFormat(0, 0, kodoData.createdAt) }} + +
+ + + {{ $t('setting.createBackupAccount', ['KODO']) }} + + +
+
@@ -263,6 +336,30 @@ const s3Data = ref({ }, createdAt: new Date(), }); +const cosData = ref({ + id: 0, + type: 'COS', + accessKey: '', + bucket: '', + credential: '', + vars: '', + varsJson: { + region: '', + }, + createdAt: new Date(), +}); +const kodoData = ref({ + id: 0, + type: 'KODO', + accessKey: '', + bucket: '', + credential: '', + vars: '', + varsJson: { + domain: '', + }, + createdAt: new Date(), +}); const search = async () => { const res = await getBackupList(); @@ -287,6 +384,12 @@ const search = async () => { case 'SFTP': sftpData.value = bac; break; + case 'COS': + cosData.value = bac; + break; + case 'KODO': + kodoData.value = bac; + break; } } }; diff --git a/frontend/src/views/setting/backup-account/operate/index.vue b/frontend/src/views/setting/backup-account/operate/index.vue index 32ce9075e..a0fdbadc2 100644 --- a/frontend/src/views/setting/backup-account/operate/index.vue +++ b/frontend/src/views/setting/backup-account/operate/index.vue @@ -45,7 +45,7 @@ + + + { dialogData.value.rowData!.varsJson['dir'] = path; }; function hasBucket(val: string) { - return val === 'OSS' || val === 'S3' || val === 'MINIO'; + return val === 'OSS' || val === 'S3' || val === 'MINIO' || val === 'COS' || val === 'KODO'; +} + +function hasEndpoint(val: string) { + return val === 'OSS' || val === 'S3'; } const getBuckets = async (formEl: FormInstance | undefined) => {