Compare commits
9 Commits
e233e08857
...
dev2-fix
| Author | SHA1 | Date | |
|---|---|---|---|
| 2a290c3142 | |||
| de717f25a5 | |||
| 9c4adc48ba | |||
|
|
171f0dfa89 | ||
|
|
6869505d9a | ||
|
|
a8ec97969f | ||
| c58887942b | |||
| 7fccf97eaf | |||
| 0f6494acdc |
File diff suppressed because one or more lines are too long
7285
db/kintone-dev2-db.sql
Normal file
7285
db/kintone-dev2-db.sql
Normal file
File diff suppressed because one or more lines are too long
BIN
document/Ver2機能一覧 1.xlsx
Normal file
BIN
document/Ver2機能一覧 1.xlsx
Normal file
Binary file not shown.
@@ -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="https://kab-backend-unittest.azurewebsites.net/"
|
||||||
#ローカル開発環境
|
#ローカル開発環境
|
||||||
#KAB_BACKEND_URL="http://127.0.0.1:8000/"
|
KAB_BACKEND_URL="http://127.0.0.1:8000/"
|
||||||
|
|||||||
@@ -11,7 +11,7 @@
|
|||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
import { ref, PropType } from 'vue';
|
import { ref, PropType, watchEffect } from 'vue';
|
||||||
import { api } from 'boot/axios';
|
import { api } from 'boot/axios';
|
||||||
import DetailFieldTable from './dialog/DetailFieldTable.vue';
|
import DetailFieldTable from './dialog/DetailFieldTable.vue';
|
||||||
|
|
||||||
@@ -33,6 +33,9 @@ export default {
|
|||||||
filter: String,
|
filter: String,
|
||||||
filterInitRowsFunc: {
|
filterInitRowsFunc: {
|
||||||
type: Function as PropType<(app: IAppDisplay) => boolean>,
|
type: Function as PropType<(app: IAppDisplay) => boolean>,
|
||||||
|
},
|
||||||
|
updateSelectApp: {
|
||||||
|
type: Function
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
setup(props) {
|
setup(props) {
|
||||||
@@ -44,6 +47,12 @@ export default {
|
|||||||
{ name: 'createdate', label: '作成日時', field: 'createdate', align: 'left' }
|
{ 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 fetchApps = async () => {
|
||||||
const res = await api.get('api/v1/allapps');
|
const res = await api.get('api/v1/allapps');
|
||||||
return res.data.apps.map((item: any) => ({
|
return res.data.apps.map((item: any) => ({
|
||||||
|
|||||||
@@ -18,7 +18,7 @@
|
|||||||
input-debounce="0"
|
input-debounce="0"
|
||||||
:options="canSharedUserFilteredOptions"
|
:options="canSharedUserFilteredOptions"
|
||||||
clearable
|
clearable
|
||||||
:placeholder="canSharedUserFilter ? '' : domain.domainActive ? '権限を付与するユーザーを選択' : 'ドメインが無効なため、権限を付与できません'"
|
:placeholder="canSharedUserFilter ? '' : domain.domainActive ? '権限を付与するユーザーを選択' : '接続先が無効なため、権限を付与できません'"
|
||||||
@filter="filterFn">
|
@filter="filterFn">
|
||||||
|
|
||||||
<template v-slot:selected-item="scope">
|
<template v-slot:selected-item="scope">
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
<template>
|
<template>
|
||||||
<share-domain-dialog
|
<share-domain-dialog
|
||||||
:dialogTitle="`「${domain.name}」のドメイン利用権限設定`"
|
:dialogTitle="`「${domain.name}」の接続先利用権限設定`"
|
||||||
userListTitle="ドメイン利用権限を持つユーザー"
|
userListTitle="接続先利用権限を持つユーザー"
|
||||||
:domain="domain"
|
:domain="domain"
|
||||||
:share-api="shareApi"
|
:share-api="shareApi"
|
||||||
:remove-shared-api="removeSharedApi"
|
:remove-shared-api="removeSharedApi"
|
||||||
|
|||||||
@@ -96,7 +96,7 @@ const essentialLinks: EssentialLinkProps[] = reactive([
|
|||||||
target: '_self',
|
target: '_self',
|
||||||
permission: MenuMapping.role
|
permission: MenuMapping.role
|
||||||
},
|
},
|
||||||
// ------------ドメイン-------------
|
// ------------接続先管理-------------
|
||||||
{
|
{
|
||||||
title: '接続先管理',
|
title: '接続先管理',
|
||||||
caption: 'kintoneの接続先設定',
|
caption: 'kintoneの接続先設定',
|
||||||
|
|||||||
@@ -76,7 +76,7 @@
|
|||||||
|
|
||||||
<q-item tag="label" class="q-pl-sm q-pr-none q-py-xs">
|
<q-item tag="label" class="q-pl-sm q-pr-none q-py-xs">
|
||||||
<q-item-section>
|
<q-item-section>
|
||||||
<q-item-label>ドメインの有効化</q-item-label>
|
<q-item-label>接続先の有効化</q-item-label>
|
||||||
</q-item-section>
|
</q-item-section>
|
||||||
<q-item-section avatar>
|
<q-item-section avatar>
|
||||||
<q-toggle v-model="domainActive" />
|
<q-toggle v-model="domainActive" />
|
||||||
@@ -143,12 +143,12 @@
|
|||||||
<!-- -1 loading -->
|
<!-- -1 loading -->
|
||||||
<q-card-section v-if="deleteLoadingState == -1" class="row items-center">
|
<q-card-section v-if="deleteLoadingState == -1" class="row items-center">
|
||||||
<q-spinner color="primary" size="2em"/>
|
<q-spinner color="primary" size="2em"/>
|
||||||
<span class="q-ml-sm">ドメイン利用権限を確認中</span>
|
<span class="q-ml-sm">接続先利用権限を確認中</span>
|
||||||
</q-card-section>
|
</q-card-section>
|
||||||
<!-- > 0 can't delete -->
|
<!-- > 0 can't delete -->
|
||||||
<q-card-section v-else-if="deleteLoadingState > 0" class="row items-center">
|
<q-card-section v-else-if="deleteLoadingState > 0" class="row items-center">
|
||||||
<q-icon name="error" color="negative" size="2em" />
|
<q-icon name="error" color="negative" size="2em" />
|
||||||
<span class="q-ml-sm">ドメインは使用中です。削除してもよろしいですか?</span>
|
<span class="q-ml-sm">接続先は使用中です。削除してもよろしいですか?</span>
|
||||||
</q-card-section>
|
</q-card-section>
|
||||||
<!-- 0/-2 can delete -->
|
<!-- 0/-2 can delete -->
|
||||||
<q-card-section v-else class="row items-center">
|
<q-card-section v-else class="row items-center">
|
||||||
@@ -262,7 +262,7 @@ const actionList = [
|
|||||||
action: (row: IDomainOwnerDisplay) => {openShareDg(SHARE_USE, row)} },
|
action: (row: IDomainOwnerDisplay) => {openShareDg(SHARE_USE, row)} },
|
||||||
{ label: '管理権限設定', icon: 'add_moderator', permission: Actions.domain.grantManage,
|
{ label: '管理権限設定', icon: 'add_moderator', permission: Actions.domain.grantManage,
|
||||||
disable: (row: IDomainOwnerDisplay) => !isOwner(row),
|
disable: (row: IDomainOwnerDisplay) => !isOwner(row),
|
||||||
tooltip: (row: IDomainOwnerDisplay) => isOwner(row) ? '' : 'ドメイン所有者でないため、操作できません',
|
tooltip: (row: IDomainOwnerDisplay) => isOwner(row) ? '' : '接続先の所有者でないため、操作できません',
|
||||||
action: (row: IDomainOwnerDisplay) => {openShareDg(SHARE_MANAGE, row)}
|
action: (row: IDomainOwnerDisplay) => {openShareDg(SHARE_MANAGE, row)}
|
||||||
},
|
},
|
||||||
{ separator: true },
|
{ separator: true },
|
||||||
|
|||||||
@@ -59,7 +59,7 @@ export default route(function (/* { store, ssrContext } */) {
|
|||||||
if (!authStore.hasDomain && !domainPages.includes(to.path)) {
|
if (!authStore.hasDomain && !domainPages.includes(to.path)) {
|
||||||
Dialog.create({
|
Dialog.create({
|
||||||
title: '注意',
|
title: '注意',
|
||||||
message: '既定/利用可能なドメインはありません。<br>接続先管理ページに遷移して処理します。',
|
message: '既定/利用可能な接続先はありません。<br>接続先管理ページに遷移して処理します。',
|
||||||
html: true,
|
html: true,
|
||||||
persistent: true,
|
persistent: true,
|
||||||
})
|
})
|
||||||
|
|||||||
@@ -103,7 +103,7 @@ export class AutoLookUpAction implements IAction {
|
|||||||
this.actionProps = actionNode.actionProps;
|
this.actionProps = actionNode.actionProps;
|
||||||
this.props = {
|
this.props = {
|
||||||
...actionNode.ActionValue,
|
...actionNode.ActionValue,
|
||||||
condition: JSON.parse((actionNode.ActionValue as any).condition),
|
condition: JSON.parse((actionNode.ActionValue as any).condition || '{}'),
|
||||||
} as IAutoLookUpProps;
|
} as IAutoLookUpProps;
|
||||||
// console.log(context);
|
// console.log(context);
|
||||||
|
|
||||||
@@ -111,7 +111,6 @@ export class AutoLookUpAction implements IAction {
|
|||||||
canNext: true,
|
canNext: true,
|
||||||
result: "",
|
result: "",
|
||||||
} as IActionResult;
|
} as IActionResult;
|
||||||
try {
|
|
||||||
const lookUpFields = this.props.lookupField.fields.filter(
|
const lookUpFields = this.props.lookupField.fields.filter(
|
||||||
(f) => f.lookup && f.lookup.relatedApp.app === String(kintone.app.getId())
|
(f) => f.lookup && f.lookup.relatedApp.app === String(kintone.app.getId())
|
||||||
);
|
);
|
||||||
@@ -120,7 +119,9 @@ export class AutoLookUpAction implements IAction {
|
|||||||
`ルックアップの設定は不正です。${this.props.lookupField.fields[0].label} `
|
`ルックアップの設定は不正です。${this.props.lookupField.fields[0].label} `
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
try {
|
||||||
const lookUpField = this.props.lookupField.fields[0];
|
const lookUpField = this.props.lookupField.fields[0];
|
||||||
|
this.showSpinnerModel(this.props.lookupField.app, lookUpField);
|
||||||
const key = event.record[lookUpField.lookup.relatedKeyField].value;
|
const key = event.record[lookUpField.lookup.relatedKeyField].value;
|
||||||
const targetRecords = await this.getUpdateRecords(lookUpField, key);
|
const targetRecords = await this.getUpdateRecords(lookUpField, key);
|
||||||
//更新対象がない時にスキップ
|
//更新対象がない時にスキップ
|
||||||
@@ -129,7 +130,6 @@ export class AutoLookUpAction implements IAction {
|
|||||||
}
|
}
|
||||||
const updateRecords = this.convertForLookup(targetRecords,lookUpField,key);
|
const updateRecords = this.convertForLookup(targetRecords,lookUpField,key);
|
||||||
console.log("updateRecords", updateRecords);
|
console.log("updateRecords", updateRecords);
|
||||||
this.showSpinnerModel(this.props.lookupField.app,lookUpField);
|
|
||||||
const updateResult = await this.updateLookupTarget(updateRecords);
|
const updateResult = await this.updateLookupTarget(updateRecords);
|
||||||
if(updateResult){
|
if(updateResult){
|
||||||
this.showResult(this.props.lookupField.app,lookUpField,updateRecords.length);
|
this.showResult(this.props.lookupField.app,lookUpField,updateRecords.length);
|
||||||
@@ -157,7 +157,7 @@ export class AutoLookUpAction implements IAction {
|
|||||||
if(typeof key==='string'){
|
if(typeof key==='string'){
|
||||||
query = `${lookUpField.code} = "${key}"`
|
query = `${lookUpField.code} = "${key}"`
|
||||||
}
|
}
|
||||||
if(this.props.condition.queryString!==''){
|
if(!!this.props.condition.queryString){
|
||||||
query = `${query} and (${this.props.condition.queryString})`
|
query = `${query} and (${this.props.condition.queryString})`
|
||||||
}
|
}
|
||||||
return query;
|
return query;
|
||||||
|
|||||||
@@ -645,7 +645,7 @@ export class InsertValueAction implements IAction{
|
|||||||
|
|
||||||
const conditionResult = this.getConditionResult(context);
|
const conditionResult = this.getConditionResult(context);
|
||||||
//保存成功イベントの場合、kintone async/await による非同期処理でフィールドに値を挿入する
|
//保存成功イベントの場合、kintone async/await による非同期処理でフィールドに値を挿入する
|
||||||
if(!event.type.includes('success')){
|
if(!event.type?.includes('success')){
|
||||||
|
|
||||||
//条件式の結果がtrueかつ挿入する値が変換できた場合、フィールド(ラジオボタン・ドロップダウン・チェックボックス・複数選択・文字列一行・文字列複数行・リッチエディタ・数値・日付・日時・時刻)にセット
|
//条件式の結果がtrueかつ挿入する値が変換できた場合、フィールド(ラジオボタン・ドロップダウン・チェックボックス・複数選択・文字列一行・文字列複数行・リッチエディタ・数値・日付・日時・時刻)にセット
|
||||||
if(conditionResult){
|
if(conditionResult){
|
||||||
|
|||||||
Reference in New Issue
Block a user