实现在columns中的简称中三个值进行编辑和新增<template> <div> <a-table :pagination="false" :columns="columns" :dataSource="dataSource"> //循环展示数据或input输入框 <template v-for="col in ['abbreviation', 'fullName', 'nodes']" :slot="col" slot-scope="text, record, index" > <div :key="col"> <a-input v-if="editableData[record.key]" v-model="editableData[record.key][col]" /> <template v-else>{{ text }}</template> </div> </template> //操作 <template slot="operation" slot-scope="text, record, index"> <span v-if="editableData[record.key]"> <a-icon type="check" @click="save(record.key)" /> </span> <span v-else> <a-icon type="delete" @click="deleteItem(record.key)" /> <a-icon type="edit" @click="edit(record.key)" /> <a-icon type="plus" v-if="index==dataSource.length-1" @click="addItem(record.key)" /> </span> </template> </a-table> </div> </template> <script> import { cloneDeep } from "lodash"; export default { data() { return { editableData: [], //正在编辑的数组 columns: [ { title: "简称", dataIndex: "abbreviation", scopedSlots: { customRender: "abbreviation" } }, { title: "全称", dataIndex: "fullName", scopedSlots: { customRender: "fullName" } }, { title: "来源", dataIndex: "nodes", scopedSlots: { customRender: "nodes" } }, { title: "操作", dataIndex: "operation", scopedSlots: { customRender: "operation" } } ], //表格数据 dataSource: [ { key: 0, abbreviation: "简称1", fullName: "全称1", nodes: "来源1" }, { key: 1, abbreviation: "简称2", fullName: "全称2", nodes: "来源2" }, { key: 2, abbreviation: "简称3", fullName: "全称3", nodes: "来源3" }, { key: 3, abbreviation: "简称14", fullName: "全称14", nodes: "来源14" } ] }; }, components: {}, props: ["tableDatas"], watch: {}, updated() {}, created() {}, methods: { addItem(key) { let item = { key: key + 1, abbreviation: "", fullName: "", nodes: "" }; this.dataSource.splice(key + 1, 0, item); this.$set(this.editableData, key + 1, item); }, deleteItem(key) { this.dataSource = this.dataSource.filter(item => item.key !== key); }, edit(key) { let editItem = cloneDeep( this.dataSource.filter(item => key === item.key)[0] ); this.$set(this.editableData, key, editItem); }, save(key) { Object.assign( this.dataSource.filter(item => key === item.key)[0], this.editableData[key] ); this.$set(this.editableData, key, null); } } }; </script>
时间: 2023-07-19 07:38:18 浏览: 149
这段代码是一个基于 ant-design-vue 组件库的表格编辑组件,通过循环展示数据或 input 输入框来实现对表格中的数据进行编辑和新增。其中,使用了 scopedSlots 来自定义表格列的渲染方式,操作列中的四个图标分别对应删除、编辑、保存和新增操作。同时,利用了 editableData 数组来记录正在编辑的数据,以便在保存时进行更新。具体实现过程可以参考代码中的注释。
相关问题
下面这段代码中,我怎么在查看详情时获取该行的id:<div class="trust-gc-table-box"> <a-table :columns="columns" :dataSource="data" :pagination="pagination" size="small" class="trust-gc-table" :scroll="scroll" @change="handleTableChange"> <template v-slot:bodyCell="{ column, record }"> <template v-if="column.dataIndex === 'teamNo'"> <span>{{ record.teamNo }}</span> </template> <template v-if="column.key === 'action'"> <div> <text-button class="editButton mr-2" @click="showModal">查看详情</text-button> <div v-drag-dialog name="gageStockBaseInf"> <a-modal wrapClassName="gageStockBaseInf" class="trust-gc-mi-modal trust-sso" v-model:visible="modalVisible" title="质押股票详情"> <dy-form :formId="'1126448911624585216'" :edit="formApi.edit" :formApi="formApi" @complete="onComplete"> </dy-form> <template v-slot:footer> <a-button class="trust-gc-sub-button" type="primary" @click="hideModal()">关闭</a-button> </template> </a-modal> </div> </div> </template> </template> </a-table> </div>
在这段代码中,你可以通过在查看详情按钮的点击事件处理函数中获取该行的 `id`。假设你的数据源是 `data` 数组,每个元素都代表一行数据,其中包含一个 `id` 字段。你可以在 `showModal` 方法中访问当前行的 `id`。以下是一个可能的实现示例:
```javascript
methods: {
showModal(record) {
const id = record.id; // 获取当前行的 id
// 执行其他逻辑或显示详情模态框
},
// 其他方法...
}
```
在 `showModal` 方法中,我们通过参数 `record` 获取到了当前行的数据对象,然后可以通过 `record.id` 来获取该行的 `id` 值。这样你就可以在点击查看详情按钮时获取到对应行的 `id` 了。
<q-table style="margin-top: 15px" :rows="rows" :columns="columns" row-key="ID" :pagination="pigitions" dense :filter="filter" :loading="loading" :visible-columns="visibleColumns"> <template v-slot:body-cell-WorkType="props"> <q-td :props="props"> <div> <q-btn @click="showDetail(props.row.IPSID)" color="purple" flat dense no-caps :label="props.value" /> </div> </q-td> </template> </q-table> 怎么在v-slot:body-cell-WorkType里获取被隐藏的IPSID的数据
在 `v-slot:body-cell-WorkType` 中获取被隐藏的 `IPSID` 数据,你可以通过 `props.row` 对象来访问整行的数据。即使列被隐藏,所有的列数据仍然会包含在 `props.row` 中。
在你的 `v-slot:body-cell-WorkType` 模板中,你可以使用 `props.row.IPSID` 来获取被隐藏的 `IPSID` 数据。例如:
```html
<template v-slot:body-cell-WorkType="props">
<q-td :props="props">
<div>
<q-btn @click="showDetail(props.row.IPSID)" color="purple" flat dense no-caps :label="props.value" />
</div>
</q-td>
</template>
```
上述示例中,`props.row.IPSID` 就是被隐藏的 `IPSID` 数据,你可以将其传递给 `showDetail` 方法或在其他地方使用。
希望这可以解决你的问题!如果还有其他疑问,请随时提问。
阅读全文