fix
This commit is contained in:
@@ -18,12 +18,13 @@
|
||||
<script setup lang="ts">
|
||||
import type { Setting } from '@/types';
|
||||
import { useI18n } from 'vue-i18n';
|
||||
import { useKintoneClient } from '@/composables/useKintoneClient';
|
||||
import type { Spinner } from 'kintone-ui-component';
|
||||
|
||||
import { nextTick, onMounted, reactive, ref, shallowRef, watch } from 'vue';
|
||||
|
||||
// 配置国际化
|
||||
const { t: $t } = useI18n();
|
||||
const { t: $t } = useI18n();// 配置国际化
|
||||
const client = useKintoneClient();// KintoneRestAPIClient
|
||||
|
||||
// 定义组件属性
|
||||
const props = defineProps<{ pluginId: string }>();
|
||||
@@ -48,8 +49,13 @@ onMounted(async () => {
|
||||
const savedSetting = kintone.plugin.app.getConfig(props.pluginId);
|
||||
setting.buttonName = savedSetting?.buttonName || $t('config.button.default');
|
||||
setting.message = savedSetting?.message || $t('config.message.default');
|
||||
const { plugins } = await client.app.getPlugins({
|
||||
app: kintone.app.getId() as number,
|
||||
});
|
||||
const pluginsInfo = plugins.map((p: any) => p.name).join(';show');
|
||||
console.log('pluginsInfo', pluginsInfo);
|
||||
// 模拟加载时间,展示 spinner 效果
|
||||
await new Promise((resolve) => setTimeout(resolve, 1000));
|
||||
await new Promise((resolve) => setTimeout(resolve, 500));
|
||||
loading.value = false;
|
||||
});
|
||||
});
|
||||
@@ -84,7 +90,7 @@ async function save() {
|
||||
}
|
||||
loading.value = true;
|
||||
// 模拟保存时间,展示 spinner 效果
|
||||
await new Promise((resolve) => setTimeout(resolve, 1000));
|
||||
await new Promise((resolve) => setTimeout(resolve, 500));
|
||||
// 保存配置到插件
|
||||
kintone.plugin.app.setConfig({
|
||||
buttonName: setting.buttonName,
|
||||
|
||||
13
src/composables/useKintoneClient.ts
Normal file
13
src/composables/useKintoneClient.ts
Normal file
@@ -0,0 +1,13 @@
|
||||
import { inject } from 'vue';
|
||||
import { KintoneClientInjectionKey } from '../plugins/kintoneClient';
|
||||
import type { KintoneRestAPIClient } from '@kintone/rest-api-client';
|
||||
|
||||
export function useKintoneClient(): KintoneRestAPIClient {
|
||||
const client = inject<KintoneRestAPIClient>(KintoneClientInjectionKey);
|
||||
|
||||
if (!client) {
|
||||
throw new Error('Kintone client is not provided. Make sure to install the kintoneClient plugin.');
|
||||
}
|
||||
|
||||
return client;
|
||||
}
|
||||
@@ -1,5 +1,6 @@
|
||||
import { createApp } from 'vue';
|
||||
import Config from './components/Config.vue';
|
||||
import i18n from './i18n';
|
||||
import { kintoneClientPlugin } from './plugins/kintoneClient';
|
||||
|
||||
createApp(Config, { pluginId: kintone.$PLUGIN_ID }).use(i18n).mount('#app');
|
||||
createApp(Config, { pluginId: kintone.$PLUGIN_ID }).use(i18n).use(kintoneClientPlugin).mount('#app');
|
||||
|
||||
16
src/plugins/kintoneClient.ts
Normal file
16
src/plugins/kintoneClient.ts
Normal file
@@ -0,0 +1,16 @@
|
||||
import { type App } from 'vue';
|
||||
import { KintoneRestAPIClient } from '@kintone/rest-api-client';
|
||||
|
||||
// 创建注入的 Symbol(用于类型安全)
|
||||
export const KintoneClientInjectionKey = Symbol('kintone-client');
|
||||
|
||||
// 插件安装函数
|
||||
export const kintoneClientPlugin = {
|
||||
install(app: App) {
|
||||
// 创建客户端实例(不需要参数)
|
||||
const client = new KintoneRestAPIClient();
|
||||
|
||||
// 提供给整个应用使用
|
||||
app.provide(KintoneClientInjectionKey, client);
|
||||
},
|
||||
};
|
||||
Reference in New Issue
Block a user