Parcourir la source

feat:增加校验

cmy il y a 1 semaine
Parent
commit
5918f96276

+ 9 - 1
src/utils/validate.ts

@@ -158,7 +158,15 @@ export const rule = {
 	ip(rule, value, callback) {
 		validateFn('ip', rule, value, callback, 'IP格式有误');
 	},
-
+	/* 域名 */
+	domain(rule, value, callback) {
+		const domainRegex = /^((?!-)[\u4e00-\u9fa5a-zA-Z0-9-]{1,63}(?<!-)\.)+[\u4e00-\u9fa5a-zA-Z]{2,}$/;
+		if (!value || domainRegex.test(value)) {
+			callback();
+		} else {
+			callback(new Error('域名格式有误'));
+		}
+	},
 
 	regExp(rule, value, callback) {
 		if (validateNull(value) || value.length <= 0) {

+ 2 - 2
src/views/marketing/apps/components/domainCollapse.vue

@@ -125,7 +125,7 @@ function addGroupsUnique(newGroups: DomianItem[]) {
     console.log(filtered);
 		useMessage().success(t('common.addSuccessText'));
   }else{
-    useMessage().warning('分组重复');
+    useMessage().warning('分组已添加到域名集合,无需重复添加');
   }
 }
 
@@ -150,7 +150,7 @@ function addSinglesUnique(newSingles: DomianItem[]) {
     console.log(filtered);
 		useMessage().success(t('common.addSuccessText'));
   }else{
-    useMessage().warning('域名重复');
+    useMessage().warning('域名已存在于集合中,无需重复添加');
   }
 }
 

+ 5 - 1
src/views/marketing/apps/components/domainEdit.vue

@@ -83,7 +83,7 @@ watch(() => props.open, async (val) => {
 const dataRules = reactive({
 	domain: [
 		{ required: true, message: '域名不能为空', trigger: 'blur' },
-		{ validator: rule.url, trigger: 'blur' },
+		{ validator: rule.domain, trigger: 'blur' },
 	],
 });
 const onCancel = () => {
@@ -91,6 +91,10 @@ const onCancel = () => {
 };
 // 保存数据
 const onSubmit = async () => {
+
+	const valid = await dialogFormRef.value.validate();
+	console.log('valid', valid);
+
 	try {
 		loading.value = true;
 		if (activeName.value == 'group') {

+ 4 - 7
src/views/marketing/apps/components/form.vue

@@ -234,13 +234,10 @@ function processNumberString(
 
 // 保存数据
 const onSubmit = async () => {
-  console.log({
-    ...state.ruleForm,
-    domains: domains.value,
-    delDomains: delDomains.value,
-    ips: childIps.value,
-    delIps: delIps.value,
-  });
+
+  const valid = await appDialogFormRef.value.validate();
+  console.log('valid', valid);
+  
   try {
     loading.value = true;
     const data:Form[] = [];

+ 2 - 3
src/views/marketing/apps/components/ipCollapse.vue

@@ -114,7 +114,6 @@ const filtered = newGroups.filter(i => !existIds.has(i.id));
 
 if (filtered.length) {
   const processedGroups = filtered.map(item => ({
-    id: item.id,
     ipType,
     sourceType: 1,
     groupId: item.id,
@@ -128,7 +127,7 @@ if (filtered.length) {
   setTargetList(ipType, [...targetList, ...processedGroups]);
   useMessage().success(t('common.addSuccessText'));
 } else {
-  useMessage().warning('分组重复');
+  useMessage().warning('分组已添加到IP集合,无需重复添加');
 }
 }
 
@@ -165,7 +164,7 @@ if (filtered.length) {
   setTargetList(ipType, [...targetList, ...processedSingles]);
   useMessage().success(t('common.addSuccessText'));
 } else {
-  useMessage().warning('IP重复');
+  useMessage().warning('IP已存在于集合中,无需重复添加');
 }
 }
 

+ 7 - 3
src/views/marketing/apps/components/ipEdit.vue

@@ -1,7 +1,7 @@
 <template>
 	<el-dialog :title="type === 'Edit' ? '修改IP' : '添加IP'" width="600" v-model="props.open" :close-on-click-modal="false"
 		:destroy-on-close="true" @close="onCancel" draggable>
-		<el-form style="height: 128px;" ref="menuDialogFormRef" :rules="dataRules" :model="state.ruleForm" v-loading="loading">
+		<el-form style="height: 128px;" ref="formRef" :rules="dataRules" :model="state.ruleForm" v-loading="loading">
 			<el-form-item label="" prop="ipType">
 				<el-radio-group v-model="state.ruleForm.ipType">
 					<el-radio :value="1">白名单</el-radio>
@@ -82,7 +82,7 @@ const { t } = useI18n();
 // 定义变量内容
 const loading = ref(false);
 const type = ref('add'); // 'add' or 'edit'
-const menuDialogFormRef = ref();
+const formRef = ref();
 const selectData = ref<IpItem[]>([]);
 const selectedObjects = ref<IpItem[]>([]);
 
@@ -112,7 +112,7 @@ const props = defineProps({
 const dataRules = reactive({
 	groupId: [{ required: true, message: '分组不能为空', trigger: 'blur' }],
 	ip: [
-		{ required: rule.ip, message: 'IP不能为空', trigger: 'blur' },
+		{ required: true, message: 'IP不能为空', trigger: 'blur' },
 		{ validator: rule.ip, trigger: 'blur' },
 	],
 });
@@ -152,6 +152,10 @@ const onCancel = () => {
 
 // 保存数据
 const onSubmit = async () => {
+
+	const valid = await formRef.value.validate();
+	console.log('valid', valid);
+
 	const lis = parseIpRange(state.ruleForm.ip);
 	state.ruleForm.startIp = lis.start;
 	state.ruleForm.endIp = lis.end;

+ 2 - 2
src/views/marketing/apps/index.vue

@@ -3,9 +3,9 @@
     <div class="layout-padding-auto layout-padding-view">
       <el-row shadow="hover" v-show="showSearch" class="ml10">
         <el-form :inline="true" :model="state.queryForm" @keyup.enter="getDataList" ref="queryRef">
-          <el-form-item :label="t('marketingApps.name')" prop="domain">
+          <el-form-item :label="t('marketingApps.name')" prop="appName">
             <el-input :placeholder="t('marketingApps.inputNameTip')" clearable
-              v-model="state.queryForm.domain" />
+              v-model="state.queryForm.appName" />
           </el-form-item>
           <el-form-item :label="'应用ID'" prop="appId">
             <el-input :placeholder="'请输入应用ID'" clearable v-model="state.queryForm.appId" />