千位分隔符

千位分隔符,其实就是数字中的逗号。依西方的习惯,人们在数字中加进一个符号,以免因数字位数太多而难以看出它的值。所以人们在数字中,每隔三位数加进一个逗号,也就是千位分隔符,以便更加容易认出数值。
举个

1000 ---> 1,000 千
1000000 ---> 1,000,000 百万
100000000 ---> 100,000,000 亿

方法1

将数字转为字符串,将小数部分与整数部分分离
整数部分分隔为数组,并且反转
反转后的数组每隔3位添加,
添加完成后,再反转回来,拼接小数部分,完成格式化

function thousandsSeparator(n: number): string {
  const strSplit = n.toString().split(".");
  const integer = strSplit[0].split("");
  integer.reverse();
  const decimal = strSplit[1];
  const newInteger = [];
  for (let i = 0; i < integer.length; i++) {
    if (i % 3 === 0 && i !== 0) {
      newInteger.push(",");
    }
    newInteger.push(integer[i]);
  }
  newInteger.reverse();
  let s = newInteger.join("");
  if (decimal) {
    s += `.${decimal}`;
  }
  return s;
}

方法2
使用JS原生API toLocaleString 。
这是数字类型原型上一个方法(# Number.prototype.toLocaleString), 它的作用就是返回数字在特定语言环境下表示的字符串.作用很强大,兼容性也很好,详细的介绍小伙伴可以去点击连接。

const number = 123456.789;
number.toLocaleString(); // => '123,456.789'

方法3
使用JS原生API Intl.NumberFormat
Intl.NumberFormat对象启用对语言敏感的数字格式

const number = 3500;
console.log(new Intl.NumberFormat().format(number)); // → '3,500'

方法4
使用正则表达匹配的方式

function thousandsSeparator2(n: number): string {
  const strSplit = n.toString().split(".");
  const integer = strSplit[0];
  const decimal = strSplit[1] || "";
  return integer.replace(/\B(?=(\d{3})+(?!\d))/g, ",") + decimal;
}

#! /bin/bash
echo -e "更新工作号消费数据录入:"
read -p "开始日期(如:2024-11-01):" startDate
read -p "结束日期(如:2024-11-27):" endDate

if [ $startDate != '' -a $endDate != '' ] ;then
        cmdLine="/web/tell/protected/yiic adr updateAgUdataLimitDate --startDate=${startDate} --endDate=${endDate}"
    read -p "run: ${cmdLine} ?(Yes/No):" ok
    case "$ok" in
        Yes|yes|y|Y)
            eval "${cmdLine}"    
        ;;
        No|no|n|N)
            echo -e "取消执行"
        ;;
        *)
    esac
else
    echo '请指定:开始和结束日期'
fi;

这个技巧非常实用. 尤其是远程登陆到一台主机 A, 然后从 A 登陆到 B, 如果希望在 A 上做一些操作, 还得再开一个终端, 很是麻烦.

当使用 ssh 从本机登录到远程主机时, 可能希望切换到本地做一些操作, 然后再重新回到远程主机. 这个时候, 不需要中断 ssh 连接, 只需要按照如下步骤操作即可:

1.登入远程主机:

localhost$ ssh 172.16.1.165
oracle@172.16.1.165's password:
Last login: Fri Mar 26 14:48:08 2010 from euos

2.已连接远程主机:

remotehost$

3.要临时回到本地主机, 输入退出符号: "~"与"Control-Z"组合.

当输入"~"不会立即在屏幕上看到, 当按下并且按回车之后才一起显示.
如下, 在远程主机中以此输入"~"

remotehost$ ~^Z [suspend ssh]

[1]+  Stopped                 ssh 172.16.1.165
localhost$

4.现在已经退回到了本地主机, ssh 远程客户端会话就在 UNIX 后台中运行, 可以向下面那样查看它:

localhost$ jobs 
[1]+  Stopped                 ssh 172.16.1.165

5. 可以将后台运行的 ssh 会话进程切换到前台, 重新回到远程主机, 而无需输入密码

localhost$ fg %1 
ssh 172.16.1.165

remotehost$

--End--

时间轴垂直
2024-11-20T10:07:26.png


/** 时间轴垂直 **/
.timeline {
    position: relative;
    display: grid;
    gap: 20px;
    padding: 0;
    max-width: 600px;
    font-size: 12px;
    line-height: 1;
    list-style-type: none;
}

.timeline.displayNone {
    display: none;
}

.timeline h4 {
    font-size: 12px;
}

.timeline .timeline__line {
    position: absolute;
    top: 0;
    left: 7px;
    width: 2px;
    height: 100%;
    background: #ccc;
}

.timeline .timeline__item .info {
    display: grid;
    grid-template-columns: repeat(3, auto) 1fr;
    align-items: center;
    gap: 0.3rem;
}

.timeline .timeline__item .info h4 {
    margin: 0;
}

.timeline .timeline__item .info a {
    text-decoration: none;
    color: #3498db;
}

.timeline .timeline__item .info .dot {
    position: relative;
    width: 16px;
    height: 16px;
    background: #999;
    border-radius: 50%;
}

.timeline .timeline__item .info .dot::before {
    position: absolute;
    content: '';
    top: -4px;
    left: -4px;
    right: -4px;
    bottom: -4px;
}

.timeline .timeline__item .info .dot::after {
    position: absolute;
    content: '';
    top: 4px;
    left: 4px;
    width: 8px;
    height: 8px;
    border: 4px solid #fff;
    border-radius: inherit;
}

.timeline .timeline__item .info .title {
    color: #999;
    margin-left: 5px;
}

.timeline .timeline__item .info .time {
    margin-right: 8px;
}

