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 @@