Source/plt-web/plt-web-ui/src/views/modelingMenu/ui/uiDefine/rightRegion/bottomTable/index.vue
@@ -8,10 +8,8 @@
      :data="data"
      :option="option"
      :table-loading="tableLoading"
      @row-del="rowDelHandler"
      @row-save="rowSaveHandler"
      @row-update="rowUpdateHandler"
      @refresh-change="handleRefresh"
      @selection-change="selectChangeHandler"
      @row-click="rowClickHandler">
      <template slot="menuLeft" slot-scope="scope">
@@ -57,6 +55,52 @@
        <span v-else-if="form.templateType === '6'">对象类型</span>
        <span v-else-if="form.searchTarger === '1'">源对象</span>
        <span v-else-if="form.searchTarger === '2'">目标对象</span>
      </template>
      <template slot="extAttrLabel" slot-scope="{}">
        <el-tooltip placement="top">
          <div slot="content">示例:ext1:xx;ext2;ext3:xx;ext4:xxx;extn:xxx;
            <br/>1、用英交半角分号:分隔各组值;
            <br/>2、每组用英交半角冒号:分隔单一扩展属性名称及属性值;
            <br/>3、可以定义任意组,但总字符长度不得超过4000;
            <br/>4、输入时,不要敲回车换行;
          </div>
          <span>扩展属性 <i class="el-icon-warning" style="color:red;"></i> </span>
        </el-tooltip>
      </template>
      <template slot="uiParserLabel" slot-scope="{}">
        <el-tooltip placement="top">
          <div slot="content">示例:java_cs;xxx.java_bs;xxx.net_cs;xxxx.net_bs;xxx.mobile_cs;xx.mobile_bs;xxx;
            <br/>1、用英文半角分号;分割各组值;(这里结尾的是中文字符的分号)
            <br/>2、每组用英文半角冒号:分隔单一扩展属性名称及属性值;
            <br/>3、其中的xxx是各种解析类的完整类型名称(完全限定名);
            <br/>4、输入时,不要敲回车换行;
          </div>
          <span>UI解析类型 <i class="el-icon-warning" style="color:red;"></i> </span>
        </el-tooltip>
      </template>
      <template slot="templateIdForm" slot-scope="{}">
        <el-select v-model="form.templateId" filterable placeholder="请选择">
          <el-option
            v-for="item in templateIdList"
            :key="item.viName"
            :label="item.viName"
            :value="item.viName">
          </el-option>
        </el-select>
      </template>
      <template slot="queryTemplateNameForm" slot-scope="{}">
        <el-select v-model="form.queryTemplateName" filterable placeholder="请选择">
          <el-option
            v-for="item in queryTemplateNameList"
            :key="item.qtName"
            :label="item.qtName"
            :value="item.qtName">
          </el-option>
        </el-select>
      </template>
    </avue-crud>
    <el-dialog
