fix: bug#10242 #10245

This commit is contained in:
JiangQiming 2023-03-10 16:25:38 +08:00
parent fbbeb1df6d
commit 26eee3c169
4 changed files with 76 additions and 23 deletions

View File

@ -11,10 +11,26 @@
<span v-if="column.dataIndex === 'id'"> <span v-if="column.dataIndex === 'id'">
{{ record[column.dataIndex] }} {{ record[column.dataIndex] }}
</span> </span>
<j-input <template v-if="column.dataIndex === 'name'">
v-if="column.dataIndex === 'name'" <j-input
v-model:value="record.name" v-model:value="record.name"
/> :class="
!record.name || record.name.length > 64
? 'has-error'
: ''
"
/>
<!-- antd useForm 无table表单校验 手动添加校验 -->
<div
class="error-text"
v-show="!record.name || record.name.length > 64"
>
<span v-show="!record.name"> 该字段是必填字段 </span>
<span v-show="record.name.length > 64">
最多可输入64个字符
</span>
</div>
</template>
<j-select <j-select
v-if="column.dataIndex === 'type'" v-if="column.dataIndex === 'type'"
v-model:value="record.type" v-model:value="record.type"
@ -91,7 +107,7 @@ const columns = [
{ {
title: '名称', title: '名称',
dataIndex: 'name', dataIndex: 'name',
// width: 160, width: 160,
}, },
{ {
title: '类型', title: '类型',
@ -133,4 +149,20 @@ const handleTypeChange = (record: IVariable) => {
}; };
</script> </script>
<style lang="less" scoped></style> <style lang="less" scoped>
.table-wrapper {
.has-error {
border-color: rgba(255, 77, 79);
&:focus {
border-color: rgba(255, 120, 117);
box-shadow: 0 0 0 2px rgba(255, 77, 79, 0.2);
border-right-width: 1px !important;
outline: 0;
}
}
.error-text {
color: rgba(255, 77, 79);
font-size: 12px;
}
}
</style>

View File

@ -526,6 +526,7 @@
</j-form-item> </j-form-item>
<j-form-item <j-form-item
v-if="formData.template.templateType === 'tts'" v-if="formData.template.templateType === 'tts'"
v-bind="validateInfos['template.ttsmessage']"
> >
<template #label> <template #label>
<span> <span>
@ -541,8 +542,7 @@
</span> </span>
</template> </template>
<j-textarea <j-textarea
v-model:value="formData.template.message" v-model:value="formData.template.ttsmessage"
show-count
:rows="5" :rows="5"
placeholder="内容中的变量将用于阿里云语音验证码" placeholder="内容中的变量将用于阿里云语音验证码"
/> />
@ -840,7 +840,8 @@ const resetPublicFiles = () => {
formData.value.template.templateType = 'tts'; formData.value.template.templateType = 'tts';
formData.value.template.templateCode = ''; formData.value.template.templateCode = '';
formData.value.template.ttsCode = ''; formData.value.template.ttsCode = '';
formData.value.template.message = ''; // formData.value.template.message = '';
formData.value.template.ttsmessage = '';
formData.value.template.playTimes = 1; formData.value.template.playTimes = 1;
formData.value.template.calledShowNumbers = ''; formData.value.template.calledShowNumbers = '';
formData.value.template.calledNumber = ''; formData.value.template.calledNumber = '';
@ -910,26 +911,29 @@ const formRules = ref({
// //
'template.templateType': [{ required: true, message: '请选择类型' }], 'template.templateType': [{ required: true, message: '请选择类型' }],
'template.templateCode': [{ required: true, message: '请输入模板ID' }], 'template.templateCode': [{ required: true, message: '请输入模板ID' }],
'template.calledShowNumbers': [
{
trigger: 'change',
validator(_rule: Rule, value: string) {
if (!value) return Promise.resolve();
if (!phoneRegEx(value)) return Promise.reject('请输入有效号码');
return Promise.resolve();
},
},
],
// //
'template.code': [{ required: true, message: '请选择模板' }], 'template.code': [{ required: true, message: '请选择模板' }],
'template.signName': [{ required: true, message: '请输入签名' }], 'template.signName': [{ required: true, message: '请输入签名' }],
// webhook // webhook
description: [{ max: 200, message: '最多可输入200个字符' }], description: [{ max: 200, message: '最多可输入200个字符' }],
'template.message': [ 'template.message': [
{ required: true, message: '请输入' }, {
required: true,
message: '请输入',
},
{ max: 500, message: '最多可输入500个字符' }, { max: 500, message: '最多可输入500个字符' },
], ],
'template.calledShowNumbers': [ 'template.ttsmessage': [{ max: 500, message: '最多可输入500个字符' }],
{
trigger: 'blur',
validator(_rule: Rule, value: string) {
if (!phoneRegEx(value)) {
return Promise.reject('请输入有效号码');
}
return Promise.resolve();
},
},
],
}); });
const { resetFields, validate, validateInfos, clearValidate } = useForm( const { resetFields, validate, validateInfos, clearValidate } = useForm(
@ -1033,6 +1037,7 @@ const variableReg = () => {
* 钉钉机器人 消息类型选择改变 * 钉钉机器人 消息类型选择改变
*/ */
const handleMessageTypeChange = () => { const handleMessageTypeChange = () => {
if (formData.value.type !== 'dingTalk') return;
delete formData.value.template.markdown; delete formData.value.template.markdown;
delete formData.value.template.link; delete formData.value.template.link;
delete formData.value.template.text; delete formData.value.template.text;
@ -1159,6 +1164,13 @@ const getSignsList = async () => {
*/ */
const btnLoading = ref<boolean>(false); const btnLoading = ref<boolean>(false);
const handleSubmit = () => { const handleSubmit = () => {
// ,
if (
formData.value.variableDefinitions.length &&
formData.value.variableDefinitions.some((s: any) => !s.name)
)
return;
//
if (formData.value.type === 'email') delete formData.value.configId; if (formData.value.type === 'email') delete formData.value.configId;
if (formData.value.template.messageType === 'markdown') if (formData.value.template.messageType === 'markdown')
delete formData.value.template.link; delete formData.value.template.link;
@ -1169,9 +1181,16 @@ const handleSubmit = () => {
setTimeout(() => { setTimeout(() => {
validate() validate()
.then(async () => { .then(async () => {
if (formData.value.provider === 'ttsCode') if (formData.value.provider === 'aliyun') {
formData.value.template.ttsCode = formData.value.template.ttsCode =
formData.value.template.templateCode; formData.value.template.templateCode;
// messagemessage,
// ttsmessage, , message,
formData.value.template.message =
formData.value.template.ttsmessage;
delete formData.value.template.ttsmessage;
}
btnLoading.value = true; btnLoading.value = true;
let res; let res;
if (!formData.value.id) { if (!formData.value.id) {

View File

@ -60,6 +60,7 @@ export type TemplateFormData = {
templateCode?: string; templateCode?: string;
ttsCode?: string; ttsCode?: string;
// message?: string; // message?: string;
ttsmessage?: string;
playTimes?: number; playTimes?: number;
calledShowNumbers?: string; calledShowNumbers?: string;
calledNumber?: string; calledNumber?: string;

View File

@ -189,7 +189,8 @@ export const TEMPLATE_FIELD_MAP = {
templateType: 'tts', templateType: 'tts',
templateCode: '', templateCode: '',
ttsCode: '', ttsCode: '',
message: '', // message: '',
ttsmessage: '',
playTimes: 1, playTimes: 1,
calledShowNumbers: '', calledShowNumbers: '',
calledNumber: '', calledNumber: '',