From 391eec3114a17e68652434c6eae610799d80290e Mon Sep 17 00:00:00 2001
From: ludc <ludc@vci-tech.com>
Date: 星期四, 16 一月 2025 11:13:43 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 Source/plt-web/plt-web-ui/src/views/modelingMenu/ui/uiDefine/rightRegion/bottomTable/index.vue |  551 +++++++++++++++++++++++++++++++++++++-----------------
 1 files changed, 375 insertions(+), 176 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 00148aa..5e14d9b 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
@@ -8,27 +8,39 @@
       :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">
-        <el-button icon="el-icon-plus" plain size="small" type="primary"
-                   @click="addClickHandler">澧炲姞
-        </el-button>
-        <el-button icon="el-icon-edit-outline" plain size="small" type="primary"
-                   @click="btnDesignClickHandler">鎸夐挳璁捐
+        <el-button v-if="permissionChildrenList.UiPageLayoutAddBtn" class="button-custom-icon" plain size="small"
+                   type="primary"
+                   @click="addClickHandler">
+          <icon-show :name="permissionChildrenList.UiPageLayoutAddBtn.source"></icon-show>
+          澧炲姞
         </el-button>
       </template>
 
       <template slot="menu" slot-scope="scope">
-        <el-button icon="el-icon-edit" size="small" type="text" @click="editBtnClick(scope.row)">缂栬緫
+        <el-button v-if="permissionChildrenList.UiPageLayoutDesignBtn" size="small" type="text"
+                   @click="btnDesignClickHandler(scope.row)">
+          <icon-show :name="permissionChildrenList.UiPageLayoutDesignBtn.source"></icon-show>
+          鎸夐挳璁捐
         </el-button>
-        <el-button icon="el-icon-delete" size="small" type="text" @click="rowDeleteHandler(scope.row)">鍒犻櫎
+        <el-button v-if="permissionChildrenList.UiPageLayoutEditBtn" size="small" type="text"
+                   @click="editBtnClick(scope.row)">
+          <icon-show :name="permissionChildrenList.UiPageLayoutEditBtn.source"></icon-show>
+          缂栬緫
         </el-button>
-        <el-button icon="el-icon-document-copy" size="small" type="text" @click="rowCloneHandler(scope.row)">鍏嬮殕
+        <el-button v-if="permissionChildrenList.UiPageLayoutDelBtn" size="small" type="text"
+                   @click="rowDeleteHandler(scope.row)">
+          <icon-show :name="permissionChildrenList.UiPageLayoutDelBtn.source"></icon-show>
+          鍒犻櫎
+        </el-button>
+        <el-button v-if="permissionChildrenList.UiPageLayoutCloneBtn" size="small" type="text"
+                   @click="rowCloneHandler(scope.row)">
+          <icon-show :name="permissionChildrenList.UiPageLayoutCloneBtn.source"></icon-show>
+          鍏嬮殕
         </el-button>
       </template>
 
@@ -58,6 +70,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
@@ -65,28 +123,36 @@
       append-to-body="true"
       class="avue-dialog"
       title="閰嶇疆鎸夐挳"
-      width="75%"
-      @close="dialogClose">
+      width="1200px"
+      @close="$refs.form.clearValidate();disabledBtn=true;">
       <el-container v-loading="dialogLoading">
-        <el-header style="height: 40px !important;">
+        <el-header style="height: 40px !important;padding-left: 5px;">
           <div style="display: flex">
-            <el-button :disabled="!disabledBtn" plain size="mini" type="primary" @click="addClickBtnHandler">娣诲姞
+            <el-button v-show="disabledBtn" :disabled="!disabledBtn" plain size="mini" type="primary"
+                       @click="addClickBtnHandler">娣诲姞
             </el-button>
-            <el-button :disabled="!disabledBtn" plain size="mini" type="primary" @click="editClickBtnHandler">淇敼
+            <el-button v-show="disabledBtn" :disabled="!disabledBtn" plain size="mini" type="primary"
+                       @click="editClickBtnHandler">淇敼
             </el-button>
