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

4
plugs/composables/useModifyForm.ts

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

Loading…
Cancel
Save