form.vue
3.53 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
<template>
<div>
<BasicDrawer
destroyOnClose
showFooter
v-bind="$attrs"
@register="registerDrawer"
width="50%"
@ok="handleSubmit"
>
<BasicForm @register="registerForm">
</BasicForm>
</BasicDrawer>
</div>
</template>
<script lang="ts" setup name="sqlApi">
import {
getBigViewSql,
saveDataViewSql
} from "/@/api/bigscreen/center/bigscreenCenter";
import {BasicDrawer, useDrawerInner} from "/@/components/Drawer";
import {BasicForm, useForm} from "/@/components/Form";
import {schemas} from "/@/views/dataview/sqlApi/config/config";
import {nextTick, ref} from "vue";
import {useUtils} from "/@/views/dataview/publicApi/hooks/useUtils";
import {useI18n} from "/@/hooks/web/useI18n";
import {useMessage} from "/@/hooks/web/useMessage";
import {buildUUID} from "/@/utils/uuid";
const { t } = useI18n();
const isUpdate = ref(false);
const { createMessage } = useMessage();
const emits = defineEmits(['success', 'register']);
const putId = ref('');
const sshId = ref('');
const sslId = ref('');
const {
resetReqHttpType,
resetUpdateSchema,
} = useUtils();
const [registerDrawer, { setDrawerProps, closeDrawer }] = useDrawerInner(async (data) => {
await resetFields();
await nextTick();
setFieldsValue(resetReqHttpType);
const title = `${
!data.isUpdate ? t('visual.dataview.addtext') : t('visual.dataview.editText')
}${t('visual.dataview.publicInterface')}`;
setDrawerProps({ title });
updateSchema(resetUpdateSchema);
isUpdate.value = data.isUpdate;
!isUpdate.value ? (putId.value = '') : (putId.value = data.record?.id);
if (isUpdate.value) {
const _data = await getBigViewSql(data?.record?.id)
!isUpdate.value ? (sshId.value = '') : (sshId.value = _data?.ssh?.id);
!isUpdate.value ? (sslId.value = '') : (sslId.value = _data?.ssl?.id);
console.log(_data,'_data')
await setFieldsValue({
..._data,
ssh_ip: _data?.ssh?.ip,
ssh_port: _data?.ssh?.port,
ssh_sshName: _data?.ssh?.sshName,
ssh_privateKey: _data?.ssh?.privateKey ? [{ uid: buildUUID(), name: '公钥文件', url: _data?.ssh?.privateKey }] : [],
ssh_sshPassword: _data?.ssh?.sshPassword,
ssh_verifyMethod: _data?.ssh?.verifyMethod
});
}
});
const [registerForm, { resetFields, validate, setFieldsValue, updateSchema }] = useForm({
labelWidth: 160,
schemas: schemas(),
showActionButtonGroup: false,
});
const handleSubmit = async () => {
try {
setDrawerProps({ loading: true });
const values = await validate();
if (!values) return;
const processedData = {
...values,
id: !putId.value ? null : putId.value,
ssl: !sslId.value ? null : {id: sslId.value},
ssh: {
id: !sshId.value ? null : sshId.value,
ip: values.ssh_ip,
port: values.ssh_port,
sshName: values.ssh_sshName,
privateKey: values.ssh_privateKey?.[0]?.url || '',
privateKeyFileName: values.ssh_privateKey?.[0]?.name || '',
sshPassword: values.ssh_sshPassword,
verifyMethod: values.ssh_verifyMethod
}
}
delete processedData.ssh_ip
delete processedData.ssh_port
delete processedData.ssh_privateKey
delete processedData.ssh_sshPassword
delete processedData.ssh_verifyMethod
const res = await saveDataViewSql(processedData);
if (res?.id) {
createMessage.success(t('common.createSuccessText'));
closeDrawer();
emits('success');
}else {
createMessage.error(t('common.createFailedText'))
}
} finally {
setDrawerProps({ loading: false });
}
}
</script>