vue+elementUI日期选择组件

本文介绍了如何在表单中实现日期组件,包括设置日期范围限制(从今天开始到未来),并演示了如何使用ElDatePicker和RadioGroup组件来控制日期选择和有效期选项。

实现功能如下:
1.日期组件 可选择生效时效输入
2.可控制输入日期为今天到未来

 <el-form-item label="生效时间" prop="effectTime">
            <el-date-picker
              v-model="form.effectTime"
              style="width: 240px"
              value-format="yyyy-MM-dd HH:mm:ss"
              type="datetime"
              placeholder="选择日期时间"
              **:picker-options="pickerOptions"**
            ></el-date-picker>
          </el-form-item>
          <el-form-item label="有效期" prop="status">
            <el-radio-group v-model="form.status">
              <el-radio
                v-for="dict in statusOptions"
                :key="dict.value"
                :label="dict.value"
              >{{ dict.label }}</el-radio
              >
            </el-radio-group>
            <el-date-picker v-model="form.effectEndTime" style="width: 240px" value-format="yyyy-MM-dd HH:mm:ss"
                            type="datetime" placeholder="选择日期时间" v-if="this.form.status==1"  :picker-options="pickerOptions"></el-date-picker>
          </el-form-item>

**js**
data() {
      return {
        // 设置只能选择当前日期及之后的日期
        pickerOptions: {
          disabledDate(time) {
            //如果没有后面的-8.64e7就是不可以选择今天的
            return time.getTime() < Date.now() - 8.64e7;
          }
        },
        }
        }
method:
 statusOptions: Object.freeze([
          { label: '永久', value: '2' },
          { label: '输入有效期', value: '1' }
        ]),

实现展示图:
在这里插入图片描述

VueElementUI中实现父子组件表格联动,可通过ElementUI的树形表格组件达成。以下为具体实现步骤与示例代码: ### 1. 模板部分 在模板里运用ElementUI的`el-table`组件展示表格数据,同时添加`type="selection"`列用于显示复选框。 ```vue <template> <el-table :data="tableData" row-key="id" default-expand-all ref="multipleTable" :tree-props="{children: 'children', hasChildren: 'hasChildren'}" @select-all="selectAll"> <el-table-column type="selection" width="55"> <template slot-scope="{row}"> <el-checkbox v-model="row.isChecked" @change="selectChange(row,row.isChecked)"></el-checkbox> </template> </el-table-column> <el-table-column prop="name" label="姓名" sortable width="180"></el-table-column> <el-table-column prop="createTime" label="创建日期" sortable width="180"></el-table-column> </el-table> </template> ``` ### 2. 脚本部分 在脚本中定义表格数据与处理方法,实现父子级复选框的联动效果。 ```vue <script> export default { data() { return { tableData: [ { id: 1, name: '张三', createTime: '2024-01-01', isChecked: false, children: [ { id: 2, name: '李四', createTime: '2024-01-02', isChecked: false } ] } ] }; }, methods: { selectAll(selection) { // 处理全选/反选逻辑 this.tableData.forEach(item => { this.updateChildrenChecked(item, selection.length > 0); }); }, selectChange(row, checked) { // 更新子节点的选中状态 this.updateChildrenChecked(row, checked); // 更新父节点的选中状态 this.updateParentChecked(row); }, updateChildrenChecked(row, checked) { row.isChecked = checked; if (row.children) { row.children.forEach(child => { this.updateChildrenChecked(child, checked); }); } }, updateParentChecked(row) { if (row.$parent) { const parent = row.$parent; const allChildrenChecked = parent.children.every(child => child.isChecked); const someChildrenChecked = parent.children.some(child => child.isChecked); parent.isChecked = allChildrenChecked; // 可根据需求处理半选状态 if (someChildrenChecked &&!allChildrenChecked) { // 处理半选逻辑 } this.updateParentChecked(parent); } } } }; </script> ``` ### 代码解释 - `selectAll`方法:处理全选/反选逻辑,点击全选框时更新所有父节点子节点的选中状态。 - `selectChange`方法:处理单个复选框的选中状态改变事件,更新子节点父节点的选中状态。 - `updateChildrenChecked`方法:递归更新子节点的选中状态。 - `updateParentChecked`方法:递归更新父节点的选中状态,当子节点全部选中时,父节点自动勾选;取消子节点选中时,父节点也会随之取消。 通过以上步骤,即可在VueElementUI中实现父子组件表格联动的效果。该方法支持动态接口数据传入或懒加载数据、表格分页等功能[^2]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值