From 2da7559c62c71c4c1e11fe19da0fdd0125b7b13e Mon Sep 17 00:00:00 2001 From: FrancisHu <2756004617@qq.com> Date: Mon, 23 Sep 2024 16:21:08 +0800 Subject: [PATCH] =?UTF-8?q?=E9=A2=84=E8=AD=A6=E5=90=8E=E5=8F=B0-=E9=83=A8?= =?UTF-8?q?=E5=88=86=E4=BF=AE=E6=94=B9-d8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../base/proj/components/form-project.vue | 86 ++++++++++++++++--- .../base/proj/components/table-tower-add.vue | 72 ++++++++++++++-- .../base/projDept/components/form-project.vue | 1 - src/views/base/projDept/config.js | 2 +- src/views/index.vue | 4 +- 5 files changed, 138 insertions(+), 27 deletions(-) diff --git a/src/views/base/proj/components/form-project.vue b/src/views/base/proj/components/form-project.vue index aac9da5..098df0f 100644 --- a/src/views/base/proj/components/form-project.vue +++ b/src/views/base/proj/components/form-project.vue @@ -17,7 +17,6 @@ clearable filterable placeholder="请选择" - @change="proNameChange" > { + if (value === '' || value === null) { + return callback(new Error('请必须输入-180 ~ 180内的数据且小数点后最多保留六位')); + } + const regex = /^[+-]?(0|[1-9]\d*)(\.\d+)?$/; + if(!regex.test(value)){ + return callback(new Error('请勿输入非数字')); + } + const longitude = parseFloat(value); + if(longitude.toString().includes('.') === true){ + if (longitude <-180 || longitude > 180 ||longitude.toString().split(".")[1].length>6) { + callback(new Error('请必须输入-180 ~ 180内的数据且小数点后最多保留六位')); + } else { + callback(); + } + }else{ + if (longitude <-180 || longitude > 180) { + callback(new Error('请必须输入-180 ~ 180内的数据且小数点后最多保留六位')); + } else { + callback(); + } + } + }, + trigger: 'blur' + } ], lat: [ + { required: true, message: "纬度不能为空", trigger: "blur" }, { - required: true, - message: '请输入纬度', - trigger: 'blur', - }, + validator: (rule, value, callback) => { + if (value === '' || value === null) { + return callback(new Error('请必须输入-90 ~ 90内的数据且小数点后最多保留六位')); + } + const regexTwo = /^[+-]?(\d+(\.\d*)?|\.\d*[1-9]\d*)$/; + if(!regexTwo.test(value)){ + return callback(new Error('请勿输入非数字')); + } + const latitude = parseFloat(value); + if(latitude.toString().includes('.') === true){ + if (latitude <-90 || latitude > 90 ||latitude.toString().split(".")[1].length>6) { + callback(new Error('请必须输入-90 ~ 90内的数据且小数点后最多保留六位')); + } else { + callback(); + } + }else{ + if (latitude <-90 || latitude > 90) { + callback(new Error('请必须输入-90 ~ 90内的数据且小数点后最多保留六位')); + } else { + callback(); + } + } + }, + trigger: 'blur' + } ], }, // 各类下拉 @@ -266,10 +311,20 @@ export default { ], provinceRange: [], // 手机号正则 - phoneReg: /^(?:(?:\+|00)86)?1[3-9]\d{9}$/ + phoneReg: /^(?:(?:\+|00)86)?1[3-9]\d{9}$/, + // 经纬正则 + lonLatReg: /^[+-]?(\d+([.]\d*)?([eE][+-]?\d+)?|[.]\d+([eE][+-]?\d+)?)$/ } }, methods: { + /** 校验经纬 */ + validateLonLat(rule, value, callback) { + if(!this.lonLatReg.test(value)) { + callback(new Error('经纬度格式不正确')) + } else { + callback() + } + }, /** 获取各类下拉框 */ async getRanges() { // 获取工程名称下拉选 @@ -351,9 +406,12 @@ export default { } }) }, - /** 级联选择器改变 */ - handleCas(e) { - this.projectParams.impUnit = e[e.length - 1] + /** 项目部改变 */ + async departChange(e) { + let res = await queryProjDeptListApi({ + id: e + }) + this.projectParams.areaId = res.data.rows[0].areaId }, /** 确认按钮 */ onSubmit() { diff --git a/src/views/base/proj/components/table-tower-add.vue b/src/views/base/proj/components/table-tower-add.vue index 4ee230e..c045970 100644 --- a/src/views/base/proj/components/table-tower-add.vue +++ b/src/views/base/proj/components/table-tower-add.vue @@ -62,6 +62,14 @@ export default { } }, methods: { + /** 校验经纬 */ + validateLonLat(rule, value, callback) { + if(!this.lonLatReg.test(value)) { + callback(new Error('经纬度格式不正确')) + } else { + callback() + } + }, /** 查询杆塔 */ async getRanges() { let towerRes = await queryExistTowerApi() @@ -144,22 +152,68 @@ export default { }, ], lon: [ + { required: true, message: "杆塔经度不能为空", trigger: "blur" }, { - required: true, - message: '请输入经度', - trigger: 'blur', - }, + validator: (rule, value, callback) => { + if (value === '' || value === null) { + return callback(new Error('请必须输入-180 ~ 180内的数据且小数点后最多保留六位')); + } + const regex = /^[+-]?(0|[1-9]\d*)(\.\d+)?$/; + if(!regex.test(value)){ + return callback(new Error('请勿输入非数字')); + } + const longitude = parseFloat(value); + if(longitude.toString().includes('.') === true){ + if (longitude <-180 || longitude > 180 ||longitude.toString().split(".")[1].length>6) { + callback(new Error('请必须输入-180 ~ 180内的数据且小数点后最多保留六位')); + } else { + callback(); + } + }else{ + if (longitude <-180 || longitude > 180) { + callback(new Error('请必须输入-180 ~ 180内的数据且小数点后最多保留六位')); + } else { + callback(); + } + } + }, + trigger: 'blur' + } ], lat: [ + { required: true, message: "杆塔纬度不能为空", trigger: "blur" }, { - required: true, - message: '请输入纬度', - trigger: 'blur', - }, + validator: (rule, value, callback) => { + if (value === '' || value === null) { + return callback(new Error('请必须输入-90 ~ 90内的数据且小数点后最多保留六位')); + } + const regexTwo = /^[+-]?(\d+(\.\d*)?|\.\d*[1-9]\d*)$/; + if(!regexTwo.test(value)){ + return callback(new Error('请勿输入非数字')); + } + const latitude = parseFloat(value); + if(latitude.toString().includes('.') === true){ + if (latitude <-90 || latitude > 90 ||latitude.toString().split(".")[1].length>6) { + callback(new Error('请必须输入-90 ~ 90内的数据且小数点后最多保留六位')); + } else { + callback(); + } + }else{ + if (latitude <-90 || latitude > 90) { + callback(new Error('请必须输入-90 ~ 90内的数据且小数点后最多保留六位')); + } else { + callback(); + } + } + }, + trigger: 'blur' + } ], }, // 下拉 - towerRange: [] + towerRange: [], + // 经纬正则 + lonLatReg: /^[+-]?(\d+([.]\d*)?([eE][+-]?\d+)?|[.]\d+([eE][+-]?\d+)?)$/ } }, } diff --git a/src/views/base/projDept/components/form-project.vue b/src/views/base/projDept/components/form-project.vue index cddf31e..fed96e5 100644 --- a/src/views/base/projDept/components/form-project.vue +++ b/src/views/base/projDept/components/form-project.vue @@ -43,7 +43,6 @@ diff --git a/src/views/base/projDept/config.js b/src/views/base/projDept/config.js index 73991ca..4100d84 100644 --- a/src/views/base/projDept/config.js +++ b/src/views/base/projDept/config.js @@ -20,7 +20,7 @@ export const formLabel = [ ] export const columnsList = [ { t_props: 'departName', t_label: '项目部名称', }, - { t_props: 'departType', t_label: '项目部类型' }, + { t_props: 'departTypeName', t_label: '项目部类型' }, { t_props: 'areaName', t_label: '地区' }, { t_props: 'headUser', t_label: '负责人', }, { t_props: 'headUserPhone', t_label: '电话', t_slot: 'headUserPhone' }, diff --git a/src/views/index.vue b/src/views/index.vue index fc054d2..83996ed 100644 --- a/src/views/index.vue +++ b/src/views/index.vue @@ -1,6 +1,6 @@