Browse Source

feat: extra functionality for `modify-form`

hechang27-sprt 6 months ago
parent
commit
5bca21b52c
  1. 16
      packages/base/data/modify-form.vue
  2. 4
      plugs/composables/useModifyForm.ts

16
packages/base/data/modify-form.vue

@ -59,8 +59,12 @@ @@ -59,8 +59,12 @@
</template>
<slot></slot>
<el-form-item class="form-btns">
<NoobButton type="primary" @click="formConfirm">{{ t(confirm) }}</NoobButton>
<NoobButton type="info" @click="emit('cancel')">{{ t(cancel) }}</NoobButton>
<NoobButton v-if="confirm || confirm === undefined" type="primary" @click="formConfirm">{{
t(typeof confirm === "string" && confirm ? confirm : "base.confirm")
}}</NoobButton>
<NoobButton v-if="cancel || cancel === undefined" type="info" @click="emit('cancel')">{{
t(typeof cancel === "string" && cancel ? cancel : "base.cancel")
}}</NoobButton>
</el-form-item>
</el-form>
</div>
@ -99,8 +103,8 @@ interface Props { @@ -99,8 +103,8 @@ interface Props {
type?: string | null;
modify?: boolean;
items?: FormItem[];
confirm?: string;
cancel?: string;
confirm?: string | boolean | null;
cancel?: string | boolean | null;
}
const prop = withDefaults(defineProps<Props>(), {
@ -111,8 +115,8 @@ const prop = withDefaults(defineProps<Props>(), { @@ -111,8 +115,8 @@ const prop = withDefaults(defineProps<Props>(), {
type: null,
modify: false,
items: () => [],
confirm: "base.confirm",
cancel: "base.cancel",
confirm: undefined,
cancel: undefined,
});
const emit = defineEmits<{

4
plugs/composables/useModifyForm.ts

@ -22,12 +22,13 @@ interface Options { @@ -22,12 +22,13 @@ interface Options {
handleEdit?: (value) => Promise<void>;
handleCancel?: () => Promise<void>;
handleError?: (kind: "validation" | "internal", err?) => void;
handleClose?: () => void;
init?: any;
extraProps?: string[] | "any" | ((code: string) => boolean);
}
export function useModifyForm(options: Options) {
const { formRef, handleAdd, handleEdit, handleCancel, init, extraProps } = options;
const { formRef, handleAdd, handleEdit, handleCancel, handleClose, init, extraProps } = options;
const initValue = init ?? {};
const props = options.props ?? [];
const propMap = Object.fromEntries(props.map((prop) => [prop.code, prop]));
@ -106,6 +107,7 @@ export function useModifyForm(options: Options) { @@ -106,6 +107,7 @@ export function useModifyForm(options: Options) {
},
close() {
handleClose?.();
this.data.dialog = this.flagOnClose;
},

Loading…
Cancel
Save