From b027a6a6749f51b45fb0593b260a1d4d9cd77932 Mon Sep 17 00:00:00 2001
From: 田源 <lastanimals@163.com>
Date: 星期三, 04 十二月 2024 11:40:16 +0800
Subject: [PATCH] 表单定义切换源对象清空选择模板、查询模板&&切换搜索类型清空链接类型、选择模板、查询模板

---
 Source/plt-web/plt-web-ui/src/views/modelingMenu/ui/uiDefine/rightRegion/bottomTable/index.vue | 1002 +++++++++++++++++++++++++++++++++++-----------------------
 1 files changed, 607 insertions(+), 395 deletions(-)

diff --git a/Source/plt-web/plt-web-ui/src/views/modelingMenu/ui/uiDefine/rightRegion/bottomTable/index.vue b/Source/plt-web/plt-web-ui/src/views/modelingMenu/ui/uiDefine/rightRegion/bottomTable/index.vue
index 097644e..b035270 100644
--- a/Source/plt-web/plt-web-ui/src/views/modelingMenu/ui/uiDefine/rightRegion/bottomTable/index.vue
+++ b/Source/plt-web/plt-web-ui/src/views/modelingMenu/ui/uiDefine/rightRegion/bottomTable/index.vue
@@ -1,15 +1,15 @@
 <template>
-  <basic-container>
+  <div>
     <avue-crud
       ref="crud"
       v-model="form"
+      :before-close="beforeClose"
+      :before-open="beforeOpen"
       :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">
@@ -21,36 +21,31 @@
         </el-button>
       </template>
 
-      <!-- eventKey鎿嶄綔鎸夐挳 -->
-      <template slot="eventButtonForm" slot-scope="scope">
-        <div style="width: 100%;display: flex;justify-content: center">
-          <el-button plain size="mini" type="primary" @click="formDataAddClickHandler">鍒涘缓</el-button>
-          <el-button plain size="mini" type="danger" @click="formDataDelClickHandler">鍒犻櫎</el-button>
-          <el-button plain size="mini" type="primary" @click="moveUp">涓婄Щ</el-button>
-          <el-button plain size="mini" type="primary" @click="moveDown">涓嬬Щ</el-button>
-        </div>
+      <template slot="menu" slot-scope="scope">
+        <el-button icon="el-icon-edit" size="small" type="text" @click="editBtnClick(scope.row)">缂栬緫
+        </el-button>
+        <el-button icon="el-icon-delete" size="small" type="text" @click="rowDeleteHandler(scope.row)">鍒犻櫎
+        </el-button>
+        <el-button icon="el-icon-document-copy" size="small" type="text" @click="rowCloneHandler(scope.row)">鍏嬮殕
+        </el-button>
       </template>
+
       <!-- eventKey浠ュ強eventValue鏄剧ず鍖哄煙 -->
       <template slot="bottomValueForm" slot-scope="scope">
-        <div style="height: 200px; width: 95%; border: 1px solid #bdbbbb;overflow-y: auto">
-          <!-- 鍐呭 -->
-          <el-table
-            :data="FormData"
-            :highlight-current-row="true"
-            style="width: 100%"
-            @row-click="formDataRowClick">
-            <el-table-column
-              align="center"
-              label="EventKey"
-              prop="eventKey">
-            </el-table-column>
-            <el-table-column
-              align="center"
-              label="EventValue"
-              prop="eventValue">
-            </el-table-column>
-          </el-table>
-        </div>
+        <avue-crud
+          :data="eventData"
+          :option="eventOption"
+          @row-click="formDataRowClick">
+          <template slot="menuLeft" slot-scope="scope">
+            <el-button plain size="mini" type="primary" @click="formDataAddClickHandler">鍒涘缓</el-button>
+          </template>
+
+          <template slot="menu" slot-scope="scope">
+            <el-button plain size="mini" type="danger" @click="formDataDelClickHandler(scope.row)">鍒犻櫎</el-button>
+            <el-button plain size="mini" type="primary" @click="moveUp(scope.row)">涓婄Щ</el-button>
+            <el-button plain size="mini" type="primary" @click="moveDown(scope.row)">涓嬬Щ</el-button>
+          </template>
+        </avue-crud>
       </template>
 
       <!-- 鍒囨崲鎼滅储绫诲瀷 婧愬璞� 鐩爣瀵硅薄鏄剧ずlabel鍒囨崲 -->
@@ -61,6 +56,52 @@
         <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">绀轰緥锛歫ava_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瑙f瀽绫诲瀷 <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
       v-dialogDrag
@@ -68,9 +109,9 @@
       append-to-body="true"
       class="avue-dialog"
       title="閰嶇疆鎸夐挳"
-      width="70%"
+      width="75%"
       @close="dialogClose">
-      <el-container>
+      <el-container v-loading="dialogLoading">
         <el-header style="height: 40px !important;">
           <div style="display: flex">
             <el-button :disabled="!disabledBtn" plain size="mini" type="primary" @click="addClickBtnHandler">娣诲姞
@@ -83,9 +124,9 @@
             </el-button>
             <el-button :disabled="disabledBtn" plain size="mini" type="primary" @click="escClickBtnHandler">鍙栨秷
             </el-button>
-            <el-button plain size="mini" type="primary">璋冩暣涓轰笅绾ф寜閽�</el-button>
-            <el-button plain size="mini" type="primary">璋冩暣涓轰笂绾ф寜閽�</el-button>
-            <el-button plain size="mini" type="primary">澶嶅埗鍒板叾浠栫粍浠�</el-button>
+            <el-button plain size="mini" type="primary" @click="changeBottomBtnHandler">璋冩暣涓轰笅绾ф寜閽�</el-button>
+            <el-button plain size="mini" type="primary" @click="changeTopBtnHandler">璋冩暣涓轰笂绾ф寜閽�</el-button>
+            <el-button plain size="mini" type="primary" @click="cloneClickBtnHandler">澶嶅埗鍒板叾浠栫粍浠�</el-button>
           </div>
         </el-header>
         <el-container>
