ConverScriptModal.vue
4.12 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
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
<template>
<div>
<BasicModal
destroyOnClose
v-bind="$attrs"
width="60rem"
@register="register"
:title="getTitle"
:minHeight="500"
@cancel="handleCancel"
@ok="handleSubmit"
>
<ConverScript
:view="isViewDetail"
:text="isTitle"
:ifAdd="isTest ? false : true"
ref="converScriptRef"
/>
</BasicModal>
</div>
</template>
<script setup lang="ts">
import { ref, computed, unref, reactive } from 'vue';
import { BasicModal, useModalInner } from '/@/components/Modal';
import ConverScript from './ConverScript.vue';
import {
createOrEditScriptManage,
getScriptManageDetail,
testScriptManage,
} from '/@/api/scriptmanage/scriptManager';
import { useMessage } from '/@/hooks/web/useMessage';
const emits = defineEmits(['success', 'register']);
const { createMessage } = useMessage();
const converScriptRef = ref<InstanceType<typeof ConverScript>>();
const getTitle = computed(() => (isUpdate.value ? '编辑转换脚本' : '新增转换脚本'));
const isUpdate = ref(false);
const isViewDetail = ref('');
const isTest = ref(false);
const isText = ref('');
const isTitle = ref('');
const editData = reactive({
data: {},
});
const [register, { setModalProps, closeModal }] = useModalInner(async (data) => {
setModalProps({ loading: true });
handleCancel(false);
isUpdate.value = data.isUpdate;
isViewDetail.value = data.isView;
isTest.value = data.isTest;
isText.value = data.isText;
isTitle.value = data.isTitle;
editData.data = data.record;
setModalProps({ loading: false });
converScriptRef.value?.initEditor();
if (!unref(isViewDetail)) {
const title =
unref(isTitle) == 'edit'
? '编辑转换脚本'
: unref(isTitle) == 'add'
? '新增转换脚本'
: '测试转换脚本';
const okText = isText.value == 'test' ? '测试' : '确定';
if (unref(isTitle) == 'add') {
converScriptRef.value?.setDefaultRadio('TRANSPORT_TCP_UP');
}
if (unref(isTitle) == 'edit') {
converScriptRef.value?.setFormData(data.record);
}
if (unref(isTitle) == 'test') {
if (data.record) {
const res = await getScriptManageDetail(data.record);
converScriptRef.value?.setFormData(res);
} else {
converScriptRef.value?.setDefaultRadio('TRANSPORT_TCP_UP');
}
}
setModalProps({ title, showOkBtn: true, showCancelBtn: true, okText });
if (!unref(isUpdate)) {
}
} else {
setModalProps({ showOkBtn: false, showCancelBtn: false, title: '查看转换脚本' });
const res = await getScriptManageDetail(data.record.id);
converScriptRef.value?.setFormData(res || {});
}
});
const handleSubmit = async () => {
setModalProps({ confirmLoading: true });
try {
const val = await converScriptRef.value?.getFormData();
const tempObj = {
...editData.data,
...val,
};
const res: any =
isText.value == 'test'
? await testScriptManage(val)
: await createOrEditScriptManage(tempObj);
createMessage.success(
unref(isTitle) == 'edit'
? '编辑转换脚本成功'
: unref(isTitle) == 'add'
? '新增转换脚本成功'
: '测试转换脚本成功'
);
if (unref(isTitle) == 'add' || unref(isTitle) == 'edit') {
setTimeout(() => {
closeModal();
}, 10);
emits('success', {
res,
text: isText.value,
});
} else {
if (res) {
converScriptRef.value?.setScriptOutputData(res?.output || res?.error);
}
}
} finally {
setModalProps({ confirmLoading: false });
}
};
const handleCancel = (flag) => {
if (flag) {
closeModal();
}
converScriptRef.value?.resetFormData();
};
</script>
<style lang="less" scoped>
@import url('./ConverScriptModal.less');
</style>