This commit is contained in:
2021-06-28 23:28:46 +00:00
parent 708cde58af
commit 00442db024
2 changed files with 45 additions and 86 deletions

View File

@@ -120,29 +120,33 @@ export default {
vm.formState.readOnly = !vm.rights.change; vm.formState.readOnly = !vm.rights.change;
window.$gz.eventBus.$on("menu-click", clickHandler); window.$gz.eventBus.$on("menu-click", clickHandler);
let setDirty = false;
let setValid = true;
//id 0 means create a new record don't load one //id 0 means create a new record don't load one
if (vm.$route.params.recordid != 0) { if (vm.$route.params.recordid != 0) {
//is there already an obj from a prior operation? //is there already an obj from a prior operation?
if (this.$route.params.obj) { if (this.$route.params.obj) {
//yes, no need to fetch it //yes, no need to fetch it
this.obj = this.$route.params.obj; this.obj = this.$route.params.obj;
window.$gz.form.setFormState({
vm: vm,
loading: false
});
} else { } else {
await vm.getDataFromApi(vm.$route.params.recordid); //let getdata handle loading await vm.getDataFromApi(vm.$route.params.recordid); //let getdata handle loading
} }
} else { } else {
window.$gz.form.setFormState({ //Might be a duplicate and contain another record
vm: vm, if (this.$route.params.obj) {
loading: false this.obj = this.$route.params.obj;
}); this.obj.concurrency = undefined;
this.obj.id = 0;
setDirty = true;
}
} }
window.$gz.form.setFormState({ window.$gz.form.setFormState({
vm: vm, vm: vm,
dirty: false, loading: false,
valid: true dirty: setDirty,
valid: setValid
}); });
generateMenu(vm); generateMenu(vm);
@@ -397,41 +401,17 @@ export default {
} }
}, },
async duplicate() { async duplicate() {
let vm = this; //Navigate to new record
if (!vm.canDuplicate || vm.$route.params.recordid == 0) { //(this code written in the great heatwave of June 2021 36c 46% humidity in office no AC)
return; this.$router.push({
} name: "inv-part-warehouse",
window.$gz.form.setFormState({ params: {
vm: vm, recordid: 0,
loading: true obj: this.obj
});
let url = API_BASE_URL + "duplicate/" + vm.$route.params.recordid;
try {
window.$gz.form.deleteAllErrorBoxErrors(vm);
let res = await window.$gz.api.upsert(url);
if (res.error) {
vm.formState.serverError = res.error;
window.$gz.form.setErrorBoxErrors(vm);
} else {
//Navigate to new record
this.$router.push({
name: "inv-part-warehouse",
params: {
recordid: res.data.id,
obj: res.data // Pass data object to new form
}
});
} }
} catch (ex) { });
window.$gz.errorHandler.handleFormError(ex, vm);
} finally {
window.$gz.form.setFormState({
vm: vm,
loading: false
});
}
} }
//end methods //end methods
} }
}; };

View File

@@ -324,29 +324,33 @@ export default {
vm.formState.readOnly = !vm.rights.change; vm.formState.readOnly = !vm.rights.change;
window.$gz.eventBus.$on("menu-click", clickHandler); window.$gz.eventBus.$on("menu-click", clickHandler);
let setDirty = false;
let setValid = true;
//id 0 means create a new record don't load one //id 0 means create a new record don't load one
if (vm.$route.params.recordid != 0) { if (vm.$route.params.recordid != 0) {
//is there already an obj from a prior operation? //is there already an obj from a prior operation?
if (this.$route.params.obj) { if (this.$route.params.obj) {
//yes, no need to fetch it //yes, no need to fetch it
this.obj = this.$route.params.obj; this.obj = this.$route.params.obj;
window.$gz.form.setFormState({
vm: vm,
loading: false
});
} else { } else {
await vm.getDataFromApi(vm.$route.params.recordid); //let getdata handle loading await vm.getDataFromApi(vm.$route.params.recordid); //let getdata handle loading
} }
} else { } else {
window.$gz.form.setFormState({ //Might be a duplicate and contain another record
vm: vm, if (this.$route.params.obj) {
loading: false this.obj = this.$route.params.obj;
}); this.obj.concurrency = undefined;
this.obj.id = 0;
setDirty = true;
}
} }
window.$gz.form.setFormState({ window.$gz.form.setFormState({
vm: vm, vm: vm,
dirty: false, loading: false,
valid: true dirty: setDirty,
valid: setValid
}); });
generateMenu(vm); generateMenu(vm);
@@ -612,41 +616,16 @@ export default {
} }
}, },
async duplicate() { async duplicate() {
let vm = this; //Navigate to new record
if (!vm.canDuplicate || vm.$route.params.recordid == 0) { this.$router.push({
return; name: "inv-part",
} params: {
window.$gz.form.setFormState({ recordid: 0,
vm: vm, obj: this.obj
loading: true
});
let url = API_BASE_URL + "duplicate/" + vm.$route.params.recordid;
try {
window.$gz.form.deleteAllErrorBoxErrors(vm);
let res = await window.$gz.api.upsert(url);
if (res.error) {
vm.formState.serverError = res.error;
window.$gz.form.setErrorBoxErrors(vm);
} else {
//Navigate to new record
this.$router.push({
name: "inv-part",
params: {
recordid: res.data.id,
obj: res.data // Pass data object to new form
}
});
} }
} catch (ex) { });
window.$gz.errorHandler.handleFormError(ex, vm);
} finally {
window.$gz.form.setFormState({
vm: vm,
loading: false
});
}
} }
//end methods //end methods
} }
}; };