dangsn
2024-12-03 f31d6505363fa191fb715976826369484c26cf16
Source/plt-web/plt-web-ui/src/components/dynamic-components/dynamic-table.vue
@@ -4,15 +4,15 @@
               v-model="form"
               :data="tableList"
               :option="option"
               :page.sync="pageType"
               :page.sync="componentVO.uiComponentType == 'TreeTable'?{}:pageType"
               :table-loading="loading"
               @on-load="onLoad"
               @search-reset="searchReset"
               @search-change='searchChange'
               @refresh-change="handleRefresh"
               @current-change="currentChange"
               @size-change="sizeChange"
               @row-click="rowClickChange"
               @search-change='searchChange'
               @filter="filterChange"
               @selection-change="selectChange">
      <!--top区域按钮-->
@@ -57,6 +57,14 @@
          <el-button icon="el-icon-refresh" circle @click="$refs.dataTable.refreshChange()"
                     :size="scope.size"></el-button>
        </el-tooltip>
      </template>
      <template #icon="{ row }">
          <span class="avue-icon avue-icon--small">
            <svg v-if="row.icon && row.icon.indexOf('#')==0" aria-hidden="true">
              <use :xlink:href="row.icon"></use>
            </svg>
            <i v-else :class="row.icon"></i>
          </span>
      </template>
    </avue-crud>
  </div>
@@ -203,7 +211,7 @@
    isShow: {
      handler(newval) {
        if (newval && this.$el.clientHeight > 50) {
          this.parentHeight = this.$el.clientHeight - this.$children[0].$children[1].$children[0].$el.clientHeight - this.$children[0].$children[2].$el.clientHeight - 5;
          this.parentHeight = this.$el.clientHeight - this.$children[0].$children[1].$children[0].$el.clientHeight - (this.$children[0].$children[2].$el.clientHeight || 57) - 5;
        }
        if(newval){
          this.handleRefresh();
@@ -226,10 +234,10 @@
    },
    'sourceData':{
      handler(newval) {
        if(newval) {
        if(newval && Object.keys(newval).length>0) {
          this.sourceDataMapParams=this.sourceDataMap();
          this.getParams();
          // this.handleRefresh();
          this.handleRefresh();
        }
      },
      deep: true,
@@ -262,6 +270,7 @@
      const queryFields = !validatenull(this.currentDefineVO.queryColumns) ? this.currentDefineVO.queryColumns.map(item => item.field) : [];
      return this.currentDefineVO.cols[0].map(item => {
        const search = queryFields.includes(item.field); // 判断 field 是否在 queryColumns 里
        item.type = this.columnType[item.fieldType] || item.fieldType;
        if (this.currentDefineVO.btmType == 'fileobject' && item.field == 'name') {
          //是文件
          item.formatter = function (d) {
@@ -272,38 +281,57 @@
        if (typeof formatter == "string" && formatter != '') {
          formatter = eval("(" + formatter + ")");
        }
        item.type = this.columnType[item.fieldType] || item.fieldType;
        if (['date', 'datetime', 'time'].includes(item.type)) {
          item.valueFormat = item.dateFormate;
          item.format = item.dateFormate;
        }
        return {
          ...item,
          prop: item.field,
          label: item.title,
          search: search,
          formatter: formatter
          formatter: formatter,
          overHidden: true
        };
      });
    },
    sourceDataMap: function () {
      const sourceDataMap = {};
      if (Object.keys(this.sourceData).length>0) {
        if(this.sourceData.oid ) {
          if (this.sourceData.oid.indexOf('@vcitreesep@') > -1) {
            this.sourceData.oid = this.sourceData.oid.split('@vcitreesep@')[1];
        if(this.sourceData.part && Object.keys(this.sourceData.part).length>0){
          //说明源数据是树节点
          if(this.sourceData.part.oid ) {
            if (this.sourceData.part.oid.indexOf('@vcitreesep@') > -1) {
              this.sourceData.part.oid = this.sourceData.oid.split('@vcitreesep@')[1];
            }
            sourceDataMap.sourceBtmName = this.sourceBtmType;
            sourceDataMap.sourceOid = this.sourceData.part.oid;
          }
          sourceDataMap.sourceBtmName = this.sourceBtmType;;
          sourceDataMap.sourceOid = this.sourceData.oid;
        }else {
          if(this.sourceData.oid ) {
            if (this.sourceData.oid.indexOf('@vcitreesep@') > -1) {
              this.sourceData.oid = this.sourceData.oid.split('@vcitreesep@')[1];
            }
            sourceDataMap.sourceBtmName = this.sourceBtmType;
            sourceDataMap.sourceOid = this.sourceData.oid;
          }
        }
        for (let i in this.sourceData) {
          const item = this.sourceData[i]
          if (item && item.constructor === Object) continue;
          if (i == 'type' || i == 'context' || i == 'content') continue;
          sourceDataMap['sourceData["' + i + '"]'] = item
          if (['type', 'context', 'content', 'querytemplate', 'querytype'].includes(i)) continue;
          if (item && item.constructor === Object) {
            sourceDataMap['sourceData["' + i + '"]'] = JSON.stringify(item)
          }else {
            sourceDataMap['sourceData["' + i + '"]'] = item
          }
        }
      }
      if (Object.keys(this.paramVOS).length>0) {
        for (let j in this.paramVOS) {
          if (this.paramVOS[j] && this.paramVOS[j].constructor === Object) continue;
          if (j == 'type' || j == 'context' || j == 'content' || j == "getdataurl" || j == "getdatamethod" || j == "url" || j == "method" || j == "uploadfileurl" || j == "title") continue;
          if (['type', 'context', 'content', "getdataurl", "getdatamethod", "url", "method", "uploadfileurl", "title", 'querytemplate', 'querytype', 'usesourcedata','component'].includes(j)) continue;
          sourceDataMap['sourceData["' + j + '"]'] = this.paramVOS[j]
        }
      }