ag-grid配置


子組件代碼

<template>
  <section style="width: 100%;height: 100%">
    <div>
      <!-- <input type="text" placeholder="請輸入要搜索的內容" v-model="searchText"> -->
    </div>
    <ag-grid-vue
      :bodyScroll="bodyScroll"
      :cellMouseOver="cellMouseOver"
      :rowDataChanged="rowDataChanged"
      :editType="gridParameter.editType || 'fullRow'"
      :suppressClickEdit="gridParameter.suppressClickEdit"
      :suppressRowClickSelection="gridParameter.suppressRowClickSelection"
      :suppressCellSelection="gridParameter.suppressCellSelection"
      :class="gridParameter.themeName || 'ag-theme-balham'"
      :headerHeight="gridParameter.headerHeight"
      :floatingFilter="gridParameter.floatingFilter"
      :style="gridParameter.style"
      :columnDefs="gridParameter.columnDefs"
      :rowData="gridParameter.rowData"
      :rowHeight="gridParameter.rowHeight"
      :rowSelection="gridParameter.rowSelection"
      :defaultColDef="gridParameter.defaultColDef"
      :gridOptions="gridOptions"
      :cellClicked="onCellClicked"
      :cellValueChanged="cellValueChanged"
      :cellEditingStarted="cellEditingStarted"
      :cellEditingStopped="cellEditingStopped"
      :rowDoubleClicked="rowDoubleClicked"
      :rowClicked="rowClicked"
      :onGridReady="onGridReady"
      :columnMoved="columnMoved"
      :rowSelected="rowSelected"
      :rowValueChanged="rowValueChanged"
      :components="gridParameter.components"
      @editClick="editClick"
      :isRowSelectable="gridParameter.isRowSelectable"
      :frameworkComponents="frameworkComponents"
    ></ag-grid-vue>
    <pg v-if="showPaged"></pg>
    <!-- <button @click="edit">edit</button>
    <button @click="stopEdit">top edit</button>-->
  </section>
</template>

