Compare commits

...

10 Commits

12 changed files with 7343 additions and 49 deletions

File diff suppressed because one or more lines are too long

7285
db/kintone-dev2-db.sql Normal file

File diff suppressed because one or more lines are too long

Binary file not shown.

View File

@@ -1,6 +1,6 @@
#開発環境
KAB_BACKEND_URL="https://ktune-backend-dev-eba8fkeyffegc3cz.japanwest-01.azurewebsites.net/"
#KAB_BACKEND_URL="https://ktune-backend-dev-eba8fkeyffegc3cz.japanwest-01.azurewebsites.net/"
#単体テスト環境
#KAB_BACKEND_URL="https://kab-backend-unittest.azurewebsites.net/"
#ローカル開発環境
#KAB_BACKEND_URL="http://127.0.0.1:8000/"
KAB_BACKEND_URL="http://127.0.0.1:8000/"

View File

@@ -11,7 +11,7 @@
</template>
<script lang="ts">
import { ref, PropType } from 'vue';
import { ref, PropType, watchEffect } from 'vue';
import { api } from 'boot/axios';
import DetailFieldTable from './dialog/DetailFieldTable.vue';
@@ -33,6 +33,9 @@ export default {
filter: String,
filterInitRowsFunc: {
type: Function as PropType<(app: IAppDisplay) => boolean>,
},
updateSelectApp: {
type: Function
}
},
setup(props) {
@@ -44,6 +47,12 @@ export default {
{ name: 'createdate', label: '作成日時', field: 'createdate', align: 'left' }
];
watchEffect(()=>{
if (selected.value && selected.value[0] && props.updateSelectApp) {
props.updateSelectApp(selected.value[0])
}
});
const fetchApps = async () => {
const res = await api.get('api/v1/allapps');
return res.data.apps.map((item: any) => ({

View File

@@ -18,7 +18,7 @@
input-debounce="0"
:options="canSharedUserFilteredOptions"
clearable
:placeholder="canSharedUserFilter ? '' : domain.domainActive ? '権限を付与するユーザーを選択' : 'ドメインが無効なため、権限を付与できません'"
:placeholder="canSharedUserFilter ? '' : domain.domainActive ? '権限を付与するユーザーを選択' : '接続先が無効なため、権限を付与できません'"
@filter="filterFn">
<template v-slot:selected-item="scope">

View File

@@ -1,7 +1,7 @@
<template>
<share-domain-dialog
:dialogTitle="`「${domain.name}」のドメイン利用権限設定`"
userListTitle="ドメイン利用権限を持つユーザー"
:dialogTitle="`「${domain.name}」の接続先利用権限設定`"
userListTitle="接続先利用権限を持つユーザー"
:domain="domain"
:share-api="shareApi"
:remove-shared-api="removeSharedApi"

View File

@@ -96,7 +96,7 @@ const essentialLinks: EssentialLinkProps[] = reactive([
target: '_self',
permission: MenuMapping.role
},
// ------------ドメイン-------------
// ------------接続先管理-------------
{
title: '接続先管理',
caption: 'kintoneの接続先設定',

View File

@@ -76,7 +76,7 @@
<q-item tag="label" class="q-pl-sm q-pr-none q-py-xs">
<q-item-section>
<q-item-label>ドメインの有効化</q-item-label>
<q-item-label>接続先の有効化</q-item-label>
</q-item-section>
<q-item-section avatar>
<q-toggle v-model="domainActive" />
@@ -143,12 +143,12 @@
<!-- -1 loading -->
<q-card-section v-if="deleteLoadingState == -1" class="row items-center">
<q-spinner color="primary" size="2em"/>
<span class="q-ml-sm">ドメイン利用権限を確認中</span>
<span class="q-ml-sm">接続先利用権限を確認中</span>
</q-card-section>
<!-- > 0 can't delete -->
<q-card-section v-else-if="deleteLoadingState > 0" class="row items-center">
<q-icon name="error" color="negative" size="2em" />
<span class="q-ml-sm">ドメインは使用中です。削除してもよろしいですか?</span>
<span class="q-ml-sm">接続先は使用中です。削除してもよろしいですか?</span>
</q-card-section>
<!-- 0/-2 can delete -->
<q-card-section v-else class="row items-center">
@@ -262,7 +262,7 @@ const actionList = [
action: (row: IDomainOwnerDisplay) => {openShareDg(SHARE_USE, row)} },
{ label: '管理権限設定', icon: 'add_moderator', permission: Actions.domain.grantManage,
disable: (row: IDomainOwnerDisplay) => !isOwner(row),
tooltip: (row: IDomainOwnerDisplay) => isOwner(row) ? '' : 'ドメイン所有者でないため、操作できません',
tooltip: (row: IDomainOwnerDisplay) => isOwner(row) ? '' : '接続先の所有者でないため、操作できません',
action: (row: IDomainOwnerDisplay) => {openShareDg(SHARE_MANAGE, row)}
},
{ separator: true },

View File

@@ -59,7 +59,7 @@ export default route(function (/* { store, ssrContext } */) {
if (!authStore.hasDomain && !domainPages.includes(to.path)) {
Dialog.create({
title: '注意',
message: '既定/利用可能なドメインはありません。<br>接続先管理ページに遷移して処理します。',
message: '既定/利用可能な接続先はありません。<br>接続先管理ページに遷移して処理します。',
html: true,
persistent: true,
})

View File

@@ -103,7 +103,7 @@ export class AutoLookUpAction implements IAction {
this.actionProps = actionNode.actionProps;
this.props = {
...actionNode.ActionValue,
condition: JSON.parse((actionNode.ActionValue as any).condition),
condition: JSON.parse((actionNode.ActionValue as any).condition || '{}'),
} as IAutoLookUpProps;
// console.log(context);
@@ -111,16 +111,17 @@ export class AutoLookUpAction implements IAction {
canNext: true,
result: "",
} as IActionResult;
try {
const lookUpFields = this.props.lookupField.fields.filter(
(f) => f.lookup && f.lookup.relatedApp.app === String(kintone.app.getId())
const lookUpFields = this.props.lookupField.fields.filter(
(f) => f.lookup && f.lookup.relatedApp.app === String(kintone.app.getId())
);
if (!lookUpFields || lookUpFields.length===0) {
throw new Error(
`ルックアップの設定は不正です。${this.props.lookupField.fields[0].label} `
);
if (!lookUpFields || lookUpFields.length===0) {
throw new Error(
`ルックアップの設定は不正です。${this.props.lookupField.fields[0].label} `
);
}
}
try {
const lookUpField = this.props.lookupField.fields[0];
this.showSpinnerModel(this.props.lookupField.app, lookUpField);
const key = event.record[lookUpField.lookup.relatedKeyField].value;
const targetRecords = await this.getUpdateRecords(lookUpField, key);
//更新対象がない時にスキップ
@@ -129,7 +130,6 @@ export class AutoLookUpAction implements IAction {
}
const updateRecords = this.convertForLookup(targetRecords,lookUpField,key);
console.log("updateRecords", updateRecords);
this.showSpinnerModel(this.props.lookupField.app,lookUpField);
const updateResult = await this.updateLookupTarget(updateRecords);
if(updateResult){
this.showResult(this.props.lookupField.app,lookUpField,updateRecords.length);
@@ -157,7 +157,7 @@ export class AutoLookUpAction implements IAction {
if(typeof key==='string'){
query = `${lookUpField.code} = "${key}"`
}
if(this.props.condition.queryString!==''){
if(!!this.props.condition.queryString){
query = `${query} and (${this.props.condition.queryString})`
}
return query;

View File

@@ -645,7 +645,7 @@ export class InsertValueAction implements IAction{
const conditionResult = this.getConditionResult(context);
//保存成功イベントの場合、kintone async/await による非同期処理でフィールドに値を挿入する
if(!event.type.includes('success')){
if(!event.type?.includes('success')){
//条件式の結果がtrueかつ挿入する値が変換できた場合、フィールドラジオボタン・ドロップダウン・チェックボックス・複数選択・文字列一行・文字列複数行・リッチエディタ・数値・日付・日時・時刻にセット
if(conditionResult){