Bläddra i källkod

添加表单校验

zhangliang2 3 år sedan
förälder
incheckning
f88bfbdfcf

+ 68 - 13
src/views/modelLibrary/components/formCamera.vue

@@ -34,7 +34,7 @@
             <el-form-item label="盲区距离(m):" prop="nearDistance">
                 <el-input
                     placeholder="请输入"
-                    maxlength="15"
+                    maxlength="9"
                     v-autoTrim="{ obj: form, key: 'nearDistance' }"
                     v-model="form.nearDistance"
                 >
@@ -43,7 +43,7 @@
             <el-form-item label="探测距离(m):" prop="farDistance">
                 <el-input
                     placeholder="请输入"
-                    maxlength="15"
+                    maxlength="9"
                     v-autoTrim="{ obj: form, key: 'farDistance' }"
                     v-model="form.farDistance"
                     @input="inputChange"
@@ -53,7 +53,7 @@
             <el-form-item label="水平视场角(deg):" prop="fovH">
                 <el-input
                     placeholder="请输入"
-                    maxlength="15"
+                    maxlength="9"
                     v-autoTrim="{ obj: form, key: 'fovH' }"
                     v-model="form.fovH"
                     @input="inputChange"
@@ -63,7 +63,7 @@
             <el-form-item label="垂直视场角(deg):" prop="fovV">
                 <el-input
                     placeholder="请输入"
-                    maxlength="15"
+                    maxlength="9"
                     v-autoTrim="{ obj: form, key: 'fovV' }"
                     v-model="form.fovV"
                 >
