-import type { DynamicFormValue } from '../../type'
-defineProps<{
- header: DynamicFormValue
-}>()
-
-
-
-
-
{{ header.label }}
-
*
-
-
- {{ header.tooltip }}
-
-
-
-
-
-
diff --git a/ui/src/components/mk-dynamics-form/items/knowledge/Knowledge.vue b/ui/src/components/mk-dynamics-form/items/knowledge/Knowledge.vue
index c6cc2334797..0f53a6b9acd 100644
--- a/ui/src/components/mk-dynamics-form/items/knowledge/Knowledge.vue
+++ b/ui/src/components/mk-dynamics-form/items/knowledge/Knowledge.vue
@@ -2,8 +2,6 @@
import type { DynamicFormValue } from '../../type'
import { computed } from 'vue'
import type { FormField } from '../../type'
-
-import SelectHeader from '@/components/mk-dynamics-form/items/common/SelectHeader.vue'
const props = withDefaults(
defineProps<{
modelValue?: string[]
@@ -47,9 +45,6 @@ const selectedIds = computed({
class="w-full"
placeholder="请选择知识库"
>
-
-
-
diff --git a/ui/src/components/mk-dynamics-form/items/label/SettingLabel.vue b/ui/src/components/mk-dynamics-form/items/label/SettingLabel.vue
deleted file mode 100644
index d00e841d6d0..00000000000
--- a/ui/src/components/mk-dynamics-form/items/label/SettingLabel.vue
+++ /dev/null
@@ -1,75 +0,0 @@
-
-
-
-
-
- {{ label.label }}*
-
-
-
- {{ label.attrs.tooltip }}
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/ui/src/components/mk-dynamics-form/items/label/TooltipLabel.vue b/ui/src/components/mk-dynamics-form/items/label/TooltipLabel.vue
index 7b199c1af46..9eccce6d9e6 100644
--- a/ui/src/components/mk-dynamics-form/items/label/TooltipLabel.vue
+++ b/ui/src/components/mk-dynamics-form/items/label/TooltipLabel.vue
@@ -14,7 +14,7 @@ defineProps<{
{{ label.attrs.tooltip }}
-
+
diff --git a/ui/src/components/mk-dynamics-form/items/layout/RowLayout.vue b/ui/src/components/mk-dynamics-form/items/layout/RowLayout.vue
deleted file mode 100644
index 054f15c8e08..00000000000
--- a/ui/src/components/mk-dynamics-form/items/layout/RowLayout.vue
+++ /dev/null
@@ -1,7 +0,0 @@
-
-
-
-
-
diff --git a/ui/src/components/mk-dynamics-form/items/model/Model.vue b/ui/src/components/mk-dynamics-form/items/model/Model.vue
index b788713b863..b91d3a41592 100644
--- a/ui/src/components/mk-dynamics-form/items/model/Model.vue
+++ b/ui/src/components/mk-dynamics-form/items/model/Model.vue
@@ -2,7 +2,6 @@
import type { DynamicFormValue } from '../../type'
import { computed } from 'vue'
import { groupBy, flatMap } from 'lodash'
-import SelectHeader from '@/components/mk-dynamics-form/items/common/SelectHeader.vue'
import { relatedObject } from '@/utils/common'
import type { FormField } from '../../type'
import { providerList } from './provider-data'
@@ -65,9 +64,6 @@ const handleModelChange = (selectedId: string) => {
v-bind="$attrs"
popper-class="select-model"
>
-
-
-
import type { DynamicFormValue } from '../../type'
-import { computed, ref, inject } from 'vue'
+import { computed, inject } from 'vue'
import type { FormField } from '@/components/mk-dynamics-form/type'
import { useFormDisabled, formItemContextKey } from 'element-plus'
@@ -18,26 +18,32 @@ const props = defineProps<{
disabled?: boolean
}>()
const elFormItem = inject(formItemContextKey, void 0)
-const selected = (activeValue: string | number) => {
+const emit = defineEmits<{
+ change: [value: DynamicFormValue]
+ 'update:modelValue': [value: DynamicFormValue]
+}>()
+
+const isOptionActive = (optionValue: DynamicFormValue) => {
+ if (props.modelValue === optionValue) return true
+
+ return (
+ props.modelValue !== undefined &&
+ props.modelValue !== null &&
+ optionValue !== undefined &&
+ optionValue !== null &&
+ String(props.modelValue) === String(optionValue)
+ )
+}
+
+const selectOption = (activeValue: string | number) => {
+ if (inputDisabled.value) return
+
emit('update:modelValue', activeValue)
+ emit('change', activeValue)
if (elFormItem?.validate) {
elFormItem.validate('change')
}
}
-const emit = defineEmits(['update:modelValue', 'change'])
-const width = ref()
-const radioContentStyle = computed(() => {
- if (width.value) {
- if (width.value < 350) {
- return { '--maxkb-radio-card-width': '316px' }
- } else if (width.value > 770) {
- return { '--maxkb-radio-card-width': '378px' }
- } else {
- return { '--maxkb-radio-card-width': '100%' }
- }
- }
- return {}
-})
const textField = computed(() => {
return props.formField.text_field ? props.formField.text_field : 'key'
@@ -53,55 +59,18 @@ const options = computed(() => {
-
-
-
-
- {} : selected(item[valueField])"
- :innerHTML="item[textField] ? item[textField] : '\u200D'"
- >
-
-
-
-
+
-
diff --git a/ui/src/components/mk-dynamics-form/items/radio/RadioRow.vue b/ui/src/components/mk-dynamics-form/items/radio/RadioRow.vue
index 56f7c5ece38..384d3c8e9c6 100644
--- a/ui/src/components/mk-dynamics-form/items/radio/RadioRow.vue
+++ b/ui/src/components/mk-dynamics-form/items/radio/RadioRow.vue
@@ -37,6 +37,7 @@ const options = computed(() => {
+
import type { DynamicFormValue } from '../../type'
import type { FormField } from '@/components/mk-dynamics-form/type'
-import SelectHeader from '@/components/mk-dynamics-form/items/common/SelectHeader.vue'
import { computed } from 'vue'
const props = defineProps<{
@@ -46,7 +45,6 @@ const label = (option: DynamicFormValue) => {
{
v-bind="$attrs"
v-model="_modelValue"
>
-
-
-
import type { DynamicFormValue } from '../../type'
import type { FormField } from '@/components/mk-dynamics-form/type'
-import SelectHeader from '@/components/mk-dynamics-form/items/common/SelectHeader.vue'
import { computed, useAttrs } from 'vue'
const attrs = useAttrs() as DynamicFormValue
@@ -52,17 +51,7 @@ const label = (option: DynamicFormValue) => {
-
-
-
-
+
{
-
+
diff --git a/ui/src/components/mk-dynamics-form/items/slider/Slider.vue b/ui/src/components/mk-dynamics-form/items/slider/Slider.vue
index 2e27e11cec6..2d467becbed 100644
--- a/ui/src/components/mk-dynamics-form/items/slider/Slider.vue
+++ b/ui/src/components/mk-dynamics-form/items/slider/Slider.vue
@@ -3,5 +3,5 @@ defineOptions({ name: 'DynamicFormSlider' })
-
+
diff --git a/ui/src/components/mk-dynamics-form/items/tree/TreeSelect.vue b/ui/src/components/mk-dynamics-form/items/tree/TreeSelect.vue
index 594ecc03088..db6a164154e 100644
--- a/ui/src/components/mk-dynamics-form/items/tree/TreeSelect.vue
+++ b/ui/src/components/mk-dynamics-form/items/tree/TreeSelect.vue
@@ -1,11 +1,5 @@
-
+
-
-
-
-
-
+
diff --git a/ui/src/components/mk-form-list/index.vue b/ui/src/components/mk-form-list/index.vue
index a023b249475..febaceaf0f8 100644
--- a/ui/src/components/mk-form-list/index.vue
+++ b/ui/src/components/mk-form-list/index.vue
@@ -3,15 +3,23 @@ defineOptions({ name: 'MkFormList' })
const props = withDefaults(
defineProps<{
- addText: string
+ addText?: string
defaultItem: T
+ firstRowHasLabel?: boolean
+ showAddButton?: boolean
}>(),
{
addText: '添加',
+ firstRowHasLabel: true,
+ showAddButton: true,
},
)
const formRows = defineModel({ required: true })
+const emit = defineEmits<{
+ remove: [item: T, index: number]
+}>()
+
defineSlots<{
default(props: { index: number; item: T }): unknown
}>()
@@ -22,21 +30,26 @@ function addRow() {
function removeRow(index: number) {
if (formRows.value.length === 1) return
+ const removedItem = formRows.value[index] as T
formRows.value = formRows.value.filter((_, rowIndex) => rowIndex !== index)
+ emit('remove', removedItem, index)
}
-
+
-
+
{{ addText }}
diff --git a/ui/src/styles/app.scss b/ui/src/styles/app.scss
index f1b03d12cf3..8220b5d3284 100644
--- a/ui/src/styles/app.scss
+++ b/ui/src/styles/app.scss
@@ -169,6 +169,14 @@ h6 {
margin-left: 4px;
}
}
+/*
+ 隐藏自带星号
+*/
+.mk-hide-asterisk {
+ .el-form-item__label::after {
+ display: none;
+ }
+}
// 资源的card grid布局
.mk-resource-card-grid {
diff --git a/ui/src/styles/element-plus.scss b/ui/src/styles/element-plus.scss
index a70a5f7d517..948dc339ba0 100644
--- a/ui/src/styles/element-plus.scss
+++ b/ui/src/styles/element-plus.scss
@@ -173,9 +173,6 @@
&.is-always-shadow {
border: none;
}
- &.is-never-shadow {
- border: none;
- }
&.is-hover-shadow {
cursor: pointer;
&:hover {
diff --git a/ui/src/views/VIEW_README.md b/ui/src/views/VIEW_README.md
index e00ff1c0156..04680f0235a 100644
--- a/ui/src/views/VIEW_README.md
+++ b/ui/src/views/VIEW_README.md
@@ -94,7 +94,7 @@ Dialog。新增或重命名文件时,应同步更新所有导入和页面功
| `login/LoginView.vue` | Admin 登录页面 |
| `login/ForgotPasswordView.vue` | 忘记密码页面 |
| `model/ModelView.vue` | 工作空间模型目录与模型卡片页面 |
-| `system/SystemView.vue` | System 模块通用占位页面 |
+ |
| `system/identity/groups/UserGroupListView.vue` | 用户组列表页面 |
| `system/identity/resource-authorization/ResourceAuthorizationView.vue` | 工作空间用户组与用户的分类资源授权页面 |
| `system/identity/roles/RoleListView.vue` | 角色列表页面 |
diff --git a/ui/src/views/system/settings/authentication/components/LoginSetting.vue b/ui/src/views/system/settings/authentication/components/LoginSetting.vue
index b5bc3b356d4..cb091e65db1 100644
--- a/ui/src/views/system/settings/authentication/components/LoginSetting.vue
+++ b/ui/src/views/system/settings/authentication/components/LoginSetting.vue
@@ -183,7 +183,7 @@ onMounted(() => {
-
+
第三方用户默认角色分配
-
+
{
/>
-
+
保存
diff --git a/ui/src/workflow-canvas/core/NodeCascader.vue b/ui/src/workflow-canvas/core/NodeCascader.vue
index 446aef4da2e..dd85fe76b8b 100644
--- a/ui/src/workflow-canvas/core/NodeCascader.vue
+++ b/ui/src/workflow-canvas/core/NodeCascader.vue
@@ -73,7 +73,7 @@ function refreshOptions(visible = true) {
}
function validate() {
- if (selectedValue.value.length === 0) return Promise.reject('引用变量必填')
+ if (selectedValue.value.length === 0) return Promise.reject('请输入引用变量')
if (selectedValue.value.length < 2) return Promise.reject('引用变量错误')
const [nodeId, fieldValue] = selectedValue.value