From dd514f75a6ca9d84e900b17e2d499d9052ff4f96 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E5=A8=9C?= Date: Sat, 15 Feb 2025 18:26:47 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E6=9C=AC=E5=9C=B0=E6=A8=A1=E5=9E=8B?= =?UTF-8?q?=E9=85=8D&=E6=95=B0=E6=8D=AE=E5=9B=9E=E6=98=BE&=E6=9C=AC?= =?UTF-8?q?=E5=9C=B0=E6=A8=A1=E5=9E=8B=E5=88=97=E8=A1=A8=E6=9F=A5=E8=AF=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/api/kbApp.ts | 7 + src/assets/images/Qwen.png | Bin 0 -> 3660 bytes src/assets/images/deepseek.png | Bin 0 -> 3862 bytes src/components/UserHeaderBar/headerCom.vue | 384 ++++++++++++++++----- src/lang/package/en.ts | 2 + src/lang/package/zh-cn.ts | 2 + src/views/login/index.vue | 5 +- 7 files changed, 306 insertions(+), 94 deletions(-) create mode 100644 src/assets/images/Qwen.png create mode 100644 src/assets/images/deepseek.png diff --git a/src/api/kbApp.ts b/src/api/kbApp.ts index 22c5112..c611941 100644 --- a/src/api/kbApp.ts +++ b/src/api/kbApp.ts @@ -143,6 +143,13 @@ class KbAppAPI { method: "get", }); } + + static localModelList() { + return request({ + url: `/model/list`, + method: "get", + }); + } } export default KbAppAPI; diff --git a/src/assets/images/Qwen.png b/src/assets/images/Qwen.png new file mode 100644 index 0000000000000000000000000000000000000000..f13d471bb56a1800b671b5f21f0740f30b4a204c GIT binary patch literal 3660 zcmaKvc|26#8^>qHV6rb+)0jl1#)xlrlTjukzV>ypj4vunk}Zs728F~7)kKQyBsAVwk{cE8;;pH zMu6VAjuYq!iNG7~5u(7!%a*`Fjax_}y|`*yfTz9+5VQyre;lFv+&k1_YNT!L6H~WV zv21_MHY#X?#?1Z%jxGU6WZ2>^-}+f#2p7~p=ntuLB4zqBCK5T0X~b1;iZTk-AM8NC0|5Kv)@#S_8icsK8BuRJrL_?Mee>N)Uw9y|rY%Q@CuXiQm-qc*u3v?l+r^0N zJ7IpWUIKt7M}G{AXYJgAEGTM9`CP%o$HPAf08PllJgM`S5I@;_?TEvO7XcZ5d4DF0 zgg|6d4QQ#{)0#aHRkB2p8@=Fo~BaDFBT?#L3$s?-ze6a z`*ms*=^DBJy*tOXEmHo|?``8Bu)*5|gnDI~IX@`SXsWu+Frr$>w&IR3B}z?PvQ0|2*L(}ho|bP^HHhJrHRcJum3ssO z$-R(K%P2!4HybQammp%MWs8pQh_B(pzh~}b2i`yA`(K`pX7&)jx z6inBc%=S)#YU4ai8&AG;Lei|3L<)d&w!qO z-i20^DdVx7`ckPCZN^gGlH|udH%;$n&g2`_Q%MF=-XIa%^Tqg&9gE}WXMp(5*61aL zhR^gnOA}nNfx?LLWsz-LmJ1RVEZmfoOiO>-LG?j7PNL1d=}~(SMj3a!mka$!@d~8M}D8?k9B9<*girt_M66u60-viT#D#NcG{(O+_@@i6! zKE&pkV>cXtujw<|<>bLxTA~e+LEtssvPGny}hAZTVMz`+&`izW?Ibe*OU?$7A^9i&^ z!h;}k0*P$_Y)BRXx*{Gv+O62XE&UM z6*7qs2Ima&Vn3iQF|^H|7JP|nwGS=-si++*<-h~ib7@H<<1)ojj7bz?zz>!HTXKUF zz_j={;&Cl+E4(azhmw#S>#ZA!_G)0#l8H2oA`dQT(T%~XaumrN^y^>8a`w# zZ7`#Y0kcl}E5MK%@dz%Wvy`;=o;<4~Kam>e)4*jK5O82#7g>XZ-@JLNrrkefa3%#*=aHs>P zLPlk9ZztA|&rnICOD*H8kVtbc?e5OMhse(Aq7J4IS=jyi?rP+*E-fz`rM9VO&TsQx z>lN2gsJ$IbF%i!h2Ng>YSBo**(G+)=AJUJWv}8>{R&~7Qbxx1+F%l2zXrQi+i&~q_ zhxkz8NZix*xhV~p0Aq)Iv(ebZ=`Isf@9Y_tL)le1Qvu9Pmdgn>4Io8Hg>TWjby8~% z4_TY?uSOm=@`5wbb<~v$OqPq7+)OPsFK$;@zmW%g#8^(eyk@!Ltb-bZ-4X%+`XC#( z_#T4E4Je(bSh5Q7W~8EByO0K<*icebUz=+Eh1e!fC#@d?nC2IC__tqz_#qp6xtH~#!2~C^cjS1IK@cGLJOZF+rACT|WMq|5` zU{G4VJdXwOMZo9Sz2Di+ULqC&y9(a=7qQkXFDI#QP^R26V|U)-gkR23xmMaCTV$FJ z)nqR6iIA9!N}RO|qJ)f7ug}A)^}##JeQ=j}rh9GO273b}GQxD<0ZAoZ~ zgS&fc$el{*xCoACE_Nf$fKGY%n~l90_?v$+4+PdZN%-~=FwMO)^r6n)QDh{%d~l$( zq-=Go!a0TXHp|88e*)qxOM|)w4Mo}=^FnIfUo{48u0w6HpD zL(YK9UvmC{wBR%)?j3D_ERzWTihbg?)*kAG&A37SeL)eVH=l1K&fPmZ-<=Y-Oa6$c zrz}HF-LRXqks+zq58Y@B56Z+}JNbl%3V)Q?(QYmMre68NQl&9Lk5^gcpyu^Jp`FTi zn_n(E82w%`sa$+;w<(+4^Y%Eb39%$2LH66mUv8I^Gf;g8=STIb*^c zbm!w{@}a~p*8=!4{noxF%+8t$mhI#W)tB?}tk-Yh9cb2lH1SVa1u!#EloHZZcd2s; zN>-LiB0EMe;V)VnVEq%$e$9)1cizszQ;$t3;0Z0bsdSJY?IH24;jGNPpBIw>ib_>$ zIl6BWmTN?~dn({<89I4tdC9ta6}v5aZ|C%kta-2Wqb&(_f$bC3Ti1@lO2tP_TNda0 z#1OHuam>*n1yCMl+>w~8S(P8FGapAdlXs_qUVX#)s%k(U=a-3=B7fXSM%+Zou&HNO zK7U9i5R{&8?><+3&>zUfDXrztet&R*b;n0$w*zt+9C}nvV3lqBh)^*6y+2d~vAwZ! zKn_}=?pkIdAs9MMl+EHv^^X^!a9yo+ki_KyN-uhJwe0!AVfsY? z=l%@PWZb0OZc}ykshsp8#vz4J;9EE;#($(TV@*I2*k@&0eXC#9WO6e)Xx^?IimaS7 zzt(mHbM4De?T{@8DEQv5-s0fMtnBUVTSXwSqRn~D+ol|_nGD*dU-&&oy&Os=3ZjYTe9I&~SqBWvv z0|ccjOJ_9{0)XDWt>JGnIg!jdr(0Dxj{jc*@el~}(y{dKYr6o0)#GFnVgmqx(?DO>^q6h`ofDAb zT4DV*=NOzbzFYs5Duks#i{o+XO2vU}wu-JXIfAF37W@H4<^jBQrJuk)|FHr9w1VMLYHR>cEGsVn ziw8-<%m6{%5@`6H0stVk_F0!0g8;Ds&c=)P0G#ophpbr%03^-FIlhzx;1>g~rb(Fr zxVB&&vcd8AOBJEc6e$4i_C9}DoDCot2tRZ0IKEe;e@CBY0ouf$e^qop&LaBGT}uE1 zZm0EJiHa;hyz%v|OkEJ5m{3SDCW3+gyZAKO&7CIhTv1U+&7)Ap)}8)H?g*gmT*KVE zIL#x*IJL!jcLc8?+nFAjlP-WSHRV1DH~oOh4v0MX8y>2;zp=5ozu}&J%M}TMxdxl4 zFS>8fePtXlR2&+NslPdrXz2ZxiFN8=PRpzvMy_+BG=e{j>tBXCqbjgjksZg(Gk~+^ z;yxPOq&nB344EXr$#%3t8o#>^&Zx}{;Hflkh`S`|27j0>H^br2O~B*NLPHJrYay_> zy%8OXkU)LVxHK8r*bRmm!i9Lh!8Fnkmb3zBO@nY6p7eTgaGy5iHegJ(`M^}f>W%#r za)bGP;cwe3egS66RH|Euj0O=lNzC*5A-*UV0?VTLKe z0|NKzvc%+Jhv59w{Or5|=DO-tAssoLw~?>OJw*^V`74utm zS|?8PCwk#`&NH^wwu8-T+@ZH-opA`MaocGPO%nZ`HJN^ffRvGdkt<4Bk9JYZcM_;U zqw8p<1J*CR*k+KH!7X<5s>n_zA0vyO^T3$A5euHQneA_WYgy)@e*mgK!pR427I{G- zCw>z?8-x^jZ|yX?^u!KV>35Bh{+fnxf|&j1TGAH~-NyH{!X5WtJmKuvE%cn{YLf(A zjY_T|Ul+gkaiRBi0j^=DmlvmdGUr-eu0r$YVV)T#V53J{Q*|aiPdwjcGUTbdJ+OZKHwfPjd%yOwCegXrcs7-&myhG|4VLJfXVa~#p7_MSzY#GRMRZ*tsM+(W&-eeBKu5S{irRo%~ITamckDd!CE1Zb@);FfQYZFix~gY6*~+h z;gqXpzLlp$|Kh#<43)!-g}M7=7bZmp!cuB_fhH|g?`^oEAn4Mm1BNertgDrPXx!)f z4R=XZFQRphqGaLIF6B}|d`Ew+j+WOqzq~p^)0bC=$5m#J66wF9yA?I~PKOycSefoc zaQa2of%|obh6u|Asu1PAVeezW0jWld3|U{iMx}xzibhP=U@2Wdm+T=VN-4Y&dkqx%+xj zF{suJod0;!lMWd5z>~;mSD5;>7EGhubr;B6De*JDa>LP=s3%XU1Esrv-fxrM$vx#C zp(GTC-b5v&8;yK9TxO$CXN3_(*b4itX-o1PbmY`r|T9@MQa;(uw=C zN$C0aNX^JA-1Et&%NSbfXT+&5UwL0T=Wqi|m|msvl$Dir2c}5+VJZLIo01mW9x2VqssXE`KS) zk)jxX@oeRI2s+xLFcJBy^P|u+y>cyAa2(8pn+|2iT;7MC)rnSXRkuXclVv54H_u8zQSN%+TB zCiFX5=@t*JpIs>$5&AH~)jT-c&}b>sJtnwsDMNm4lO|KdC@J|R-#qx5+H3A*FziGl z_fIsCvpC})51=~4_Bg*N>VA7>p@5B7jAsZ3W?LR?&#MS@qHdRdIr{j--e)vtiK7xM z7U}e}J69^v+Red^`t7;pHEg_6{IizX4l(7-FOb?n?*WjD8M1r*xBs?XMTh@!(}H+y z)TY(Tl`=xR@Ri8VQL z_OD934TRDohUE>Hxl%UnwLFNrC|IOAuADf{SYE1dN`L5Ek=qIh%RNL!D8b9C^r3#! zgMREkw}Vj2sPt0JdRgvwHK@U|@y1tbJ%=7_@!#ZCz{zNn_l1V>UM94{;67iCentuI z-%>PX9?KrMiu;*)f5GF$qhGe6Kf6Q*gn3?=%50n$y9QT}iSc3@rll>b5BqtNFtP&h zo5I3>c-}5MV*Y5nXhnwj5YT%cfJrm2FLdt!vV9}0J?tEjm1|%YHZ1u!;9XNp5eADB ztGQK${Stx!y+v@W_}mmJri==mekLcZF6EfKjT)wPWTKnt}DpXVTJJHrCvBZR6eHwk(;&cYZikRld4$zXaoq z3l$yt@Or4HTC%3x2MRLijazQA6jV5Kg6e&erASPC=(7jQyBdcvry5(<2fyaFC;l7g zWvTWru!7mz6T@j=Pd1mV=Tvp@zzfdzseD&Dp~Tb`)%rd*rR(_H&cc!i<&$!kkJqv!MAYOd$9>_+ih(93MRRG)1cP|{@vN7oUV>wA0^`iEDio{U;l1)eKGNNsC zGLY2|YEm^Mz<)Rx0=YH7)PGA`IVrXiL)eal`LWEbQ$zTD!)nvQmTCRFK@tgHXnQH3 zqLZxpa}%!jMz&Z6N}To=svx15!h^Axm7xa`)dOoa;1Uq zktV|zqcEz^|7&2jc@XEr-n z21OPJJQgEI6K|-EI9NG(!F@qfSd408L?TC$s1Z;(QMfrQH}WEUd*-mQm_gr0w`}bs z@1Z19H<$uE&jY2iO4h=!0pKJr)NJrrtbS|?%5s?lIOZqMN*9jBYGIdypH&)wgTH(= z|9dP}e;+~;nfL%$l#A<|@MGZ$*NFKNbxb%#!9tw{&{xm>JPAK$-p`CTIbfhDr`IVU z4-AMSyp1hPK!9m4>YWM#1e}&sE_p)&{(s`5j+mk#a0Kzqu*tFL0tUD4>b})>ivAxI C`9ItM literal 0 HcmV?d00001 diff --git a/src/components/UserHeaderBar/headerCom.vue b/src/components/UserHeaderBar/headerCom.vue index ad9e856..44e54e2 100644 --- a/src/components/UserHeaderBar/headerCom.vue +++ b/src/components/UserHeaderBar/headerCom.vue @@ -2,12 +2,12 @@
- +
- + + + {{ + t("model.localModel") + }} + {{ + t("model.onlineModel") + }} + + - - - - - - - +
+ - - - - - - - - - - - (1024~8096) - - - - {{ $t("btnText.confirm") }} - - + {{ item.model_name }} + + + +
+
+ + + +
+ - {{ $t("btnText.cancel") }} - - + + + + + + + + + + + + + + + + + (1024~8096) + +
+ +
+ + {{ $t("btnText.confirm") }} + + + {{ $t("btnText.cancel") }} + +
@@ -150,6 +208,7 @@ import "@/styles/headerBar.scss"; import { IconCaretDown, IconCaretUp, + IconError, IconSuccess, } from "@computing/opendesign-icons"; import { ModelForm } from "./modelConfig"; @@ -160,16 +219,54 @@ import defaultSettings from "@/settings"; const userStore = useUserStore(); const { t } = useI18n(); const ruleFormRef = ref(); +const ruleFormRefLocal = ref(); const userLanguage = ref(); const isSubmitDisabled = ref(true); const batchDownBth = ref(false); const modelVisible = ref(false); +const openai_api_type = ref("local"); +const value = ref(""); +// 定义一个接口来描述 modelTypes 数组中的对象结构 +interface ModelType { + model_name: string; // value 属性是字符串类型 + model_type: string; // type 属性也是字符串类型 + id: string; +} + +const initModelTYpe=ref('') + +// 使用接口定义 modelTypes 数组的类型 +let modelTypes: Ref = ref([ + // { + // model_name: "千问", + // model_type: "qwen", + // }, + // { + // model_name: "deepseek", + // model_type: "deepseek", + // }, +]); + +// 定义一个类型别名来描述 typesImg 对象的结构 +type TypesImg = { + [key: string]: string; // 键是字符串,值也是字符串 +}; + +// 使用类型别名定义 typesImg 对象的类型 +const typesImg: TypesImg = { + qwen: "/witchaind/src/assets/images/Qwen.png", + deepseek: "/witchaind/src/assets/images/deepseek.png", +}; const ruleForm = ref({ openai_api_key: "", openai_api_base: "", max_tokens: 1024, model_name: "", }); +const ruleFormLocal = ref({ + id: "", + model_name: "", +}); const rules = ref({ openai_api_key: [ @@ -211,14 +308,56 @@ const formValidateStatus = ref({ const userInfo = ref({}); +const handleClose = () => { + modelVisible.value = false; + ruleFormRef.value?.resetFields(); + ruleFormRefLocal.value?.resetFields(); + ruleForm.value = { max_tokens: 1024 }; + ruleFormLocal.value = {}; + + formValidateStatus.value = { + openai_api_key: true, + openai_api_base: true, + max_tokens: true, + model_name: true, + }; +}; + onMounted(() => { userInfo.value = JSON.parse(localStorage.getItem("userInfo") || "{}"); userLanguage.value = userInfo.value?.language; + if (openai_api_type.value === "local") { + KbAppAPI.localModelList().then((res) => { + modelTypes.value = res; + }); + } KbAppAPI.getdUserModel().then((res) => { - ruleForm.value = res; + if (res.is_online) { + openai_api_type.value = "online"; + ruleForm.value = res; + ruleFormLocal.value = {}; + } else { + openai_api_type.value = "local"; + ruleFormLocal.value = res; + initModelTYpe.value = res.id; + ruleForm.value = { max_tokens: 1024 }; + } }); }); +watch(openai_api_type, (val) => { + if (ruleFormRef.value) { + ruleFormRef.value.resetFields(); + } else { + console.warn("Form instance is not initialized yet."); + } + if (val === "local") { + KbAppAPI.localModelList().then((res) => { + modelTypes.value = res; + }); + } +}); + watch( ruleForm, () => { @@ -263,32 +402,65 @@ const handlLogout = () => { const handleFormValidate = (prop: any, isValid: boolean, message: string) => { formValidateStatus.value[prop] = isValid; }; - +let submitLoading = ref(false); const handleConfirmCreateModel = async (formData: FormInstance | undefined) => { if (!formData) return; + if(openai_api_type.value === "local"){ + + if(initModelTYpe.value===ruleFormLocal.value.id && initModelTYpe.value===ruleFormLocal.value.model_name){ + ElMessage({ + showClose: true, + message:"请勿重复配置", + icon: IconError, + customClass: "o-message--error", + duration: 3000, + }); + return; + } + } + await formData.validate((valid, fields) => { if (valid) { - KbAppAPI.addUserModel({ - max_tokens: ruleForm.value.max_tokens || 1024, - model_name: ruleForm.value.model_name, - openai_api_base: ruleForm.value.openai_api_base, - openai_api_key: ruleForm.value.openai_api_key, - }).then((res) => { - modelVisible.value = false; - ElMessage({ - showClose: true, - message: t("opsMessage.modifSuccess"), - icon: IconSuccess, - customClass: "o-message--success", - duration: 3000, + submitLoading.value = true; + let param = {}; + if (openai_api_type.value === "online") { + param = { + max_tokens: ruleForm.value.max_tokens || 1024, + model_name: ruleForm.value.model_name, + openai_api_base: ruleForm.value.openai_api_base, + openai_api_key: ruleForm.value.openai_api_key, + is_online: true, + }; + } else { + param = { + id: ruleFormLocal.value.model_name, + is_online: false, + }; + } + KbAppAPI.addUserModel(param) + .then((res) => { + modelVisible.value = false; + ElMessage({ + showClose: true, + message: t("opsMessage.modifSuccess"), + icon: IconSuccess, + customClass: "o-message--success", + duration: 3000, + }); + handleModelDialog(); + }) + .finally(() => { + submitLoading.value = false; }); - }); } }); }; const handleModelDialog = () => { - ruleFormRef.value.resetFields(); + ruleFormRef.value?.resetFields(); + ruleFormRefLocal.value?.resetFields(); + ruleForm.value = {}; + ruleFormLocal.value = {}; formValidateStatus.value = { openai_api_key: true, openai_api_base: true, @@ -299,10 +471,15 @@ const handleModelDialog = () => { const handleModelVisible = (visible: boolean) => { KbAppAPI.getdUserModel().then((res) => { - ruleForm.value = { - ...res, - max_tokens: res?.max_tokens || 1024, - }; + if(res.is_online){ + ruleForm.value = { + ...res, + max_tokens: res?.max_tokens || 1024, + }; + }else{ + initModelTYpe.value = res.id; + ruleFormLocal.value = res; + } }); modelVisible.value = visible; }; @@ -377,6 +554,15 @@ const handleModelVisible = (visible: boolean) => { .model-dialog { padding: 0 !important; + .model-radio { + margin: 0 0 16px 0; + } + .form-container { + height: 200px; + .el-select__placeholder { + font-size: 12px; + } + } .el-dialog__title { font-family: "HarmonyOS Sans SC Bold", sans-serif !important; font-weight: 800; @@ -389,6 +575,8 @@ const handleModelVisible = (visible: boolean) => { margin-right: 0 !important; } .model-ops-btn { + display: flex; + justify-content: center; height: 24px !important; min-height: unset !important; margin-bottom: 24px; @@ -458,4 +646,14 @@ const handleModelVisible = (visible: boolean) => { } } } +.el-select-dropdown__item, +.is-hovering { + color: black !important; + display: flex; + align-items: center; +} +.el-select-dropdown__item:hover { + color: black !important; + background-color: var(--o-bg-color-dark) !important; +} diff --git a/src/lang/package/en.ts b/src/lang/package/en.ts index c830ffe..729f972 100644 --- a/src/lang/package/en.ts +++ b/src/lang/package/en.ts @@ -127,6 +127,8 @@ export default { modelConfig: "Configure Model", modelType: "Model", maxToken: "Maximum Token Limit", + localModel:'Local Model', + onlineModel:'Online Model', }, btnText: { confirm: "Ok", diff --git a/src/lang/package/zh-cn.ts b/src/lang/package/zh-cn.ts index e19329b..e723df3 100644 --- a/src/lang/package/zh-cn.ts +++ b/src/lang/package/zh-cn.ts @@ -132,6 +132,8 @@ export default { modelType: "模型类型", modelConfig: "模型配置", maxToken: "最大Token数", + localModel:'本地模型', + onlineModel:'在线模型', }, btnText: { confirm: "确定", diff --git a/src/views/login/index.vue b/src/views/login/index.vue index 0492e21..eb0d56b 100644 --- a/src/views/login/index.vue +++ b/src/views/login/index.vue @@ -88,6 +88,7 @@ :rules="signinRules" class="login-form" > +
@@ -194,6 +195,7 @@
+
{ ], email: [ { - required: true, + required: false, trigger: ["blur", "change"], message: t("login.message.email.emailMsg"), }, @@ -446,6 +448,7 @@ const handleBackLogin = () => { * 注册请求 */ const handleSigInSubmit = () => { + console.log(signinData.value,signinFormRef); signinFormRef.value?.validate((valid) => { if (valid) { signinLoding.value = true; -- Gitee From 95a67553746084b1615941ac686403afab04c872 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E5=A8=9C?= Date: Mon, 17 Feb 2025 10:02:43 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E6=9C=AC=E5=9C=B0=E6=A8=A1=E5=9E=8B?= =?UTF-8?q?=E6=8F=90=E4=BA=A4=E6=97=B6=E5=88=A4=E6=96=AD=E9=80=BB=E8=BE=91?= =?UTF-8?q?=E4=BF=AE=E6=94=B9&=E5=AF=BC=E5=85=A5=E4=BB=BB=E5=8A=A1?= =?UTF-8?q?=E5=88=97=E8=A1=A8=E6=96=87=E6=9C=AC=E6=9B=BF=E6=8D=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/UserHeaderBar/headerCom.vue | 31 +++++++++++----------- src/lang/package/en.ts | 2 +- src/lang/package/zh-cn.ts | 2 +- 3 files changed, 17 insertions(+), 18 deletions(-) diff --git a/src/components/UserHeaderBar/headerCom.vue b/src/components/UserHeaderBar/headerCom.vue index 44e54e2..1b4272c 100644 --- a/src/components/UserHeaderBar/headerCom.vue +++ b/src/components/UserHeaderBar/headerCom.vue @@ -80,10 +80,7 @@ >
- + = ref([ @@ -405,16 +402,18 @@ const handleFormValidate = (prop: any, isValid: boolean, message: string) => { let submitLoading = ref(false); const handleConfirmCreateModel = async (formData: FormInstance | undefined) => { if (!formData) return; - if(openai_api_type.value === "local"){ - - if(initModelTYpe.value===ruleFormLocal.value.id && initModelTYpe.value===ruleFormLocal.value.model_name){ + if (openai_api_type.value === "local") { + if ( + ruleFormLocal.value.model_name.length < 36 || + initModelTYpe.value === ruleFormLocal.value.model_name + ) { ElMessage({ - showClose: true, - message:"请勿重复配置", - icon: IconError, - customClass: "o-message--error", - duration: 3000, - }); + showClose: true, + message: "请勿重复配置", + icon: IconError, + customClass: "o-message--error", + duration: 3000, + }); return; } } @@ -471,12 +470,12 @@ const handleModelDialog = () => { const handleModelVisible = (visible: boolean) => { KbAppAPI.getdUserModel().then((res) => { - if(res.is_online){ + if (res.is_online) { ruleForm.value = { ...res, max_tokens: res?.max_tokens || 1024, }; - }else{ + } else { initModelTYpe.value = res.id; ruleFormLocal.value = res; } diff --git a/src/lang/package/en.ts b/src/lang/package/en.ts index 729f972..48a4f20 100644 --- a/src/lang/package/en.ts +++ b/src/lang/package/en.ts @@ -83,7 +83,7 @@ export default { supAddCategoris: "A maximum of 10 document categories can be added.", fileNum: "Document Count", uploadTime: "Create Time", - importTaskList: "Import Task List", + importTaskList: "File upload list", exportTaskList: "Export Task List", uploadIng: "Uploading", uploadFailedNet: "Upload failed.Check the netwok.", diff --git a/src/lang/package/zh-cn.ts b/src/lang/package/zh-cn.ts index e723df3..bb1e2a6 100644 --- a/src/lang/package/zh-cn.ts +++ b/src/lang/package/zh-cn.ts @@ -88,7 +88,7 @@ export default { supAddCategoris: "最多支持添加10个文档信息类别", fileNum: "文档数量", uploadTime: "创建时间", - importTaskList: "导入任务列表", + importTaskList: "文件上传列表", exportTaskList: "导出任务列表", uploadIng: "上传中", uploadFailedNet: "上传失败,请检查网络", -- Gitee