.timeline .timeline__item .content {
    margin: 10px 0 0 3em;
    line-height: 1.5;
}
                <ul class="timeline">
                    <li class='timeline__line'></li>
                    <li class='timeline__item'>
                        <div class='info'>
                            <div class='dot'></div>
                            <time class='time'>创建离职单</time>
                            <h4 class='speaker'></h4>
                            <h4 class='title'>人事管理完成</h4>
                        </div>
                        <div class='content text-gray'>在人事管理模块创建离职单,并复制链接给离职员工</div>
                    </li>
                    <li class='timeline__item'>
                        <div class='info'>
                            <div class='dot'></div>
                            <time class='time'>离职申请单填写</time>
                            <h4 class='speaker'></h4>
                            <h4 class='title'>离职人完成</h4>
                        </div>
                        <div class='content text-gray'>离职人完成离职原因等信息填写,并完成申请人签字,系统通知部门负责人签字</div>
                    </li>
                    <li class='timeline__item'>
                        <div class='info'>
                            <div class='dot'></div>
                            <time class='time'>部门负责人签字</time>
                            <h4 class='speaker'></h4>
                            <h4 class='title'>人事组织构架设置部门负责人完成</h4>
                        </div>
                        <div class='content text-gray'>由人事组织构架中设置的部门负责人完成对接后签字确认,系统通知财务负责人签字</div>
                    </li>
                    <li class='timeline__item'>
                        <div class='info'>
                            <div class='dot'></div>
                            <time class='time'>财务签字确认</time>
                            <h4 class='speaker'></h4>
                            <h4 class='title'>设置确认人:</h4>
                        </div>
                        <div class='content text-gray'>财务完成相关手续、并签字确认,系统通知人事负责人签字</div>
                    </li>
                    <li class='timeline__item'>
                        <div class='info'>
                            <div class='dot'></div>
                            <time class='time'>人事签字确认</time>
                            <h4 class='speaker'></h4>
                            <h4 class='title'>设置确认人:</h4>
                        </div>
                        <div class='content text-gray'>人事完成离职单相关信息填写、并签字确认,系统通知离职人签字确认</div>
                    </li>
                    <li class='timeline__item'>
                        <div class='info'>
                            <div class='dot'></div>
                            <time class='time'>本人签字确认</time>
                            <h4 class='speaker'></h4>
                            <h4 class='title'>离职人完成</h4>
                        </div>
                        <div class='content text-gray'>离职人完成签字确认</div>
                    </li>
                    <li class='timeline__item'>
                        <div class='info'>
                            <div class='dot'></div>
                            <time class='time'>流程完成</time>
                            <h4 class='speaker'></h4>
                            <h4 class='title'></h4>
                        </div>
                        <div class='content text-gray'></div>
                    </li>
                </ul>

横向流程步骤样式
2024-11-20T10:10:03.png


.step-list {
    display: flex;
    justify-content: space-around;
    margin-bottom: 20px;
}
.step-list .li{
    position: relative;
    text-align: center;
}
.step-list .li:before,.step-list .li:after{
    position: absolute;
    display: block;
    content: '';
    height: 1px;
    width: calc(50% - 20px);
    background-color: #ccc;
    top: 20px;
}
.step-list .li:after{right: 0;}
.step-list .li:first-child:before,.step-list .li:last-child:after{display: none;}
.step-list .li.success:before,.step-list .li.success:after{background-color: #5cb85c;    }
.step-list .li.error:before,.step-list .li.error:after{background-color: #ff423d}
.step-list .li a{color: #02a7f0; text-decoration: none;}
.step-list .li .circle{
    background: linear-gradient( to bottom, #81d9ff, #38bcfa);
    color: #fff;
    border-radius: 100%;
    width: 40px;
    height: 40px;
    display: flex;
    justify-content: center;
    align-items: center;
    margin: 0 auto;
}
.step-list .li.success{color: #418841;    }
.step-list .li.success .circle{background: linear-gradient(to bottom, #87d787, #5cb85c); color: #fff;}
.step-list .li .text{padding:6px 0;}
.step-list .li.error{color: #ff423d;    }
.step-list .li.error .circle{background: linear-gradient( to bottom, #ff5d59, #ff423d); color: #fff}
.step-list .li.disabled{color: #ccc}
.step-list .li.disabled .circle{background: linear-gradient( to bottom, #e8e8e8, #e8e8e8); color: #ccc}
<div class="step-list" style="margin-top: 30px;">
                            <div class="li success" style="width: 14.285714285714%;">
                                            <div class="circle fa fa-check"></div><div class="text">已提交需求</div>
                                    </div>
                            <div class="li success" style="width: 14.285714285714%;">
                                            <div class="circle fa fa-check"></div><div class="text">已付定金</div>
                                    </div>
                            <div class="li " style="width: 14.285714285714%;">
                                            <a href="javascript:;" class="" onclick="setPlanStatus('63398','6')" title="标记为已定策划">
                            <div class="circle fa fa-pencil"></div><div class="text">已定策划(进行中)</div>
                        </a>
                                    </div>
                            <div class="li disabled" style="width: 14.285714285714%;">
                                            <div class="circle fa fa-ban"></div><div class="text">已付预付</div>
                                    </div>
                            <div class="li disabled" style="width: 14.285714285714%;">
                                            <div class="circle fa fa-ban"></div><div class="text">准备好求婚</div>
                                    </div>
                            <div class="li disabled" style="width: 14.285714285714%;">
                                            <div class="circle fa fa-ban"></div><div class="text">已付尾款</div>
                                    </div>
                            <div class="li disabled" style="width: 14.285714285714%;">
                                            <div class="circle fa fa-ban"></div><div class="text">已完成</div>
                                    </div>
                    </div>