田源
2024-04-15 52e123212f37e214ee4599649adbd743e0d86c2b
Merge remote-tracking branch 'origin/master'
已修改11个文件
已添加2个文件
421 ■■■■ 文件已修改
Source/ProjectWeb/src/actions/base/AddAction.js 21 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/ProjectWeb/src/actions/base/BaseAction.js 44 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/ProjectWeb/src/actions/base/DeleteAction.js 68 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/ProjectWeb/src/actions/base/EditAction.js 73 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/ProjectWeb/src/api/base/region.js 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/ProjectWeb/src/components/dynamic-components/dynamic-TreeTable.vue 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/ProjectWeb/src/components/dynamic-components/dynamic-button.vue 98 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/ProjectWeb/src/components/dynamic-components/dynamic-custom.vue 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/ProjectWeb/src/components/dynamic-components/dynamic-form.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/ProjectWeb/src/components/dynamic-components/dynamic-table.vue 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/ProjectWeb/src/components/dynamic-components/dynamic-tree.vue 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/ProjectWeb/src/views/base/UIContentViewer.vue 16 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/ProjectWeb/src/views/base/UIContentViewerInDialog.vue 68 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/ProjectWeb/src/actions/base/AddAction.js
@@ -1,16 +1,20 @@
/**
 * æŒ‰é’®å¤„理 ä¸šåŠ¡ç±»åž‹æ–°å¢ž
 */
