From 8a166a60cfd1a2e593ffa103d10c0dc224fc8628 Mon Sep 17 00:00:00 2001
From: 田源 <tianyuan@vci-tech.com>
Date: 星期四, 09 一月 2025 11:14:50 +0800
Subject: [PATCH] 表格定义显示字段设置拖拽排序

---
 Source/plt-web/plt-web-ui/src/views/modelingMenu/ui/formDefine/components/tableDialog.vue |  588 ++++++++++++++++++++++++++++++++++++++++-----------------
 1 files changed, 409 insertions(+), 179 deletions(-)

diff --git a/Source/plt-web/plt-web-ui/src/views/modelingMenu/ui/formDefine/components/tableDialog.vue b/Source/plt-web/plt-web-ui/src/views/modelingMenu/ui/formDefine/components/tableDialog.vue
index 0805b0c..b5efc09 100644
--- a/Source/plt-web/plt-web-ui/src/views/modelingMenu/ui/formDefine/components/tableDialog.vue
+++ b/Source/plt-web/plt-web-ui/src/views/modelingMenu/ui/formDefine/components/tableDialog.vue
@@ -9,35 +9,36 @@
     width="60%"
     @close="closeDialog"
   >
-    <el-form :model="form" :rules="rules" label-position="right" label-width="100px">
+    <el-form ref="form" v-loading="formLoading" :model="form" :rules="rules" label-position="right" label-width="100px"
+             size="small">
       <el-row>
         <el-col :span="12">
-          <el-form-item label="鍚嶇О">
-            <el-input v-model="user" placeholder="璇疯緭鍏ュ唴瀹�" size="mini"></el-input>
+          <el-form-item label="鍚嶇О" prop="viName">
+            <el-input v-model="form.viName" placeholder="璇疯緭鍏ュ悕绉�"></el-input>
           </el-form-item>
         </el-col>
 
-
         <el-col :span="12">
           <el-form-item label="姣忛〉琛屾暟">
-            <el-input v-model="user" placeholder="璇疯緭鍏ュ唴瀹�" size="mini"></el-input>
+            <el-input v-model="form.itemPageSize" placeholder="璇疯緭鍏ユ瘡椤佃鏁�" type="number"></el-input>
           </el-form-item>
         </el-col>
 
         <el-col :span="24">
           <el-form-item label="闄勫姞鏌ヨ鏉′欢">
-            <el-input v-model="user" placeholder="璇疯緭鍏ュ唴瀹�" size="mini"></el-input>
+            <el-input v-model="form.itemAddFilter" placeholder="璇疯緭鍏ユ煡璇㈡潯浠�"></el-input>
           </el-form-item>
         </el-col>
 
         <el-col :span="12">
-          <el-form-item label="缁戝畾琛ㄥ崟">
+          <el-form-item label="缁戝畾琛ㄥ崟" prop="itemInObj">
             <div style="display: flex;align-items: center;">
-              <el-select v-model="form.region" placeholder="璇烽�夋嫨娲诲姩鍖哄煙" size="mini">
-                <el-option label="鍖哄煙涓�" value="shanghai"></el-option>
-                <el-option label="鍖哄煙浜�" value="beijing"></el-option>
+              <el-select v-model="form.itemInObj" clearable placeholder="璇烽�夋嫨缁戝畾琛ㄥ崟"
+                         @change="formSelectChange">
+                <el-option v-for="(item,index) in selectList" :key="index" :label="item.viName"
+                           :value="item.id"></el-option>
               </el-select>
-              <el-button plain size="mini" style="margin-left: 3px" type="success">閫夋嫨</el-button>
+
             </div>
           </el-form-item>
         </el-col>
@@ -45,146 +46,69 @@
         <el-col :span="12">
           <el-form-item label="鐖跺悕绉�">
             <div style="display: flex;align-items: center;">
