Merged PR 56: bug537:配置スペース自動全チェック問題修正
ボタン配置スペース自動全選択の問題修正 原因:スペースのラベル名は同じ場合、選択キーはラベルが設定さてているため、特定できなくなる。 対策:スペースはUniqIDを自動付けることで区別できるように修正しました。 Related work items: #537
This commit is contained in:
BIN
document/kintone自動化ツールの設計書取込の仕様説明.xlsx
Normal file
BIN
document/kintone自動化ツールの設計書取込の仕様説明.xlsx
Normal file
Binary file not shown.
@@ -7,12 +7,13 @@
|
|||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
import { useAsyncState } from '@vueuse/core';
|
import { useAsyncState } from '@vueuse/core';
|
||||||
import { api } from 'boot/axios';
|
import { api } from 'boot/axios';
|
||||||
import { computed } from 'vue';
|
import { computed ,Prop,PropType} from 'vue';
|
||||||
|
import {IField} from 'src/types/ComponentTypes'
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: 'FieldList',
|
name: 'FieldList',
|
||||||
props: {
|
props: {
|
||||||
fields: Array,
|
fields: Array as PropType<IField[]>,
|
||||||
name: String,
|
name: String,
|
||||||
type: String,
|
type: String,
|
||||||
appId: Number,
|
appId: Number,
|
||||||
@@ -30,22 +31,22 @@ export default {
|
|||||||
{ name: 'code', label: 'フィールドコード', align: 'left', field: 'code', sortable: true },
|
{ name: 'code', label: 'フィールドコード', align: 'left', field: 'code', sortable: true },
|
||||||
{ name: 'type', label: 'フィールドタイプ', align: 'left', field: 'type', sortable: true }
|
{ name: 'type', label: 'フィールドタイプ', align: 'left', field: 'type', sortable: true }
|
||||||
]
|
]
|
||||||
|
|
||||||
const { state : rows, isReady: isLoaded, isLoading } = useAsyncState((args) => {
|
const { state : rows, isReady: isLoaded, isLoading } = useAsyncState((args) => {
|
||||||
if (props.fields && Object.keys(props.fields).length > 0) {
|
if (props.fields && Object.keys(props.fields).length > 0) {
|
||||||
return props.fields.map(f => ({ name: f.label, objectType: 'field', ...f }));
|
return props.fields.map(f => ({ name: f.label, ...f ,objectType: 'field'}));
|
||||||
} else {
|
} else {
|
||||||
return api.get('api/v1/appfields', {
|
return api.get('api/v1/appfields', {
|
||||||
params: {
|
params: {
|
||||||
app: props.appId
|
app: props.appId
|
||||||
}
|
}
|
||||||
}).then(res => {
|
}).then(res => {
|
||||||
console.log(res);
|
const fields = res.data.properties;
|
||||||
return Object.values(res.data.properties).map(f => ({ name: f.label, objectType: 'field', ...f }));
|
return Object.values(fields).map(f => ({ name: fields.label, objectType: 'field', ...fields }));
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}, [{ name: '', objectType: '', type: '', code: '', label: '' }])
|
}, [{ name: '', objectType: '', type: '', code: '', label: '' }])
|
||||||
|
|
||||||
return {
|
return {
|
||||||
columns,
|
columns,
|
||||||
rows,
|
rows,
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
<div v-if="!isLoaded" class="spinner flex flex-center">
|
<div v-if="!isLoaded" class="spinner flex flex-center">
|
||||||
<q-spinner color="primary" size="3em" />
|
<q-spinner color="primary" size="3em" />
|
||||||
</div>
|
</div>
|
||||||
<q-table flat bordered v-else row-key="name" :selection="type" v-model:selected="selected" :columns="columns"
|
<q-table flat bordered v-else row-key="id" :selection="type" v-model:selected="selected" :columns="columns"
|
||||||
:rows="rows" :pagination="pageSetting" :filter="filter" style="max-height: 55vh;"/>
|
:rows="rows" :pagination="pageSetting" :filter="filter" style="max-height: 55vh;"/>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
@@ -26,7 +26,7 @@ export default {
|
|||||||
default: false,
|
default: false,
|
||||||
},
|
},
|
||||||
selectedFields:{
|
selectedFields:{
|
||||||
type:Array,
|
type:Array ,
|
||||||
default:()=>[]
|
default:()=>[]
|
||||||
},
|
},
|
||||||
fieldTypes:{
|
fieldTypes:{
|
||||||
@@ -44,7 +44,7 @@ export default {
|
|||||||
{ name: 'name', required: true, label: 'フィールド名', align: 'left', field: row => row.name, sortable: true },
|
{ name: 'name', required: true, label: 'フィールド名', align: 'left', field: row => row.name, sortable: true },
|
||||||
{ name: 'code', label: 'フィールドコード', align: 'left', field: 'code', sortable: true },
|
{ name: 'code', label: 'フィールドコード', align: 'left', field: 'code', sortable: true },
|
||||||
{ name: 'type', label: 'フィールドタイプ', align: 'left', field: 'type', sortable: true }
|
{ name: 'type', label: 'フィールドタイプ', align: 'left', field: 'type', sortable: true }
|
||||||
]
|
];
|
||||||
const pageSetting = ref({
|
const pageSetting = ref({
|
||||||
sortBy: 'desc',
|
sortBy: 'desc',
|
||||||
descending: false,
|
descending: false,
|
||||||
@@ -63,12 +63,12 @@ export default {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
let fields = res.data.properties;
|
let fields = res.data.properties;
|
||||||
Object.keys(fields).forEach((key) => {
|
Object.keys(fields).forEach((key,index) => {
|
||||||
const fld = fields[key];
|
const fld = fields[key];
|
||||||
if(props.fieldTypes.length===0 || props.fieldTypes.includes(fld.type)){
|
if(props.fieldTypes.length===0 || props.fieldTypes.includes(fld.type)){
|
||||||
rows.push({ name: fld.label || fld.code, ...fld });
|
rows.push({id:index, name: fld.label || fld.code, ...fld });
|
||||||
}else if(props.fieldTypes.includes("lookup") && ("lookup" in fld)){
|
}else if(props.fieldTypes.includes("lookup") && ("lookup" in fld)){
|
||||||
rows.push({ name: fld.label || fld.code, ...fld });
|
rows.push({id:index, name: fld.label || fld.code, ...fld });
|
||||||
}
|
}
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -23,7 +23,7 @@
|
|||||||
</template>
|
</template>
|
||||||
</q-input>
|
</q-input>
|
||||||
</template>
|
</template>
|
||||||
<field-select ref="appDg" name="フィールド" :type="selectType" :appId="store.appInfo?.appId" :fieldTypes="fieldTypes" :filter="filter"></field-select>
|
<field-select ref="appDg" name="フィールド" :type="selectType" :appId="store.appInfo?.appId" :selectedFields="selectedFields" :fieldTypes="fieldTypes" :filter="filter"></field-select>
|
||||||
</show-dialog>
|
</show-dialog>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
@@ -80,6 +80,7 @@ export default defineComponent({
|
|||||||
const appDg = ref();
|
const appDg = ref();
|
||||||
const show = ref(false);
|
const show = ref(false);
|
||||||
const selectedField = ref(props.modelValue);
|
const selectedField = ref(props.modelValue);
|
||||||
|
const selectedFields =ref(!props.modelValue?[]: [props.modelValue]);
|
||||||
const store = useFlowEditorStore();
|
const store = useFlowEditorStore();
|
||||||
const isSelected = computed(() => {
|
const isSelected = computed(() => {
|
||||||
return selectedField.value !== null && typeof selectedField.value === 'object' && ('name' in selectedField.value)
|
return selectedField.value !== null && typeof selectedField.value === 'object' && ('name' in selectedField.value)
|
||||||
@@ -108,6 +109,7 @@ export default defineComponent({
|
|||||||
selectedField,
|
selectedField,
|
||||||
isSelected,
|
isSelected,
|
||||||
filter:ref(''),
|
filter:ref(''),
|
||||||
|
selectedFields
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|||||||
Reference in New Issue
Block a user