| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110 |
- export function useOperations() {
- const formPropsMap = new Map([
- [
- 'coal',
- {
- schemas: schemasCoalAlarm,
- submitFunc: (res) => (res.id ? updateCoalSeamAlarmRule(res) : addCoalSeamAlarmRule(res)),
- fetchRecord({ id, mineCode }) {
- return getCoalSeamAlarmRule({ coalSeamId: id, mineCode: mineCode }).then((r) => r[r.length - 1]);
- },
- },
- ],
- [
- 'goaf',
- {
- schemas: schemasGoafLimit,
- submitFunc: (res) => (res.id ? updateGoafDataLimit(res) : addGoafDataLimit(res)),
- fetchRecord({ id }) {
- return getGoafDataLimit({ goafId: id }).then((r) => r[r.length - 1]);
- },
- },
- ],
- ]);
- const modalPropsMap = new Map<string, Partial<ModalProps>>([
- ['coal', { title: '预警参数设置', visible: true, loading: true }],
- ['goaf', { title: '超限预警设置', visible: true, loading: true }],
- ]);
- const submitResolver = ref<(res: any) => Promise<void>>();
- // 点击编辑后,获取对应的表单和弹窗配置
- async function handleEdit(record, sign: string) {
- if (!modalPropsMap.has(sign)) return;
- if (!formPropsMap.has(sign)) return;
- setModalProps(modalPropsMap.get(sign) as ModalProps);
- const { schemas, fetchRecord, submitFunc } = formPropsMap.get(sign)!;
- const res = await fetchRecord(record);
- console.log('debug before resetSchema');
- await resetSchema(schemas);
- console.log('debug after resetSchema');
- await nextTick();
- console.log('debug before setFieldsValue');
- if (res.id) {
- await setFieldsValue(res);
- } else {
- await resetFields();
- }
- console.log('debug after setFieldsValue');
- await nextTick();
- console.log('debug before setFormProps');
- // 不要使用setFormProps因为它会错误的触发submit方法
- // await setFormProps({ submitFunc });
- submitResolver.value = submitFunc;
- console.log('debug after setFormProps');
- setModalProps({ loading: false });
- // await setFormProps({ model: res });
- }
- async function handleAdd(record, sign: string) {
- if (!modalPropsMap.has(sign)) return;
- if (!formPropsMap.has(sign)) return;
- setModalProps(modalPropsMap.get(sign) as ModalProps);
- const { schemas, submitFunc } = formPropsMap.get(sign)!;
- await resetSchema(schemas);
- await nextTick();
- await resetFields();
- await nextTick();
- // 不要使用setFormProps因为它会错误的触发submit方法
- // await setFormProps({ submitFunc });
- submitResolver.value = submitFunc;
- setModalProps({ loading: false });
- // await setFormProps({ model: res });
- }
- const deletionPropsMap = new Map<string, { api: (id: string) => Promise<void> }>([
- ['coal', { api: (id) => deleteCoalSeamAlarmRule({ id }) }],
- ['goaf', { api: (id) => deleteGoafDataLimit({ id }) }],
- ]);
- function handleDelete(record, sign: string) {
- if (!deletionPropsMap.has(sign)) return;
- deletionPropsMap.get(sign)?.api(record.id);
- }
- const [registerModal, { setModalProps, closeModal }] = useModal();
- const [registerForm, { setProps: setFormProps, resetFields, setFieldsValue, validate, submit, resetSchema }] = useForm({
- model: {},
- schemas: schemasCoalAlarm,
- showResetButton: false,
- showSubmitButton: false,
- colon: false,
- compact: true,
- });
- function handleSubmit() {
- return validate().then((res) => {
- submitResolver && submitResolver(res);
- });
- submit().then(() => {
- closeModal();
- });
- }
- }
|