/** * 通讯渠道配置组件 */ app.component('channels-config-page', { props: ['config'], emits: ['save'], setup(props, { emit }) { const { ref, reactive, watch } = Vue; const activeTab = ref('wework'); // 表单数据 const form = reactive({ wework: { enabled: false, corp_id: '', agent_id: '', secret: '', token: '', encoding_aes_key: '' }, feishu: { enabled: false, app_id: '', app_secret: '', verification_token: '', encrypt_key: '' } }); // 监听 props 变化 watch(() => props.config, (newVal) => { if (newVal) { if (newVal.wework) Object.assign(form.wework, newVal.wework); if (newVal.feishu) Object.assign(form.feishu, newVal.feishu); } }, { immediate: true, deep: true }); // 保存配置 function handleSave() { emit('save', { ...form }); } return { activeTab, form, handleSave }; }, template: `
保存配置
` });