lc-dialog

二次确认弹窗组件,可以设置标题、内容、按钮定制等

注意事项

  • 尽可能少用,Dialog 会打断用户操作,只用在重要的时候
  • 标题不要超过一行,按钮最多两个
  • 取消按钮在左侧,确定按钮在右侧
  • 类型为’alert’时为1个按钮,类型为’confirm’时为2个按钮
  • 显示图片时不显示标题

效果

使用方法

<template>
<div class="wxc-demo">
<scroller class="scroller">
<title title="lc-dialog"></title>
<category title="基本用法"></category>
<div class="button-list">
<lc-button class="mt20" text="带标题Alert" @LcButtonClicked="open1"></lc-button>
<lc-button class="mt20" text="不带标题Alert" @LcButtonClicked="open2"></lc-button>
<lc-button class="mt20" text="带图片Alert" @LcButtonClicked="open3"></lc-button>
<lc-button class="mt20" text="Confirm" @LcButtonClicked="open4"></lc-button>
</div>
<lc-dialog :type="type1"
:title="title1"
:content="content"
:img="showImg1"
:src="src"
confirm-text="确认"
cancel-text="取消"
:show="show1"
@LcDialogCancelBtnClicked="dialogCancelBtnClick"
@LcDialogConfirmBtnClicked="dialogConfirmBtnClick"></lc-dialog>

<category title="Dialog配置"></category>
<lc-cell :has-top-border="false" :has-bottom-border="false" label="标题文案">
<input class="input"
slot="value"
placeholder="请输入标题"
v-model="title2"
@input="title2=$event.value"/>
</lc-cell>
<lc-cell :has-top-border="false" :has-bottom-border="false" label="说明文案">
<input class="input"
slot="value"
placeholder="请输入说明内容"
v-model="content"
@input="content=$event.value"/>
</lc-cell>
<lc-cell :has-top-border="false" :has-bottom-border="false" label="主按钮">
<input class="input"
slot="value"
placeholder="确定按钮文案"
v-model="confirmText"
@input="confirmText=$event.value"/>
</lc-cell>
<lc-cell :has-top-border="false" :has-bottom-border="false" label="副按钮">
<input class="input"
slot="value"
placeholder="取消按钮文案"
v-model="cancelText"
@input="cancelText=$event.value"/>
</lc-cell>
<lc-cell :has-top-border="false"
:has-bottom-border="false"
:auto-accessible="false"
label="取消按钮">
<switch :checked="type2==='confirm'"
slot="value"
@change="type2= type2==='confirm' ?'alert' : 'confirm'"></switch>
</lc-cell>
<lc-cell :has-top-border="false"
:auto-accessible="false"
:has-bottom-border="false"
label="显示图片">
<switch :checked="showImg2"
slot="value"
@change="showImg2= !showImg2"></switch>
</lc-cell>
<div class="btn" @click="openDialog()">
<text class="btn-txt">打开Dialog试一试</text>
</div>
</scroller>
<lc-dialog :type="type2"
:title="title2"
:content="content"
:img="showImg2"
:src="src"
:confirm-text="confirmText"
:cancel-text="cancelText"
:show="show2"
:is-checked="isChecked"
:no-prompt-text="noPromptText"
:show-no-prompt="showNoPrompt"
@LcDialogCancelBtnClicked="dialogCancelBtnClick"
@LcDialogConfirmBtnClicked="dialogConfirmBtnClick"
@LcDialogNoPromptClicked="dialogNoPromptClick"></lc-dialog>
</div>
</template>

<style scoped>
.mt20{ margin-top:20px;}
.button-list{padding-left: 30px;}
.wxc-demo {
/* position: absolute;
top: 0;
right: 0;
left: 0;
bottom: 0; */
background-color: #fff;
}

.scroller {
flex: 1;
}

.input {
width: 460px;
height: 80px;
line-height: 80px;
text-align: right;
margin-right:30px;
}

.btn {
width: 600px;
height: 80px;
margin-top: 40px;
margin-bottom: 40px;
margin-left: 75px;
flex-direction: row;
align-items: center;
justify-content: center;
border-radius: 6px;
background-color: #ffc300;
border-color: #ffc300;
}

.btn-txt {
font-size: 32px;
color: #ffffff;
}
</style>

<script>
import Light from 'light';
import Title from 'lighting-ui/packages/_mods/title.vue';
import Category from 'lighting-ui/packages/_mods/category.vue';
import LcButton from 'lighting-ui/packages/lc-button';
import LcCell from 'lighting-ui/packages/lc-cell';
import LcDialog from 'lighting-ui/packages/lc-dialog';

export default {
components: { Title, Category, LcDialog, LcCell,LcButton },
data: function () {
return {
type1:'alert',
title1:'',
show1:false,
showImg1:false,
type2: 'confirm',
title2: '标题',
content: '用户需要阅读的内容,这是用户需要阅读的内容。',
confirmText: '确定',
cancelText: '取消',
noPromptText: '不再提示',
show2: false,
single: false,
showImg2:false,
src:"https://img.alicdn.com/tfs/TB1jkA5g9_I8KJjy0FoXXaFnVXa-320-320.png",
showNoPrompt: false,
isChecked: false
};
},
methods: {
openDialog () {
const self = this;
self.show2 = true;
},
open1 () {
this.type1= 'alert';
this.show1 = true;
this.title1 = "这是标题";
},
open2 () {
this.type1= 'alert';
this.show1 = true;
this.title1 = "";
},
open3 () {
this.type1= 'alert';
this.show1 = true;
this.title1 = "";
this.showImg1= true;
},
open4 () {
this.type1= 'confirm';
this.show1 = true;
this.title1 = "这是确认框";
},
dialogCancelBtnClick () {
const modal = Light.requireModule('modal');
this.show2 = false;
this.show1 = false;
this.showImg1= false;
modal.toast({ 'message': '取消回调', 'duration': 1 });
},
dialogConfirmBtnClick () {
const modal = Light.requireModule('modal');
this.show2 = false;
this.show1 = false;
this.showImg1= false;
modal.toast({ 'message': '确认回调', 'duration': 1 });
},
dialogNoPromptClick (e) {
const modal = Light.requireModule('modal');
this.isChecked = e.isChecked;
modal.toast({ 'message': `noPrompt isChecked: ${e.isChecked}`, 'duration': 1 });
}
}
};
</script>

可配置参数

Prop Type Required Default Description
type String Y alert 类型可选’alert’和’confirm’
title String Y - 标题
content String N - 内容说明描述
top Number N 400 弹层距离顶部的高度
img Boolean N false 是否显示图片
src String N - 图片路径,img为true时生效
cancel-text String N 取消 取消按钮文案定制
confirm-text String N 确定 确定按钮文案定制
main-btn-color String N #EE9900 主按钮的颜色值
second-btn-color String N #666666 次要按钮颜色

事件回调

@LcDialogCancelBtnClicked="LcDialogCancelBtnClicked"
@LcDialogConfirmBtnClicked="LcDialogConfirmBtnClicked"
@LcDialogNoPromptClicked="LcDialogNoPromptClicked"

slot插槽

  1. <div slot="title"></div>:标题插槽,覆盖默认标题
  2. <div slot="img"></div>:图片插槽,覆盖默认图片
  3. <div slot="content"></div>:说明文案插槽,覆盖默认内容