vue+element-plus+table实现值班信息管理功能

文章展示了如何使用Vue.js的ElementUI库来渲染一个表格,数据来源于后端接口。表格包含动态时间信息,数据结构由后端返回的数组转换而来,转换后的数据用于支持表格的多级展示,包括人员名称、单位、排班等信息。同时,提供了增删改功能的交互元素。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.table代码

需注意的是显示的时间信息什么的都是后端的接口 动态拿的

  <el-table
        :data="tableData"
        ref="table"
        row-key="id"
        border
        lazy
        :tree-props="{ children: 'children' }"
        default-expand-all
      >
        <el-table-column label="人员名称"  header-align="center"  :cell-style="tablrow" >
          <template #default="scope">
            <span>
              <span v-if="scope.row.children">单位:</span>{
 { scope.row.name }}
            </span>
            <div class="btn" v-if="!scope.row.name">
              <i
                @click="batchclick(scope)"
                title="批量排班"
                class="el-icon-s-custom"
                style="font-size: 14px; font-weight: bold; margin-right: 5px"
              ></i>
            </div>
          </template>
        </el-table-column>
        <el-table-column
          header-align="center"
          v-for="(item, index) in column"
          :key="index" 
        >
          <template #header>
            <div :class="['table-header', item.prop == today ? 'current' : '']">
              <div>{
 { item.label }}</div>
              <div>{
 { item.prop }}</div>
            </div>
          </template>
​
          <template #default="scope">
            <div style="text-align: center; min-height: 35px">
              <div v-for="(itemOne, index) in scope.row.list" :key="index">
                <span v-if="item.prop === itemOne.date">{
 {
                  itemOne.name.replace(/\$[^,]+/g, '').replace(/\$/, '').replace(/\s*/g,"")
                 
                }}</span>
              </div>
            </div>
            <div class="btn" v-if="!scope.row.children">
              <i
                title="添加"
                @click="tableadd(scope, item.prop)"
                v-if="!scope.row[item.prop]"
                class="el-icon-plus blue"
                style="font-size: 14px; font-weight: bold; margin-right: 5px"
              ></i>
              <i
                title="修改"
全自动排班表使用说明 1、在设置好年份与表头。 "2、每年1月1日,在中按一个排班周期设置好人员名单,将自动生成全年排班表,   第一行就是1月1日上班人员,如使用该表时不是1月1日,可以通过调整中   的排班次序来获得之后日期的正确排班表。单元格内的多行人员代表当天几个班   (如三行就是早中晚),当天增加一个班,就在人员单元格内按[Alt-Enter]换行。" 3、在表中,请自行增加本年的节日,假日会以红底黑字增亮显示 4、在中设置好班次与工时。 5、在中可以自动统计每人每月或全年的工作量 "6、对于不规则情况的排班,如换班,可以在当月人员名单中手动更改,另外,如果每天   的班次大于三个,会出现单元格显示不下的情况,这时可以用快捷键来修改字体大小。" "7、快捷键:   Ctrl-q 所有表保护状态,只有人员显示栏可以更改   Ctrl-e 取消所有表的保护状态,所有栏都可编辑   Ctrl-r 所有表人员名称字体加大   Ctrl-t 所有表人员名称字体减小 Ctrl-p 下打印排班表 Alt-F4 退出EXECL" "8、注意事项:理论上没有限制,但由于单元格显示宽高度有限(字体太小影响显示效果),       本表建议适用一个班最多三人,一天最多四个班上班(四行)的情况,不符合       该条件的可以使用《排班表(考勤版)》解决。"
Vue、Vite和Element Plus项目中,实现Table表格中的某一列全数据排序通常涉及到以下几个步骤: 1. 首先,你需要在你的Vue组件中引入`element-plus`的Table组件,并设置初始的数据源。例如,你可以有一个数组 `dataList` 存储表格的所有数据。 ```html <template> <el-table :data="dataList"> <!-- 表头配置 --> <el-table-column label="标题" prop="yourColumnToSort" sortable></el-table-column> <!-- 其他列... --> </el-table> </template> <script> import { defineComponent, ref } from 'vue'; import { Table, TableColumn } from 'element-plus'; export default defineComponent({ components: { Table, TableColumn, }, data() { return { dataList: [], // 根据实际数据填充 }; }, }); </script> ``` 2. 然后,在`methods`中创建一个方法来处理排序功能,例如你可以使用JavaScript的sort方法对数组进行排序,传入自定义比较函数。这里我们假设你想按照 "yourColumnToSort" 列进行升序排列。 ```javascript <script> ... methods: { sortData(column) { this.dataList.sort((a, b) => a[column.key] - b[column.key]); // 降序则使用 > 操作符 }, }, mounted() { // 初始化排序 const yourColumn = this.$refs.table.columns.find((col) => col.prop === 'yourColumnToSort'); if (yourColumn && yourColumn.sortable) { this.sortData(yourColumn); } } // ... </script> ``` 3. 当用户点击表头的排序图标时,可以监听Table的`sort-method`事件并调用自定义的排序方法。 ```html <template> ... <el-table-column label="标题" prop="yourColumnToSort" sortable @sort-method="sortData" ></el-table-column> ... </template> ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值