1
huangxiaoqiang
昨天 a296223898d61a9838bbd35ed75c87575e308a36
ÏîÄ¿´úÂë/WMS/WIDESEA_WMSClient/src/components/basic/ViewGrid/ViewGrid.vue
@@ -2,29 +2,17 @@
  <div class="layout-container">
    <a :href="exportHref" ref="export"></a>
    <!--开启懒加载2020.12.06 -->
    <vol-box
      :on-model-close="closeCustomModel"
      v-model="viewModel"
      :height="520"
      :width="500"
      :padding="0"
      :lazy="true"
      title="设置"
    >
    <vol-box :on-model-close="closeCustomModel" v-model="viewModel" :height="520" :width="500" :padding="0" :lazy="true"
      title="设置">
      <template #content>
        <custom-column :view-columns="viewColumns"></custom-column>
      </template>
      <template #footer>
        <div style="text-align: center">
          <el-button type="default" size="small" @click="closeCustomModel"
            ><i class="el-icon-close"></i>取消</el-button
          >
          <el-button type="success" size="small" @click="initViewColumns(true)"
            ><i class="el-icon-refresh"></i>重置</el-button
          >
          <el-button type="primary" size="small" @click="saveColumnConfig"
            ><i class="el-icon-check"></i>确定</el-button
          >
          <el-button type="default" size="small" @click="closeCustomModel"><i class="el-icon-close"></i>取消</el-button>
          <el-button type="success" size="small" @click="initViewColumns(true)"><i
              class="el-icon-refresh"></i>重置</el-button>
          <el-button type="primary" size="small" @click="saveColumnConfig"><i class="el-icon-check"></i>确定</el-button>
        </div>
      </template>
    </vol-box>
@@ -34,28 +22,13 @@
    <!--2020.10.31添加导入前的方法-->
    <!--开启懒加载2020.12.06 -->
    <!-- 2022.01.08增加明细表导入判断 -->
    <vol-box
      v-if="upload.url"
      v-model="upload.excel"
      :height="350"
      :width="600"
      :lazy="true"
      :title="(boxModel ? detailOptions.cnName : table.cnName) + '-导入'"
    >
      <UploadExcel
        ref="upload_excel"
        @importExcelAfter="importExcelAfter"
        :importExcelBefore="importExcelBefore"
        :url="upload.url"
        :template="upload.template"
      ></UploadExcel>
    <vol-box v-if="upload.url" v-model="upload.excel" :height="350" :width="600" :lazy="true"
      :title="(boxModel ? detailOptions.cnName : table.cnName) + '-导入'">
      <UploadExcel ref="upload_excel" @importExcelAfter="importExcelAfter" :importExcelBefore="importExcelBefore"
        :url="upload.url" :template="upload.template"></UploadExcel>
    </vol-box>
    <!--头部自定义组件-->
    <component
      :is="dynamicComponent.gridHeader"
      ref="gridHeader"
      @parentCall="parentCall"
    ></component>
    <component :is="dynamicComponent.gridHeader" ref="gridHeader" @parentCall="parentCall"></component>
    <!--主界面查询与table表单布局-->
    <div class="view-container">
      <!-- 2020.09.11增加固定查询表单 -->
@@ -63,15 +36,8 @@
      <div class="grid-search">
        <div :class="[fiexdSearchForm ? 'fiexd-search-box' : 'search-box']" v-show="searchBoxShow">
          <!-- 2020.09.13增加formFileds拼写错误兼容处理 -->
          <vol-form
            ref="searchForm"
            :load-key="false"
            style="padding: 0 15px"
            :label-width="labelWidth"
            :formRules="searchFormOptions"
            :formFields="searchFormFields"
            :select2Count="select2Count"
          >
          <vol-form ref="searchForm" :load-key="false" style="padding: 0 15px" :label-width="labelWidth"
            :formRules="searchFormOptions" :formFields="searchFormFields" :select2Count="select2Count">
            <template #footer>
              <div v-if="!fiexdSearchForm" class="form-closex">
                <el-button size="small" type="primary" plain @click="search">
@@ -99,15 +65,9 @@
          </div>
          <!--快速查询字段-->
          <div class="search-line" v-if="!fiexdSearchForm && !searchBoxShow">
            <QuickSearch
              v-if="singleSearch"
              :searchFormOptions="searchFormOptions"
              :searchFormFields="searchFormFields"
              :select2Count="select2Count"
              :label-width="labelWidth"
              :queryFields="queryFields"
              @tiggerPress="quickSearchKeyPress"
            ></QuickSearch>
            <QuickSearch v-if="singleSearch" :searchFormOptions="searchFormOptions" :searchFormFields="searchFormFields"
              :select2Count="select2Count" :label-width="labelWidth" :queryFields="queryFields"
              @tiggerPress="quickSearchKeyPress"></QuickSearch>
          </div>
          <!--操作按钮组-->
          <!-- 2020.11.29增加查询界面hidden属性 -->