-              <el-input v-model="user" placeholder="璇疯緭鍏ュ唴瀹�" size="mini"></el-input>
-              <el-checkbox v-model="checked" style="margin-left: 5px; margin-right: 5px">鏄剧ず鏌ヨ鍖哄煙</el-checkbox>
-              <el-checkbox v-model="checked" style="margin-left: 5px;margin-right: 0px">鏄剧ず鏂囦欢澶�</el-checkbox>
+              <el-input v-model="form.itemParentFolderName" placeholder="璇疯緭鍏ョ埗鍚嶇О"></el-input>
+              <el-checkbox v-model="form.itemIsNavigatorExpand" style="margin-left: 5px; margin-right: 5px">鏄剧ず鏌ヨ鍖哄煙
+              </el-checkbox>
+              <el-checkbox v-model="form.itemIsShowFolder" style="margin-left: 5px;margin-right: 0px">鏄剧ず鏂囦欢澶�
+              </el-checkbox>
             </div>
           </el-form-item>
         </el-col>
 
-        <el-col :span="12">
-          <el-form-item label="鏄剧ず瀛楁">
-            <div style="display: flex; align-items: center">
-              <div style="height: 260px; width: 160px; border: 1px solid #bdbbbb;overflow-y: auto">
-                <el-table
-                  :data="showLifeTable"
-                  style="width: 100%">
-                  <el-table-column
-                    align="center"
-                    label="鍙娇鐢ㄥ瓧娈�"
-                    prop="id">
-                  </el-table-column>
-                </el-table>
-              </div>
-              <div style="margin-left: 10px; margin-right: 10px">
-                <el-button circle icon="el-icon-back" style="margin-right: 10px"></el-button>
-                <el-button circle icon="el-icon-right"></el-button>
-              </div>
-              <div style="height: 260px; width: 160px; border: 1px solid #bdbbbb;overflow-y: auto">
-                <el-table
-                  :data="showRightTable"
-                  style="width: 100%">
-                  <el-table-column
-                    align="center"
-                    label="闇�瑕佷娇鐢ㄥ瓧娈�"
-                    prop="id">
-                  </el-table-column>
-                </el-table>
-              </div>
-            </div>
+        <el-col :span="24">
+          <el-form-item label="鏄剧ず瀛楁" prop="showLabel">
+            <el-drag-select v-model="form.itemOutFieldList" multiple placeholder="璇烽�夋嫨" style="width:100%;" @outFileChange="outFileChange">
+              <el-option v-for="(item,index) in form.itemSelectOutFieldList" :key="index" :label="item.id"
+                         :value="item.id"/>
+            </el-drag-select>
           </el-form-item>
         </el-col>
 
-        <el-col :span="12">
+        <el-col :span="24">
           <el-form-item label="鎼滅储瀛楁">
-            <div style="display: flex; align-items: center">
-              <div style="height: 260px; width: 160px; border: 1px solid #bdbbbb;overflow-y: auto">
-                <el-table
-                  :data="searchLifeTable"
-                  style="width: 100%">
-                  <el-table-column
-                    align="center"
-                    label="鍙緵鎼滅储瀛楁"
-                    prop="id">
-                  </el-table-column>
-                </el-table>
-              </div>
-              <div style="margin-left: 10px; margin-right: 10px">
-                <el-button circle icon="el-icon-back" style="margin-right: 10px"></el-button>
-                <el-button circle icon="el-icon-right"></el-button>
-              </div>
-              <div style="height: 260px; width: 160px; border: 1px solid #bdbbbb;overflow-y: auto">
-                <el-table
-                  :data="searchRightTable"
-                  style="width: 100%">
-                  <el-table-column
-                    align="center"
-                    label="闇�鎼滅储瀛楁"
-                    prop="id">
-                  </el-table-column>
-                </el-table>
-              </div>
-            </div>
-          </el-form-item>
-        </el-col>
-
-        <el-col :span="12">
-          <el-form-item label="鍒�">
-            <el-select v-model="form.region" placeholder="璇烽�夋嫨鍒�" size="mini">
-              <el-option label="鍖哄煙涓�" value="shanghai"></el-option>
-              <el-option label="鍖哄煙浜�" value="beijing"></el-option>
+            <el-select v-model="form.itemKeyFieldList" multiple placeholder="璇烽�夋嫨" style="width: 100%">
+              <el-option
+                v-for="(item,index) in form.itemSearchFieldList"
+                :key="index"
+                :label="item.id"
+                :value="item.id">
+              </el-option>
             </el-select>
           </el-form-item>
         </el-col>
 
