From 520fd74d2b4f89d6b80cac28d1b5f4dc4870fb99 Mon Sep 17 00:00:00 2001
From: icssoa <615206459@qq.com>
Date: Tue, 13 Jun 2023 02:14:01 +0800
Subject: [PATCH] =?UTF-8?q?cl-form=20=E6=B7=BB=E5=8A=A0=20children=20?=
=?UTF-8?q?=E5=8F=82=E6=95=B0?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.vscode/crud.code-snippets | 5 +
package.json | 2 +-
packages/crud/index.d.ts | 13 +
packages/crud/src/components/form/helper.tsx | 4 +-
packages/crud/src/components/form/index.tsx | 263 ++++++++++--------
packages/crud/src/components/index.tsx | 2 +
packages/crud/src/components/table/index.tsx | 4 +-
packages/crud/src/components/upsert/index.tsx | 4 +-
packages/crud/src/demo/t2.vue | 8 +-
packages/crud/src/demo/test.vue | 2 +-
packages/crud/src/demo/upsert.vue | 41 ++-
packages/crud/src/utils/vnode.tsx | 7 +-
12 files changed, 221 insertions(+), 134 deletions(-)
diff --git a/.vscode/crud.code-snippets b/.vscode/crud.code-snippets
index 94fba1a..02e5fab 100644
--- a/.vscode/crud.code-snippets
+++ b/.vscode/crud.code-snippets
@@ -58,6 +58,11 @@
" app.refresh();",
" }",
");",
+ "",
+ "// 刷新",
+ "function refresh(params?: any) {",
+ " Crud.value?.refresh(params);",
+ "}",
"",
""
],
diff --git a/package.json b/package.json
index 25c8306..5a84e34 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "front-next",
- "version": "6.3.1",
+ "version": "6.3.2",
"scripts": {
"dev": "vite --host",
"build": "vite build",
diff --git a/packages/crud/index.d.ts b/packages/crud/index.d.ts
index 8fb2a77..0685e6f 100644
--- a/packages/crud/index.d.ts
+++ b/packages/crud/index.d.ts
@@ -429,6 +429,18 @@ declare namespace ClForm {
size?: "medium" | "default" | "small";
[key: string]: any;
};
+ col?: {
+ span: number;
+ offset: number;
+ push: number;
+ pull: number;
+ xs: any;
+ sm: any;
+ md: any;
+ lg: any;
+ xl: any;
+ tag: string;
+ };
hook?: Hook.Form;
group?: string;
collapse?: boolean;
@@ -443,6 +455,7 @@ declare namespace ClForm {
append?: Render.Component;
rules?: Rule | Rule[];
required?: boolean;
+ children?: Item[];
[key: string]: any;
}
diff --git a/packages/crud/src/components/form/helper.tsx b/packages/crud/src/components/form/helper.tsx
index e391843..7e2bbc4 100644
--- a/packages/crud/src/components/form/helper.tsx
+++ b/packages/crud/src/components/form/helper.tsx
@@ -138,7 +138,7 @@ export function useTabs({ config, Form }: { config: Config; Form: Form }) {
}
// 切换
- function change(value: any, isValid: boolean = true) {
+ function change(value: any, isValid = true) {
return new Promise((resolve: Function, reject: Function) => {
function next() {
active.value = value;
@@ -146,7 +146,7 @@ export function useTabs({ config, Form }: { config: Config; Form: Form }) {
}
if (isValid) {
- let isError: boolean = false;
+ let isError = false;
const arr = config.items
.filter((e: any) => e.group == active.value && !e._hidden && e.prop)
diff --git a/packages/crud/src/components/form/index.tsx b/packages/crud/src/components/form/index.tsx
index 4b69712..765d8b3 100644
--- a/packages/crud/src/components/form/index.tsx
+++ b/packages/crud/src/components/form/index.tsx
@@ -274,35 +274,44 @@ export default defineComponent({
// 设置表单数据
config.items.map((e) => {
- if (e.prop) {
- // 解析 prop
- if (e.prop.includes(".")) {
- e.prop = e.prop.replace(/\./g, "-");
+ function deep(e: ClForm.Item) {
+ if (e.prop) {
+ // 解析 prop
+ if (e.prop.includes(".")) {
+ e.prop = e.prop.replace(/\./g, "-");
+ }
+
+ // prop 合并
+ Tabs.mergeProp(e);
+
+ // 绑定值
+ formHook.bind({
+ ...e,
+ value: form[e.prop] !== undefined ? form[e.prop] : cloneDeep(e.value),
+ form
+ });
+
+ // 表单验证
+ if (e.required) {
+ e.rules = {
+ required: true,
+ message: `${e.label}不能为空`
+ };
+ }
+
+ // 子集
+ if (e.children) {
+ e.children.forEach(deep);
+ }
}
- // prop 合并
- Tabs.mergeProp(e);
-
- // 绑定值
- formHook.bind({
- ...e,
- value: form[e.prop] !== undefined ? form[e.prop] : cloneDeep(e.value),
- form
- });
-
- // 表单验证
- if (e.required) {
- e.rules = {
- required: true,
- message: `${e.label}不能为空`
- };
+ // 设置 tabs 默认值
+ if (e.type == "tabs") {
+ Tabs.set(e.value);
}
}
- // 设置 tabs 默认值
- if (e.type == "tabs") {
- Tabs.set(e.value);
- }
+ deep(e);
});
// 设置默认值
@@ -337,113 +346,131 @@ export default defineComponent({
Object.assign(form, data);
}
- // 渲染表单及表单项
- function renderForm() {
+ // 渲染表单项
+ function renderFormItem(e: ClForm.Item) {
const { isDisabled } = config._data;
- // 表单项列表
- const children = config.items.map((e) => {
- if (e.type == "tabs") {
- return