@xizs/nuxt-antui 0.0.2 → 0.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { AForm, AFormItem, AInput, ASelect,AInputNumber, LineOutlined, ASwitch, ATextarea, ARadio } from "#components"
|
|
1
|
+
import { AForm, AFormItem, AInput, ASelect,AInputNumber, LineOutlined, ASwitch, ATextarea, ARadio, ARadioGroup, AButton } from "#components"
|
|
2
2
|
|
|
3
3
|
export type FormItemType = {
|
|
4
4
|
label:string,
|
|
@@ -16,10 +16,14 @@ export type FormPropsType = {
|
|
|
16
16
|
showSubmit?:boolean
|
|
17
17
|
}
|
|
18
18
|
|
|
19
|
-
const FormComs
|
|
19
|
+
const FormComs = {
|
|
20
20
|
input:(form:any,item:FormItemType)=>{
|
|
21
21
|
return <AInput v-model:value={form[item.key]}></AInput>
|
|
22
22
|
},
|
|
23
|
+
button:(form:any,item:FormItemType)=>{
|
|
24
|
+
console.log(item.bind)
|
|
25
|
+
return <AButton {...item.bind}>{ item.bind.content}</AButton>
|
|
26
|
+
},
|
|
23
27
|
textarea:(form:any,item:FormItemType)=>{
|
|
24
28
|
return <ATextarea v-model:value={form[item.key]}></ATextarea>
|
|
25
29
|
},
|
|
@@ -43,7 +47,10 @@ const FormComs = {
|
|
|
43
47
|
return <ASwitch v-model:checked={form[item.key]} {...item.bind}></ASwitch>
|
|
44
48
|
},
|
|
45
49
|
radio: (form: any, item: FormItemType) => {
|
|
46
|
-
return <
|
|
50
|
+
return <ARadioGroup v-model:value={form[item.key]} {...item.bind}></ARadioGroup>
|
|
51
|
+
},
|
|
52
|
+
uploadImg: (form: any, item: FormItemType) => {
|
|
53
|
+
return <UploadImg v-model:value={form[item.key]} {...item.bind}></UploadImg>
|
|
47
54
|
}
|
|
48
55
|
}
|
|
49
56
|
|
|
@@ -65,13 +72,18 @@ export default defineComponent({
|
|
|
65
72
|
type:Boolean,
|
|
66
73
|
default:true
|
|
67
74
|
},
|
|
75
|
+
defaultFormData: {
|
|
76
|
+
type: Object,
|
|
77
|
+
default: () => ({})
|
|
78
|
+
}
|
|
68
79
|
},
|
|
69
80
|
setup(props,{expose}){
|
|
70
81
|
|
|
71
82
|
let thisRef = ref(null)
|
|
72
|
-
let formData = ref(
|
|
83
|
+
let formData = ref(props.defaultFormData)
|
|
73
84
|
let rules = ref({})
|
|
74
|
-
props.form.forEach(item=>{
|
|
85
|
+
ADParse(props.form,formData.value).forEach(item=>{
|
|
86
|
+
if(item.key==null) return
|
|
75
87
|
if(Array.isArray(item.key)){
|
|
76
88
|
item.key.forEach(key=>{
|
|
77
89
|
formData.value[key] = item.value??''
|
|
@@ -115,9 +127,16 @@ export default defineComponent({
|
|
|
115
127
|
return ()=><AForm ref={thisRef} model={formData.value} rules={rules.value} label-col={{ span: 6 }} wrapper-col={{ span: 16 }}>
|
|
116
128
|
{/* {JSON.stringify(formData.value)} */}
|
|
117
129
|
{
|
|
118
|
-
props.form.map(item=>{
|
|
119
|
-
|
|
120
|
-
|
|
130
|
+
ADParse(props.form, formData.value).map(item => {
|
|
131
|
+
if (item.label == null) {
|
|
132
|
+
return typeof item.is === 'function'? item.is(formData.value) :
|
|
133
|
+
FormComs[item.is](formData.value,item)
|
|
134
|
+
}
|
|
135
|
+
return <AFormItem label={item.label} key={item.key} name={item.key} {...item.bind} class={{'hidden':item.show===false}}>
|
|
136
|
+
{
|
|
137
|
+
typeof item.is === 'function'? item.is(formData.value) :
|
|
138
|
+
FormComs[item.is](formData.value,item)
|
|
139
|
+
}
|
|
121
140
|
</AFormItem>
|
|
122
141
|
})
|
|
123
142
|
}
|
|
@@ -46,7 +46,7 @@ let dateRange = defineComponent({
|
|
|
46
46
|
|
|
47
47
|
const FormItems = {
|
|
48
48
|
input:(form:any,item:TableFormItemType)=>{
|
|
49
|
-
return <AInput size="middle" v-model:value={form[item.key]} placeholder={
|
|
49
|
+
return <AInput size="middle" v-model:value={form[item.key]} placeholder={`请输入 ${item.label}`}></AInput>
|
|
50
50
|
},
|
|
51
51
|
select:(form:any,item:TableFormItemType)=>{
|
|
52
52
|
return <ASelect allowClear class="min-w-[150px]" v-model:value={form[item.key]} options={item.bind?.options} placeholder={`please select ${item.label}`}></ASelect>
|
package/app/composables/form.ts
CHANGED
|
@@ -1 +1,77 @@
|
|
|
1
|
-
|
|
1
|
+
// import type { FormItemType } from "../components/global/Form";
|
|
2
|
+
// import { AForm, AFormItem, AInput, ASelect, AInputNumber, LineOutlined, ASwitch, ATextarea, ARadio } from "#components"
|
|
3
|
+
|
|
4
|
+
// export const FormComs = {
|
|
5
|
+
// input: (form: any, item: FormItemType) =>
|
|
6
|
+
// h(AInput, {
|
|
7
|
+
// value: form[item.key as string],
|
|
8
|
+
// 'onUpdate:value': (val: any) => (form[item.key as string] = val)
|
|
9
|
+
// }),
|
|
10
|
+
|
|
11
|
+
// textarea: (form: any, item: FormItemType) =>
|
|
12
|
+
// h(ATextarea, {
|
|
13
|
+
// value: form[item.key as string],
|
|
14
|
+
// 'onUpdate:value': (val: any) => (form[item.key as string] = val)
|
|
15
|
+
// }),
|
|
16
|
+
|
|
17
|
+
// inputNumber: (form: any, item: FormItemType) =>
|
|
18
|
+
// h(AInputNumber, {
|
|
19
|
+
// ...item.bind,
|
|
20
|
+
// value: form[item.key as string],
|
|
21
|
+
// 'onUpdate:value': (val: any) => (form[item.key as string] = val)
|
|
22
|
+
// }),
|
|
23
|
+
|
|
24
|
+
// inputNumberRange: (form: any, item: FormItemType) =>
|
|
25
|
+
// h(
|
|
26
|
+
// 'div',
|
|
27
|
+
// { class: 'flex items-center gap-2' },
|
|
28
|
+
// [
|
|
29
|
+
// h(AInputNumber, {
|
|
30
|
+
// class: 'flex-1',
|
|
31
|
+
// ...item.bind[0],
|
|
32
|
+
// value: form[item.key[0] as string],
|
|
33
|
+
// 'onUpdate:value': (val: any) => (form[item.key[0] as string] = val)
|
|
34
|
+
// }),
|
|
35
|
+
// h(LineOutlined),
|
|
36
|
+
// h(AInputNumber, {
|
|
37
|
+
// class: 'flex-1',
|
|
38
|
+
// ...item.bind[1],
|
|
39
|
+
// value: form[item.key[1] as string],
|
|
40
|
+
// 'onUpdate:value': (val: any) => (form[item.key[1] as string] = val)
|
|
41
|
+
// })
|
|
42
|
+
// ]
|
|
43
|
+
// ),
|
|
44
|
+
|
|
45
|
+
// select: (form: any, item: FormItemType) =>
|
|
46
|
+
// h(ASelect, {
|
|
47
|
+
// value: form[item.key as string],
|
|
48
|
+
// options: item.bind.options,
|
|
49
|
+
// 'onUpdate:value': (val: any) => (form[item.key as string] = val)
|
|
50
|
+
// }),
|
|
51
|
+
|
|
52
|
+
// countrySelect: (form: any, item: FormItemType) =>
|
|
53
|
+
// h(ASelect, {
|
|
54
|
+
// value: form[item.key as string],
|
|
55
|
+
// options: Const.CountrySelectList(),
|
|
56
|
+
// 'onUpdate:value': (val: any) => (form[item.key as string] = val)
|
|
57
|
+
// }),
|
|
58
|
+
|
|
59
|
+
// switch: (form: any, item: FormItemType) =>
|
|
60
|
+
// h(ASwitch, {
|
|
61
|
+
// ...item.bind,
|
|
62
|
+
// checked: form[item.key as string],
|
|
63
|
+
// 'onUpdate:checked': (val: any) => (form[item.key as string] = val)
|
|
64
|
+
// }),
|
|
65
|
+
|
|
66
|
+
// radio: (form: any, item: FormItemType) =>
|
|
67
|
+
// h(ARadio, {
|
|
68
|
+
// ...item.bind,
|
|
69
|
+
// checked: form[item.key as string],
|
|
70
|
+
// 'onUpdate:checked': (val: any) => (form[item.key as string] = val)
|
|
71
|
+
// }),
|
|
72
|
+
|
|
73
|
+
// // upload: (form: any, item: FormItemType) =>
|
|
74
|
+
// // h(UploadImg, {
|
|
75
|
+
// // ...item.bind
|
|
76
|
+
// // })
|
|
77
|
+
// }
|
package/app/composables/modal.ts
CHANGED
|
@@ -102,6 +102,7 @@ export const FormModal = (params: FormModalParamsType) => {
|
|
|
102
102
|
|
|
103
103
|
return () => h(AModal, {
|
|
104
104
|
title: params.title,
|
|
105
|
+
width: params.width,
|
|
105
106
|
okText: '提交',
|
|
106
107
|
cancelText: '取消',
|
|
107
108
|
confirmLoading: loading.value,
|
|
@@ -113,6 +114,7 @@ export const FormModal = (params: FormModalParamsType) => {
|
|
|
113
114
|
}, h(Form, {
|
|
114
115
|
ref: formRef,
|
|
115
116
|
form: params.form,
|
|
117
|
+
defaultFormData: params.defaultFormData,
|
|
116
118
|
submit: params.submit,
|
|
117
119
|
showSubmit: false
|
|
118
120
|
}))
|