@@ -105,6 +105,29 @@ export default {
     name: "formCamera", // form-摄像头
     components: {},
     data() {
+        // 校验非负且最多2位小数
+        let validateNum = (rule, value, callback) => {
+            !/^(0|[1-9][0-9]*)(\.\d{1,2})?$/.test(value) &&
+                callback(new Error(rule.message));
+            callback();
+        };
+        // 校验不大于1500
+        let validateNoMore1500 = (rule, value, callback) => {
+            if (value > 1500) {
+                callback(new Error(rule.message));
+                return;
+            }
+            callback();
+        };
+        // 校验不大于180
+        let validateNoMore180 = (rule, value, callback) => {
+            if (value > 180) {
+                callback(new Error(rule.message));
+                return;
+            }
+            callback();
+        };
+
         return {
             form: {
                 id: "", // id
@@ -129,12 +152,51 @@ export default {
                 ],
                 nearDistance: [
                     { required: true, message: "请输入", trigger: "blur" },
+                    {
+                        validator: validateNum,
+                        message: "请输入最多带有两位小数的非负数",
+                        trigger: ["blur"],
+                    },
                 ],
                 farDistance: [
                     { required: true, message: "请输入", trigger: "blur" },
+                    {
+                        validator: validateNum,
+                        message: "请输入最多带有两位小数的非负数",
+                        trigger: ["blur"],
+                    },
+                    {
+                        validator: validateNoMore1500,
+                        message: "请输入不大于1500的非负数",
+                        trigger: ["blur"],
+                    },
+                ],
+                fovH: [
+                    { required: true, message: "请输入", trigger: "blur" },
+                    {
+                        validator: validateNum,
+                        message: "请输入最多带有两位小数的非负数",
+                        trigger: ["blur"],
+                    },
+                    {
+                        validator: validateNoMore180,
+                        message: "请输入不大于180的非负数",
+                        trigger: ["blur"],
+                    },
+                ],
+                fovV: [
+                    { required: true, message: "请输入", trigger: "blur" },
+                    {
+                        validator: validateNum,
+                        message: "请输入最多带有两位小数的非负数",
+                        trigger: ["blur"],
+                    },
+                    {
+                        validator: validateNoMore180,
+                        message: "请输入不大于180的非负数",
+                        trigger: ["blur"],
+                    },
                 ],
-                fovH: [{ required: true, message: "请输入", trigger: "blur" }],
-                fovV: [{ required: true, message: "请输入", trigger: "blur" }],
                 resolution: [
                     { required: true, message: "请选择", trigger: "change" },
                 ],
@@ -148,13 +210,6 @@ export default {
         };
     },
 
-    /* props: {
-        id: {
-            type: String,
-            default: "",
-        },
-    }, */
-
     methods: {
         // 展示详情
         showInfo(id) {

+ 46 - 3
src/views/modelLibrary/components/formGps.vue

@@ -34,7 +34,7 @@
             <el-form-item label="经度偏移量(deg):" prop="longitudeOffset">
                 <el-input
                     placeholder="请输入"
-                    maxlength="10"
+                    maxlength="9"
                     v-autoTrim="{ obj: form, key: 'longitudeOffset' }"
                     v-model="form.longitudeOffset"
                 >
@@ -43,7 +43,7 @@
             <el-form-item label="纬度偏移量(deg):" prop="latitudeOffset">
                 <el-input
                     placeholder="请输入"
-                    maxlength="10"
+                    maxlength="9"
                     v-autoTrim="{ obj: form, key: 'latitudeOffset' }"
                     v-model="form.latitudeOffset"
                 >
@@ -56,7 +56,7 @@
             <el-form-item label="帧率(HZ):" prop="frameRate">
                 <el-input
                     placeholder="请输入"
-                    maxlength="10"
+                    maxlength="9"
                     v-autoTrim="{ obj: form, key: 'frameRate' }"
                     v-model="form.frameRate"
                 >
@@ -73,6 +73,29 @@ export default {
     name: "formGps", // form-GPS
     components: {},
     data() {
+        // 校验非负且最多2位小数
+        let validateNum = (rule, value, callback) => {
+            !/^(0|[1-9][0-9]*)(\.\d{1,2})?$/.test(value) &&
+                callback(new Error(rule.message));
+            callback();
+        };
+        // 校验不大于180
+        let validateNoMore180 = (rule, value, callback) => {
+            if (value > 180) {
+                callback(new Error(rule.message));
+                return;
+            }
+            callback();
+        };
+        // 校验不大于360
+        let validateNoMore360 = (rule, value, callback) => {
+            if (value > 360) {
+                callback(new Error(rule.message));
+                return;
+            }
+            callback();
+        };
+
         return {
             form: {
                 id: "", // id
@@ -93,9 +116,29 @@ export default {
                 ],
                 longitudeOffset: [
                     { required: true, message: "请输入", trigger: "blur" },
+                    {
+                        validator: validateNum,
+                        message: "请输入最多带有两位小数的非负数",
+                        trigger: ["blur"],
+                    },
+                    {
+                        validator: validateNoMore360,
+                        message: "请输入不大于360的非负数",
+                        trigger: ["blur"],
+                    },
                 ],
                 latitudeOffset: [
                     { required: true, message: "请输入", trigger: "blur" },
+                    {
+                        validator: validateNum,
+                        message: "请输入最多带有两位小数的非负数",
+                        trigger: ["blur"],
+                    },
+                    {
+                        validator: validateNoMore180,
+                        message: "请输入不大于180的非负数",
+                        trigger: ["blur"],
+                    },
                 ],
                 frameRate: [
                     { required: true, message: "请输入", trigger: "blur" },

+ 94 - 9
src/views/modelLibrary/components/formLaserRadar.vue

@@ -34,7 +34,7 @@
             <el-form-item label="盲区距离(m):" prop="nearDistance">
                 <el-input
                     placeholder="请输入"
-                    maxlength="10"
+                    maxlength="9"
                     v-autoTrim="{ obj: form, key: 'nearDistance' }"
                     v-model="form.nearDistance"
                 >
@@ -43,7 +43,7 @@
             <el-form-item label="探测距离(m):" prop="farDistance">
                 <el-input
                     placeholder="请输入"
-                    maxlength="10"
+                    maxlength="9"
                     v-autoTrim="{ obj: form, key: 'farDistance' }"
                     v-model="form.farDistance"
                     @input="inputChange"
@@ -53,7 +53,7 @@
             <el-form-item label="水平视场角(deg):" prop="fovH">
                 <el-input
                     placeholder="请输入"
-                    maxlength="10"
+                    maxlength="9"
                     v-autoTrim="{ obj: form, key: 'fovH' }"
                     v-model="form.fovH"
                     @input="inputChange"
@@ -63,7 +63,7 @@
             <el-form-item label="垂直视场角(deg):" prop="fovV">
                 <el-input
                     placeholder="请输入"
-                    maxlength="10"
+                    maxlength="9"
                     v-autoTrim="{ obj: form, key: 'fovV' }"
                     v-model="form.fovV"
                 >
@@ -72,7 +72,7 @@
             <el-form-item label="线数(个):" prop="lineNumber">
                 <el-input
                     placeholder="请输入"
-                    maxlength="10"
+                    maxlength="9"
                     v-autoTrim="{ obj: form, key: 'lineNumber' }"
                     v-model="form.lineNumber"
                 >
@@ -81,7 +81,7 @@
             <el-form-item label="帧率(HZ):" prop="frameRate">
                 <el-input
                     placeholder="请输入"
-                    maxlength="10"
+                    maxlength="9"
                     v-autoTrim="{ obj: form, key: 'frameRate' }"
                     v-model="form.frameRate"
                 >
@@ -90,7 +90,7 @@
             <el-form-item label="出点数(个):" prop="outputPoints">
                 <el-input
                     placeholder="请输入"
-                    maxlength="10"
+                    maxlength="9"
                     v-autoTrim="{ obj: form, key: 'outputPoints' }"
                     v-model="form.outputPoints"
                 >
@@ -123,6 +123,42 @@ export default {
     name: "formLaserRadar", // form-激光雷达
     components: {},
     data() {
+        // 校验非负且最多2位小数
+        let validateNum = (rule, value, callback) => {
+            !/^(0|[1-9][0-9]*)(\.\d{1,2})?$/.test(value) &&
+                callback(new Error(rule.message));
+            callback();
+        };
+        // 校验不大于250
+        let validateNoMore250 = (rule, value, callback) => {
+            if (value > 250) {
+                callback(new Error(rule.message));
+                return;
+            }
+            callback();
+        };
+        // 校验不大于180
+        let validateNoMore180 = (rule, value, callback) => {
+            if (value > 180) {
+                callback(new Error(rule.message));
+                return;
+            }
+            callback();
+        };
+        // 校验不大于360
+        let validateNoMore360 = (rule, value, callback) => {
+            if (value > 360) {
+                callback(new Error(rule.message));
+                return;
+            }
+            callback();
+        };
+        // 校验非负整数
+        let validateNumA = (rule, value, callback) => {
+            !/^(0|[1-9]+[0]*)$/.test(value) && callback(new Error(rule.message));
+            callback();
+        };
+
         return {
             outputModeList: [],
             form: {
@@ -149,20 +185,69 @@ export default {
                 ],
                 nearDistance: [
                     { required: true, message: "请输入", trigger: "blur" },
+                    {
+                        validator: validateNum,
+                        message: "请输入最多带有两位小数的非负数",
+                        trigger: ["blur"],
+                    },
                 ],
                 farDistance: [
                     { required: true, message: "请输入", trigger: "blur" },
+                    {
+                        validator: validateNum,
+                        message: "请输入最多带有两位小数的非负数",
+                        trigger: ["blur"],
+                    },
+                    {
+                        validator: validateNoMore250,
+                        message: "请输入不大于250的非负数",
+                        trigger: ["blur"],
+                    },
+                ],
+                fovH: [
+                    { required: true, message: "请输入", trigger: "blur" },
+                    {
+                        validator: validateNum,
+                        message: "请输入最多带有两位小数的非负数",
+                        trigger: ["blur"],
+                    },
+                    {
+                        validator: validateNoMore360,
+                        message: "请输入不大于360的非负数",
+                        trigger: ["blur"],
+                    },
+                ],
+                fovV: [
+                    { required: true, message: "请输入", trigger: "blur" },
+                    {
+                        validator: validateNum,
+                        message: "请输入最多带有两位小数的非负数",
+                        trigger: ["blur"],
+                    },
+                    {
+                        validator: validateNoMore180,
+                        message: "请输入不大于180的非负数",
+                        trigger: ["blur"],
+                    },
                 ],
-                fovH: [{ required: true, message: "请输入", trigger: "blur" }],
-                fovV: [{ required: true, message: "请输入", trigger: "blur" }],
                 lineNumber: [
                     { required: true, message: "请输入", trigger: "blur" },
+                    {
+                        validator: validateNumA,
+                        message: "请输入非负整数",
+                        trigger: ["blur"],
+                    },
                 ],
                 frameRate: [
                     { required: true, message: "请输入", trigger: "blur" },
                 ],
                 outputPoints: [
                     { required: true, message: "请输入", trigger: "blur" },
+                    {
+                        validator: validateNumA,
+                        message: "请输入非负整数",
+                        trigger: ["blur"],
+                    },
                 ],
                 outputMode: [
                     { required: true, message: "请选择", trigger: "change" },

+ 100 - 7
src/views/modelLibrary/components/formPerfectSensor.vue

@@ -34,7 +34,7 @@
             <el-form-item label="盲区距离(m):" prop="nearDistance">
                 <el-input
                     placeholder="请输入"
-                    maxlength="15"
+                    maxlength="9"
                     v-autoTrim="{ obj: form, key: 'nearDistance' }"
                     v-model="form.nearDistance"
                 >
@@ -43,7 +43,7 @@
             <el-form-item label="探测距离(m):" prop="farDistance">
                 <el-input
                     placeholder="请输入"
-                    maxlength="15"
+                    maxlength="9"
                     v-autoTrim="{ obj: form, key: 'farDistance' }"
                     v-model="form.farDistance"
                     @input="inputChange"
@@ -53,7 +53,7 @@
             <el-form-item label="水平视场角左(deg):" prop="fovHLeft">
                 <el-input
                     placeholder="请输入"
-                    maxlength="15"
+                    maxlength="9"
                     v-autoTrim="{ obj: form, key: 'fovHLeft' }"
                     v-model="form.fovHLeft"
                     @input="inputChange"
@@ -63,7 +63,7 @@
             <el-form-item label="水平视场角右(deg):" prop="fovHRight">
                 <el-input
                     placeholder="请输入"
-                    maxlength="15"
+                    maxlength="9"
                     v-autoTrim="{ obj: form, key: 'fovHRight' }"
                     v-model="form.fovHRight"
                     @input="inputChange"
@@ -73,7 +73,7 @@
             <el-form-item label="垂直视场角顶(deg):" prop="fovVTop">
                 <el-input
                     placeholder="请输入"
-                    maxlength="15"
+                    maxlength="9"
                     v-autoTrim="{ obj: form, key: 'fovVTop' }"
                     v-model="form.fovVTop"
                 >
@@ -82,7 +82,7 @@
             <el-form-item label="垂直视场角底(deg):" prop="fovVBottom">
                 <el-input
                     placeholder="请输入"
-                    maxlength="15"
+                    maxlength="9"
                     v-autoTrim="{ obj: form, key: 'fovVBottom' }"
                     v-model="form.fovVBottom"
                 >
@@ -99,7 +99,7 @@
             <el-form-item label="最大目标物数量(个):" prop="maxObjects">
                 <el-input
                     placeholder="请输入"
-                    maxlength="10"
+                    maxlength="9"
                     v-autoTrim="{ obj: form, key: 'maxObjects' }"
                     v-model="form.maxObjects"
                 >
@@ -145,6 +145,39 @@ export default {
     name: "formPerfectSensor", // form-完美传感器
     components: {},
     data() {
+        // 校验非负且最多2位小数
+        let validateNum = (rule, value, callback) => {
+            !/^(0|[1-9][0-9]*)(\.\d{1,2})?$/.test(value) &&
+                callback(new Error(rule.message));
+            callback();
+        };
+        // 校验不大于1000
+        let validateNoMore1000 = (rule, value, callback) => {
+            if (value > 1000) {
+                callback(new Error(rule.message));
+                return;
+            }
+            callback();
+        };
+        // 校验不大于180
+        let validateNoMore180 = (rule, value, callback) => {
+            if (value > 180) {
+                callback(new Error(rule.message));
+                return;
+            }
+            callback();
+        };
+        // 校验不小于1且不大于20的正整数
+        let validateNumA = (rule, value, callback) => {
+            if (value < 1 || value > 20) {
+                callback(new Error(rule.message));
+                return;
+            }
+
+            !/^[1-9]+[0]*$/.test(value) && callback(new Error(rule.message));
+            callback();
+        };
+
         return {
             coordinateSystemList: [],
             checkAll: false,
@@ -176,27 +209,87 @@ export default {
                 ],
                 nearDistance: [
                     { required: true, message: "请输入", trigger: "blur" },
+                    {
+                        validator: validateNum,
+                        message: "请输入最多带有两位小数的非负数",
+                        trigger: ["blur"],
+                    },
                 ],
                 farDistance: [
                     { required: true, message: "请输入", trigger: "blur" },
+                    {
+                        validator: validateNum,
+                        message: "请输入最多带有两位小数的非负数",
+                        trigger: ["blur"],
+                    },
+                    {
+                        validator: validateNoMore1000,
+                        message: "请输入不大于1000的非负数",
+                        trigger: ["blur"],
+                    },
                 ],
                 fovHLeft: [
                     { required: true, message: "请输入", trigger: "blur" },
+                    {
+                        validator: validateNum,
+                        message: "请输入最多带有两位小数的非负数",
+                        trigger: ["blur"],
+                    },
+                    {
+                        validator: validateNoMore180,
+                        message: "请输入不大于180的非负数",
+                        trigger: ["blur"],
+                    },
                 ],
                 fovHRight: [
                     { required: true, message: "请输入", trigger: "blur" },
+                    {
+                        validator: validateNum,
+                        message: "请输入最多带有两位小数的非负数",
+                        trigger: ["blur"],
+                    },
+                    {
+                        validator: validateNoMore180,
+                        message: "请输入不大于180的非负数",
+                        trigger: ["blur"],
+                    },
                 ],
                 fovVTop: [
                     { required: true, message: "请输入", trigger: "blur" },
+                    {
+                        validator: validateNum,
+                        message: "请输入最多带有两位小数的非负数",
+                        trigger: ["blur"],
+                    },
+                    {
+                        validator: validateNoMore180,
+                        message: "请输入不大于180的非负数",
+                        trigger: ["blur"],
+                    },
                 ],
                 fovVBottom: [
                     { required: true, message: "请输入", trigger: "blur" },
+                    {
+                        validator: validateNum,
+                        message: "请输入最多带有两位小数的非负数",
+                        trigger: ["blur"],
+                    },
+                    {
+                        validator: validateNoMore180,
+                        message: "请输入不大于180的非负数",
+                        trigger: ["blur"],
+                    },
                 ],
                 rangeDisplay: [
                     { required: true, message: "请选择", trigger: "change" },
                 ],
                 maxObjects: [
                     { required: true, message: "请输入", trigger: "blur" },
+                    {
+                        validator: validateNumA,
+                        message: "请输入不小于1且不大于20的正整数",
+                        trigger: ["blur"],
+                    },
                 ],
                 coordinateSystem: [
                     { required: true, message: "请选择", trigger: "change" },

+ 56 - 11
src/views/modelLibrary/vehicleConfigurationDetail.vue

@@ -87,7 +87,7 @@
                         <el-form-item label="X(m):" prop="sensorX">
                             <el-input
                                 placeholder="请输入"
-                                maxlength="10"
+                                maxlength="9"
                                 v-autoTrim="{ obj: formA, key: 'sensorX' }"
                                 v-model="formA.sensorX"
                                 @input="inputChange"
@@ -97,7 +97,7 @@
                         <el-form-item label="Y(m):" prop="sensorY">
                             <el-input
                                 placeholder="请输入"
-                                maxlength="10"
+                                maxlength="9"
                                 v-autoTrim="{ obj: formA, key: 'sensorY' }"
                                 v-model="formA.sensorY"
                                 @input="inputChange"
@@ -107,7 +107,7 @@
                         <el-form-item label="Z(m):" prop="sensorZ">
                             <el-input
                                 placeholder="请输入"
-                                maxlength="10"
+                                maxlength="9"
                                 v-autoTrim="{ obj: formA, key: 'sensorZ' }"
                                 v-model="formA.sensorZ"
                             >
@@ -116,7 +116,7 @@
                         <el-form-item label="横摆角(deg):" prop="sensorH">
                             <el-input
                                 placeholder="请输入"
-                                maxlength="10"
+                                maxlength="9"
                                 v-autoTrim="{ obj: formA, key: 'sensorH' }"
                                 v-model="formA.sensorH"
                                 @input="inputChange"
@@ -126,7 +126,7 @@
                         <el-form-item label="俯仰角(deg):" prop="sensorP">
                             <el-input
                                 placeholder="请输入"
-                                maxlength="10"
+                                maxlength="9"
                                 v-autoTrim="{ obj: formA, key: 'sensorP' }"
                                 v-model="formA.sensorP"
                             >
@@ -135,7 +135,7 @@
                         <el-form-item label="翻滚角(deg):" prop="sensorR">
                             <el-input
                                 placeholder="请输入"
-                                maxlength="10"
+                                maxlength="9"
                                 v-autoTrim="{ obj: formA, key: 'sensorR' }"
                                 v-model="formA.sensorR"
                             >
@@ -148,7 +148,7 @@
                         >
                             <el-input
                                 placeholder="请输入"
-                                maxlength="10"
+                                maxlength="9"
                                 v-autoTrim="{ obj: formA, key: 'sensorPort' }"
                                 v-model="formA.sensorPort"
                             >
@@ -185,14 +185,29 @@ export default {
     name: "vehicleConfigurationDetail", // 车辆配置详情
     components: { handleConfigList, canvasSensor },
     data() {
+        // let validateNum1 = (rule, value, callback) => {
+        //     // !/^(-?\d+)(\.\d{1,2})?$/.test(value) &&
+        //     // !(/^(-?(0|[1-9][0-9]+))(\.\d{1,2})?$/.test(value)) &&
+        //     !/^(-?(0|[1-9][0-9]*))(\.\d{1,2})?$/.test(value) &&
+        //         // /[.]/.test(value) && !/^(-?(0|[1-9]+))$/.test(value) &&
+        //         callback(new Error(rule.message));
+        //     callback();
+        // };
+        // 校验最多2位小数
         let validateNum = (rule, value, callback) => {
-            // !/^(-?\d+)(\.\d{1,2})?$/.test(value) &&
-            // !(/^(-?(0|[1-9][0-9]+))(\.\d{1,2})?$/.test(value)) &&
             !/^(-?(0|[1-9][0-9]*))(\.\d{1,2})?$/.test(value) &&
-                // /[.]/.test(value) && !/^(-?(0|[1-9]+))$/.test(value) &&
                 callback(new Error(rule.message));
             callback();
         };
+        // 校验不大于180且不小于-180
+        let validateNumC = (rule, value, callback) => {
+            if (value < -180 || value > 180) {
+                callback(new Error(rule.message));
+                return;
+            }
+            callback();
+        };
+
         return {
             vehicleNameList: [],
             form: {
@@ -271,12 +286,42 @@ export default {
                 ],
                 sensorH: [
                     { required: true, message: "请输入", trigger: "blur" },
+                    {
+                        validator: validateNum,
+                        message: "请输入最多带有两位小数的数字",
+                        trigger: ["blur"],
+                    },
+                    {
+                        validator: validateNumC,
+                        message: "请输入不小于-180且不大于180的数字",
+                        trigger: ["blur"],
+                    },
                 ],
                 sensorP: [
                     { required: true, message: "请输入", trigger: "blur" },
+                    {
+                        validator: validateNum,
+                        message: "请输入最多带有两位小数的数字",
+                        trigger: ["blur"],
+                    },
+                    {
+                        validator: validateNumC,
+                        message: "请输入不小于-180且不大于180的数字",
+                        trigger: ["blur"],
+                    },
                 ],
                 sensorR: [
                     { required: true, message: "请输入", trigger: "blur" },
+                    {
+                        validator: validateNum,
+                        message: "请输入最多带有两位小数的数字",
+                        trigger: ["blur"],
+                    },
+                    {
+                        validator: validateNumC,
+                        message: "请输入不小于-180且不大于180的数字",
+                        trigger: ["blur"],
+                    },
                 ],
                 sensorPort: [
                     { required: false, message: "请输入", trigger: "blur" },
@@ -479,7 +524,7 @@ export default {
         }, 0);
 
         this.getMyVehicleList();
-        
+
         if (this.$route.query.id) {
             let id = "";
             this.form.id = id = this.$route.query.id;

+ 133 - 19
src/views/modelLibrary/vehicleModel.vue

@@ -102,7 +102,7 @@
                     <el-form-item label="最大速度(km/h):" prop="maxSpeed">
                         <el-input
                             placeholder="请输入"
-                            maxlength="15"
+                            maxlength="12"
                             v-autoTrim="{ obj: form, key: 'maxSpeed' }"
                             v-model="form.maxSpeed"
                         >
@@ -111,7 +111,7 @@
                     <el-form-item label="发动机功率(kW):" prop="enginePower">
                         <el-input
                             placeholder="请输入"
-                            maxlength="15"
+                            maxlength="12"
                             v-autoTrim="{ obj: form, key: 'enginePower' }"
                             v-model="form.enginePower"
                         >
@@ -123,7 +123,7 @@
                     >
                         <el-input
                             placeholder="请输入"
-                            maxlength="15"
+                            maxlength="12"
                             v-autoTrim="{ obj: form, key: 'maxDeceleration' }"
                             v-model="form.maxDeceleration"
                         >
@@ -135,7 +135,7 @@
                     >
                         <el-input
                             placeholder="请输入"
-                            maxlength="15"
+                            maxlength="12"
                             v-autoTrim="{ obj: form, key: 'maxSteeringAngle' }"
                             v-model="form.maxSteeringAngle"
                         >
@@ -160,7 +160,7 @@
                     <el-form-item label="总效率:" prop="overallEfficiency">
                         <el-input
                             placeholder="请输入"
-                            maxlength="15"
+                            maxlength="9"
                             v-autoTrim="{ obj: form, key: 'overallEfficiency' }"
                             v-model="form.overallEfficiency"
                         >
@@ -172,7 +172,7 @@
                     >
                         <el-input
                             placeholder="请输入"
-                            maxlength="15"
+                            maxlength="12"
                             v-autoTrim="{
                                 obj: form,
                                 key: 'frontSurfaceEffective',
@@ -187,7 +187,7 @@
                     >
                         <el-input
                             placeholder="请输入"
-                            maxlength="15"
+                            maxlength="9"
                             v-autoTrim="{
                                 obj: form,
                                 key: 'airDragCoefficient',
@@ -202,7 +202,7 @@
                     >
                         <el-input
                             placeholder="请输入"
-                            maxlength="15"
+                            maxlength="9"
                             v-autoTrim="{
                                 obj: form,
                                 key: 'rollingResistanceCoefficient',
@@ -220,7 +220,7 @@
                     <el-form-item label="车轮直径(m):" prop="wheelDiameter">
                         <el-input
                             placeholder="请输入"
-                            maxlength="15"
+                            maxlength="12"
                             v-autoTrim="{ obj: form, key: 'wheelDiameter' }"
                             v-model="form.wheelDiameter"
                         >
@@ -229,7 +229,7 @@
                     <el-form-item label="车前距(m):" prop="frontDistance">
                         <el-input
                             placeholder="请输入"
-                            maxlength="15"
+                            maxlength="12"
                             v-autoTrim="{ obj: form, key: 'frontDistance' }"
                             v-model="form.frontDistance"
                         >
@@ -238,7 +238,7 @@
                     <el-form-item label="车后距(m):" prop="rearDistance">
                         <el-input
                             placeholder="请输入"
-                            maxlength="15"
+                            maxlength="12"
                             v-autoTrim="{ obj: form, key: 'rearDistance' }"
                             v-model="form.rearDistance"
                         >
@@ -247,7 +247,7 @@
                     <el-form-item label="车左距(m):" prop="leftDistance">
                         <el-input
                             placeholder="请输入"
-                            maxlength="15"
+                            maxlength="12"
                             v-autoTrim="{ obj: form, key: 'leftDistance' }"
                             v-model="form.leftDistance"
                         >
@@ -256,7 +256,7 @@
                     <el-form-item label="车右距(m):" prop="rightDistance">
                         <el-input
                             placeholder="请输入"
-                            maxlength="15"
+                            maxlength="12"
                             v-autoTrim="{ obj: form, key: 'rightDistance' }"
                             v-model="form.rightDistance"
                         >
@@ -265,7 +265,7 @@
                     <el-form-item label="车高(m):" prop="heightDistance">
                         <el-input
                             placeholder="请输入"
-                            maxlength="15"
+                            maxlength="12"
                             v-autoTrim="{ obj: form, key: 'heightDistance' }"
                             v-model="form.heightDistance"
                         >
@@ -274,7 +274,7 @@
                     <el-form-item label="轴距(m):" prop="wheelbase">
                         <el-input
                             placeholder="请输入"
-                            maxlength="15"
+                            maxlength="12"
                             v-autoTrim="{ obj: form, key: 'wheelbase' }"
                             v-model="form.wheelbase"
                         >
@@ -283,7 +283,7 @@
                     <el-form-item label="质量(kg):" prop="mass">
                         <el-input
                             placeholder="请输入"
-                            maxlength="15"
+                            maxlength="12"
                             v-autoTrim="{ obj: form, key: 'mass' }"
                             v-model="form.mass"
                         >
@@ -335,6 +335,21 @@ export default {
     name: "vehicleModel", // 车辆模型
     components: { modelList },
     data() {
+        // 校验非负且最多2位小数
+        let validateNum = (rule, value, callback) => {
+            !/^(0|[1-9][0-9]*)(\.\d{1,2})?$/.test(value) &&
+                callback(new Error(rule.message));
+            callback();
+        };
+        // 校验不大于1
+        let validateNoMore1 = (rule, value, callback) => {
+            if (value > 1) {
+                callback(new Error(rule.message));
+                return;
+            }
+            callback();
+        };
+
         return {
             getListApi: this.$api.modelLibrary.getVehicleList, // 获取列表api
             showName: "vehicleName",
@@ -387,50 +402,147 @@ export default {
                 // ],
                 maxSpeed: [
                     { required: true, message: "请输入", trigger: "blur" },
+                    {
+                        validator: validateNum,
+                        message: "请输入最多带有两位小数的非负数",
+                        trigger: ["blur"],
+                    },
                 ],
                 enginePower: [
                     { required: true, message: "请输入", trigger: "blur" },
+                    {
+                        validator: validateNum,
+                        message: "请输入最多带有两位小数的非负数",
+                        trigger: ["blur"],
+                    },
                 ],
                 maxDeceleration: [
                     { required: true, message: "请输入", trigger: "blur" },
+                    {
+                        validator: validateNum,
+                        message: "请输入最多带有两位小数的非负数",
+                        trigger: ["blur"],
+                    },
                 ],
                 maxSteeringAngle: [
                     { required: true, message: "请输入", trigger: "blur" },
+                    {
+                        validator: validateNum,
+                        message: "请输入最多带有两位小数的非负数",
+                        trigger: ["blur"],
+                    },
                 ],
                 overallEfficiency: [
                     { required: true, message: "请输入", trigger: "blur" },
+                    {
+                        validator: validateNoMore1,
+                        message: "请输入不大于1的非负数",
+                        trigger: ["blur"],
+                    },
+                    {
+                        validator: validateNum,
+                        message: "请输入最多带有两位小数的非负数",
+                        trigger: ["blur"],
+                    },
                 ],
                 frontSurfaceEffective: [
                     { required: true, message: "请输入", trigger: "blur" },
+                    {
+                        validator: validateNum,
+                        message: "请输入最多带有两位小数的非负数",
+                        trigger: ["blur"],
+                    },
                 ],
                 airDragCoefficient: [
                     { required: true, message: "请输入", trigger: "blur" },
+                    {
+                        validator: validateNoMore1,
+                        message: "请输入不大于1的非负数",
+                        trigger: ["blur"],
+                    },
+                    {
+                        validator: validateNum,
+                        message: "请输入最多带有两位小数的非负数",
+                        trigger: ["blur"],
+                    },
                 ],
                 rollingResistanceCoefficient: [
                     { required: true, message: "请输入", trigger: "blur" },
+                    {
+                        validator: validateNoMore1,
+                        message: "请输入不大于1的非负数",
+                        trigger: ["blur"],
+                    },
+                    {
+                        validator: validateNum,
+                        message: "请输入最多带有两位小数的非负数",
+                        trigger: ["blur"],
+                    },
                 ],
                 wheelDiameter: [
                     { required: true, message: "请输入", trigger: "blur" },
+                    {
+                        validator: validateNum,
+                        message: "请输入最多带有两位小数的非负数",
+                        trigger: ["blur"],
+                    },
                 ],
                 frontDistance: [
                     { required: true, message: "请输入", trigger: "blur" },
+                    {
+                        validator: validateNum,
+                        message: "请输入最多带有两位小数的非负数",
+                        trigger: ["blur"],
+                    },
                 ],
                 rearDistance: [
                     { required: true, message: "请输入", trigger: "blur" },
+                    {
+                        validator: validateNum,
+                        message: "请输入最多带有两位小数的非负数",
+                        trigger: ["blur"],
+                    },
                 ],
                 leftDistance: [
                     { required: true, message: "请输入", trigger: "blur" },
+                    {
+                        validator: validateNum,
+                        message: "请输入最多带有两位小数的非负数",
+                        trigger: ["blur"],
+                    },
                 ],
                 rightDistance: [
                     { required: true, message: "请输入", trigger: "blur" },
+                    {
+                        validator: validateNum,
+                        message: "请输入最多带有两位小数的非负数",
+                        trigger: ["blur"],
+                    },
                 ],
                 heightDistance: [
                     { required: true, message: "请输入", trigger: "blur" },
+                    {
+                        validator: validateNum,
+                        message: "请输入最多带有两位小数的非负数",
+                        trigger: ["blur"],
+                    },
                 ],
                 wheelbase: [
                     { required: true, message: "请输入", trigger: "blur" },
+                    {
+                        validator: validateNum,
+                        message: "请输入最多带有两位小数的非负数",
+                        trigger: ["blur"],
+                    },
+                ],
+                mass: [
+                    { required: true, message: "请输入", trigger: "blur" },
+                    {
+                        validator: validateNum,
+                        message: "请输入最多带有两位小数的非负数",
+                        trigger: ["blur"],
+                    },
                 ],
-                mass: [{ required: true, message: "请输入", trigger: "blur" }],
                 // vehicleType: [
                 //     { required: true, message: "请选择", trigger: "change" },
                 // ],
@@ -467,8 +579,10 @@ export default {
                 if (res.code == 200 && res.info) {
                     this.$refs.form.clearValidate();
                     this.form = res.info;
-                    if(res.info.vehicleImage) {
-                        this.modelImgSrc = this.getImgUrl(res.info.vehicleImage);
+                    if (res.info.vehicleImage) {
+                        this.modelImgSrc = this.getImgUrl(
+                            res.info.vehicleImage
+                        );
                     }
                 } else {
                     this.$message.error(res.message || "获取失败");

+ 2 - 2
src/views/sceneLibrary/scenePacketList.vue

@@ -98,7 +98,7 @@
                     >
                     </el-input>
                 </el-form-item>
-                <el-form-item label="权重:" prop="weight">
+                <el-form-item label="权重%:" prop="weight">
                     <el-input
                         placeholder="请输入"
                         maxlength="6"
@@ -248,7 +248,7 @@ export default {
                 return;
             }
             // !/^(0|[1-9]+[0]*)[(\.\d{1,2})]?$/.test(value) &&
-            !/^[1-9]+[0]*$/.test(value) && callback(new Error(rule.message));
+            !/^[1-9][0-9]*$/.test(value) && callback(new Error(rule.message));
             callback();
         };