Merge branch 'master' of http://192.168.5.5:10010/r/web/flow_web
| | |
| | | NProgress.start(); |
| | | const userStore = useUserStore(); |
| | | next(); |
| | | // if (isLogin()) { |
| | | // if (userStore.role) { |
| | | // next(); |
| | | // } else { |
| | | // try { |
| | | // await userStore.info(); |
| | | // next(); |
| | | // } catch (error) { |
| | | // await userStore.logout(); |
| | | // next({ |
| | | // name: 'login', |
| | | // query: { |
| | | // redirect: to.name, |
| | | // ...to.query, |
| | | // } as LocationQueryRaw, |
| | | // }); |
| | | // } |
| | | // } |
| | | // } else { |
| | | // if (to.name === 'login') { |
| | | // next(); |
| | | // return; |
| | | // } |
| | | // next({ |
| | | // name: 'login', |
| | | // query: { |
| | | // redirect: to.name, |
| | | // ...to.query, |
| | | // } as LocationQueryRaw, |
| | | // }); |
| | | // } |
| | | if (isLogin()) { |
| | | if (userStore.role) { |
| | | next(); |
| | | } else { |
| | | try { |
| | | await userStore.info(); |
| | | next(); |
| | | } catch (error) { |
| | | await userStore.logout(); |
| | | next({ |
| | | name: 'login', |
| | | query: { |
| | | redirect: to.name, |
| | | ...to.query, |
| | | } as LocationQueryRaw, |
| | | }); |
| | | } |
| | | } |
| | | } else { |
| | | if (to.name === 'login') { |
| | | next(); |
| | | return; |
| | | } |
| | | next({ |
| | | name: 'login', |
| | | query: { |
| | | redirect: to.name, |
| | | ...to.query, |
| | | } as LocationQueryRaw, |
| | | }); |
| | | } |
| | | }); |
| | | } |
| | |
| | | import { UserState } from './types'; |
| | | import useAppStore from '../app'; |
| | | |
| | | |
| | | const useUserStore = defineStore('user', { |
| | | state: (): UserState => ({ |
| | | name: undefined, |
| | |
| | | }, |
| | | |
| | | // Login |
| | | async login(loginForm: LoginData) { |
| | | async login(loginForm: LoginData):string { |
| | | try { |
| | | const res = await userLogin(loginForm); |
| | | setToken(res.data.access_token); |
| | |
| | | this.resources=res.data.resources; |
| | | setUserInfo(JSON.stringify(userInfo)); |
| | | setUserResources(JSON.stringify(this.resources)) |
| | | for (const r of this.resources) { |
| | | if (r.menuType == 0) { |
| | | return r.component |
| | | } |
| | | } |
| | | } catch (err) { |
| | | clearToken(); |
| | | throw err; |
| | |
| | | import { onMounted, onBeforeMount, reactive, ref } from "vue"; |
| | | import { Message } from "@arco-design/web-vue"; |
| | | import { queryModelList,kbUpdate } from "@/api/kbList"; |
| | | import message from "@arco-design/web-vue/es/message"; |
| | | |
| | | |
| | | const props = defineProps(['kbtenantInfo']) |
| | | // const emit = defineEmits(['upTabdateItem']) |
| | | const kbtenantInfo = props.kbtenantInfo; |
| | | // 解析方法列表 |
| | | let parser_ids = kbtenantInfo.parser_ids.split(",").map((item) => { |
| | | let parser_ids = props.kbtenantInfo.parser_ids.split(",").map((item) => { |
| | | const [value1, value2] = item.split(":"); |
| | | return { |
| | | name: value2, |
| | |
| | | if (errors){ |
| | | return; |
| | | } |
| | | console.log(form); |
| | | let parms = { |
| | | name: form.name, |
| | | avatar: form.avatar, |
| | |
| | | }, |
| | | kb_id: kbObj.id, |
| | | } |
| | | if(form.layout_recognize){ |
| | | if(form.use_raptor){ |
| | | parms.parser_config.raptor = { |
| | | use_raptor: form.use_raptor, |
| | | prompt: form.prompt, |
| | |
| | | random_seed: form.random_seed, |
| | | }; |
| | | } |
| | | |
| | | |
| | | try { |
| | | |
| | | const data = await kbUpdate(parms); |
| | |
| | | Message.success("配置成功"); |
| | | // window.location.reload(); |
| | | } |
| | | // visible.value = false; |
| | | // emit('upTabdateItem') |
| | | |
| | | } catch (err) { |
| | | // you can report use errorHandler or other |
| | | Message.error(err.message); |
| | | } |
| | | |
| | | |
| | |
| | | form.random_seed = Math.floor(Math.random() * (max - min + 1)) + min; |
| | | } |
| | | |
| | | const onChangeRAPTOR = () => { |
| | | console.log(form); |
| | | }; |
| | | |
| | | |
| | | const handleClick = () => { |
| | | visible.value = true; |
| | | }; |
| | | const handleBeforeOk = (done) => { |
| | | formRef.value.validate().then(res => { |
| | | console.log("form:", form); |
| | |
| | | } |
| | | }); |
| | | }; |
| | | const handleCancel = () => { |
| | | visible.value = false; |
| | | }; |
| | | |
| | | const handleOpened =(el) => { |
| | | Object.assign(form,{ |
| | | |
| | |
| | | }; |
| | | |
| | | const changekbObj = (value) => { |
| | | formRef.value.resetFields(); |
| | | kbObj = value; |
| | | console.log(kbObj, 'kbObj'); |
| | | // if(kbObj.avatar){ |
| | |
| | | let configObj = { |
| | | name: kbObj.name, |
| | | avatar: kbObj.avatar, |
| | | chunk_token_num: kbObj.parser_config ? kbObj.parser_config.chunk_token_num : 128, |
| | | pages: kbObj.pages, |
| | | chunk_token_num: kbObj.parser_config.chunk_token_num, |
| | | pages: kbObj.parser_config.pages, |
| | | description: kbObj.description, |
| | | language: "English", |
| | | permission: kbObj.permission, |
| | | embd_id: "BAAI/bge-large-zh-v1.5", |
| | | embd_id: props.kbtenantInfo.embd_id || kbObj.embd_id, |
| | | parser_id: kbObj.parser_id, |
| | | layout_recognize: kbObj.parser_config ? kbObj.parser_config.layout_recognize:false, |
| | | layout_recognize: true, |
| | | } |
| | | let raptor = {} |
| | | if(kbObj.parser_config && kbObj.parser_config.raptor){ |
| | |
| | | Object.assign(form,{ |
| | | ...configObj, |
| | | ...raptor, |
| | | use_raptor: kbObj.parser_config.raptor.use_raptor, |
| | | }); |
| | | }else{ |
| | | Object.assign(form,configObj); |
| | | } |
| | | |
| | | console.log(form,'配置页面表单信息'); |
| | | } |
| | | |
| | | defineExpose({ |
| | |
| | | setLoading(true); |
| | | try { |
| | | const data = await queryKbDocumentList(params); |
| | | console.log(data, 'data'); |
| | | if(data.code=='0'){ |
| | | parser_ids = kbtenantInfo.parser_ids.split(',').reduce((acc, pair) => { |
| | | const [key, value] = pair.split(':'); |
| | |
| | | parser_id: parser_ids[item.parser_id], |
| | | }; |
| | | }); |
| | | console.log(renderData.value, 'renderData'); |
| | | // console.log(renderData.value, 'renderData'); |
| | | |
| | | pagination.current = params.page; |
| | | pagination.total = data.data.total; |
| | |
| | | setLoading(true); |
| | | try { |
| | | const { data } = await queryKbList(params); |
| | | console.log(data, 'data'); |
| | | // console.log(data, 'data'); |
| | | tabs.value = data; |
| | | console.log(tabs.value, 'tabs'); |
| | | // console.log(tabs.value, 'tabs'); |
| | | if(tabs.value.length>0 && tabs.value[0]){ |
| | | kbobj = tabs.value[0] |
| | | kbId = kbobj.id; |
| | |
| | | delete formObj.top_k; |
| | | delete formObj.rerank_id; |
| | | } |
| | | try { |
| | | const data = await kbretrievalTest(formObj); |
| | | }catch (err){ |
| | | Message.error(err.message); |
| | | } |
| | | |
| | | } |
| | | |
| | | const handleClick = () => { |
| | |
| | | <template> |
| | | <div class="login-form-wrapper"> |
| | | <div class="login-form-title">{{ $t('login.form.title') }}</div> |
| | | <div class="login-form-title">{{ $t("login.form.title") }}</div> |
| | | <!-- <div class="login-form-sub-title">{{ $t('login.form.title') }}</div>--> |
| | | <div class="login-form-error-msg">{{ errorMessage }}</div> |
| | | <a-form |
| | |
| | | :model-value="loginConfig.rememberPassword" |
| | | @change="setRememberPassword as any" |
| | | > |
| | | {{ $t('login.form.rememberPassword') }} |
| | | {{ $t("login.form.rememberPassword") }} |
| | | </a-checkbox> |
| | | <a-link>{{ $t('login.form.forgetPassword') }}</a-link> |
| | | <a-link>{{ $t("login.form.forgetPassword") }}</a-link> |
| | | </div> |
| | | <a-button type="primary" html-type="submit" long :loading="loading"> |
| | | {{ $t('login.form.login') }} |
| | | {{ $t("login.form.login") }} |
| | | </a-button> |
| | | <!-- <a-button type="text" long class="login-form-register-btn"> |
| | | {{ $t('login.form.register') }} |
| | |
| | | </template> |
| | | |
| | | <script lang="ts" setup> |
| | | import { ref, reactive } from 'vue'; |
| | | import { useRouter } from 'vue-router'; |
| | | import { Message } from '@arco-design/web-vue'; |
| | | import { ValidatedError } from '@arco-design/web-vue/es/form/interface'; |
| | | import { useI18n } from 'vue-i18n'; |
| | | import { useStorage } from '@vueuse/core'; |
| | | import { useUserStore } from '@/store'; |
| | | import useLoading from '@/hooks/loading'; |
| | | import type { LoginData } from '@/api/user'; |
| | | import { rsaPsw } from '@/utils/ras'; |
| | | import { reactive, ref } from "vue"; |
| | | import { useRouter } from "vue-router"; |
| | | import { Message } from "@arco-design/web-vue"; |
| | | import { ValidatedError } from "@arco-design/web-vue/es/form/interface"; |
| | | import { useI18n } from "vue-i18n"; |
| | | import { useStorage } from "@vueuse/core"; |
| | | import { useUserStore } from "@/store"; |
| | | import useLoading from "@/hooks/loading"; |
| | | import type { LoginData } from "@/api/user"; |
| | | import { rsaPsw } from "@/utils/ras"; |
| | | |
| | | const router = useRouter(); |
| | | const { t } = useI18n(); |
| | | const errorMessage = ref(''); |
| | | const errorMessage = ref(""); |
| | | const { loading, setLoading } = useLoading(); |
| | | const userStore = useUserStore(); |
| | | |
| | | const loginConfig = useStorage('login-config', { |
| | | const loginConfig = useStorage("login-config", { |
| | | rememberPassword: true, |
| | | email: '', // 演示默认值 |
| | | password: '', // demo default value |
| | | email: "", // 演示默认值 |
| | | password: "" // demo default value |
| | | }); |
| | | const userInfo = reactive({ |
| | | email: '', // 演示默认值 |
| | | password: '', // demo default value |
| | | email: "", // 演示默认值 |
| | | password: "" // demo default value |
| | | }); |
| | | |
| | | const handleSubmit = async ({ |
| | | errors, |
| | | values, |
| | | values |
| | | }: { |
| | | errors: Record<string, ValidatedError> | undefined; |
| | | values: Record<string, any>; |
| | |
| | | setLoading(true); |
| | | try { |
| | | const rsaPassWord = rsaPsw(values.password) as string; |
| | | console.log(values, '登录信息'); |
| | | await userStore.login({ |
| | | console.log(values, "登录信息"); |
| | | let goto = await userStore.login({ |
| | | email: values.email, |
| | | password: rsaPassWord, |
| | | password: rsaPassWord |
| | | } as LoginData); |
| | | const { redirect, ...othersQuery } = router.currentRoute.value.query; |
| | | router.push({ |
| | | name: 'knowledgeLib', |
| | | name: goto, |
| | | query: { |
| | | ...othersQuery, |
| | | }, |
| | | ...othersQuery |
| | | } |
| | | }); |
| | | Message.success(t('登录成功')); |
| | | Message.success(t("登录成功")); |
| | | const { rememberPassword } = loginConfig.value; |
| | | const { email, password } = values; |
| | | // 实际生产环境需要进行加密存储。 |
| | | // The actual production environment requires encrypted storage. |
| | | loginConfig.value.email = rememberPassword ? email : ''; |
| | | loginConfig.value.password = rememberPassword ? password : ''; |
| | | loginConfig.value.email = rememberPassword ? email : ""; |
| | | loginConfig.value.password = rememberPassword ? password : ""; |
| | | } catch (err) { |
| | | errorMessage.value = (err as Error).message; |
| | | } finally { |
| | |
| | | |
| | | <style lang="less" scoped> |
| | | .login-form { |
| | | &-wrapper { |
| | | |
| | | & |
| | | -wrapper { |
| | | width: 320px; |
| | | } |
| | | |
| | | &-title { |
| | | & |
| | | -title { |
| | | color: var(--color-text-1); |
| | | font-weight: 500; |
| | | font-size: 24px; |
| | | line-height: 32px; |
| | | } |
| | | |
| | | &-sub-title { |
| | | & |
| | | -sub-title { |
| | | color: var(--color-text-3); |
| | | font-size: 16px; |
| | | line-height: 24px; |
| | | } |
| | | |
| | | &-error-msg { |
| | | & |
| | | -error-msg { |
| | | height: 32px; |
| | | color: rgb(var(--red-6)); |
| | | line-height: 32px; |
| | | } |
| | | |
| | | &-password-actions { |
| | | & |
| | | -password-actions { |
| | | display: flex; |
| | | justify-content: space-between; |
| | | } |
| | | |
| | | &-register-btn { |
| | | & |
| | | -register-btn { |
| | | color: var(--color-text-3) !important; |
| | | } |
| | | |
| | | } |
| | | </style> |