feat: Update function setting style

This commit is contained in:
wangdan-fit2cloud 2025-03-17 14:04:25 +08:00 committed by GitHub
parent 6a8d2c1f9c
commit 03274d9ee5
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
8 changed files with 123 additions and 119 deletions

View File

@ -30,7 +30,7 @@ export default {
}, },
form: { form: {
functionName: { functionName: {
label: '函数名称', label: '名称',
placeholder: '请输入函数名称', placeholder: '请输入函数名称',
requiredMessage: '请输入函数名称' requiredMessage: '请输入函数名称'
}, },

View File

@ -30,7 +30,7 @@ export default {
}, },
form: { form: {
functionName: { functionName: {
label: '函數名稱', label: '名稱',
placeholder: '請輸入函數名稱', placeholder: '請輸入函數名稱',
requiredMessage: '請輸入函數名稱' requiredMessage: '請輸入函數名稱'
}, },

View File

@ -1,7 +1,7 @@
export const defaultIcon = '/ui/favicon.ico' export const defaultIcon = '/ui/favicon.ico'
// 是否显示字母 / icon // 是否显示字母 / icon
export function isAppIcon(url: string | undefined) { export function isAppIcon(url: String | undefined) {
return url === defaultIcon ? '' : url return url === defaultIcon ? '' : url
} }

View File

@ -131,32 +131,29 @@
v-model="form.dataset_setting.no_references_setting.status" v-model="form.dataset_setting.no_references_setting.status"
class="radio-block" class="radio-block"
> >
<div> <el-radio value="ai_questioning">
<el-radio value="ai_questioning"> <p>
<p> {{ $t('views.application.applicationForm.dialog.continueQuestioning') }}
{{ $t('views.application.applicationForm.dialog.continueQuestioning') }} </p>
</p> </el-radio>
</el-radio>
</div> <el-radio value="designated_answer">
<div> <p>{{ $t('views.application.applicationForm.dialog.provideAnswer') }}</p>
<el-radio value="designated_answer"> <el-form-item
<p>{{ $t('views.application.applicationForm.dialog.provideAnswer') }}</p> v-if="
<el-form-item form.dataset_setting.no_references_setting.status === 'designated_answer'
v-if=" "
form.dataset_setting.no_references_setting.status === 'designated_answer' prop="designated_answer"
" >
prop="designated_answer" <el-input
> v-model="noReferencesform.designated_answer"
<el-input :rows="2"
v-model="noReferencesform.designated_answer" type="textarea"
:rows="2" maxlength="2048"
type="textarea" :placeholder="defaultValue['designated_answer']"
maxlength="2048" />
:placeholder="defaultValue['designated_answer']" </el-form-item>
/> </el-radio>
</el-form-item>
</el-radio>
</div>
</el-radio-group> </el-radio-group>
</el-form> </el-form>
</el-form-item> </el-form-item>

View File

@ -1,6 +1,6 @@
<template> <template>
<el-dialog <el-dialog
:title="$t('views.applicationOverview.appInfo.EditAvatarDialog.title')" :title="`Logo ${$t('common.setting')}`"
v-model="dialogVisible" v-model="dialogVisible"
:close-on-click-modal="false" :close-on-click-modal="false"
:close-on-press-escape="false" :close-on-press-escape="false"

View File

@ -20,47 +20,54 @@
:label="$t('views.functionLib.functionForm.form.functionName.label')" :label="$t('views.functionLib.functionForm.form.functionName.label')"
prop="name" prop="name"
> >
<div v-if="form.id" <div class="flex w-full">
class="edit-avatar mr-12" <div
@mouseenter="showEditIcon = true" v-if="form.id"
@mouseleave="showEditIcon = false" class="edit-avatar mr-12"
> @mouseenter="showEditIcon = true"
<AppAvatar @mouseleave="showEditIcon = false"
v-if="isAppIcon(form.icon as string)"
:id="form.id"
shape="square"
:size="32"
style="background: none"
> >
<img :src="form.icon as string" alt="" /> <AppAvatar
v-if="isAppIcon(form.icon)"
:id="form.id"
shape="square"
:size="32"
style="background: none"
>
<img :src="String(form.icon)" alt="" />
</AppAvatar>
<AppAvatar
v-else-if="form.name"
:id="form.id"
:name="form.name"
pinyinColor
shape="square"
:size="32"
/>
<AppAvatar
v-if="showEditIcon"
:id="form.id"
shape="square"
class="edit-mask"
:size="32"
@click="openEditAvatar"
>
<el-icon><EditPen /></el-icon>
</AppAvatar>
</div>
<AppAvatar shape="square" style="background: #34c724" class="mr-12" v-else>
<img src="@/assets/icon_function_outlined.svg" style="width: 75%" alt="" />
</AppAvatar> </AppAvatar>
<AppAvatar <el-input
v-else-if="form.name" v-model="form.name"
:id="form.id" :placeholder="$t('views.functionLib.functionForm.form.functionName.placeholder')"
:name="form.name" maxlength="64"
pinyinColor show-word-limit
shape="square" @blur="form.name = form.name?.trim()"
:size="32"
/> />
<AppAvatar
v-if="showEditIcon"
:id="form.id"
shape="square"
class="edit-mask"
:size="32"
@click="openEditAvatar"
>
<el-icon><EditPen /></el-icon>
</AppAvatar>
</div> </div>
<el-input
v-model="form.name"
:placeholder="$t('views.functionLib.functionForm.form.functionName.placeholder')"
maxlength="64"
show-word-limit
@blur="form.name = form.name?.trim()"
/>
</el-form-item> </el-form-item>
<el-form-item :label="$t('views.functionLib.functionForm.form.functionDescription.label')"> <el-form-item :label="$t('views.functionLib.functionForm.form.functionDescription.label')">
<el-input <el-input
v-model="form.desc" v-model="form.desc"
@ -72,7 +79,7 @@
@blur="form.desc = form.desc?.trim()" @blur="form.desc = form.desc?.trim()"
/> />
</el-form-item> </el-form-item>
<!-- <!--
<el-form-item prop="permission_type"> <el-form-item prop="permission_type">
<template #label> <template #label>
<span>{{ $t('views.functionLib.functionForm.form.permission_type.label') }}</span> <span>{{ $t('views.functionLib.functionForm.form.permission_type.label') }}</span>
@ -110,7 +117,7 @@
</el-button> </el-button>
</div> </div>
<el-table :data="form.init_field_list" class="mb-16"> <el-table :data="form.init_field_list" class="mb-16">
<el-table-column prop="field" :label="$t('dynamicsForm.paramForm.field.label')" > <el-table-column prop="field" :label="$t('dynamicsForm.paramForm.field.label')">
<template #default="{ row }"> <template #default="{ row }">
<span :title="row.field" class="ellipsis-1">{{ row.field }}</span> <span :title="row.field" class="ellipsis-1">{{ row.field }}</span>
</template> </template>
@ -266,7 +273,7 @@
<FunctionDebugDrawer ref="FunctionDebugDrawerRef" /> <FunctionDebugDrawer ref="FunctionDebugDrawerRef" />
<FieldFormDialog ref="FieldFormDialogRef" @refresh="refreshFieldList" /> <FieldFormDialog ref="FieldFormDialogRef" @refresh="refreshFieldList" />
<UserFieldFormDialog ref="UserFieldFormDialogRef" @refresh="refreshInitFieldList"/> <UserFieldFormDialog ref="UserFieldFormDialogRef" @refresh="refreshInitFieldList" />
<EditAvatarDialog ref="EditAvatarDialogRef" @refresh="refreshFunctionLib" /> <EditAvatarDialog ref="EditAvatarDialogRef" @refresh="refreshFunctionLib" />
</el-drawer> </el-drawer>
</template> </template>
@ -283,8 +290,8 @@ import { cloneDeep } from 'lodash'
import { PermissionType, PermissionDesc } from '@/enums/model' import { PermissionType, PermissionDesc } from '@/enums/model'
import { t } from '@/locales' import { t } from '@/locales'
import UserFieldFormDialog from '@/workflow/nodes/base-node/component/UserFieldFormDialog.vue' import UserFieldFormDialog from '@/workflow/nodes/base-node/component/UserFieldFormDialog.vue'
import {isAppIcon} from "@/utils/application"; import { isAppIcon } from '@/utils/application'
import EditAvatarDialog from "./EditAvatarDialog.vue"; import EditAvatarDialog from './EditAvatarDialog.vue'
const props = defineProps({ const props = defineProps({
title: String title: String
@ -402,7 +409,6 @@ function refreshFieldList(data: any) {
currentIndex.value = null currentIndex.value = null
} }
function openAddInitDialog(data?: any, index?: any) { function openAddInitDialog(data?: any, index?: any) {
if (typeof index !== 'undefined') { if (typeof index !== 'undefined') {
currentIndex.value = index currentIndex.value = index
@ -434,7 +440,6 @@ function openEditAvatar() {
EditAvatarDialogRef.value.open(form.value) EditAvatarDialogRef.value.open(form.value)
} }
const submit = async (formEl: FormInstance | undefined) => { const submit = async (formEl: FormInstance | undefined) => {
if (!formEl) return if (!formEl) return
await formEl.validate((valid: any) => { await formEl.validate((valid: any) => {

View File

@ -6,6 +6,7 @@
:close-on-press-escape="false" :close-on-press-escape="false"
:destroy-on-close="true" :destroy-on-close="true"
append-to-body append-to-body
width="450"
> >
<el-form <el-form
label-position="top" label-position="top"
@ -14,17 +15,20 @@
:model="form" :model="form"
require-asterisk-position="right" require-asterisk-position="right"
> >
<el-radio-group v-model="form.permission_type"> <el-radio-group v-model="form.permission_type" class="radio-block">
<el-radio value="PRIVATE"> <el-radio value="PRIVATE" size="large" class="mb-16">
{{ $t('common.private') }} {{ $t('common.private') }}
{{ $t('views.template.templateForm.form.permissionType.privateDesc') }} <el-text type="info">{{
$t('views.template.templateForm.form.permissionType.privateDesc')
}}</el-text>
</el-radio> </el-radio>
<el-radio value="PUBLIC"> <el-radio value="PUBLIC" size="large">
{{ $t('common.public') }} {{ $t('common.public') }}
{{ $t('views.template.templateForm.form.permissionType.publicDesc') }} <el-text type="info">{{
$t('views.template.templateForm.form.permissionType.publicDesc')
}}</el-text>
</el-radio> </el-radio>
</el-radio-group> </el-radio-group>
</el-form> </el-form>
<template #footer> <template #footer>
<span class="dialog-footer"> <span class="dialog-footer">
@ -44,7 +48,6 @@ import { t } from '@/locales'
import functionLibApi from '@/api/function-lib' import functionLibApi from '@/api/function-lib'
import { MsgSuccess } from '@/utils/message' import { MsgSuccess } from '@/utils/message'
const emit = defineEmits(['refresh']) const emit = defineEmits(['refresh'])
const fieldFormRef = ref() const fieldFormRef = ref()
@ -89,12 +92,11 @@ const submit = async (formEl: FormInstance | undefined) => {
if (!formEl) return if (!formEl) return
await formEl.validate((valid) => { await formEl.validate((valid) => {
if (valid) { if (valid) {
functionLibApi.putFunctionLib(form.value?.id as string, form.value, loading) functionLibApi.putFunctionLib(form.value?.id as string, form.value, loading).then((res) => {
.then((res) => { MsgSuccess(t('common.editSuccess'))
MsgSuccess(t('common.editSuccess')) emit('refresh')
emit('refresh') dialogVisible.value = false
dialogVisible.value = false })
})
} }
}) })
} }

View File

@ -1,6 +1,6 @@
<template> <template>
<div class="function-lib-list-container p-24" style="padding-top: 16px"> <div class="function-lib-list-container p-24" style="padding-top: 16px">
<el-tabs v-model="functionType" > <el-tabs v-model="functionType">
<el-tab-pane :label="$t('views.functionLib.title')" name="PUBLIC"></el-tab-pane> <el-tab-pane :label="$t('views.functionLib.title')" name="PUBLIC"></el-tab-pane>
<el-tab-pane :label="$t('views.functionLib.internalTitle')" name="INTERNAL"></el-tab-pane> <el-tab-pane :label="$t('views.functionLib.internalTitle')" name="INTERNAL"></el-tab-pane>
</el-tabs> </el-tabs>
@ -45,7 +45,15 @@
:loading="loading" :loading="loading"
> >
<el-row :gutter="15"> <el-row :gutter="15">
<el-col :xs="24" :sm="12" :md="8" :lg="6" :xl="6" class="mb-16" v-if="functionType === 'PUBLIC'"> <el-col
:xs="24"
:sm="12"
:md="8"
:lg="6"
:xl="6"
class="mb-16"
v-if="functionType === 'PUBLIC'"
>
<el-card shadow="hover" class="application-card-add" style="--el-card-padding: 8px"> <el-card shadow="hover" class="application-card-add" style="--el-card-padding: 8px">
<div class="card-add-button flex align-center cursor p-8" @click="openCreateDialog()"> <div class="card-add-button flex align-center cursor p-8" @click="openCreateDialog()">
<AppIcon iconName="app-add-application" class="mr-8"></AppIcon> <AppIcon iconName="app-add-application" class="mr-8"></AppIcon>
@ -132,13 +140,16 @@
</div> </div>
<template #footer> <template #footer>
<div class="footer-content flex-between"> <div class="footer-content flex-between">
<div><span v-if="item.template_id"> {{ $t('common.author') }}: MaxKB</span></div> <div>
<span v-if="item.template_id"> {{ $t('common.author') }}: MaxKB</span>
</div>
<div @click.stop> <div @click.stop>
<el-switch <el-switch
:disabled="item.permission_type === 'PUBLIC' && !canEdit(item)" :disabled="item.permission_type === 'PUBLIC' && !canEdit(item)"
v-model="item.is_active" v-model="item.is_active"
@change="changeState($event, item)" @change="changeState($event, item)"
size="small" size="small"
class="mr-4"
/> />
<el-dropdown trigger="click"> <el-dropdown trigger="click">
<el-button text @click.stop> <el-button text @click.stop>
@ -152,7 +163,7 @@
@click.stop="copyFunctionLib(item)" @click.stop="copyFunctionLib(item)"
> >
<AppIcon iconName="app-copy"></AppIcon> <AppIcon iconName="app-copy"></AppIcon>
{{$t('common.copy')}} {{ $t('common.copy') }}
</el-dropdown-item> </el-dropdown-item>
<el-dropdown-item <el-dropdown-item
:disabled="item.permission_type === 'PUBLIC' && !canEdit(item)" :disabled="item.permission_type === 'PUBLIC' && !canEdit(item)"
@ -165,7 +176,7 @@
:disabled="item.permission_type === 'PUBLIC' && !canEdit(item)" :disabled="item.permission_type === 'PUBLIC' && !canEdit(item)"
@click.stop="configPermission(item)" @click.stop="configPermission(item)"
> >
<AppIcon iconName="app-copy"></AppIcon> <el-icon><User /></el-icon>
{{ $t('views.functionLib.functionForm.form.permission_type.label') }} {{ $t('views.functionLib.functionForm.form.permission_type.label') }}
</el-dropdown-item> </el-dropdown-item>
<el-dropdown-item <el-dropdown-item
@ -174,7 +185,7 @@
@click.stop="exportFunctionLib(item)" @click.stop="exportFunctionLib(item)"
> >
<AppIcon iconName="app-export"></AppIcon> <AppIcon iconName="app-export"></AppIcon>
{{$t('common.export')}} {{ $t('common.export') }}
</el-dropdown-item> </el-dropdown-item>
<el-dropdown-item <el-dropdown-item
:disabled="item.permission_type === 'PUBLIC' && !canEdit(item)" :disabled="item.permission_type === 'PUBLIC' && !canEdit(item)"
@ -218,11 +229,7 @@
/> />
</template> </template>
<div class="status-button"> <div class="status-button">
<el-tag <el-tag class="info-tag" v-if="item.added" style="height: 22px">
class="info-tag"
v-if="item.added"
style="height: 22px"
>
{{ $t('views.functionLib.added') }}</el-tag {{ $t('views.functionLib.added') }}</el-tag
> >
</div> </div>
@ -230,11 +237,7 @@
<div class="footer-content flex-between"> <div class="footer-content flex-between">
<div>{{ $t('common.author') }}: MaxKB</div> <div>{{ $t('common.author') }}: MaxKB</div>
<div @click.stop v-if="!item.added"> <div @click.stop v-if="!item.added">
<el-button <el-button type="primary" link @click="addInternalFunction(item)">
type="primary"
link
@click="addInternalFunction(item)"
>
{{ $t('common.add') }} {{ $t('common.add') }}
</el-button> </el-button>
</div> </div>
@ -339,26 +342,24 @@ function openCreateDialog(data?: any) {
function getImageUrl(name: string) { function getImageUrl(name: string) {
if (name.startsWith('/src/assets/fx/')) { if (name.startsWith('/src/assets/fx/')) {
return internalIcons[name]?.default; return internalIcons[name]?.default
} }
return name return name
} }
function openDescDrawer(row: any) { function openDescDrawer(row: any) {
const index = row.icon.replace('icon.png', 'index.vue') const index = row.icon.replace('icon.png', 'index.vue')
internalDescComponent.value = internalDesc[index].default internalDescComponent.value = internalDesc[index].default
nextTick(()=> { nextTick(() => {
internalDescRef.value?.open(row); internalDescRef.value?.open(row)
}) })
} }
function addInternalFunction(data?: any) { function addInternalFunction(data?: any) {
functionLibApi.addInternalFunction(data.id, changeStateloading) functionLibApi.addInternalFunction(data.id, changeStateloading).then((res) => {
.then((res) => { MsgSuccess(t('common.submitSuccess'))
MsgSuccess(t('common.submitSuccess')) searchHandle()
searchHandle() })
})
} }
function searchHandle() { function searchHandle() {
@ -433,14 +434,13 @@ function copyFunctionLib(row: any) {
} }
function exportFunctionLib(row: any) { function exportFunctionLib(row: any) {
functionLibApi.exportFunctionLib(row.id, row.name, loading) functionLibApi.exportFunctionLib(row.id, row.name, loading).catch((e: any) => {
.catch((e: any) => { if (e.response.status !== 403) {
if (e.response.status !== 403) { e.response.data.text().then((res: string) => {
e.response.data.text().then((res: string) => { MsgError(`${t('views.application.tip.ExportError')}:${JSON.parse(res).message}`)
MsgError(`${t('views.application.tip.ExportError')}:${JSON.parse(res).message}`) })
}) }
} })
})
} }
function configPermission(item: any) { function configPermission(item: any) {