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,14 +131,12 @@
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>
<div>
<el-radio value="designated_answer"> <el-radio value="designated_answer">
<p>{{ $t('views.application.applicationForm.dialog.provideAnswer') }}</p> <p>{{ $t('views.application.applicationForm.dialog.provideAnswer') }}</p>
<el-form-item <el-form-item
@ -156,7 +154,6 @@
/> />
</el-form-item> </el-form-item>
</el-radio> </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,19 +20,21 @@
: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">
<div
v-if="form.id"
class="edit-avatar mr-12" class="edit-avatar mr-12"
@mouseenter="showEditIcon = true" @mouseenter="showEditIcon = true"
@mouseleave="showEditIcon = false" @mouseleave="showEditIcon = false"
> >
<AppAvatar <AppAvatar
v-if="isAppIcon(form.icon as string)" v-if="isAppIcon(form.icon)"
:id="form.id" :id="form.id"
shape="square" shape="square"
:size="32" :size="32"
style="background: none" style="background: none"
> >
<img :src="form.icon as string" alt="" /> <img :src="String(form.icon)" alt="" />
</AppAvatar> </AppAvatar>
<AppAvatar <AppAvatar
v-else-if="form.name" v-else-if="form.name"
@ -53,6 +55,9 @@
<el-icon><EditPen /></el-icon> <el-icon><EditPen /></el-icon>
</AppAvatar> </AppAvatar>
</div> </div>
<AppAvatar shape="square" style="background: #34c724" class="mr-12" v-else>
<img src="@/assets/icon_function_outlined.svg" style="width: 75%" alt="" />
</AppAvatar>
<el-input <el-input
v-model="form.name" v-model="form.name"
:placeholder="$t('views.functionLib.functionForm.form.functionName.placeholder')" :placeholder="$t('views.functionLib.functionForm.form.functionName.placeholder')"
@ -60,7 +65,9 @@
show-word-limit show-word-limit
@blur="form.name = form.name?.trim()" @blur="form.name = form.name?.trim()"
/> />
</div>
</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"
@ -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,8 +92,7 @@ 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

@ -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>
@ -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
@ -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,23 +342,21 @@ 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()
}) })
@ -433,8 +434,7 @@ 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}`)