Showing
3 changed files
with
81 additions
and
13 deletions
... | ... | @@ -55,10 +55,18 @@ |
55 | 55 | const { createMessage } = useMessage(); |
56 | 56 | let config = {}; |
57 | 57 | if (values.messageType === 'PHONE_MESSAGE') { |
58 | - config = { | |
59 | - accessKeyId: values.accessKeyId, | |
60 | - accessKeySecret: values.accessKeySecret, | |
61 | - }; | |
58 | + if (values.platformType === 'ALI_CLOUD') { | |
59 | + config = { | |
60 | + accessKeyId: values.accessKeyId, | |
61 | + accessKeySecret: values.accessKeySecret, | |
62 | + }; | |
63 | + } else { | |
64 | + config = { | |
65 | + appId: values.appId, | |
66 | + secretId: values.secretId, | |
67 | + secretKey: values.secretKey, | |
68 | + }; | |
69 | + } | |
62 | 70 | } else if (values.messageType === 'EMAIL_MESSAGE') { |
63 | 71 | config = { |
64 | 72 | host: values.host, | ... | ... |
... | ... | @@ -79,6 +79,9 @@ export const isMessage = (type: string) => { |
79 | 79 | export const isEmail = (type: string) => { |
80 | 80 | return type === MessageEnum.IS_EMAIL; |
81 | 81 | }; |
82 | +export const messageTypeIsTencentCloud = (type: string) => { | |
83 | + return type === 'TENCENT_CLOUD'; | |
84 | +}; | |
82 | 85 | |
83 | 86 | export const formSchema: FormSchema[] = [ |
84 | 87 | { |
... | ... | @@ -121,15 +124,53 @@ export const formSchema: FormSchema[] = [ |
121 | 124 | ifShow: ({ values }) => isMessage(Reflect.get(values, 'messageType')), |
122 | 125 | }, |
123 | 126 | { |
127 | + field: 'appId', | |
128 | + label: 'appId', | |
129 | + required: true, | |
130 | + component: 'Input', | |
131 | + componentProps: { | |
132 | + maxLength: 36, | |
133 | + placeholder: '请输入appId', | |
134 | + }, | |
135 | + ifShow: ({ values }) => messageTypeIsTencentCloud(Reflect.get(values, 'platformType')), | |
136 | + }, | |
137 | + { | |
138 | + field: 'secretId', | |
139 | + label: 'secretId', | |
140 | + required: true, | |
141 | + component: 'Input', | |
142 | + helpMessage: ['腾讯云:API密钥参考地址: https://console.cloud.tencent.com/cam/capi'], | |
143 | + componentProps: { | |
144 | + maxLength: 36, | |
145 | + placeholder: '请输入secretId', | |
146 | + }, | |
147 | + ifShow: ({ values }) => messageTypeIsTencentCloud(Reflect.get(values, 'platformType')), | |
148 | + }, | |
149 | + { | |
150 | + field: 'secretKey', | |
151 | + label: 'secretKey', | |
152 | + required: true, | |
153 | + componentProps: { | |
154 | + maxLength: 36, | |
155 | + placeholder: '请输入secretKey', | |
156 | + }, | |
157 | + | |
158 | + component: 'Input', | |
159 | + ifShow: ({ values }) => messageTypeIsTencentCloud(Reflect.get(values, 'platformType')), | |
160 | + }, | |
161 | + { | |
124 | 162 | field: 'accessKeyId', |
125 | 163 | label: 'accessKeyId', |
126 | 164 | required: true, |
127 | 165 | component: 'Input', |
166 | + helpMessage: ['阿里云:API密钥参考地址:https://ram.console.aliyun.com/manage/ak'], | |
128 | 167 | componentProps: { |
129 | 168 | maxLength: 36, |
130 | 169 | placeholder: '请输入accessKeyId', |
131 | 170 | }, |
132 | - ifShow: ({ values }) => isMessage(Reflect.get(values, 'messageType')), | |
171 | + ifShow: ({ values }) => | |
172 | + isMessage(Reflect.get(values, 'messageType')) && | |
173 | + !messageTypeIsTencentCloud(Reflect.get(values, 'platformType')), | |
133 | 174 | }, |
134 | 175 | { |
135 | 176 | field: 'accessKeySecret', |
... | ... | @@ -141,7 +182,9 @@ export const formSchema: FormSchema[] = [ |
141 | 182 | }, |
142 | 183 | |
143 | 184 | component: 'Input', |
144 | - ifShow: ({ values }) => isMessage(Reflect.get(values, 'messageType')), | |
185 | + ifShow: ({ values }) => | |
186 | + isMessage(Reflect.get(values, 'messageType')) && | |
187 | + !messageTypeIsTencentCloud(Reflect.get(values, 'platformType')), | |
145 | 188 | }, |
146 | 189 | { |
147 | 190 | field: 'host', | ... | ... |
... | ... | @@ -6,7 +6,7 @@ |
6 | 6 | </BasicModal> |
7 | 7 | </template> |
8 | 8 | <script lang="ts"> |
9 | - import { defineComponent } from 'vue'; | |
9 | + import { defineComponent, ref } from 'vue'; | |
10 | 10 | import { BasicModal, useModalInner } from '/@/components/Modal'; |
11 | 11 | import { BasicForm, FormSchema, useForm } from '/@/components/Form/index'; |
12 | 12 | import { sendSms } from '/@/api/message/template'; |
... | ... | @@ -76,7 +76,7 @@ |
76 | 76 | label: '短信参数', |
77 | 77 | required: true, |
78 | 78 | componentProps: { |
79 | - placeholder: '示例:{"code":"3654"}', | |
79 | + placeholder: '示例:{"code":"1234"}', | |
80 | 80 | }, |
81 | 81 | dynamicRules: () => { |
82 | 82 | return [ |
... | ... | @@ -90,10 +90,10 @@ |
90 | 90 | if (typeof JSON.parse(value) == 'object') { |
91 | 91 | return Promise.resolve(); |
92 | 92 | } |
93 | - return Promise.reject('请输入JSON格式例如{"code":"123"}'); | |
93 | + return Promise.reject('请输入JSON格式例如{"code":"1234"}'); | |
94 | 94 | } |
95 | 95 | } catch { |
96 | - return Promise.reject('请输入JSON格式例如{"code":"123"}'); | |
96 | + return Promise.reject('请输入JSON格式例如{"code":"1234"}'); | |
97 | 97 | } |
98 | 98 | }, |
99 | 99 | }, |
... | ... | @@ -126,8 +126,9 @@ |
126 | 126 | export default defineComponent({ |
127 | 127 | components: { BasicModal, BasicForm }, |
128 | 128 | setup() { |
129 | + const platformType = ref(''); | |
129 | 130 | const { createMessage } = useMessage(); |
130 | - const [registerForm, { validate, resetFields, setFieldsValue }] = useForm({ | |
131 | + const [registerForm, { validate, resetFields, setFieldsValue, updateSchema }] = useForm({ | |
131 | 132 | labelWidth: 70, |
132 | 133 | schemas, |
133 | 134 | showActionButtonGroup: false, |
... | ... | @@ -136,6 +137,14 @@ |
136 | 137 | }, |
137 | 138 | }); |
138 | 139 | const [register, { closeModal }] = useModalInner(async (data) => { |
140 | + platformType.value = data.record?.messageConfig?.platformType; | |
141 | + updateSchema({ | |
142 | + field: 'params', | |
143 | + componentProps: { | |
144 | + placeholder: | |
145 | + platformType.value !== 'TENCENT_CLOUD' ? '示例:{"code":"1234"}' : '示例:["123456"]', | |
146 | + }, | |
147 | + }); | |
139 | 148 | await resetFields(); |
140 | 149 | await setFieldsValue({ |
141 | 150 | ...data.record, |
... | ... | @@ -143,9 +152,17 @@ |
143 | 152 | }); |
144 | 153 | |
145 | 154 | async function handleOK() { |
155 | + let smsParams: any = null; | |
146 | 156 | const values = await validate(); |
147 | - //将字符串转为json | |
148 | - const smsParams = JSON.parse(Reflect.get(values, 'params')); | |
157 | + if (platformType.value === 'TENCENT_CLOUD') { | |
158 | + //腾讯云发送格式 将字符串转为数组 | |
159 | + smsParams = { | |
160 | + tencent_param: JSON.parse(Reflect.get(values, 'params')), | |
161 | + }; | |
162 | + } else { | |
163 | + //阿里云发送格式 将字符串转为json | |
164 | + smsParams = JSON.parse(Reflect.get(values, 'params')); | |
165 | + } | |
149 | 166 | Reflect.set(values, 'params', smsParams); |
150 | 167 | await sendSms(values); |
151 | 168 | closeModal(); | ... | ... |