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