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