@@ -217,7 +261,10 @@
  deleteTabButton,
  delPageDefination,
  joinBtn,
  exitBtn
  exitBtn,
  updatePageDefination,
  getPortalVIDatasByPage,
  getQTInfoDatasByPage
} from "@/api/UI/uiDefine";
import actionDialog from '@/views/modelingMenu/ui/Aciton/components/dialog';
import cloneDialog from "@/views/modelingMenu/ui/uiDefine/rightRegion/cloneDialog";
@@ -241,6 +288,11 @@
  name: "index",
  data() {
    return {
      queryTemplateNameList: [],
      templateIdList: [],
      searchTargerChangeFlag: false,
      showTypeChangeFlag: false,
      linkTypeChangeFlag: false,
      formBtnOid: '',
      sourceBtnOid: '',
      sourceOId: '',
@@ -362,6 +414,7 @@
      data: [],
      option: {
        ...basicOption,
        size:'mini',
        height: this.height,
        addBtn: false,
        index: true,
@@ -372,6 +425,7 @@
          {
            label: '名称',
            prop: 'name',
            labelWidth: 110,
            rules: [
              {
                required: true,
@@ -383,6 +437,7 @@
          {
            label: '编号',
            prop: 'seq',
            labelWidth: 110,
            hide: false,
            rules: [
              {
@@ -393,19 +448,28 @@
            ],
          },
          {
            label: 'UI解析类型',
            label: '',
            prop: 'uiParser',
            hide: true,
            labelWidth: 110,
          },
          {
            label: '扩展属性',
            label: '',
            prop: 'extAttr',
            hide: true,
            labelWidth: 110,
          },
          {
            label: '描述',
            prop: 'description',
            labelWidth: 110,
            hide: false,
          },
          {
            label: '模板类型',
            prop: 'templateType',
            type: 'radio',
            labelWidth: 110,
            span: 24,
            value: '1',
            dicData: [
@@ -440,9 +504,10 @@
            },
            change: (val) => {
              const list = ['showType', 'linkType', 'templateId', 'SubUILayout', 'searchObjType', 'queryTemplateName', 'controlPath', 'expandCols', 'rootContent', 'showAbs', 'showLinkAbs', 'separator']
              list.forEach(item => {
                this.form[item] = "";
              })
              // list.forEach(item => {
              //   this.form[item] = "";
              // })
              // this.form.searchTarger = '1'
              const searchTarger = this.option.column.find(item => item.prop === 'searchTarger');  // 获取搜索类型配置项
              searchTarger.display = true; // 切换默认展示搜索类型
              // 模板类型为表格
@@ -463,13 +528,14 @@
            label: '显示类型',
            prop: 'navigatorType',
            type: 'radio',
            labelWidth: 110,
            span: 24,
            value: '1',
            hide: true,
            dicData: [
              {
                label: '不显示',
                value: '3'
                value: '1'
              },
              {
                label: '显示角色',
@@ -477,7 +543,7 @@
              },
              {
                label: '显示Folder',
                value: '1',
                value: '3',
              },
            ],
          },
@@ -485,6 +551,7 @@
            label: '搜索类型',
            prop: 'searchTarger',
            display: true,
            labelWidth: 110,
            type: 'radio',
            value: '1',
            span: 24,
@@ -507,33 +574,63 @@
                const obj = this.option.group[0].column.find(item => item.prop === 'linkType');
                obj.display = val.value !== '1';
              }
              // 切换清空模板类型
              const list = ['showType', 'linkType', 'templateId', 'SubUILayout', 'queryTemplateName', 'searchObjType'];
              list.forEach(item => {
                this.form[item] = '';
              })
              if (this.searchTargerChangeFlag) {
                // 切换清空模板类型
                const list = ['showType', 'linkType', 'templateId', 'SubUILayout', 'queryTemplateName', 'searchObjType', 'bsCustQueryCLsOrUrl', 'csCustQueryCLsOrUrl'];
                list.forEach(item => {
                  this.form[item] = '';
                })
              } else {
                this.searchTargerChangeFlag = true;
              }
            }
          },
          {
            label: '描述',
            prop: 'description',
            display: false
          },
        ],
        group: [
          {
            label: '',
            arrow: false,
            icon:'el-icon-info',
            label:'',
            arrow: true,
            prop: 'group1',
            column: [
              {
                label: '源对象',
                prop: 'showType',
                type: 'select',
                cascader: ['linkType', 'templateId', 'SubUILayout', 'searchObjType', 'queryTemplateName'],
                labelWidth: 115,
                cascader: ['linkType', 'SubUILayout', 'searchObjType'],
                placeholder: "请输入内容",
                dicUrl: '/api/uiManagerController/getBtmDatasByPage?page=1&limit=-1',
                filterable: true,
                change: (val) => {
                  console.log('showTypeChangeFlag',this.showTypeChangeFlag)
                  if (val.value) {
                    let params = {
                      'conditionMap[selectBtmType]': this.form.searchTarger === '1' ? this.form.showType : this.form.linkType
                    }
                    getPortalVIDatasByPage(1, -1, params).then(res => {
                      this.templateIdList = res.data.data;
                    })
                    getQTInfoDatasByPage(1, -1, params).then(res => {
                      this.queryTemplateNameList = res.data.data;
                    })
                  }
                  if (this.showTypeChangeFlag) {
                    if (val.value) {
                      if (this.form.searchTarger === '1') {
                        this.form.templateId = "";
                        this.form.queryTemplateName = "";
                      } else {
                        this.form.linkType = "";
                        this.form.templateId = "";
                        this.form.queryTemplateName = "";
                      }
                    }
                  } else {
                    this.showTypeChangeFlag = true;
                  }
                },
                props: {
                  label: 'name',
                  value: 'name',
@@ -552,6 +649,7 @@
                prop: 'linkType',
                type: 'select',
                display: false,
                labelWidth: 115,
                filterable: true,
                props: {
                  label: 'name',
@@ -559,14 +657,34 @@
                  desc: 'tag'
                },
                dicUrl: '/api/uiManagerController/getLinkDatasByPage?page=1&limit=-1&conditionMap[selectBtmType]={{key}}',
                change: (val) => {
                  if (val.value) {
                    let params = {
                      'conditionMap[selectBtmType]': val.value
                    }
                    getPortalVIDatasByPage(1, -1, params).then(res => {
                      this.templateIdList = res.data.data;
                    })
                    getQTInfoDatasByPage(1, -1, params).then(res => {
                      this.queryTemplateNameList = res.data.data;
                    })
                  }
                  if (this.linkTypeChangeFlag) {
                    if (val.value) {
                      this.form.templateId = "";
                      this.form.queryTemplateName = "";
                    }
                  } else {
                    this.linkTypeChangeFlag = true;
                  }
                }
              },
              {
                label: '选择模板',
                prop: 'templateId',
                labelWidth: 115,
                display: false,
                type: 'select',
                filterable: true,
                dicUrl: '/api/uiManagerController/getPortalVIDatasByPage?page=1&limit=-1&conditionMap[selectBtmType]={{key}}',
                formslot: true,
                rules: [
                  {
                    required: true,
@@ -574,22 +692,17 @@
                    trigger: 'submit'
                  }
                ],
                props: {
                  label: 'viName',
                  value: 'viName',
                  desc: 'viType'
                },
              },
              {
                label: 'UI定义',
                prop: 'SubUILayout',
                type: 'select',
                labelWidth: 115,
                filterable: true,
                display: false,
                props: {
                  label: 'qtName',
                  value: 'qtName',
                  desc: 'btmName'
                  label: 'plName',
                  value: 'plCode',
                },
                dicUrl: '/api/uiManagerController/getUILayoutDatasByPage?page=1&limit=-1&conditionMap[selectBtmType]={{key}}',
              },
@@ -599,6 +712,7 @@
                display: false,
                value: '1',
                type: 'radio',
                labelWidth: 115,
                span: 24,
                dicData: [
                  {
@@ -616,7 +730,7 @@
                prop: 'searchObjType',
                type: 'select',
                display: false,
                labelWidth: 100,
                labelWidth: 115,
                props: {
                  label: 'qtName',
                  value: 'qtName',
@@ -627,19 +741,15 @@
              {
                label: '查询模板',
                prop: 'queryTemplateName',
                labelWidth: 115,
                type: 'select',
                filterable: true,
                display: false,
                props: {
                  label: 'qtName',
                  value: 'qtName',
                  desc: 'btmName'
                },
                dicUrl: '/api/uiManagerController/getQTInfoDatasByPage?page=1&limit=-1&conditionMap[selectBtmType]={{key}}',
                formslot: true,
              },
              {
                label: '控制路径',
                prop: 'controlPath',
                labelWidth: 115,
                display: false,
                type: 'textarea',
                span: 24,
@@ -648,18 +758,20 @@
              {
                label: '树结构展开列',
                prop: 'expandCols',
                labelWidth: 110,
                labelWidth: 115,
                display: false,
                span: 12
              },
              {
                label: '参照树设置',
                prop: 'showLinkAbs',
                labelWidth: 115,
                display: false,
              },
              {
                label: '分隔符',
                prop: 'separator',
                labelWidth: 115,
                display: false,
              },
              {
@@ -667,6 +779,7 @@
                prop: 'expandMode',
                display: false,
                type: 'radio',
                labelWidth: 115,
                value: '1',
                dicData: [
                  {
@@ -678,6 +791,20 @@
                    value: '0'
                  }
                ]
              },
              {
                label: 'B/S自定义查询',
                prop: 'bsCustQueryCLsOrUrl',
                display: false,
                labelWidth: 115,
                span: 12
              },
              {
                label: 'C/S自定义查询',
                prop: 'csCustQueryCLsOrUrl',
                display: false,
                labelWidth: 115,
                span: 12
              },
              {
                label: '根节点显示表达式',
@@ -780,7 +907,6 @@
    // 增加
    addClickHandler() {
      console.log(this.sourceData);
      if (!this.sourceData || !this.sourceData.plOId) {
        this.$message.error('请在上方选择一条数据后进行添加');
        return;
@@ -788,22 +914,11 @@
      this.$refs.crud.rowAdd();
    },
    // 编辑打开表单前
    beforeOpen(done, type) {
      if (type === 'edit') {
        this.form.showType = 'Ludc';
        this.$set(this.form, 'showType', 'Ludc');
        // this.$set(this.option.group[0].column[0],'value','Ludc');
        // this.option.group[0].column[0].value = 'Ludc';
        done();
      } else {
        done();
      }
    },
    // 增加关闭对话框 清空event数组
    beforeClose(done) {
      this.eventData = [];
      this.showTypeChangeFlag = false;
      this.linkTypeChangeFlag = false;
      done();
    },
@@ -823,13 +938,13 @@
          };
        });
      }
      console.log('row',row);
      this.searchTargerChangeFlag = false;
      this.$refs.crud.rowEdit(row);
      console.log(this.form);
    },
    // 删除
    rowDeleteHandler(row) {
      console.log(row);
      this.$confirm('您确定要删除所选择的数据吗?', '提示', {
        confirmButtonText: '确定',
        cancelButtonText: '取消',
@@ -858,13 +973,31 @@
        row.SubUIObjType = row.showType;
        row.showType = "";
      }
      console.log(this.sourceData);
      const params = {
        ...row,
        tabPageOId: this.sourceData.plOId
      }
      addPageDefination(params).then(res => {
        console.log(res);
        if (res.data.code === 200) {
          this.$message.success(res.data.obj);
          this.getTableList();
          done();
        }
      }).catch(err => {
        loading();
      })
    },
    rowUpdateHandler(row, index, done, loading) {
      if (row.templateType === '6') {
        row.SubUIObjType = row.showType;
        row.showType = "";
      }
      const params = {
        ...row,
        tabPageOId: this.sourceData.plOId
      }
      updatePageDefination(params).then(res => {
        if (res.data.code === 200) {
          this.$message.success(res.data.obj);
          this.getTableList();
@@ -926,7 +1059,7 @@
    // 模板类型为表格
    templateTypeTable(val) {
      if (!val) return;
      this.updateDisplay(val, ['showType', 'templateId', 'queryTemplateName']);
      this.updateDisplay(val, ['showType', 'templateId', 'queryTemplateName', 'bsCustQueryCLsOrUrl', 'csCustQueryCLsOrUrl']);
    },
    // 模板类型为自定义模板
@@ -940,13 +1073,13 @@
    // 模板类型为树表
    templateTypeTreeTable(val) {
      if (!val) return;
      this.updateDisplay(val, ['showType', 'templateId', 'queryTemplateName', 'expandCols', 'expandMode']);
      this.updateDisplay(val, ['showType', 'templateId', 'queryTemplateName', 'expandCols', 'expandMode', 'bsCustQueryCLsOrUrl', 'csCustQueryCLsOrUrl']);
    },
    // 模板类型为表单
    templateTypeForm(val) {
      if (!val) return;
      this.updateDisplay(val, ['showType', 'templateId', 'queryTemplateName']);
      this.updateDisplay(val, ['showType', 'templateId', 'queryTemplateName', 'bsCustQueryCLsOrUrl', 'csCustQueryCLsOrUrl']);
    },
    // 模板类型为树
@@ -954,7 +1087,7 @@
      if (!val) return;
      const searchTarger = this.option.column.find(item => item.prop === 'searchTarger');  // 获取搜索类型配置项
      searchTarger.display = false; // 不展示搜索类型
      this.updateDisplay(val, ['showType', 'queryTemplateName', 'rootContent', 'showAbs', 'showLinkAbs', 'separator', 'expandMode', 'linkType']);
      this.updateDisplay(val, ['showType', 'queryTemplateName', 'rootContent', 'showAbs', 'showLinkAbs', 'separator', 'expandMode', 'linkType', 'bsCustQueryCLsOrUrl', 'csCustQueryCLsOrUrl']);
    },
    // 模板类型为UI定义
@@ -962,7 +1095,7 @@
      if (!val) return;
      const searchTarger = this.option.column.find(item => item.prop === 'searchTarger');  // 获取搜索类型配置项
      searchTarger.display = false; // 不展示搜索类型
      this.updateDisplay(val, ['showType', 'SubUILayout', 'searchType', 'searchObjType', 'queryTemplateName']);
      this.updateDisplay(val, ['showType', 'SubUILayout', 'searchType', 'searchObjType', 'queryTemplateName', 'bsCustQueryCLsOrUrl', 'csCustQueryCLsOrUrl']);
    },
    // 查找数组中对象索引
@@ -996,7 +1129,6 @@
        this.$message.error('请选择一条数据');
        return;
      }
      console.log(this.selectList);
      this.btnDesignVisible = true;
      this.formBtnOid = this.selectList[0].id;
      this.getTabBtnTree();
@@ -1042,7 +1174,7 @@
    // 按钮设计信息参数信息修改
    paramsRowEditHandler(row) {
      this.$refs.paramsCrud.rowEdit(row);
      this.$refs.paramsCrud.rowEdit(row, row.$index);
    },
    // 按钮设计参数信息添加按钮
@@ -1123,7 +1255,7 @@
        ...this.basicForm,
        parentId: this.nodeTreeRow.oId === 'parentNode' ? '' : this.nodeTreeRow.parentId,
        buttonParams: bottomParams,
        tableOId:this.selectList[0].id
        tableOId: this.selectList[0].id
      } : {
        ...this.basicForm,
        buttonParams: bottomParams
@@ -1161,7 +1293,6 @@
        type: 'warning'
      }).then(() => {
        deleteTabButton(this.nodeTreeRow).then(res => {
          // console.log(res);
          if (res.data.code === 200) {
            this.$message.success('删除成功');
            this.getTabBtnTree();
@@ -1204,7 +1335,6 @@
    // 打开克隆对话框
    rowCloneHandler(row) {
      console.log(row);
      this.fromOid = this.sourceData.plOId;
      this.sourceOId = row.id;
      this.$refs.cloneDialog.openDialog(row);
@@ -1222,7 +1352,6 @@
        return;
      }
      joinBtn(this.nodeTreeRow).then(res => {
        // console.log(res);
        if (res.data.code === 200) {
          this.$message.success(res.data.obj);
          this.getTabBtnTree();
@@ -1236,7 +1365,6 @@
        this.$message.error('请选择节点进行修改');
        return;
      }
      if (this.nodeTreeRow.oId === "parentNode") {
        this.$message.error('顶层节点不允许调整');
        return;