1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/onlymry-vue-antd-admin

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
DialogStep.vue 15 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
yanlitian Отправлено 5 лет назад f4dbaea
<template>
<div class="basicmodal">
<div class="modal">
<!-- basic modal -->
<!-- button 打开dialog的button按钮 -->
<a-button class="btn" type="primary" @click="showModal">打开步骤条弹框</a-button>
<!-- 模态框 -->
<a-modal
v-model="visible"
title="Title"
@ok="handleOk"
:bodyStyle="{height:'240px'}"
:confirm-loading="loading"
width="50%"
:destroyOnClose="true"
>
<!-- 自定义footer -->
<template slot="footer">
<a-button key="back" @click="handleCancel">Return</a-button>
<a-button key="submit" type="primary" :loading="loading" @click="handleOk">Submit</a-button>
</template>
<!-- 步骤框 -->
<a-steps v-model="current" @change="stepChangeEvent">
<a-step
v-for="(item,index) of step"
:status="item.status"
:title="item.title"
:key="index"
/>
</a-steps>
<!-- 具体内容 -->
<!-- 如果要把这个插件做成组件,请注意dialog点击遮罩层事件,另外这里可以直接写成<slot>模式 -->
<div class="wrapper">
<div ref="stepWrapper" class="wrapper-container" :style="{width:step.length * 100 +'%'}">
<div class="animate" v-for="(item,index) of step" :key="index">
<div class="steps-content">{{item.title}}</div>
</div>
</div>
</div>
</a-modal>
<a-button class="btn" type="primary" @click="showBasicModal">打开基本弹框</a-button>
<a-modal
v-model="visibleBasic"
title="Basic Modal"
:destroyOnClose="true"
@ok="handleOkBasic"
>
<p>Some contents...</p>
<p>Some contents...</p>
<p>Some contents...</p>
</a-modal>
<a-button class="btn" @click="showConfirm">Confirm</a-button>
<a-button class="btn" type="dashed" @click="showDeleteConfirm">Delete</a-button>
<a-button class="btn" type="dashed" @click="showPropsConfirm">With extra props</a-button>
<a-button class="btn" @click="info">Info</a-button>
<a-button class="btn" @click="success">Success</a-button>
<a-button class="btn" @click="error">Error</a-button>
<a-button class="btn" @click="warning">Warning</a-button>
<!-- form modal -->
</div>
<a-divider />
<div class="confirm-modal">
<div id="components-a-popconfirm-demo-placement">
<div :style="{ marginLeft: `${buttonWidth}px`, whiteSpace: 'nowrap' }">
<a-popconfirm placement="topLeft" ok-text="Yes" cancel-text="No" @confirm="confirm">
<template slot="title">
<p>{{ text }}</p>
<p>{{ text }}</p>
</template>
<a-button>TL</a-button>
</a-popconfirm>
<a-popconfirm placement="top" ok-text="Yes" cancel-text="No" @confirm="confirm">
<template slot="title">
<p>{{ text }}</p>
<p>{{ text }}</p>
</template>
<a-button>Top</a-button>
</a-popconfirm>
<a-popconfirm placement="topRight" ok-text="Yes" cancel-text="No" @confirm="confirm">
<template slot="title">
<p>{{ text }}</p>
<p>{{ text }}</p>
</template>
<a-button>TR</a-button>
</a-popconfirm>
</div>
<div :style="{ width: `${buttonWidth}px`, float: 'left' }">
<a-popconfirm placement="leftTop" ok-text="Yes" cancel-text="No" @confirm="confirm">
<template slot="title">
<p>{{ text }}</p>
<p>{{ text }}</p>
</template>
<a-button>LT</a-button>
</a-popconfirm>
<a-popconfirm placement="left" ok-text="Yes" cancel-text="No" @confirm="confirm">
<template slot="title">
<p>{{ text }}</p>
<p>{{ text }}</p>
</template>
<a-button>Left</a-button>
</a-popconfirm>
<a-popconfirm placement="leftBottom" ok-text="Yes" cancel-text="No" @confirm="confirm">
<template slot="title">
<p>{{ text }}</p>
<p>{{ text }}</p>
</template>
<a-button>LB</a-button>
</a-popconfirm>
</div>
<div :style="{ width: `${buttonWidth}px`, marginLeft: `${buttonWidth * 4 + 24}px` }">
<a-popconfirm placement="rightTop" ok-text="Yes" cancel-text="No" @confirm="confirm">
<template slot="title">
<p>{{ text }}</p>
<p>{{ text }}</p>
</template>
<a-button>RT</a-button>
</a-popconfirm>
<a-popconfirm placement="right" ok-text="Yes" cancel-text="No" @confirm="confirm">
<template slot="title">
<p>{{ text }}</p>
<p>{{ text }}</p>
</template>
<a-button>Right</a-button>
</a-popconfirm>
<a-popconfirm placement="rightBottom" ok-text="Yes" cancel-text="No" @confirm="confirm">
<template slot="title">
<p>{{ text }}</p>
<p>{{ text }}</p>
</template>
<a-button>RB</a-button>
</a-popconfirm>
</div>
<div :style="{ marginLeft: `${buttonWidth}px`, clear: 'both', whiteSpace: 'nowrap' }">
<a-popconfirm placement="bottomLeft" ok-text="Yes" cancel-text="No" @confirm="confirm">
<template slot="title">
<p>{{ text }}</p>
<p>{{ text }}</p>
</template>
<a-button>BL</a-button>
</a-popconfirm>
<a-popconfirm placement="bottom" ok-text="Yes" cancel-text="No" @confirm="confirm">
<template slot="title">
<p>{{ text }}</p>
<p>{{ text }}</p>
</template>
<a-button>Bottom</a-button>
</a-popconfirm>
<a-popconfirm placement="bottomRight" ok-text="Yes" cancel-text="No" @confirm="confirm">
<template slot="title">
<p>{{ text }}</p>
<p>{{ text }}</p>
</template>
<a-button>BR</a-button>
</a-popconfirm>
</div>
</div>
</div>
<a-divider />
<div class="notice-modal">
<a-button type="primary" @click="openNotification">Open the notification box</a-button>
<a-button type="primary" @click="openNotificationHasIcon">Open the notification box</a-button>
<a-button type="primary" @click="openNotificationDefaultStyle">Open the notification box</a-button>
<!-- openNotificationHasBtn -->
<a-button type="primary" @click="openNotificationHasBtn">Open the notification box</a-button>
<a-button type="primary" @click="openNotificationHasPosition('topLeft')">
<a-icon type="radius-upleft" />topLeft
</a-button>
<a-button type="primary" @click="openNotificationHasPosition('topRight')">
<a-icon type="radius-upright" />topRight
</a-button>
<a-button type="primary" @click="openNotificationHasPosition('bottomLeft')">
<a-icon type="radius-bottomleft" />bottomLeft
</a-button>
<a-button type="primary" @click="openNotificationHasPosition('bottomRight')">
<a-icon type="radius-bottomright" />bottomRight
</a-button>
<a-button @click="() => openNotificationWithIcon('success')">Success</a-button>
<a-button @click="() => openNotificationWithIcon('info')">Info</a-button>
<a-button @click="() => openNotificationWithIcon('warning')">Warning</a-button>
<a-button @click="() => openNotificationWithIcon('error')">Error</a-button>
</div>
</div>
</template>
<script>
import { message } from "ant-design-vue";
const close = () => {
console.log(
"Notification was closed. Either the close button was clicked or duration time elapsed."
);
};
export default {
data() {
return {
current: 0,
loading: false,
visible: false,
visibleBasic: false,
buttonWidth: 70,
text: "Are you sure to delete this task?",
step: [
{
title: "第一步",
status: "process"
},
{
title: "第二步",
status: "wait"
},
{
title: "第三步",
status: "wait"
},
{
title: "第四步",
status: "wait"
}
]
};
},
mounted() {},
methods: {
openNotificationWithIcon(type) {
this.$notification[type]({
message: "Notification Title",
description:
"This is the content of the notification. This is the content of the notification. This is the content of the notification."
});
},
openNotificationHasPosition(placement) {
this.$notification.open({
message: `Notification ${placement}`,
description:
"This is the content of the notification. This is the content of the notification. This is the content of the notification.",
placement
});
},
openNotificationHasBtn() {
const key = `open${Date.now()}`;
this.$notification.open({
message: "Notification Title",
description:
'A function will be be called after the notification is closed (automatically after the "duration" time of manually).',
btn: h => {
return h(
"a-button",
{
props: {
type: "primary",
size: "small"
},
on: {
click: () => this.$notification.close(key)
}
},
"Confirm"
);
},
key,
onClose: close
});
},
openNotificationDefaultStyle() {
this.$notification.open({
message: "Notification Title",
description:
"This is the content of the notification. This is the content of the notification. This is the content of the notification.",
style: {
width: "600px",
marginLeft: `${335 - 600}px`
}
});
},
openNotificationHasIcon() {
this.$notification.open({
message: "Notification Title",
description:
"This is the content of the notification. This is the content of the notification. This is the content of the notification.",
icon: <a-icon type="smile" style="color: #108ee9" />
});
},
openNotification() {
this.$notification.open({
message: "Notification Title",
description:
"This is the content of the notification. This is the content of the notification. This is the content of the notification.",
onClick: () => {
console.log("Notification Clicked!");
}
});
},
showBasicModal() {
this.visibleBasic = true;
},
handleOkBasic() {
this.visibleBasic = false;
},
confirm() {
message.info("Clicked on Yes.");
},
info() {
const h = this.$createElement;
this.$info({
title: "This is a notification message",
content: h("div", {}, [
h("p", "some messages...some messages..."),
h("p", "some messages...some messages...")
]),
onOk() {}
});
},
success() {
this.$success({
title: "This is a success message",
// JSX support
content: (
<div>
<p>some messages...some messages...</p>
<p>some messages...some messages...</p>
</div>
)
});
},
error() {
this.$error({
title: "This is an error message",
content: "some messages...some messages..."
});
},
warning() {
this.$warning({
title: "This is a warning message",
content: "some messages...some messages..."
});
},
showConfirm() {
this.$confirm({
title: "Do you want to delete these items?",
content:
"When clicked the OK button, this dialog will be closed after 1 second",
onOk() {
return new Promise((resolve, reject) => {
setTimeout(Math.random() > 0.5 ? resolve : reject, 1000);
}).catch(() => console.log("Oops errors!"));
},
onCancel() {}
});
},
showDeleteConfirm() {
this.$confirm({
title: "Are you sure delete this task?",
content: "Some descriptions",
okText: "Yes",
okType: "danger",
cancelText: "No",
onOk() {
console.log("OK");
},
onCancel() {
console.log("Cancel");
}
});
},
showPropsConfirm() {
this.$confirm({
title: "Are you sure delete this task?",
content: "Some descriptions",
okText: "Yes",
okType: "danger",
okButtonProps: {
props: { disabled: true }
},
cancelText: "No",
onOk() {
console.log("OK");
},
onCancel() {
console.log("Cancel");
}
});
},
/**
* @params null
* @desc 打开模态框
* @return null
*/
showModal() {
this.visible = true;
this.current = 0;
this.step = [
{
title: "第一步",
status: "process"
},
{
title: "第二步",
status: "wait"
},
{
title: "第三步",
status: "wait"
},
{
title: "第四步",
status: "wait"
}
];
},
/**
* @params e 事件原型
* @desc 关闭模态框
* @return null
*/
handleOk() {
this.loading = true;
// 模拟网络请求事件
setTimeout(() => {
this.visible = false;
this.loading = false;
}, 2000);
},
/**
* @params e 事件原型
* @desc 关闭模态框
* @return null
*/
handleCancel() {
this.visible = false;
},
/**
* @params e 当前步骤框index
* @desc 步骤框改变事件
* @return null
*/
stepChangeEvent(e) {
this.current = e;
// 修改当前步骤框状态
if (e > 0) {
this.step[e].status = "process";
}
// 步骤框动画
this.$refs.stepWrapper.style.transform = `translateX(${-25 *
this.current}%)`;
}
}
};
</script>
<style lang="less" scoped>
.wrapper {
width: 100%;
height: 100%;
overflow: hidden;
.wrapper-container {
// width: 400%;
height: 100%;
overflow: hidden;
display: flex;
justify-content: space-between;
transition: ease-in-out 0.2s;
.animate {
width: 25%;
height: 100%;
div {
display: flex;
justify-content: center;
align-items: center;
height: 95%;
width: 100%;
}
}
}
}
.modal {
display: flex;
flex-direction: row;
flex-wrap: wrap;
.btn {
margin-right: 20px;
margin-top: 10px;
}
}
#components-a-popconfirm-demo-placement .ant-btn {
width: 70px;
text-align: center;
padding: 0;
margin-right: 8px;
margin-bottom: 8px;
}
.notice-modal {
.ant-btn {
margin-right: 20px;
margin-top: 20px;
}
}
</style>

Комментарий ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://gitlife.ru/oschina-mirror/onlymry-vue-antd-admin.git
git@gitlife.ru:oschina-mirror/onlymry-vue-antd-admin.git
oschina-mirror
onlymry-vue-antd-admin
onlymry-vue-antd-admin
dev