Merge branch 'dev' into dev-dictionary

This commit is contained in:
XieYongHong 2023-10-19 11:08:56 +08:00
commit 2776fd2968
4 changed files with 75 additions and 108 deletions

View File

@ -133,13 +133,13 @@
</p>
</div>
<j-form-item
:name="['configuration', 'requsetTimeout']"
:rules="LeftTreeRules.requsetTimeout"
:name="['configuration', 'requestTimeout']"
:rules="LeftTreeRules.requestTimeout"
>
<j-input-number
style="width: 100%"
placeholder="请输入请求超时时间配置"
v-model:value="formData.configuration.requsetTimeout"
v-model:value="formData.configuration.requestTimeout"
addon-after="ms"
:max="60000"
:min="2000"
@ -257,7 +257,7 @@ const formData = ref({
type: 'LowerFrequency',
endian: 'BIG',
endianIn: 'BIG',
requsetTimeout: 2000,
requestTimeout: 2000,
inheritBreakerSpec: {
type: 'LowerFrequency',
}

View File

@ -170,7 +170,7 @@ export const LeftTreeRules = {
endianIn: [
{ required: true, message: '请选择单字高低位切换', trigger: 'blur' },
],
requsetTimeout:[
requestTimeout:[
{ pattern: /^\d+$/, message:'请输入2000-60000的正整数',trigger: 'change'}
]
};

View File

@ -145,7 +145,10 @@ const visible = ref<boolean>(false);
const modalForm = reactive<modalState>({
host: '0.0.0.0',
});
const regDomain = new RegExp(
// /^https?:\/\/(([a-zA-Z0-9_-])+(\.)?)*(:\d+)?(\/((\.)?(\?)?=?&?[a-zA-Z0-9_-](\?)?)*)*$/i,
/^[a-zA-Z0-9]+([\-\.]{1}[a-zA-Z0-9]+)*\.[a-zA-Z]{2,}$/
)
/**
* 校验官网地址
*/
@ -153,7 +156,7 @@ const validateUrl = async (_rule: Rule, value: string) => {
if (!value) {
return Promise.reject('请输入公网地址');
} else {
if (!testIpv4_6(value)) {
if (!testIpv4_6(value) && !regDomain.test(value)) {
return Promise.reject('请输入正确的公网地址');
}
return Promise.resolve();

View File

@ -4,91 +4,56 @@
<j-card>
<j-row :gutter="[24, 24]" style="padding: 24px">
<j-col :span="12">
<j-form
class="form"
layout="vertical"
:model="formData"
name="basic"
:label-col="{ span: 8 }"
:wrapper-col="{ span: 24 }"
autocomplete="off"
>
<j-form-item
label="证书标准"
v-bind="validateInfos.type"
>
<j-form class="form" layout="vertical" :model="formData" name="basic" :label-col="{ span: 8 }"
:wrapper-col="{ span: 24 }" autocomplete="off" ref="formRef">
<j-form-item label="证书标准" name="type"
:rules="[{ required: true, message: '请选择证书标准', trigger: 'blur' }]">
<j-radio-group v-model:value="formData.type">
<j-radio-button
class="form-radio-button"
value="common"
>
<img
:src="getImage('/certificate.png')"
/>
<j-radio-button class="form-radio-button" value="common">
<img :src="getImage('/certificate.png')" />
</j-radio-button>
</j-radio-group>
</j-form-item>
<j-form-item
label="证书名称"
v-bind="validateInfos.name"
>
<j-input
placeholder="请输入证书名称"
v-model:value="formData.name"
/>
<j-form-item label="证书名称" name="name" :rules="[
{ required: true, message: '请输入证书名称', trigger: 'blur' },
{ max: 64, message: '最多可输入64个字符' },
]">
<j-input placeholder="请输入证书名称" v-model:value="formData.name" />
</j-form-item>
<j-form-item
label="证书文件"
v-bind="validateInfos['configs.cert']"
>
<CertificateFile
name="cert"
v-model:modelValue="formData.configs.cert"
placeholder="请输入证书文件"
/>
<j-form-item label="证书文件" :name="['configs','cert']" :rules="[
{ required: true, message: '请输入或上传文件', trigger: 'blur' },
]">
<CertificateFile name="cert" v-model:modelValue="formData.configs.cert"
placeholder="请输入证书文件" />
</j-form-item>
<j-form-item label="证书类型" v-bind="validateInfos.mode">
<j-form-item label="证书类型" name="mode"
:rules="[{ required: true, message: '请选择证书类型', trigger: 'blur' }]">
<j-radio-group v-model:value="formData.mode" button-style="solid">
<j-radio-button value="client" style="margin-right: 30px;" size="large">客户端</j-radio-button>
<j-radio-button value="client" style="margin-right: 30px;"
size="large">客户端</j-radio-button>
<j-radio-button value="server" size="large">服务端</j-radio-button>
</j-radio-group>
</j-form-item>
<j-form-item label="认证方式" v-if="formData.mode === 'client'" v-bind="validateInfos.authenticationMethod">
<!-- <j-form-item label="认证方式" v-if="formData.mode === 'client'" v-bind="validateInfos.authenticationMethod">
<j-radio-group button-style="solid" v-model:value="formData.authenticationMethod">
<j-radio-button value="single" style="margin-right: 30px;" size="large">单向认证</j-radio-button>
<j-radio-button value="binomial" size="large">双向认证</j-radio-button>
</j-radio-group>
</j-form-item> -->
<j-form-item label="证书私钥" v-if="formData.mode !== 'client'" :name="['configs','key']" :rules="[
{ required: true, message: '请输入或上传文件', trigger: 'blur' },
]">
<CertificateFile name="key" v-model:modelValue="formData.configs.key"
placeholder="请输入证书私钥" />
</j-form-item>
<j-form-item
label="证书私钥"
v-bind="validateInfos['configs.key']"
>
<CertificateFile
name="key"
v-model:modelValue="formData.configs.key"
placeholder="请输入证书私钥"
/>
</j-form-item>
<j-form-item label="说明" name="description">
<j-textarea
placeholder="请输入说明"
v-model:value="formData.description"
:maxlength="200"
:rows="3"
showCount
/>
<j-form-item label="说明" name="description" :rules="[{ max: 200, message: '最多可输入200个字符' }]">
<j-textarea placeholder="请输入说明" v-model:value="formData.description" :maxlength="200"
:rows="3" showCount />
</j-form-item>
<j-form-item>
<j-button
v-if="view === 'false'"
class="form-submit"
html-type="submit"
type="primary"
@click.prevent="onSubmit"
:loading="loading"
>保存</j-button
>
<j-button v-if="view === 'false'" class="form-submit" html-type="submit" type="primary"
@click.prevent="onSubmit" :loading="loading">保存</j-button>
</j-form-item>
</j-form>
</j-col>
@ -131,8 +96,9 @@ const route = useRoute();
const view = route.query.view as string;
const id = route.params.id as string;
const useForm = Form.useForm;
// const useForm = Form.useForm;
const formRef = ref()
const fileLoading = ref(false);
const loading = ref(false);
@ -144,49 +110,46 @@ const formData = ref<FormDataType>({
key: '',
},
description: '',
mode:'server',
authenticationMethod:'single'
mode: 'server',
authenticationMethod: 'single'
});
const { resetFields, validate, validateInfos } = useForm(
formData,
reactive({
type: [{ required: true, message: '请选择证书标准', trigger: 'blur' }],
name: [
{ required: true, message: '请输入证书名称', trigger: 'blur' },
{ max: 64, message: '最多可输入64个字符' },
],
'configs.cert': [
{ required: true, message: '请输入或上传文件', trigger: 'blur' },
],
'configs.key': [
{ required: true, message: '请输入或上传文件', trigger: 'blur' },
],
description: [{ max: 200, message: '最多可输入200个字符' }],
mode:[{ required: true, message: '请选择证书类型', trigger: 'blur' }],
authenticationMethod:[{ required: true, message: '请选择认证方式', trigger: 'blur' }]
}),
);
// const rules = {
// type: [{ required: true, message: '', trigger: 'blur' }],
// name: [
// { required: true, message: '', trigger: 'blur' },
// { max: 64, message: '64' },
// ],
// 'configs.cert': [
// { required: true, message: '', trigger: 'blur' },
// ],
// 'configs.key': [
// { required: true, message: '', trigger: 'blur' },
// ],
// description: [{ max: 200, message: '200' }],
// mode:[{ required: true, message: '', trigger: 'blur' }],
// authenticationMethod:[{ required: true, message: '', trigger: 'blur' }]
// );
const onSubmit = () => {
validate()
formRef.value.validate()
.then(async (res) => {
let params:any = toRaw(formData.value);
if(formData.value.mode === 'client'){
if(formData.value.authenticationMethod === 'binomial'){
let params: any = toRaw(formData.value);
if (formData.value.mode === 'client') {
if (formData.value.authenticationMethod === 'binomial') {
params.configs.trust = params.configs.cert
}else{
} else {
params.configs = {
key:formData.value.configs.key,
trust:formData.value.configs.cert
// key:formData.value.configs.key,
trust: formData.value.configs.cert
}
}
}
loading.value = true;
const response =
id === ':id'
? await save(params).catch(() => {})
: await update({ ...params, id }).catch(() => {});
? await save(params).catch(() => { })
: await update({ ...params, id }).catch(() => { });
if (response?.status === 200) {
onlyMessage('操作成功', 'success');
router.push('/iot/link/certificate');
@ -217,9 +180,9 @@ const detail = async (id: string) => {
const type = result.type.value as TypeObjType;
formData.value = {
...result,
configs:{
key:result.configs.key,
cert:result.configs?.cert ? result.configs?.cert : result.configs?.trust
configs: {
key: result.configs.key,
cert: result.configs?.cert ? result.configs?.cert : result.configs?.trust
},
mode: result.mode.value,
authenticationMethod: result.authenticationMethod.value,
@ -239,6 +202,7 @@ detail(id);
width: 148px;
height: 80px;
padding: 0;
img {
width: 100%;
height: 100%;