可输入汉字、英文、数字,最多30个字符(不包含特殊字符)
systemType: [
{
type: "string",
required: true,
message: "请输入巷道名称",
trigger: "change",
},
{
min: 1,
max: 30,
message: "长度在 1 到 30 个字符",
trigger: "change",
},
{
required: true,
message: "不能包含特殊字符",
trigger: "change",
pattern: /^[\u4E00-\u9FA5a-zA-Z0-9]{1,30}$/,
},
],
可输入数字,小数点后保留2位,最大9999.99
{
required: true,
message: "请输入巷道长度",
trigger: "change",
},
{
required: true,
message: "最多两位小数",
trigger: "change",
pattern: /^(\d+)(.\d{0,2})?$/,
},
{
required: true,
message: "最大限制9999.99",
trigger: "change",
pattern: /^(([1-9]\d{0,3})|0)(\.\d{0,2})?$/,
},
可输入汉字、英文、数字、特殊符号,最多200个字符
{
type: "string",
required: true,
message: "请输入地质情况",
trigger: "change",
},
{
min: 1,
max: 200,
message: "长度在 1 到 200 个字符",
trigger: "change",
},
全部代码
<template>
<div class="add-device-box" @click.self="close">
<div class="add-device">
<div class="head">{{ title }}</div>
<div class="main">
<el-form
ref="ruleForm"
label-width="110px"
size="medium"
:inline="true"
:rules="rules"
:model="paramsData"
class="demo-form-inline"
>
<el-form-item
label="月份"
prop="sensorName"
style="margin-right: 50px"
>
<el-date-picker
v-model="paramsData.sensorName"
type="month"
placeholder="请选择月份"
/>
</el-form-item>
<el-form-item label="巷道名称" prop="systemType">
<el-input
v-model="paramsData.systemType"
placeholder="请输入巷道名称"
/>
</el-form-item>
<el-form-item label="开始点位名称" prop="monitorType">
<el-input
v-model="paramsData.monitorType"
placeholder="请输入开始点位名称"
/>
</el-form-item>
<el-form-item label="结束点位名称" prop="sensorIp">
<el-input
v-model="paramsData.sensorIp"
placeholder="请输入结束点位名称"
/>
</el-form-item>
<el-form-item label="巷道长度" prop="sensorPosition">
<el-input
v-model="paramsData.sensorPosition"
placeholder="请输入巷道长度"
type="number"
>
<i slot="suffix" style="margin-right: 10px;color:#3370c2">m</i>
</el-input>
</el-form-item>
<el-form-item label="设计长度" prop="workingFaceName">
<el-input
v-model="paramsData.workingFaceName"
placeholder="请输入设计长度"
type="number"
>
<i slot="suffix" style="margin-right: 10px;color:#3370c2">m</i>
</el-input>
</el-form-item>
<el-form-item label="已施工长度" prop="department">
<el-input
v-model="paramsData.department"
placeholder="请输入已施工长度"
type="number"
>
<i slot="suffix" style="margin-right: 10px;color:#3370c2">m</i>
</el-input>
</el-form-item>
<el-form-item label="剩余长度" prop="leader">
<el-input
v-model="paramsData.leader"
placeholder="请输入剩余长度"
type="number"
>
<i slot="suffix" style="margin-right: 10px;color:#3370c2">m</i>
</el-input>
</el-form-item>
<el-form-item label="地质情况" prop="qk" class="inner">
<el-input v-model="paramsData.qk" placeholder="请输入地质情况" />
</el-form-item>
</el-form>
</div>
<div class="footer">
<button class="_confirm" @click="confirm('ruleForm')">确定</button>
<span style="width: 40px" />
<button class="_confirm" @click="close">取消</button>
</div>
</div>
</div>
</template>
<script>
import { mapState } from "vuex";
import { getAllSystemTypes } from "@/api/monitor";
import moment from "moment";
import { getData, week } from "@/views/dispatch/common";
export default {
props: {
editdata: {
type: Object,
default: () => null,
},
workList: {
type: Array,
default: () => [],
},
title: {
type: String,
default: () => "编辑设备",
},
},
data() {
return {
paramsData: {
systemType: "",
monitorType: "",
sensorIp: "",
workingFaceName: "",
qk: "",
sensorName: "",
},
value: "",
list: [],
monthList: [],
getData,
submit: false,
userNameMsg: "",
monitorTypesList: [],
systemTypesList: [],
workingFaceName: "",
name: "",
jobNumber: "",
rules: {
sensorName: [
{ required: true, message: "请选择月份", trigger: "change" },
],
systemType: [
{
type: "string",
required: true,
message: "请输入巷道名称",
trigger: "change",
},
{
min: 1,
max: 30,
message: "长度在 1 到 30 个字符",
trigger: "change",
},
{
required: true,
message: "不能包含特殊字符",
trigger: "change",
pattern: /^[\u4E00-\u9FA5a-zA-Z0-9]{1,30}$/,
},
],
monitorType: [
{
type: "string",
required: true,
message: "请输入开始点位名称",
trigger: "change",
},
{
min: 1,
max: 20,
message: "长度在 1 到 20 个字符",
trigger: "change",
},
{
required: true,
message: "不能包含特殊字符",
trigger: "change",
pattern: /^[\u4E00-\u9FA5a-zA-Z0-9]{1,20}$/,
},
],
sensorIp: [
{
type: "string",
required: true,
message: "请输入结束点位名称",
trigger: "change",
},
{
min: 1,
max: 20,
message: "长度在 1 到 20 个字符",
trigger: "change",
},
{
required: true,
message: "不能包含特殊字符",
trigger: "change",
pattern: /^[\u4E00-\u9FA5a-zA-Z0-9]{1,20}$/,
},
],
sensorPosition: [
{
required: true,
message: "请输入巷道长度",
trigger: "change",
},
{
required: true,
message: "最多两位小数",
trigger: "change",
pattern: /^(\d+)(.\d{0,2})?$/,
},
{
required: true,
message: "最大限制9999.99",
trigger: "change",
pattern: /^(([1-9]\d{0,3})|0)(\.\d{0,2})?$/,
},
],
workingFaceName: [
{
required: true,
message: "请输入设计长度",
trigger: "change",
},
{
required: true,
message: "最多两位小数",
trigger: "change",
pattern: /^(\d+)(.\d{0,2})?$/,
},
{
required: true,
message: "最大限制9999.99",
trigger: "change",
pattern: /^(([1-9]\d{0,3})|0)(\.\d{0,2})?$/,
},
],
department: [
{
required: true,
message: "请输入已施工长度",
trigger: "change",
},
{
required: true,
message: "最多两位小数",
trigger: "change",
pattern: /^(\d+)(.\d{0,2})?$/,
},
{
required: true,
message: "最大限制9999.99",
trigger: "change",
pattern: /^(([1-9]\d{0,3})|0)(\.\d{0,2})?$/,
},
],
leader: [
{
required: true,
message: "请输入剩余长度",
trigger: "change",
},
{
required: true,
message: "最多两位小数",
trigger: "change",
pattern: /^(\d+)(.\d{0,2})?$/,
},
{
required: true,
message: "最大限制9999.99",
trigger: "change",
pattern: /^(([1-9]\d{0,3})|0)(\.\d{0,2})?$/,
},
],
qk: [
{
type: "string",
required: true,
message: "请输入地质情况",
trigger: "change",
},
{
min: 1,
max: 200,
message: "长度在 1 到 200 个字符",
trigger: "change",
},
],
},
};
},
computed: {
...mapState("settings", ["workingList"]),
roleList() {
return this.rolelist.slice(1);
},
},
mounted() {
this.paramsData = { ...this.paramsData, ...this.editdata };
console.log(this.paramsData);
this.getTypes();
},
created() {
// this.paramsData.sensorName = new Date();
},
methods: {
close() {
this.$emit("closeAdd");
},
// querySearch(queryString, cb) {
// // debugger
// var restaurants = this.systemTypesList;
// var results = queryString
// ? restaurants.filter(this.createFilter(queryString))
// : restaurants;
// // 调用 callback 返回建议列表的数据
// cb(results);
// },
createFilter(queryString) {
return (restaurant) => {
return (
restaurant.value.toLowerCase().indexOf(queryString.toLowerCase()) ===
0
);
};
},
async getTypes() {
const data1 = await getAllSystemTypes();
const systemData = data1.data;
const arr = [];
systemData.forEach((item) => {
arr.push({ value: item });
});
// const data2 = await getMonitorTypes()
this.systemTypesList = arr;
console.log(this.systemTypesList);
// this.monitorTypesList = data2.data
// console.log(data1, data2)
},
changeUser(e, key) {},
confirm(formName) {
this.$refs[formName].validate((valid) => {
if (valid) {
if (this.editdata && this.editdata.id) {
this.paramsData.id = this.editdata.id;
}
this.$emit("sendData", this.paramsData);
} else {
console.log("error submit!!");
return false;
}
});
},
},
};
</script>
<style lang="scss" scoped>
.add-device-box {
width: 100%;
height: 100%;
background: rgba(0, 0, 0, 0.7);
position: fixed;
top: 0;
left: 0;
display: flex;
justify-content: center;
align-items: center;
z-index: 999;
}
.add-device {
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
width: 800px;
background: url("../../../assets/setting_image/confirm_bg.png");
background-size: 100% 100%;
position: relative;
// background-color: rgba(17, 24, 59, 0.8);
.head {
height: 95px;
font-size: 28px;
color: #6dc9ff;
font-weight: 550;
display: flex;
justify-content: center;
align-items: center;
// border-bottom: 1px solid #142660;
}
.main {
padding: 20px;
width: 100%;
}
.footer {
width: 100%;
// padding: 20px 0;
margin-bottom: 30px;
display: flex;
justify-content: center;
align-items: center;
}
}
.inner {
::v-deep .el-input__inner {
width: 640px;
}
}
::v-deep .el-input__inner {
font-size: 12px !important;
// height: 45px;
width: 260px;
// background: #11194F;
}
::v-deep .redColor .el-input__inner {
border-color: red;
}
::v-depp .is-checked .el-checkbox__label {
color: #fff;
}
::v-depp .el-checkbox__inner {
width: 22px;
height: 22px;
}
::v-deep input::-webkit-outer-spin-button,
::v-deep input::-webkit-inner-spin-button {
-webkit-appearance: none !important;
}
::v-deep input[type="number"] {
-moz-appearance: textfield !important;
}
</style>
修正长度中可以输入加减号的bug问题
{
required:true,
message:'仅支持输入数字',
trigger:'change',
pattern:/^[\d\.]+$/, // 只能输入数字,除小数点之外其他的都默认是特殊字符
}
大于等于0小于等于100的正数用正则表达式表示
可以有小数:^100$|^(\d|[1-9]\d)(\.\d+)*$
不可以有小数:^100$|^(\d|[1-9]\d)$