VUE3给table的head添加popover筛选、时间去除时分秒、字符串替换某字符

1. VUE3给table的head添加popover筛选

html 复制代码
<el-table
      ref="processTableRef"
      class="process-table"
      row-key="secuId"
      :data="pagingData"
      style="width: 100%"
      highlight-current-row
      :height="stockListHeight"
      :default-expand-all="isExpand"
      :expand-row-keys="expandRowKeys"
      v-if="reloadeTable"
    >
      <el-table-column type="expand">
        <template #default="props">
          <div class="table-expand" v-if="!!props.row.eventContent">
            <div class="el-form-item" v-html="formatText(props.row.eventContent)"></div>
          </div>
          <div v-else class="expand-empty"><span>暂无数据</span></div>
        </template>
      </el-table-column>
      <el-table-column label="债券代码" show-overflow-tooltip prop="secuId">
        <template #header>
          <el-popover placement="right" trigger="click">
            <el-select
              :teleported="false"
              ref="bondCodeSelection"
              multiple
              filterable
              collapse-tags
              clearable
              v-model="securityIds"
              placeholder
              @change="bondCodeVisibleChange"
              @remove-tag="bondCodeVisible = false"
            >
              <el-option v-for="item in selectIdData" :key="item.value" :value="item.value" :label="item.value"></el-option>
            </el-select>
            <template #reference>
              <label>
                债券代码
                <i v-if="securityIds.length < 1" style="margin-left: 10px; cursor: pointer" class="el-icon-search"></i>
                <i v-else style="margin-left: 10px; color: var(--ems-red); cursor: pointer" class="el-icon-search"></i>
              </label>
            </template>
          </el-popover>
        </template>
        <template #default="props">{{ props.row.secuId }}</template>
      </el-table-column>
</el-table>
javascript 复制代码
const bondCodeSelection = ref()
let securityIds: any = ref([])
let bondCodeVisible = ref(false)

const bondCodeVisibleChange = () => {
  bondCodeVisible.value = false
  bondCodeSelection.value.blur()
}
//筛选下拉框选项,bondTenderStocks为接口获取数据列表
let selectIdData = computed(() => {
  let map = new Set()
  let securitys: any = []
  bondTenderStocks.value.forEach((item: any) => {
    if (map.has(item.secuId) === false) {
      map.add(item.secuId)
      securitys.push({
        text: item.secuId + ' ' + item.secuNm,
        value: item.secuId
      })
    }
  })
  return securitys
})

let displayData = computed(() => {
  let initData = JSON.parse(JSON.stringify(tableData.value))

  // 债券代码
  if (securityIds.value.length !== 0) {
    let securitySet = new Set()
    securityIds.value.forEach((security: any) => securitySet.add(security))
    initData = initData.filter((item: any) => securitySet.has(item.secuId))
  }

  return initData
})

2.时间去除时分秒

javascript 复制代码
function getDate(date: any) {
  if (!date) {
    return ''
  }
    
    // 将字符串转换为 Date 对象  
    var date = new Date(dateString);  
  
    // 使用 toISOString 方法获取日期时间字符串的简化版本,然后提取年月日部分  
    var formattedDate = date.toISOString().split('T')[0];  
    return formattedDate
}

ex:date = "2023-11-02 00:00:00"

3.字符串替换某字符

javascript 复制代码
<div class="el-form-item" v-html="formatText(props.row.eventContent)"></div>

function formatText(text: any) {
  if (!text) {
    return ''
  }
  let result = text
  if (text.indexOf('\n') >= 0) {
    let str = text.replace('\n', '')
    result = str.replace(/\n/g, '</br>')
  }
  return result
}

ex:
全部替换
let str = "\n债券代码:1680352.IB\n债券简称:16马经发债02\n发行量:17.5亿\n中标量:2.1";  
let newStr = str.replace(/\n/g, "</br>");  

//只替换第一个
let newStr = str .replace('\n', '')
相关推荐
炫饭第一名6 小时前
速通Canvas指北🦮——基础入门篇
前端·javascript·程序员
Forever7_7 小时前
Electron 淘汰!新的桌面端框架 更强大、更轻量化
前端·vue.js
不会敲代码17 小时前
前端组件化样式隔离实战:React CSS Modules、styled-components 与 Vue scoped 对比
css·vue.js·react.js
Angelial7 小时前
Vue3 嵌套路由 KeepAlive:动态缓存与反向配置方案
前端·vue.js
进击的尘埃8 小时前
Vue3 响应式原理:从 Proxy 到依赖收集,手撸一个迷你 reactivity
javascript
willow8 小时前
JavaScript数据类型整理1
javascript
LeeYaMaster8 小时前
20个例子掌握RxJS——第十一章实现 WebSocket 消息节流
javascript·angular.js
UIUV9 小时前
RAG技术学习笔记(含实操解析)
javascript·langchain·llm
SuperEugene9 小时前
Vue状态管理扫盲篇:如何设计一个合理的全局状态树 | 用户、权限、字典、布局配置
前端·vue.js·面试
阿懂在掘金9 小时前
defineModel 是进步还是边界陷阱?双数据源组件的选择逻辑
vue.js·源码阅读