#5442 update

Merged
chenshihai merged 1 commits from V20240423.patch2 into V20240423.patch 3 weeks ago
  1. +0
    -1
      templates/pwa/serviceworker_js.tmpl
  2. +3
    -3
      web_src/js/components/Contributors.vue
  3. +7
    -7
      web_src/js/components/EditAboutInfo.vue
  4. +6
    -6
      web_src/js/components/EditTopics.vue
  5. +3
    -3
      web_src/js/components/basic/editDialog.vue
  6. +90
    -90
      web_src/js/components/images/Images.vue
  7. +93
    -93
      web_src/js/components/images/adminImages.vue
  8. +9
    -9
      web_src/js/features/clipboard.js
  9. +1
    -1
      web_src/vuepages/pages/modelmanage/components/FolderUploadSelect.vue
  10. +6
    -4
      web_src/vuepages/utils/index.js

+ 0
- 1
templates/pwa/serviceworker_js.tmpl View File

@@ -2,7 +2,6 @@ var STATIC_CACHE = 'static-cache-v1';
var urlsToCache = [
// js
'{{StaticUrlPrefix}}/fomantic/semantic.min.js?v={{MD5 AppVer}}',
'{{StaticUrlPrefix}}/js/clipboard.js',
'{{StaticUrlPrefix}}/js/gitgraph.js',
'{{StaticUrlPrefix}}/js/highlight.js',
'{{StaticUrlPrefix}}/js/index.js?v={{MD5 AppVer}}',


+ 3
- 3
web_src/js/components/Contributors.vue View File

@@ -3,9 +3,9 @@
<div class="row git-user-content">
<h3 class="ui header">
<div class="ui breadcrumb">
<a class="section" :href="url_code">{{$i18n['code']}}</a>
<a class="section" :href="url_code">{{i18n['code']}}</a>
<div class="divider"> / </div>
<div class="active section" >{{$i18n['contributors']}}&nbsp;({{totalNum}})</div>
<div class="active section" >{{i18n['contributors']}}&nbsp;({{totalNum}})</div>
</div>
</h3>
<div class="ui horizontal relaxed list">
@@ -88,7 +88,7 @@ watch: {

},
created(){
this.$i18n = window.i18n;
this.i18n = window.i18n;
const url = window.location.pathname;
this.url = url;
let strIndex = this.url.indexOf("contributors")


+ 7
- 7
web_src/js/components/EditAboutInfo.vue View File

@@ -1,13 +1,13 @@
<template>
<div>
<h4 id="about-desc" class="ui header desc-home">{{$i18n['introduction']}}
<h4 id="about-desc" class="ui header desc-home">{{i18n['introduction']}}
<a class="edit-icon" v-if="IsPermit" id ="editBtn" href="javascript:void(0)" @click="editClick" >
<i class="gray edit outline icon" style="margin-right: 0;"></i>
</a>
</h4>
<edit-dialog-cmpt
:vmContext="vmContext"
:dialogTitle="$i18n['edit_repository_information']"
:dialogTitle="i18n['edit_repository_information']"
v-model="editDataDialog"
:deleteCallback="editDataFunc"
:deleteLoading ="editDataListLoading"
@@ -19,11 +19,11 @@
</div>
<div slot="content">
<el-form label-position="top" :model="info" :rules="rule" ref="ruleForm">
<el-form-item :label="$i18n['introduction']" prop="desc">
<el-input v-model="info.desc" type="textarea" :placeholder="$i18n['please_enter_the_content']" :autosize="{minRows:4,maxRows:6}" maxlength="255" show-word-limit></el-input>
<el-form-item :label="i18n['introduction']" prop="desc">
<el-input v-model="info.desc" type="textarea" :placeholder="i18n['please_enter_the_content']" :autosize="{minRows:4,maxRows:6}" maxlength="255" show-word-limit></el-input>
</el-form-item>
<el-form-item :label="$i18n['homePage']" prop="index_web" >
<el-input v-model="info.index_web" :placeholder="`${$i18n['homePage']}(eg: https://openi.pcl.ac.cn)`"></el-input>
<el-form-item :label="i18n['homePage']" prop="index_web" >
<el-input v-model="info.index_web" :placeholder="`${i18n['homePage']}(eg: https://openi.pcl.ac.cn)`"></el-input>
</el-form-item>
</el-form>
</div>
@@ -147,7 +147,7 @@ export default {
}
},
created() {
this.$i18n = window.i18n;
this.i18n = window.i18n;
this.getIsSigned();
}



+ 6
- 6
web_src/js/components/EditTopics.vue View File

@@ -3,7 +3,7 @@
<div class="input-search">
<el-input v-model="input" clearable :autofocus="true" @input="changeValue" id="topics_input" @keyup.enter.native="postTopic" :placeholder="$i18n['searchOrCreateTopics']">
<el-input v-model="input" clearable :autofocus="true" @input="changeValue" id="topics_input" @keyup.enter.native="postTopic" :placeholder="i18n['searchOrCreateTopics']">

</el-input>
<div class="scrolling-menu">
@@ -14,7 +14,7 @@
<div class="text">{{arr.topic_name.toLowerCase()}} </div>
</div>
<div v-if="showInputValue" class="addition item-text" @click="postTopic">
{{$i18n['clickOrEnterToAdd']}}<b class="user-add-label-text">{{input.toLowerCase()}}</b>{{$i18n['topic']}}
{{i18n['clickOrEnterToAdd']}}<b class="user-add-label-text">{{input.toLowerCase()}}</b>{{i18n['topic']}}
</div>
<div v-if="showAddTopic" class="item-text" @click="addPostTopic">
<div class="icon-wrapper">
@@ -98,7 +98,7 @@ export default {
this.Post(data,topics)
this.$set(this.showInitTopic,item,false)
if(this.arrayTopics.length===0){
$('#repo-topics1').append(`<span class="no-description text-italic">${this.$i18n['noTopics']}</span>`)
$('#repo-topics1').append(`<span class="no-description text-italic">${this.i18n['noTopics']}</span>`)
}else{
$('#repo-topics1').children('span').remove()
}
@@ -264,7 +264,7 @@ export default {
if(this.arrayTopics.length===0){
$('#repo-topics1').append(`<span class="no-description text-italic">${this.$i18n['noTopics']}</span>`)
$('#repo-topics1').append(`<span class="no-description text-italic">${this.i18n['noTopics']}</span>`)
}else{
$('#repo-topics1').children('span').remove()
}
@@ -386,12 +386,12 @@ mounted() {
});
if(this.arrayTopics.length===0){
$('#repo-topics1').append(`<span class="no-description text-italic">${this.$i18n['noTopics']}</span>`)
$('#repo-topics1').append(`<span class="no-description text-italic">${this.i18n['noTopics']}</span>`)
}
this.changeValue()
} ,
created(){
this.$i18n = window.i18n;
this.i18n = window.i18n;
this.initTopics();
this.input=''


+ 3
- 3
web_src/js/components/basic/editDialog.vue View File

@@ -15,8 +15,8 @@
<div slot="footer" class="dialog-footer">

<button class="ui button" @click="deleteDialog = false">{{$i18n['cancel']}}</button>
<button class="ui green button" @click="deleteCallback.call(vmContext,deleteParam)">{{$i18n['confirm']}}</button>
<button class="ui button" @click="deleteDialog = false">{{i18n['cancel']}}</button>
<button class="ui green button" @click="deleteCallback.call(vmContext,deleteParam)">{{i18n['confirm']}}</button>
<!-- <el-button size="small" style="font-size: 1rem;padding: .78571429em 1.5em .78571429em;border-radius: .28571429rem;" @click="deleteDialog = false">{{"取消"}}</el-button>
<el-button size="small" style="background-color: #21ba45;color: #fff;font-size: 1rem;padding: .78571429em 1.5em .78571429em;border-radius: .28571429rem;" @click="deleteCallback.call(vmContext,deleteParam)">{{"确定"}}</el-button> -->
</div>
@@ -71,7 +71,7 @@ export default {
},
},
created() {
this.$i18n = window.i18n;
this.i18n = window.i18n;
this.deleteDialog = this.value;
}
};


+ 90
- 90
web_src/js/components/images/Images.vue View File