-        <el-col :span="12">
-          <el-form-item label="瀹藉害">
-            <div style="display: flex;align-items: center;">
-              <el-input v-model="user" placeholder="璇疯緭鍏ュ唴瀹�" size="mini" style="width: 193px"></el-input>
-              <el-button plain size="mini" style="margin-left: 3px" type="success">璁剧疆</el-button>
-            </div>
-          </el-form-item>
-        </el-col>
       </el-row>
 
       <el-col :span="24">
         <el-form-item label="璁剧疆鍒楀">
-          <div style="height: 150px; width: 100%; border: 1px solid #bdbbbb;overflow-y: auto">
-            <el-table
-              :data="columnWidthData"
-              :highlight-current-row="true"
-              border
-              stripe
-              style="width: 100%">
-              <el-table-column
-                align="center"
-                label="鍒楀悕"
-                prop="id">
-                <template slot-scope="scope">
-                  <el-tag size="medium">{{ scope.row.id }}</el-tag>
-                </template>
-              </el-table-column>
-              <el-table-column
-                align="center"
-                label="鍒楀"
-                prop="width">
-                <template slot-scope="scope">
-                  <el-tag size="medium">{{ scope.row.width }}</el-tag>
-                </template>
-              </el-table-column>
-            </el-table>
-          </div>
+          <avue-crud
+            :data="form.itemFieldWidthList"
+            :option="fileWidthOption">
+          </avue-crud>
+
         </el-form-item>
       </el-col>
 
       <el-col :span="8">
         <el-form-item label="鏌ヨ瀛楁">
-          <el-input v-model="user" placeholder="璇疯緭鍏ュ唴瀹�" size="mini"></el-input>
+          <el-input v-model="form.searchLabel" placeholder="璇疯緭鍏ユ煡璇㈠瓧娈�" size="mini"></el-input>
         </el-form-item>
       </el-col>
 
       <el-col :span="8">
         <el-form-item label="鏌ヨ娆℃暟">
-          <el-input v-model="user" placeholder="璇疯緭鍏ュ唴瀹�" size="mini"></el-input>
+          <el-input v-model="form.searchNumber" placeholder="璇疯緭鍏ユ煡璇㈡鏁�" size="mini"></el-input>
         </el-form-item>
       </el-col>
 
       <el-col :span="8">
         <el-form-item label="鏌ヨsql">
           <div style="display: flex;align-items: center">
-            <el-input v-model="user" placeholder="璇疯緭鍏ュ唴瀹�" size="mini"></el-input>
-            <el-button plain size="mini" style="margin-left: 3px" type="success">娣诲姞</el-button>
-            <el-button plain size="mini" style="margin-left: 3px" type="danger">鍒犻櫎</el-button>
+            <el-input v-model="form.searchSql" placeholder="璇疯緭鍏ql" size="mini"></el-input>
+            <el-button plain size="mini" style="margin-left: 3px" type="success" @click="searchAddClickHandler">娣诲姞
+            </el-button>
+            <el-button plain size="mini" style="margin-left: 3px" type="danger" @click="searchDelClickHandler">鍒犻櫎
+            </el-button>
           </div>
         </el-form-item>
       </el-col>
@@ -193,33 +117,34 @@
         <el-form-item label="鏌ヨ瀛楁">
           <div style="height: 150px; width: 100%; border: 1px solid #bdbbbb;overflow-y: auto">
             <el-table
-              :data="columnSearchData"
+              :data="form.itemSeniorQueryBOS"
               :highlight-current-row="true"
               border
               stripe
-              style="width: 100%">
+              style="width: 100%"
+              @row-click="itemSeniorRowClick">
               <el-table-column
                 align="center"
                 label="鏌ヨ瀛楁"
