vue组件大全

作用#

此随笔记录我人生中所有自己写出来的组件样式

图片加文字组件#

<template>
    <div class="set_img">
        <el-container>
            <el-aside width="300px">
                <p class="set_img_p">弹框一:</p>
                <div class="set_img_bk">
                    <el-upload class="avatar-uploader custom-uploader"
                        action="https://jsonplaceholder.typicode.com/posts/" :show-file-list="false"
                        :on-success="handleAvatarSuccess" :before-upload="beforeAvatarUpload">
                        <img v-if="imageUrl" :src="imageUrl" class="avatar">
                        <i v-else class="el-icon-plus avatar-uploader-icon"></i>
                    </el-upload>
                </div>
            </el-aside>
            <el-main>
                <div class="set_img_attribute">
                    <p>关闭方式:</p>
                    <el-checkbox style="margin-left: 6%;margin-top: 6%;" v-model="checked1">5秒后自动关闭</el-checkbox>
                    <el-checkbox v-model="checked2">手动关闭</el-checkbox>
                    <p style="margin-top: 6%;">弹出时效:</p>
                    <el-radio style="margin-left: 6%;margin-top: 6%;" v-model="radio" label="1">默认弹窗5天</el-radio>
                    <el-radio v-model="radio" label="2">播放至</el-radio>
                    <el-date-picker style="width: 30%;" v-model="value1" type="date" placeholder="请选择日期">
                    </el-date-picker><br>
                    <el-button style="margin-top: 10%;margin-right: 15%;float: right;" type="primary">保存</el-button>
                </div>
            </el-main>
        </el-container>
    </div>
</template>

<script>
export default {
    name: 'PopupBox',
    data() {
        return {
            //单选框
            value1:'',
            radio: '1',
            //多选框
            checked1: true,
            checked2: true,
            imageUrl: ''
        };
    },
    methods: {
        handleAvatarSuccess(res, file) {
            this.imageUrl = URL.createObjectURL(file.raw);
        },
        beforeAvatarUpload(file) {
            const isJPG = file.type === 'image/jpeg';
            const isLt2M = file.size / 1024 / 1024 < 2;

            if (!isJPG) {
                this.$message.error('上传头像图片只能是 JPG 格式!');
            }
            if (!isLt2M) {
                this.$message.error('上传头像图片大小不能超过 2MB!');
            }
            return isJPG && isLt2M;
        }
    }
}

</script>

<style scoped>
.set_img_p {
    margin-left: 5%;
}

.set_img {
    margin-left: 2%;
    border: 1px solid rgb(228, 228, 228);
    width: 750px;
    height: 360px;
}

.set_img_attribute {}

.avatar {
    width: 100%;
    height: 100%;
    display: block;
}

/* .avatar-uploader .el-upload {
    border: 1px dashed #1a0e0e;
    border-radius: 6px;
    cursor: pointer;
    position: relative;
    overflow: hidden;
} */

.avatar-uploader .el-upload:hover {
    border-color: #1c5792;
}

.avatar-uploader-icon {
    font-size: 28px;
    color: #8c939d;
}

.custom-uploader {
    background-color: #f0f0f0;
    /* 设置背景颜色 */
    padding: 10px;
    /* 添加一些内边距 */
    border-radius: 5px;
    /* 添加圆角 */
    border: 1px solid #dcdcdc;
    /* 添加边框 */
    display: flex;
    /* 使用 Flexbox 布局 */
    justify-content: center;
    /* 水平居中 */
    align-items: center;
    /* 垂直居中 */
    width: 200px;
    /* 设置宽度 */
    height: 250px;
    /* 设置高度 */
    margin-left: 10%;
}
</style>

image

后端返回数据前端进行格式化方法#

// 日期格式化工具函数
function formatDate(dateStr) {
  const date = new Date(dateStr);
  return `${date.getFullYear()}-${String(date.getMonth() + 1).padStart(2, '0')}-${String(date.getDate()).padStart(2, '0')} ${String(date.getHours()).padStart(2, '0')}:${String(date.getMinutes()).padStart(2, '0')}:${String(date.getSeconds()).padStart(2, '0')}`;
}

使用

// 遍历格式化 registerTime
if (data.data) {
       data.data = data.data.map((item) => ({
         ...item,
         lastLoginTime:formatDate(item.lastLoginTime),
         registerTime: formatDate(item.registerTime),
      }));
}

格式化前数据:2025-01-15T18:22:58+08:00
格式化后数据:2025-01-16 10:31:25

前端日期时间格式化#

更简单的方法是使用日期库,例如 Day.js:

安装 Day.js

npm install dayjs
使用 Day.js 格式化时间戳

import dayjs from 'dayjs';

export default {
  methods: {
    formatDate(timestamp) {
      return timestamp ? dayjs(timestamp * 1000).format('YYYY-MM-DD HH:mm:ss') : '无数据';
    },
  },
};

模板中调用

<el-descriptions-item label="注册时间">
  {{ userInfo ? formatDate(userInfo.reg_time) : '无数据' }}
</el-descriptions-item>

作者:freps

出处:https://www.cnblogs.com/freps/p/18672960

版权:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议进行许可。

posted @   LL。。。  阅读(3)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
more_horiz
keyboard_arrow_up dark_mode palette
选择主题
menu
点击右上角即可分享
微信分享提示