From 695e4a085727ef5017597dd1ab72a47d0e9883e6 Mon Sep 17 00:00:00 2001
From: ludc
Date: 星期二, 30 五月 2023 19:19:55 +0800
Subject: [PATCH] 代码整合

---
 Source/UBCS-WEB/src/components/Crud/Crud.vue |  213 ++++++++++++++++++++++++++++++++++++++++-------------
 1 files changed, 160 insertions(+), 53 deletions(-)

diff --git a/Source/UBCS-WEB/src/components/Crud/Crud.vue b/Source/UBCS-WEB/src/components/Crud/Crud.vue
index 90412c5..aeccd29 100644
--- a/Source/UBCS-WEB/src/components/Crud/Crud.vue
+++ b/Source/UBCS-WEB/src/components/Crud/Crud.vue
@@ -1,30 +1,72 @@
 <template>
-<basic-container style="height: 750px">
-  <avue-crud ref="crud" :data="data" :option="option" style="height: 750px" @sort-change="sortChange"></avue-crud>
-</basic-container>
+  <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>
+      </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{
-      data:[
-        {
-          zhiliangbz:"111",
-        },
-        {
-          xinghaoguige:"1121",
-        },
-      ],
-      option:{
+  data() {
+    return {
+      editingRow:null,
+      editShow: "",
+      editAttr:"",
+      loading: false,
+      data: [],
+      option: {
         //榛樿楂樺害,
-        align:'center',
-        menuAlign:'center',
-        column:[]
+        align: 'center',
+        menuAlign: 'center',
+        addBtn: false,
+        editBtn: false,
+        selection: true,
+        selectionFixed: false,
+        index: true,
+        column: []
       },
-      List:[],
+      List: [],
       columnType: {
         text: "input",
         combox: "select",
@@ -32,63 +74,128 @@
         number: "number",
         datetime: "datetime",
       },
+      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=>{
-          console.log(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: 1,
-        limit: 9,
+        page: this.page.currentPage,
+        limit: this.page.pageSize,
         _: 1685089123575
-      }).then(res=>{
-        console.log(res)
-        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){
-      console.log(val)
-
-      // TableData(  {
-      //   templateOid: "A12826E4-2B66-6D56-DE30-92BB1D7F607F",
-      //   codeClassifyOid: "D9CF223F-317D-71EB-BD11-433A94CAD9F3",
-      //   order:"desc",
-      //   sort:val.prop
-      // }).then(res=>{
-      //   console.log(res.data.data)
-      //   this.data=res.data.data
-      // })
+    sortChange(val) {
+      this.loading = true;
+      let order = ""
+      if (val.order == "ascending") {
+        order = "asc";
+      } else {
+        order = "desc";
+      }
+      TableData({
+        templateOid: "A12826E4-2B66-6D56-DE30-92BB1D7F607F",
+        codeClassifyOid: "D9CF223F-317D-71EB-BD11-433A94CAD9F3",
+        order: order,
+        sort: val.prop,
+        page: this.page.currentPage,
+        limit: this.page.pageSize,
+      }).then(res => {
+        setTimeout(() => {
+          this.data = res.data.data;
+          this.loading = false;
+        }, 100);
+      })
     },
+    //鍒嗛〉鍒锋柊
+    async onLoad(val) {
+      console.log(val)
+      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;
+      })
+    },
+    //澶氶��
+    selectionChange(row) {
+      console.log(row)
+    }
   }
 }
 </script>

--
Gitblit v1.9.3