-                prop="id">
+                prop="itemSeniorQueryCols">
                 <template slot-scope="scope">
-                  <el-tag size="medium">{{ scope.row.id }}</el-tag>
+                  <el-tag size="medium">{{ scope.row.itemSeniorQueryCols }}</el-tag>
                 </template>
               </el-table-column>
               <el-table-column
                 align="center"
                 label="鏌ヨ娆℃暟"
-                prop="name">
+                prop="itemSeniorQueryColsCounts">
                 <template slot-scope="scope">
-                  <el-tag size="medium">{{ scope.row.name }}</el-tag>
+                  <el-tag size="medium">{{ scope.row.itemSeniorQueryColsCounts }}</el-tag>
                 </template>
               </el-table-column>
               <el-table-column
                 align="center"
                 label="鏌ヨsql"
-                prop="sql">
+                prop="itemQuerySql">
                 <template slot-scope="scope">
-                  <el-tag size="medium">{{ scope.row.sql }}</el-tag>
+                  <el-tag size="medium">{{ scope.row.itemQuerySql }}</el-tag>
                 </template>
               </el-table-column>
             </el-table>
@@ -229,9 +154,9 @@
 
       <el-col :span="24">
         <el-form-item label="鍙屽嚮鎿嶄綔">
-          <el-select v-model="form.region" placeholder="璇烽�夋嫨鍙屽嚮鎿嶄綔" size="mini">
-            <el-option label="鍖哄煙涓�" value="shanghai"></el-option>
-            <el-option label="鍖哄煙浜�" value="beijing"></el-option>
+          <el-select v-model="form.itemDbl" placeholder="璇烽�夋嫨鍙屽嚮鎿嶄綔">
+            <el-option v-for="(item,index) in itemDblList" :key="index" :label="item.value"
+                       :value="item.key"></el-option>
           </el-select>
         </el-form-item>
       </el-col>
@@ -241,11 +166,11 @@
           <div style="display: flex;align-items: center">
             <div style="display: flex;align-items: center;width: 100%;">
               <span>闀匡細</span>
-              <el-input v-model="user" placeholder="璇疯緭鍏ュ唴瀹�" size="mini"></el-input>
+              <el-input v-model="itemImgHeight" placeholder="璇疯緭鍏ラ暱搴�"></el-input>
             </div>
             <div style="display: flex;align-items: center;width: 100%;margin-left: 30px">
               <span>瀹斤細</span>
-              <el-input v-model="user" placeholder="璇疯緭鍏ュ唴瀹�" size="mini"></el-input>
+              <el-input v-model="itemImgWidth" placeholder="璇疯緭鍏ュ搴�"></el-input>
             </div>
           </div>
         </el-form-item>
@@ -253,83 +178,387 @@
 
       <el-col :span="12">
         <el-form-item label="瀛楃涓叉埅鍙�">
-          <el-input v-model="user" placeholder="璇疯緭鍏ュ唴瀹�" size="mini"></el-input>
+          <el-input v-model="form.itemCut" placeholder="璇疯緭鍏ュ瓧绗︿覆" size="mini"></el-input>
         </el-form-item>
       </el-col>
 
       <el-col :span="8">
         <el-form-item label="瓒呴摼鎺�">
-          <el-input v-model="user" placeholder="璇疯緭鍏ュ唴瀹�" size="mini"></el-input>
+          <el-input v-model="form.itemHrefConf" placeholder="璇疯緭鍏ヨ秴閾炬帴" size="mini"></el-input>
         </el-form-item>
       </el-col>
 
       <el-col :span="24">
         <el-form-item label="鏌ヨ妯℃澘">
-          <el-select v-model="form.region" placeholder="璇烽�夋嫨鏌ヨ妯℃澘" size="mini">
-            <el-option label="鍖哄煙涓�" value="shanghai"></el-option>
-            <el-option label="鍖哄煙浜�" value="beijing"></el-option>
+          <el-select v-model="form.itemQtName" placeholder="璇烽�夋嫨鏌ヨ妯℃澘">
+            <el-option v-for="(item,index) in searchQtNameList" :key="index" :label="item.qtName"
+                       :value="item.qtName"></el-option>
           </el-select>
         </el-form-item>
       </el-col>
     </el-form>
 
     <span slot="footer" class="dialog-footer">
-         <el-button>鍙� 娑�</el-button>
-         <el-button type="primary">纭� 瀹�</el-button>
+         <el-button @click="closeDialog">鍙� 娑�</el-button>
+         <el-button type="primary" @click="dialogSaveClickHandler">纭� 瀹�</el-button>
     </span>
   </el-dialog>
+
 </template>
 
 <script>
+import basicOption from "@/util/basic-option";
+import {gridPortalVIDatas, getPortalVIById, getItemDblList, savePortalVI, getObjTypeQTs} from "@/api/UI/formDefine/api";
+import func from "@/util/func";
+import ElDragSelect from './DragSelect'
+
 export default {
   name: "tableDialog",
+  components: {ElDragSelect},
+  props: {
+    TreeNodeRow: {
+      type: Object,
+      default: () => {
+      }
+    },
+    treeRadio: {
+      type: String,
+      default: ""
+    }
+  },
+  created() {
+    // this.getDbList();
+  },
   data() {
     return {
-      columnSearchData: [
-        {
-          id: 'test',
-          name: '3',
-          sql: 'xxxxx'
-        }
-      ],
-      columnWidthData: [
-        {
-          id: 'test',
-          width: '250'
-        }
-      ],
-      searchLifeTable: [],
-      searchRightTable: [],
-      showRightTable: [],
-      showLifeTable: [
-        {
-          id: 'test1'
-        },
-        {
-          id: 'test2'
-        },
-        {
-          id: 'test1'
-        },
-        {
-          id: 'test2'
-        },
-        {
-          id: 'test1'
-        },
-        {
-          id: 'test2'
-        }
-      ],
-      rules: {},
-      form: {},
+      fileWidthOption: {
+        ...basicOption,
+        addBtn: false,
+        editBtn: false,
+        delBtn: false,
+        refreshBtn: false,
+        highlightCurrentRow: true,
+        height: 200,
+        menu: false,
+        selection: false,
+        column: [
+          {
+            label: '鍒楀悕',
+            prop: 'key',
+          },
+          {
+            label: '鍒楀',
+            prop: 'value',
+            cell: true,
+            rules: [
+              {
+                required: true,
+                message: '璇疯緭鍏ュ垪瀹�',
+                trigger: 'blur'
+              }
+            ]
+          }
+        ]
+      },
+      searchQtNameList: [],
+      formLoading: false,
+      itemImgHeight: '',
+      itemImgWidth: '',
+      itemSeniorRow: {},
+      itemDblList: [],
+      selectFormOption: {
+        ...basicOption,
+        addBtn: false,
+        menu: false,
+        refreshBtn: false,
+        column: [
+          {
+            label: '涓氬姟鍚嶇О',
+            prop: 'typeName',
+
+          },
+          {
+            label: '鍚嶇О',
+            prop: 'viName',
+            sortable: true,
+          },
+          {
+            label: '绫诲瀷',
+            prop: 'viTypeText',
+          },
+        ]
+      },
+      selectFormData: [],
+      selectFormLoading: false,
+      selectFormVisible: false,
+      rules: {
+        viName: [{
+          required: true,
+          message: '璇疯緭鍏ュ悕绉�',
+          trigger: 'blur'
+        }],
+        itemInObj: [{
+          required: true,
+          message: '璇烽�夋嫨缁戝畾琛ㄥ崟',
+          trigger: 'change'
+        }],
+        // showLabel: [{
+        //   required: true,
+        //   message: '璇烽�夋嫨鏄剧ず瀛楁',
+        //   trigger: 'submit'
+        // }],
+      },
+      form: {
+        viName: '', // 鍚嶇О
+        itemPageSize: '', // 姣忛〉鍙樉绀鸿鏁�
+        itemAddFilter: '', // 闄勫姞鏌ヨ鏉′欢
+        itemInObj: '', // 缁戝畾琛ㄥ崟
+        itemParentFolderName: '', // 鐖跺悕绉�
+        itemIsShowFolder: false, // 鏄惁鏄剧ず鏂囦欢澶�
+        itemIsNavigatorExpand: false, // 鏄剧ず鏌ヨ鍖哄煙
+        itemSelectOutFieldList: [], // 鍙娇鐢ㄥ瓧娈�
+        itemOutFieldList: [], // 闇�瑕佷娇鐢ㄥ瓧娈� // 鍒椾笅鎷夋
+        itemSearchFieldList: [], // 鍙緵鎼滅储浣跨敤瀛楁
+        itemKeyFieldList: [], // 闇�瑕佹悳绱㈠瓧娈�
+        itemWidth: '250', // 瀹藉害
+        itemFieldWidthList: [], // 璁剧疆鍒楀鏁扮粍 涓� itemOutFieldList 鐩稿尮閰�
+        searchLabel: '', // 鏌ヨ瀛楁
+        searchNumber: '1', // 鏌ヨ娆℃暟
+        searchSql: '', // 鏌ヨsql
+        itemSeniorQueryBOS: [], // 鏌ヨ瀛楁鍒楄〃
+        itemDbl: [], // 鍙屽嚮鎿嶄綔
+        itemImgWH: '', // 鍥剧墖瀹介珮 w,h
+        itemCut: '', // 瀛楃涓叉埅鍙�
+        itemHrefConf: '', // 瓒呴摼鎺�
+        itemQtName: '', // 鏌ヨ妯℃澘
+      },
+      defaultForm: {
+        viName: '', // 鍚嶇О
+        itemPageSize: '', // 姣忛〉鍙樉绀鸿鏁�
+        itemAddFilter: '', // 闄勫姞鏌ヨ鏉′欢
+        itemInObj: '', // 缁戝畾琛ㄥ崟
+        itemParentFolderName: '', // 鐖跺悕绉�
+        itemIsShowFolder: false, // 鏄惁鏄剧ず鏂囦欢澶�
+        itemIsNavigatorExpand: false, // 鏄剧ず鏌ヨ鍖哄煙
+        itemSelectOutFieldList: [], // 鍙娇鐢ㄥ瓧娈�
+        itemOutFieldList: [], // 闇�瑕佷娇鐢ㄥ瓧娈� // 鍒椾笅鎷夋
+        itemSearchFieldList: [], // 鍙緵鎼滅储浣跨敤瀛楁
+        itemKeyFieldList: [], // 闇�瑕佹悳绱㈠瓧娈�
+        itemWidth: '250', // 瀹藉害
+        itemFieldWidthList: [], // 璁剧疆鍒楀鏁扮粍 涓� itemOutFieldList 鐩稿尮閰�
+        searchLabel: '', // 鏌ヨ瀛楁
+        searchNumber: '1', // 鏌ヨ娆℃暟
+        searchSql: '', // 鏌ヨsql
+        itemSeniorQueryBOS: [], // 鏌ヨ瀛楁鍒楄〃
+        itemDbl: [], // 鍙屽嚮鎿嶄綔
+        itemImgWH: '', // 鍥剧墖瀹介珮 w,h
+        itemCut: '', // 瀛楃涓叉埅鍙�
+        itemHrefConf: '', // 瓒呴摼鎺�
+        itemQtName: '', // 鏌ヨ妯℃澘
+      },
       loading: false,
-      visible: false
+      visible: false,
+      selectList: [],
+      lastIndex: null,
+      showLabelLeftRow: {},
+      showLabelRightRow: {},
+      searchLeftRow: {},
+      searchRightRow: {},
+      itemFileWidthRow: {},
+      itemFileWidthChangeVal: '',
     }
   },
   methods: {
-    closeDialog() {
+    // 鑾峰彇鍒濆鍖栬〃鏍奸噷闇�瑕佺殑榛樿鏁版嵁
+    getFormSelectList() {
+      this.formLoading = true;
+      const params = {
+        'conditionMap[typeName]': this.treeRadio === '0' ? this.TreeNodeRow.id : this.TreeNodeRow.name,
+        'conditionMap[viType]': 'Form',
+        'conditionMap[viTypeFlag]': this.treeRadio === '0' ? 'BtmType' : this.treeRadio === '1' ? 'LinkType' : '',
+      };
 
+      // 鍙戣捣绗竴涓姹�
+      gridPortalVIDatas(1, -1, params).then(res => {
+        if (res.data.code === 200) {
+          const data = res.data.data;
+          this.selectList = data;
+
+          // 纭繚 this.selectList 宸茬粡璧嬪�间笖涓嶄负绌�
+          if (this.selectList && this.selectList.length > 0) {
+            const param = {
+              id: this.form.itemInObj,
+              viType: '1'
+            };
+
+            // 鍙戣捣绗簩涓姹�
+            return getPortalVIById(param);
+          }
+        }
+      }).then(res => {
+        if (res.data.code === 200) {
+          const data = res.data.obj.prm.prmItemList.map(item => ({
+            id: item.itemField
+          }));
+          // 杩囨护鍑烘潵闇�瑕佷娇鐢ㄥ瓧娈� 璧嬪�肩粰 鍙娇鐢ㄥ瓧娈垫覆鏌� 锛堜娇鐢ㄥ瓧娈电敱缂栬緫鎺ュ彛浼犻�掞級
+          const list = data.filter(item =>
+            !this.form.itemOutFieldList.some(outItem => outItem.id === item.id)
+          );
+          this.getSearchSelectList(); // 閫夋嫨琛ㄥ崟涓嬫媺鎺ュ彛
+          this.getFormSelect(); // 鏌ヨ妯℃澘涓嬫媺鎺ュ彛
+          this.getDbList(); // 鍙屽嚮鎿嶄綔涓嬫媺鎺ュ彛
+          this.$set(this.form, 'itemSelectOutFieldList', list);
+          this.formLoading = false;
+        }
+      })
+    },
+    // 鍏抽棴瀵硅瘽妗�
+    closeDialog() {
+      this.visible = false;
+      this.$refs.form.clearValidate();
+      this.form = {...this.defaultForm};
+    },
+
+    // 鑾峰彇閫夋嫨琛ㄥ崟鏁版嵁
+    getFormSelect() {
+      const params = {
+        'conditionMap[typeName]': this.treeRadio === '0' ? this.TreeNodeRow.id : this.TreeNodeRow.name,
+        'conditionMap[viType]': 'Form',
+        'conditionMap[viTypeFlag]': this.treeRadio === '0' ? 'BtmType' : this.treeRadio === '1' ? 'LinkType' : '',
+      }
+      gridPortalVIDatas(1, -1, params).then(res => {
+        if (res.data.code === 200) {
+          const data = res.data.data;
+          this.selectList = data;
+        }
+      });
+    },
+
+    // 琛ㄥ崟閫夋嫨change浜嬩欢
+    formSelectChange(val) {
+      this.form.itemOutFieldList = [];
+      this.form.itemKeyFieldList = [];
+      this.form.itemFieldWidthList = [];
+
+      const params = {
+        id: val,
+        viType: '1'
+      }
+      getPortalVIById(params).then(res => {
+        if (res.data.code === 200) {
+          const data = res.data.obj.prm.prmItemList.map(item => {
+            return {
+              id: item.itemField
+            }
+          });
+          this.form.itemSelectOutFieldList = data;
+        }
+      })
+    },
+
+    // 鏄剧ず瀛楁change
+    outFileChange(val) {
+      this.form.itemSearchFieldList = this.form.itemOutFieldList.map(item => {
+        return {
+          id: item
+        }
+      })
+      this.form.itemFieldWidthList = this.form.itemOutFieldList.map(item => {
+        return {
+          $cellEdit: true,
+          key: item,
+          value: '250',
+        }
+      })
+    },
+
+    // 鏌ヨ妯℃澘涓嬫媺鎺ュ彛鏌ヨ
+    getSearchSelectList() {
+      getObjTypeQTs({btName: this.treeRadio === '0' ? this.TreeNodeRow.id : this.TreeNodeRow.name}).then(res => {
+        this.searchQtNameList = res.data.data;
+      })
+    },
+
+    // 鑾峰彇鍙屽嚮鎿嶄綔鏁版嵁
+    getDbList() {
+      getItemDblList().then(res => {
+        if (res.data.code === 200) {
+          const data = res.data.data;
+          this.itemDblList = data;
+        }
+      })
+    },
+
+    // 鏌ヨ妯℃澘琛ㄦ牸琛岀偣鍑�
+    itemSeniorRowClick(row) {
+      this.itemSeniorRow = row;
+    },
+
+    // 鏌ヨ妯℃澘娣诲姞
+    searchAddClickHandler() {
+      if (!this.form.searchLabel) {
+        this.$message.error('鏌ヨ瀛楁涓嶈兘涓虹┖!');
+        return;
+      }
+      this.form.itemSeniorQueryBOS.push({
+        itemSeniorQueryCols: this.form.searchLabel,
+        itemSeniorQueryColsCounts: this.form.searchNumber,
+        itemQuerySql: this.form.searchSql
+      });
+    },
+
+    // 鏌ヨ妯℃澘鍒犻櫎
+    searchDelClickHandler() {
+      if (func.isEmptyObject(this.itemSeniorRow)) {
+        this.$message.error('璇烽�夋嫨涓�鏉℃暟鎹繘琛屽垹闄�');
+        return;
+      }
+
+      this.form.itemSeniorQueryBOS = this.form.itemSeniorQueryBOS.filter(item => item.itemSeniorQueryCols != this.itemSeniorRow.itemSeniorQueryCols);
+    },
+
+    // 琛ㄦ牸瀵硅瘽妗嗕繚瀛�
+    dialogSaveClickHandler() {
+      this.$refs.form.validate((valid) => {
+        if (valid) {
+          if (this.form.itemOutFieldList.length <= 0) {
+            this.$message.error('璇烽�夋嫨鏄剧ず瀛楁');
+            return;
+          }
+          const paramsForm = {...this.form};
+          paramsForm.itemSelectOutFieldList = this.form.itemSelectOutFieldList.map(item => item.id); // 鍙娇鐢ㄥ瓧娈�
+          paramsForm.itemOutFieldList = this.form.itemOutFieldList; // 闇�瑕佷娇鐢ㄥ瓧娈�
+          paramsForm.itemSearchFieldList = this.form.itemSearchFieldList.map(item => item.id); // 鍙緵鎼滅储瀛楁
+          paramsForm.itemKeyFieldList = this.form.itemKeyFieldList; // 闇�瑕佷娇鐢ㄥ瓧娈�
+          paramsForm.itemImgWH = `${this.itemImgWidth},${this.itemImgHeight}`;
+          const params = {
+            id: this.form.editNodeId,
+            prm: {
+              formQtName: this.form.itemQtName,
+              prmItemList: [
+                paramsForm
+              ],
+            },
+            typeFlag: this.treeRadio,
+            typeFlagText: this.treeRadio === '0' ? "涓氬姟绫诲瀷鐨勮〃鍗�" : '閾炬帴绫诲瀷鐨勮〃鍗�',
+            typeName: this.treeRadio === '0' ? this.TreeNodeRow.id : this.TreeNodeRow.name, // 涓氬姟绫诲瀷鍚� or 閾炬帴绫诲瀷鍚�
+            viName: this.form.viName,
+            viType: 0,
+            viTypeText: "琛ㄦ牸"
+          }
+          savePortalVI(params).then(res => {
+            if (res.data.code === 200) {
+              this.$message.success(res.data.obj);
+              // this.closeDialog();
+              this.$emit('updataTable');
+              // this.$refs.form.clearValidate();
+              this.visible = false;
+            }
+          })
+        } else {
+          return false;
+        }
+      });
     }
   }
 }
@@ -342,3 +571,4 @@
   }
 }
 </style>
+

--
Gitblit v1.9.3