From 9412cc46c7d135d29dc6bf9b7ae36a3b6b17347c Mon Sep 17 00:00:00 2001 From: 田源 <lastanimals@163.com> Date: 星期三, 07 六月 2023 18:11:21 +0800 Subject: [PATCH] 分类树组件封装,联调真实表格数据 --- Source/UBCS-WEB/src/components/Crud/Crud.vue | 294 ++++++++++++++++++++++++++++++++++++++-------------------- 1 files changed, 193 insertions(+), 101 deletions(-) diff --git a/Source/UBCS-WEB/src/components/Crud/Crud.vue b/Source/UBCS-WEB/src/components/Crud/Crud.vue index aeccd29..6d66a84 100644 --- a/Source/UBCS-WEB/src/components/Crud/Crud.vue +++ b/Source/UBCS-WEB/src/components/Crud/Crud.vue @@ -1,69 +1,133 @@ <template> <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> - <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 class="testbox"> + <div style="margin-top: 10px;display: flex;flex-wrap: wrap;width: 100%;"> + <el-button size="small" type="primary" plain @click="addvisible=true">澧炲姞 + <FormTemplateDialog + :visible.sync="addvisible" + :type="add" + :templateOid="this.templateOids" + :codeClassifyOid="this.codeClassifyOids" + :codeRuleOid="this.codeRuleOid" + :disabledProp="disabledProp" + :rowOid="rowOid" + > + </FormTemplateDialog></el-button> + <el-button size="small" type="primary" plain @click="editvisible=true">缂栬緫 + <FormTemplateDialog + :visible.sync="editvisible" + :type="edit" + :templateOid="this.templateOids" + :codeClassifyOid="this.codeClassifyOids" + :codeRuleOid="this.codeRuleOid" + :disabledProp="disabledProp" + :rowOid="rowOid" + ></FormTemplateDialog></el-button> + <el-button size="small" type="primary" plain>鎵归噺瀵煎叆鐢宠</el-button> + <el-button size="small" type="primary" plain>鍘嗗彶鏁版嵁瀵煎叆</el-button> + <el-button size="small" type="primary" plain>鎵归噺鐢宠缂栫爜</el-button> + <el-button size="small" type="primary" plain>鎵归噺鍙戝竷</el-button> + <el-button size="small" type="primary" plain>鏌ョ湅娴佺▼鍘嗗彶</el-button> + <el-button size="small" type="primary" plain>鍒犻櫎</el-button> + <el-button size="small" type="primary" plain>鍙戝竷</el-button> + <el-button size="small" type="primary" plain>鏁版嵁鏇存敼</el-button> + <el-button size="small" type="primary" plain>鍥炴敹</el-button> + <el-button size="small" type="primary" plain>瀵煎嚭 + <transfer filter-placeholder="璇疯緭鍏ユ嫾闊冲叏鎷兼垨鑰呮嫾闊崇缉鍐�" ></transfer> + </el-button> + <el-button size="small" type="primary" plain @click="findvisible=true">鏌ヨ + <advancedQuery :visible.sync="findvisible" :options="this.options"></advancedQuery> + </el-button> + <el-button size="small" type="primary" plain>鐩镐技椤规煡璇�</el-button> + <el-button size="small" type="primary" plain style="margin-left: 1px;margin-top:10px">鍒锋柊</el-button> + <el-input placeholder="璇疯緭鍏ュ叧閿瓧鎸夊洖杞︽煡璇�" style="width: 180px;margin-left: 5px;margin-top:10px" size="small"></el-input> + </div> + <el-row style="height: 700px;width: 100%"> + <el-table :data="tableData" style="" @cell-click="handleCellClick" max-height="700" @selection-change="handleSelectionChange" @sort-change="sortChange"> + <el-table-column + type="selection" + fixed + width="55"> + </el-table-column> + <el-table-column + type="index" + fixed + label="搴忓彿" + width="55"> + </el-table-column> + <div v-for="(item,index) in this.tableHeadData" :key="index"> + <el-table-column :label="item.label" :prop="item.prop" :sortable="item.sortable" :width="item.width"> + <!-- 缂栬緫鍜屽睍绀洪�昏緫 --> + <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> + <el-switch + v-if="editShow === 'true'" + v-model="row[item.prop]" + active-color="#13ce66" + inactive-color="#ff4949"> + </el-switch> + </template> + </el-table-column> </div> - </template> - </avue-crud> + </el-table> + </el-row> + </div> + <div class="block" style="display: flex;justify-content: flex-end"> + <el-pagination + @size-change="handleSizeChange" + @current-change="handleCurrentChange" + :current-page="page.currentPage" + :page-sizes="page.pageSizes" + :page-size="page.pageSizes" + layout="total, sizes, prev, pager, next, jumper" + :total="page.total"> + </el-pagination> + </div> </basic-container> </template> - <script> import {MasterTable, TableData} from "@/api/GetItem"; - export default { name: "Crud.vue", + props:{ + page:{ + type: Object, + default: ()=>{ + return {} + } + }, + codeClassifyOid:{ + type:String, + default:"" + }, + coderuleoid:{ + type:String, + default:"" + }, + tableDataArray:{ + type:Array, + default:[] + } + }, data() { return { + templateOid:"", + addvisible:false, + editvisible:false, + findvisible:false, + templateOids: "78B8C7C5-A042-0B96-FE6D-65421451782A", + codeClassifyOids: "4524E801-6CC6-92E8-1AC3-2AB9604E8F96", + codeRuleOid: "B95872A6-9CEA-D490-8F1B-9D26548CAF96", + rowOid: '6EF696C3-CD87-0E7C-1EA1-8DE3913A95C9', + disabledProp: ["id"], editingRow:null, editShow: "", editAttr:"", loading: false, data: [], + options:{}, option: { - //榛樿楂樺害, - align: 'center', - menuAlign: 'center', - addBtn: false, - editBtn: false, - selection: true, - selectionFixed: false, - index: true, column: [] }, List: [], @@ -74,40 +138,59 @@ number: "number", datetime: "datetime", }, - page: { - total: 0, - currentPage: 1, - pageSize: 10, - pageSizes: [10, 30, 50, 100, 200], - }, tableData:[], tableHeadData:[], - items:{} + items:{}, + aaa:"" } }, computed:{ - editable(){ - this.tableData.forEach(item=>{ - this.items=item - }) - return this.editShow === this.editingRow[this.items.prop]; - } }, created() { this.CrudHeaderRend(); - this.CrudRend() + this.$emit('tableData',this.tableData) + }, + mounted() { + }, activated() { this.doLayout() }, + watch:{ + codeClassifyOid:{ + handler(newval,oldval){ + this.codeClassifyOid=newval; + this.CrudHeaderRend() + }, + deep:true + }, + tableDataArray:{ + handler(newval,oldval){ + this.tableData=newval; + this.CrudRend() + } + } + }, methods: { + rend(){ + this.tableData=this.tableHeadData + }, + handleSizeChange(val){ + this.page.pageSize=val + this.$emit('pageSize',val) + this.CrudRend() + }, + handleCurrentChange(val){ + this.page.currentPage=val + this.$emit('currentPage',val) + this.CrudRend() + }, // 鐩戝惉鍗曞厓鏍肩偣鍑讳簨浠跺苟瀛樺偍姝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) @@ -123,38 +206,41 @@ }, //琛ㄦ牸澶存覆鏌� 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; + if(this.codeClassifyOid != ""){ + MasterTable({ + codeClassifyOid:this.codeClassifyOid, + functionId: 5, + }).then(res => { + this.options=res.data.tableDefineVO.seniorQueryColumns + 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; + this.templateOid=res.data.tableDefineVO.oid + this.$emit('templateOid',this.templateOid) + }) }) - }) + } }, //琛ㄦ牸鏁版嵁 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; - this.tableData=res.data.data; - }) + TableData({ + templateOid: this.templateOid, + codeClassifyOid: this.codeClassifyOid, + page: this.page.currentPage, + limit:this.page.pageSize, + }).then(res => { + this.page.total = res.data.total; + this.data = res.data.data; + this.tableData=res.data.data; + }) }, // 鎺掑簭 sortChange(val) { @@ -166,8 +252,8 @@ order = "desc"; } TableData({ - templateOid: "A12826E4-2B66-6D56-DE30-92BB1D7F607F", - codeClassifyOid: "D9CF223F-317D-71EB-BD11-433A94CAD9F3", + templateOid: this.templateOid, + codeClassifyOid: this.codeClassifyOid, order: order, sort: val.prop, page: this.page.currentPage, @@ -181,25 +267,31 @@ }, //鍒嗛〉鍒锋柊 async onLoad(val) { - console.log(val) await TableData({ - templateOid: "A12826E4-2B66-6D56-DE30-92BB1D7F607F", - codeClassifyOid: "D9CF223F-317D-71EB-BD11-433A94CAD9F3", + templateOid: this.templateOid, + codeClassifyOid: this.codeClassifyOid, page: val.currentPage, limit: val.pageSize, - _: 1685089123575 }).then(res => { this.data = res.data.data; }) }, //澶氶�� - selectionChange(row) { + handleSelectionChange(row) { console.log(row) } } } </script> -<style scoped> +<style lang="scss" scoped> +.testbox { + .el-table--scrollable-x .el-table__body-wrapper { + overflow: auto !important; + } + .el-table__fixed-right-patch { + background-color: #f5f7fa !important; + } +} </style> -- Gitblit v1.9.3