前端-弹窗公告不再提示功能

完整代码就不写了, 主要是使用localStorage存储; cookie也是可以的,需要传入清除时间,请自行查找资料

interface ICookie {
    cname:string;
     value:string; 
    endTime?: string|number; //是number时为时间戳
}

const setCookie= ({cname, value, endTime}:ICookie) => {
    let date:any = 0
    if(endTime) {
        date = formatDate(endTime);
    }
    let obj:any = JSON.parse(localStorage.noticeCookie||'{}');
    obj[cname] = {
        cname,
        value: base64.encode(value),
        time: date, 
    }
    localStorage.noticeCookie = JSON.stringify(obj);
  }
  // 获取cookie,传入key以获取value
  const getCookie = (cname='') => {
      const obj:any = JSON.parse(localStorage.noticeCookie||'{}');
      removeCookie(obj, cname);
      return obj[cname]?base64.decode(get(obj[cname], 'value')):'';
  }

  const removeCookie = (obj:any={}, cname) => {
    for(let key in obj) {
        const endTime = get(obj[key], 'time') || 0;
        if(!timeFlag(endTime)) {
            obj[key] && delete obj[key]
        }
    }
    localStorage.noticeCookie = JSON.stringify(obj);
  }

  const timeFlag= (endTime) => {
    let date:any = formatDate(endTime);
    const nowTime = formatDate();
    console.log(Number(date)>nowTime,Number(date),nowTime)
    return Number(date)>nowTime;
  }


const closeModal = (item: any = {}) => {
        const key0 = get(item, 'NOTICE_ID', '');
        const key = base64.encode(key0);
        const endTime = item.TIME_END;
        setCookie({
           cname:  `closeNotice${key}`,
           value: 'N',
           endTime,
        })
        onClickClose && onClickClose();
    };

    const showModal = item => {
        const key0 = get(item, 'NOTICE_ID', '');
        const key = base64.encode(key0);
        const endTime = item.TIME_END;
        if (item.TYPE === 'POP' && key) { // 组件内自定义存储数据判断
            console.log(getCookie(`closeNotice${key}`),'getCookie(`closeNotice${key}`)')
            if (getCookie(`closeNotice${key}`) !== 'N') {
                setCookie({
                    cname:  `closeNotice${key}`,
                    value: isShow ? 'Y':'N',
                    endTime,
                 })
            }
            else {
                closeModal();
            }
        }

    };

// 使用moment方法将时间转换为时间戳:

function formatDate(endTime?:string|number) {
    let date:any = new Date();
    if(endTime) {
        date = moment(endTime).unix() * 1000
    }
    return date;
}

以下是一个简单的HTML前端弹窗文件上传功能的示例代码: ```html <!DOCTYPE html> <html> <head> <title>文件上传</title> <meta charset="utf-8"> <style type="text/css"> .popup { position: fixed; top: 0; left: 0; width: 100%; height: 100%; background-color: rgba(0, 0, 0, 0.7); display: none; justify-content: center; align-items: center; } .popup .content { background-color: #fff; padding: 20px; border-radius: 5px; text-align: center; max-width: 500px; max-height: 500px; overflow: auto; } .close-btn { position: absolute; top: 10px; right: 10px; cursor: pointer; } </style> </head> <body> <button onclick="showPopup()">上传文件</button> <div class="popup"> <div class="content"> <span class="close-btn" onclick="hidePopup()">×</span> <h3>上传文件</h3> <form enctype="multipart/form-data"> <input type="file" name="file" id="file"> <br> <input type="button" value="上传" onclick="uploadFile()"> </form> </div> </div> <script type="text/javascript"> var popup = document.querySelector('.popup'); function showPopup() { popup.style.display = 'flex'; } function hidePopup() { popup.style.display = 'none'; } function uploadFile() { var fileInput = document.getElementById('file'); var file = fileInput.files[0]; var formData = new FormData(); formData.append('file', file); // 这里可以使用ajax异步上传文件 // 上传成功后可以调用 hidePopup() 方法关闭弹窗 } </script> </body> </html> ``` 这个示例代码中,我们使用了一个按钮来触发弹窗的显示,弹窗中包含一个文件上传表单。用户选择好文件后,点击上传按钮即可触发文件上传操作。 这个示例代码中使用了一个弹窗,这个弹窗的样式可以通过CSS进行调整,例如调整宽高、背景颜色等。文件上传的操作可以通过ajax异步上传,上传成功后可以调用hidePopup()方法关闭弹窗
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值