Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
B
basic-vue-admin
概览
概览
详情
活动
周期分析
版本库
存储库
文件
提交
分支
标签
贡献者
分支图
比较
统计图
问题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程表
图表
维基
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
Basic
basic-vue-admin
Commits
49827866
提交
49827866
authored
11月 28, 2020
作者:
vben
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
fix(form): fix updateSchema error #100
上级
81baf1d5
隐藏空白字符变更
内嵌
并排
正在显示
9 个修改的文件
包含
114 行增加
和
91 行删除
+114
-91
index.ts
src/components/Form/index.ts
+4
-1
BasicForm.vue
src/components/Form/src/BasicForm.vue
+16
-4
FormAction.tsx
src/components/Form/src/FormAction.tsx
+54
-57
props.ts
src/components/Form/src/props.ts
+1
-1
index.ts
src/router/menus/index.ts
+4
-1
dashboard.ts
src/router/menus/modules/dashboard.ts
+29
-20
dashboard.ts
src/router/routes/modules/dashboard.ts
+3
-2
index.ts
src/utils/index.ts
+2
-4
vite.config.ts
vite.config.ts
+1
-1
没有找到文件。
src/components/Form/index.ts
浏览文件 @
49827866
export
{
default
as
BasicForm
}
from
'./src/BasicForm.vue'
;
import
BasicFormLib
from
'./src/BasicForm.vue'
;
import
{
withInstall
}
from
'../util'
;
export
*
from
'./src/types/form'
;
export
*
from
'./src/types/formItem'
;
export
{
useComponentRegister
}
from
'./src/hooks/useComponentRegister'
;
export
{
useForm
}
from
'./src/hooks/useForm'
;
export
const
BasicForm
=
withInstall
(
BasicFormLib
);
src/components/Form/src/BasicForm.vue
浏览文件 @
49827866
...
...
@@ -16,6 +16,7 @@
</
template
>
</FormItem>
</template>
<FormAction
v-bind=
"{ ...getActionPropsRef, ...advanceState }"
@
toggle-advanced=
"handleToggleAdvanced"
...
...
@@ -30,7 +31,17 @@
import
type
{
Ref
,
WatchStopHandle
}
from
'vue'
;
import
type
{
ValidateFields
}
from
'ant-design-vue/lib/form/interface'
;
import
{
defineComponent
,
reactive
,
ref
,
computed
,
unref
,
toRef
,
onMounted
,
watch
}
from
'vue'
;
import
{
defineComponent
,
reactive
,
ref
,
computed
,
unref
,
toRef
,
onMounted
,
watch
,
toRefs
,
}
from
'vue'
;
import
{
Form
,
Row
}
from
'ant-design-vue'
;
import
FormItem
from
'./FormItem'
;
import
{
basicProps
}
from
'./props'
;
...
...
@@ -103,6 +114,7 @@
const
schemas
:
FormSchema
[]
=
unref
(
schemaRef
)
||
(
unref
(
getProps
).
schemas
as
any
);
for
(
const
schema
of
schemas
)
{
const
{
defaultValue
,
component
}
=
schema
;
// handle date type
if
(
defaultValue
&&
dateItemType
.
includes
(
component
))
{
if
(
!
Array
.
isArray
(
defaultValue
))
{
schema
.
defaultValue
=
moment
(
defaultValue
);
...
...
@@ -127,10 +139,10 @@
formModel
,
defaultValueRef
,
});
const
{
transformDateFunc
,
fieldMapToTime
}
=
toRefs
(
props
);
const
{
handleFormValues
,
initDefault
}
=
useFormValues
({
transformDateFuncRef
:
t
oRef
(
props
,
'transformDateFunc'
)
as
Ref
<
Fn
<
any
>>
,
fieldMapToTimeRef
:
toRef
(
props
,
'fieldMapToTime'
)
,
transformDateFuncRef
:
t
ransformDateFunc
as
Ref
<
Fn
<
any
>>
,
fieldMapToTimeRef
:
fieldMapToTime
,
defaultValueRef
,
getSchema
,
formModel
,
...
...
src/components/Form/src/FormAction.tsx
浏览文件 @
49827866
...
...
@@ -7,28 +7,17 @@ import { BasicArrow } from '/@/components/Basic/index';
import
{
getSlot
}
from
'/@/utils/helper/tsxHelper'
;
import
{
useI18n
}
from
'/@/hooks/web/useI18n'
;
import
{
propTypes
}
from
'/@/utils/propTypes'
;
const
{
t
}
=
useI18n
(
'component.form'
);
export
default
defineComponent
({
name
:
'BasicFormAction'
,
props
:
{
show
:
{
type
:
Boolean
,
default
:
true
,
},
showResetButton
:
{
type
:
Boolean
,
default
:
true
,
},
showSubmitButton
:
{
type
:
Boolean
,
default
:
true
,
},
showAdvancedButton
:
{
type
:
Boolean
,
default
:
true
,
},
show
:
propTypes
.
bool
.
def
(
true
),
showResetButton
:
propTypes
.
bool
.
def
(
true
),
showSubmitButton
:
propTypes
.
bool
.
def
(
true
),
showAdvancedButton
:
propTypes
.
bool
.
def
(
true
),
resetButtonOptions
:
{
type
:
Object
as
PropType
<
any
>
,
default
:
{},
...
...
@@ -41,18 +30,9 @@ export default defineComponent({
type
:
Object
as
PropType
<
any
>
,
default
:
{},
},
actionSpan
:
{
type
:
Number
,
default
:
6
,
},
isAdvanced
:
{
type
:
Boolean
,
default
:
false
,
},
hideAdvanceBtn
:
{
type
:
Boolean
,
default
:
false
,
},
actionSpan
:
propTypes
.
number
.
def
(
6
),
isAdvanced
:
propTypes
.
bool
,
hideAdvanceBtn
:
propTypes
.
bool
,
},
emits
:
[
'toggle-advanced'
],
setup
(
props
,
{
slots
,
emit
})
{
...
...
@@ -87,19 +67,53 @@ export default defineComponent({
emit
(
'toggle-advanced'
);
}
function
renderAdvanceButton
()
{
const
{
showAdvancedButton
,
hideAdvanceBtn
,
isAdvanced
}
=
props
;
if
(
!
showAdvancedButton
||
!!
hideAdvanceBtn
)
{
return
null
;
}
return
(
<
Button
type=
"default"
class=
"mr-2"
onClick=
{
toggleAdvanced
}
>
{
()
=>
(
<>
{
isAdvanced
?
t
(
'putAway'
)
:
t
(
'unfold'
)
}
<
BasicArrow
expand=
{
!
isAdvanced
}
top
/>
</>
)
}
</
Button
>
);
}
function
renderResetButton
()
{
const
{
showResetButton
}
=
props
;
if
(
!
showResetButton
)
{
return
null
;
}
return
(
<
Button
type=
"default"
class=
"mr-2"
{
...
unref
(
getResetBtnOptionsRef
)}
>
{
()
=>
unref
(
getResetBtnOptionsRef
).
text
}
</
Button
>
);
}
function
renderSubmitButton
()
{
const
{
showSubmitButton
}
=
props
;
if
(
!
showSubmitButton
)
{
return
null
;
}
return
(
<
Button
type=
"primary"
{
...
unref
(
getSubmitBtnOptionsRef
)}
>
{
()
=>
unref
(
getSubmitBtnOptionsRef
).
text
}
</
Button
>
);
}
return
()
=>
{
if
(
!
props
.
show
)
{
return
;
return
null
;
}
const
{
showAdvancedButton
,
hideAdvanceBtn
,
isAdvanced
,
showResetButton
,
showSubmitButton
,
}
=
props
;
return
(
<
Col
{
...
unref
(
actionColOpt
)}
style=
{
{
textAlign
:
'right'
}
}
>
{
()
=>
(
...
...
@@ -107,30 +121,13 @@ export default defineComponent({
{
()
=>
(
<>
{
getSlot
(
slots
,
'advanceBefore'
)
}
{
showAdvancedButton
&&
!
hideAdvanceBtn
&&
(
<
Button
type=
"default"
class=
"mr-2"
onClick=
{
toggleAdvanced
}
>
{
()
=>
(
<>
{
isAdvanced
?
t
(
'putAway'
)
:
t
(
'unfold'
)
}
<
BasicArrow
expand=
{
!
isAdvanced
}
top
/>
</>
)
}
</
Button
>
)
}
{
renderAdvanceButton
()
}
{
getSlot
(
slots
,
'resetBefore'
)
}
{
showResetButton
&&
(
<
Button
type=
"default"
class=
"mr-2"
{
...
unref
(
getResetBtnOptionsRef
)}
>
{
()
=>
unref
(
getResetBtnOptionsRef
).
text
}
</
Button
>
)
}
{
renderResetButton
()
}
{
getSlot
(
slots
,
'submitBefore'
)
}
{
showSubmitButton
&&
(
<
Button
type=
"primary"
{
...
unref
(
getSubmitBtnOptionsRef
)}
>
{
()
=>
unref
(
getSubmitBtnOptionsRef
).
text
}
</
Button
>
)
}
{
renderSubmitButton
()
}
{
getSlot
(
slots
,
'submitAfter'
)
}
</>
...
...
src/components/Form/src/props.ts
浏览文件 @
49827866
...
...
@@ -5,7 +5,7 @@ import { TableActionType } from '/@/components/Table';
export
const
basicProps
=
{
model
:
{
type
:
Object
as
PropType
<
any
>
,
type
:
Object
as
PropType
<
Record
<
string
,
any
>
>
,
default
:
{},
},
// 标签宽度 固定宽度
...
...
src/router/menus/index.ts
浏览文件 @
49827866
...
...
@@ -13,7 +13,9 @@ import modules from 'globby!/@/router/menus/modules/**/*.@(ts)';
const
menuModules
:
MenuModule
[]
=
[];
Object
.
keys
(
modules
).
forEach
((
key
)
=>
{
menuModules
.
push
(
modules
[
key
]);
const
moduleItem
=
modules
[
key
];
const
menuModule
=
Array
.
isArray
(
moduleItem
)
?
[...
moduleItem
]
:
[
moduleItem
];
menuModules
.
push
(...
menuModule
);
});
// ===========================
...
...
@@ -25,6 +27,7 @@ const staticMenus: Menu[] = [];
menuModules
.
sort
((
a
,
b
)
=>
{
return
(
a
.
orderNo
||
0
)
-
(
b
.
orderNo
||
0
);
});
for
(
const
menu
of
menuModules
)
{
staticMenus
.
push
(
transformMenuModule
(
menu
));
}
...
...
src/router/menus/modules/dashboard.ts
浏览文件 @
49827866
import
type
{
MenuModule
}
from
'/@/router/types.d'
;
const
menu
:
MenuModule
=
{
orderNo
:
10
,
menu
:
{
name
:
'routes.dashboard.dashboard'
,
path
:
'/dashboard'
,
children
:
[
{
path
:
'/workbench'
,
name
:
'routes.dashboard.workbench'
,
},
{
path
:
'/analysis'
,
name
:
'routes.dashboard.analysis'
,
},
{
path
:
'/welcome'
,
name
:
'routes.dashboard.welcome'
,
},
],
const
menu
:
MenuModule
[]
=
[
{
orderNo
:
0
,
menu
:
{
path
:
'/dashboard/welcome'
,
name
:
'routes.dashboard.welcome'
,
},
},
};
{
orderNo
:
10
,
menu
:
{
name
:
'routes.dashboard.dashboard'
,
path
:
'/dashboard'
,
children
:
[
{
path
:
'/workbench'
,
name
:
'routes.dashboard.workbench'
,
},
{
path
:
'/analysis'
,
name
:
'routes.dashboard.analysis'
,
},
// {
// path: '/welcome',
// name: 'routes.dashboard.welcome',
// },
],
},
},
];
export
default
menu
;
src/router/routes/modules/dashboard.ts
浏览文件 @
49827866
...
...
@@ -7,7 +7,7 @@ const dashboard: AppRouteModule = {
path
:
'/dashboard'
,
name
:
'Dashboard'
,
component
:
PAGE_LAYOUT_COMPONENT
,
redirect
:
'/dashboard/w
orkbench
'
,
redirect
:
'/dashboard/w
elcome
'
,
meta
:
{
icon
:
'ant-design:home-outlined'
,
title
:
'routes.dashboard.dashboard'
,
...
...
@@ -21,6 +21,8 @@ const dashboard: AppRouteModule = {
component
:
()
=>
import
(
'/@/views/dashboard/welcome/index.vue'
),
meta
:
{
title
:
'routes.dashboard.welcome'
,
affix
:
true
,
icon
:
'ant-design:home-outlined'
,
},
},
{
...
...
@@ -29,7 +31,6 @@ const dashboard: AppRouteModule = {
component
:
()
=>
import
(
'/@/views/dashboard/workbench/index.vue'
),
meta
:
{
title
:
'routes.dashboard.workbench'
,
affix
:
true
,
},
},
{
...
...
src/utils/index.ts
浏览文件 @
49827866
export
const
timestamp
=
()
=>
+
Date
.
now
();
import
{
isObject
}
from
'/@/utils/is'
;
export
const
clamp
=
(
n
:
number
,
min
:
number
,
max
:
number
)
=>
Math
.
min
(
max
,
Math
.
max
(
min
,
n
));
export
const
noop
=
()
=>
{};
export
const
now
=
()
=>
Date
.
now
();
...
...
@@ -40,10 +41,7 @@ export function setObjToUrlParams(baseUrl: string, obj: any): string {
export
function
deepMerge
<
T
=
any
>
(
src
:
any
,
target
:
any
):
T
{
let
key
:
string
;
for
(
key
in
target
)
{
src
[
key
]
=
src
[
key
]
&&
src
[
key
].
toString
()
===
'[object Object]'
?
deepMerge
(
src
[
key
],
target
[
key
])
:
(
src
[
key
]
=
target
[
key
]);
src
[
key
]
=
isObject
(
src
[
key
])
?
deepMerge
(
src
[
key
],
target
[
key
])
:
(
src
[
key
]
=
target
[
key
]);
}
return
src
;
}
...
...
vite.config.ts
浏览文件 @
49827866
...
...
@@ -89,7 +89,7 @@ const viteConfig: UserConfig = {
* Transpile target for esbuild.
* @default 'es2020'
*/
esbuildTarget
:
'es20
20
'
,
esbuildTarget
:
'es20
19
'
,
/**
* Whether to log asset info to console
* @default false
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论