|
@@ -0,0 +1,187 @@
|
|
|
+<template>
|
|
|
+ <CzrDialog
|
|
|
+ :show="show"
|
|
|
+ :title="titleCpt"
|
|
|
+ @onClose="$emit('update:show', false)"
|
|
|
+ @onSubmit="onSubmit"
|
|
|
+ width="62.5rem"
|
|
|
+ height="auto"
|
|
|
+ max-height="90%"
|
|
|
+ :loading="state.loading"
|
|
|
+ >
|
|
|
+ <div class="bm-form">
|
|
|
+ <CzrForm ref="ref_form" :form-view="isViewCpt">
|
|
|
+ <div class="__czr-title_1">基本信息</div>
|
|
|
+ <CzrFormColumn
|
|
|
+ required
|
|
|
+ :span="12"
|
|
|
+ label="模型供应商"
|
|
|
+ v-model:param="state.form.name"
|
|
|
+ link="select"
|
|
|
+ :options="[]"
|
|
|
+ />
|
|
|
+ <CzrFormColumn
|
|
|
+ required
|
|
|
+ :span="12"
|
|
|
+ label="模型类型"
|
|
|
+ v-model:param="state.form.name"
|
|
|
+ link="select"
|
|
|
+ :options="[]"
|
|
|
+ />
|
|
|
+ <CzrFormColumn
|
|
|
+ required
|
|
|
+ :span="24"
|
|
|
+ label="模型名称"
|
|
|
+ v-model:param="state.form.name"
|
|
|
+ />
|
|
|
+ <CzrFormColumn
|
|
|
+ :span="24"
|
|
|
+ label="模型简介"
|
|
|
+ v-model:param="state.form.remark"
|
|
|
+ type="textarea"
|
|
|
+ :rows="4"
|
|
|
+ />
|
|
|
+ <CzrFormColumn
|
|
|
+ required
|
|
|
+ :span="24"
|
|
|
+ label="共享条件"
|
|
|
+ v-model:param="state.form.name"
|
|
|
+ link="radio"
|
|
|
+ :options="[
|
|
|
+ {label: '不开放', value: 0},
|
|
|
+ {label: '全部开放', value: 1},
|
|
|
+ {label: '申请开放', value: 2},
|
|
|
+ ]"
|
|
|
+ />
|
|
|
+ <div class="__czr-title_1">模型参数配置</div>
|
|
|
+ <CzrFormColumn
|
|
|
+ required
|
|
|
+ :span="12"
|
|
|
+ label="基础URL"
|
|
|
+ v-model:param="state.form.name"
|
|
|
+ />
|
|
|
+ <CzrFormColumn
|
|
|
+ required
|
|
|
+ :span="12"
|
|
|
+ label="上下文长度"
|
|
|
+ v-model:param="state.form.name"
|
|
|
+ link="number"
|
|
|
+ />
|
|
|
+ <CzrFormColumn
|
|
|
+ required
|
|
|
+ :span="12"
|
|
|
+ label="最大Token上限"
|
|
|
+ v-model:param="state.form.name"
|
|
|
+ link="number"
|
|
|
+ />
|
|
|
+ <CzrFormColumn
|
|
|
+ :span="12"
|
|
|
+ label="Vision"
|
|
|
+ v-model:param="state.form.name"
|
|
|
+ link="radio"
|
|
|
+ :options="[
|
|
|
+ {label: '支持', value: 0},
|
|
|
+ {label: '不支持', value: 1},
|
|
|
+ ]"
|
|
|
+ />
|
|
|
+ <CzrFormColumn
|
|
|
+ :span="12"
|
|
|
+ label="函数调用"
|
|
|
+ v-model:param="state.form.name"
|
|
|
+ link="radio"
|
|
|
+ :options="[
|
|
|
+ {label: '支持', value: 0},
|
|
|
+ {label: '不支持', value: 1},
|
|
|
+ ]"
|
|
|
+ />
|
|
|
+ <div class="__czr-title_1">业务参数配置</div>
|
|
|
+ <CzrFormColumn
|
|
|
+ required
|
|
|
+ :span="12"
|
|
|
+ label="待定"
|
|
|
+ v-model:param="state.form.name"
|
|
|
+ />
|
|
|
+ <CzrFormColumn
|
|
|
+ required
|
|
|
+ :span="12"
|
|
|
+ label="待定"
|
|
|
+ v-model:param="state.form.name"
|
|
|
+ />
|
|
|
+ </CzrForm>
|
|
|
+ </div>
|
|
|
+ </CzrDialog>
|
|
|
+</template>
|
|
|
+
|
|
|
+<script setup lang="ts">
|
|
|
+import {computed, getCurrentInstance, nextTick, reactive, ref, watch} from "vue";
|
|
|
+import {ElMessage, ElMessageBox} from "element-plus";
|
|
|
+import {useDialogStore, useDictionaryStore} from "@/stores";
|
|
|
+import {useRouter} from "vue-router";
|
|
|
+
|
|
|
+const router = useRouter()
|
|
|
+const DictionaryStore = useDictionaryStore();
|
|
|
+const DialogStore = useDialogStore();
|
|
|
+const emit = defineEmits(['update:show', 'refresh'])
|
|
|
+const {proxy} = getCurrentInstance()
|
|
|
+const props = defineProps({
|
|
|
+ show: {default: false},
|
|
|
+ transfer: <any>{}
|
|
|
+})
|
|
|
+const state: any = reactive({
|
|
|
+ loading: false,
|
|
|
+ form: {}
|
|
|
+})
|
|
|
+const ref_form = ref()
|
|
|
+const titleCpt = computed(() => {
|
|
|
+ let t = '模型'
|
|
|
+ switch (props.transfer.mode) {
|
|
|
+ case 'add': t = '创建' + t
|
|
|
+ break
|
|
|
+ case 'edit': t = '编辑' + t
|
|
|
+ break
|
|
|
+ case 'view': t = '查看' + t
|
|
|
+ break
|
|
|
+ }
|
|
|
+ return t
|
|
|
+})
|
|
|
+const isViewCpt = computed(() => props.transfer?.mode === 'view')
|
|
|
+watch(() => props.show, (n) => {
|
|
|
+ if (n) {
|
|
|
+ initDictionary()
|
|
|
+ state.form = {}
|
|
|
+ if (props.transfer.mode !== 'add') {
|
|
|
+ initData()
|
|
|
+ }
|
|
|
+ nextTick(() => {
|
|
|
+ ref_form.value.reset()
|
|
|
+ })
|
|
|
+ }
|
|
|
+})
|
|
|
+const initDictionary = () => {
|
|
|
+}
|
|
|
+const initData = () => {
|
|
|
+}
|
|
|
+const onSubmit = (isImport) => {
|
|
|
+ ref_form.value.submit().then(() => {
|
|
|
+ DialogStore.confirm({
|
|
|
+ content: `请确认是否提交?`,
|
|
|
+ onSubmit: () => {
|
|
|
+ state.loading = true
|
|
|
+ ElMessage.success(`${titleCpt.value}成功!`)
|
|
|
+ emit('update:show', false)
|
|
|
+ emit('refresh')
|
|
|
+ state.loading = false
|
|
|
+ }
|
|
|
+ })
|
|
|
+ }).catch((e) => {
|
|
|
+ ElMessage({
|
|
|
+ message: e[0].message,
|
|
|
+ grouping: true,
|
|
|
+ type: 'warning',
|
|
|
+ })
|
|
|
+ })
|
|
|
+}
|
|
|
+</script>
|
|
|
+
|
|
|
+<style lang="scss" scoped>
|
|
|
+</style>
|