elementui form表单 自定义校验规则

<template>
<!-- 新增/修改进度计划 -->
<div class="addPlan" id="quxiao">
  <el-form :model="dataModel" :rules="rules" ref="addPlan" label-width="135px">
    <el-form-item label="项目名称:" prop="projectIdArry">
        <el-cascader :options="projectList" v-model="dataModel.projectIdArry" :props="defaultProp" size="small" placeholder="请选择项目" style="width:100%;" @change="changeProject" clearable :disabled="iscompany"></el-cascader>
    </el-form-item>
    <el-form-item label="选择统计项:" prop="visualStatId">
         <!-- <el-select filterable   size="small" v-model="dataModel.visualStatId" placeholder="请选择形象进度统计项"  style="width:100%;"  @change="changeVisu" clearable>
            <el-option v-for="(item,index) in statisList" :label="item.statName" :value="item.id" :key="index" ></el-option>
        </el-select> -->
        <el-cascader id="testid" :options="statisList" v-model="dataModel.visualStatId" :props="defaultProp1" size="small" placeholder="选择统计项" style="width:100%;" @change="changeVisu" clearable ></el-cascader>
        <span v-if="visualStatObject&&JSON.stringify(visualStatObject) != '{}'" style="color:rgb(64, 158, 255);">分部分项:{{visualStatObject.subFullName}}</span>
        <div  v-if="visualStatObject&&JSON.stringify(visualStatObject) != '{}'" class="visualSpan">
          <span>预算工程量:{{visualStatObject.budgetTotal}}{{visualStatObject.unitName}}</span>
          <span>已完成工程量:{{visualStatObject.finishBudget}}{{visualStatObject.unitName}}</span>
          <span>剩余工程量:{{(visualStatObject.budgetTotal - visualStatObject.finishBudget).toFixed(2)}}{{visualStatObject.unitName}}</span>
        </div> 
    </el-form-item>
    <el-form-item label="任务名称:" prop="planName">
        <el-input v-model="dataModel.planName" size="small"></el-input>
    </el-form-item>
    <el-form-item label="开始时间:" prop="planStartTime">
         <el-date-picker format="yyyy 年 MM 月 dd 日"  size="small" v-model="dataModel.planStartTime" type="date" placeholder="选择日期" style="width:100%;"></el-date-picker>
    </el-form-item>
    <el-form-item label="完成时间:" prop="planEndTime">
        <el-date-picker  :picker-options="pickerOptions1"  format="yyyy 年 MM 月 dd 日"  size="small" v-model="dataModel.planEndTime " type="date" placeholder="选择日期" style="width:100%;"></el-date-picker>
    </el-form-item> 
    <el-form-item label="计划完成工程量:" prop="planFinish">
        <el-input v-model="dataModel.planFinish " size="small"></el-input>
    </el-form-item>
    <el-form-item label="跟踪频率:" prop="trackCycle">
         <el-select size="small" v-model="dataModel.trackCycle" placeholder="请选择跟踪频率:" clearable style="width:100%;">
            <el-option v-for="(item,index) in trackList" :label="item.name" :value="item.number" :key="index"></el-option>
         </el-select>
    </el-form-item>
    <el-form-item label="施工负责人:" prop="respUser">
         <el-select size="small" v-model="dataModel.respUser" placeholder="请选择负责人" clearable style="width:100%;">
            <el-option v-for="(item,index) in userList" :label="item.trueName" :value="item.id" :key="index"></el-option>
         </el-select> 
    </el-form-item>
  </el-form>
  <div class="clickBtn">
    <el-button @click="close"  size="small">取消</el-button>
    <el-button @click="commit" size="small" type="primary" :disabled="isSuccess">保存</el-button>
  </div>
</div>
</template>

