Vue实现倒计时组件(可自定义时间倒计时功能的组件):
		
		
		[
 2023/07/27 14:12 | by 刘新修 ]
		
	
 2023/07/27 14:12 | by 刘新修 ]
		一、创建countDown.vue(倒计时组件):
XML/HTML代码
- <template>
 - <span :endTime="endTime" :endText="endText">
 - <slot>{{content}}</slot>
 - </span>
 - </template>
 - <script>
 - export default {
 - data(){
 - return {
 - content: '',
 - }
 - },
 - props:{//接收父组件的数据
 - endTime:{type:String,default:''},
 - endText:{type:String,default:'活动已结束'},
 - },
 - watch: {//监听时间的变化
 - endTime() {
 - this.countdowm(this.endTime)
 - }
 - },
 - mounted () {
 - this.countdowm(this.endTime)
 - },
 - methods: {
 - countdowm(timestamp){
 - let self = this;
 - let timer = setInterval(function(){
 - let nowTime = new Date();
 - let endTime = new Date(timestamp * 1000);
 - let t = endTime.getTime() - nowTime.getTime();
 - if(t>0){
 - let day = Math.floor(t/86400000);
 - let hour=Math.floor((t/3600000)%24);
 - let min=Math.floor((t/60000)%60);
 - let sec=Math.floor((t/1000)%60);
 - hourhour = hour < 10 ? "0" + hour : hour;
 - minmin = min < 10 ? "0" + min : min;
 - secsec = sec < 10 ? "0" + sec : sec;
 - let format = '';
 - if(day > 0){
 - format = `${day}天${hour}小时${min}分${sec}秒`;
 - }
 - if(day <= 0 && hour > 0 ){
 - format = `${hour}小时${min}分${sec}秒`;
 - }
 - if(day <= 0 && hour <= 0){
 - format =`${min}分${sec}秒`;
 - }
 - self.content = format;
 - }else{
 - clearInterval(timer);
 - selfself.content = self.endText;
 - }
 - },1000);
 - }
 - }
 - }
 - </script>
 
二、vue倒计时组件的使用方法(父组件里面):
XML/HTML代码
- <template>
 - <count-down :endTime="endTime" :endText="endText " />
 - </template>
 - <script>
 - import countDown from '@/components/countDown'//引入路径,可更改
 - export default {
 - data() {
 - return{
 - endTime:new Date("2022/04/18 08:00:20").getTime() / 1000 + ' ',
 - // console.log(endTime)=>得到毫秒 1658030420 可在方法里面放入后台数据,new Date('放后台数据').getTime() / 1000 + ' ',但要记得调用方法
 - endText:'',
 - }
 - },
 - components: {
 - countDown
 - },
 - }
 - </script>
 
说明一下:
XML/HTML代码
- 1)endTime是一个时间戳,而且是字符串数据类型,需要处理下
 - let endTime = new Date("2022/04/18 08:00:20").getTime() / 1000 + ' '
 - 2)endText是倒计时结束显示的内容
 
三、vue倒计时组件效果如下:
![]()
		
 Linux shell命令 批量删除子目录下的文件,保留指定数量的最新文件
		
		
		[
 2023/07/26 16:26 | by 刘新修 ]
		
	
 2023/07/26 16:26 | by 刘新修 ]
		C#代码
- #!/bin/bash
 - #保留文件数
 - ReservedNum=2
 - #要删除文件的,父级目录
 - FileDir=/usr/docker/springCloud/project/
 - #循环子目录列表
 - for element in `ls $FileDir`
 - do
 - # 拼接成完成目录 (父目录路径/子目录名)
 - dir_or_file=$FileDir$element
 - # 获取子目录下的指定文件格式的总数量
 - FileNum=$(ls -l $dir_or_file | grep 'keda-' |wc -l)
 - # 输出 删除前的 指定格式的文件数量
 - echo $element "jar num:" $FileNum
 - # 如果 数量大于保留数量,那就循环删除 文件
 - while(( $FileNum > $ReservedNum))
 - do
 - OldFile=$(ls -rt $dir_or_file | grep 'keda-'| head -1)
 - echo $element "Delete jar:"$OldFile
 - rm -rf $dir_or_file/$OldFile
 - let "FileNum--"
 - done
 - done
 - # 删除完后,再循环输出一下 每个子目录下的文件数量
 - for element in `ls $FileDir`
 - do
 - dir_or_file=$FileDir$element
 - FileNum=$(ls -l $dir_or_file | grep 'keda-' |wc -l)
 - echo $element "jar num:" $FileNum
 - done
 
		
 纯前端让浏览器下载pdf文件
		
		
		[
 2023/07/18 10:20 | by 刘新修 ]
		
	
 2023/07/18 10:20 | by 刘新修 ]
		
