Skip to content

Commit 1dab1eb

Browse files
feat: model
1 parent 275ec80 commit 1dab1eb

File tree

18 files changed

+188
-2397
lines changed

18 files changed

+188
-2397
lines changed

ui/src/views/application/index.vue

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -144,7 +144,7 @@
144144
@load="getList"
145145
:loading="loading"
146146
>
147-
<el-row v-if="applicationList.length > 0" :gutter="15">
147+
<el-row v-if="applicationList.length > 0" :gutter="15" class="w-full">
148148
<template v-for="(item, index) in applicationList" :key="index">
149149
<el-col
150150
v-if="item.resource_type === 'folder'"

ui/src/views/model/component/CreateModelDialog.vue

Lines changed: 27 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -236,9 +236,9 @@
236236
</template>
237237
<script setup lang="ts">
238238
import { ref, computed } from 'vue'
239+
import { useRoute } from 'vue-router'
239240
import type { Provider, BaseModel } from '@/api/type/model'
240241
import type { Dict, KeyValue } from '@/api/type/common'
241-
import ModelApi from '@/api/model/model'
242242
import ProviderApi from '@/api/model/provider'
243243
import type { FormField } from '@/components/dynamics-form/type'
244244
import DynamicsForm from '@/components/dynamics-form/index.vue'
@@ -248,7 +248,19 @@ import { PermissionType, PermissionDesc } from '@/enums/model'
248248
import { input_type_list } from '@/components/dynamics-form/constructor/data'
249249
import AddParamDrawer from '@/views/model/component/AddParamDrawer.vue'
250250
import { t } from '@/locales'
251+
import { loadSharedApi } from '@/utils/dynamics-api/shared-api'
251252
253+
const route = useRoute()
254+
255+
const type = computed(() => {
256+
if (route.path.includes('shared')) {
257+
return 'systemShare'
258+
} else if (route.path.includes('resource-management')) {
259+
return 'systemManage'
260+
} else {
261+
return 'workspace'
262+
}
263+
})
252264
const providerValue = ref<Provider>()
253265
const dynamicsFormRef = ref<InstanceType<typeof DynamicsForm>>()
254266
const emit = defineEmits(['change', 'submit'])
@@ -378,18 +390,20 @@ const submit = () => {
378390
?.validate()
379391
.then(() => {
380392
if (providerValue.value) {
381-
ModelApi.createModel(
382-
{
383-
...base_form_data.value,
384-
credential: credential_form_data.value,
385-
provider: providerValue.value.provider,
386-
},
387-
loading,
388-
).then((ok) => {
389-
close()
390-
MsgSuccess(t('views.model.tip.createSuccessMessage'))
391-
emit('submit')
392-
})
393+
loadSharedApi({ type: 'model', systemType: type.value })
394+
.createModel(
395+
{
396+
...base_form_data.value,
397+
credential: credential_form_data.value,
398+
provider: providerValue.value.provider,
399+
},
400+
loading,
401+
)
402+
.then((ok: any) => {
403+
close()
404+
MsgSuccess(t('views.model.tip.createSuccessMessage'))
405+
emit('submit')
406+
})
393407
}
394408
})
395409
.catch(() => {

ui/src/views/model/component/EditModel.vue

Lines changed: 60 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
<template #header="{ close, titleId, titleClass }">
1111
<el-breadcrumb separator=">">
1212
<el-breadcrumb-item
13-
><span class="active-breadcrumb">{{
13+
><span class="active-breadcrumb">{{
1414
`${$t('common.edit')} ${providerValue?.name}`
1515
}}</span></el-breadcrumb-item
1616
>
@@ -74,8 +74,8 @@
7474
<div class="mr-4">
7575
<span>{{ $t('views.model.modelForm.base_model.label') }} </span>
7676
<span class="danger ml-4">{{
77-
$t('views.model.modelForm.base_model.tooltip')
78-
}}</span>
77+
$t('views.model.modelForm.base_model.tooltip')
78+
}}</span>
7979
</div>
8080
</div>
8181
</template>
@@ -119,17 +119,30 @@
119119
</el-dialog>
120120
</template>
121121
<script setup lang="ts">
122-
import {ref, computed} from 'vue'
123-
import type {Provider, BaseModel, Model} from '@/api/type/model'
124-
import type {Dict, KeyValue} from '@/api/type/common'
125-
import ModelApi from '@/api/model/model'
122+
import { ref, computed } from 'vue'
123+
import { useRoute } from 'vue-router'
124+
import type { Provider, BaseModel, Model } from '@/api/type/model'
125+
import type { Dict, KeyValue } from '@/api/type/common'
126126
import ProviderApi from '@/api/model/provider'
127-
import type {FormField} from '@/components/dynamics-form/type'
127+
import type { FormField } from '@/components/dynamics-form/type'
128128
import DynamicsForm from '@/components/dynamics-form/index.vue'
129-
import type {FormRules} from 'element-plus'
130-
import {MsgSuccess} from '@/utils/message'
131-
import {PermissionType, PermissionDesc} from '@/enums/model'
132-
import {t} from '@/locales'
129+
import type { FormRules } from 'element-plus'
130+
import { MsgSuccess } from '@/utils/message'
131+
import { PermissionType, PermissionDesc } from '@/enums/model'
132+
import { t } from '@/locales'
133+
import { loadSharedApi } from '@/utils/dynamics-api/shared-api'
134+
135+
const route = useRoute()
136+
137+
const type = computed(() => {
138+
if (route.path.includes('shared')) {
139+
return 'systemShare'
140+
} else if (route.path.includes('resource-management')) {
141+
return 'systemManage'
142+
} else {
143+
return 'workspace'
144+
}
145+
})
133146
134147
const providerValue = ref<Provider>()
135148
const dynamicsFormRef = ref<InstanceType<typeof DynamicsForm>>()
@@ -167,13 +180,13 @@ const base_form_data = ref<{
167180
model_type: string
168181
169182
model_name: string
170-
}>({name: '', model_type: '', model_name: ''})
183+
}>({ name: '', model_type: '', model_name: '' })
171184
172185
const credential_form_data = ref<Dict<any>>({})
173186
174187
const form_data = computed({
175188
get: () => {
176-
return {...credential_form_data.value, ...base_form_data.value}
189+
return { ...credential_form_data.value, ...base_form_data.value }
177190
},
178191
set: (event: any) => {
179192
credential_form_data.value = event
@@ -209,27 +222,29 @@ const list_base_model = (model_type: any, change?: boolean) => {
209222
}
210223
const open = (provider: Provider, model: Model) => {
211224
modelValue.value = model
212-
ModelApi.getModelById(model.id, formLoading).then((ok) => {
213-
modelValue.value = ok.data
214-
ProviderApi.listModelType(model.provider, model_type_loading).then((ok) => {
215-
model_type_list.value = ok.data
216-
list_base_model(model.model_type)
217-
})
218-
providerValue.value = provider
225+
loadSharedApi({ type: 'model', systemType: type.value })
226+
.getModelById(model.id, formLoading)
227+
.then((ok: any) => {
228+
modelValue.value = ok.data
229+
ProviderApi.listModelType(model.provider, model_type_loading).then((ok) => {
230+
model_type_list.value = ok.data
231+
list_base_model(model.model_type)
232+
})
233+
providerValue.value = provider
219234
220-
base_form_data.value = {
221-
name: model.name,
222-
model_type: model.model_type,
223-
model_name: model.model_name,
224-
}
225-
form_data.value = model.credential
226-
getModelForm(model.model_name)
227-
})
235+
base_form_data.value = {
236+
name: model.name,
237+
model_type: model.model_type,
238+
model_name: model.model_name,
239+
}
240+
form_data.value = model.credential
241+
getModelForm(model.model_name)
242+
})
228243
dialogVisible.value = true
229244
}
230245
231246
const close = () => {
232-
base_form_data.value = {name: '', model_type: '', model_name: ''}
247+
base_form_data.value = { name: '', model_type: '', model_name: '' }
233248
dynamicsFormRef.value?.ruleFormRef?.resetFields()
234249
credential_form_data.value = {}
235250
model_form_field.value = []
@@ -240,23 +255,25 @@ const close = () => {
240255
const submit = () => {
241256
dynamicsFormRef.value?.validate().then(() => {
242257
if (modelValue.value) {
243-
ModelApi.updateModel(
244-
modelValue.value.id,
245-
{
246-
...base_form_data.value,
247-
credential: credential_form_data.value,
248-
},
249-
loading,
250-
).then((ok) => {
251-
MsgSuccess(t('views.model.tip.updateSuccessMessage'))
252-
close()
253-
emit('submit')
254-
})
258+
loadSharedApi({ type: 'model', systemType: type.value })
259+
.updateModel(
260+
modelValue.value.id,
261+
{
262+
...base_form_data.value,
263+
credential: credential_form_data.value,
264+
},
265+
loading,
266+
)
267+
.then((ok: any) => {
268+
MsgSuccess(t('views.model.tip.updateSuccessMessage'))
269+
close()
270+
emit('submit')
271+
})
255272
}
256273
})
257274
}
258275
259-
defineExpose({open, close})
276+
defineExpose({ open, close })
260277
</script>
261278
<style lang="scss" scoped>
262279
.select-provider {

ui/src/views/model/component/ModelCard.vue

Lines changed: 44 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@
2828
</el-text>
2929
</template>
3030
<template #tag>
31-
<el-tag v-if="isShared" type="info" class="info-tag">
31+
<el-tag v-if="isShared || isSystemShare" type="info" class="info-tag">
3232
{{ t('views.system.shared.label') }}
3333
</el-tag>
3434
</template>
@@ -85,6 +85,12 @@
8585
>
8686
{{ $t('common.modify') }}
8787
</el-dropdown-item>
88+
<el-dropdown-item
89+
v-if="isSystemShare"
90+
icon="Lock"
91+
@click.stop="openAuthorizedWorkspaceDialog(model)"
92+
>{{ $t('views.system.shared.authorized_workspace') }}</el-dropdown-item
93+
>
8894

8995
<el-dropdown-item
9096
v-if="
@@ -93,7 +99,6 @@
9399
currentModel.model_type === 'IMAGE' ||
94100
currentModel.model_type === 'TTI' ||
95101
permissionPrecise.paramSetting()
96-
97102
"
98103
:disabled="!is_permisstion"
99104
icon="Setting"
@@ -107,9 +112,7 @@
107112
:disabled="!is_permisstion"
108113
text
109114
@click.stop="deleteModel"
110-
v-if="
111-
permissionPrecise.delete()
112-
"
115+
v-if="permissionPrecise.delete()"
113116
>
114117
{{ $t('common.delete') }}
115118
</el-dropdown-item>
@@ -119,48 +122,43 @@
119122
</template>
120123
<EditModel ref="editModelRef" @submit="emit('change')"></EditModel>
121124
<ParamSettingDialog ref="paramSettingRef" :model="model" />
125+
<AuthorizedWorkspace
126+
ref="AuthorizedWorkspaceDialogRef"
127+
v-if="isSystemShare"
128+
></AuthorizedWorkspace>
122129
</card-box>
123130
</template>
124131
<script setup lang="ts">
125132
import type { Provider, Model } from '@/api/type/model'
126-
import ModelApi from '@/api/model/model'
127133
import { computed, ref, onMounted, onBeforeUnmount } from 'vue'
128134
import EditModel from '@/views/model/component/EditModel.vue'
129135
// import DownloadLoading from '@/components/loading/DownloadLoading.vue'
130136
import { MsgConfirm } from '@/utils/message'
131137
import { modelType } from '@/enums/model'
132138
import useStore from '@/stores'
133139
import ParamSettingDialog from './ParamSettingDialog.vue'
140+
import AuthorizedWorkspace from '@/views/system-shared/AuthorizedWorkspaceDialog.vue'
134141
import { t } from '@/locales'
135142
import { PermissionConst, RoleConst } from '@/utils/permission/data'
136143
import { hasPermission } from '@/utils/permission'
137-
import { useRoute } from 'vue-router'
138144
import permissionMap from '@/permission'
139-
140-
141-
const route = useRoute()
142-
143-
const type = computed(() => {
144-
if (route.path.includes('shared')) {
145-
return 'systemShare'
146-
} else if (route.path.includes('resource-management')) {
147-
return 'systemManage'
148-
} else {
149-
return 'workspace'
150-
}
151-
})
152-
const permissionPrecise = computed(() => {
153-
return permissionMap['model'][type.value]
154-
})
145+
import { loadSharedApi } from '@/utils/dynamics-api/shared-api'
155146
156147
const props = defineProps<{
157148
model: Model
158149
provider_list: Array<Provider>
159150
updateModelById: (model_id: string, model: Model) => void
160151
isShared?: boolean | undefined
152+
isSystemShare?: boolean | undefined
153+
sharedType: 'systemShare' | 'workspace' | 'systemManage'
161154
}>()
162155
163156
const { user } = useStore()
157+
158+
const permissionPrecise = computed(() => {
159+
return permissionMap['model'][props.sharedType]
160+
})
161+
164162
const downModel = ref<Model>()
165163
166164
const is_permisstion = computed(() => {
@@ -196,18 +194,22 @@ const deleteModel = () => {
196194
},
197195
)
198196
.then(() => {
199-
ModelApi.deleteModel(props.model.id).then(() => {
200-
emit('change')
201-
})
197+
loadSharedApi({ type: 'model', systemType: props.sharedType })
198+
.deleteModel(props.model.id)
199+
.then(() => {
200+
emit('change')
201+
})
202202
})
203203
.catch(() => {})
204204
}
205205
206206
const cancelDownload = () => {
207-
ModelApi.pauseDownload(props.model.id).then(() => {
208-
downModel.value = undefined
209-
emit('change')
210-
})
207+
loadSharedApi({ type: 'model', systemType: type.value })
208+
.pauseDownload(props.model.id)
209+
.then(() => {
210+
downModel.value = undefined
211+
emit('change')
212+
})
211213
}
212214
const openEditModel = () => {
213215
const provider = props.provider_list.find((p) => p.provider === props.model.provider)
@@ -225,9 +227,11 @@ const icon = computed(() => {
225227
const initInterval = () => {
226228
interval = setInterval(() => {
227229
if (currentModel.value.status === 'DOWNLOAD') {
228-
ModelApi.getModelMetaById(props.model.id).then((ok) => {
229-
downModel.value = ok.data
230-
})
230+
loadSharedApi({ type: 'model', systemType: type.value })
231+
.getModelMetaById(props.model.id)
232+
.then((ok: any) => {
233+
downModel.value = ok.data
234+
})
231235
} else {
232236
if (downModel.value) {
233237
props.updateModelById(props.model.id, downModel.value)
@@ -251,6 +255,13 @@ const openParamSetting = () => {
251255
paramSettingRef.value?.open()
252256
}
253257
258+
const AuthorizedWorkspaceDialogRef = ref()
259+
function openAuthorizedWorkspaceDialog(row: any) {
260+
if (AuthorizedWorkspaceDialogRef.value) {
261+
AuthorizedWorkspaceDialogRef.value.open(row, 'Model')
262+
}
263+
}
264+
254265
onMounted(() => {
255266
initInterval()
256267
})

0 commit comments

Comments
 (0)