ThirdAppConfigModal.vue 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. <template>
  2. <BasicModal @register="registerModal" :width="800" :title="title" @ok="handleSubmit">
  3. <BasicForm @register="registerForm" />
  4. </BasicModal>
  5. </template>
  6. <script lang="ts">
  7. import { defineComponent, ref } from 'vue';
  8. import { BasicModal, useModalInner } from '/@/components/Modal';
  9. import { useForm, BasicForm } from '/@/components/Form';
  10. import { thirdAppFormSchema } from './ThirdApp.data';
  11. import { getThirdConfigByTenantId, saveOrUpdateThirdConfig } from './ThirdApp.api';
  12. export default defineComponent({
  13. name: 'ThirdAppConfigModal',
  14. components: { BasicModal, BasicForm },
  15. setup(props, { emit }) {
  16. const title = ref<string>('钉钉配置');
  17. //表单配置
  18. const [registerForm, { resetFields, setFieldsValue, validate }] = useForm({
  19. schemas: thirdAppFormSchema,
  20. showActionButtonGroup: false,
  21. labelCol: { span: 24 },
  22. wrapperCol: { span: 24 },
  23. });
  24. //表单赋值
  25. const [registerModal, { setModalProps, closeModal }] = useModalInner(async (data) => {
  26. setModalProps({ confirmLoading: true });
  27. if (data.thirdType == 'dingtalk') {
  28. title.value = '钉钉配置';
  29. } else {
  30. title.value = '企业微信配置';
  31. }
  32. //重置表单
  33. await resetFields();
  34. let values = await getThirdConfigByTenantId({ tenantId: data.tenantId, thirdType: data.thirdType });
  35. setModalProps({ confirmLoading: false });
  36. //表单赋值
  37. if (values) {
  38. await setFieldsValue(values);
  39. } else {
  40. await setFieldsValue(data);
  41. }
  42. });
  43. /**
  44. * 第三方配置点击事件
  45. */
  46. async function handleSubmit() {
  47. let values = await validate();
  48. let isUpdate = false;
  49. if (values.id) {
  50. isUpdate = true;
  51. }
  52. await saveOrUpdateThirdConfig(values, isUpdate);
  53. emit('success');
  54. closeModal();
  55. }
  56. return {
  57. title,
  58. registerForm,
  59. registerModal,
  60. handleSubmit,
  61. };
  62. },
  63. });
  64. </script>
  65. <style scoped></style>