@@ -129,12 +170,17 @@
 
                   <el-form-item label="Action锛�" prop="Action">
                     <el-col :span="14">
-                      <el-input v-model="basicForm.actionOId" :readonly="disabledBtn"></el-input>
+                      <div style="display: flex">
+                        <el-input v-model="basicForm.actionName" :readonly="disabledBtn"></el-input>
+                        <el-button :disabled="disabledBtn" size="mini" style="margin-left: 10px" type="success"
+                                   @click="actionFoucus">閫夋嫨
+                        </el-button>
+                      </div>
                     </el-col>
                   </el-form-item>
 
                   <el-col :span="12">
-                    <el-form-item label="鏄惁鎺堟潈锛�" prop="resource">
+                    <el-form-item label="鏄惁鎺堟潈锛�" prop="authorization">
                       <el-radio v-model="basicForm.authorization" :disabled="disabledBtn" label="0">鏄�</el-radio>
                       <el-radio v-model="basicForm.authorization" :disabled="disabledBtn" label="1">鍚�</el-radio>
                     </el-form-item>
@@ -168,10 +214,12 @@
               <el-divider content-position="left">鍙傛暟淇℃伅</el-divider>
               <avue-crud
                 ref="paramsCrud"
+                v-model="paramsForm"
                 :data="paramsData"
                 :option="paramsOption"
                 style="margin-top: 20px"
-                @row-save="paramsRowSave">
+                @row-save="paramsRowSave"
+                @row-update="paramsRowUpdate">
                 <template slot="menuLeft" slot-scope="scope">
                   <el-button :disabled="disabledBtn" icon="el-icon-plus" plain size="small" type="primary"
                              @click="paramsRowAddClickHandler">鍒涘缓
@@ -179,6 +227,9 @@
                 </template>
 
                 <template slot="menu" slot-scope="scope">
+                  <el-button :disabled="disabledBtn" icon="el-icon-edit" size="small" type="text"
+                             @click="paramsRowEditHandler(scope.row)">淇敼
+                  </el-button>
                   <el-button :disabled="disabledBtn" icon="el-icon-delete" size="small" type="text"
                              @click="paramsRowDeleteHandler(scope.row)">鍒犻櫎
                   </el-button>
@@ -190,80 +241,110 @@
         </el-container>
       </el-container>
     </el-dialog>