-            <el-button :disabled="!disabledBtn" plain size="mini" type="danger" @click="delClickBtnHandler">鍒犻櫎
+            <el-button v-show="disabledBtn" :disabled="!disabledBtn" plain size="mini" type="danger"
+                       @click="delClickBtnHandler">鍒犻櫎
             </el-button>
-            <el-button :disabled="disabledBtn" plain size="mini" type="primary" @click="saveClickBtnHandler">淇濆瓨
+            <el-button v-show="!disabledBtn" :disabled="disabledBtn" icon="el-icon-check" plain size="mini"
+                       type="success" @click="saveClickBtnHandler">淇濆瓨
             </el-button>
-            <el-button :disabled="disabledBtn" plain size="mini" type="primary" @click="escClickBtnHandler">鍙栨秷
+            <el-button v-show="!disabledBtn" :disabled="disabledBtn" icon="el-icon-close" plain size="mini"
+                       type="danger" @click="escClickBtnHandler">鍙栨秷
             </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>
+            <el-button v-show="disabledBtn" plain size="mini" type="primary" @click="changeBottomBtnHandler">璋冩暣涓轰笅绾ф寜閽�
+            </el-button>
+            <el-button v-show="disabledBtn" plain size="mini" type="primary" @click="changeTopBtnHandler">璋冩暣涓轰笂绾ф寜閽�
+            </el-button>
+            <el-button v-show="disabledBtn" plain size="mini" type="primary" @click="cloneClickBtnHandler">澶嶅埗鍒板叾浠栫粍浠�
+            </el-button>
           </div>
         </el-header>
         <el-container>
-          <el-aside width="20%">
+          <el-aside width="25%">
             <basic-container>
               <div style="height:650px;">
                 <avue-tree
@@ -97,9 +163,11 @@
                   node-key="value"
                   @node-click="nodeTreeClick">
                   <span slot-scope="{ node, data }" class="el-tree-node__label">
-                    <span style="font-size: 14px">
-                    <i class="el-icon-s-promotion"></i>
-                      {{ (node || {}).label }}
+                    <span style="display: flex">
+                      <i v-if="data.oId=='parentNode'" class="iconShow el-icon-s-home"></i>
+                      <icon-show v-if="data.oId!='parentNode' && data.iconPath && data.iconPath!='undefined'"
+                                 :name="data.iconPath"></icon-show>
+                        {{ (node || {}).label }}
                     </span>
                   </span>
                 </avue-tree>
@@ -110,30 +178,31 @@
           <el-main>
             <basic-container>
               <el-divider content-position="left">鍩虹淇℃伅</el-divider>
-              <el-form ref="form" :model="basicForm" :rules="rules" label-width="90px" size="small"
+              <el-form ref="form" :model="basicForm" :rules="rules" label-width="100px" size="small"
                        style="margin-top: 20px">
                 <el-row>
-                  <el-form-item :inline-message='true' label="缂栧彿锛�" prop="seq">
-                    <el-input-number v-model="basicForm.seq" :disabled="disabledBtn" :max="9999" :min="1"
-                                     controls-position="right"></el-input-number>
-                  </el-form-item>
+                  <el-col :span="12">
+                    <el-form-item :inline-message='true' label="缂栧彿锛�" prop="seq">
+                      <el-input-number v-model="basicForm.seq" :disabled="disabledBtn" :max="9999" :min="1"
+                                       controls-position="right"></el-input-number>
+                    </el-form-item>
+                  </el-col>
 
-                  <el-form-item :inline-message='true' label="鍚嶇О锛�" prop="label">
-                    <el-col :span="14">
-                      <el-input v-model="basicForm.label" :readonly="disabledBtn"></el-input>
-                    </el-col>
-                  </el-form-item>
+                  <el-col :span="12">
+                    <el-form-item label="鍚嶇О锛�" prop="label">
+                      <el-input v-model="basicForm.label" :disabled="disabledBtn"></el-input>
+                    </el-form-item>
+                  </el-col>
 
