feat(utils): 添加多种数据格式化过滤器功能

- 新增身份证号掩码过滤器MaskIdCard,用于隐藏敏感信息
- 新增银行卡号掩码过滤器MaskBankCard,保护支付信息安全
- 新增百分比格式化过滤器FormatPercent,支持自定义小数位
- 新增文件名截取过滤器TruncateFileName,防止超长文件名显示异常
- 新增文本截取过滤器TruncateText,控制文本长度显示
- 新增首字母大写过滤器Capitalize,统一文本格式
- 新增大小写转换过滤器ToUpperCase和ToLowerCase,灵活格式控制
- 新增相对时间格式化过滤器FormatRelativeTime,显示友好时间提示
- 新增星期几格式化过滤器FormatWeekday,便捷日期展示
- 新增布尔值转换过滤器FormatBoolean,支持自定义文本显示
- 新增开关状态过滤器FormatSwitch和启用状态过滤器FormatEnabled
- 新增时长格式化过滤器FormatDuration,将秒数转换为可读格式
- 新增数组转字符串过滤器ArrayToString,自定义分隔符连接
- 新增JSON对象格式化过滤器JsonToString,支持缩进美化显示
- 新增数字转中文过滤器NumberToChinese,实现数字的中文表达
- 新增URL链接格式化过滤器FormatUrl,自动补全协议前缀
- 新增货币格式化过滤器FormatCurrency,支持多币种金额显示
This commit is contained in:
2026-02-05 19:58:03 +08:00
parent 7c6fb50d4d
commit 6b5c575b7a
3 changed files with 31 additions and 27 deletions
+9 -5
View File
@@ -9,9 +9,6 @@ import Element from 'element-ui'
// 数据字典 // 数据字典
import dict from './components/Dict' import dict from './components/Dict'
// 防止二次提交
import { preventReClick } from '@/plugins/PreventReClickDirective'
// 一键复制插件 // 一键复制插件
import VueClipboard from 'vue-clipboard2' import VueClipboard from 'vue-clipboard2'
@@ -35,10 +32,11 @@ import './router/index'
// 过滤器 // 过滤器
import * as filters from './utils/filters' import * as filters from './utils/filters'
// 指令
import * as directives from './utils/directives'
Vue.use(checkPer) Vue.use(checkPer)
Vue.use(permission) Vue.use(permission)
Vue.directive(preventReClick)
Vue.use(dict) Vue.use(dict)
Vue.use(VueClipboard) Vue.use(VueClipboard)
Vue.use(Element, { Vue.use(Element, {
@@ -48,11 +46,17 @@ Vue.use(Element, {
Vue.component('split-pane', SplitPane) Vue.component('split-pane', SplitPane)
// 注册全局过滤器 // 注册全局过滤器
// 使用方法:{{ value | filter-key }} // 使用方法:{{ value | 过滤器方法名 }}
Object.keys(filters).forEach(key => { Object.keys(filters).forEach(key => {
Vue.filter(key, filters[key]) Vue.filter(key, filters[key])
}) })
// 注册全局指令
// 使用方法:<el-button v-指令方法名></el-button>
Object.keys(directives).forEach(key => {
Vue.directive(directives[key])
})
Vue.config.productionTip = false Vue.config.productionTip = false
Vue.config.errorHandler = function(err, vm, info) { Vue.config.errorHandler = function(err, vm, info) {
@@ -17,7 +17,7 @@
截屏 截屏
</el-button> </el-button>
</div> </div>
<div id="{{ key }}" style="padding: 15px"> <div :id="key" style="padding: 15px">
<slot /> <slot />
</div> </div>
</div> </div>