@@ -3,26 +3,26 @@
<div class="header-wrapper">
<div class="ui container">
<el-row class="image_text">
<h1>{{ $i18n['cloudeBrainMirror']['cloud_brain_mirror'] }}</h1>
<h1>{{ i18n['cloudeBrainMirror']['cloud_brain_mirror'] }}</h1>
</el-row>
</div>
</div>
<div class="ui container" id="header">
<el-tabs v-model="activeName" @tab-click="handleClick">
<el-tab-pane :label="$i18n['cloudeBrainMirror']['recommendImages']" name="first" v-loading="loadingRecommend">
<el-tab-pane :label="i18n['cloudeBrainMirror']['recommendImages']" name="first" v-loading="loadingRecommend">
<template v-if="tableDataRecommend.length !== 0">
<el-row style="align-items: center; display: flex">
<el-col :span="12">
<div>
<!-- <el-checkbox v-model="checked">{{$i18n['cloudeBrainMirror']['platform_recommendations']}}</el-checkbox> -->
<!-- <el-checkbox v-model="checked">{{i18n['cloudeBrainMirror']['platform_recommendations']}}</el-checkbox> -->
</div>
</el-col>
<el-col :span="10">
<div>
<el-input :placeholder="$i18n['cloudeBrainMirror']['placeholder']" v-model="search"
<el-input :placeholder="i18n['cloudeBrainMirror']['placeholder']" v-model="search"
class="input-with-select" @keyup.enter.native="searchName()">
<el-button id="success" slot="append" icon="el-icon-search" @click="searchName()">{{
$i18n['cloudeBrainMirror']['search'] }}</el-button>
i18n['cloudeBrainMirror']['search'] }}</el-button>
</el-input>
</div>
</el-col>
@@ -34,20 +34,20 @@
</span>
<el-dropdown-menu slot="dropdown">
<el-dropdown-item :command="{ label: 'defaultsort', sort: '' }">{{
$i18n['cloudeBrainMirror']['defaultsort'] }}</el-dropdown-item>
i18n['cloudeBrainMirror']['defaultsort'] }}</el-dropdown-item>
<el-dropdown-item :command="{ label: 'moststars', sort: 'moststars' }">{{
$i18n['cloudeBrainMirror']['moststars'] }}</el-dropdown-item>
i18n['cloudeBrainMirror']['moststars'] }}</el-dropdown-item>
<el-dropdown-item :command="{ label: 'mostused', sort: 'mostused' }">{{
$i18n['cloudeBrainMirror']['mostused'] }}</el-dropdown-item>
i18n['cloudeBrainMirror']['mostused'] }}</el-dropdown-item>
<el-dropdown-item :command="{ label: 'newest', sort: 'newest' }">{{
$i18n['cloudeBrainMirror']['newest'] }}</el-dropdown-item>
i18n['cloudeBrainMirror']['newest'] }}</el-dropdown-item>
</el-dropdown-menu>
</el-dropdown>
</el-col>
</el-row>
<el-row style="margin-top: 15px">
<el-table :data="tableDataRecommend" style="width: 100%" :header-cell-style="tableHeaderStyle">
<el-table-column :label="$i18n['cloudeBrainMirror']['mirror_tag']" min-width="19%" align="left"
<el-table-column :label="i18n['cloudeBrainMirror']['mirror_tag']" min-width="19%" align="left"
prop="tag">
<template slot-scope="scope">
<div style="display: flex; align-items: center">
@@ -58,7 +58,7 @@
</div>
</template>
</el-table-column>
<el-table-column :label="$i18n['cloudeBrainMirror']['mirror_description']" min-width="26%" align="left"
<el-table-column :label="i18n['cloudeBrainMirror']['mirror_description']" min-width="26%" align="left"
prop="description">
<template slot-scope="scope">
<div class="image_desc" :title="scope.row.description">
@@ -70,13 +70,13 @@
</div>
</template>
</el-table-column>
<el-table-column prop="cloudbrainType" :label="$i18n['cloudeBrainMirror']['available_clusters']"
<el-table-column prop="cloudbrainType" :label="i18n['cloudeBrainMirror']['available_clusters']"
min-width="15%" align="center">
<template slot-scope="scope">
{{ scope.row.cloudbrainType | transformType(vm) }}
</template>
</el-table-column>
<el-table-column prop="creator" :label="$i18n['cloudeBrainMirror']['creator']" min-width="8%"
<el-table-column prop="creator" :label="i18n['cloudeBrainMirror']['creator']" min-width="8%"
align="center">
<template slot-scope="scope">
<a v-if="scope.row.userName || scope.row.relAvatarLink" :href="'/' + scope.row.userName"
@@ -86,20 +86,20 @@
<a v-else><img class="ui avatar image" title="Ghost" src="/user/avatar/ghost/-1" /></a>
</template>
</el-table-column>
<el-table-column prop="createdUnix" :label="$i18n['cloudeBrainMirror']['creation_time']" align="center"
<el-table-column prop="createdUnix" :label="i18n['cloudeBrainMirror']['creation_time']" align="center"
min-width="14%">
<template slot-scope="scope">
{{ scope.row.createdUnix | transformTimestamp }}
</template>
</el-table-column>
<el-table-column align="center" min-width="18%" :label="$i18n['cloudeBrainMirror']['operation']">
<el-table-column align="center" min-width="18%" :label="i18n['cloudeBrainMirror']['operation']">
<template slot-scope="scope">
<div style="
display: flex;
justify-content: flex-end;
align-items: center;
">
<div style="display: flex;align-items: center;padding: 0 1rem;" :title="$i18n['citations']">
<div style="display: flex;align-items: center;padding: 0 1rem;" :title="i18n['citations']">
<i class="ri-links-line" style="font-size: 16px;"></i>
<span style="line-height: 2;margin-left: 0.3rem;">{{ scope.row.useCount }}</span>
</div>
@@ -126,7 +126,7 @@
}}</span>
</div>
<span :class="scope.row.place ? 'copy-adress' : 'copy-adress-no'"
@click="copyUrl(scope.row.place)">{{ $i18n['cloudeBrainMirror']['copy_address'] }}</span>
@click="copyUrl(scope.row.place)">{{ i18n['cloudeBrainMirror']['copy_address'] }}</span>
</div>
</template>
</el-table-column>
@@ -144,16 +144,16 @@
<el-row style="align-items: center; display: flex">
<el-col :span="12">
<div>
<!-- <el-checkbox v-model="checked">{{ $i18n['cloudeBrainMirror']['platform_recommendations']
<!-- <el-checkbox v-model="checked">{{ i18n['cloudeBrainMirror']['platform_recommendations']
}}</el-checkbox> -->
</div>
</el-col>
<el-col :span="10">
<div>
<el-input :placeholder="$i18n['cloudeBrainMirror']['placeholder']" v-model="search"
<el-input :placeholder="i18n['cloudeBrainMirror']['placeholder']" v-model="search"
class="input-with-select" @keyup.enter.native="searchName()">
<el-button id="success" slot="append" icon="el-icon-search" @click="searchName()">{{
$i18n['cloudeBrainMirror']['search'] }}</el-button>
i18n['cloudeBrainMirror']['search'] }}</el-button>
</el-input>
</div>
</el-col>
@@ -165,13 +165,13 @@
</span>
<el-dropdown-menu slot="dropdown">
<el-dropdown-item :command="{ label: 'defaultsort', sort: '' }">{{
$i18n['cloudeBrainMirror']['defaultsort'] }}</el-dropdown-item>
i18n['cloudeBrainMirror']['defaultsort'] }}</el-dropdown-item>
<el-dropdown-item :command="{ label: 'moststars', sort: 'moststars' }">{{
$i18n['cloudeBrainMirror']['moststars'] }}</el-dropdown-item>
i18n['cloudeBrainMirror']['moststars'] }}</el-dropdown-item>
<el-dropdown-item :command="{ label: 'mostused', sort: 'mostused' }">{{
$i18n['cloudeBrainMirror']['mostused'] }}</el-dropdown-item>
i18n['cloudeBrainMirror']['mostused'] }}</el-dropdown-item>
<el-dropdown-item :command="{ label: 'newest', sort: 'newest' }">{{
$i18n['cloudeBrainMirror']['newest'] }}</el-dropdown-item>
i18n['cloudeBrainMirror']['newest'] }}</el-dropdown-item>
</el-dropdown-menu>
</el-dropdown>
</el-col>
@@ -179,7 +179,7 @@
<el-empty :image-size="200"></el-empty>
</template>
</el-tab-pane>
<el-tab-pane :label="$i18n['cloudeBrainMirror']['my_mirror']" name="second" v-loading="loadingCustom">
<el-tab-pane :label="i18n['cloudeBrainMirror']['my_mirror']" name="second" v-loading="loadingCustom">
<template v-if="tableDataCustom.length !== 0">
<el-row style="align-items: center; display: flex">
<el-col :span="12">
@@ -187,10 +187,10 @@
</el-col>
<el-col :span="10">
<div>
<el-input :placeholder="$i18n['cloudeBrainMirror']['placeholder']" v-model="search"
<el-input :placeholder="i18n['cloudeBrainMirror']['placeholder']" v-model="search"
class="input-with-select" @keyup.enter.native="searchName()">
<el-button id="success" slot="append" icon="el-icon-search" @click="searchName()">{{
$i18n['cloudeBrainMirror']['search'] }}</el-button>
i18n['cloudeBrainMirror']['search'] }}</el-button>
</el-input>
</div>
</el-col>
@@ -202,18 +202,18 @@
</span>
<el-dropdown-menu slot="dropdown">
<el-dropdown-item :command="{ label: 'moststars', sort: 'moststars' }">{{
$i18n['cloudeBrainMirror']['moststars'] }}</el-dropdown-item>
i18n['cloudeBrainMirror']['moststars'] }}</el-dropdown-item>
<el-dropdown-item :command="{ label: 'mostused', sort: 'mostused' }">{{
$i18n['cloudeBrainMirror']['mostused'] }}</el-dropdown-item>
i18n['cloudeBrainMirror']['mostused'] }}</el-dropdown-item>
<el-dropdown-item :command="{ label: 'newest', sort: 'newest' }">{{
$i18n['cloudeBrainMirror']['newest'] }}</el-dropdown-item>
i18n['cloudeBrainMirror']['newest'] }}</el-dropdown-item>
</el-dropdown-menu>
</el-dropdown>
</el-col>
</el-row>
<el-row style="margin-top: 15px">
<el-table :data="tableDataCustom" style="width: 100%" :header-cell-style="tableHeaderStyle">
<el-table-column :label="$i18n['cloudeBrainMirror']['mirror_tag']" min-width="19%" align="left"
<el-table-column :label="i18n['cloudeBrainMirror']['mirror_tag']" min-width="19%" align="left"
prop="tag">
<template slot-scope="scope">
<div style="display: flex; align-items: center">
@@ -225,7 +225,7 @@
</div>
</template>
</el-table-column>
<el-table-column :label="$i18n['cloudeBrainMirror']['mirror_description']" min-width="25%" align="left"
<el-table-column :label="i18n['cloudeBrainMirror']['mirror_description']" min-width="25%" align="left"
prop="description">
<template slot-scope="scope">
<div class="image_desc" :title="scope.row.description">
@@ -237,13 +237,13 @@
</div>
</template>
</el-table-column>
<el-table-column prop="cloudbrainType" :label="$i18n['cloudeBrainMirror']['available_clusters']"
<el-table-column prop="cloudbrainType" :label="i18n['cloudeBrainMirror']['available_clusters']"
min-width="12%" align="center">
<template slot-scope="scope">
{{ scope.row.cloudbrainType | transformType(vm) }}
</template>
</el-table-column>
<el-table-column prop="sumbimtState" :label="$i18n['cloudeBrainMirror']['commit_status']" min-width="9%"
<el-table-column prop="sumbimtState" :label="i18n['cloudeBrainMirror']['commit_status']" min-width="9%"
align="center">
<template slot-scope="scope">
<div style="
@@ -251,48 +251,48 @@
align-items: center;
justify-content: center;
">
<span v-if="scope.row.status === 0">{{ $i18n['cloudeBrainMirror']['commiting'] }}</span>
<span v-if="scope.row.status === 1">{{ $i18n['cloudeBrainMirror']['commit_success'] }}</span>
<span v-if="scope.row.status === 2">{{ $i18n['cloudeBrainMirror']['commit_failed'] }}</span>
<span v-if="scope.row.status === 0">{{ i18n['cloudeBrainMirror']['commiting'] }}</span>
<span v-if="scope.row.status === 1">{{ i18n['cloudeBrainMirror']['commit_success'] }}</span>
<span v-if="scope.row.status === 2">{{ i18n['cloudeBrainMirror']['commit_failed'] }}</span>
<el-tooltip v-if="scope.row.status === 0" class="item" effect="dark"
:content="$i18n['cloudeBrainMirror']['mirror_committed']" placement="top">
:content="i18n['cloudeBrainMirror']['mirror_committed']" placement="top">
<i class="CREATING" style="margin-left: 0.3rem"></i>
</el-tooltip>
<el-tooltip v-if="scope.row.status === 1" class="item" effect="dark"
:content="$i18n['cloudeBrainMirror']['mirror_submitted']" placement="top">
:content="i18n['cloudeBrainMirror']['mirror_submitted']" placement="top">
<i class="SUCCEEDED" style="margin-left: 0.3rem"></i>
</el-tooltip>
<el-tooltip v-if="scope.row.status === 2" class="item" effect="dark"
:content="$i18n['cloudeBrainMirror']['check_exceeds_20g']" placement="top">
:content="i18n['cloudeBrainMirror']['check_exceeds_20g']" placement="top">
<i class="FAILED" style="margin-left: 0.3rem"></i>
</el-tooltip>
</div>
</template>
</el-table-column>
<el-table-column prop="sumbimtState" :label="$i18n['cloudeBrainMirror']['recommend_by_plateform']"
<el-table-column prop="sumbimtState" :label="i18n['cloudeBrainMirror']['recommend_by_plateform']"
width="140" align="center">
<template slot-scope="scope">
<div v-if="scope.row.status === 1" style="">
<div v-if="scope.row.apply_status === 2"
style="display: flex;align-items:center;justify-content:center;">
<span style="color: rgb(250, 140, 22);">{{ $i18n['cloudeBrainMirror']['pending_approval']
<span style="color: rgb(250, 140, 22);">{{ i18n['cloudeBrainMirror']['pending_approval']
}}</span>
<el-tooltip class="item" effect="dark" :content="$i18n['cloudeBrainMirror']['pending_approval']"
<el-tooltip class="item" effect="dark" :content="i18n['cloudeBrainMirror']['pending_approval']"
placement="top">
<i class="CLOCK" style="margin-left: 0.3rem"></i>
</el-tooltip>
</div>
<div v-if="scope.row.apply_status === 3"
style="display: flex;align-items:center;justify-content:center;">
<span style="color: rgb(19, 194, 141);">{{ $i18n['cloudeBrainMirror']['approved'] }}</span>
<el-tooltip class="item" effect="dark" :content="$i18n['cloudeBrainMirror']['approved']"
<span style="color: rgb(19, 194, 141);">{{ i18n['cloudeBrainMirror']['approved'] }}</span>
<el-tooltip class="item" effect="dark" :content="i18n['cloudeBrainMirror']['approved']"
placement="top">
<i class="SUCCEEDED" style="margin-left: 0.3rem"></i>
</el-tooltip>
</div>
<div v-if="scope.row.apply_status === 4"
style="display: flex;align-items:center;justify-content:center;">
<span style="color: red">{{ $i18n['cloudeBrainMirror']['not_approved'] }}</span>
<span style="color: red">{{ i18n['cloudeBrainMirror']['not_approved'] }}</span>
<el-tooltip class="item" effect="dark" :content="scope.row.message" placement="top">
<i class="FAILED" style="margin-left: 0.3rem"></i>
</el-tooltip>
@@ -300,7 +300,7 @@
<div
v-if="scope.row.apply_status == 0 || scope.row.apply_status == 1 || scope.row.apply_status === 4">
<span class="apply-btn" v-if="scope.row.type != 5" @click="applyImage(scope.row.id)">
{{ $i18n['cloudeBrainMirror']['apply'] }}
{{ i18n['cloudeBrainMirror']['apply'] }}
</span>
<div v-else>--</div>
</div>
@@ -308,20 +308,20 @@
<div v-else>--</div>
</template>
</el-table-column>
<el-table-column prop="createdUnix" :label="$i18n['cloudeBrainMirror']['creation_time']" align="center"
<el-table-column prop="createdUnix" :label="i18n['cloudeBrainMirror']['creation_time']" align="center"
min-width="13%">
<template slot-scope="scope">
{{ scope.row.createdUnix | transformTimestamp }}
</template>
</el-table-column>
<el-table-column align="center" min-width="22%" :label="$i18n['cloudeBrainMirror']['operation']">
<el-table-column align="center" min-width="22%" :label="i18n['cloudeBrainMirror']['operation']">
<template slot-scope="scope">
<div style="
display: flex;
justify-content: flex-end;
align-items: center;
">
<div style="display: flex;align-items: center;padding: 0 1rem;" :title="$i18n['citations']">
<div style="display: flex;align-items: center;padding: 0 1rem;" :title="i18n['citations']">
<i class="ri-links-line" style="font-size: 16px;"></i>
<span style="line-height: 2;margin-left: 0.3rem;">{{ scope.row.useCount }}</span>
</div>
@@ -341,17 +341,17 @@
}}</span>
</div>
<span :class="scope.row.place ? 'copy-adress' : 'copy-adress-no'"
@click="copyUrl(scope.row.place)">{{ $i18n['cloudeBrainMirror']['copy_address'] }}</span>
@click="copyUrl(scope.row.place)">{{ i18n['cloudeBrainMirror']['copy_address'] }}</span>
<div style="padding-left: 1rem; cursor: pointer">
<el-dropdown size="medium">
<span class="el-dropdown-link">
{{ $i18n['cloudeBrainMirror']['more'] }}<i class="el-icon-arrow-down el-icon--right"></i>
{{ i18n['cloudeBrainMirror']['more'] }}<i class="el-icon-arrow-down el-icon--right"></i>
</span>
<el-dropdown-menu slot="dropdown">
<el-dropdown-item @click.native="eidtImage(scope.row.id)">{{
$i18n['cloudeBrainMirror']['edit'] }}</el-dropdown-item>
i18n['cloudeBrainMirror']['edit'] }}</el-dropdown-item>
<el-dropdown-item style="color: red" @click.native="deleteImage(scope.row.id)">{{
$i18n['cloudeBrainMirror']['delete'] }}</el-dropdown-item>
i18n['cloudeBrainMirror']['delete'] }}</el-dropdown-item>
</el-dropdown-menu>
</el-dropdown>
</div>
@@ -374,10 +374,10 @@
</el-col>
<el-col :span="10">
<div>
<el-input :placeholder="$i18n['cloudeBrainMirror']['placeholder']" v-model="search"
<el-input :placeholder="i18n['cloudeBrainMirror']['placeholder']" v-model="search"
class="input-with-select" @keyup.enter.native="searchName()">
<el-button id="success" slot="append" icon="el-icon-search" @click="searchName()">{{
$i18n['cloudeBrainMirror']['search'] }}</el-button>
i18n['cloudeBrainMirror']['search'] }}</el-button>
</el-input>
</div>
</el-col>
@@ -389,11 +389,11 @@
</span>
<el-dropdown-menu slot="dropdown">
<el-dropdown-item :command="{ label: 'moststars', sort: 'moststars' }">{{
$i18n['cloudeBrainMirror']['moststars'] }}</el-dropdown-item>
i18n['cloudeBrainMirror']['moststars'] }}</el-dropdown-item>
<el-dropdown-item :command="{ label: 'mostused', sort: 'mostused' }">{{
$i18n['cloudeBrainMirror']['mostused'] }}</el-dropdown-item>
i18n['cloudeBrainMirror']['mostused'] }}</el-dropdown-item>
<el-dropdown-item :command="{ label: 'newest', sort: 'newest' }">{{
$i18n['cloudeBrainMirror']['newest'] }}</el-dropdown-item>
i18n['cloudeBrainMirror']['newest'] }}</el-dropdown-item>
</el-dropdown-menu>
</el-dropdown>
</el-col>
@@ -401,7 +401,7 @@
<el-empty :image-size="200"></el-empty>
</template>
</el-tab-pane>
<el-tab-pane :label="$i18n['cloudeBrainMirror']['my_favorite_mirror']" name="third">
<el-tab-pane :label="i18n['cloudeBrainMirror']['my_favorite_mirror']" name="third">
<template v-if="tableDataStar.length !== 0">
<el-row style="align-items: center; display: flex">
<el-col :span="12">
@@ -409,10 +409,10 @@
</el-col>
<el-col :span="10">
<div>
<el-input :placeholder="$i18n['cloudeBrainMirror']['placeholder']" v-model="search"
<el-input :placeholder="i18n['cloudeBrainMirror']['placeholder']" v-model="search"
class="input-with-select" @keyup.enter.native="searchName()">
<el-button id="success" slot="append" icon="el-icon-search" @click="searchName()">{{
$i18n['cloudeBrainMirror']['search'] }}</el-button>
i18n['cloudeBrainMirror']['search'] }}</el-button>
</el-input>
</div>
</el-col>
@@ -424,20 +424,20 @@
</span>
<el-dropdown-menu slot="dropdown">
<el-dropdown-item :command="{ label: 'defaultsort', sort: '' }">{{
$i18n['cloudeBrainMirror']['defaultsort'] }}</el-dropdown-item>
i18n['cloudeBrainMirror']['defaultsort'] }}</el-dropdown-item>
<el-dropdown-item :command="{ label: 'moststars', sort: 'moststars' }">{{
$i18n['cloudeBrainMirror']['moststars'] }}</el-dropdown-item>
i18n['cloudeBrainMirror']['moststars'] }}</el-dropdown-item>
<el-dropdown-item :command="{ label: 'mostused', sort: 'mostused' }">{{
$i18n['cloudeBrainMirror']['mostused'] }}</el-dropdown-item>
i18n['cloudeBrainMirror']['mostused'] }}</el-dropdown-item>
<el-dropdown-item :command="{ label: 'newest', sort: 'newest' }">{{
$i18n['cloudeBrainMirror']['newest'] }}</el-dropdown-item>
i18n['cloudeBrainMirror']['newest'] }}</el-dropdown-item>
</el-dropdown-menu>
</el-dropdown>
</el-col>
</el-row>
<el-row style="margin-top: 15px">
<el-table :data="tableDataStar" style="width: 100%" :header-cell-style="tableHeaderStyle">
<el-table-column :label="$i18n['cloudeBrainMirror']['mirror_tag']" min-width="19%" align="left"
<el-table-column :label="i18n['cloudeBrainMirror']['mirror_tag']" min-width="19%" align="left"
prop="tag">
<template slot-scope="scope">
<div style="display: flex; align-items: center">
@@ -448,7 +448,7 @@
</div>
</template>
</el-table-column>
<el-table-column :label="$i18n['cloudeBrainMirror']['mirror_description']" min-width="26%" align="left"
<el-table-column :label="i18n['cloudeBrainMirror']['mirror_description']" min-width="26%" align="left"
prop="description">
<template slot-scope="scope">
<div class="image_desc" :title="scope.row.description">
@@ -460,13 +460,13 @@
</div>
</template>
</el-table-column>
<el-table-column prop="cloudbrainType" :label="$i18n['cloudeBrainMirror']['available_clusters']"
<el-table-column prop="cloudbrainType" :label="i18n['cloudeBrainMirror']['available_clusters']"
min-width="14%" align="center">
<template slot-scope="scope">
{{ scope.row.cloudbrainType | transformType(vm) }}
</template>
</el-table-column>
<el-table-column prop="creator" :label="$i18n['cloudeBrainMirror']['creator']" min-width="8%"
<el-table-column prop="creator" :label="i18n['cloudeBrainMirror']['creator']" min-width="8%"
align="center">
<template slot-scope="scope">
<a v-if="scope.row.userName || scope.row.relAvatarLink" :href="'/' + scope.row.userName"
@@ -476,20 +476,20 @@
<a v-else><img class="ui avatar image" title="Ghost" src="/user/avatar/ghost/-1" /></a>
</template>
</el-table-column>
<el-table-column prop="createdUnix" :label="$i18n['cloudeBrainMirror']['creation_time']" align="center"
<el-table-column prop="createdUnix" :label="i18n['cloudeBrainMirror']['creation_time']" align="center"
min-width="14%">
<template slot-scope="scope">
{{ scope.row.createdUnix | transformTimestamp }}
</template>
</el-table-column>
<el-table-column align="center" min-width="18%" :label="$i18n['cloudeBrainMirror']['operation']">
<el-table-column align="center" min-width="18%" :label="i18n['cloudeBrainMirror']['operation']">
<template slot-scope="scope">
<div style="
display: flex;
justify-content: flex-end;
align-items: center;
">
<div style="display: flex;align-items: center;padding: 0 1rem;" :title="$i18n['citations']">
<div style="display: flex;align-items: center;padding: 0 1rem;" :title="i18n['citations']">
<i class="ri-links-line" style="font-size: 16px;"></i>
<span style="line-height: 2;margin-left: 0.3rem;">{{ scope.row.useCount }}</span>
</div>
@@ -509,7 +509,7 @@
}}</span>
</div>
<span :class="scope.row.place ? 'copy-adress' : 'copy-adress-no'"
@click="copyUrl(scope.row.place)">{{ $i18n['cloudeBrainMirror']['copy_address'] }}</span>
@click="copyUrl(scope.row.place)">{{ i18n['cloudeBrainMirror']['copy_address'] }}</span>
</div>
</template>
</el-table-column>
@@ -529,10 +529,10 @@
</el-col>
<el-col :span="10">
<div>
<el-input :placeholder="$i18n['cloudeBrainMirror']['placeholder']" v-model="search"
<el-input :placeholder="i18n['cloudeBrainMirror']['placeholder']" v-model="search"
class="input-with-select" @keyup.enter.native="searchName()">
<el-button id="success" slot="append" icon="el-icon-search" @click="searchName()">{{
$i18n['cloudeBrainMirror']['search'] }}</el-button>
i18n['cloudeBrainMirror']['search'] }}</el-button>
</el-input>
</div>
</el-col>
@@ -544,13 +544,13 @@
</span>
<el-dropdown-menu slot="dropdown">
<el-dropdown-item :command="{ label: 'defaultsort', sort: '' }">{{
$i18n['cloudeBrainMirror']['defaultsort'] }}</el-dropdown-item>
i18n['cloudeBrainMirror']['defaultsort'] }}</el-dropdown-item>
<el-dropdown-item :command="{ label: 'moststars', sort: 'moststars' }">{{
$i18n['cloudeBrainMirror']['moststars'] }}</el-dropdown-item>
i18n['cloudeBrainMirror']['moststars'] }}</el-dropdown-item>
<el-dropdown-item :command="{ label: 'mostused', sort: 'mostused' }">{{
$i18n['cloudeBrainMirror']['mostused'] }}</el-dropdown-item>
i18n['cloudeBrainMirror']['mostused'] }}</el-dropdown-item>
<el-dropdown-item :command="{ label: 'newest', sort: 'newest' }">{{
$i18n['cloudeBrainMirror']['newest'] }}</el-dropdown-item>
i18n['cloudeBrainMirror']['newest'] }}</el-dropdown-item>
</el-dropdown-menu>
</el-dropdown>
</el-col>
@@ -749,7 +749,7 @@ export default {
onHidden: function () {
if (flag == false) {
$(".alert")
.html(_this.$i18n['canceled_operation'])
.html(_this.i18n['canceled_operation'])
.removeClass("alert-success")
.addClass("alert-danger")
.show()
@@ -757,7 +757,7 @@ export default {
.fadeOut();
} else {
$(".alert")
.html(_this.$i18n['successfully_deleted'])
.html(_this.i18n['successfully_deleted'])
.removeClass("alert-danger")
.addClass("alert-success")
.show()
@@ -819,7 +819,7 @@ export default {
document.execCommand("Copy");
cInput.remove();
$("body").toast({
message: this.$i18n['cloudeBrainMirror']['copy_succeeded'],
message: this.i18n['cloudeBrainMirror']['copy_succeeded'],
showProgress: "bottom",
showIcon: "check circle",
class: "info",
@@ -847,20 +847,20 @@ export default {
filters: {
transformType(val, vm) {
if (val == 0) {
return `${vm.$i18n['cloudeBrainMirror']['openi']} GPU`;
return `${vm.i18n['cloudeBrainMirror']['openi']} GPU`;
} else {
return `${vm.$i18n['cloudeBrainMirror']['c2net']} GPU`;
return `${vm.i18n['cloudeBrainMirror']['c2net']} GPU`;
}
},
transformSort(val, vm) {
if (val === 'moststars') {
return vm.$i18n['cloudeBrainMirror']['moststars'];
return vm.i18n['cloudeBrainMirror']['moststars'];
} else if (val === 'mostused') {
return vm.$i18n['cloudeBrainMirror']['mostused'];
return vm.i18n['cloudeBrainMirror']['mostused'];
} else if (val === 'defaultsort') {
return vm.$i18n['cloudeBrainMirror']['defaultsort'];
return vm.i18n['cloudeBrainMirror']['defaultsort'];
} else {
return vm.$i18n['cloudeBrainMirror']['newest'];
return vm.i18n['cloudeBrainMirror']['newest'];
}
},
transformTimestamp(timestamp) {
@@ -898,7 +898,7 @@ export default {
}
},
created() {
this.$i18n = window.i18n;
this.i18n = window.i18n;
const params = new URLSearchParams(location.search);
if (params.has("type") && params.get("type") == "myimage") {
this.activeName = "second";


+ 93
- 93
web_src/js/components/images/adminImages.vue View File

@@ -6,27 +6,27 @@
<div class="ui attached segment">
<div class="ui form ignore-dirty">
<div class="ui fluid action input">
<input type="text" :placeholder="$i18n['cloudeBrainMirror']['placeholder']" v-model="search"
<input type="text" :placeholder="i18n['cloudeBrainMirror']['placeholder']" v-model="search"
@keyup.enter="searchName()">
<button class="ui blue button" @click="searchName()">{{ $i18n['cloudeBrainMirror']['search'] }}</button>
<button class="ui blue button" @click="searchName()">{{ i18n['cloudeBrainMirror']['search'] }}</button>
</div>
</div>
</div>
<div class="ui ten wide column" style="margin: 1rem 0;">
<el-checkbox v-model="checked" style="padding: 0.5rem 1rem;">{{
$i18n['cloudeBrainMirror']['platform_recommendations'] }}</el-checkbox>
i18n['cloudeBrainMirror']['platform_recommendations'] }}</el-checkbox>
<!-- <el-dropdown @command="handleCommandType" trigger="click"
style="border: 1px solid rgba(34,36,38,.15);border-radius: 4px;padding: 0.5rem 1rem;">
<span class="el-dropdown-link">
{{ dropdownType }}<i class="el-icon-caret-bottom el-icon--right"></i>
</span>
<el-dropdown-menu slot="dropdown">
<el-dropdown-item :command="{ label: $i18n['cloudeBrainMirror']['all_cluster'], type: -1 }">{{
$i18n['cloudeBrainMirror']['all_cluster'] }}</el-dropdown-item>
<el-dropdown-item :command="{ label: $i18n['cloudeBrainMirror']['openi'], type: 0 }">{{
$i18n['cloudeBrainMirror']['openi'] }}</el-dropdown-item>
<el-dropdown-item :command="{ label: $i18n['cloudeBrainMirror']['c2net'], type: 2 }">{{
$i18n['cloudeBrainMirror']['c2net'] }}</el-dropdown-item>
<el-dropdown-item :command="{ label: i18n['cloudeBrainMirror']['all_cluster'], type: -1 }">{{
i18n['cloudeBrainMirror']['all_cluster'] }}</el-dropdown-item>
<el-dropdown-item :command="{ label: i18n['cloudeBrainMirror']['openi'], type: 0 }">{{
i18n['cloudeBrainMirror']['openi'] }}</el-dropdown-item>
<el-dropdown-item :command="{ label: i18n['cloudeBrainMirror']['c2net'], type: 2 }">{{
i18n['cloudeBrainMirror']['c2net'] }}</el-dropdown-item>
</el-dropdown-menu>
</el-dropdown> -->
<el-dropdown @command="handleCommandComputeResource" trigger="click"
@@ -35,20 +35,20 @@
{{ dropdownComputeResource }}<i class="el-icon-caret-bottom el-icon--right"></i>
</span>
<el-dropdown-menu slot="dropdown">
<el-dropdown-item :command="{ label: $i18n['cloudeBrainMirror']['all_compute_resource'], type: '' }">{{
$i18n['cloudeBrainMirror']['all_compute_resource'] }}</el-dropdown-item>
<el-dropdown-item :command="{ label: $i18n['computeResourceTitle']['GPU'], type: 'GPU' }">{{
$i18n['computeResourceTitle']['GPU'] }}</el-dropdown-item>
<el-dropdown-item :command="{ label: $i18n['computeResourceTitle']['GCU'], type: 'GCU' }">{{
$i18n['computeResourceTitle']['GCU'] }}</el-dropdown-item>
<el-dropdown-item :command="{ label: $i18n['computeResourceTitle']['MLU'], type: 'MLU' }">{{
$i18n['computeResourceTitle']['MLU'] }}</el-dropdown-item>
<el-dropdown-item :command="{ label: i18n['cloudeBrainMirror']['all_compute_resource'], type: '' }">{{
i18n['cloudeBrainMirror']['all_compute_resource'] }}</el-dropdown-item>
<el-dropdown-item :command="{ label: i18n['computeResourceTitle']['GPU'], type: 'GPU' }">{{
i18n['computeResourceTitle']['GPU'] }}</el-dropdown-item>
<el-dropdown-item :command="{ label: i18n['computeResourceTitle']['GCU'], type: 'GCU' }">{{
i18n['computeResourceTitle']['GCU'] }}</el-dropdown-item>
<el-dropdown-item :command="{ label: i18n['computeResourceTitle']['MLU'], type: 'MLU' }">{{
i18n['computeResourceTitle']['MLU'] }}</el-dropdown-item>
<el-dropdown-item
:command="{ label: $i18n['computeResourceTitle']['ILUVATAR-GPGPU'], type: 'ILUVATAR-GPGPU' }">{{
$i18n['computeResourceTitle']['ILUVATAR-GPGPU'] }}</el-dropdown-item>
:command="{ label: i18n['computeResourceTitle']['ILUVATAR-GPGPU'], type: 'ILUVATAR-GPGPU' }">{{
i18n['computeResourceTitle']['ILUVATAR-GPGPU'] }}</el-dropdown-item>
<el-dropdown-item
:command="{ label: $i18n['computeResourceTitle']['METAX-GPGPU'], type: 'METAX-GPGPU' }">{{
$i18n['computeResourceTitle']['METAX-GPGPU'] }}</el-dropdown-item>
:command="{ label: i18n['computeResourceTitle']['METAX-GPGPU'], type: 'METAX-GPGPU' }">{{
i18n['computeResourceTitle']['METAX-GPGPU'] }}</el-dropdown-item>
</el-dropdown-menu>
</el-dropdown>
<el-dropdown @command="handleApplyState" trigger="click"
@@ -57,16 +57,16 @@
{{ dropdownApplyState }}<i class="el-icon-caret-bottom el-icon--right"></i>
</span>
<el-dropdown-menu slot="dropdown">
<el-dropdown-item :command="{ label: $i18n['cloudeBrainMirror']['all_approval_status'], type: '' }">{{
$i18n['cloudeBrainMirror']['all_approval_status'] }}</el-dropdown-item>
<el-dropdown-item :command="{ label: $i18n['cloudeBrainMirror']['pending_approval'], type: 2 }">{{
$i18n['cloudeBrainMirror']['pending_approval'] }}</el-dropdown-item>
<el-dropdown-item :command="{ label: $i18n['cloudeBrainMirror']['approved'], type: 3 }">{{
$i18n['cloudeBrainMirror']['approved'] }}</el-dropdown-item>
<el-dropdown-item :command="{ label: $i18n['cloudeBrainMirror']['not_approved'], type: 4 }">{{
$i18n['cloudeBrainMirror']['not_approved'] }}</el-dropdown-item>
<el-dropdown-item :command="{ label: $i18n['cloudeBrainMirror']['none'], type: 1 }">{{
$i18n['cloudeBrainMirror']['none'] }}</el-dropdown-item>
<el-dropdown-item :command="{ label: i18n['cloudeBrainMirror']['all_approval_status'], type: '' }">{{
i18n['cloudeBrainMirror']['all_approval_status'] }}</el-dropdown-item>
<el-dropdown-item :command="{ label: i18n['cloudeBrainMirror']['pending_approval'], type: 2 }">{{
i18n['cloudeBrainMirror']['pending_approval'] }}</el-dropdown-item>
<el-dropdown-item :command="{ label: i18n['cloudeBrainMirror']['approved'], type: 3 }">{{
i18n['cloudeBrainMirror']['approved'] }}</el-dropdown-item>
<el-dropdown-item :command="{ label: i18n['cloudeBrainMirror']['not_approved'], type: 4 }">{{
i18n['cloudeBrainMirror']['not_approved'] }}</el-dropdown-item>
<el-dropdown-item :command="{ label: i18n['cloudeBrainMirror']['none'], type: 1 }">{{
i18n['cloudeBrainMirror']['none'] }}</el-dropdown-item>
</el-dropdown-menu>
</el-dropdown>
<el-dropdown @command="handleCommandSort" trigger="click"
@@ -76,12 +76,12 @@
</span>
<el-dropdown-menu slot="dropdown">
<el-dropdown-item :command="{ label: 'defaultsort', sort: '' }">{{
$i18n['cloudeBrainMirror']['defaultsort'] }}</el-dropdown-item>
i18n['cloudeBrainMirror']['defaultsort'] }}</el-dropdown-item>
<el-dropdown-item :command="{ label: 'moststars', sort: 'moststars' }">{{
$i18n['cloudeBrainMirror']['moststars'] }}</el-dropdown-item>
i18n['cloudeBrainMirror']['moststars'] }}</el-dropdown-item>
<el-dropdown-item :command="{ label: 'mostused', sort: 'mostused' }">{{
$i18n['cloudeBrainMirror']['mostused'] }}</el-dropdown-item>
<el-dropdown-item :command="{ label: 'newest', sort: 'newest' }">{{ $i18n['cloudeBrainMirror']['newest']
i18n['cloudeBrainMirror']['mostused'] }}</el-dropdown-item>
<el-dropdown-item :command="{ label: 'newest', sort: 'newest' }">{{ i18n['cloudeBrainMirror']['newest']
}}</el-dropdown-item>
</el-dropdown-menu>
</el-dropdown>
@@ -89,13 +89,13 @@
<div class="ui six wide column right aligned" style="margin:1rem 0;display: flex;align-items:center;
justify-content:flex-end;">
<el-button size="medium" icon="el-icon-refresh" @click="syncComputerNetwork" v-loading="syncLoading">
{{ $i18n['cloudeBrainMirror']['syncAiNetwork'] }}</el-button>
{{ i18n['cloudeBrainMirror']['syncAiNetwork'] }}</el-button>
<a class="ui blue small button" style="margin-left:10px" href="/admin/images/commit_image">{{
$i18n['cloudeBrainMirror']['create_cloud_brain_mirror'] }}</a>
i18n['cloudeBrainMirror']['create_cloud_brain_mirror'] }}</a>
</div>
<div class="ui sixteen wide column" style="padding: 0;overflow-x:auto;">
<el-table :data="tableDataCustom" style="min-width:100%;" :header-cell-style="tableHeaderStyle">
<el-table-column :label="$i18n['cloudeBrainMirror']['mirror_tag']" width="250px" align="left" prop="tag">
<el-table-column :label="i18n['cloudeBrainMirror']['mirror_tag']" width="250px" align="left" prop="tag">
<template slot-scope="scope">
<div style="display: flex;align-items: center;">
<a class="text-over image_title" :title="scope.row.tag">{{ scope.row.tag }}</a>
@@ -103,7 +103,7 @@
</div>
</template>
</el-table-column>
<el-table-column :label="$i18n['cloudeBrainMirror']['mirror_description']" width="300px" align="left"
<el-table-column :label="i18n['cloudeBrainMirror']['mirror_description']" width="300px" align="left"
prop="description">
<template slot-scope="scope">
<div class="image_desc" :title="scope.row.description">{{ scope.row.description }}
@@ -114,14 +114,14 @@
</div>
</template>
</el-table-column>
<el-table-column :label="$i18n['model_compute_resource']" width="150px" align="left"
<el-table-column :label="i18n['model_compute_resource']" width="150px" align="left"
prop="compute_resource">
<template slot-scope="scope">
<span :title="scope.row.compute_resource">{{ $i18n['computeResourceTitle'][scope.row.compute_resource]
<span :title="scope.row.compute_resource">{{ i18n['computeResourceTitle'][scope.row.compute_resource]
|| scope.row.compute_resource }}</span>
</template>
</el-table-column>
<el-table-column :label="$i18n['cloudeBrainMirror']['framework']" width="150px" align="left"
<el-table-column :label="i18n['cloudeBrainMirror']['framework']" width="150px" align="left"
prop="framework">
<template slot-scope="scope">
{{ scope.row.framework }}<br />{{ scope.row.frameworkVersion }}
@@ -137,25 +137,25 @@
{{ scope.row.cudaVersion || '--' }}
</template>
</el-table-column>
<el-table-column :label="$i18n['cloudeBrainMirror']['operationSystem']" width="180px" align="left"
<el-table-column :label="i18n['cloudeBrainMirror']['operationSystem']" width="180px" align="left"
prop="python">
<template slot-scope="scope">
{{ scope.row.operationSystem }}<br />{{ scope.row.operationSystemVersion }}
</template>
</el-table-column>
<el-table-column :label="$i18n['cloudeBrainMirror']['thirdPackages']" width="220px" align="left"
<el-table-column :label="i18n['cloudeBrainMirror']['thirdPackages']" width="220px" align="left"
prop="thirdpackages">
<template slot-scope="scope">
<div class="image_desc" :title="scope.row.thirdPackages">{{ scope.row.thirdPackages }}</div>
</template>
</el-table-column>
<!-- <el-table-column prop="cloudbrainType" :label="$i18n['cloudeBrainMirror']['available_clusters']"
<!-- <el-table-column prop="cloudbrainType" :label="i18n['cloudeBrainMirror']['available_clusters']"
width="120px" align="center">
<template slot-scope="scope">
{{ scope.row.cloudbrainType | transformType(vm) }}
</template>
</el-table-column> -->
<el-table-column prop="creator" :label="$i18n['cloudeBrainMirror']['creator']" width="80px" align="center">
<el-table-column prop="creator" :label="i18n['cloudeBrainMirror']['creator']" width="80px" align="center">
<template slot-scope="scope">
<a v-if="scope.row.userName || scope.row.relAvatarLink" :href="'/' + scope.row.userName"
:title="scope.row.userName">
@@ -166,19 +166,19 @@
</a>
</template>
</el-table-column>
<el-table-column prop="createdUnix" :label="$i18n['cloudeBrainMirror']['creation_time']" align="center"
<el-table-column prop="createdUnix" :label="i18n['cloudeBrainMirror']['creation_time']" align="center"
width="160px">
<template slot-scope="scope">
{{ scope.row.createdUnix | transformTimestamp }}
</template>
</el-table-column>
<el-table-column prop="apply_status" :label="$i18n['cloudeBrainMirror']['approval_status']" width="120px"
<el-table-column prop="apply_status" :label="i18n['cloudeBrainMirror']['approval_status']" width="120px"
fixed="right" align="center">
<template slot-scope="scope">
<span v-if="scope.row.apply_status == 0" style="">{{ '--' }}</span>
<div v-if="scope.row.apply_status === 1"
style="display: flex;align-items:center;justify-content:center;">
<span> {{ $i18n['cloudeBrainMirror']['none'] }}</span>
<span> {{ i18n['cloudeBrainMirror']['none'] }}</span>
<el-tooltip v-if="scope.row.message" class="item" effect="dark" :content="scope.row.message"
placement="top">
<i class="INFO" style="margin-left: 0.3rem"></i>
@@ -186,34 +186,34 @@
</div>
<div v-if="scope.row.apply_status === 2"
style="display: flex;align-items:center;justify-content:center;">
<span style="color: rgb(250, 140, 22);">{{ $i18n['cloudeBrainMirror']['pending_approval'] }}</span>
<el-tooltip class="item" effect="dark" :content="$i18n['cloudeBrainMirror']['pending_approval']"
<span style="color: rgb(250, 140, 22);">{{ i18n['cloudeBrainMirror']['pending_approval'] }}</span>
<el-tooltip class="item" effect="dark" :content="i18n['cloudeBrainMirror']['pending_approval']"
placement="top">
<i class="CLOCK" style="margin-left: 0.3rem"></i>
</el-tooltip>
</div>
<div v-if="scope.row.apply_status === 3"
style="display: flex;align-items:center;justify-content:center;">
<span style="color: rgb(19, 194, 141);">{{ $i18n['cloudeBrainMirror']['approved'] }}</span>
<el-tooltip class="item" effect="dark" :content="$i18n['cloudeBrainMirror']['approved']"
<span style="color: rgb(19, 194, 141);">{{ i18n['cloudeBrainMirror']['approved'] }}</span>
<el-tooltip class="item" effect="dark" :content="i18n['cloudeBrainMirror']['approved']"
placement="top">
<i class="SUCCEEDED" style="margin-left: 0.3rem"></i>
</el-tooltip>
</div>
<div v-if="scope.row.apply_status === 4"
style="display: flex;align-items:center;justify-content:center;">
<span style="color: red">{{ $i18n['cloudeBrainMirror']['not_approved'] }}</span>
<span style="color: red">{{ i18n['cloudeBrainMirror']['not_approved'] }}</span>
<el-tooltip class="item" effect="dark" :content="scope.row.message" placement="top">
<i class="FAILED" style="margin-left: 0.3rem"></i>
</el-tooltip>
</div>
</template>
</el-table-column>
<el-table-column align="center" width="400px" :label="$i18n['cloudeBrainMirror']['operation']"
<el-table-column align="center" width="400px" :label="i18n['cloudeBrainMirror']['operation']"
fixed="right">
<template slot-scope="scope">
<div style="display: flex;justify-content: center;align-items: center;">
<div style="display: flex;align-items: center;padding: 0 1rem;" :title="$i18n['citations']">
<div style="display: flex;align-items: center;padding: 0 1rem;" :title="i18n['citations']">
<i class="ri-links-line" style="font-size: 16px;"></i>
<span style="line-height: 2;margin-left: 0.3rem;">{{ scope.row.useCount }}</span>
</div>
@@ -228,27 +228,27 @@
<span style="padding: 0 1rem;color: rgb(19, 194, 141);cursor:pointer;" v-if="scope.row.type !== 5 && scope.row.status == '1'
&& (scope.row.apply_status == 0 || scope.row.apply_status == 1 || scope.row.apply_status == 2)"
@click="setRecommend(scope.$index, scope.row.id)">{{
$i18n['cloudeBrainMirror']['set_as_recommended'] }}</span>
i18n['cloudeBrainMirror']['set_as_recommended'] }}</span>
<span style="padding: 0 1rem;color: rgb(250, 140, 22);cursor:pointer;"
v-if="scope.row.type != 5 && scope.row.apply_status == 2"
@click="unSetRecommend(scope.$index, scope.row.id, 'reject')">{{
$i18n['cloudeBrainMirror']['not_recommend'] }}</span>
i18n['cloudeBrainMirror']['not_recommend'] }}</span>
<span style="padding: 0 1rem;color: rgb(250, 140, 22);cursor:pointer;" v-if="scope.row.type == 5"
@click="unSetRecommend(scope.$index, scope.row.id, 'cancel')">{{
$i18n['cloudeBrainMirror']['cancel_recommendation'] }}</span>
i18n['cloudeBrainMirror']['cancel_recommendation'] }}</span>
<span :class="scope.row.place ? 'copy-adress' : 'copy-adress-no'" @click="copyUrl(scope.row.place)">{{
$i18n['cloudeBrainMirror']['copy_address'] }}</span>
i18n['cloudeBrainMirror']['copy_address'] }}</span>
<div style="padding-left:1rem;cursor:pointer;">
<el-dropdown size="medium">
<span class="el-dropdown-link">
{{ $i18n['cloudeBrainMirror']['more'] }}<i class="el-icon-arrow-down el-icon--right"></i>
{{ i18n['cloudeBrainMirror']['more'] }}<i class="el-icon-arrow-down el-icon--right"></i>
</span>
<el-dropdown-menu slot="dropdown">
<el-dropdown-item @click.native="eidtImage(scope.row.id)">{{ $i18n['cloudeBrainMirror']['edit']
<el-dropdown-item @click.native="eidtImage(scope.row.id)">{{ i18n['cloudeBrainMirror']['edit']
}}
</el-dropdown-item>
<el-dropdown-item style="color: red;" @click.native="deleteImage(scope.row.id)">{{
$i18n['cloudeBrainMirror']['delete'] }}</el-dropdown-item>
i18n['cloudeBrainMirror']['delete'] }}</el-dropdown-item>
</el-dropdown-menu>
</el-dropdown>
</div>
@@ -270,14 +270,14 @@
:before-close="reasonDialogHandleClose" @open="reasonDialogHandleOpen">
<div class="reason-content">
<el-form label-width="80px" style="margin-top:36px;padding-right:60px;">
<el-form-item :label="$i18n['cloudeBrainMirror']['reason']" required>
<el-form-item :label="i18n['cloudeBrainMirror']['reason']" required>
<el-input v-model="reasonDialogContent" maxlength="64"></el-input>
</el-form-item>
</el-form>
</div>
<span slot="footer" class="dialog-footer">
<el-button class="btn" @click="reasonDialogHandleClose">{{ $i18n['cancel'] }}</el-button>
<el-button class="btn confirm-btn" type="primary" @click="reasonDialogHandleConfirm">{{ $i18n['confirm']
<el-button class="btn" @click="reasonDialogHandleClose">{{ i18n['cancel'] }}</el-button>
<el-button class="btn confirm-btn" type="primary" @click="reasonDialogHandleConfirm">{{ i18n['confirm']
}}</el-button>
</span>
</el-dialog>
@@ -364,9 +364,9 @@ export default {
},
onHidden: function () {
if (flag == false) {
$('.alert').html(_this.$i18n['canceled_operation']).removeClass('alert-success').addClass('alert-danger').show().delay(1500).fadeOut();
$('.alert').html(_this.i18n['canceled_operation']).removeClass('alert-success').addClass('alert-danger').show().delay(1500).fadeOut();
} else {
$('.alert').html(_this.$i18n['successfully_deleted']).removeClass('alert-danger').addClass('alert-success').show().delay(1500).fadeOut();
$('.alert').html(_this.i18n['successfully_deleted']).removeClass('alert-danger').addClass('alert-success').show().delay(1500).fadeOut();
}
}
})
@@ -383,13 +383,13 @@ export default {
if (res.Code === 0) {
this.$message({
type: 'success',
message: this.$i18n['submittedSuccessfully']
message: this.i18n['submittedSuccessfully']
});
this.getImageListCustom()
} else {
this.$message({
type: 'error',
message: this.$i18n['submittedFailed']
message: this.i18n['submittedFailed']
});
}
}).catch(err => {
@@ -397,7 +397,7 @@ export default {
this.syncLoading = false;
this.$message({
type: 'error',
message: this.$i18n['submittedFailed']
message: this.i18n['submittedFailed']
});
});
},
@@ -441,10 +441,10 @@ export default {
this.reasonDialogType = type;
this.reasonDialogData = this.tableDataCustom[index];
if (type == 'reject') {
this.reasonDialogTitle = this.$i18n['cloudeBrainMirror']['not_recommend'];
this.reasonDialogTitle = this.i18n['cloudeBrainMirror']['not_recommend'];
this.reasonDialogShow = true;
} else if (type == 'cancel') {
this.reasonDialogTitle = this.$i18n['cloudeBrainMirror']['cancel_recommendation'];
this.reasonDialogTitle = this.i18n['cloudeBrainMirror']['cancel_recommendation'];
this.reasonDialogShow = true;
}
},
@@ -486,7 +486,7 @@ export default {
// console.log(this.reasonDialogType, this.reasonDialogContent, this.reasonDialogData);
const reasonContent = this.reasonDialogContent.trim();
if (reasonContent == '') {
this.$message(this.$i18n['cloudeBrainMirror']['pleaseEnterReason']);
this.$message(this.i18n['cloudeBrainMirror']['pleaseEnterReason']);
return;
}
this.$axios.put(`/admin/image/${this.reasonDialogData.id}/action/unrecommend`, {
@@ -500,20 +500,20 @@ export default {
filters: {
transformType(val, vm) {
if (val == 0) {
return `${vm.$i18n['cloudeBrainMirror']['openi']}/GPU`;
return `${vm.i18n['cloudeBrainMirror']['openi']}/GPU`;
} else {
return `${vm.$i18n['cloudeBrainMirror']['c2net']}/GPU`;
return `${vm.i18n['cloudeBrainMirror']['c2net']}/GPU`;
}
},
transformSort(val, vm) {
if (val === 'moststars') {
return vm.$i18n['cloudeBrainMirror']['moststars'];
return vm.i18n['cloudeBrainMirror']['moststars'];
} else if (val === 'mostused') {
return vm.$i18n['cloudeBrainMirror']['mostused'];
return vm.i18n['cloudeBrainMirror']['mostused'];
} else if (val === 'defaultsort') {
return vm.$i18n['cloudeBrainMirror']['defaultsort'];
return vm.i18n['cloudeBrainMirror']['defaultsort'];
} else {
return vm.$i18n['cloudeBrainMirror']['newest'];
return vm.i18n['cloudeBrainMirror']['newest'];
}
},
transformTimestamp(timestamp) {
@@ -543,44 +543,44 @@ export default {
this.getImageListCustom()
},
created() {
this.$i18n = window.i18n;
this.dropdownPrivate = this.$i18n['all'];
this.dropdownType = this.$i18n['cloudeBrainMirror']['all_cluster'];
this.dropdownApplyState = this.$i18n['cloudeBrainMirror']['all_approval_status'];
this.dropdownComputeResource = this.$i18n['cloudeBrainMirror']['all_compute_resource'];
this.i18n = window.i18n;
this.dropdownPrivate = this.i18n['all'];
this.dropdownType = this.i18n['cloudeBrainMirror']['all_cluster'];
this.dropdownApplyState = this.i18n['cloudeBrainMirror']['all_approval_status'];
this.dropdownComputeResource = this.i18n['cloudeBrainMirror']['all_compute_resource'];
let params = new URLSearchParams(location.search)
if (location.search) {
this.firstSearch = true
this.paramsCustom = qs.parse(location.search.split('?')[1]);
if (params.has('private')) {
this.dropdownPrivate = !params.get('private') ? this.$i18n['cloudeBrainMirror']['private'] : this.$i18n['cloudeBrainMirror']['public']
this.dropdownPrivate = !params.get('private') ? this.i18n['cloudeBrainMirror']['private'] : this.i18n['cloudeBrainMirror']['public']
}
if (params.has('recommend')) {
this.checked = params.get('recommend') === 'true' ? true : false
}
if (params.has('cloudbrainType')) {
this.dropdownType = params.get('cloudbrainType') === 0 ? this.$i18n['cloudeBrainMirror']['openi'] : this.$i18n['cloudeBrainMirror']['c2net']
this.dropdownType = params.get('cloudbrainType') === 0 ? this.i18n['cloudeBrainMirror']['openi'] : this.i18n['cloudeBrainMirror']['c2net']
}
if (params.has('computeResource')) {
this.dropdownComputeResource = this.$i18n['computeResourceTitle'][params.get('computeResource')];
this.dropdownComputeResource = this.i18n['computeResourceTitle'][params.get('computeResource')];
}
if (params.has('apply')) {
const apply = params.get('apply');
switch (apply) {
case '1':
this.dropdownApplyState = this.$i18n['cloudeBrainMirror']['none']
this.dropdownApplyState = this.i18n['cloudeBrainMirror']['none']
break;
case '2':
this.dropdownApplyState = this.$i18n['cloudeBrainMirror']['pending_approval']
this.dropdownApplyState = this.i18n['cloudeBrainMirror']['pending_approval']
break;
case '3':
this.dropdownApplyState = this.$i18n['cloudeBrainMirror']['approved']
this.dropdownApplyState = this.i18n['cloudeBrainMirror']['approved']
break;
case '4':
this.dropdownApplyState = this.$i18n['cloudeBrainMirror']['not_approved']
this.dropdownApplyState = this.i18n['cloudeBrainMirror']['not_approved']
break;
case '':
this.dropdownApplyState = this.$i18n['cloudeBrainMirror']['all_approval_status']
this.dropdownApplyState = this.i18n['cloudeBrainMirror']['all_approval_status']
default:
break;
}


+ 9
- 9
web_src/js/features/clipboard.js View File

@@ -1,21 +1,20 @@

import ClipboardJS from 'clipboard';

export default async function initClipboard(elements) {
const els = elements || document.querySelectorAll(".clipboard");
if (!els || !els.length) return;

const { default: ClipboardJS } = await import(
/* webpackChunkName: "clipboard" */ "clipboard"
);

const clipboard = new ClipboardJS(els);
clipboard.on("success", (e) => {
e.clearSelection();
$(`#${e.trigger.getAttribute("id")}`).popup("destroy");
const popUpEl = $(e.trigger);
popUpEl.popup("destroy");
e.trigger.setAttribute(
"data-content",
e.trigger.getAttribute("data-success")
);
$(`#${e.trigger.getAttribute("id")}`).popup("show");
popUpEl.popup("show");
e.trigger.setAttribute(
"data-content",
e.trigger.getAttribute("data-original")
@@ -23,12 +22,13 @@ export default async function initClipboard(elements) {
});

clipboard.on("error", (e) => {
$(`#${e.trigger.getAttribute("id")}`).popup("destroy");
const popUpEl = $(e.trigger);
popUpEl.popup("destroy");
e.trigger.setAttribute(
"data-content",
e.trigger.getAttribute("data-error")
);
$(`#${e.trigger.getAttribute("id")}`).popup("show");
popUpEl.popup("show");
e.trigger.setAttribute(
"data-content",
e.trigger.getAttribute("data-original")


+ 1
- 1
web_src/vuepages/pages/modelmanage/components/FolderUploadSelect.vue View File

@@ -119,7 +119,7 @@ export default {
},
remove(file) {
if (file) {
const index = this.fileList.findIndex(item => item.webkitRelativePath === file.webkitRelativePath);
const index = this.fileList.findIndex(item => item._webkitRelativePath === file._webkitRelativePath);
this.fileList.splice(index, 1);
} else {
this.fileList.splice(0);


+ 6
- 4
web_src/vuepages/utils/index.js View File

@@ -181,12 +181,13 @@ export const initClipboard = (_els) => {
const clipboard = new ClipboardJS(els);
clipboard.on("success", (e) => {
e.clearSelection();
$(`#${e.trigger.getAttribute("id")}`).popup("destroy");
const popUpEl = $(e.trigger);
popUpEl.popup("destroy");
e.trigger.setAttribute(
"data-content",
e.trigger.getAttribute("data-success")
);
$(`#${e.trigger.getAttribute("id")}`).popup("show");
popUpEl.popup("show");
e.trigger.setAttribute(
"data-content",
e.trigger.getAttribute("data-original")
@@ -194,12 +195,13 @@ export const initClipboard = (_els) => {
});

clipboard.on("error", (e) => {
$(`#${e.trigger.getAttribute("id")}`).popup("destroy");
const popUpEl = $(e.trigger);
popUpEl.popup("destroy");
e.trigger.setAttribute(
"data-content",
e.trigger.getAttribute("data-error")
);
$(`#${e.trigger.getAttribute("id")}`).popup("show");
popUpEl.popup("show");
e.trigger.setAttribute(
"data-content",
e.trigger.getAttribute("data-original")


Loading…
Cancel
Save