-                  <el-form-item label="Action锛�" prop="Action">
-                    <el-col :span="14">
-                      <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="Action锛�" prop="actionName">
+                      <el-input v-model="basicForm.actionName" :clearable="true" :disabled="disabledBtn"
+                                @clear="clearActionValue" @focus="actionFoucus">
+                        <i slot="suffix" class="el-input__icon el-icon-search" style="cursor: pointer"
+                           @click="actionFoucus"></i>
+                      </el-input>
+                    </el-form-item>
+                  </el-col>
 
                   <el-col :span="12">
                     <el-form-item label="鏄惁鎺堟潈锛�" prop="authorization">
@@ -141,7 +210,8 @@
                       <el-radio v-model="basicForm.authorization" :disabled="disabledBtn" label="1">鍚�</el-radio>
                     </el-form-item>
                   </el-col>
-
+                  <el-col :span="24">
+                  </el-col>
                   <el-col :span="12">
                     <el-form-item label="鏄惁鏄剧ず锛�" prop="show">
                       <el-radio v-model="basicForm.show" :disabled="disabledBtn" label="0">鏄�</el-radio>
@@ -149,7 +219,7 @@
                     </el-form-item>
                   </el-col>
 
-                  <el-col :span="12">
+                  <el-col v-show="basicForm.show=='0'" :span="12">
                     <el-form-item label="鏄剧ず鏂瑰紡锛�" prop="showType">
                       <el-radio v-model="basicForm.displayMode" :disabled="disabledBtn" label="text">鏂囧瓧</el-radio>
                       <el-radio v-model="basicForm.displayMode" :disabled="disabledBtn" label="image">鍥炬爣</el-radio>
@@ -157,10 +227,17 @@
                       </el-radio>
                     </el-form-item>
                   </el-col>
+                  <el-col
+                    v-show="basicForm.show=='0' && (basicForm.displayMode=='image'||basicForm.displayMode=='textandimage')"
+                    :span="24">
+                    <el-form-item :class="basicForm.displayMode==='image'?'is-required':''" label="鍥炬爣锛�" prop="iconPath">
+                      <input-icon v-model="basicForm.iconPath" :disabled="disabledBtn"></input-icon>
+                    </el-form-item>
+                  </el-col>
 
-                  <el-col :span="12">
+                  <el-col :span="24">
                     <el-form-item label="鎻愮ず淇℃伅锛�" prop="desc">
-                      <el-input v-model="basicForm.desc" :readonly="disabledBtn" type="textarea"></el-input>
+                      <el-input v-model="basicForm.desc" :disabled="disabledBtn" type="textarea"></el-input>
                     </el-form-item>
                   </el-col>
 
@@ -197,7 +274,8 @@
         </el-container>
       </el-container>
     </el-dialog>
-    <action-dialog ref="actionDialog" @updataAction="actionSaveHandler"></action-dialog>
+    <action-dialog ref="actionDialog" @cancelAction="actionCancelHandler"
+                   @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"
@@ -217,10 +295,14 @@
   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";