<script>
import { AgGridVue } from "ag-grid-vue";
import "ag-grid-enterprise";
import { mapGetters } from "vuex";
import pg from "./Pagina/index";
import { getCookies } from "@/utils/auth";
// import demo from "./demo/index";
export default {
  props: [
    "gridParameter",
    "searchText",
    "getRowNodes",
    "showPaged",
    "roleGrid",
    "peopleGrid",
    "userRowClick",
    "frameworkComponents",
    "cellMouseOver1",
  ],
  name: "App",
  components: {
    AgGridVue,
    pg,
    // GridEditButtons: demo,
  },
  computed: {
    ...mapGetters(["columnSaveState", "now_page"]),
  },
  data() {
    return {
      gridStyleKey: "",
      gridApi: "",
      columnApi: "",
      selectdNodes: [],
      gridOptions: {
        // defaultColDef: {
        //   // allow every column to be aggregated
        //   enableValue: true,
        //   // allow every column to be grouped
        //   enableRowGroup: true,
        //   // allow every column to be pivoted
        //   enablePivot: true,
        //   editable: true // 開啟網格編輯功能
        // },
        // editable: false, // 開啟網格編輯功能
        // rowSelection: 'multiple',
        // treeData: true, // 樹數據結構
        // editType: 'fullRow', // 開啟整行編輯
        enableSorting: true, // 開啟排序功能
        enableFilter: true, // 開啟過濾功能
        enableColResize: true, // 開啟調整列寬
        showToolPanel: false, // 展開功能面板
        contractColumnSelection: true, // 默認不展開tree
        toolPanelSuppressRowGroups: true,
        toolPanelSuppressSideButtons: true, // 禁止選項面板功能
        // toolPanelSuppressValues: false,
        // toolPanelSuppressPivots: false,
        toolPanelSuppressPivotMode: true,
        // suppressClickEdit: true, // 禁用雙擊網格編輯
        // toolPanelSuppressColumnFilter: true,
        // toolPanelSuppressColumnSelectAll: true,
        // toolPanelSuppressColumnExpandAll: true,
        // pagination: true, // 開啟分頁器
        // rowGroupPanelShow: 'always', // 表格頂部欄
        // enableRowGroup: true,
        // enablePivot: true,
        // enableStatusBar: true, // 開啟狀態欄
        // paginationPageSize: 500, // 分頁器每頁顯示的條數
        // enableRangeSelection: true,// 開啟拖動選擇網格
        // groupHeaders: true, // 使用組標題
        rowDragManaged: true, // 設置行拖動    需要在表格其中一個列    設置rowDrag:true
        animateRows: true, // 拖動動畫效果
        // rowMultiSelectWithClick: true,
        stopEditingWhenGridLosesFocus: true, // 在網格失去焦點時停止單元格編輯
        // singleClickEdit: true,
        localeText: {
          // 國際化
          // for filter panel
          page: "當前頁",
          more: "更多",
          to: "至",
          of: "總數",
          next: "下一頁",
          last: "上一頁",
          first: "首頁",
          previous: "上一頁",
          loadingOoo: "加載中...",
          // for set filter
          selectAll: "全選",
          searchOoo: "請輸入關鍵字...",
          blanks: "空白",
          // for number filter and text filter
          filterOoo: "過濾...",
          applyFilter: "daApplyFilter...",
          // for number filter
          equals: "相等",
          notEqual: "不相等",
          lessThan: "小於",
          greaterThan: "大於",
          lessThanOrEqual: "小於等於",
          greaterThanOrEqual: "大於等於",
          inRange: "范圍",
          contains: "包含",
          notContains: "不包含",
          startsWith: "開始於",
          endsWith: "結束於",
          // the header of the default group column
          group: "組",
          // tool panel
          columns: "列選項",
          rowGroupColumns: "laPivot Cols",
          rowGroupColumnsEmptyMessage: "拖拽組到這里",
          valueColumns: "laValue Cols",
          pivotMode: "樞軸模式",
          groups: "laGroups",
          values: "laValues",
          pivots: "laPivots",
          valueColumnsEmptyMessage: "la drag cols to aggregate",
          pivotColumnsEmptyMessage: "la drag here to pivot",
          // other
          noRowsToShow: "無數據",
          // enterprise menu
          pinColumn: "固定列",
          valueAggregation: "laValue Agg",
          autosizeThiscolumn: "自動調整當前網格寬度",
          autosizeAllColumns: "自動調整當前頁所有網格寬度",
          groupBy: "排序",
          ungroupBy: "不排序",
          resetColumns: "恢復網格樣式",
          expandAll: "展開全部",
          collapseAll: "關閉",
          toolPanel: "顯示/隱藏控制表盤",
          export: "導出到...",
          csvExport: "導出CSV",
          excelExport: "導出Excel",
          // enterprise menu pinning
          pinLeft: "<<鎖定至表格左側",
          pinRight: ">>鎖定至表格右側",
          noPin: "<>取消鎖定",
          // enterprise menu aggregation and status panel
          sum: "總數",
          min: "最小值",
          max: "最大值",
          none: "無",
          count: "總",
          average: "平均",
          // standard menu
          copy: "復制",
          copyWithHeaders: "復制內容及標題",
          ctrlC: "ctrl + C",
          paste: "粘貼",
          ctrlV: "ctrl + V",
        },
      },
    };
  },
  watch: {
    searchText(val) {
      this.onFilterTextBoxChanged();
    },
  },
  mounted() {
    const corpCode = getCookies("corpCode");
    const loginCode = getCookies("loginCode");
    const now_page = this.now_page;

    this.gridStyleKey = `${corpCode}_${loginCode}_${now_page}`;
  },
  methods: {
    onGridReady(event) {
      // 表格加載完成事件
      this.gridApi = event.api;
      this.columnApi = event.columnApi;
      // event.api.sizeColumnsToFit()
      // event.columnApi.autoSizeColumns()
      if (!event.api.getModel()) {
        // 所有列展示在當前表格頁面
        const allColumnIds = event.columnApi.getAllColumns();
        // event.api.sizeColumnsToFit()
        this.$emit("onGridReady", event);
        // this.gridApi.sizeColumnsToFit();
        event.columnApi.autoSizeColumns(allColumnIds);
      }
    },
    rowDataChanged(event) {
      // event.api.sizeColumnsToFit()// 所有列展示在當前表格頁面
      // const allColumnIds = event.columnApi.getAllColumns()
      // var b =
      // .forEach(function(column) {
      //   allColumnIds.push(column.colId)
      // })
      // event.columnApi.autoSizeColumns(allColumnIds)// 自動調整所有列寬
    },
    onCellClicked(event) {
      // 每個格子的點擊事件
      this.$store.dispatch("onCellClicked", event.value);
      this.$store.commit("GET_CELL_EVENT", event);
      this.$emit("cellClick", event);
      this.$emit("onCellClicked", event);
      if (sessionStorage.getItem("orderStatus") === "ddfcwc") {
        this.gridOptions.suppressClickEdit = true;
      } else {
        this.gridOptions.suppressClickEdit = false;
      }
    },
    cellValueChanged(event) {
      // 網格內容更改事件
      // this.$store.commit('GET_CELL_EVENT', event)
      this.$emit("changedValue", event);
      this.$emit("cellValueChanged", event);
    },
    rowDoubleClicked(event) {
      this.$emit("rowDoubleClicked", event);
      // 雙擊行  事件
      //
      this.$store.commit("SAVE_GRID_DIRECTING", this.$attrs.id);
      this.$store.commit("GET_DOUBLE_CLICKED_EVENT", event);
    },
    rowClicked(event) {
      // 單擊行  事件
      this.$emit("rowClicked", event);
      this.$store.commit("SAVE_GRID_DIRECTING", this.$attrs.id);
      if (this.roleGrid) {
        this.$store.commit("GRID_CLICK_ROW", event.data);
        this.$emit("gridClick");
      } else if (this.peopleGrid) {
        return;
      } else {
        this.$store.commit("GRID_CLICK_ROW", event.data);
        this.$emit("gridClick");
      }
    },
    columnMoved(event) {
      // 列移動事件
      this.$emit("columnMoved", event);
    },
    saveState(value) {
      if (value) {
        // 保存表格樣式
        const columnSendState = {
          colState: this.gridOptions.columnApi.getColumnState(),
          groupState: this.gridOptions.columnApi.getColumnGroupState(),
          sortState: this.gridOptions.api.getSortModel(),
          filterState: this.gridOptions.api.getFilterModel(),
        };
        // this.$store.dispatch('saveGridColumnState', columnSendState)
        localStorage.setItem(
          `${this.gridStyleKey}_${value}`,
          JSON.stringify(columnSendState)
        );
        const saveGridStyle = {
          url: "/tableStyle/save",
          method: "post",
          params: {
            key: `${this.gridStyleKey}_${value}`,
            value: JSON.stringify(columnSendState),
          },
        };
        this.$store.dispatch("get_to_do_tasks", saveGridStyle).then((res) => {
          // 待辦項目
          //
          if (res.success) {
            this.$message({
              type: "success",
              message: "表格樣式保存成功",
            });
          }
        });
      }
    },
    reset(value) {
      if (!value) {
        return false;
      }
      // 恢復自定義表格樣式
      var columnSaveState = JSON.parse(
        localStorage.getItem(`${this.gridStyleKey}_${value}`)
      );
      if (columnSaveState) {
        this.gridOptions.columnApi.setColumnState(columnSaveState.colState);
        this.gridOptions.columnApi.setColumnGroupState(
          columnSaveState.groupState
        );
        this.gridOptions.api.setSortModel(columnSaveState.sortState);
        this.gridOptions.api.setFilterModel(columnSaveState.filterState);
      } else {
        const getGridStyle = {
          url: "/tableStyle/get",
          method: "post",
          params: {
            key: `${this.gridStyleKey}_${value}`,
          },
        };
        this.$store.dispatch("get_to_do_tasks", getGridStyle).then((res) => {
          // 待辦項目
          if (res.data) {
            columnSaveState = JSON.parse(res.data.value);
            if (columnSaveState) {
              this.gridOptions.columnApi.setColumnState(
                columnSaveState.colState
              );
              this.gridOptions.columnApi.setColumnGroupState(
                columnSaveState.groupState
              );
              this.gridOptions.api.setSortModel(columnSaveState.sortState);
              this.gridOptions.api.setFilterModel(columnSaveState.filterState);
              // this.saveState(value)
            }
          }
        });
      }
    },
    restore() {
      // 恢復表格默認樣式
      this.gridOptions.columnApi.resetColumnState();
      this.gridOptions.columnApi.resetColumnGroupState();
      this.gridOptions.api.setSortModel(null);
      this.gridOptions.api.setFilterModel(null);
    },
    onFilterTextBoxChanged() {
      //
      this.gridOptions.api.setQuickFilter(this.searchText);
    },
    edit(index, key) {
      // this.gridOptions.api.setRowData()
      this.gridOptions.api.setFocusedCell(index, key); // 定位焦點
      this.gridOptions.api.startEditingCell({
        // 開始編輯加點行
        rowIndex: index,
        colKey: key,
      });
    },
    stopEdit(event) {
      this.gridOptions.api.stopEditing();
    },
    cellEditingStarted(event) {
      // cell開始編輯
      this.$emit("cellEditingStarted", event);
    },
    cellEditingStopped(event) {
      // cell開始編輯
      this.$emit("cellEditingStopped", event);
    },
    rowValueChanged(event) {
      // 行內的值發生變化
      this.$store.commit("ROW_VALUE_CHANGED_DATA", event.data);
      this.$emit("childRowchanged", event);
      this.$emit("rowValueChanged", event);
    },
    isFirstColumn(params) {
      // var displayedColumns = this.gridOptions.columnApi.getAllDisplayedColumns()
      // var thisIsFirstColumn = displayedColumns[0] === this.gridOptions.column
      // return thisIsFirstColumn
    },
    addNewRow() {},
    rowSelected(params) {
      // row選擇事件回調
      const selectdNodes = params.api.getSelectedNodes();
      const id = this.$el.id;
      selectdNodes.gridId = id;
      this.selectdNodes = selectdNodes;
      // console.log("selectdNodes");
      // console.log(selectdNodes);
      this.$store.commit("GRID_SELECT_ROW", selectdNodes);
      this.$emit("rowSelected", params);
    },
    bodyScroll(event) {
      this.$emit("bodyScroll", event);
      // if (event.direction === 'horizontal' && event.left % 300 === 0) {
      //   event.columnApi.autoSizeColumns()
      //   var allColumnIds = []
      //   event.columnApi.getAllColumns().forEach(function(column) {
      //     allColumnIds.push(column.colId)
      //   })
      //   event.columnApi.autoSizeColumns(allColumnIds)// 自動調整所有列寬
      // }
    },
    cellMouseOver(event) {
      this.$emit("cellMouseOver1", event);
    },
    editClick(event) {
      // console.log(123);
      // console.log(event);
    },
  },
};
</script>