<script>
import { addConstructPlan,updateConstructPlan,getConstructPlanById,getVisualStatItemListTree,listUserInfo,getMonthAddoption} from "../api/system_interface.js";
import { mapState, mapActions } from 'vuex'
export default {
  name: "addPlan",
  data() {
      var valiNumberPass = (rule, value, callback) => {
        let reg = /^[+-]?(0|([1-9]\d*))(\.\d+)?$/g;
         if (value === '') {
          callback(new Error('请输入计划完成工程量'));
        } else if (!reg.test(value)) {
          callback(new Error('请输入数字'));
        } else {
          callback();
        }
      };
    return {
      dataModel: {
        projectId: [],
        planEndTime: "",
        planFinish: null,
        planName: "",
        planStartTime: "",
        respUser: null,
        trackCycle: null,
        visualStatId: null,
        projectIdArry:[]
      },
      visualStatObject:null,
      iscompany:false,
      isSuccess:false,
      statisList:[],
      //数据校验
      rules: {
        projectIdArry: [{ required: true, message: "请选择项目", trigger: "blur" }],
        visualStatId: [{ required: true, message: "请选择统计项", trigger: "blur" }],
        planName: [{ required: true, message: "请输入任务名称:", trigger: "blur" }],
        planStartTime: [{ required: true, message: "请选择开始时间", trigger: "blur" }],
        planEndTime: [{ required: true, message: "请选择完成时间", trigger: "blur" }],
        planFinish: [{ required: true, validator:valiNumberPass, trigger: "change" }],
        trackCycle: [{ required: true, message: "请选择跟踪频率", trigger: "blur" }],
        respUser: [{ required: true, message: "请选择负责人", trigger: "blur" }]

      },
      
      radio: "",
      progressList: [],
      defaultProp: {
        children: "child",
        label: "name",
        value: "id"
      },
      defaultProp1:{
        children: "child",
        label: "regionName",
        value: "id"
      },
      userList:[],
  
      pickerOptions1: {
           disabledDate:(time) => {
            var date =  new Date(this.dataModel.planStartTime);
            var y = 1900+date.getYear();
            var m = "0"+(date.getMonth()+1);
            var d = "0"+date.getDate();
            var satrtTime = y+"-"+ m.substring(m.length-2,m.length)+"-"+d.substring(d.length-2,d.length);
            var arr = satrtTime.split("-"); //将获取的时间按“-”拆分成字符串数组
            var year = parseInt(arr[0]); //开分字符串数组的第一个地址的内容是年份
            var month = parseInt(arr[1]); //开分字符串数组的第二个地址的内容是月份
            var prevmonthLastday = (new Date(year, month, 1)).getTime() - 86400000;
            var valueData = new Date(prevmonthLastday); //结束时间
            return time.getTime() <this.dataModel.planStartTime || time.getTime() > valueData;
          }
      }
    };
  },
  computed: {
    ...mapState([
     'projectList'    
    ]),
  },
  methods: {

    ...mapActions([
        'changeListChOrgInfo'
    ]),






  




    
  }
};
</script>

 

原文地址:https://blog.csdn.net/qq_37899792/article/details/89880923

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


el-menu 有个属性 :default-active="curActive"  el-menu-item有个属性:index=“home”这2个属性值对上号就自动定位了data(){ return{ curActive:"home" }; },
基础用法1<el-inputv-model="input1"palcehoder="请输入"></el-input>23varMain={4data(){5return{6input1:''7}8}9}10varCtor=Vue.extend(Main)11newCtor().$mount('#app&#03
 1.安装element-uinpminstallelement-ui-S 2.在main.js中importElementUIfrom'element-ui'import'element-ui/libheme-chalk/index.css'Vue.use(ElementUI)注意index.css的路径不要出错:在node_modules文件夹里node_modules\element-ui\lib\theme-c
layout布局通过基础的24分栏,可进行快速布局基础布局使用单一分栏创建基础的栅格布局,通过span属性指定每栏的大小<el-col:span="8"></el-col>1<el-row>2<el-col:span="8"><divclass="grid-contentbg-purple"></div>&
 今天做一个选择年份的功能,直接调用了ElementUI里面的DatePicker组件,官网上有该组件的用法介绍,讲得很清楚。 我的代码: 官网说明: 奇怪的事情发生了,我明明按照例子写了  value-format="yyyy" 可是获得的值却一直还是Date对象 仔细检查后,我突然发现我的v-model
  that.end 即为结束日期
vueelementUitree懒加载使用详情2018年11月21日11:17:04开心大表哥阅读数:3513 https://blog.csdn.net/a419419/article/details/84315751 背景:vue下使用elementUI文档:http://element-cn.eleme.io/#/zh-CN/componentree#tree-shu-xing-kong-jian需求:只保存二
环境搭建说明:1、全局安装angluar脚手架npminstall-g@angular/cli2、初始化项目(支持scss)ngnew项目名称--style=scss//进入项目cd项目名称运行代码可以是:serve或者npminstall(安装依赖)npmstart(运行)3、安装elementnpm
1、在写埋点监控项目的时候,需求是表格里面的数据后台传递过来为0,但是要求显示的时候为—,在elementUI判断,将prop去掉在下面加上<templateslot-scope="scope"><emplate>里面在写vue的判断,因为通过Scopedslot可以获取到row,column,$index和store(table内容的状态管理)的数据。2、
<el-table-columnprop="pubArea"//表格data中对应的字段column-key="pubArea"//过滤条件变化时根据此key判断是哪个表头的过滤label="报修类型"align="center"width=
1.npminstallbabel-plugin-component-D   然后.babelrc替换plugins 文件就在根目录下  2.组件中英文及自定义中英文importVueI18nfrom'vue-i18n'importenLocalefrom'element-ui/lib/locale/lang/en'importzhLocalefrom'element-ui/lib/locale/lang/zh-C
 <el-treeref="tree":data="menu.treeData":props="menu.defaultProps":filter-node-method="filterNode":expand-on-click-node=&quot
2019独角兽企业重金招聘Python工程师标准>>>使用vue+elementui的tree组件,elementui官网elementui的tree组件问题描述:tree层级过多时左右不可滚动问题解决:修改overflow属性值.el-tree-node>.el-tree-node_children{overflow:visible;} 其他相关链接:css--ov
首先elementUI的导航栏中的选中项的高亮显示时的字体颜色可以在属性中设置,但是高亮时的背景颜色不能设置,所以要自己修改高亮的背景颜色.el-menu-item.is-active{background-color:#00b4aa!important;} 在使用elementUI构建vue项目的时候会遇到页面刷新的时候子路由会保
1.首先创建Vue项目(使用vue-cli进行创建)创建项目文章指导地址: https://blog.csdn.net/assiduous_me/article/details/892086492.ElementUI:一套为开发者、设计师和产品经理准备的基于Vue2.0的桌面端组件库 链接地址:http://element.eleme.io/#/zh-CN3.正式开
使用vue开发项目,用到elementUI,根据官网的写法,我们可以自定义主题来适应我们的项目要求,下面来介绍一下两种方法实现的具体步骤,(可以参考官方文档自定义主题官方文档),先说项目中没有使用scss编写,用主题工具的方法(使用的较多)第一种方法:使用命令行主题工具使用vue-cli安装完项目并引
每页显示的序号都是一样的:<el-table:data="tableData"highlight-current-row@current-change="handleCurrentChange"><el-table-columntype="index"width="50"></el-table-column><el-table>根据
  记录一下自己踩的坑,控制element内的table的某列显示隐藏不能用v-show,而是要用v-if具体网上百度了,看一下v-show和v-if的区别吧猜测:由于el-table-column会生成多行标签元素,根据v-show是不支持template语法的,推断v-show不能显示隐藏多个元素 
样式重置单vue文件中重置全局重置多写一个style不加scrop,可能会影响全局样式待补充table单价数量小计3252?在ElementUI中,我需要获取row内的数据并进行计算,需要用到v-slot<el-table-columnlabel="小计"><templatev-slot="scope">{{scop
工作需要做一个带滑块效果的导航栏,初步想法是用element的导航组件去做,后面摸坑结合各位大佬的博客初步实现效果,话不多说,直接上代码,记录一下爬坑之旅1<template>2<divclass="y-nav">3<el-rowclass="nav">4<el-menu5:default-active="$route.