123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111 |
- <!--
- * @FileDescription: 提示确认类型弹窗
- * @Author: 黄琪勇
- * @Date:2024-03-20 19:18:13
- -->
- <template>
- <div class="dialogConfirm">
- <div class="close" @click="close"></div>
- <img class="headImg" v-if="props.modalData.headImg" :src="props.modalData.headImg" />
- <div class="textCon">
- <div class="text">{{ props.modalData.text }}</div>
- </div>
- <div v-if="filterBtnShow" class="dialogBtn">
- <img v-if="props.modalData.btnShow[1]" @click="cancel" src="@/img/useDialogConfirm/cancel.png" />
- <img v-if="props.modalData.btnShow[0]" @click="ok" src="@/img/useDialogConfirm/ok.png" />
- </div>
- </div>
- </template>
- <script setup lang="ts">
- import { computed } from "vue"
- const props = defineProps<{
- modalData: {
- text: string
- btnShow: [boolean?, boolean?]
- headImg?: string
- }
- }>()
- const emits = defineEmits<{
- (e: "onClose"): void
- (e: "onCancel"): void
- (e: "onOk"): void
- }>()
- const filterBtnShow = computed(() => {
- const { btnShow } = props.modalData
- return !!(btnShow[0] || btnShow[1])
- })
- function close() {
- emits("onClose")
- }
- function cancel() {
- emits("onCancel")
- }
- function ok() {
- emits("onOk")
- }
- </script>
- <style lang="scss" scoped>
- .dialogConfirm {
- padding-top: 36px;
- padding-bottom: 22px;
- width: 100%;
- height: 100%;
- display: flex;
- flex-direction: column;
- .close {
- position: absolute;
- top: -14px;
- right: -16px;
- width: 42px;
- height: 44px;
- cursor: pointer;
- background: url("@/img/useDialogConfirm/close.png") no-repeat;
- background-size: cover;
- &:hover {
- background: url("@/img/useDialogConfirm/closeHover.png") no-repeat;
- background-size: cover;
- }
- }
- .headImg {
- width: 163px;
- height: 51px;
- position: absolute;
- left: 50%;
- top: -13px;
- transform: translate(-50%, 0);
- }
- .textCon {
- flex-grow: 1;
- display: flex;
- align-items: center;
- justify-content: center;
- padding: 0 20px;
- overflow: hidden;
- .text {
- font-size: 20px;
- color: #a04d11;
- line-height: 32px;
- }
- }
- .dialogBtn {
- flex-shrink: 0;
- display: flex;
- justify-content: center;
- margin-top: 6px;
- > img {
- width: 170px;
- height: 51px;
- cursor: pointer;
- margin-left: 12px;
- &:hover {
- opacity: $opacity-hover;
- }
- }
- }
- }
- </style>
|