101 lines
3.4 KiB
Vue
101 lines
3.4 KiB
Vue
<template>
|
||
<BasicModal @register="registerModal" :width="860" :title="title" @ok="handleSubmit">
|
||
<a-alert
|
||
v-if="showStreamNodeHint"
|
||
type="info"
|
||
show-icon
|
||
style="margin-bottom: 12px"
|
||
:message="streamNodeHintTitle"
|
||
:description="streamNodeHintDesc"
|
||
/>
|
||
<BasicForm @register="registerForm" />
|
||
</BasicModal>
|
||
</template>
|
||
|
||
<script lang="ts">
|
||
import { defineComponent, ref } from 'vue';
|
||
import { BasicModal, useModalInner } from '/@/components/Modal';
|
||
import { useForm, BasicForm } from '/@/components/Form';
|
||
import { thirdAppFormSchema } from './ThirdApp.data';
|
||
import { getThirdConfigByTenantId, saveOrUpdateThirdConfig, getDingTalkStreamNodeInfo } from './ThirdApp.api';
|
||
export default defineComponent({
|
||
name: 'ThirdAppConfigModal',
|
||
components: { BasicModal, BasicForm },
|
||
setup(props, { emit }) {
|
||
const title = ref<string>('钉钉配置');
|
||
const showStreamNodeHint = ref(false);
|
||
const streamNodeHintTitle = ref('本机 Stream 节点信息');
|
||
const streamNodeHintDesc = ref('');
|
||
//表单配置
|
||
const [registerForm, { resetFields, setFieldsValue, validate }] = useForm({
|
||
schemas: thirdAppFormSchema,
|
||
showActionButtonGroup: false,
|
||
labelCol: { span: 24 },
|
||
wrapperCol: { span: 24 },
|
||
});
|
||
//表单赋值
|
||
const [registerModal, { setModalProps, closeModal }] = useModalInner(async (data) => {
|
||
setModalProps({ confirmLoading: true });
|
||
showStreamNodeHint.value = false;
|
||
streamNodeHintDesc.value = '';
|
||
if (data.thirdType == 'dingtalk') {
|
||
title.value = '钉钉配置';
|
||
try {
|
||
const nodeInfo = await getDingTalkStreamNodeInfo();
|
||
if (nodeInfo) {
|
||
showStreamNodeHint.value = true;
|
||
const ips = Array.isArray(nodeInfo.localIps) ? nodeInfo.localIps.join(', ') : '';
|
||
const receiverText = nodeInfo.thisNodeReceiver ? '是(本机将接收回调)' : '否(本机不接收回调)';
|
||
streamNodeHintDesc.value =
|
||
`主机名:${nodeInfo.hostName || '-'}\n本机IP:${ips || '-'}\n当前是否接收:${receiverText}\n` +
|
||
`提示:开启「限制接收节点」后,请将本机局域网 IP 填入「允许接收的IP」`;
|
||
}
|
||
} catch (e) {
|
||
// 接口不可用时忽略
|
||
}
|
||
} else if (data.thirdType == 'kingdee') {
|
||
title.value = '金蝶配置';
|
||
} else {
|
||
title.value = '企业微信配置';
|
||
}
|
||
//重置表单
|
||
await resetFields();
|
||
let values = await getThirdConfigByTenantId({ tenantId: data.tenantId, thirdType: data.thirdType });
|
||
setModalProps({ confirmLoading: false });
|
||
//表单赋值
|
||
if (values) {
|
||
await setFieldsValue(values);
|
||
} else {
|
||
await setFieldsValue(data);
|
||
}
|
||
});
|
||
|
||
/**
|
||
* 第三方配置点击事件
|
||
*/
|
||
async function handleSubmit() {
|
||
let values = await validate();
|
||
let isUpdate = false;
|
||
if (values.id) {
|
||
isUpdate = true;
|
||
}
|
||
await saveOrUpdateThirdConfig(values, isUpdate);
|
||
emit('success');
|
||
closeModal();
|
||
}
|
||
|
||
return {
|
||
title,
|
||
showStreamNodeHint,
|
||
streamNodeHintTitle,
|
||
streamNodeHintDesc,
|
||
registerForm,
|
||
registerModal,
|
||
handleSubmit,
|
||
};
|
||
},
|
||
});
|
||
</script>
|
||
|
||
<style scoped></style>
|