【Vue3】 el-table隐藏输入框;input输入内容居中;去掉el-input-number的上下箭头

本文详细描述了如何在Vue应用中使用ElementUI组件el-table创建一个带有不同类型的列(文本、数字和日期),并自定义样式如去除输入框边框和日期前的图标。
摘要由CSDN通过智能技术生成

原本:

更改后:

关键代码:

el-table 设置 class="search_table"

el-input 设置 class="no_number" (type为number的input)

el-date-picker 设置 class="date_picker"

剩下的就是样式设置

完整代码代码如下:

<template>    
    <el-table
        :data="tableData"
        border
        class="search_table"
        size="small">

      <el-table-column
          v-for="item in titleList"
          :key="item.prop"
          :prop="item.prop"
          :label="item.label"
          :min-width="item.width"
          align="center">
        <template #default="scope">
          <el-input v-model="scope.row[item.prop]"  v-if="item.type === 'text'"/>
          <el-input v-model="scope.row[item.prop]"  v-if="item.type === 'number'" type = "number" class="no_number"/>
          <el-date-picker
              v-model="scope.row[item.prop]"
              type="date"
              size="small"
              style="width: 100%"
              class="date_picker"
              v-if="item.type === 'date'"/>
        </template>
      </el-table-column>
    </el-table>
</template>    

<script setup>
const titleList = ref([
  { label: "可用数量", prop: "sampleAvailableNumber",type:'number',width:"" },
  { label: "客户项目", prop: "project" ,type:'text',width:""},
  { label: "申请数量", prop: "expectNumber" ,type:'number',width:""},
  { label: "单机用量", prop: "unitNumber",type:'number',width:"" },
  { label: "销售单价", prop: "salePrice",type:'number',width:"" },
  { label: "需求日期", prop: "expectDate" ,type:'date',width:"100"},
  { label: "客户料号", prop: "custMaterialId" ,type:'text',width:""},
  { label: "收货地址", prop: "deliveryAddress" ,type:'text',width:""},
  { label: "备注", prop: "remarks",type:'text' ,width:""},
]);
</script>

<style lang="scss" scoped>
// 去掉日期前的icon
::v-deep(.date_picker .el-input__prefix){
  display: none;
}

//输入框内容居中
:deep(.search_table .el-input__inner){
  text-align: center;
}

//去掉number输入框的上下箭头
:deep(.no_number input::-webkit-inner-spin-button),
:deep(.no_number input::-webkit-outer-spin-button){
  -webkit-appearance: none !important;
}
:deep(.no_number input[type="number"]){
  -moz-appearance: textfield;
}

// 去掉输入框边框
:deep(.search_table.el-table--small .el-table__cell){
  padding: 0 !important;
}
:deep(.search_table.el-table--small .cell){
  padding: 0 !important;
}
:deep(.search_table .el-input__wrapper){
  padding: 1px 3px !important;
  background-color: transparent !important;
  border-radius: 0;
  box-shadow: 0 0 0 0 !important;
}
</style>

  • 6
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
您可以通过在 `el-table` 中使用 `el-input-number` 组件来实现购物车功能。以下是一个简单的示例代码: 首先,需要在组件中引入所需的组件: ```vue <template> <div> <el-table :data="cartData" style="width: 100%"> <el-table-column prop="name" label="商品名称"></el-table-column> <el-table-column prop="quantity" label="数量"> <template slot-scope="scope"> <el-input-number v-model="scope.row.quantity" @change="updateTotalPrice"></el-input-number> </template> </el-table-column> <el-table-column prop="price" label="单价"></el-table-column> <el-table-column prop="totalPrice" label="总价"></el-table-column> </el-table> </div> </template> <script> export default { data() { return { cartData: [ { name: '商品1', quantity: 1, price: 10, totalPrice: 10 }, { name: '商品2', quantity: 2, price: 20, totalPrice: 40 }, { name: '商品3', quantity: 3, price: 30, totalPrice: 90 } ] }; }, methods: { updateTotalPrice() { this.cartData.forEach(item => { item.totalPrice = item.quantity * item.price; }); } } }; </script> ``` 在上述代码中,`cartData` 数组是购物车中的数据源,包含商品名称、数量、单价和总价等信息。在 `el-table` 中的 `el-table-column` 中,使用 `el-input-number` 组件来编辑商品的数量,并通过 `v-model` 绑定到 `cartData` 数组中的 `quantity` 属性上。当数量发生变化时,通过 `@change` 事件触发 `updateTotalPrice` 方法,更新对应商品的总价。 注意:以上代码仅为示例,实际应用中,您可能需要从后端动态获取购物车数据,并与后端进行交互来更新购物车信息。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值