+import {mapGetters} from "vuex";
 
 export default {
   props: {
@@ -241,6 +323,11 @@
   name: "index",
   data() {
     return {
+      queryTemplateNameList: [],
+      templateIdList: [],
+      searchTargerChangeFlag: false,
+      showTypeChangeFlag: false,
+      linkTypeChangeFlag: false,
       formBtnOid: '',
       sourceBtnOid: '',
       sourceOId: '',
@@ -305,11 +392,15 @@
         editBtn: false,
         delBtn: false,
         refreshBtn: false,
+        dialogWidth: '600',
+        menuWidth: '140',
         column: [
           {
             label: '鍚嶇О',
             prop: 'name',
+            width: 180,
             span: 24,
+            overHidden: true,
             rules: [
               {
                 required: true,
@@ -321,7 +412,9 @@
           {
             label: '鍊�',
             prop: 'value',
+            type: 'textarea',
             span: 24,
+            overHidden: true,
             rules: [
               {
                 required: true,
@@ -339,11 +432,12 @@
         label: [
           {required: true, message: '璇疯緭鍏ュ悕绉�', trigger: 'blur'},
         ],
+        actionName: [
+          {required: true, message: '璇烽�夋嫨Action', trigger: 'change'},
+        ],
       },
       // 鎸夐挳璁捐 鍩虹淇℃伅
-      basicForm: {
-        seq: 1
-      },
+      basicForm: {},
       treeData: [],
       treeOption: {
         menu: false,
@@ -362,16 +456,20 @@
       data: [],
       option: {
         ...basicOption,
+        size: 'mini',
         height: this.height,
         addBtn: false,
         index: true,
         calcHeight: -30,
         editBtn: false,
         delBtn: false,
+        menuWidth: 300,
         column: [
           {
             label: '鍚嶇О',
             prop: 'name',
+            width: 220,
+            labelWidth: 110,
             rules: [
               {
                 required: true,
@@ -381,8 +479,11 @@
             ]
           },
           {
-            label: '缂栧彿',
+            label: '搴忓彿',
             prop: 'seq',
+            width: 100,
+            type: 'number',
+            labelWidth: 110,
             hide: false,
             rules: [
               {
@@ -396,16 +497,25 @@
             label: 'UI瑙f瀽绫诲瀷',
             prop: 'uiParser',
             hide: true,
+            labelWidth: 110,
           },
           {
             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 +550,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 +574,14 @@
             label: '鏄剧ず绫诲瀷',
             prop: 'navigatorType',
             type: 'radio',
+            labelWidth: 110,
             span: 24,
             value: '1',
             hide: true,
             dicData: [
               {
                 label: '涓嶆樉绀�',
-                value: '3'
+                value: '1'
               },
               {
                 label: '鏄剧ず瑙掕壊',
@@ -477,7 +589,7 @@
               },
               {
                 label: '鏄剧ずFolder',
-                value: '1',
+                value: '3',
               },
             ],
           },
@@ -485,6 +597,7 @@
             label: '鎼滅储绫诲瀷',
             prop: 'searchTarger',
             display: true,
+            labelWidth: 110,
             type: 'radio',
             value: '1',
             span: 24,
@@ -507,33 +620,62 @@
                 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', 'bsDataModel', 'csDataModel'];
+                list.forEach(item => {
+                  this.form[item] = '';
+                })
+              } else {
+                this.searchTargerChangeFlag = true;
+              }
             }
-          },
-          {
-            label: '鎻忚堪',
-            prop: 'description',
-            display: false
           },
         ],
         group: [
           {
+            icon: 'el-icon-info',
             label: '',
-            arrow: false,
+            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) => {
+                  if (val.value) {
+                    let params = {
+                      'conditionMap[selectBtmType]': this.form.searchTarger === '1' ? val.value : 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 +694,7 @@
                 prop: 'linkType',
                 type: 'select',
                 display: false,
+                labelWidth: 115,
                 filterable: true,
                 props: {
                   label: 'name',
@@ -559,14 +702,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 +737,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 +757,7 @@
                 display: false,
                 value: '1',
                 type: 'radio',
+                labelWidth: 115,
                 span: 24,
                 dicData: [
                   {
@@ -616,7 +775,7 @@
                 prop: 'searchObjType',
                 type: 'select',
                 display: false,
-                labelWidth: 100,
+                labelWidth: 115,
                 props: {
                   label: 'qtName',
                   value: 'qtName',
@@ -627,19 +786,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 +803,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 +824,7 @@
                 prop: 'expandMode',
                 display: false,
                 type: 'radio',
+                labelWidth: 115,
                 value: '1',
                 dicData: [
                   {
@@ -678,6 +836,20 @@
                     value: '0'
                   }
                 ]
+              },
+              {
+                label: 'B/S鑷畾涔夋煡璇�',
+                prop: 'bsDataModel',
+                display: false,
+                labelWidth: 115,
+                span: 12
+              },
+              {
+                label: 'C/S鑷畾涔夋煡璇�',
+                prop: 'csDataModel',
+                display: false,
+                labelWidth: 115,
+                span: 12
               },
               {
                 label: '鏍硅妭鐐规樉绀鸿〃杈惧紡',
@@ -714,6 +886,19 @@
       lastIndex: null,
       selectList: [],
       formDataRow: {},
+      defaultForm: {},
+    }
+  },
+  computed: {
+    ...mapGetters(["permission"]),
+    permissionChildrenList() {
+      return {
+        UiPageLayoutAddBtn: this.vaildData(this.permission[this.$route.query.id].ADD3, false),
+        UiPageLayoutEditBtn: this.vaildData(this.permission[this.$route.query.id].EDIT3, false),
+        UiPageLayoutDelBtn: this.vaildData(this.permission[this.$route.query.id].DELETE3, false),
+        UiPageLayoutCloneBtn: this.vaildData(this.permission[this.$route.query.id].CLONE, false),
+        UiPageLayoutDesignBtn: this.vaildData(this.permission[this.$route.query.id].UPLOAD, false),
+      }
     }
   },
   watch: {
@@ -729,7 +914,6 @@
       deep: true
     }
   },
-  computed: {},
   methods: {
     //鑾峰彇鍒楄〃鏁版嵁
     getTableList() {
@@ -773,14 +957,13 @@
           this.lastIndex = newIndex;
         },
         () => {
-          this.selectList = [];
+          this.selectList = [row];
         }
       );
     },
 
     // 澧炲姞
     addClickHandler() {
-      console.log(this.sourceData);
       if (!this.sourceData || !this.sourceData.plOId) {
         this.$message.error('璇峰湪涓婃柟閫夋嫨涓�鏉℃暟鎹悗杩涜娣诲姞');
         return;
@@ -788,22 +971,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 +995,12 @@
           };
         });
       }
+      this.searchTargerChangeFlag = false;
       this.$refs.crud.rowEdit(row);
-      console.log(this.form);
     },
 
     // 鍒犻櫎
     rowDeleteHandler(row) {
-      console.log(row);
       this.$confirm('鎮ㄧ‘瀹氳鍒犻櫎鎵�閫夋嫨鐨勬暟鎹悧锛�', '鎻愮ず', {
         confirmButtonText: '纭畾',
         cancelButtonText: '鍙栨秷',
@@ -858,13 +1029,35 @@
         row.SubUIObjType = row.showType;
         row.showType = "";
       }
-      console.log(this.sourceData);
+      if (row.templateType === '5' && this.form.linkType && !this.form.showLinkAbs) {
+        this.$message.error('璇烽�夋嫨鍙傜収鏍戣缃�');
+        return loading();
+      }
       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();
@@ -882,24 +1075,6 @@
 
     // 瀵硅瘽妗嗚〃鏍兼坊鍔�
     formDataAddClickHandler() {
-      // 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.eventData.length,
         eventKey: this.form.eventKey || 'SelectionEvent',
@@ -926,7 +1101,7 @@
     // 妯℃澘绫诲瀷涓鸿〃鏍�
     templateTypeTable(val) {
       if (!val) return;
-      this.updateDisplay(val, ['showType', 'templateId', 'queryTemplateName']);
+      this.updateDisplay(val, ['showType', 'templateId', 'queryTemplateName', 'bsDataModel', 'csDataModel']);
     },
 
     // 妯℃澘绫诲瀷涓鸿嚜瀹氫箟妯℃澘
@@ -940,13 +1115,13 @@
     // 妯℃澘绫诲瀷涓烘爲琛�
     templateTypeTreeTable(val) {
       if (!val) return;
-      this.updateDisplay(val, ['showType', 'templateId', 'queryTemplateName', 'expandCols', 'zkfs']);
+      this.updateDisplay(val, ['showType', 'templateId', 'queryTemplateName', 'expandCols', 'expandMode', 'bsDataModel', 'csDataModel']);
     },
 
     // 妯℃澘绫诲瀷涓鸿〃鍗�
     templateTypeForm(val) {
       if (!val) return;
-      this.updateDisplay(val, ['showType', 'templateId', 'queryTemplateName']);
+      this.updateDisplay(val, ['showType', 'templateId', 'queryTemplateName', 'bsDataModel', 'csDataModel']);
     },
 
     // 妯℃澘绫诲瀷涓烘爲
@@ -954,7 +1129,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', 'bsDataModel', 'csDataModel']);
     },
 
     // 妯℃澘绫诲瀷涓篣I瀹氫箟
@@ -962,7 +1137,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', 'bsDataModel', 'csDataModel']);
     },
 
     // 鏌ユ壘鏁扮粍涓璞$储寮�
@@ -991,34 +1166,34 @@
     },
 
     // 鎸夐挳璁捐
-    btnDesignClickHandler() {
-      if (this.selectList.length != 1) {
+    btnDesignClickHandler(row) {
+      /*if (this.selectList.length != 1) {
         this.$message.error('璇烽�夋嫨涓�鏉℃暟鎹�');
         return;
-      }
+      }*/
       this.btnDesignVisible = true;
-      this.formBtnOid = this.selectList[0].id;
-      this.getTabBtnTree();
+      this.formBtnOid = row.id;
+      this.getTabBtnTree(row);
     },
 
     // 宸︿晶鏍戣姹�
-    getTabBtnTree() {
+    getTabBtnTree(row) {
       const params = {
-        pageDefinationOid: this.selectList[0].id
+        pageDefinationOid: row && row.id ? row.id : this.selectList[0].id
       }
       this.treeLoading = true;
       getTabButtons(params).then(res => {
         if (res.data.code === 200) {
           const data = res.data.data;
           this.treeData = [{
-            label: this.selectList[0].name,
+            label: row && row.id ? row.name : this.selectList[0].name,
             oId: 'parentNode',
             disabled: true,
             children: data
           }];
           this.treeLoading = false;
         } else {
-          this.$message.error('璇锋鏌ユ帶鍒跺彴閿欒');
+          this.$message.error(res.data.msg);
         }
       })
     },
@@ -1026,12 +1201,14 @@
     // 鎸夐挳璁捐琛岀偣鍑�
     nodeTreeClick(row) {
       this.nodeTreeRow = row;
+      this.defaultForm = {...row};
       this.basicForm = {...row};
       this.paramsData = row.buttonParams ? Object.entries(row.buttonParams).map(([key, value]) => ({
         name: key,
         value: value
       })) : [];
       this.disabledBtn = true;
+      this.$refs.form.clearValidate();
     },
 
     // 鎸夐挳璁捐鍙傛暟淇℃伅鍒犻櫎
@@ -1041,7 +1218,7 @@
 
     // 鎸夐挳璁捐淇℃伅鍙傛暟淇℃伅淇敼
     paramsRowEditHandler(row) {
-      this.$refs.paramsCrud.rowEdit(row);
+      this.$refs.paramsCrud.rowEdit(row, row.$index);
     },
 
     // 鎸夐挳璁捐鍙傛暟淇℃伅娣诲姞鎸夐挳
@@ -1104,41 +1281,54 @@
       this.disabledBtn = true;
       if (this.saveType === 'add') {
         this.$refs.Tree.setCurrentKey(null);
+        this.$refs.form.resetFields();
+      } else {
+        this.basicForm = {...this.defaultForm};
       }
     },
 
     // 鎸夐挳璁捐淇濆瓨
     saveClickBtnHandler() {
-      this.dialogLoading = true;
-      const saveFunction = this.saveType === 'add' ? addTapButton : updateTapButton;
-      const bottomParams = {};
-      if (this.paramsData.length > 0) {
-        this.paramsData.forEach(item => {
-          bottomParams[item.name] = item.value
-        })
+      if (this.basicForm.show == '0' && this.basicForm.displayMode == 'image' && this.basicForm.iconPath == '') {
+        this.$message.error('璇烽�夋嫨鍥炬爣');
+        return;
       }
+      this.$refs.form.validate((valid, done) => {
+        if (valid) {
+          this.dialogLoading = true;
+          const saveFunction = this.saveType === 'add' ? addTapButton : updateTapButton;
+          const bottomParams = {};
+          if (this.paramsData.length > 0) {
+            this.paramsData.forEach(item => {
+              bottomParams[item.name] = item.value
+            })
+          }
+          const params = this.saveType === 'add' ? {
+            ...this.basicForm,
+            parentId: this.nodeTreeRow.oId === 'parentNode' ? '' : this.nodeTreeRow.parentId,
+            buttonParams: bottomParams,
+            tableOId: this.selectList[0].id
+          } : {
+            ...this.basicForm,
+            buttonParams: bottomParams
+          }
 
-      const params = this.saveType === 'add' ? {
-        ...this.basicForm,
-        parentId: this.nodeTreeRow.oId === 'parentNode' ? '' : this.nodeTreeRow.parentId,
-        buttonParams: bottomParams
-      } : {
-        ...this.basicForm,
-        buttonParams: bottomParams
-      }
-
-      saveFunction(params).then(res => {
-        if (res.data.code === 200) {
-          this.$message.success(res.data.obj);
-          this.disabledBtn = true;
-          this.getTabBtnTree();
-          this.basicForm = {};
-          this.paramsData = [];
-          this.dialogLoading = false;
+          saveFunction(params).then(res => {
+            if (res.data.code === 200) {
+              this.$message.success(res.data.obj);
+              this.disabledBtn = true;
+              this.getTabBtnTree();
+              this.paramsData = [];
+              this.dialogLoading = false;
+              this.$refs.form.resetFields();
+            }
+          }).catch(err => {
+            this.dialogLoading = false;
+          })
+        } else {
+          return false;
         }
-      }).catch(err => {
-        this.dialogLoading = false;
-      })
+      });
     },
 
     // 鎸夐挳璁捐鍒犻櫎
@@ -1159,7 +1349,6 @@
         type: 'warning'
       }).then(() => {
         deleteTabButton(this.nodeTreeRow).then(res => {
-          // console.log(res);
           if (res.data.code === 200) {
             this.$message.success('鍒犻櫎鎴愬姛');
             this.getTabBtnTree();
@@ -1198,11 +1387,23 @@
     actionSaveHandler(val) {
       this.$set(this.basicForm, 'actionName', val.plName);
       this.$set(this.basicForm, 'actionOId', val.plOId);
+      this.$set(this.basicForm, 'iconPath', val.plImage);//鍥炬爣
+      this.$refs.form.clearValidate('Action')
+    },
+    // action閫夋嫨寮圭獥鐩存帴鍏抽棴
+    actionCancelHandler() {
+      if (this.basicForm.actionOId) {
+        this.$refs.form.clearValidate('Action')
+      }
     },
 
+    //娓呴櫎action
+    clearActionValue() {
+      this.$set(this.basicForm, 'actionName', '');
+      this.$set(this.basicForm, 'actionOId', '');
+    },
     // 鎵撳紑鍏嬮殕瀵硅瘽妗�
     rowCloneHandler(row) {
-      console.log(row);
       this.fromOid = this.sourceData.plOId;
       this.sourceOId = row.id;
       this.$refs.cloneDialog.openDialog(row);
@@ -1220,7 +1421,6 @@
         return;
       }
       joinBtn(this.nodeTreeRow).then(res => {
-        // console.log(res);
         if (res.data.code === 200) {
           this.$message.success(res.data.obj);
           this.getTabBtnTree();
@@ -1234,7 +1434,6 @@
         this.$message.error('璇烽�夋嫨鑺傜偣杩涜淇敼');
         return;
       }
-
       if (this.nodeTreeRow.oId === "parentNode") {
         this.$message.error('椤跺眰鑺傜偣涓嶅厑璁歌皟鏁�');
         return;

--
Gitblit v1.9.3