@@ -116,8 +76,7 @@
            <template :key="bIndex" v-for="(btn, bIndex) in buttons.slice(0, maxBtnLength)">
              <el-dropdown size="small" v-if="btn.data" :split-button="false">
                <el-button :color="btn.color" :dark="false" :type="btn.type" :plain="btn.plain">
                  {{ btn.name }}<i class="el-icon-arrow-down el-icon--right"></i
                ></el-button>
                  {{ btn.name }}<i class="el-icon-arrow-down el-icon--right"></i></el-button>
                <template #dropdown>
                  <el-dropdown-menu>
                    <el-dropdown-item v-for="(item, index) in btn.data" :key="index">
@@ -129,28 +88,13 @@
                  </el-dropdown-menu>
                </template>
              </el-dropdown>
              <el-button
                v-else
                :type="btn.type"
                size="small"
                :color="btn.color"
                :dark="false"
                :class="btn.class"
                :plain="btn.plain"
                v-show="!btn.hidden"
                @click="onClick(btn.onClick)"
              >
              <el-button v-else :type="btn.type" size="small" :color="btn.color" :dark="false" :class="btn.class"
                :plain="btn.plain" v-show="!btn.hidden" @click="onClick(btn.onClick)">
                <i :class="btn.icon"></i> {{ btn.name }}
              </el-button>
            </template>
            <el-button
              type="default"
              style="padding: 0px 10px"
              size="small"
              :plain="true"
              v-if="showCustom"
              @click="showCustomModel"
            >
            <el-button type="default" style="padding: 0px 10px" size="small" :plain="true" v-if="showCustom"
              @click="showCustomModel">
              <i class="el-icon-s-grid"></i>
            </el-button>
            <el-dropdown size="small" @click="changeDropdown" v-if="buttons.length > maxBtnLength">
@@ -159,15 +103,9 @@
              </el-button>
              <template #dropdown>
                <el-dropdown-menu>
                  <el-dropdown-item
                    @click="changeDropdown(item.name)"
                    :name="item.name"
                    v-show="!item.hidden"
                    v-for="(item, dIndex) in buttons.slice(maxBtnLength, buttons.length)"
                    :key="dIndex"
                  >
                    <i :class="item.icon"></i> {{ item.name }}</el-dropdown-item
                  >
                  <el-dropdown-item @click="changeDropdown(item.name)" :name="item.name" v-show="!item.hidden"
                    v-for="(item, dIndex) in buttons.slice(maxBtnLength, buttons.length)" :key="dIndex">
                    <i :class="item.icon"></i> {{ item.name }}</el-dropdown-item>
                </el-dropdown-menu>
              </template>
            </el-dropdown>
@@ -175,54 +113,27 @@
        </div>
        <!-- åˆ†å‰²ä½ç½® -->
        <vol-box
          v-if="boxInit"
          v-model="boxModel"
          :title="boxOptions.title"
          :width="boxOptions.width"
          :height="boxOptions.height"
          :modal="boxOptions.modal"
          :draggable="boxOptions.draggable"
          :padding="0"
          :on-model-close="onGridModelClose"
          @fullscreen="fullscreen"
        >
        <vol-box v-if="boxInit" v-model="boxModel" :title="boxOptions.title" :width="boxOptions.width"
          :height="boxOptions.height" :modal="boxOptions.modal" :draggable="boxOptions.draggable" :padding="0"
          :on-model-close="onGridModelClose" @fullscreen="fullscreen">
          <!--明细头部自定义组件-->
          <template #content>
            <div class="box-com vol-edit-box">
              <div class="vol-edit-content">
                <component
                  :is="dynamicComponent.modelHeader"
                  ref="modelHeader"
                  @parentCall="parentCall"
                ></component>
                <component :is="dynamicComponent.modelHeader" ref="modelHeader" @parentCall="parentCall"></component>
                <!-- <div v-show="isBoxAudit" class="flow-step">
                <div v-for="(item, index) in workFlowSteps" :key="index">
                  {{ item.stepName }}
                </div>
              </div> -->
                <div class="item form-item">
                  <vol-form
                    ref="form"
                    :editor="editor"
                    :load-key="false"
                    :label-width="boxOptions.labelWidth"
                    :formRules="editFormOptions"
                    :formFields="editFormFields"
                    :select2Count="select2Count"
                  ></vol-form>
                  <vol-form ref="form" :editor="editor" :load-key="false" :label-width="boxOptions.labelWidth"
                    :formRules="editFormOptions" :formFields="editFormFields" :select2Count="select2Count"></vol-form>
                </div>
                <!--明细body自定义组件-->
                <component
                  :is="dynamicComponent.modelBody"
                  ref="modelBody"
                  @parentCall="parentCall"
                ></component>
                <div
                  v-show="hasDetail"
                  v-if="detail.columns && detail.columns.length > 0"
                  class="grid-detail table-item item"
                >
                <component :is="dynamicComponent.modelBody" ref="modelBody" @parentCall="parentCall"></component>
                <div v-show="hasDetail" v-if="detail.columns && detail.columns.length > 0"
                  class="grid-detail table-item item">
                  <div class="toolbar">
                    <div class="title form-text">
                      <span>
@@ -232,57 +143,26 @@
                    </div>
                    <!--明细表格按钮-->
                    <div class="btns" v-show="!isBoxAudit">
                      <el-button
                        v-for="(btn, bIndex) in detailOptions.buttons"
                        :key="bIndex"
                        :plain="btn.plain"
                        v-show="!(typeof btn.hidden == 'boolean' && btn.hidden)"
                        @click="onClick(btn.onClick)"
                        size="small"
                        ><i :class="btn.icon"></i>{{ btn.name }}</el-button
                      >
                      <el-button v-for="(btn, bIndex) in detailOptions.buttons" :key="bIndex" :plain="btn.plain"
                        v-show="!(typeof btn.hidden == 'boolean' && btn.hidden)" @click="onClick(btn.onClick)"
                        size="small"><i :class="btn.icon"></i>{{ btn.name }}</el-button>
                    </div>
                  </div>
                  <vol-table
                    ref="detail"
                    @loadBefore="loadInternalDetailTableBefore"
                    @loadAfter="loadDetailTableAfter"
                    @rowChange="detailRowOnChange"
                    @rowClick="detailRowOnClick"
                    :url="detailOptions.url"
                    :load-key="false"
                    :index="true"
                    :tableData="detailOptions.data"
                    :columns="detailOptions.columns"
                    :pagination="detailOptions.pagination"
                    :height="detailOptions.height"
                    :single="detailOptions.single"
                    :pagination-hide="detailOptions.paginationHide"
                    :defaultLoadPage="detailOptions.load"
                    :beginEdit="detailOptions.beginEdit"
                    :endEditBefore="detailOptions.endEditBefore"
                    :endEditAfter="detailOptions.endEditAfter"
                    :double-edit="detailOptions.doubleEdit"
                    :column-index="detailOptions.columnIndex"
                    :ck="detailOptions.ck"
                    :text-inline="detailOptions.textInline"
                    :select2Count="select2Count"
                    :selectable="detailSelectable"
                    :spanMethod="detailSpanMethod"
                  ></vol-table>
                  <vol-table ref="detail" @loadBefore="loadInternalDetailTableBefore" @loadAfter="loadDetailTableAfter"
                    @rowChange="detailRowOnChange" @rowClick="detailRowOnClick" :url="detailOptions.url" :load-key="false"
                    :index="true" :tableData="detailOptions.data" :columns="detailOptions.columns"
                    :pagination="detailOptions.pagination" :height="detailOptions.height" :single="detailOptions.single"
                    :pagination-hide="detailOptions.paginationHide" :defaultLoadPage="detailOptions.load"
                    :beginEdit="detailOptions.beginEdit" :endEditBefore="detailOptions.endEditBefore"
                    :endEditAfter="detailOptions.endEditAfter" :double-edit="detailOptions.doubleEdit"
                    :column-index="detailOptions.columnIndex" :ck="detailOptions.ck"
                    :text-inline="detailOptions.textInline" :select2Count="select2Count" :selectable="detailSelectable"
                    :spanMethod="detailSpanMethod"></vol-table>
                </div>
                <component
                  :is="dynamicComponent.modelFooter"
                  ref="modelFooter"
                  @parentCall="parentCall"
                ></component>
                <component :is="dynamicComponent.modelFooter" ref="modelFooter" @parentCall="parentCall"></component>
              </div>
              <div class="vol-edit-box-right">
                <component
                  :is="dynamicComponent.modelRight"
                  ref="modelRight"
                  @parentCall="parentCall"
                ></component>
                <component :is="dynamicComponent.modelRight" ref="modelRight" @parentCall="parentCall"></component>
              </div>
            </div>
          </template>