XML/HTML代码
- <!--
 - * @Description: npage.vue
 - * @Version: 1.0
 - * @Author: LiuXia
 - * @Date: 2022-08-01 20:32:06
 - * @LastEditors: Jesse Liu
 - * @LastEditTime: 2023-07-17 20:38:42
 - -->
 - <template>
 - <div class="wscn-http404-container">
 - <h1 style="line-height:300px; text-align:center">npage.vue (新测试文件)</h1>
 - <div>time:</div>
 - </div>
 - </template>
 - <script>
 - import { parseTime } from '@/utils'
 - import { downloadFile } from "@/utils/getFile";
 - import { fileLinkToStreamDownload , urlFile } from '@/utils/down'
 - export default {
 - name: 'PageTest',
 - computed: {
 - message() {
 - return 'PageTest'
 - },
 - parseTime: parseTime
 - },
 - methods:{
 - downfile(filePath){
 - //https://bbwx.kaitaiming.com/image/group1/M00/24/AE/rBBlxWS0vaqAR8ltAAGsWlc-FnY677.pdf
 - // 后端上传文件返回请求的filePath地址
 - console.log( filePath, 3333333 );
 - // 获取文件名
 - let fileName = urlFile(filePath, 1);
 - // 获取文件后缀
 - let fileExtension = urlFile(filePath, 2);
 - // url下载
 - fileLinkToStreamDownload(filePath,fileName,fileExtension);
 - }
 - },
 - mounted() {
 - this.downfile('http://localhost:9527/image/group1/M00/24/AE/rBBlxWS0vaqAR8ltAAGsWlc-FnY677.pdf');
 - this.$store.dispatch("case/casesList/downloadFile",{}).then((res)=>{
 - let data = res.data;
 - let headers = res.headers;
 - /*** 调用下载文件 ***/
 - //downloadFile(data, headers)
 - })
 - },
 - }
 - </script>
 - <style lang="scss" scoped>
 - </style>
 
JavaScript代码
- /*
 - * @Description: down.js
 - * @Author: Jesse Liu
 - * @Date: 2023-02-06 16:27:18
 - * @LastEditors: Jesse Liu
 - * @LastEditTime: 2023-07-17 20:20:05
 - */
 - export function fileLinkToStreamDownload(url, fileName, type) {
 - let reg = /^([hH][tT]{2}[pP]:\/\/|[hH][tT]{2}[pP][sS]:\/\/)(([A-Za-z0-9-~]+).)+([A-Za-z0-9-~\/])+$/;
 - if (!reg.test(url)) {
 - throw new Error("传入参数不合法,不是标准的文件链接");
 - } else {
 - let xhr = new XMLHttpRequest();
 - xhr.open('get', url, true);
 - xhr.setRequestHeader('Content-Type', `application/${type}`);
 - xhr.responseType = "blob";
 - xhr.onload = function () {
 - if (this.status == 200) {
 - //接受二进制文件流
 - console.log(this)
 - var blob = this.response;
 - const blobUrl = window.URL.createObjectURL(blob);
 - // 这里的文件名根据实际情况从响应头或者url里获取
 - const a = document.createElement('a');
 - a.href = blobUrl;
 - a.download = fileName;
 - a.click();
 - window.URL.revokeObjectURL(blobUrl);
 - }
 - }
 - xhr.send();
 - }
 - }
 - // 获取url中需要的数据 type 1: 获取文件名 2:获取后缀 3:获取文件名+后缀 4:获取文件前缀
 - export function urlFile(url, type) {
 - let filename = url.substring(url.lastIndexOf('/') + 1)
 - switch (type){
 - case 1: return filename; break;
 - case 2: return filename.substring(filename.lastIndexOf(".") + 1); break;
 - case 3: return filename.substring(0, filename.lastIndexOf(".")); break;
 - case 4: return url.substring(0, url.lastIndexOf('/') + 1)
 - }
 - }
 


  
 
 
 
 
 


