可拖拽弹框组件

可拖拽组件 <BaseDialog             v-if="totalDialogVisible"             title="合计"             :visible.sync="totalDialogVisible"             width="30%"             @close="handleCloseTotal"             @submit="handleCloseTotal"             >             <!-- <p v-for="(item,index) in currencyData" :key="index" style="color:#DD1931;font-size: 18px; font-weight: bold;">                 <span>应付 {{item.currency}} : </span>                 <span>{{item.totalAmount}}</span>             </p> -->               <!-- 应收 -->               <div v-for="(item,index) in arList" :key="index" style="color:rgb(102, 163, 9); font-size:16px; font-weight:bold">                    <p>应收 {{item.currency}} : {{item.totalAmount}} </p>               </div>                 <!-- 应付 -->                 <div v-for="(item,index) in apList"  :key="'flag'+ index" style="color:rgb(221, 25, 49); font-size:16px; font-weight:bold">                   <p>应付  {{item.currency}} :  {{item.totalAmount}}</p>                 </div>                         </BaseDialog>   ================================================================================================= main.js中引用:  

import BaseDialog from "@/components/BaseDialog"; 在全局挂在一次

Vue.component('BaseDialog', BaseDialog)   baseDigLog文件夹 index.vue:

<template>   <el-dialog     :title="title"     :visible.sync="visible"     :width="width"     :before-close="handleClose"     :append-to-body="true"     :close-on-click-modal="false"     :destroy-on-close="destroyOnClose"     :modal="modal"     :show-close="showClose"     v-dialogDrag="drag"     ref="dialogRef"   >     <div class="center-box">       <slot></slot>     </div>
    <template v-if="slotFooter">       <slot slot="footer" name="slotFooter"></slot>     </template>     <template v-else>       <span slot="footer" class="dialog-footer" v-if="!hiddenFooter">         <el-button @click="handleClose" v-if="showCancel">{{ cancelText }}</el-button>         <el-button type="primary" @click="submit" :loading="loading" v-if="showConfirm" :disabled="confirmDisabled">{{ confirmText }}</el-button>       </span>     </template>   </el-dialog> </template> <script>
export default {   props: {     visible: false,     title: '',     width: '',     // 是否隐藏footer     hiddenFooter: {       type: Boolean,       default: false     },     destroyOnClose: {       type: Boolean,       default: true     },     // 确定后的loading状态     loading: false,     // 插槽footer,为true得自己配置footer, name为slotFooter     slotFooter: false,     // 是否显示确认     showConfirm: {       type: Boolean,       default: true     },     // 是否显示取消     showCancel: {       type: Boolean,       default: true     },     // 是否显示遮罩层     modal: {       type: Boolean,       default: false     },     // 是否显示右上角x     showClose: {       type: Boolean,       default: true     },     // 默认的取消按钮文本     cancelText: {       type: String,       default: '取 消'     },     // 默认的确定按钮文本     confirmText: {       type: String,       default: '确 定'     },     // 是否拖拽     drag: {       type: Boolean,       default: true     },     // 确定按钮是否禁用     confirmDisabled: {       type: Boolean,       default: false     }   },   data() {     return {     };   },   created(){   },   beforeDestroy() {     this.destory()   },   deactivated() {     this.destory()   },   methods: {     handleClose() {       this.$emit("close");     },     submit() {       this.$emit("submit");     },     destory() {       // 没有no-close类名,才执行关闭事件       if (!this.$refs.dialogRef.$el.classList.contains('no-close')) this.handleClose()     }   }, }; </script>
<style lang="scss" scoped> ::v-deep .el-dialog__footer {   text-align: center;   clear: both; } </style> =================================================================== example.vue:

<template>   <BaseDialog     v-if="visible2"     :title="title"     :visible="visible2"     width="1200px"     @close="close"     @submit="submit"   >     <div class="content">       <!-- 这里放业务代码 -->     </div>   </BaseDialog> </template>
<script> // 这是使用BaseDialog组件的例子,可直接复制使用
export default {   props: {     visible: false,     title: {       type: String,       default: () => 'Title'     },   },   data() {     return {       visible2: this.visible,     };   },   created() {   },   methods: {     close() {       this.visible2 = false       this.$emit('close')     },     submit() {       this.close()     }   }, }; </script> <style scoped lang="scss"> .content {   padding: 0 5px 10px;   text-align: left; } </style>  

totalDialogVisible  是用来判断此组件是否需要显示和隐藏的  

handleCloseTotal(){         this.totalDialogVisible = false;     }, 用来关闭弹框

可拖拽弹框组件

  • 20
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值