import {callPreEvent,callPostEvent} from './BaseAction';
import {paramLow,callPreEvent, callPostEvent} from './BaseAction';
import {validatenull} from "@/util/validate";
import Vue from "vue";
export const doAction = (options) => {
  let paramVOS = Object.assign({
  options.paramVOS = paramLow(options.paramVOS)
  const paramVOS = Object.assign({
    url: 'uiDataController/addSave',
    method: 'post',
    uploadFileUrl: 'vciFileUploadController/uploadFile'
    uploadfileurl: 'vciFileUploadController/uploadFile'
  }, options.paramVOS)
  options.paramVOS = paramVOS;
  options.sourceData = options.sourceData || {};
  callPreEvent(options, doBefore,function (options) {
    doAdd(options, function () {
@@ -25,7 +29,12 @@
 * @param callback å›žè°ƒ
 */
export const doAdd = (options,callback)=> {
  this.$message.success('执行增加');
  const paramVOS = options.paramVOS;
  if (!paramVOS['form'] && !paramVOS['context']) {
    Vue.prototype.$message.error("按钮配置不正确");
    return false;
  }
  Vue.prototype.$message.success('执行'+paramVOS.title);
  if(callback){
    callback(options);
  }
@@ -36,7 +45,7 @@
 * @param callback å›žè°ƒ
 */
export const doBefore = (options,callback)=> {
  this.$message.success('执行前置事件');
  Vue.prototype.$message.success('执行增加前置事件');
  if(callback){
    callback(options);
  }
@@ -47,7 +56,7 @@
 * @param callback å›žè°ƒ
 */
export const doAfter = (options,callback)=> {
  this.$message.success('执行后置事件');
  Vue.prototype.$message.success('执行增加后置事件');
  if(callback){
    callback(options);
  }
Source/ProjectWeb/src/actions/base/BaseAction.js
@@ -1,4 +1,5 @@
import {validatenull} from "@/util/validate";
import Vue from 'vue';
/**
 * æŒ‰é’®çš„基础服务
@@ -8,24 +9,39 @@
 * action通用入口
 */
export const doAction = (button,options) => {
  debugger;
  options.paramVOS['title']=replaceFreeMarker(options.paramVOS.title,options.dataStore,options.sourceData);
  if(button.url && button.url!='null'){
    //有配置action路径,使用路径对应的js
    let buttonParse = parseEventByUrl(button.url,options,false);
    import("../"+buttonParse.jsPath).then(module => {
    import("../"+buttonParse.jsPath+".js").then(module => {
      module.doAction(options);
    })
  }else {
    //通用action
    const handlers = {
      //查看
      view: () => {},
      //创建
      add: () => {import("@/actions/base/AddAction").then(module => {
        module.doAction(options);
      })},
      edit: () => {},
      delete: () => {},
      //修改
      edit: () =>  {import("@/actions/base/EditAction").then(module => {
        module.doAction(options);
      })},
      //删除
      delete: () =>  {import("@/actions/base/DeleteAction").then(module => {
        module.doAction(options);
      })},
    };
    if(handlers[button.actionVO.id]){
      handlers[button.actionVO.id]()
    if(validatenull(options.paramVOS.context)) {
      options.paramVOS.context = options.paramVOS.content;
    }
    if(handlers[button.actionVO.id.toLowerCase()]){
      handlers[button.actionVO.id.toLowerCase()]()
    }else{
      this.$message.error('未找到对应action,请重新配置按钮!');
      Vue.prototype.$message.error('未找到对应action,请重新配置按钮!');
    }
  }
@@ -102,9 +118,7 @@
 * @param preEventName å‰ç½®äº‹ä»¶åç§°ï¼Œé»˜è®¤beforeevent
 */
export const callPreEvent = (options,fnTarget,callback,preEventName) => {
  const params = paramLow(options.paramVOS);
  options.paramVOS = params;
  let beforeEvent = params[preEventName || 'beforeevent'];
  let beforeEvent = options.paramVOS[preEventName || 'beforeevent'];
  if(beforeEvent) {
    let buttonParse = parseEventByUrl(beforeEvent,options,true);
    if(validatenull(buttonParse.jsPath)){
@@ -115,7 +129,7 @@
          module[buttonParse.methodName](options,callback);
        })
      } catch (error) {
        this.$message.error('未找到前置事件执行js');
        Vue.prototype.$message.error('未找到前置事件执行js');
      }
    }
  }else{
@@ -132,9 +146,7 @@
 * @param preEventName åŽç½®äº‹ä»¶åç§°ï¼Œé»˜è®¤ afterevent
 */
export const callPostEvent = (options,fnTarget,callback,postEventName)=>{
  const params = paramLow(options.paramVOS);
  options.paramVOS = params;
  let afterEvent = params[postEventName || 'afterevent'];
  let afterEvent = options.paramVOS[postEventName || 'afterevent'];
  if(afterEvent) {
    let buttonParse = parseEventByUrl(afterEvent,options,false);
    if(validatenull(buttonParse.jsPath)){
@@ -145,7 +157,7 @@
          module[buttonParse.methodName](options,callback);
        })
      } catch (error) {
        this.$message.error('未找到后置事件执行js');
        Vue.prototype.$message.error('未找到后置事件执行js');
      }
    }
  }else{
@@ -182,7 +194,7 @@
    let paramArray = url.substring(url.indexOf("?") + 1).split("&");
    paramArray.forEach(_item=>{
      if (_item.indexOf("=") < 0) {
        this.$message.error(isBefore?"前置事件":"后置事件" + "的参数配置错误,需要要xxx=yyy&zzz=a的方式");
        Vue.prototype.$message.error(isBefore?"前置事件":"后置事件" + "的参数配置错误,需要要xxx=yyy&zzz=a的方式");
        return true;
      }
      params[_item.split("=")[0]] = _item.split("=")[1];
Source/ProjectWeb/src/actions/base/DeleteAction.js
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,68 @@
/**
 * æŒ‰é’®å¤„理 ä¸šåŠ¡ç±»åž‹åˆ é™¤
 */
import {paramLow,callPreEvent,callPostEvent} from './BaseAction';
import {validatenull} from "@/util/validate";
import Vue from "vue";
export const doAction = (options) => {
  options.paramVOS = paramLow(options.paramVOS)
  const paramVOS = Object.assign({
    url: 'uiDataController/addSave',
    method: 'post',
    uploadfileurl: 'vciFileUploadController/uploadFile'
  }, options.paramVOS)
  options.paramVOS = paramVOS;
  options.sourceData = options.sourceData || {};
  options.dataStore = options.dataStore || [];
  if (!options.dataStore || options.dataStore.length < 1) {
    Vue.prototype.$message.error("请选择需要删除的数据");
    return false;
  }
  if (!paramVOS.multi && options.dataStore.length > 1) {
    Vue.prototype.$message.error("仅能选择一条数据来操作");
    return false;
  }
  callPreEvent(options, doBefore,function (options) {
    doAdd(options, function () {
      callPostEvent(options,doAfter, options.callback);
    });
  });
};
/**
 * æ‰§è¡Œ
 * @param options æŒ‰é’®çš„配置信息
 * @param callback å›žè°ƒ
 */
export const doAdd = (options,callback)=> {
  const paramVOS = options.paramVOS;
  Vue.prototype.$message.success('执行'+paramVOS.title);
  if(callback){
    callback(options);
  }
}
/**
 * å‰ç½®äº‹ä»¶
 * @param options æŒ‰é’®çš„配置信息
 * @param callback å›žè°ƒ
 */
export const doBefore = (options,callback)=> {
  Vue.prototype.$message.success('执行删除前置事件');
  if(callback){
    callback(options);
  }
}
/**
 * åŽç½®äº‹ä»¶
 * @param options æŒ‰é’®çš„配置信息
 * @param callback å›žè°ƒ
 */
export const doAfter = (options,callback)=> {
  Vue.prototype.$message.success('执行删除后置事件');
  if(callback){
    callback(options);
  }
}
Source/ProjectWeb/src/actions/base/EditAction.js
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,73 @@
/**
 * æŒ‰é’®å¤„理 ä¸šåŠ¡ç±»åž‹ä¿®æ”¹
 */
import {paramLow,callPreEvent,callPostEvent} from './BaseAction';
import {validatenull} from "@/util/validate";
import Vue from "vue";
export const doAction = (options) => {
  options.paramVOS = paramLow(options.paramVOS)
  const paramVOS = Object.assign({
    getdataurl: 'uiDataController/dataFormQuery',
    getdatamethod: 'post',
    url: 'uiDataController/editSave',
    method: 'put',
    uploadfileurl: 'vciFileUploadController/uploadFile'
  }, options.paramVOS)
  options.paramVOS = paramVOS;
  options.sourceData = options.sourceData || {};
  options.dataStore = options.dataStore || [];
  if (!options.dataStore || options.dataStore.length < 1) {
    Vue.prototype.$message.error("请选择需要修改的数据");
    return false;
  }
  if (!paramVOS.multi && options.dataStore.length > 1) {
    Vue.prototype.$message.error("仅能选择一条数据来操作");
    return false;
  }
  callPreEvent(options, doBefore, function (options) {
    doAdd(options, function () {
      callPostEvent(options, doAfter, options.callback);
    });
  });
};
/**
 * æ‰§è¡Œ
 * @param options æŒ‰é’®çš„配置信息
 * @param callback å›žè°ƒ
 */
export const doAdd = (options,callback)=> {
  const paramVOS = options.paramVOS;
  if (!paramVOS['form'] && !paramVOS['context']) {
    Vue.prototype.$message.error("按钮配置不正确");
    return false;
  }
  Vue.prototype.$message.success('执行'+paramVOS.title);
  if (callback) {
    callback(options);
  }
}
/**
 * å‰ç½®äº‹ä»¶
 * @param options æŒ‰é’®çš„配置信息
 * @param callback å›žè°ƒ
 */
export const doBefore = (options,callback)=> {
  Vue.prototype.$message.success('执行修改前置事件');
  if(callback){
    callback(options);
  }
}
/**
 * åŽç½®äº‹ä»¶
 * @param options æŒ‰é’®çš„配置信息
 * @param callback å›žè°ƒ
 */
export const doAfter = (options,callback)=> {
  Vue.prototype.$message.success('执行修改后置事件');
  if(callback){
    callback(options);
  }
}
Source/ProjectWeb/src/api/base/region.js
@@ -51,7 +51,8 @@
  })
}
export const getUIContent = (query) => {
//获取UI上下文定义内容
export const getUIContext = (query) => {
  return request({
    url: '/api/webUIController/getUIContentByBtmTypeAndId',
    method: 'get',
Source/ProjectWeb/src/components/dynamic-components/dynamic-TreeTable.vue
@@ -13,13 +13,13 @@
      </template>
      <!--top区域按钮-->
      <template slot="menuLeft" slot-scope="scope">
        <dynamic-button :butttonList="componentVO.buttons" :selectList="TreeSelectList" LocationType="top"
        <dynamic-button :componentVO="componentVO" :butttonList="componentVO.buttons" :dataStore="TreeSelectList" :sourceData="sourceData" LocationType="top"
                        type="TreeTable"></dynamic-button>
      </template>
      <!--menu区域按钮-->
      <template slot="menu" slot-scope="scope">
        <dynamic-button :butttonList="componentVO.buttons" :scope="scope" :selectList="TreeSelectList" LocationType="menu" default="default"
        <dynamic-button :componentVO="componentVO" :butttonList="componentVO.buttons" :scope="scope" :dataStore="TreeSelectList" :sourceData="sourceData" LocationType="menu" default="default"
                        type="TreeTable"></dynamic-button>
      </template>
    </avue-crud>
@@ -400,6 +400,9 @@
        dataStore:row
      });
    },
    handleRefresh(){
      this.$refs.treeTable.refreshTable();
    }
  }
}
</script>
Source/ProjectWeb/src/components/dynamic-components/dynamic-button.vue
@@ -57,10 +57,15 @@
import func from "@/util/func";
import {validatenull} from "@/util/validate";
import {doAction} from '@/actions/base/BaseAction';
import Vue from "vue";
export default {
  name: "dynamic-button",
  props: {
    componentVO: {
      type: Object,
      default: {}
    },
    type: {
      type: String
    },
@@ -73,13 +78,19 @@
    butttonList: {
      type: Array
    },
    selectList: {
    default:{
      type:String,
    },
    sourceData: {
      //按钮所属区域的上一区域选中数据
      type: Object,
      default: {}
    },
    dataStore: {
      //按钮所属区域选中数据
      type: Array,
      default: []
    },
    default:{
      type:String,
    }
  },
  data() {
    return {
@@ -279,12 +290,81 @@
      this.$refs.dynamicForm.form = row;
    },
    buttonClick(item) {
      doAction(item,{
        paramVOS: item.paramVOS,
        dataStore: [],
        sourceData: {},
        callback: function (){
      const paramVOS=item.paramVOS;
      const DefineVO = this.componentVO.treeDefineVO || this.componentVO.tableDefineVO || this.componentVO.treeTableDefineVO || this.componentVO.formDefineVO;
      if (!paramVOS['title']) {
        paramVOS['title'] = item.name + (DefineVO.title || DefineVO.componentTitle || '');
      }
      if (!paramVOS['type']) {
        paramVOS['type'] = DefineVO.btmType;
      }
      for(let item in paramVOS) {
        if (item.includes('.${') && item.includes('}')) {
          //替换成源数据中的值
          if (Object.keys(this.sourceData).length === 0) {
            this.$message.error("请先选择一条来源数据");
            return false;
          }
          item=item.replace(/:/g,'=');
          let values = item.split(';');
          let initValues = []
        } else if (item.includes('${') && item.includes('}')) {
          //替换成选中数据的值
          if (this.dataStore.length < 1) {
            this.$message.error("请先选择一条数据");
            return false;
          }
          item=item.replace(/:/g,'=');
        }
      }
      /*if (paramVOS['initvalue']) {
        var values = paramVOS['initvalue'].split(';');
        var initValues = []
        layui.each(values, function (i, item) {
          item=item.replace(':','=');
          if (item.indexOf('${') > -1) {
            if (item.split('=')[1].indexOf('.') > -1) {
              if (sourceData.length<1 || !sourceData[0].oid) {
                isShow = false;
                $webUtil.showErrorMsg("请先选择一条来源数据");
                return false;
              }
              var name = item.split('=')[1].split('.')[1].replace('${', '').replace('}', '');
              if (name == 'oid') {
                item = item.split('=')[0] + '=' + sourceData[0]['oid']
              } else {
                item = item.split('=')[0] + '=' + sourceData[0][name]
              }
            } else {
              if (dataStore.length < 1) {
                isShow = false;
                $webUtil.showErrorMsg("请先选择一条数据");
                return false;
              }
              var name = item.split('=')[1].replace('${', '').replace('}', '');
              item = item.split('=')[0] + '=' + dataStore[0][name];
            }
          }
          initValues.push(item)
        })
        paramVOS['initvalue'] = initValues.join(';')
      }*/
      if(paramVOS['BSContent'] || paramVOS['BSContext']){
        paramVOS['context']=paramVOS['BSContext'] || paramVOS['BSContent']
        paramVOS['content']=paramVOS['BSContext'] || paramVOS['BSContent'];
      }
      const that=this;
      doAction(item, {
        paramVOS: paramVOS,
        dataStore: this.dataStore || [],
        sourceData: this.sourceData || {},
        callback: function () {
          if (that.$parent.handleRefresh) {
            that.$parent.handleRefresh()
          }
        }
      });
    }
Source/ProjectWeb/src/components/dynamic-components/dynamic-custom.vue
@@ -11,7 +11,7 @@
    </el-alert>
    <component v-else :is="currentComponent"
               :btmType="btmType"
               :content="content"
               :context="context"
               :inDialog="true"
               :key="areasName+'customCom-'+componentVO.oid"
               :componentVO="componentVO"
@@ -68,7 +68,7 @@
  data() {
    return {
      btmType: '',
      content: '',
      context: '',
      urlParams: {},
      height: '300px',
      customClass: '', //?type=xxx&context=yyy&param=zzz  æˆ–者 ç»„ä»¶name?type=xxx&context=yyy&param=zzz
@@ -114,7 +114,7 @@
    }
    this.btmType = urlParams.type;
    this.content = urlParams.context;
    this.context = urlParams.context;
    this.urlParams = Object.assign(this.paramVOS, urlParams)
    //this.getHeight(this.$parent);
Source/ProjectWeb/src/components/dynamic-components/dynamic-form.vue
@@ -16,7 +16,7 @@
        </span>
      </template>
      <template slot="menuForm">
        <dynamic-button :butttonList="componentVO.buttons" type="form" @buttonClick="buttonClick"></dynamic-button>
        <dynamic-button :componentVO="componentVO" :butttonList="componentVO.buttons" :dataStore="[form]" :sourceData="sourceData" type="form" @buttonClick="buttonClick"></dynamic-button>
      </template>
      <template v-for="item in slotData" :slot="item.prop + ''">
Source/ProjectWeb/src/components/dynamic-components/dynamic-table.vue
@@ -11,13 +11,13 @@
               @selection-change="selectChange">
      <!--top区域按钮-->
      <template slot="menuLeft" slot-scope="scope">
        <dynamic-button :butttonList="componentVO.buttons" :selectList="selectList" LocationType="top"
        <dynamic-button :componentVO="componentVO" :butttonList="componentVO.buttons" :dataStore="selectList" LocationType="top" :sourceData="sourceData"
                        type="table"></dynamic-button>
      </template>
      <!--menu区域按钮-->
      <template slot="menu" slot-scope="scope">
        <dynamic-button :butttonList="componentVO.buttons" :scope="scope" :selectList="selectList" LocationType="menu"
        <dynamic-button :componentVO="componentVO" :butttonList="componentVO.buttons" :scope="scope" :dataStore="selectList" :sourceData="sourceData" LocationType="menu"
                        type="table"></dynamic-button>
      </template>
    </avue-crud>
@@ -563,6 +563,9 @@
    },
    searchChange(form,done){
      done();
    },
    handleRefresh(){
      this.$refs.dataTable.refreshTable();
    }
  }
}
Source/ProjectWeb/src/components/dynamic-components/dynamic-tree.vue
@@ -1,6 +1,8 @@
<template>
  <div class="UI-dynamic" :id="'UI-dynamic-'+areasName+componentVO.oid">
    <dynamic-button v-if="componentVO.buttons && componentVO.buttons.length>0" :butttonList="componentVO.buttons" :selectList="checkDatas" type="tree" style="margin-bottom: 10px;"></dynamic-button>
    <dynamic-button v-if="componentVO.buttons && componentVO.buttons.length>0" :componentVO="componentVO"
                    :butttonList="componentVO.buttons" :dataStore="checkDatas"
                    :sourceData="sourceData" type="tree" style="margin-bottom: 10px;"></dynamic-button>
    <el-input
      placeholder="输入关键字进行过滤"
      v-model="filterText">
@@ -115,6 +117,7 @@
      return data[this.defaultProps.label].indexOf(value) !== -1;
    },
    initData() {
      //异步获取数据
      this.data = [
        {
          "attributes": {
@@ -2018,6 +2021,9 @@
        this.checkDatas=[data];
      }
    },
    handleRefresh(){
      this.initData();
    }
  },
}
</script>
Source/ProjectWeb/src/views/base/UIContentViewer.vue
@@ -54,7 +54,7 @@
<script>
import {verifyNull} from "@/util/validate";
import UIContentArea from "@/views/base/UIContentArea"
import {getUIContent} from '@/api/base/region'
import {getUIContext} from '@/api/base/region'
export default {
  name: "UIContentViewer",
@@ -62,7 +62,7 @@
  data() {
    return {
      btmType: '',//业务类型(或链接类型)
      content: '',//UI上下文的名称
      context: '',//UI上下文的名称
      checkedData: {
        //各区域选中数据
        northArea: [{}],
@@ -84,8 +84,8 @@
    }
  },
  computed: {
    typeAContent(){
      return this.btmType+this.content;
    typeAndContext(){
      return this.btmType+this.context;
    }
  },
  created() {
@@ -99,16 +99,16 @@
  methods: {
    getTheParameters(){
      this.btmType = this.$route.query.type;
      this.content = this.$route.query.context || this.$route.query.content;
      this.context = this.$route.query.context || this.$route.query.content;
      this.sourceData = this.$route.query;
    },
    initUI() {
      getUIContent({btmType: this.btmType, id: this.content}).then(res => {
      getUIContext({btmType: this.btmType, id: this.context}).then(res => {
        this.uiDefineVO = res.data.obj;
        this.initContent();
        this.initContext();
      })
    },
    initContent() {
    initContext() {
      if (this.uiDefineVO.southAreas && this.uiDefineVO.southAreas.length > 0) {
        this.centerHeight = '65%';
      } else {
Source/ProjectWeb/src/views/base/UIContentViewerInDialog.vue
@@ -2,47 +2,47 @@
  <!--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" areas-name="northAreaInDialog"
                     :areasData="uiDefineVO.northAreas"
      <UIContentArea :key="'northArea-'+uiDefineVO.oid" :areasData="uiDefineVO.northAreas"
                     :dataStore="checkedData.northArea"
                     :inDialog="inDialog"
                     :sourceData="sourceData"
                     :dataStore="checkedData.northAreaInDialog"
                     :paramVOS="paramVOS"
                     areas-name="northArea"
                     @setDataStore="setDataStore">
      </UIContentArea>
    </el-header>
    <el-container :style="'height: '+(uiDefineVO.northAreas && uiDefineVO.northAreas.length>0?'calc(100% - 70px)':'100%')">
      <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" areas-name="westAreaInDialog"
                       cradStyle=""
                       :areasData="uiDefineVO.westAreas"
    <el-container
      :style="'height: '+(uiDefineVO.northAreas && uiDefineVO.northAreas.length>0?'calc(100% - 70px)':'100%')">
      <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"
                       :inDialog="inDialog"
                       :sourceData="sourceData"
                       :dataStore="checkedData.westAreaInDialog"
                       :paramVOS="paramVOS"
                       areas-name="westArea"
                       cradStyle=""
                       @setDataStore="setDataStore">
        </UIContentArea>
      </el-aside>
      <el-container style="height: 100%;display: block">
        <el-main v-if="uiDefineVO.centerAreas && uiDefineVO.centerAreas.length>0" :style="'min-height: 260px;height: '+centerHeight">
          <UIContentArea :key="'centerArea-'+uiDefineVO.oid" areas-name="centerAreaInDialog"
                         cradStyle=""
                         :areasData="uiDefineVO.centerAreas"
        <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"
                         :inDialog="inDialog"
                         :sourceData="checkedData.westAreaInDialog[checkedData.westAreaInDialog.length-1]"
                         :dataStore="checkedData.centerAreaInDialog"
                         :paramVOS="paramVOS"
                         :sourceData="checkedData.westArea[checkedData.westArea.length-1]"
                         areas-name="centerArea"
                         cradStyle=""
                         @setDataStore="setDataStore">
          </UIContentArea>
        </el-main>
        <el-footer v-if="uiDefineVO.southAreas && uiDefineVO.southAreas.length>0" height="35%" style="min-height: 150px;">
          <UIContentArea :key="'southArea-'+uiDefineVO.oid" areas-name="southAreaInDialog"
                         cradStyle=""
                         :areasData="uiDefineVO.southAreas"
        <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"
                         :inDialog="inDialog"
                         :sourceData="checkedData.centerAreaInDialog[checkedData.centerAreaInDialog.length-1]"
                         :dataStore="checkedData.southAreaInDialog"
                         :paramVOS="paramVOS"
                         :sourceData="checkedData.centerArea[checkedData.centerArea.length-1]"
                         areas-name="southArea"
                         cradStyle=""
                         @setDataStore="setDataStore">
          </UIContentArea>
        </el-footer>
@@ -54,7 +54,7 @@
<script>
import UIContentArea from "@/views/base/UIContentArea"
import {verifyNull} from "@/util/validate";
import {getUIContent} from '@/api/base/region'
import {getUIContext} from '@/api/base/region'
export default {
  name: "UIContentViewerInDialog",
@@ -63,7 +63,7 @@
    btmType:{
      type: String,
    },
    content:{
    context:{
      type: String,
    },
    inDialog: {
@@ -99,7 +99,7 @@
    }
  },
  watch: {
    typeAContent:{
    typeAndContext:{
      handler(newV,oldV){
        if(oldV!=newV && !verifyNull(newV)){
          this.initUI();
@@ -109,24 +109,24 @@
    }
  },
  computed: {
    typeAContent(){
      return this.btmType+this.content;
    typeAndContext(){
      return this.btmType+this.context;
    }
  },
  created() {
    if (verifyNull(this.btmType) || verifyNull(this.content) ) {
    if (verifyNull(this.btmType) || verifyNull(this.context) ) {
      this.$message.error("自定义组件配置的信息错误,请参考”?type=xxx&context=yyy&param=zzz“这种形式。其中type是业务类型(或链接类型),context是UI上下文的名称");
      return false;
    }
  },
  methods: {
    initUI() {
      getUIContent({btmType: this.btmType, id: this.content}).then(res => {
      getUIContext({btmType: this.btmType, id: this.context}).then(res => {
        this.uiDefineVO = res.data.obj;
        this.initContent();
        this.initContext();
      })
    },
    initContent() {
    initContext() {
      if (this.uiDefineVO.southAreas && this.uiDefineVO.southAreas.length > 0) {
        this.centerHeight = '65%';
      } else {