-  </basic-container>
+    <action-dialog ref="actionDialog" @updataAction="actionSaveHandler"></action-dialog>
+    <clone-dialog ref="cloneDialog" :fromOid="fromOid" :sourceOId="sourceOId" paramsType="tab"
+                  type="pageDef"></clone-dialog>
+    <clone-dialog ref="cloneBtnDialog" :fromOid="formBtnOid" :sourceOId="sourceBtnOid" paramsType="pageDef"
+                  type="tabButton"></clone-dialog>
+  </div>
 </template>
 
 <script>
 import basicOption from "@/util/basic-option";
 import func from "@/util/func";
 import {
-  getBtmDatasByPage,
-  getPortalVIDatasByPage,
-  getQTInfoDatasByPage,
+  getPLPageDefinations,
   getTabButtons,
   addTapButton,
-  updateTapButton
-} from "@/api/UI/uiDefine/api";
+  updateTapButton,
+  addPageDefination,
+  deleteTabButton,
+  delPageDefination,
+  joinBtn,
+  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";
 
 export default {
   props: {
     sourceData: {
-      type: Array,
-      default: () => [
-        {
-          "controlPath": "",
-          "description": "",
-          "eventKey": "",
-          "eventMap": null,
-          "eventValue": "",
-          "expandCols": "",
-          "expandMode": "",
-          "extAttr": "",
-          "id": "ABAE25CE-867E-9C73-AC1A-B316FD91C65B",
-          "isShowImage": "",
-          "linkType": "parttodocument",
-          "name": "鎶�鏈枃浠�",
-          "navigatorType": "",
-          "orderField": "",
-          "orderMode": "",
-          "orientation": "",
-          "qryType": null,
-          "queryTemplateName": "QueryPartEngineeringTechnology",
-          "refTreeSet": "",
-          "returnRows": "",
-          "rootContent": "",
-          "searchTarger": "2",
-          "separator": "",
-          "seq": "1",
-          "showAbs": "",
-          "showContent": "",
-          "showContentRelation": "",
-          "showContentTable": "",
-          "showContentType": "",
-          "showExpression": "",
-          "showExpressionRoot": "",
-          "showLinkAbs": "",
-          "showType": "document",
-          "subUILayout": "",
-          "subUIObjType": "",
-          "tabPageOId": "98F9082F-BAF4-FB81-3230-32590B34A329",
-          "templateId": "PartEngineeringTechnology_list",
-          "templateType": "1",
-          "type": 3,
-          "uiLayout": null,
-          "uiParser": "",
-          "validity": ""
-        }
-      ]
+      type: Object,
+      default: () => {
+      }
     },
     height: {
       type: String,
       default: () => "auto"
     }
   },
+  components: {
+    actionDialog,
+    cloneDialog
+  },
   name: "index",
   data() {
     return {
+      queryTemplateNameList: [],
+      templateIdList: [],
+      searchTargerChangeFlag: false,
+      showTypeChangeFlag: false,
+      linkTypeChangeFlag: false,
+      formBtnOid: '',
+      sourceBtnOid: '',
+      sourceOId: '',
+      fromOid: '',
+      paramsForm: {},
+      eventOption: {
+        ...basicOption,
+        addBtn: false,
+        editBtn: false,
+        delBtn: false,
+        refreshBtn: false,
+        highlightCurrentRow: true,
+        height: 200,
+        column: [
+          {
+            label: 'EventKey',
+            prop: 'eventKey',
+            type: 'select',
+            value: 'SelectionEvent',
+            dicData: [
+              {
+                label: 'SelectionEvent',
+                value: 'SelectionEvent'
+              },
+              {
+                label: 'DBClickEvent',
+                value: 'DBClickEvent'
+              },
+              {
+                label: 'ClickEvent',
+                value: 'ClickEvent'
+              }
+            ],
+            cell: true
+          },
+          {
+            label: 'EventValue',
+            prop: 'eventValue',
+            cell: true,
+            rules: [
+              {
+                required: true,
+                message: '璇疯緭鍏ventValue',
+                trigger: 'blur'
+              }
+            ]
+          }
+        ]
+      },
+      eventData: [],
+      btnActionVisible: false,
+      dialogLoading: false,
       saveType: '',
       disabledBtn: true,
       paramsData: [],
@@ -279,11 +360,27 @@
         column: [
           {
             label: '鍚嶇О',
-            prop: 'name'
+            prop: 'name',
+            span: 24,
+            rules: [
+              {
+                required: true,
+                message: '璇疯緭鍏ュ悕绉�',
+                trigger: 'blur'
+              }
+            ]
           },
           {
             label: '鍊�',
-            prop: 'value'
+            prop: 'value',
+            span: 24,
+            rules: [
+              {
+                required: true,
+                message: '璇疯緭鍏ュ��',
+                trigger: 'blur'
+              }
+            ]
           }
         ]
       },
@@ -299,13 +396,7 @@
       basicForm: {
         seq: 1
       },
-      treeData: [
-        {
-          label: this.sourceData[0].name,
-          oId: 'parentNode',
-          children: []
-        }
-      ],
+      treeData: [],
       treeOption: {
         menu: false,
         addBtn: false,
@@ -320,13 +411,15 @@
       btnDesignVisible: false,
       FormData: [],
       form: {},
-      data: this.sourceData,
+      data: [],
       option: {
         ...basicOption,
         height: this.height,
         addBtn: false,
         index: true,
         calcHeight: -30,
+        editBtn: false,
+        delBtn: false,
         column: [
           {
             label: '鍚嶇О',
@@ -352,12 +445,13 @@
             ],
           },
           {
-            label: 'UI瑙f瀽绫诲瀷',
+            label: '',
             prop: 'uiParser',
             hide: true,
+            labelWidth: 100,
           },
           {
-            label: '鎵╁睍灞炴��',
+            label: '',
             prop: 'extAttr',
             hide: true,
           },
@@ -398,7 +492,11 @@
               return val;
             },
             change: (val) => {
-              console.log(val);
+              const list = ['showType', 'linkType', 'templateId', 'SubUILayout', 'searchObjType', 'queryTemplateName', 'controlPath', 'expandCols', 'rootContent', 'showAbs', 'showLinkAbs', 'separator']
+              // list.forEach(item => {
+              //   this.form[item] = "";
+              // })
+              // this.form.searchTarger = '1'
               const searchTarger = this.option.column.find(item => item.prop === 'searchTarger');  // 鑾峰彇鎼滅储绫诲瀷閰嶇疆椤�
               searchTarger.display = true; // 鍒囨崲榛樿灞曠ず鎼滅储绫诲瀷
               // 妯℃澘绫诲瀷涓鸿〃鏍�
@@ -463,6 +561,16 @@
                 const obj = this.option.group[0].column.find(item => item.prop === 'linkType');
                 obj.display = val.value !== '1';
               }
+
+              if (this.searchTargerChangeFlag) {
+                // 鍒囨崲娓呯┖妯℃澘绫诲瀷
+                const list = ['showType', 'linkType', 'templateId', 'SubUILayout', 'queryTemplateName', 'searchObjType', 'bsCustQueryCLsOrUrl', 'csCustQueryCLsOrUrl'];
+                list.forEach(item => {
+                  this.form[item] = '';
+                })
+              } else {
+                this.searchTargerChangeFlag = true;
+              }
             }
           },
           {
@@ -473,7 +581,6 @@
         ],
         group: [
           {
-            icon: 'el-icon-folder-opened',
             label: '',
             arrow: false,
             prop: 'group1',
@@ -481,155 +588,115 @@
               {
                 label: '婧愬璞�',
                 prop: 'showType',
-                type: 'table',
-                display: false,
+                type: 'select',
+                cascader: ['linkType', 'SubUILayout', 'searchObjType'],
                 placeholder: "璇疯緭鍏ュ唴瀹�",
-                props: {
-                  label: 'name',
-                  value: 'name'
-                },
-                children: {
-                  border: true,
-                  column: [{
-                    label: '鍚嶇О',
-                    search: true,
-                    searchSpan: 24,
-                    prop: 'name'
-                  }, {
-                    label: '鏍囩',
-                    prop: 'label'
-                  }],
-                },
-                onLoad: ({page, value, data}, callback) => {
-                  //page鍒嗛〉
-                  // 涓嶇鏄悳绱� 杩樻槸棣栨鍔犺浇閮戒細瑙﹀彂page 鎵�浠ュ彧闇�瑕佹嬁page瀛樺湪涓庡惁杩涜璇锋眰灏卞彲浠� 濡傛灉鍐嶅幓鍒ゆ柇data鎼滅储 鎴栬�卾alue鍒濇鍔犺浇灏变細閲嶅璇锋眰
-                  if (page) {
-                    const params = {
-                      "conditionMap[filterInputValue]": value ? value.name : ''
-                    };
-                    getBtmDatasByPage(page.currentPage, page.pageSize, params).then(res => {
-                      callback({
-                        total: res.data.total,
-                        data: res.data.data
-                      })
+                dicUrl: '/api/uiManagerController/getBtmDatasByPage?page=1&limit=-1',
+                filterable: true,
+                change: (val) => {
+                  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',
+                  desc: 'label'
+                },
+                rules: [
+                  {
+                    required: true,
+                    message: '璇烽�夋嫨鍐呭',
+                    trigger: 'change'
+                  }
+                ],
               },
               {
                 label: '閾炬帴绫诲瀷',
                 prop: 'linkType',
-                type: 'table',
+                type: 'select',
                 display: false,
+                filterable: true,
                 props: {
-                  label: 'viName',
-                  value: 'viName'
+                  label: 'name',
+                  value: 'name',
+                  desc: 'tag'
                 },
-                children: {
-                  border: true,
-                  column: [{
-                    label: '鍚嶇О',
-                    search: true,
-                    searchSpan: 24,
-                    prop: 'viName'
-                  }, {
-                    label: '绫诲瀷',
-                    prop: 'viType'
-                  }],
-                },
-                onLoad: ({page, value, data}, callback) => {
-                  if (page) {
-                    const params = {
-                      "conditionMap[selectBtmType]": this.form.showType,
-                      "conditionMap[filterInputValue]": data ? data.viName : '',
-                    };
-                    getPortalVIDatasByPage(page.currentPage, page.pageSize, params).then(res => {
-                      console.log(res);
-                      callback({
-                        total: res.data.total,
-                        data: res.data.data
-                      })
+                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: 'showTypea',
+                prop: 'templateId',
                 display: false,
-                type: 'table',
-                props: {
-                  label: 'viName',
-                  value: 'viName'
-                },
-                children: {
-                  border: true,
-                  column: [{
-                    label: '鍚嶇О',
-                    search: true,
-                    searchSpan: 24,
-                    prop: 'viName'
-                  }, {
-                    label: '绫诲瀷',
-                    prop: 'viType'
-                  }],
-                },
-                onLoad: ({page, value, data}, callback) => {
-                  if (page) {
-                    const params = {
-                      "conditionMap[selectBtmType]": this.form.showType,
-                      "conditionMap[filterInputValue]": data ? data.viName : '',
-                    };
-                    getPortalVIDatasByPage(page.currentPage, page.pageSize, params).then(res => {
-                      console.log(res);
-                      callback({
-                        total: res.data.total,
-                        data: res.data.data
-                      })
-                    })
+                formslot: true,
+                rules: [
+                  {
+                    required: true,
+                    message: '璇烽�夋嫨妯℃澘',
+                    trigger: 'submit'
                   }
-                },
+                ],
               },
               {
                 label: 'UI瀹氫箟',
-                prop: 'UI',
-                type: 'table',
+                prop: 'SubUILayout',
+                type: 'select',
+                filterable: true,
                 display: false,
                 props: {
-                  label: 'qtName',
-                  value: 'qtName'
+                  label: 'plName',
+                  value: 'plCode',
                 },
-                children: {
-                  border: true,
-                  column: [{
-                    label: '鍚嶇О',
-                    search: true,
-                    searchSpan: 24,
-                    prop: 'qtName'
-                  }, {
-                    label: '绫诲瀷',
-                    prop: 'btmName'
-                  }],
-                },
-                onLoad: ({page, value, data}, callback) => {
-                  if (page) {
-                    const params = {
-                      "conditionMap[selectBtmType]": this.form.showType,
-                      "conditionMap[filterInputValue]": data ? data.qtName : '',
-                    };
-                    getQTInfoDatasByPage(page.currentPage, page.pageSize, params).then(res => {
-                      callback({
-                        total: res.data.total,
-                        data: res.data.data
-                      })
-                    })
-                  }
-                },
+                dicUrl: '/api/uiManagerController/getUILayoutDatasByPage?page=1&limit=-1&conditionMap[selectBtmType]={{key}}',
               },
               {
                 label: '鏌ヨ绫诲瀷',
                 prop: 'searchType',
                 display: false,
+                value: '1',
                 type: 'radio',
                 span: 24,
                 dicData: [
@@ -646,112 +713,54 @@
               {
                 label: '鏌ヨ瀵硅薄绫诲瀷',
                 prop: 'searchObjType',
-                type: 'table',
+                type: 'select',
                 display: false,
                 labelWidth: 100,
                 props: {
                   label: 'qtName',
-                  value: 'qtName'
+                  value: 'qtName',
+                  desc: 'btmName'
                 },
-                children: {
-                  border: true,
-                  column: [{
-                    label: '鍚嶇О',
-                    search: true,
-                    searchSpan: 24,
-                    prop: 'qtName'
-                  }, {
-                    label: '绫诲瀷',
-                    prop: 'btmName'
-                  }],
-                },
-                onLoad: ({page, value, data}, callback) => {
-                  if (page) {
-                    const params = {
-                      "conditionMap[selectBtmType]": this.form.showType,
-                      "conditionMap[filterInputValue]": data ? data.qtName : '',
-                    };
-                    getQTInfoDatasByPage(page.currentPage, page.pageSize, params).then(res => {
-                      callback({
-                        total: res.data.total,
-                        data: res.data.data
-                      })
-                    })
-                  }
-                },
+                dicUrl: '/api/uiManagerController/getLinkDatasByPage?page=1&limit=-1&conditionMap[selectBtmType]=',// cs绔湁闂 鏆傛椂涓嶅睍绀哄唴瀹�
               },
               {
                 label: '鏌ヨ妯℃澘',
-                prop: 'showTypes',
-                type: 'table',
+                prop: 'queryTemplateName',
+                type: 'select',
                 display: false,
-                props: {
-                  label: 'qtName',
-                  value: 'qtName'
-                },
-                children: {
-                  border: true,
-                  column: [{
-                    label: '鍚嶇О',
-                    search: true,
-                    searchSpan: 24,
-                    prop: 'qtName'
-                  }, {
-                    label: '绫诲瀷',
-                    prop: 'btmName'
-                  }],
-                },
-                onLoad: ({page, value, data}, callback) => {
-                  if (page) {
-                    const params = {
-                      "conditionMap[selectBtmType]": this.form.showType,
-                      "conditionMap[filterInputValue]": data ? data.qtName : '',
-                    };
-                    getQTInfoDatasByPage(page.currentPage, page.pageSize, params).then(res => {
-                      callback({
-                        total: res.data.total,
-                        data: res.data.data
-                      })
-                    })
-                  }
-                },
+                formslot: true,
               },
               {
                 label: '鎺у埗璺緞',
-                prop: 'kzlj',
+                prop: 'controlPath',
                 display: false,
                 type: 'textarea',
+                span: 24,
                 rows: 3
               },
               {
-                label: '鏍硅妭鐐规樉绀鸿〃杈惧紡',
-                prop: 'genjiedian',
+                label: '鏍戠粨鏋勫睍寮�鍒�',
+                prop: 'expandCols',
+                labelWidth: 110,
                 display: false,
-                labelWidth: 135,
-                span: 24
-              },
-              {
-                label: '鏍戣妭鐐规樉绀鸿〃杈惧紡',
-                prop: 'shujiedian',
-                display: false,
-                labelWidth: 135,
-                span: 24
+                span: 12
               },
               {
                 label: '鍙傜収鏍戣缃�',
-                prop: 'canzhaoshu',
+                prop: 'showLinkAbs',
                 display: false,
               },
               {
                 label: '鍒嗛殧绗�',
-                prop: 'fgf',
+                prop: 'separator',
                 display: false,
               },
               {
                 label: '灞曞紑鏂瑰紡',
-                prop: 'zkfs',
+                prop: 'expandMode',
                 display: false,
                 type: 'radio',
+                value: '1',
                 dicData: [
                   {
                     label: '閫愮骇灞曞紑',
@@ -759,52 +768,50 @@
                   },
                   {
                     label: '鍏ㄩ儴灞曞紑',
-                    value: '2'
+                    value: '0'
                   }
                 ]
+              },
+              {
+                label: '鏍硅妭鐐规樉绀鸿〃杈惧紡',
+                prop: 'rootContent',
+                display: false,
+                labelWidth: 135,
+                span: 12
+              },
+              {
+                label: '鏍戣妭鐐规樉绀鸿〃杈惧紡',
+                prop: 'showAbs',
+                display: false,
+                labelWidth: 135,
+                span: 12
+              },
+              {
+                label: 'B/S鑷畾涔夋煡璇�',
+                prop: 'bsCustQueryCLsOrUrl',
+                display: false,
+                labelWidth: 115,
+                span: 12
+              },
+              {
+                label: 'C/S鑷畾涔夋煡璇�',
+                prop: 'csCustQueryCLsOrUrl',
+                display: false,
+                labelWidth: 115,
+                span: 12
               },
             ]
           },
           {
-            icon: 'el-icon-folder-opened',
             label: '',
             arrow: false,
             prop: 'group2',
             column: [
               {
-                label: 'EventKey',
-                prop: 'eventKey',
-                type: 'select',
-                value: 'SelectionEvent',
-                dicData: [
-                  {
-                    label: 'SelectionEvent',
-                    value: 'SelectionEvent'
-                  },
-                  {
-                    label: 'DBClickEvent',
-                    value: 'DBClickEvent'
-                  },
-                  {
-                    label: 'ClickEvent',
-                    value: 'ClickEvent'
-                  }
-                ],
-              },
-              {
-                label: 'EventValue',
-                prop: 'eventValue',
-                labelWidth: 100
-              },
-              {
-                label: '',
-                prop: 'eventButton',
-                span: 24
-              },
-              {
                 label: '',
                 prop: 'bottomValue',
-                span: 24
+                span: 24,
+                labelWidth: 10
               },
             ]
           }
@@ -816,8 +823,34 @@
       formDataRow: {},
     }
   },
+  watch: {
+    sourceData: {
+      handler(val) {
+        if (val && val.plOId) {
+          this.getTableList();
+        } else {
+          this.data = [];
+        }
+      },
+      immediate: true,
+      deep: true
+    }
+  },
   computed: {},
   methods: {
+    //鑾峰彇鍒楄〃鏁版嵁
+    getTableList() {
+      const params = {
+        pageContextOId: this.sourceData.plOId
+      }
+      getPLPageDefinations(params).then(res => {
+        this.data = res.data.data;
+        this.selectList = [];
+        this.$refs.crud.clearSelection();
+        this.tableLoading = false;
+      })
+    },
+
     // 鏍规嵁涓嶅悓鍊煎尯鍒嗙被鍨�
     templateTypeValueHandler(val) {
       const componentMap = {
@@ -854,7 +887,102 @@
 
     // 澧炲姞
     addClickHandler() {
+      if (!this.sourceData || !this.sourceData.plOId) {
+        this.$message.error('璇峰湪涓婃柟閫夋嫨涓�鏉℃暟鎹悗杩涜娣诲姞');
+        return;
+      }
       this.$refs.crud.rowAdd();
+    },
+
+    // 澧炲姞鍏抽棴瀵硅瘽妗� 娓呯┖event鏁扮粍
+    beforeClose(done) {
+      this.eventData = [];
+      done();
+    },
+
+    // 淇敼
+    editBtnClick(row) {
+      this.eventData = [];
+      if (row.eventKey && row.eventValue) {
+        let keys = row.eventKey.split(',');
+        let values = row.eventValue.split(',');
+
+        this.eventData = keys.map((key, index) => {
+          return {
+            index: this.eventData.length,
+            eventKey: key.trim(),
+            eventValue: values[index],
+            $cellEdit: true
+          };
+        });
+      }
+      this.searchTargerChangeFlag = false;
+      this.$refs.crud.rowEdit(row);
+    },
+
+    // 鍒犻櫎
+    rowDeleteHandler(row) {
+      this.$confirm('鎮ㄧ‘瀹氳鍒犻櫎鎵�閫夋嫨鐨勬暟鎹悧锛�', '鎻愮ず', {
+        confirmButtonText: '纭畾',
+        cancelButtonText: '鍙栨秷',
+        type: 'warning'
+      }).then(() => {
+        const params = {
+          oids: row.id
+        }
+        delPageDefination(params).then(res => {
+          if (res.data.code === 200) {
+            this.$message.success('鍒犻櫎鎴愬姛');
+            this.getTableList();
+          }
+        })
+      }).catch(() => {
+        this.$message({
+          type: 'info',
+          message: '宸插彇娑堝垹闄�'
+        });
+      });
+    },
+
+    // 淇濆瓨
+    rowSaveHandler(row, done, loading) {
+      if (row.templateType === '6') {
+        row.SubUIObjType = row.showType;
+        row.showType = "";
+      }
+      const params = {
+        ...row,
+        tabPageOId: this.sourceData.plOId
+      }
+      addPageDefination(params).then(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();
+          done();
+        }
+      }).catch(err => {
+        loading();
+      })
     },
 
     // 瀵硅瘽妗嗚〃鏍艰鐐瑰嚮
@@ -864,41 +992,37 @@
 
     // 瀵硅瘽妗嗚〃鏍兼坊鍔�
     formDataAddClickHandler() {
-      if (!this.form.eventKey) {
-        this.$message.error('璇烽�夋嫨EventKey');
-        return;
-      }
-
-      if (!this.form.eventValue) {
-        this.$message.error('璇疯緭鍏ventValue');
-        return;
-      }
-
-      if (this.FormData.length >= 1) {
-        const eventValueStatus = this.FormData.some(item => item.eventValue === this.form.eventValue);
-
-        if (eventValueStatus) {
-          this.$message.error('宸插瓨鍦ㄧ浉鍚岀殑 EventValue锛屼笉鑳介噸澶嶆坊鍔�');
-          return;
-        }
-      }
+      // if (!this.form.eventKey) {
+      //   this.$message.error('璇烽�夋嫨EventKey');
+      //   return;
+      // }
+      //
+      // if (!this.form.eventValue) {
+      //   this.$message.error('璇疯緭鍏ventValue');
+      //   return;
+      // }
+      //
+      // if (this.eventData.length >= 1) {
+      //   const eventValueStatus = this.eventData.some(item => item.eventValue === this.form.eventValue);
+      //
+      //   if (eventValueStatus) {
+      //     this.$message.error('宸插瓨鍦ㄧ浉鍚岀殑 EventValue锛屼笉鑳介噸澶嶆坊鍔�');
+      //     return;
+      //   }
+      // }
       const obj = {
-        index: this.FormData.length,
-        eventKey: this.form.eventKey,
-        eventValue: this.form.eventValue
+        index: this.eventData.length,
+        eventKey: this.form.eventKey || 'SelectionEvent',
+        eventValue: this.form.eventValue,
+        $cellEdit: true
       }
 
-      this.FormData.push(obj);
+      this.eventData.push(obj);
     },
 
     // 瀵硅瘽妗嗚〃鏍煎垹闄�
-    formDataDelClickHandler() {
-      if (func.isEmptyObject(this.formDataRow)) {
-        this.$message.error('璇烽�夋嫨涓�鏉℃暟鎹�');
-        return;
-      }
-
-      this.FormData = this.FormData.filter(item => item.index !== this.formDataRow.index);
+    formDataDelClickHandler(row) {
+      this.eventData = this.eventData.filter(item => item.index !== row.index);
     },
 
     // 妯℃澘绫诲瀷鏄剧ず闅愯棌鏂规硶
@@ -912,7 +1036,7 @@
     // 妯℃澘绫诲瀷涓鸿〃鏍�
     templateTypeTable(val) {
       if (!val) return;
-      this.updateDisplay(val, ['showType', 'showTypea', 'showTypes']);
+      this.updateDisplay(val, ['showType', 'templateId', 'queryTemplateName', 'bsCustQueryCLsOrUrl', 'csCustQueryCLsOrUrl']);
     },
 
     // 妯℃澘绫诲瀷涓鸿嚜瀹氫箟妯℃澘
@@ -920,19 +1044,19 @@
       if (!val) return;
       const searchTarger = this.option.column.find(item => item.prop === 'searchTarger');  // 鑾峰彇鎼滅储绫诲瀷閰嶇疆椤�
       searchTarger.display = false; // 涓嶅睍绀烘悳绱㈢被鍨�
-      this.updateDisplay(val, ['kzlj']);
+      this.updateDisplay(val, ['controlPath']);
     },
 
     // 妯℃澘绫诲瀷涓烘爲琛�
     templateTypeTreeTable(val) {
       if (!val) return;
-      this.updateDisplay(val, ['showType', 'showTypea', 'showTypes', 'zkl', 'zkfs']);
+      this.updateDisplay(val, ['showType', 'templateId', 'queryTemplateName', 'expandCols', 'expandMode', 'bsCustQueryCLsOrUrl', 'csCustQueryCLsOrUrl']);
     },
 
     // 妯℃澘绫诲瀷涓鸿〃鍗�
     templateTypeForm(val) {
       if (!val) return;
-      this.updateDisplay(val, ['showType', 'showTypea', 'showTypes']);
+      this.updateDisplay(val, ['showType', 'templateId', 'queryTemplateName', 'bsCustQueryCLsOrUrl', 'csCustQueryCLsOrUrl']);
     },
 
     // 妯℃澘绫诲瀷涓烘爲
@@ -940,7 +1064,7 @@
       if (!val) return;
       const searchTarger = this.option.column.find(item => item.prop === 'searchTarger');  // 鑾峰彇鎼滅储绫诲瀷閰嶇疆椤�
       searchTarger.display = false; // 涓嶅睍绀烘悳绱㈢被鍨�
-      this.updateDisplay(val, ['showType', 'showTypes', 'genjiedian', 'shujiedian', 'canzhaoshu', 'fgf', 'zkfs', 'linkType']);
+      this.updateDisplay(val, ['showType', 'queryTemplateName', 'rootContent', 'showAbs', 'showLinkAbs', 'separator', 'expandMode', 'linkType', 'bsCustQueryCLsOrUrl', 'csCustQueryCLsOrUrl']);
     },
 
     // 妯℃澘绫诲瀷涓篣I瀹氫箟
@@ -948,7 +1072,7 @@
       if (!val) return;
       const searchTarger = this.option.column.find(item => item.prop === 'searchTarger');  // 鑾峰彇鎼滅储绫诲瀷閰嶇疆椤�
       searchTarger.display = false; // 涓嶅睍绀烘悳绱㈢被鍨�
-      this.updateDisplay(val, ['showType', 'UI', 'searchType', 'searchObjType', 'showTypes']);
+      this.updateDisplay(val, ['showType', 'SubUILayout', 'searchType', 'searchObjType', 'queryTemplateName', 'bsCustQueryCLsOrUrl', 'csCustQueryCLsOrUrl']);
     },
 
     // 鏌ユ壘鏁扮粍涓璞$储寮�
@@ -957,41 +1081,33 @@
     },
 
     // 涓婄Щ
-    moveUp() {
-      const index = this.findIndexByEventValue(this.FormData, this.formDataRow.eventValue);
+    moveUp(row) {
+      const index = this.findIndexByEventValue(this.eventData, row.eventValue);
       if (index > 0) {
-        // 浣跨敤 splice 鏂规硶鏉ユā鎷熶氦鎹�
-        const temp = this.FormData.splice(index - 1, 1, this.FormData[index])[0]; // 绉婚櫎 index-1 鐨勫厓绱狅紝骞跺湪鐩稿悓浣嶇疆鎻掑叆 index 鐨勫厓绱狅紝杩斿洖琚Щ闄ょ殑鍏冪礌
-        this.FormData.splice(index, 1, temp); // 鍦� index 浣嶇疆鎻掑叆涔嬪墠琚Щ闄ょ殑鍏冪礌
+        // 浣跨敤 splice 鏉ユā鎷熶氦鎹�
+        const temp = this.eventData.splice(index - 1, 1, this.eventData[index])[0]; // 绉婚櫎 index-1 鐨勫厓绱� 骞跺湪鐩稿悓浣嶇疆鎻掑叆 index 鐨勫厓绱� 杩斿洖琚Щ闄ょ殑鍏冪礌
+        this.eventData.splice(index, 1, temp); // 鍦� index 浣嶇疆鎻掑叆涔嬪墠琚Щ闄ょ殑鍏冪礌
       }
     },
 
     // 涓嬬Щ
-    moveDown() {
-      const index = this.findIndexByEventValue(this.FormData, this.formDataRow.eventValue);
-      const length = this.FormData.length;
+    moveDown(row) {
+      const index = this.findIndexByEventValue(this.eventData, row.eventValue);
+      const length = this.eventData.length;
       if (index < length - 1) {
-        const temp = this.FormData[index];
-        this.FormData.splice(index, 1, this.FormData.splice(index + 1, 1, temp)[0]);
+        const temp = this.eventData[index];
+        this.eventData.splice(index, 1, this.eventData.splice(index + 1, 1, temp)[0]);
       }
-    },
-
-    // 鎸夐挳璁捐鍏抽棴瀵硅瘽妗�
-    dialogClose() {
-
     },
 
     // 鎸夐挳璁捐
     btnDesignClickHandler() {
-      if (this.selectList.length <= 0) {
-        this.$message.error('璇疯嚦灏戦�夋嫨涓�鏉℃暟鎹�');
-        return;
-      }
-      if (this.selectList.length > 1) {
-        this.$message.error('鏈�澶氶�夋嫨涓�鏉℃暟鎹�');
+      if (this.selectList.length != 1) {
+        this.$message.error('璇烽�夋嫨涓�鏉℃暟鎹�');
         return;
       }
       this.btnDesignVisible = true;
+      this.formBtnOid = this.selectList[0].id;
       this.getTabBtnTree();
     },
 
@@ -1004,7 +1120,12 @@
       getTabButtons(params).then(res => {
         if (res.data.code === 200) {
           const data = res.data.data;
-          this.treeData[0].children = data;
+          this.treeData = [{
+            label: this.selectList[0].name,
+            oId: 'parentNode',
+            disabled: true,
+            children: data
+          }];
           this.treeLoading = false;
         } else {
           this.$message.error('璇锋鏌ユ帶鍒跺彴閿欒');
@@ -1028,9 +1149,20 @@
       this.paramsData.splice(row.$index, 1)
     },
 
+    // 鎸夐挳璁捐淇℃伅鍙傛暟淇℃伅淇敼
+    paramsRowEditHandler(row) {
+      this.$refs.paramsCrud.rowEdit(row, row.$index);
+    },
+
     // 鎸夐挳璁捐鍙傛暟淇℃伅娣诲姞鎸夐挳
     paramsRowAddClickHandler() {
       this.$refs.paramsCrud.rowAdd();
+    },
+
+    // 鎸夐挳璁捐鍙傛暟淇℃伅淇敼淇濆瓨
+    paramsRowUpdate(row, index, done, loading) {
+      this.paramsData.splice(index, 1, row);
+      done();
     },
 
     // 鎸夐挳璁捐鍙傛暟淇℃伅淇濆瓨
@@ -1064,7 +1196,7 @@
     // 鎸夐挳璁捐淇敼
     editClickBtnHandler() {
       if (func.isEmptyObject(this.nodeTreeRow)) {
-        this.$message.error('璇烽�夋嫨鑺傜偣杩涜娣诲姞');
+        this.$message.error('璇烽�夋嫨鑺傜偣杩涜淇敼');
         return;
       }
 
@@ -1087,6 +1219,7 @@
 
     // 鎸夐挳璁捐淇濆瓨
     saveClickBtnHandler() {
+      this.dialogLoading = true;
       const saveFunction = this.saveType === 'add' ? addTapButton : updateTapButton;
       const bottomParams = {};
       if (this.paramsData.length > 0) {
@@ -1094,12 +1227,12 @@
           bottomParams[item.name] = item.value
         })
       }
-      ;
 
       const params = this.saveType === 'add' ? {
         ...this.basicForm,
         parentId: this.nodeTreeRow.oId === 'parentNode' ? '' : this.nodeTreeRow.parentId,
-        buttonParams: bottomParams
+        buttonParams: bottomParams,
+        tableOId: this.selectList[0].id
       } : {
         ...this.basicForm,
         buttonParams: bottomParams
@@ -1112,7 +1245,10 @@
           this.getTabBtnTree();
           this.basicForm = {};
           this.paramsData = [];
+          this.dialogLoading = false;
         }
+      }).catch(err => {
+        this.dialogLoading = false;
       })
     },
 
@@ -1133,7 +1269,14 @@
         cancelButtonText: '鍙栨秷',
         type: 'warning'
       }).then(() => {
-
+        deleteTabButton(this.nodeTreeRow).then(res => {
+          if (res.data.code === 200) {
+            this.$message.success('鍒犻櫎鎴愬姛');
+            this.getTabBtnTree();
+            this.basicForm = {};
+            this.paramsData = [];
+          }
+        })
       }).catch(() => {
         this.$message({
           type: 'info',
@@ -1141,7 +1284,76 @@
         });
       });
     },
-  }
+
+    // 澶嶅埗鍒板叾浠栫粍浠�
+    cloneClickBtnHandler() {
+      if (func.isEmptyObject(this.nodeTreeRow)) {
+        this.$message.error('璇烽�夋嫨鑺傜偣杩涜澶嶅埗');
+        return;
+      }
+      if (this.nodeTreeRow.oId === "parentNode") {
+        this.$message.error('椤跺眰鑺傜偣涓嶅厑璁稿鍒�');
+        return;
+      }
+      this.sourceBtnOid = this.nodeTreeRow.oId;
+      this.$refs.cloneBtnDialog.openDialog(this.nodeTreeRow);
+    },
+
+    // 閫夋嫨action
+    actionFoucus() {
+      this.$refs.actionDialog.openDialog();
+    },
+
+    // 淇濆瓨action
+    actionSaveHandler(val) {
+      this.$set(this.basicForm, 'actionName', val.plName);
+      this.$set(this.basicForm, 'actionOId', val.plOId);
+    },
+
+    // 鎵撳紑鍏嬮殕瀵硅瘽妗�
+    rowCloneHandler(row) {
+      this.fromOid = this.sourceData.plOId;
+      this.sourceOId = row.id;
+      this.$refs.cloneDialog.openDialog(row);
+    },
+
+    // 璋冩暣涓轰笅绾ф寜閽�
+    changeBottomBtnHandler() {
+      if (func.isEmptyObject(this.nodeTreeRow)) {
+        this.$message.error('璇烽�夋嫨鑺傜偣杩涜淇敼');
+        return;
+      }
+
+      if (this.nodeTreeRow.oId === "parentNode") {
+        this.$message.error('椤跺眰鑺傜偣涓嶅厑璁歌皟鏁�');
+        return;
+      }
+      joinBtn(this.nodeTreeRow).then(res => {
+        if (res.data.code === 200) {
+          this.$message.success(res.data.obj);
+          this.getTabBtnTree();
+        }
+      })
+    },
+
+    // 璋冩暣涓轰笂绾ф寜閽�
+    changeTopBtnHandler() {
+      if (func.isEmptyObject(this.nodeTreeRow)) {
+        this.$message.error('璇烽�夋嫨鑺傜偣杩涜淇敼');
+        return;
+      }
+      if (this.nodeTreeRow.oId === "parentNode") {
+        this.$message.error('椤跺眰鑺傜偣涓嶅厑璁歌皟鏁�');
+        return;
+      }
+      exitBtn(this.nodeTreeRow).then(res => {
+        if (res.data.code === 200) {
+          this.$message.success(res.data.obj);
+          this.getTabBtnTree();
+        }
+      })
+    }
+  },
 }
 </script>
 

--
Gitblit v1.9.3