refactor: change property assignment logic in DialogProperties to options store
This commit is contained in:
parent
c2f3260d13
commit
c9c0535fa1
2 changed files with 34 additions and 27 deletions
|
|
@ -271,33 +271,7 @@ function confirmDelete(items: unknown[], index: number) {
|
||||||
}
|
}
|
||||||
|
|
||||||
async function assignTemp() {
|
async function assignTemp() {
|
||||||
const res = await getPropertyList({ pageSize: 999, activeOnly: true });
|
propertiesOption.value = optionStore.globalOption?.propertiesField;
|
||||||
const targetOptions = optionStore.globalOption?.propertiesField ?? [];
|
|
||||||
|
|
||||||
if (!res) return;
|
|
||||||
|
|
||||||
const propList = res.result.map((v) => {
|
|
||||||
return {
|
|
||||||
label: locale.value === 'eng' ? v.nameEN : v.name,
|
|
||||||
value: toCamelCase(v.nameEN),
|
|
||||||
type: v.type.type,
|
|
||||||
};
|
|
||||||
});
|
|
||||||
|
|
||||||
propertiesOption.value = [...targetOptions];
|
|
||||||
|
|
||||||
const existingValues = new Set(
|
|
||||||
propertiesOption.value.map((item: { value: string }) => item.value),
|
|
||||||
);
|
|
||||||
const newProps = propList.filter((prop) => !existingValues.has(prop.value));
|
|
||||||
|
|
||||||
if (newProps) {
|
|
||||||
propertiesOption.value.splice(
|
|
||||||
propertiesOption.value.length - 4,
|
|
||||||
0,
|
|
||||||
...newProps,
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
tempStep.value = JSON.parse(JSON.stringify(dataStep.value));
|
tempStep.value = JSON.parse(JSON.stringify(dataStep.value));
|
||||||
tempWorkflowId.value = workflowId.value;
|
tempWorkflowId.value = workflowId.value;
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,11 @@
|
||||||
import { ref, watch } from 'vue';
|
import { ref, watch } from 'vue';
|
||||||
import { defineStore } from 'pinia';
|
import { defineStore } from 'pinia';
|
||||||
import { useI18n } from 'vue-i18n';
|
import { useI18n } from 'vue-i18n';
|
||||||
|
import { useProperty } from 'src/stores/property';
|
||||||
|
import { toCamelCase } from '../utils';
|
||||||
|
|
||||||
const useOptionStore = defineStore('optionStore', () => {
|
const useOptionStore = defineStore('optionStore', () => {
|
||||||
|
const { getPropertyList } = useProperty();
|
||||||
const { locale } = useI18n();
|
const { locale } = useI18n();
|
||||||
|
|
||||||
const globalOption = ref();
|
const globalOption = ref();
|
||||||
|
|
@ -12,6 +15,36 @@ const useOptionStore = defineStore('optionStore', () => {
|
||||||
rawOption.value = await fetch('/option/option.json').then((r) => r.json());
|
rawOption.value = await fetch('/option/option.json').then((r) => r.json());
|
||||||
|
|
||||||
_switchOptionLang();
|
_switchOptionLang();
|
||||||
|
|
||||||
|
const res = await getPropertyList({ pageSize: 999, activeOnly: true });
|
||||||
|
const targetOptions = globalOption.value?.propertiesField ?? [];
|
||||||
|
|
||||||
|
if (!res) return;
|
||||||
|
|
||||||
|
const propList = res.result.map((v) => {
|
||||||
|
return {
|
||||||
|
label: locale.value === 'eng' ? v.nameEN : v.name,
|
||||||
|
value: toCamelCase(v.nameEN),
|
||||||
|
type: v.type.type,
|
||||||
|
};
|
||||||
|
});
|
||||||
|
|
||||||
|
globalOption.value.propertiesField = [...targetOptions];
|
||||||
|
|
||||||
|
const existingValues = new Set(
|
||||||
|
globalOption.value.propertiesField.map(
|
||||||
|
(item: { value: string }) => item.value,
|
||||||
|
),
|
||||||
|
);
|
||||||
|
const newProps = propList.filter((prop) => !existingValues.has(prop.value));
|
||||||
|
|
||||||
|
if (newProps) {
|
||||||
|
globalOption.value.propertiesField.splice(
|
||||||
|
globalOption.value.propertiesField.length - 4,
|
||||||
|
0,
|
||||||
|
...newProps,
|
||||||
|
);
|
||||||
|
}
|
||||||
})();
|
})();
|
||||||
|
|
||||||
watch(locale, _switchOptionLang);
|
watch(locale, _switchOptionLang);
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue