wangting
2024-04-15 81bb118e00f8d5ee081795d142e539de50953518
列表查询
已修改10个文件
807 ■■■■■ 文件已修改
Source/ProjectWeb/src/api/base/ui.js 14 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/ProjectWeb/src/components/dynamic-components/dynamic-TreeTable.vue 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/ProjectWeb/src/components/dynamic-components/dynamic-custom.vue 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/ProjectWeb/src/components/dynamic-components/dynamic-form.vue 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/ProjectWeb/src/components/dynamic-components/dynamic-table.vue 582 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/ProjectWeb/src/components/dynamic-components/dynamic-tree.vue 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/ProjectWeb/src/components/dynamic-components/index.vue 31 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/ProjectWeb/src/views/base/UIContentArea.vue 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/ProjectWeb/src/views/base/UIContentViewer.vue 59 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/ProjectWeb/src/views/base/UIContentViewerInDialog.vue 63 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/ProjectWeb/src/api/base/ui.js
@@ -10,14 +10,14 @@
}
//UI上下文列表查询
export const getList = (current, size, params) => {
export const getList = (page, limit, params) => {
  return request({
    url: '/api/uiDataController/dataGridQuery',
    method: 'get',
    params: {
    method: 'post',
    data: {
      ...params,
      current,
      size,
      page,
      limit,
    }
  })
}
@@ -26,8 +26,8 @@
export const getTree = (parentCode, params) => {
  return request({
    url: '/api/uiDataController/getDataForTree',
    method: 'get',
    params: {
    method: 'post',
    data: {
      ...params,
      parentCode
    }
Source/ProjectWeb/src/components/dynamic-components/dynamic-TreeTable.vue
@@ -30,6 +30,14 @@
export default {
  name: "dynamic-TreeTable",
  props: {
    //ui上下文的业务类型(或链接类型)
    uiBtmType: {
      type: String
    },
    //ui上下文
    uiContext:{
      type: String
    },
    componentVO: {
      type: Object,
      default: {}
Source/ProjectWeb/src/components/dynamic-components/dynamic-custom.vue
@@ -33,6 +33,14 @@
    'test2': () => import('@/views/custom-ui/test2'),
  },
  props: {
    //ui上下文的业务类型(或链接类型)
    uiBtmType: {
      type: String
    },
    //ui上下文
    uiContext:{
      type: String
    },
    componentVO: {
      type: Object,
      default: {}
Source/ProjectWeb/src/components/dynamic-components/dynamic-form.vue
@@ -48,6 +48,14 @@
  name: "dynamic-form",
  components: {VciWebRefer},
  props: {
    //ui上下文的业务类型(或链接类型)
    uiBtmType: {
      type: String
    },
    //ui上下文
    uiContext:{
      type: String
    },
    componentVO: {
      type: Object,
      default: {}
Source/ProjectWeb/src/components/dynamic-components/dynamic-table.vue
@@ -6,6 +6,11 @@
               :option="option"
               :page.sync="pageType"
               :table-loading="loading"
               @on-load="onLoad"
               @search-reset="searchReset"
               @refresh-change="handleRefresh"
               @current-change="currentChange"
               @size-change="sizeChange"
               @row-click="rowClickChange"
               @search-change='searchChange'
               @selection-change="selectChange">
@@ -31,6 +36,14 @@
export default {
  name: "dynamic-table",
  props: {
    //ui上下文的业务类型(或链接类型)
    uiBtmType: {
      type: String
    },
    //ui上下文
    uiContext:{
      type: String
    },
    componentVO: {
      type: Object,
      default: {}
@@ -47,6 +60,10 @@
      //菜单源数据或者弹窗时按钮所属区域的上一区域选中数据
      type: Object,
      default: {}
    },
    //上一区域业务类型
    sourceBtmType:{
      type: String
    },
    paramVOS: {
      type: Object,
@@ -70,413 +87,21 @@
    return {
      parentHeight: '100%',//当前组件根节点元素高度
      form: {},
      query:{},
      loading: false,
      page: {
        pageSize: 10,
        currentPage: 1,
        total: 50,
        total: 0,
      },
      simplePage: {
        currentPage: 1,
        total: 100,
        total: 0,
        pagerCount: 4,
        layout: "prev, pager, next"
      },
      //表格数据
      tableList: [
        {
          code: "20220102",
          lastmodifier: "jhming",
          revisionseq: "1",
          versionvalue: "1",
          description: "",
          oid: "2E66D17B-E3E6-4725-BB83-93F4A20D4E20",
          versionseq: "1",
          content: "第二次中期评审犹太人",
          checkinby: "",
          revisionrule: "ObjectVersion",
          reviewtypetext: "部门级",
          lctid: "ProcessReviewLC",
          reviewtype: "department",
          lcstatus_text: "编辑中",
          id: "",
          owner: "1",
          checkoutby: "",
          creator: "1",
          createtime: "2022-01-13 13:58:43.035",
          isfirstv: "1",
          lastmodifier_name: "姜红明",
          revisionoid: "4F400A1B-2313-4B11-894C-4F4F0B01368A",
          btmname: "processreview",
          checkouttime: "",
          revisionvalue: "A",
          versionrule: "0",
          name: "1月评审3",
          islastr: "1",
          lastmodifytime: "2022-07-15 16:04:43.703",
          copyfromversion: "",
          creator_name: "测试",
          nameoid: "CF350DE8-8E6D-470B-B273-4FD78D41BA4A",
          lcstatus: "Editing",
          islastv: "1",
          checkintime: "",
          isfirstr: "1",
          ts: "2022-07-15 16:04:43.703"
        },
        {
          code: "w02",
          lastmodifier: "1",
          revisionseq: "0",
          versionvalue: "1",
          description: "",
          oid: "2f8d94b2-d65a-4f9b-9a71-caa3afd96459",
          versionseq: "0",
          content: "",
          checkinby: "",
          revisionrule: "ObjectVersion",
          reviewtypetext: "部门级",
          lctid: "ProcessReviewLC",
          reviewtype: "department",
          lcstatus_text: "编辑中",
          id: "",
          owner: "1",
          checkoutby: "",
          creator: "1",
          createtime: "2022-02-18 14:35:45.03",
          isfirstv: "1",
          lastmodifier_name: "测试",
          revisionoid: "31612b9f-022d-4b05-a24c-370a0fd457da",
          btmname: "processreview",
          checkouttime: "",
          revisionvalue: "A",
          versionrule: "0",
          name: "web页面测试02",
          islastr: "1",
          lastmodifytime: "2022-02-18 14:35:45.03",
          copyfromversion: "",
          creator_name: "测试",
          nameoid: "dfc0d8a5-ebe7-40f2-af56-fa437d3866e0",
          lcstatus: "Editing",
          islastv: "1",
          checkintime: "",
          isfirstr: "1",
          ts: "2022-02-18 14:35:45.03"
        },
        {
          code: "webt01",
          lastmodifier: "1",
          revisionseq: "0",
          versionvalue: "1",
          description: "",
          oid: "38033242-3cb4-415c-9cc4-acdb86c2ee8f",
          versionseq: "0",
          content: "wbtest123修改后",
          checkinby: "",
          revisionrule: "ObjectVersion",
          reviewtypetext: "部门级",
          lctid: "ProcessReviewLC",
          reviewtype: "department",
          lcstatus_text: "待评审",
          id: "",
          owner: "1",
          checkoutby: "",
          creator: "1",
          createtime: "2022-01-21 10:04:08.053",
          isfirstv: "1",
          lastmodifier_name: "测试",
          revisionoid: "3f3b2112-f356-4809-969b-1e63f6daa08d",
          btmname: "processreview",
          checkouttime: "",
          revisionvalue: "A",
          versionrule: "0",
          name: "web端新增测试01",
          islastr: "1",
          lastmodifytime: "2022-02-09 09:45:56.044",
          copyfromversion: "",
          creator_name: "测试",
          nameoid: "d8975a06-4c1e-462b-af84-093068c58e9e",
          lcstatus: "Waiting",
          islastv: "1",
          checkintime: "",
          isfirstr: "1",
          ts: "2022-02-09 09:45:56.044"
        },
        {
          code: "w017",
          lastmodifier: "1",
          revisionseq: "0",
          versionvalue: "1",
          description: "",
          oid: "4011e1a7-9eb6-4b5c-89bf-847abff56682",
          versionseq: "0",
          content: "",
          checkinby: "",
          revisionrule: "ObjectVersion",
          reviewtypetext: "部门级",
          lctid: "ProcessReviewLC",
          reviewtype: "department",
          lcstatus_text: "编辑中",
          id: "",
          owner: "1",
          checkoutby: "",
          creator: "1",
          createtime: "2022-02-18 14:37:53.247",
          isfirstv: "1",
          lastmodifier_name: "测试",
          revisionoid: "648f5cf8-b42a-4b78-9928-883c94a83081",
          btmname: "processreview",
          checkouttime: "",
          revisionvalue: "A",
          versionrule: "0",
          name: "web页面测试17",
          islastr: "1",
          lastmodifytime: "2022-02-18 14:37:53.247",
          copyfromversion: "",
          creator_name: "测试",
          nameoid: "5d14e204-f085-4be0-9da6-b08c99172f8a",
          lcstatus: "Editing",
          islastv: "1",
          checkintime: "",
          isfirstr: "1",
          ts: "2022-02-18 14:37:53.247"
        },
        {
          code: "w03",
          lastmodifier: "1",
          revisionseq: "0",
          versionvalue: "1",
          description: "",
          oid: "68583bec-b9ca-4321-8b66-a11d2298f51e",
          versionseq: "0",
          content: "",
          checkinby: "",
          revisionrule: "ObjectVersion",
          reviewtypetext: "部门级",
          lctid: "ProcessReviewLC",
          reviewtype: "department",
          lcstatus_text: "编辑中",
          id: "",
          owner: "1",
          checkoutby: "",
          creator: "1",
          createtime: "2022-02-18 14:35:53.177",
          isfirstv: "1",
          lastmodifier_name: "测试",
          revisionoid: "ff85f436-4dd1-498e-9665-44d53e27ac29",
          btmname: "processreview",
          checkouttime: "",
          revisionvalue: "A",
          versionrule: "0",
          name: "web页面测试03",
          islastr: "1",
          lastmodifytime: "2022-02-18 14:35:53.177",
          copyfromversion: "",
          creator_name: "测试",
          nameoid: "e0f20755-6954-4757-911e-7b9929fbe9a2",
          lcstatus: "Editing",
          islastv: "1",
          checkintime: "",
          isfirstr: "1",
          ts: "2022-02-18 14:35:53.177"
        },
        {
          code: "20220102",
          lastmodifier: "jhming",
          revisionseq: "1",
          versionvalue: "1",
          description: "",
          oid: "2E66D17B-E3E6-4725-BB83-93F4A20D4E20",
          versionseq: "1",
          content: "第二次中期评审犹太人",
          checkinby: "",
          revisionrule: "ObjectVersion",
          reviewtypetext: "部门级",
          lctid: "ProcessReviewLC",
          reviewtype: "department",
          lcstatus_text: "编辑中",
          id: "",
          owner: "1",
          checkoutby: "",
          creator: "1",
          createtime: "2022-01-13 13:58:43.035",
          isfirstv: "1",
          lastmodifier_name: "姜红明",
          revisionoid: "4F400A1B-2313-4B11-894C-4F4F0B01368A",
          btmname: "processreview",
          checkouttime: "",
          revisionvalue: "A",
          versionrule: "0",
          name: "1月评审3",
          islastr: "1",
          lastmodifytime: "2022-07-15 16:04:43.703",
          copyfromversion: "",
          creator_name: "测试",
          nameoid: "CF350DE8-8E6D-470B-B273-4FD78D41BA4A",
          lcstatus: "Editing",
          islastv: "1",
          checkintime: "",
          isfirstr: "1",
          ts: "2022-07-15 16:04:43.703"
        },
        {
          code: "w02",
          lastmodifier: "1",
          revisionseq: "0",
          versionvalue: "1",
          description: "",
          oid: "2f8d94b2-d65a-4f9b-9a71-caa3afd96459",
          versionseq: "0",
          content: "",
          checkinby: "",
          revisionrule: "ObjectVersion",
          reviewtypetext: "部门级",
          lctid: "ProcessReviewLC",
          reviewtype: "department",
          lcstatus_text: "编辑中",
          id: "",
          owner: "1",
          checkoutby: "",
          creator: "1",
          createtime: "2022-02-18 14:35:45.03",
          isfirstv: "1",
          lastmodifier_name: "测试",
          revisionoid: "31612b9f-022d-4b05-a24c-370a0fd457da",
          btmname: "processreview",
          checkouttime: "",
          revisionvalue: "A",
          versionrule: "0",
          name: "web页面测试02",
          islastr: "1",
          lastmodifytime: "2022-02-18 14:35:45.03",
          copyfromversion: "",
          creator_name: "测试",
          nameoid: "dfc0d8a5-ebe7-40f2-af56-fa437d3866e0",
          lcstatus: "Editing",
          islastv: "1",
          checkintime: "",
          isfirstr: "1",
          ts: "2022-02-18 14:35:45.03"
        },
        {
          code: "webt01",
          lastmodifier: "1",
          revisionseq: "0",
          versionvalue: "1",
          description: "",
          oid: "38033242-3cb4-415c-9cc4-acdb86c2ee8f",
          versionseq: "0",
          content: "wbtest123修改后",
          checkinby: "",
          revisionrule: "ObjectVersion",
          reviewtypetext: "部门级",
          lctid: "ProcessReviewLC",
          reviewtype: "department",
          lcstatus_text: "待评审",
          id: "",
          owner: "1",
          checkoutby: "",
          creator: "1",
          createtime: "2022-01-21 10:04:08.053",
          isfirstv: "1",
          lastmodifier_name: "测试",
          revisionoid: "3f3b2112-f356-4809-969b-1e63f6daa08d",
          btmname: "processreview",
          checkouttime: "",
          revisionvalue: "A",
          versionrule: "0",
          name: "web端新增测试01",
          islastr: "1",
          lastmodifytime: "2022-02-09 09:45:56.044",
          copyfromversion: "",
          creator_name: "测试",
          nameoid: "d8975a06-4c1e-462b-af84-093068c58e9e",
          lcstatus: "Waiting",
          islastv: "1",
          checkintime: "",
          isfirstr: "1",
          ts: "2022-02-09 09:45:56.044"
        },
        {
          code: "w017",
          lastmodifier: "1",
          revisionseq: "0",
          versionvalue: "1",
          description: "",
          oid: "4011e1a7-9eb6-4b5c-89bf-847abff56682",
          versionseq: "0",
          content: "",
          checkinby: "",
          revisionrule: "ObjectVersion",
          reviewtypetext: "部门级",
          lctid: "ProcessReviewLC",
          reviewtype: "department",
          lcstatus_text: "编辑中",
          id: "",
          owner: "1",
          checkoutby: "",
          creator: "1",
          createtime: "2022-02-18 14:37:53.247",
          isfirstv: "1",
          lastmodifier_name: "测试",
          revisionoid: "648f5cf8-b42a-4b78-9928-883c94a83081",
          btmname: "processreview",
          checkouttime: "",
          revisionvalue: "A",
          versionrule: "0",
          name: "web页面测试17",
          islastr: "1",
          lastmodifytime: "2022-02-18 14:37:53.247",
          copyfromversion: "",
          creator_name: "测试",
          nameoid: "5d14e204-f085-4be0-9da6-b08c99172f8a",
          lcstatus: "Editing",
          islastv: "1",
          checkintime: "",
          isfirstr: "1",
          ts: "2022-02-18 14:37:53.247"
        },
        {
          code: "w03",
          lastmodifier: "1",
          revisionseq: "0",
          versionvalue: "1",
          description: "",
          oid: "68583bec-b9ca-4321-8b66-a11d2298f51e",
          versionseq: "0",
          content: "",
          checkinby: "",
          revisionrule: "ObjectVersion",
          reviewtypetext: "部门级",
          lctid: "ProcessReviewLC",
          reviewtype: "department",
          lcstatus_text: "编辑中",
          id: "",
          owner: "1",
          checkoutby: "",
          creator: "1",
          createtime: "2022-02-18 14:35:53.177",
          isfirstv: "1",
          lastmodifier_name: "测试",
          revisionoid: "ff85f436-4dd1-498e-9665-44d53e27ac29",
          btmname: "processreview",
          checkouttime: "",
          revisionvalue: "A",
          versionrule: "0",
          name: "web页面测试03",
          islastr: "1",
          lastmodifytime: "2022-02-18 14:35:53.177",
          copyfromversion: "",
          creator_name: "测试",
          nameoid: "e0f20755-6954-4757-911e-7b9929fbe9a2",
          lcstatus: "Editing",
          islastv: "1",
          checkintime: "",
          isfirstr: "1",
          ts: "2022-02-18 14:35:53.177"
        },
      ],
      tableList: [],
      option: {
        index: true,
        addBtn: false,
@@ -493,28 +118,20 @@
        column: [],
      },
      selectList: [],
      columnType: {
        text: "input",
        combox: "select",
        truefalse: "switch",
        number: "number",
        textarea: "textarea",
        datetime: "datetime",
        date: "date",
        refer: "refer",
      },
      sourceDataMapParams:{}
    }
  },
  computed: {
    updatedColumns() {
      const queryFields = !validatenull(this.componentVO.tableDefineVO.queryColumns) ? this.componentVO.tableDefineVO.queryColumns.map(item => item.field) : [];
      return this.componentVO.tableDefineVO.cols[0].map(item => {
        const typeValue = item.fieldType === 'text' || item.fieldType === 'combox' ? 'input' : item.fieldType; // 表单Type类型
        const search = queryFields.includes(item.field); // 判断 field 是否在 queryColumns 里
        return {
          align: item.align,
          colspan: item.colspan,
          prop: item.field,
          type: typeValue,
          hidden: item.hidden,
          label: item.title,
          width: item.width,
          search: search
        };
      });
    },
    pageType() {
      return this.areasName === 'westArea' ? this.simplePage : this.page;
    }
@@ -539,11 +156,30 @@
        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;
        }
        if(newval){
          this.handleRefresh();
        }
      }
    },
    'sourceData':{
      handler(newval) {
        if(newval) {
          this.sourceDataMapParams=this.sourceDataMap();
          this.getParams();
          this.handleRefresh();
        }
      }
    }
  },
  created() {
    this.option.column = this.updatedColumns;
    this.getParams();
    this.option.column = this.updatedColumns();
    this.page = {
      pageSize: this.componentVO.tableDefineVO.pageVO ? this.componentVO.tableDefineVO.pageVO.limit : 10,
      currentPage: this.componentVO.tableDefineVO.pageVO? this.componentVO.tableDefineVO.pageVO.page :1,
      total: 0,
      pageSizes:this.componentVO.tableDefineVO.limits || [10, 20, 30, 40, 50, 100]
    };
  },
  mounted() {
    if (this.$el.clientHeight > 50) {
@@ -552,6 +188,96 @@
    }
  },
  methods: {
    updatedColumns: function () {
      const queryFields = !validatenull(this.componentVO.tableDefineVO.queryColumns) ? this.componentVO.tableDefineVO.queryColumns.map(item => item.field) : [];
      return this.componentVO.tableDefineVO.cols[0].map(item => {
        const search = queryFields.includes(item.field); // 判断 field 是否在 queryColumns 里
        if (this.componentVO.tableDefineVO.btmType == 'fileobject' && item.field == 'name') {
          //是文件
          item.formatter = function (d) {
            return '<a class="layui-btn layui-btn-intable"  lay-event="PREVIEW">' + d.name + '</a>'
          }
        }
        let formatter = item.formatter || item.templet;
        if (typeof formatter == "string" && formatter != '') {
          formatter = eval("(" + formatter + ")");
        }
        item.type = this.columnType[item.fieldType] || item.fieldType;
        return {
          ...item,
          prop: item.field,
          label: item.title,
          search: search,
          formatter: formatter
        };
      });
    },
    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];
          }
          sourceDataMap.sourceBtmName = this.sourceBtmType;;
          sourceDataMap.sourceOid = this.sourceData.oid;
        }
        for (let i in this.sourceData) {
          let item = this.sourceData[i]
          if (item && item.constructor === Object) return;
          if (i == 'type' || i == 'context' || i == 'content') return;
          sourceDataMap['sourceData["' + i + '"]'] = item
        }
      }
      return sourceDataMap;
    },
    getParams: function () {
      const tableParams = {
        btmname: this.componentVO.tableDefineVO.btmType,
        btmType:this.componentVO.tableDefineVO.btmType,
        tableDefineId: this.componentVO.tableDefineVO.id,
        componentOid: this.componentVO.oid,
        uiDefineId: this.uiContext,
        linkTypeFlag: this.componentVO.tableDefineVO.linkTypeFlag
      };
      const sourceDataMapList = this.sourceDataMapParams;
      if (this.paramVOS) {
        for (let i in this.paramVOS) {
          let item = this.paramVOS[i]
          if (item && item.constructor === Object) return;
          if (i == 'type' || i == 'context' || i == 'content') return;
          sourceDataMapList['sourceData["' + i + '"]'] = item
        }
      }
      this.params = Object.assign({},tableParams, sourceDataMapList);
    },
    onLoad(page, params = {}) {
      if (Object.keys(this.sourceData).length>0 && this.isShow) {
        this.loading = true;
        getList(page.currentPage, page.pageSize, Object.assign(params, this.params, this.query)).then(res => {
          let data = [];
          if (res.data && res.data.data) {
            data = res.data.data;
            this.page.total = res.data.total;
          } else {
            data = res.data;
            this.page.total = res.total;
          }
          if (!data || data == null) {
            data = [];
          }
          this.tableList = data;
          this.loading = false;
          this.selectionClear();
        }).catch(error => {
          this.$message.error(error);
          this.loading = false;
        });
      }
    },
    rowClickChange(row){
      this.$refs.dataTable.toggleRowSelection(row);
    },
@@ -560,14 +286,32 @@
      this.$emit("setDataStore", {
        area: this.areasName,
        type:this.componentVO.uiComponentType,
        btmType:this.componentVO.tableDefineVO.btmType,
        dataStore:row
      });
    },
    searchChange(form,done){
    currentChange(currentPage) {
      this.page.currentPage = currentPage;
    },
    sizeChange(pageSize) {
      this.page.pageSize = pageSize;
    },
    searchChange(params,done){
      this.query = params;
      this.page.currentPage = 1;
      this.onLoad(this.page);
      done();
    },
    handleRefresh(){
      this.$refs.dataTable.refreshTable();
    searchReset() {
      this.query = {};
      this.onLoad(this.page);
    },
    selectionClear() {
      this.selectionList = [];
      this.$refs.dataTable.toggleSelection();
    },
    handleRefresh() {
      this.onLoad(this.page, this.query);
    }
  }
}
Source/ProjectWeb/src/components/dynamic-components/dynamic-tree.vue
@@ -31,6 +31,14 @@
export default {
  name: "dynamic-tree",
  props:{
    //ui上下文的业务类型(或链接类型)
    uiBtmType: {
      type: String
    },
    //ui上下文
    uiContext:{
      type: String
    },
    componentVO:{
      type:Object,
      default: {}
@@ -47,6 +55,10 @@
      //菜单源数据或者弹窗时按钮所属区域的上一区域选中数据
      type:Object,
      default: {}
    },
    //上一区域业务类型
    sourceBtmType:{
      type: String
    },
    dataStore:{
      //弹窗时按钮所属区域选中数据
@@ -80,6 +92,7 @@
          this.$emit("setDataStore", {
            area: this.areasName,
            type:this.componentVO.uiComponentType,
            btmType:this.componentVO.treeDefineVO.btmType,
            dataStore:newval
          });
        }
Source/ProjectWeb/src/components/dynamic-components/index.vue
@@ -1,9 +1,12 @@
<template>
  <dynamic-table v-if="componentVO.uiComponentType=='table'"
                 :uiBtmType="uiBtmType"
                 :uiContext="uiContext"
                 :key="areasName+'table-'+componentVO.oid"
                 :inDialog="inDialog"
                 :componentVO="componentVO"
                 :sourceData="sourceData"
                 :sourceBtmType="sourceBtmType"
                 :dataStore="dataStore"
                 :areasName="areasName"
                 :paramVOS="paramVOS"
@@ -12,22 +15,27 @@
  </dynamic-table>
  <dynamicTreeTable v-else-if="componentVO.uiComponentType=='TreeTable'"
                    :uiBtmType="uiBtmType"
                    :uiContext="uiContext"
                 :key="areasName+'table-'+componentVO.oid"
                 :inDialog="inDialog"
                 :componentVO="componentVO"
                 :sourceData="sourceData"
                    :sourceBtmType="sourceBtmType"
                    :dataStore="dataStore"
                 :areasName="areasName"
                 :paramVOS="paramVOS"
                    @setDataStore="setDataStore"
                 :isShow="isShow">
  </dynamicTreeTable>
  <dynamic-form v-else-if="componentVO.uiComponentType=='form'"
                :uiBtmType="uiBtmType"
                :uiContext="uiContext"
                :key="areasName+'form-'+componentVO.oid"
                :inDialog="inDialog"
                :componentVO="componentVO"
                :sourceData="sourceData"
                :sourceBtmType="sourceBtmType"
                :dataStore="dataStore"
                :areasName="areasName"
                :paramVOS="paramVOS"
@@ -36,20 +44,27 @@
  </dynamic-form>
  <dynamic-tree v-else-if="componentVO.uiComponentType=='tree'"
                :uiBtmType="uiBtmType"
                :uiContext="uiContext"
                :key="areasName+'tree-'+componentVO.oid"
                :inDialog="inDialog"
                :componentVO="componentVO"
                :sourceData="sourceData"
                :sourceBtmType="sourceBtmType"
                :dataStore="dataStore"
                :areasName="areasName"
                :paramVOS="paramVOS"
                @setDataStore="setDataStore"
                :isShow="isShow">
  </dynamic-tree>
  <dynamic-custom v-else-if="componentVO.uiComponentType=='customer'"  :inDialog="inDialog"
  <dynamic-custom v-else-if="componentVO.uiComponentType=='customer'"
                  :uiBtmType="uiBtmType"
                  :uiContext="uiContext"
                  :inDialog="inDialog"
                  :key="areasName+'custom-'+componentVO.oid"
                  :componentVO="componentVO"
                  :sourceData="sourceData"
                  :sourceBtmType="sourceBtmType"
                  :dataStore="dataStore"
                  :areasName="areasName"
                  :paramVOS="paramVOS"
@@ -69,6 +84,14 @@
  name: "dynamicIndex",
  components:{dynamicCustom, dynamicTree, dynamicForm, dynamicTable,dynamicTreeTable  },
  props:{
    //ui上下文的业务类型(或链接类型)
    uiBtmType: {
      type: String
    },
    //ui上下文
    uiContext:{
      type: String
    },
    componentVO:{
      type:Object,
      default: {}
@@ -86,6 +109,10 @@
      type:Object,
      default: {}
    },
    //上一区域业务类型
    sourceBtmType:{
      type: String
    },
    dataStore:{
      //弹窗时按钮所属区域选中数据
      type:Array,
Source/ProjectWeb/src/views/base/UIContentArea.vue
@@ -22,9 +22,12 @@
        </el-collapse>
        <div v-else class="componentVO">
          <compoent-index :key="areasName+'componentVO-'+areaItem.componentVOs[0].oid"
                          :uiBtmType="uiBtmType"
                          :uiContext="uiContext"
                          :inDialog="inDialog"
                          :componentVO="areaItem.componentVOs[0]"
                          :sourceData="newSourceData"
                          :sourceBtmType="sourceBtmType"
                          :dataStore="dataStore"
                          :areasName="areasName"
                          :paramVOS="paramVOS"
@@ -41,9 +44,12 @@
          </template>
          <div class="componentVO">
            <compoent-index :key="areasName+'componentVO-'+componentVO.oid"
                            :uiBtmType="uiBtmType"
                            :uiContext="uiContext"
                            :inDialog="inDialog"
                            :componentVO="componentVO"
                            :sourceData="newSourceData"
                            :sourceBtmType="sourceBtmType"
                            :dataStore="dataStore"
                            :areasName="areasName"
                            :paramVOS="paramVOS"
@@ -54,9 +60,12 @@
      </el-collapse>
      <div v-else class="componentVO">
        <compoent-index :key="areasName+'componentVO-'+newAreasData[0].componentVOs[0].oid"
                        :uiBtmType="uiBtmType"
                        :uiContext="uiContext"
                        :inDialog="inDialog"
                        :componentVO="newAreasData[0].componentVOs[0]"
                        :sourceData="newSourceData"
                        :sourceBtmType="sourceBtmType"
                        :dataStore="dataStore"
                        :areasName="areasName"
                        :paramVOS="paramVOS"
@@ -104,6 +113,14 @@
  name: "UIContentArea",
  components:{compoentIndex},
  props:{
    //ui上下文的业务类型(或链接类型)
    uiBtmType: {
      type: String
    },
    //ui上下文
    uiContext:{
      type: String
    },
    inDialog: {
      type: Boolean,
      default: false
@@ -121,6 +138,10 @@
      type:Object,
      default: {}
    },
    //上一区域业务类型
    sourceBtmType:{
      type: String
    },
    dataStore:{
      //弹窗时按钮所属区域选中数据
      type:Array,
Source/ProjectWeb/src/views/base/UIContentViewer.vue
@@ -2,10 +2,14 @@
  <!--UI上下文的展示器-->
  <div style="height:calc(100% - 4px);min-width:1200px" >
    <el-header v-if="uiDefineVO.northAreas && uiDefineVO.northAreas.length>0">
      <UIContentArea :key="'northArea-'+uiDefineVO.oid" :areasData="uiDefineVO.northAreas"
                     :dataStore="checkedData.northArea"
      <UIContentArea :key="'northArea-'+uiDefineVO.oid"
                     :uiBtmType="btmType"
                     :uiContext="context"
                     :areasData="uiDefineVO.northAreas"
                     :dataStore="checkedData.northArea.data"
                     :inDialog="inDialog"
                     :sourceData="sourceData"
                     :sourceBtmType="btmType"
                     areas-name="northArea"
                     @setDataStore="setDataStore">
      </UIContentArea>
@@ -15,10 +19,14 @@
      <el-aside v-if="uiDefineVO.westAreas && uiDefineVO.westAreas.length>0"
                :width="uiDefineVO.westAreas[0].componentVOs[0].uiComponentType=='table' || uiDefineVO.westAreas[0].componentVOs[0].uiComponentType=='TreeTable'?'420px':'320px'"
                height="100%">
        <UIContentArea :key="'westArea-'+uiDefineVO.oid" :areasData="uiDefineVO.westAreas"
                       :dataStore="checkedData.westArea"
        <UIContentArea :key="'westArea-'+uiDefineVO.oid"
                       :uiBtmType="btmType"
                       :uiContext="context"
                       :areasData="uiDefineVO.westAreas"
                       :dataStore="checkedData.westArea.data"
                       :inDialog="inDialog"
                       :sourceData="sourceData"
                       :sourceBtmType="btmType"
                       areas-name="westArea"
                       cradStyle=""
                       @setDataStore="setDataStore">
@@ -26,10 +34,14 @@
      </el-aside>
      <el-container style="height: 100%;display: block">
        <el-main v-if="uiDefineVO.centerAreas && uiDefineVO.centerAreas.length>0" :style="'min-height: 300px;height: '+centerHeight">
          <UIContentArea :key="'centerArea-'+uiDefineVO.oid" :areasData="uiDefineVO.centerAreas"
                         :dataStore="checkedData.centerArea"
          <UIContentArea :key="'centerArea-'+uiDefineVO.oid"
                         :uiBtmType="btmType"
                         :uiContext="context"
                         :areasData="uiDefineVO.centerAreas"
                         :dataStore="checkedData.centerArea.data"
                         :inDialog="inDialog"
                         :sourceData="checkedData.westArea[checkedData.westArea.length-1]"
                         :sourceData="checkedData.westArea.data[checkedData.westArea.data.length-1]"
                         :sourceBtmType="checkedData.westArea.DefineVOBtmType"
                         areas-name="centerArea"
                         cradStyle=""
                         @setDataStore="setDataStore">
@@ -37,10 +49,14 @@
        </el-main>
        <el-footer v-if="uiDefineVO.southAreas && uiDefineVO.southAreas.length>0" height="35%"
                   style="min-height: 150px;">
          <UIContentArea :key="'southArea-'+uiDefineVO.oid" :areasData="uiDefineVO.southAreas"
                         :dataStore="checkedData.southArea"
          <UIContentArea :key="'southArea-'+uiDefineVO.oid"
                         :uiBtmType="btmType"
                         :uiContext="context"
                         :areasData="uiDefineVO.southAreas"
                         :dataStore="checkedData.southArea.data"
                         :inDialog="inDialog"
                         :sourceData="checkedData.centerArea[checkedData.centerArea.length-1]"
                         :sourceData="checkedData.centerArea.data[checkedData.centerArea.data.length-1]"
                         :sourceBtmType="checkedData.centerArea.DefineVOBtmType"
                         areas-name="southArea"
                         cradStyle=""
                         @setDataStore="setDataStore">
@@ -65,10 +81,22 @@
      context: '',//UI上下文的名称
      checkedData: {
        //各区域选中数据
        northArea: [{}],
        westArea: [{}],
        centerArea: [{}],
        southArea: [{}]
        northArea: {
          DefineVOBtmType:'',
          data:[{}]
        },
        westArea: {
          DefineVOBtmType:'',
          data:[{}]
        },
        centerArea: {
          DefineVOBtmType:'',
          data:[{}]
        },
        southArea: {
          DefineVOBtmType:'',
          data:[{}]
        }
      },
      uiDefineVO: {},
      centerHeight: '100%',
@@ -116,7 +144,8 @@
      }
    },
    setDataStore(value) {
      this.checkedData[value.area] = value.dataStore;
      this.checkedData[value.area].DefineVOBtmType = value.btmType;
      this.checkedData[value.area].data = value.dataStore;
    }
  }
}
Source/ProjectWeb/src/views/base/UIContentViewerInDialog.vue
@@ -2,10 +2,15 @@
  <!--UI上下文的展示器-->
  <div style="height:calc(100% - 4px);min-width:1200px" >
    <el-header v-if="uiDefineVO.northAreas && uiDefineVO.northAreas.length>0">
      <UIContentArea :key="'northArea-'+uiDefineVO.oid" :areasData="uiDefineVO.northAreas"
                     :dataStore="checkedData.northArea"
      <UIContentArea :key="'northArea-'+uiDefineVO.oid"
                     :uiBtmType="btmType"
                     :uiContext="context"
                     :areasData="uiDefineVO.northAreas"
                     :dataStore="checkedData.northAreaInDialog.data"
                     :paramVOS="paramVOS"
                     :inDialog="inDialog"
                     :sourceData="sourceData"
                     :sourceBtmType="btmType"
                     areas-name="northArea"
                     @setDataStore="setDataStore">
      </UIContentArea>
@@ -15,10 +20,15 @@
      <el-aside v-if="uiDefineVO.westAreas && uiDefineVO.westAreas.length>0"
                :width="uiDefineVO.westAreas[0].componentVOs[0].uiComponentType=='table' || uiDefineVO.westAreas[0].componentVOs[0].uiComponentType=='TreeTable'?'420px':'320px'"
                height="100%">
        <UIContentArea :key="'westArea-'+uiDefineVO.oid" :areasData="uiDefineVO.westAreas"
                       :dataStore="checkedData.westArea"
        <UIContentArea :key="'westArea-'+uiDefineVO.oid"
                       :uiBtmType="btmType"
                       :uiContext="context"
                       :areasData="uiDefineVO.westAreas"
                       :dataStore="checkedData.westAreaInDialog.data"
                       :paramVOS="paramVOS"
                       :inDialog="inDialog"
                       :sourceData="sourceData"
                       :sourceBtmType="btmType"
                       areas-name="westArea"
                       cradStyle=""
                       @setDataStore="setDataStore">
@@ -26,10 +36,15 @@
      </el-aside>
      <el-container style="height: 100%;display: block">
        <el-main v-if="uiDefineVO.centerAreas && uiDefineVO.centerAreas.length>0" :style="'min-height: 300px;height: '+centerHeight">
          <UIContentArea :key="'centerArea-'+uiDefineVO.oid" :areasData="uiDefineVO.centerAreas"
                         :dataStore="checkedData.centerArea"
          <UIContentArea :key="'centerArea-'+uiDefineVO.oid"
                         :uiBtmType="btmType"
                         :uiContext="context"
                         :areasData="uiDefineVO.centerAreas"
                         :dataStore="checkedData.centerAreaInDialog.data"
                         :paramVOS="paramVOS"
                         :inDialog="inDialog"
                         :sourceData="checkedData.westArea[checkedData.westArea.length-1]"
                         :sourceData="checkedData.westAreaInDialog.data[checkedData.westAreaInDialog.data.length-1]"
                         :sourceBtmType="checkedData.westAreaInDialog.DefineVOBtmType"
                         areas-name="centerArea"
                         cradStyle=""
                         @setDataStore="setDataStore">
@@ -37,10 +52,15 @@
        </el-main>
        <el-footer v-if="uiDefineVO.southAreas && uiDefineVO.southAreas.length>0" height="35%"
                   style="min-height: 150px;">
          <UIContentArea :key="'southArea-'+uiDefineVO.oid" :areasData="uiDefineVO.southAreas"
                         :dataStore="checkedData.southArea"
          <UIContentArea :key="'southArea-'+uiDefineVO.oid"
                         :uiBtmType="btmType"
                         :uiContext="context"
                         :areasData="uiDefineVO.southAreas"
                         :dataStore="checkedData.southAreaInDialog.data"
                         :paramVOS="paramVOS"
                         :inDialog="inDialog"
                         :sourceData="checkedData.centerArea[checkedData.centerArea.length-1]"
                         :sourceData="checkedData.centerAreaInDialog.data[checkedData.centerAreaInDialog.data.length-1]"
                         :sourceBtmType="checkedData.centerAreaInDialog.DefineVOBtmType"
                         areas-name="southArea"
                         cradStyle=""
                         @setDataStore="setDataStore">
@@ -89,10 +109,22 @@
    return {
      checkedData:{
        //各区域选中数据
        northAreaInDialog:[{}],
        westAreaInDialog:[{}],
        centerAreaInDialog:[{}],
        southAreaInDialog:[{}]
        northAreaInDialog:{
          DefineVOBtmType:'',
          data:[{}]
        },
        westAreaInDialog:{
          DefineVOBtmType:'',
          data:[{}]
        },
        centerAreaInDialog:{
          DefineVOBtmType:'',
          data:[{}]
        },
        southAreaInDialog:{
          DefineVOBtmType:'',
          data:[{}]
        }
      },
      uiDefineVO: {},
      centerHeight:'100%'
@@ -134,7 +166,8 @@
      }
    },
    setDataStore(value) {
      this.checkedData[value.area] = value.dataStore;
      this.checkedData[value.area].DefineVOBtmType = value.btmType;
      this.checkedData[value.area].data = value.dataStore;
    }
  }
}