From 81ad9f333218d63473436d6bb8077c6ed8919bff Mon Sep 17 00:00:00 2001
From: 田源 <lastanimals@163.com>
Date: 星期二, 30 五月 2023 18:02:24 +0800
Subject: [PATCH] 动态表格单元格编辑
---
Source/UBCS-WEB/src/components/Crud/Crud.vue | 195 ++++++++++++++++++++++++++++++++----------------
1 files changed, 130 insertions(+), 65 deletions(-)
diff --git a/Source/UBCS-WEB/src/components/Crud/Crud.vue b/Source/UBCS-WEB/src/components/Crud/Crud.vue
index 4e4eda7..aeccd29 100644
--- a/Source/UBCS-WEB/src/components/Crud/Crud.vue
+++ b/Source/UBCS-WEB/src/components/Crud/Crud.vue
@@ -1,134 +1,199 @@
<template>
-<basic-container>
- <avue-crud ref="crud"
- :data="data"
- :option="option"
- @sort-change="sortChange"
- v-loading="loading"
- :page="page"
- @selection-change="selectionChange"
- @on-load="onLoad">
+ <basic-container>
+ <avue-crud ref="crud"
+ v-loading="loading"
+ :data="data"
+ :option="option"
+ :page="page"
+ @sort-change="sortChange"
+ @selection-change="selectionChange"
+ @on-load="onLoad">
<template slot="menu">
<el-button type="text">鏂囧瓧鎸夐挳</el-button>
</template>
- </avue-crud>
-</basic-container>
+ <template slot="menuLeft">
+ <div>
+ <el-table :data="tableData" style="width: 100%" @cell-click="handleCellClick" @cell-dblclick="dbclick">
+ <div v-for="(item,index) in this.tableHeadData" :key="index">
+ <el-table-column :label="item.label" :prop="item.prop">
+<!-- 缂栬緫鍜屽睍绀洪�昏緫 -->
+ <template slot-scope="{ row }">
+ <el-input v-if="editingRow === row && editShow== item.prop" v-model="row[item.prop]" @blur="saveRow"></el-input>
+ <span v-else>{{row[item.prop]}}</span>
+ </template>
+ </el-table-column>
+ </div>
+ <el-table-column fixed="right" label="鎿嶄綔" width="120">
+ <template slot-scope="scope">
+ <el-button size="small" type="text" @click.native.prevent="enumDeleteRow(scope.$index, tableData)">
+ 绉婚櫎
+ </el-button>
+ </template>
+ </el-table-column>
+ </el-table>
+ <template>
+ <div style="display: flex;justify-content: right;margin-top: 15px">
+ <el-button type="primary" size="small">淇濆瓨</el-button>
+ <el-button size="small" @click="enumVisible=false">鍙栨秷</el-button>
+ </div>
+ </template>
+ </div>
+ </template>
+ </avue-crud>
+ </basic-container>
</template>
<script>
-import { MasterTable,TableData } from "@/api/GetItem";
+import {MasterTable, TableData} from "@/api/GetItem";
+
export default {
name: "Crud.vue",
- data(){
- return{
- loading:false,
- data:[],
- option:{
+ data() {
+ return {
+ editingRow:null,
+ editShow: "",
+ editAttr:"",
+ loading: false,
+ data: [],
+ option: {
//榛樿楂樺害,
- align:'center',
- menuAlign:'center',
- addBtn:false,
- editBtn:false,
- selection:true,
- selectionFixed:false,
- index:true,
- column:[]
+ align: 'center',
+ menuAlign: 'center',
+ addBtn: false,
+ editBtn: false,
+ selection: true,
+ selectionFixed: false,
+ index: true,
+ column: []
},
- List:[],
+ List: [],
columnType: {
text: "input",
combox: "select",
truefalse: "switch",
number: "number",
- datetime:"datetime",
+ datetime: "datetime",
},
- page:{
+ page: {
total: 0,
currentPage: 1,
pageSize: 10,
pageSizes: [10, 30, 50, 100, 200],
},
+ tableData:[],
+ tableHeadData:[],
+ items:{}
+ }
+ },
+ computed:{
+ editable(){
+ this.tableData.forEach(item=>{
+ this.items=item
+ })
+ return this.editShow === this.editingRow[this.items.prop];
}
},
created() {
- this.CrudHeaderRend();
- this.CrudRend()
+ this.CrudHeaderRend();
+ this.CrudRend()
},
activated() {
this.doLayout()
},
- methods:{
+ methods: {
+ // 鐩戝惉鍗曞厓鏍肩偣鍑讳簨浠跺苟瀛樺偍姝e湪缂栬緫鐨勮
+ handleCellClick(row, column) {
+ this.editingRow = row;
+ this.editShow = column.property;
+ console.log( this.editingRow['name'], this.editShow)
+ },
+ //鏋氫妇娉ㄥ叆鍒犻櫎
+ enumDeleteRow(row) {
+ console.log(row)
+ this.tableData.splice(row, 1)
+ },
+ // 灏嗘鍦ㄧ紪杈戠殑琛岀殑鐘舵�佸彉涓� null 锛屽嵆閫�鍑虹紪杈戠姸鎬�
+ saveRow() {
+ this.editingRow = null;
+ },
doLayout() {
this.$nextTick(() => {
this.$refs.crud.doLayout();
});
},
//琛ㄦ牸澶存覆鏌�
- CrudHeaderRend(){
- MasterTable({codeClassifyOid:"D9CF223F-317D-71EB-BD11-433A94CAD9F3",functionId: 5,_: 1685067339479}).then(res=>{
- this.List=res.data.tableDefineVO.cols[0];
- this.List.forEach(item=>{
- let columnItem={
- label:item.title,
- prop:item.field,
- type:this.columnType[item.type],
- sortable:item.sort,
- width:item.minWidth
+ CrudHeaderRend() {
+ MasterTable({
+ codeClassifyOid: "D9CF223F-317D-71EB-BD11-433A94CAD9F3",
+ functionId: 5,
+ _: 1685067339479
+ }).then(res => {
+ this.List = res.data.tableDefineVO.cols[0];
+ this.List.forEach(item => {
+ let columnItem = {
+ label: item.title,
+ prop: item.field,
+ type: this.columnType[item.type],
+ sortable: item.sort,
+ width: item.minWidth
};
this.option.column.push(columnItem);
-
+ this.option.column=this.tableHeadData;
})
})
},
//琛ㄦ牸鏁版嵁
- CrudRend(){
- TableData({templateOid: "A12826E4-2B66-6D56-DE30-92BB1D7F607F",
+ CrudRend() {
+ TableData({
+ templateOid: "A12826E4-2B66-6D56-DE30-92BB1D7F607F",
codeClassifyOid: "D9CF223F-317D-71EB-BD11-433A94CAD9F3",
page: this.page.currentPage,
limit: this.page.pageSize,
_: 1685089123575
- }).then(res=>{
- this.page.total=res.data.total;
- this.data=res.data.data;
+ }).then(res => {
+ this.page.total = res.data.total;
+ this.data = res.data.data;
+ this.tableData=res.data.data;
})
},
// 鎺掑簭
- sortChange(val){
- this.loading=true;
- let order=""
- if(val.order == "ascending"){
- order="asc";
- }else {
- order="desc";
+ sortChange(val) {
+ this.loading = true;
+ let order = ""
+ if (val.order == "ascending") {
+ order = "asc";
+ } else {
+ order = "desc";
}
- TableData( {
+ TableData({
templateOid: "A12826E4-2B66-6D56-DE30-92BB1D7F607F",
codeClassifyOid: "D9CF223F-317D-71EB-BD11-433A94CAD9F3",
- order:order,
- sort:val.prop,
+ order: order,
+ sort: val.prop,
page: this.page.currentPage,
limit: this.page.pageSize,
- }).then(res=>{
+ }).then(res => {
setTimeout(() => {
- this.data=res.data.data;
- this.loading=false;
+ this.data = res.data.data;
+ this.loading = false;
}, 100);
})
},
//鍒嗛〉鍒锋柊
- async onLoad(val){
+ async onLoad(val) {
console.log(val)
- await TableData({templateOid: "A12826E4-2B66-6D56-DE30-92BB1D7F607F",
+ await TableData({
+ templateOid: "A12826E4-2B66-6D56-DE30-92BB1D7F607F",
codeClassifyOid: "D9CF223F-317D-71EB-BD11-433A94CAD9F3",
page: val.currentPage,
limit: val.pageSize,
_: 1685089123575
- }).then(res=>{
- this.data=res.data.data;
+ }).then(res => {
+ this.data = res.data.data;
})
},
//澶氶��
- selectionChange(row){
+ selectionChange(row) {
console.log(row)
}
}
--
Gitblit v1.9.3