@@ -291,26 +171,14 @@
              <el-button size="small" type="primary" plain @click="onGridModelClose(false)">
                <i class="el-icon-close">关闭</i>
              </el-button>
              <el-button
                size="small"
                type="primary"
                v-show="auditParam.showViewButton"
                @click="auditParam.model = true"
              >
              <el-button size="small" type="primary" v-show="auditParam.showViewButton" @click="auditParam.model = true">
                <i class="el-icon-view">审批</i>
              </el-button>
            </div>
            <div v-show="!isBoxAudit">
              <el-button
                v-for="(btn, bIndex) in boxButtons"
                :key="bIndex"
                :type="btn.type"
                size="small"
                :plain="btn.plain"
                v-show="!(typeof btn.hidden == 'boolean' && btn.hidden)"
                :disabled="btn.hasOwnProperty('disabled') && !!btn.disabled"
                @click="onClick(btn.onClick)"
              >
              <el-button v-for="(btn, bIndex) in boxButtons" :key="bIndex" :type="btn.type" size="small"
                :plain="btn.plain" v-show="!(typeof btn.hidden == 'boolean' && btn.hidden)"
                :disabled="btn.hasOwnProperty('disabled') && !!btn.disabled" @click="onClick(btn.onClick)">
                <i :class="btn.icon"></i>{{ btn.name }}
              </el-button>
              <el-button size="small" type="primary" plain @click="onGridModelClose(false)">
@@ -322,61 +190,26 @@
      </div>
      <!--body自定义组件-->
      <div class="grid-body">
        <component
          :is="dynamicComponent.gridBody"
          ref="gridBody"
          @parentCall="parentCall"
        ></component>
        <component :is="dynamicComponent.gridBody" ref="gridBody" @parentCall="parentCall"></component>
      </div>
      <!--table表格-->
      <div class="grid-container">
        <!-- 2021.05.02增加树形结构 rowKey -->
        <vol-table
          ref="table"
          :single="single"
          :rowKey="rowKey"
          :loadTreeChildren="loadTreeTableChildren"
          @loadBefore="loadTableBefore"
          @loadAfter="loadTableAfter"
          @rowChange="rowOnChange"
          @rowClick="rowOnClick"
          @rowDbClick="rowOnDbClick"
          @selectionChange="selectionOnChange"
          :tableData="[]"
          :linkView="linkData"
          :columns="columns"
          :pagination="pagination"
          :height="height"
          :max-height="tableMaxHeight"
          :pagination-hide="paginationHide"
          :url="url"
          :load-key="false"
          :defaultLoadPage="load"
          :double-edit="doubleEdit"
          :index="doubleEdit"
          :beginEdit="tableBeginEdit"
          :endEditBefore="tableEndEditBefore"
          :column-index="columnIndex"
          :text-inline="textInline"
          :ck="ck"
          :select2Count="select2Count"
          :selectable="selectable"
          :spanMethod="spanMethod"
          :lazy="lazy"
          :defaultExpandAll="defaultExpandAll"
          :expandRowKeys="expandRowKeys"
          :rowParentField="rowParentField"
        ></vol-table>
        <vol-table ref="table" :single="single" :rowKey="rowKey" :loadTreeChildren="loadTreeTableChildren"
          @loadBefore="loadTableBefore" @loadAfter="loadTableAfter" @rowChange="rowOnChange" @rowClick="rowOnClick"
          @rowDbClick="rowOnDbClick" @selectionChange="selectionOnChange" :tableData="[]" :linkView="linkData"
          :columns="columns" :pagination="pagination" :height="height" :max-height="tableMaxHeight"
          :pagination-hide="paginationHide" :url="url" :load-key="false" :defaultLoadPage="load" :double-edit="doubleEdit"
          :index="doubleEdit" :beginEdit="tableBeginEdit" :endEditBefore="tableEndEditBefore" :column-index="columnIndex"
          :text-inline="textInline" :ck="ck" :select2Count="select2Count" :selectable="selectable"
          :spanMethod="spanMethod" :lazy="lazy" :defaultExpandAll="defaultExpandAll" :expandRowKeys="expandRowKeys"
          :rowParentField="rowParentField"></vol-table>
      </div>
    </div>
    <!--footer自定义组件-->
    <component
      :is="dynamicComponent.gridFooter"
      ref="gridFooter"
      @parentCall="parentCall"
    ></component>
    <component :is="dynamicComponent.gridFooter" ref="gridFooter" @parentCall="parentCall"></component>
  </div>
</template>