您当前的位置:首页 > 网站建设 > javascript
| php | asp | css | H5 | javascript | Mysql | Dreamweaver | Delphi | 网站维护 | 帝国cms | React | 考试系统 | ajax |

vue实现底部弹窗多选

51自学网 2022-05-02 21:32:38
  javascript

本文实例为大家分享了vue实现底部弹窗多选的具体代码,供大家参考,具体内容如下

代码:

<template>  <div class="release-post">    <div class="resume_main">      <div class="resume_content">        <van-form>          <div class="table_list post_welfare">            <p class="name_title">岗位福利<span class="required">*</span></p>            <van-field              class="calendar"              input-align="left"              v-model="benefits"              placeholder="请选择岗位福利"              @focus="onFocus"              :class="{ borderStyle: welfareChange }"              @click.stop="clickWelfare"              :disabled="true"            />          </div>        </van-form>        <!-- 岗位福利 -->        <van-popup v-model="showWelfare" position="bottom">          <div class="welfare_top">            <p></p>            <p class="welfare_title">福利待遇(可多选)</p>            <p class="welfare_btn" @click.stop="onConfirmSpeed">完成</p>          </div>          <div class="welfare_content">            <div              v-for="(item, index) in welfareList"              :key="index"              :class="{ active: item.active }"              id="welfare_item"              @click.stop="clickWelfareItem(item, index)"            >              <p :class="item.active ? 'welfare_text' : 'not_welfare_text'">                {{ item.text }}              </p>            </div>          </div>        </van-popup>      </div>    </div>    <div>      <div class="mask">        <button          class="btn"          @click="submit"          :class="{ btnBg: colorChange() }"          v-preventReClick="1000"        >          完成        </button>      </div>    </div>  </div></template> <script>import Vue from 'vue';import { Circle, DatetimePicker, Form, Field, Toast, Calendar, Picker, Overlay, ActionSheet, Popup } from 'vant';import 'vant/lib/index.less';Vue.use(Circle).use(DatetimePicker).use(Form).use(Field).use(Toast).use(Calendar).use(Picker).use(Overlay).use(ActionSheet).use(Popup); export default {  name: "PerfectPost",  data () {    return {      welfareList: [        {          id: 1,          text: "包吃"        },        {          id: 2,          text: "包住"        },        {          id: 3,          text: "五险一金"        },        {          id: 4,          text: "年底双薪"        },        {          id: 5,          text: "商业险"        },        {          id: 6,          text: "意外险"        },        {          id: 7,          text: "团建"        },        {          id: 8,          text: "周末双休"        },        {          id: 9,          text: "下午茶"        },        {          id: 10,          text: "餐补"        },        {          id: 11,          text: "交通补助"        },        {          id: 12,          text: "班车接送"        },        {          id: 13,          text: "奖金"        },        {          id: 14,          text: "公费培训"        },        {          id: 15,          text: "公费旅游"        },      ],      showWelfare: false,//岗位福利      onlineForm: {        benefits: "",//岗位福利      },      checkedList: [],      welfareChange: false,    };  },  methods: {    //弹出岗位福利    clickWelfare () {      this.showRedTips()      this.showWelfare = true    },    //选择福利项    clickWelfareItem (v) {      if (v.active) {        Vue.set(v, 'active', false)      } else if (this.checkedList.length < 5) {        Vue.set(v, 'active', true)      }      this.checkedList = this.welfareList.filter(function (item) {        return item.active      })      if (this.checkedList.length >= 5) {        Toast('最多只能选择5个哦')      }    },    //完成福利选项    onConfirmSpeed () {      this.showWelfare = false      this.welfareChange = false      let itemList = this.checkedList.map((item) => {        return item.text      });      let str = itemList.join('/')      let str1 = itemList.join(';')      this.benefits = str ? str : this.benefits      this.onlineForm.benefits = str1 ? str1 : this.benefits    },    showRedTips () {      this.welfareChange = false    },    onFocus () {      this.showRedTips()    },    //下一步按钮色值    colorChange () {      if (this.onlineForm.benefits) {        return true      }    },    // 验证    validateOnlineForm () {      let valid = true;      if (!this.onlineForm.benefits || !this.onlineForm.benefits.trim()) {        valid = false;        Toast('请选择岗位福利')        this.welfareChange = true      }      return valid;    },    //提交    submit () {      if (this.validateOnlineForm()) {        Toast('提交')      }    },  },};</script> <style scoped lang="less" >* {  margin: 0;  padding: 0;}::v-deep .van-picker__title {  font-size: 17px;  font-family: PingFangSC, PingFangSC-Medium;  font-weight: 500;  text-align: center;  color: #333333;}.release-post {  width: 100%;  padding-bottom: 64px;  padding-top: constant(safe-area-inset-top);  padding-top: env(safe-area-inset-top);}.post_welfare {  ::v-deep .van-field__control:disabled {    font-size: 15px;    font-family: PingFangSC, PingFangSC-Regular;    font-weight: 400;    text-align: left;    color: #333333;    -webkit-text-fill-color: #333333;  }  ::v-deep input::-webkit-input-placeholder {    font-size: 15px;    font-family: PingFangSC, PingFangSC-Regular;    font-weight: 400;    text-align: left;    color: #999999;    -webkit-text-fill-color: #999999;  }}::v-deep .van-field__control:disabled {  font-size: 15px;  font-family: PingFangSC, PingFangSC-Regular;  font-weight: 400;  text-align: left;  color: #333333;  -webkit-text-fill-color: #333333;} .welfare_content {  padding-top: 10px;  padding-bottom: 30px;  display: flex;  justify-content: space-around;  align-items: center;  flex-wrap: wrap;  margin: 0 16px;}#welfare_item {  width: 31%;}.welfare_top {  display: flex;  justify-content: space-between;  align-items: center;  padding: 13px 0;  border-bottom: solid 0.5px #e5e5e5;}.welfare_title {  font-size: 17px;  font-family: PingFangSC, PingFangSC-Medium;  font-weight: 500;  text-align: center;  color: #333333;  margin-right: -16px;}.welfare_btn {  font-size: 16px;  font-family: PingFangSC, PingFangSC-Regular;  font-weight: 400;  text-align: right;  color: #333333;  margin-right: 16px;}.welfare_text {  height: 36px;  background: #f4f8ff;  border: 1px solid #bbdcff;  border-radius: 4px;  margin-top: 10px;  line-height: 36px;   font-size: 14px;  font-family: PingFangSC, PingFangSC-Medium;  font-weight: 500;  text-align: center;  color: #1283ff;}.not_welfare_text {  height: 36px;  background: #ffffff;  border: 1px solid #e5e5e5;  border-radius: 4px;  margin-top: 10px;  line-height: 36px;   font-size: 14px;  font-family: PingFang, PingFang-SC;  font-weight: 500;  text-align: center;  color: #333333;} .resume_content {  margin-left: 30px;  margin-right: 30px;  ::v-deep {    .van-popup--bottom {      border-top-left-radius: 12px;      border-top-right-radius: 12px;    }  }}.mask {  width: 100%;  background: #ffffff;  box-shadow: 0px 0px 8px 0px rgba(204, 204, 204, 0.3);  position: fixed;  bottom: 0;  left: 0;  display: flex;  justify-content: center;  align-items: center;  padding: 10px 0;  padding-bottom: calc(env(safe-area-inset-bottom)+15px);  padding-bottom: calc(env(safe-area-inset-bottom) + 15px);}.btn {  font-size: 16px;  font-family: PingFangSC, PingFangSC-Medium;  font-weight: 500;  text-align: left;  color: #ffffff;  margin: 0 auto;  text-align: center;  line-height: 1.6rem;  width: 100%;  margin: 0 16px;  height: 48px;  background: #d8d8d8;}.btnBg {  font-size: 16px;  font-family: PingFangSC, PingFangSC-Medium;  font-weight: 500;  text-align: left;  color: #ffffff;  margin: 0 auto;  text-align: center;  line-height: 1.6rem;  width: 100%;  margin: 0 16px;  height: 48px;  background: #d8d8d8;  border: none;  outline: none;  background: linear-gradient(90deg, #50a3ff, #1283ff);  border-radius: 4px;} .name_title {  font-size: 16px;  font-family: PingFangSC, PingFangSC-Medium;  font-weight: 500;  color: #333333;} .required {  font-size: 13px;  font-family: PingFangSC, PingFangSC-Regular;  font-weight: 400;  color: #ff1d28;  position: absolute;}.calendar {  width: 100%;  height: 49px;  background: #ffffff;  border: 1px solid #e5e5e5;  border-radius: 5px;  margin-top: 10px;  padding-left: 20px;  background: url("./images/drop-down.png") no-repeat 96% center;  background-size: 10px 7px;  padding-right: 25px;  ::v-deep .van-field__control {    font-size: 15px;    font-family: PingFangSC, PingFangSC-Regular;    font-weight: 400;    text-align: left;    color: #333333;    margin-top: 12px;  }}::v-deep input::-webkit-input-placeholder {  font-size: 15px;  font-family: PingFangSC, PingFangSC-Regular;  font-weight: 400;  text-align: left;  color: #afadad;  -webkit-text-fill-color: #afadad;}.table_list {  margin-top: 16px;}.borderStyle {  border: solid 1px #ff1d28;  border-radius: 3px;}input::-webkit-input-placeholder {  font-size: 15px;  font-family: PingFangSC, PingFangSC-Regular;  font-weight: 400;  text-align: left;  color: #999999;}.van-field__control {  color: #333333;}</style>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持wanshiok.com。


vue+echart实现双柱状图
vue实现内容可滚动的弹窗效果
51自学网,即我要自学网,自学EXCEL、自学PS、自学CAD、自学C语言、自学css3实例,是一个通过网络自主学习工作技能的自学平台,网友喜欢的软件自学网站。
京ICP备13026421号-1