af-mobile-client-vue3 1.0.69 → 1.0.71

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,147 +1,153 @@
1
- <script setup lang="ts">
2
- import {
3
- Button as VanButton,
4
- CellGroup as VanCellGroup,
5
- Form as VanForm,
6
- } from 'vant'
7
- import type { FormInstance } from 'vant';
8
- import {computed, reactive, ref, defineEmits, defineProps, onBeforeMount, watch} from 'vue'
9
- import XFormItem from '@af-mobile-client-vue3/components/data/XFormItem/index.vue'
10
- import { useRoute } from 'vue-router'
11
-
12
- interface FormItem {
13
- addOrEdit: string
14
- isOnlyAddOrEdit?: boolean
15
- type?: string
16
- model?: string
17
- }
18
- const props = withDefaults(defineProps<{
19
- groupFormItems?: object,
20
- serviceName?: string,
21
- formData?: object,
22
- formName?: string
23
- }>(), {
24
- groupFormItems: null,
25
- serviceName: undefined,
26
- formData: null,
27
- formName: 'default'
28
- })
29
- const route = useRoute()
30
- const emits = defineEmits(['onSubmit'])
31
- const formRef = ref<FormInstance>()
32
- const myFormItems = ref<FormItem[]>([])
33
- const rules = reactive({})
34
- const form = ref({})
35
- const formGroupName = ref(null)
36
- const myServiceName = ref('')
37
- const loaded = ref(false)
38
- let myGetDataParams = reactive({})
39
- const mode = route.query.mode as string
40
- const realJsonData = computed(() => {
41
- let list = myFormItems.value.filter(item => {
42
- return item.addOrEdit !== 'no'
43
- })
44
- return list
45
- })
46
- onBeforeMount( () => {
47
- init({ formItems: props.groupFormItems, serviceName:props.serviceName, formData: props.formData, formName:props.formName })
48
- })
49
- function init(params) {
50
- const {
51
- formItems,
52
- serviceName,
53
- getDataParams = {},
54
- formData = null,
55
- formName = 'default'
56
- } = params
57
- loaded.value = false
58
- myFormItems.value = JSON.parse(JSON.stringify(formItems.formJson)) as FormItem[]
59
- myServiceName.value = serviceName
60
- formGroupName.value = formName
61
- for (let i = 0; i < realJsonData.value.length; i++) {
62
- const item = realJsonData.value[i]
63
- setFormProps(form, item)
64
- }
65
- if(formData){
66
- form.value = formData
67
- }
68
- myGetDataParams = getDataParams
69
- loaded.value = true
70
- }
71
-
72
- function setFormProps(form, item) {
73
- form.value[item.model] = undefined
74
- if (item.rule) {
75
- rules[item.model] = []
76
- let defaultValue
77
- let message
78
- switch (item.rule.type) {
79
- case 'number':
80
- message = '数字'
81
- defaultValue = 0
82
- break
83
- case 'integer':
84
- message = '整数'
85
- defaultValue = 0
86
- break
87
- case 'float':
88
- message = '小数'
89
- defaultValue = 0.0
90
- break
91
- case 'string':
92
- message = '字符串'
93
- defaultValue = ''
94
- break
95
- }
96
- rules[item.model].push({
97
- type: item.rule.type,
98
- message: `${item.name}必须为${message}`,
99
- transform: (value) => {
100
- if (value && value.length !== 0)
101
- return Number(value)
102
- else
103
- return defaultValue
104
- },
105
- trigger: 'blur',
106
- })
107
- }
108
- }
109
-
110
- function onSubmit() {
111
- emits('onSubmit', form.value)
112
- }
113
- async function validate() {
114
- await formRef.value?.validate()
115
- }
116
- watch(()=>props.formData, (val)=>{
117
- form.value = props.formData
118
- })
119
- defineExpose({ init, form, formGroupName, validate })
120
- </script>
121
-
122
- <template>
123
- <VanForm @submit="onSubmit" ref="formRef">
124
- <VanCellGroup inset>
125
- <XFormItem
126
- :mode="mode"
127
- v-for="(item, index) in realJsonData"
128
- :key="index"
129
- v-model="form[item.model]"
130
- :attr="item"
131
- :rules="rules"
132
- :service-name="myServiceName"
133
- :get-data-params="myGetDataParams"
134
- />
135
- </VanCellGroup>
136
- <div style="margin: 16px;" v-if="myFormItems.showSubmitBtn">
137
- <VanButton round block type="primary" native-type="submit">
138
- 提交 {{myFormItems.showSubmitBtn}}
139
- </VanButton>
140
- <slot />
141
- </div>
142
- </VanForm>
143
- </template>
144
-
145
- <style scoped>
146
-
147
- </style>
1
+ <script setup lang="ts">
2
+ import {
3
+ Button as VanButton,
4
+ CellGroup as VanCellGroup,
5
+ Form as VanForm,
6
+ } from 'vant'
7
+ import type { FormInstance } from 'vant'
8
+ import { computed, defineEmits, defineProps, onBeforeMount, reactive, ref, watch } from 'vue'
9
+ import XFormItem from '@af-mobile-client-vue3/components/data/XFormItem/index.vue'
10
+
11
+ interface FormItem {
12
+ addOrEdit: string
13
+ isOnlyAddOrEdit?: boolean
14
+ type?: string
15
+ model?: string
16
+ }
17
+
18
+ interface GroupFormItems {
19
+ btnName?: string
20
+ formJson: any[] // 根据实际类型调整
21
+ }
22
+ const props = withDefaults(defineProps<{
23
+ groupFormItems?: GroupFormItems
24
+ serviceName?: string
25
+ formData?: object
26
+ formName?: string
27
+ mode?: string
28
+ submitButton?: boolean
29
+ }>(), {
30
+ groupFormItems: null,
31
+ serviceName: undefined,
32
+ formData: null,
33
+ formName: 'default',
34
+ mode: '查询',
35
+ submitButton: true,
36
+ })
37
+ const emits = defineEmits(['onSubmit'])
38
+ const formRef = ref<FormInstance>()
39
+ const myFormItems = ref<FormItem[]>([])
40
+ const rules = reactive({})
41
+ const form = ref({})
42
+ const formGroupName = ref(null)
43
+ const myServiceName = ref('')
44
+ const loaded = ref(false)
45
+ let myGetDataParams = reactive({})
46
+ const realJsonData = computed(() => {
47
+ return myFormItems.value.filter((item) => {
48
+ return item.addOrEdit !== 'no'
49
+ })
50
+ })
51
+ onBeforeMount(() => {
52
+ init({ formItems: props.groupFormItems, serviceName: props.serviceName, formData: props.formData, formName: props.formName })
53
+ })
54
+ function init(params) {
55
+ const {
56
+ formItems,
57
+ serviceName,
58
+ getDataParams = {},
59
+ formData = null,
60
+ formName = 'default',
61
+ } = params
62
+ loaded.value = false
63
+ myFormItems.value = JSON.parse(JSON.stringify(formItems.formJson)) as FormItem[]
64
+ myServiceName.value = serviceName
65
+ formGroupName.value = formName
66
+ for (let i = 0; i < realJsonData.value.length; i++) {
67
+ const item = realJsonData.value[i]
68
+ setFormProps(form, item)
69
+ }
70
+ if (formData)
71
+ form.value = formData
72
+
73
+ myGetDataParams = getDataParams
74
+ loaded.value = true
75
+ }
76
+
77
+ function setFormProps(form, item) {
78
+ form.value[item.model] = undefined
79
+ if (item.rule) {
80
+ rules[item.model] = []
81
+ let defaultValue
82
+ let message
83
+ switch (item.rule.type) {
84
+ case 'number':
85
+ message = '数字'
86
+ defaultValue = 0
87
+ break
88
+ case 'integer':
89
+ message = '整数'
90
+ defaultValue = 0
91
+ break
92
+ case 'float':
93
+ message = '小数'
94
+ defaultValue = 0.0
95
+ break
96
+ case 'string':
97
+ message = '字符串'
98
+ defaultValue = ''
99
+ break
100
+ }
101
+ rules[item.model].push({
102
+ type: item.rule.type,
103
+ message: `${item.name}必须为${message}`,
104
+ transform: (value) => {
105
+ if (value && value.length !== 0)
106
+ return Number(value)
107
+ else
108
+ return defaultValue
109
+ },
110
+ trigger: 'blur',
111
+ })
112
+ }
113
+ }
114
+
115
+ function onSubmit() {
116
+ emits('onSubmit', form.value)
117
+ }
118
+ async function validate() {
119
+ await formRef.value?.validate()
120
+ }
121
+ watch(() => props.formData, (_val) => {
122
+ form.value = props.formData
123
+ })
124
+ defineExpose({ init, form, formGroupName, validate })
125
+ </script>
126
+
127
+ <template>
128
+ <VanForm ref="formRef" @submit="onSubmit">
129
+ <VanCellGroup inset>
130
+ <XFormItem
131
+ v-for="(item, index) in realJsonData"
132
+ :key="index"
133
+ v-model="form[item.model]"
134
+ :mode="props.mode"
135
+ :form="form"
136
+ :attr="item"
137
+ :rules="rules"
138
+ :service-name="myServiceName"
139
+ :get-data-params="myGetDataParams"
140
+ />
141
+ </VanCellGroup>
142
+ <div v-if="props.submitButton" style="margin: 16px;">
143
+ <VanButton round block type="primary" native-type="submit">
144
+ {{ props.groupFormItems.btnName ? props.groupFormItems.btnName : '提交' }}
145
+ </VanButton>
146
+ <slot />
147
+ </div>
148
+ </VanForm>
149
+ </template>
150
+
151
+ <style scoped>
152
+
153
+ </style>
@@ -1,75 +1,96 @@
1
- <script setup lang="ts">
2
- import {
3
- Tabs as VanTabs,
4
- Tab as VanTab,
5
- Row as VanRow,
6
- Button as VanButton
7
- } from 'vant'
8
- import { defineProps, watchEffect, onBeforeMount, ref, onMounted, watch, defineEmits } from 'vue'
9
- import XForm from '@af-mobile-client-vue3/components/data/XForm/index.vue'
10
- import NormalDataLayout from '@af-mobile-client-vue3/components/layout/NormalDataLayout/index.vue'
11
- import { useRouter } from 'vue-router'
12
- import {getConfigByName, query} from '@af-mobile-client-vue3/services/api/common'
13
-
14
- const props = withDefaults(defineProps<{
15
- configName?: string
16
- serviceName?: string,
17
- groupFormData?: object
18
- }>(), {
19
- configName: '',
20
- serviceName: undefined,
21
- groupFormData: {}
22
- })
23
- const emit = defineEmits(['submit'])
24
- const router = useRouter()
25
- const groupItems = ref([])
26
- const formData = ref({})
27
- function initComponents () {
28
- getConfigByName(props.configName, (result) => {
29
- groupItems.value = result.groups
30
- formData.value = props.groupFormData
31
- result.groups.forEach((group) => {
32
- if(!formData.value[group.groupName]){
33
- formData.value[group.groupName] = {}
34
- }
35
- })
36
- }, props.serviceName)
37
- }
38
- watch(()=>props.groupFormData, (val)=>{
39
- formData.value = {...formData.value, ...props.groupFormData}
40
- })
41
- onBeforeMount(()=>{
42
- initComponents()
43
- })
44
- const xFormListRef = ref([])
45
- const submit = async () => {
46
- for (const res of xFormListRef.value) {
47
- await res.validate()
48
- formData.value[res.formGroupName] = res.form
49
- }
50
- emit('submit', formData)
51
- }
52
- </script>
53
-
54
- <template>
55
- <div id="x-form-group">
56
- <VanTabs v-model:active="active" scrollspy sticky>
57
- <VanTab v-for="(item, index) in groupItems" :title="item.describe" :key="item.groupName+index" >
58
- <div class="x-form-group-item">
59
- <XForm :group-form-items="item" :form-data="formData[item.groupName]" ref="xFormListRef" :form-name="item.groupName" :service-name="props.serviceName"/>
60
- </div>
61
- </VanTab>
62
- </VanTabs>
63
- <VanButton round block type="primary" @click="submit">
64
- 提交
65
- </VanButton>
66
- </div>
67
- </template>
68
- <style scoped lang="less">
69
- #x-form-group{
70
- background-color: rgb(247,248,250);
71
- .x-form-group-item{
72
- margin:20px 0;
73
- }
74
- }
75
- </style>
1
+ <script setup lang="ts">
2
+ import {
3
+ Button as VanButton,
4
+ Tab as VanTab,
5
+ Tabs as VanTabs,
6
+ } from 'vant'
7
+ import { defineEmits, defineProps, onBeforeMount, ref, watch } from 'vue'
8
+ import XForm from '@af-mobile-client-vue3/components/data/XForm/index.vue'
9
+ import { getConfigByName } from '@af-mobile-client-vue3/services/api/common'
10
+
11
+ const props = withDefaults(defineProps<{
12
+ configName?: string
13
+ serviceName?: string
14
+ groupFormData?: object
15
+ mode?: string
16
+ }>(), {
17
+ configName: '',
18
+ serviceName: undefined,
19
+ groupFormData: () => ({}),
20
+ mode: '查询',
21
+ })
22
+ const emit = defineEmits(['submit'])
23
+ const groupItems = ref([])
24
+ const formData = ref({})
25
+ const submitGroup = ref(false)
26
+ const submitSimple = ref(false)
27
+ function initComponents() {
28
+ getConfigByName(props.configName, (result) => {
29
+ formData.value = props.groupFormData
30
+ if (result.groups) {
31
+ submitGroup.value = true
32
+ groupItems.value = result.groups
33
+ result.groups.forEach((group) => {
34
+ if (!formData.value[group.groupName])
35
+ formData.value[group.groupName] = {}
36
+ })
37
+ }
38
+ else {
39
+ submitSimple.value = result.showSubmitBtn
40
+ groupItems.value = [{ ...result }]
41
+ }
42
+ }, props.serviceName)
43
+ }
44
+ watch(() => props.groupFormData, (_val) => {
45
+ formData.value = { ...formData.value, ...props.groupFormData }
46
+ })
47
+ onBeforeMount(() => {
48
+ initComponents()
49
+ })
50
+ const xFormListRef = ref([])
51
+ async function submit() {
52
+ for (const res of xFormListRef.value) {
53
+ await res.validate()
54
+ formData.value[res.formGroupName] = res.form
55
+ }
56
+ emit('submit', formData)
57
+ }
58
+ </script>
59
+
60
+ <template>
61
+ <div id="x-form-group">
62
+ <VanTabs scrollspy sticky>
63
+ <VanTab
64
+ v-for="(item, index) in groupItems"
65
+ :key="item.groupName ? (item.groupName + index) : index"
66
+ :title="item.describe ? item.describe : null "
67
+ >
68
+ <div class="x-form-group-item">
69
+ <XForm
70
+ ref="xFormListRef"
71
+ :mode="props.mode"
72
+ :group-form-items="item"
73
+ :form-data="item.groupName ? formData[item.groupName] : formData"
74
+ :form-name="item.groupName"
75
+ :service-name="props.serviceName"
76
+ :submit-button="submitSimple"
77
+ @on-submit="submit"
78
+ />
79
+ </div>
80
+ </VanTab>
81
+ </VanTabs>
82
+ <VanButton v-if="submitGroup" round block type="primary" @click="submit">
83
+ 提交
84
+ </VanButton>
85
+ </div>
86
+ </template>
87
+
88
+ <style scoped lang="less">
89
+ #x-form-group{
90
+ background-color: rgb(247,248,250);
91
+ padding-bottom: 10px;
92
+ .x-form-group-item{
93
+ margin:20px 0;
94
+ }
95
+ }
96
+ </style>