Skip to content

Commit

Permalink
feat: 本地编辑
Browse files Browse the repository at this point in the history
  • Loading branch information
greper committed Feb 10, 2022
1 parent 6acb3cb commit ac80dbf
Show file tree
Hide file tree
Showing 7 changed files with 496 additions and 448 deletions.
2 changes: 1 addition & 1 deletion packages/fast-admin/fs-admin-naive-ui
8 changes: 2 additions & 6 deletions packages/fast-crud/src/components/crud/fs-form-wrapper.vue
Original file line number Diff line number Diff line change
Expand Up @@ -120,12 +120,8 @@ export default {
async function submit() {
loading.value = true;
try {
if (props.submit) {
props.submit({ formRef, close });
} else {
await formRef.value.submit();
close();
}
await formRef.value.submit();
close();
} catch (e) {
console.warn("submit error", e);
} finally {
Expand Down
55 changes: 25 additions & 30 deletions packages/fast-crud/src/components/fs-crud.vue
Original file line number Diff line number Diff line change
Expand Up @@ -63,7 +63,6 @@
ref="formWrapperRef"
:slots="computedFormSlots"
:inner-wrapper="innerWrapperRef"
:submit="submit"
@inner-change="onFormInnerChange"
@value-change="$emit('form-value-change', $event)"
/>
Expand Down Expand Up @@ -353,9 +352,6 @@ export default defineComponent({
*/
form: {},
modelValue: {
type: Array
}
},
emits: [
"search-submit",
Expand All @@ -372,35 +368,34 @@ export default defineComponent({
useProviders();
const search = useSearch(props, ctx);
const table = useTable(props, ctx, search);
const submit = computed(() => {
if (props.modelValue) {
return function ({ formRef, close }) {
const newData = [...props.modelValue];
if (formRef.value.mode === "add") {
newData.push({ ...formRef.value.form });
} else if (formRef.value.mode === "edit") {
newData[formRef.value.index] = { ...newData[formRef.value.index], ...formRef.value.form };
}
close();
ctx.emit("update:modelValue", newData);
nextTick(() => {
ctx.emit("refresh");
});
};
}
return undefined;
});
watch(
computed(() => props.modelValue),
() => {
ctx.emit("refresh");
}
);
// const submit = computed(() => {
// if (props.modelValue) {
// return function ({ formRef, close }) {
// const newData = [...props.modelValue];
//
// if (formRef.value.mode === "add") {
// newData.push({ ...formRef.value.form });
// } else if (formRef.value.mode === "edit") {
// newData[formRef.value.index] = { ...newData[formRef.value.index], ...formRef.value.form };
// }
// close();
// ctx.emit("update:modelValue", newData);
// nextTick(() => {
// ctx.emit("refresh");
// });
// };
// }
// return undefined;
// });
// watch(
// computed(() => props.modelValue),
// () => {
// ctx.emit("refresh");
// }
// );
return {
...search,
...table,
submit
};
}
});
Expand Down
18 changes: 18 additions & 0 deletions packages/fast-crud/src/d.ts/expose.ts
Original file line number Diff line number Diff line change
Expand Up @@ -88,6 +88,24 @@ export type CrudExpose = {
* 重新设置表格数据
*/
setTableData: ([]) => void;
/**
* 插入行
* @param index
* @param row
*/
insertTableRow: (index:number, row:Object) => void;
/**
* 更新行
* @param index
* @param row
*/
updateTableRow: (index:number, row:Object, merge:boolean) => void,
/**
* 删除行
* @param index
*/
removeTableRow: (index:number) => void,

/**
* 获取表格数据某一行
*/
Expand Down
1 change: 1 addition & 0 deletions packages/fast-crud/src/use/default-crud-options.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ export default {
defaultOptions({ t }) {
const ui = uiContext.get();
return {
mode:{},
search: {
options: {
...ui.form.inlineLayout,
Expand Down
25 changes: 21 additions & 4 deletions packages/fast-crud/src/use/use-crud.ts
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,14 @@ import { useColumns } from "./use-columns";
// eslint-disable-next-line @typescript-eslint/no-unused-vars
const { merge, cloneDeep } = useMerge();
export interface CrudOptions {
mode?:{
//模式名称: local,remote
name:string;
// 更新时是否merge
isMergeWhenUpdate:boolean;
// 添加时是否在列表最后插入
isAppendWhenAdd:boolean;
};
table?: {};
columns?: {};
data?: [];
Expand Down Expand Up @@ -79,15 +87,24 @@ export function useCrud(ctx: UseCrudProps) {
editForm: {
async doSubmit(context) {
doValueResolve(context);
await crudBinding.value.request.editRequest(context);
doRefresh();
if(options.mode?.name === 'local'){
expose.updateTableRow(context.index,context.form, options.mode.isMergeWhenUpdate)
}else{
await crudBinding.value.request.editRequest(context);
doRefresh();
}
}
},
addForm: {
async doSubmit(context) {
doValueResolve(context);
await crudBinding.value.request.addRequest(context);
doRefresh();
if(options.mode?.name === 'local'){
const index = options.mode.isAppendWhenAdd ? expose.getTableData().length : 0;
expose.insertTableRow(index, context.form)
}else{
await crudBinding.value.request.addRequest(context);
doRefresh();
}
}
}
};
Expand Down
Loading

0 comments on commit ac80dbf

Please sign in to comment.