<style rel="stylesheet/scss" lang="scss" scoped>
</style>

  父組件調用

          <ag-grid :gridParameter="gridParameter" :searchText="searchInput"></ag-grid>


import agGrid from "@/components/AgGrid/index.vue";
components: {
    agGrid,
  },

      gridParameter: {
        style: {
          //表格樣式
          height: "calc(100% - 165px)",
          width: "100%",
        },
        columnDefs: [
          //每列
          {
            headerName: "數據來源",
            field: "sourceFrom",
            width: 120,
          },
          {
            headerName: "公司名稱",
            field: "companyname",
            width: 150,
          },
          {
            headerName: "網點名",
            field: "netsite",
            width: 100,
          },
          {
            headerName: "車輛線路起點",
            field: "bsite",
            width: 120,
          },
          {
            headerName: "車輛線路終點",
            field: "esite",
            width: 120,
          },
          {
            headerName: "裝車時間",
            field: "loadingTime",
            width: 100,
          },
          {
            headerName: "實際發車時間",
            field: "sendtime",
            width: 120,
          },
          {
            headerName: "車牌號",
            field: "carnumber",
            width: 100,
          },
          {
            headerName: "掛車牌號",
            field: "trailernumer",
            width: 100,
          },
          {
            headerName: "司機手機號",
            field: "drivertel",
            width: 100,
          },
          {
            headerName: "裝車件數",
            field: "orderCount",
            width: 100,
          },
          {
            headerName: "總件數",
            field: "qty",
            width: 100,
          },
          {
            headerName: "重量",
            field: "weight",
            width: 100,
          },
          {
            headerName: "體積",
            field: "vol",
            width: 100,
          },
          {
            headerName: "運輸費合計",
            field: "transfee",
            width: 100,
          },
          {
            headerName: "批次狀態",
            field: "batchState",
            width: 100,
          },
          {
            headerName: "托運單號",
            field: "billNo",
            width: 100,
          },
          {
            headerName: "發車批次",
            field: "batchNo",
            width: 100,
          },
          {
            headerName: "網點地址(省)",
            field: "netProvince",
            width: 150,
          },
          {
            headerName: "網點地址(市)",
            field: "netCity",
            width: 150,
          },
          {
            headerName: "網點地址(區)",
            field: "netDistrict",
            width: 150,
          },
          {
            headerName: "到達時間",
            field: "arrivedTime",
            width: 100,
          },
          {
            headerName: "實際運費",
            field: "actualFreight",
            width: 100,
          },
          {
            headerName: "單車毛利",
            field: "profit",
            width: 100,
          },
          {
            headerName: "現付運輸費",
            field: "handTransitFee",
            width: 100,
          },
          {
            headerName: "現付油卡費",
            field: "handCardFee",
            width: 100,
          },
          {
            headerName: "回車運輸費",
            field: "retTransitFee",
            width: 100,
          },
          {
            headerName: "整車信息費",
            field: "vehicleInfoFee",
            width: 100,
          },
          {
            headerName: "到付油卡費",
            field: "payCardFee",
            width: 100,
          },
          {
            headerName: "車輛核載",
            field: "vehicleBorne",
            width: 100,
          },
          {
            headerName: "原始單號",
            field: "originalDocumentNumber",
            width: 100,
          },
          {
            headerName: "統一社會信用代碼",
            field: "socialCreditIdentifier",
            width: 150,
          },
          {
            headerName: "許可證編號",
            field: "permitNumber",
            width: 100,
          },
          {
            headerName: "業務類型代碼",
            field: "businesstypeCode",
            width: 120,
          },
          {
            headerName: "發運實際日期",
            field: "goodsReceiptdatetime",
            width: 120,
          },
          {
            headerName: "發貨人",
            field: "consignor",
            width: 100,
          },
          {
            headerName: "發貨人個人證件號",
            field: "rpersonalIdentity",
            width: 150,
          },
          {
            headerName: "發貨方-國家行政區划代碼",
            field: "rcountrySubdivisioncode",
            width: 180,
          },
          {
            headerName: "收貨人",
            field: "consignee",
            width: 100,
          },
          {
            headerName: "收貨方-國家行政區划代碼",
            field: "ecountrySubdivisioncode",
            width: 180,
          },
          {
            headerName: "牌照類型代碼",
            field: "licenseplatetypecode",
            width: 120,
          },
          {
            headerName: "車輛分類代碼",
            field: "vehicleClassificationCode",
            width: 120,
          },
          {
            headerName: "道路運輸證號",
            field: "roadtranscertnumber",
            width: 120,
          },
          {
            headerName: "所有人",
            field: "owner",
            width: 100,
          },
          {
            headerName: "姓名",
            field: "nameofperson",
            width: 100,
          },
          {
            headerName: "從業資格證號",
            field: "quaCertNumber",
            width: 100,
          },
          {
            headerName: "貨物名稱",
            field: "descriptionofgoods",
            width: 100,
          },
          {
            headerName: "貨物類型分類代碼",
            field: "cargotypeClassCode",
            width: 150,
          },
        ],
        isRowSelectable: function (rowNode) {
          return rowNode.data ? rowNode.data.roleCode != "sysAdmin" : false;
        },
        defaultColDef: {
          singleClickEdit: true,
          editable: false, // 開啟網格編輯功能
          headerCheckboxSelection: function (params) {
            var displayedColumns = params.columnApi.getAllDisplayedColumns();
            var thisIsFirstColumn = displayedColumns[0] === params.column;
            return thisIsFirstColumn;
          },
          checkboxSelection: function (params) {
            var displayedColumns = params.columnApi.getAllDisplayedColumns();
            var thisIsFirstColumn = displayedColumns[0] === params.column;
            return thisIsFirstColumn;
          },
        },
// 后端數據
        rowData: [],
      },

備注:

gridOption:表格配置
columnDefs:表格列設置
rowData:表格數據


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM