From 945a4ea02215e40e6e9de65385e2c5d1ad70087c Mon Sep 17 00:00:00 2001
From: 田源 <lastanimals@163.com>
Date: 星期三, 23 十月 2024 17:07:37 +0800
Subject: [PATCH] 表单定义 预览 应用 表格穿梭框删除重复数据

---
 Source/plt-web/plt-web-ui/src/views/modelingMenu/ui/formDefine/index.vue                  |    1 
 Source/plt-web/plt-web-ui/src/views/modelingMenu/ui/formDefine/components/formDialog.vue  |  129 +++++++++++++++++++++++++++++++++++++-----
 Source/plt-web/plt-web-ui/src/views/modelingMenu/ui/formDefine/components/tableDialog.vue |   21 +++++-
 3 files changed, 129 insertions(+), 22 deletions(-)

diff --git a/Source/plt-web/plt-web-ui/src/views/modelingMenu/ui/formDefine/components/formDialog.vue b/Source/plt-web/plt-web-ui/src/views/modelingMenu/ui/formDefine/components/formDialog.vue
index 017da53..cabe032 100644
--- a/Source/plt-web/plt-web-ui/src/views/modelingMenu/ui/formDefine/components/formDialog.vue
+++ b/Source/plt-web/plt-web-ui/src/views/modelingMenu/ui/formDefine/components/formDialog.vue
@@ -129,7 +129,7 @@
               </el-button>
               <el-button icon="el-icon-plus" plain size="small" type="primary" @click="addCustomClickHandler">娣诲姞鑷畾涔夌粍浠�
               </el-button>
-              <el-button icon="el-icon-zoom-in" plain size="small" type="primary">棰勮</el-button>
+              <el-button icon="el-icon-zoom-in" plain size="small" type="primary" @click="checkViewHandler" >棰勮</el-button>
             </div>
           </basic-container>
         </el-main>
@@ -408,7 +408,7 @@
       append-to-body="true"
       class="avue-dialog"
       title="琛ㄥ崟"
-      width="40%"
+      width="50%"
       @close="closeCustomDialog">
       <el-form ref="form" :model="customForm" :rules="rules" label-position="left" label-width="85px">
         <el-row style="border-bottom: 1px solid #878585;padding-bottom: 10px">
@@ -436,7 +436,7 @@
 
           <el-col :span="12">
             <el-form-item class="rightLabel" label="鏄剧ず绫诲瀷">
-              <el-select v-model="customForm.itemType" placeholder="璇烽�夋嫨绫诲瀷" size="mini">
+              <el-select v-model="customForm.itemType" placeholder="璇烽�夋嫨绫诲瀷" size="mini" @change="customItemTypeChange">
                 <el-option v-for="(item,index) in showSelectList" :key="index" :label="item.label"
                            :value="item.value"></el-option>
               </el-select>
@@ -668,6 +668,82 @@
          <el-button type="primary" @click="customSaveHandler">纭� 瀹�</el-button>
     </span>
     </el-dialog>
+    <el-dialog
+      v-dialogDrag
+      :visible.sync="checkViewVisible"
+      append-to-body="true"
+      class="avue-dialog"
+      title="棰勮"
+      width="80%">
+      <el-form ref="form" :model="form" :rules="rules" label-width="100px">
+        <el-row>
+          <el-col v-for="(item,index) in formList" :key="index" :span="topForm.columnNumber">
+            <el-form-item :class="['hiddenLabel', { 'active-border': activeItem.text === item.text }]"
+                          :label="item.itemName + '锛�'"
+                          style="padding-left: 5px" @click.native="formItemClick(item,index)">
+              <el-input
+                v-if="item.itemType === 'text' ||
+                         item.itemType === 'custom' ||
+                         item.itemType === 'customform'||
+                         item.itemType === 'hidden' ||
+                         item.itemType === 'specialCharacter'"
+                v-model="item.value" :placeholder="item.text"
+                size="mini"></el-input>
+
+              <div v-if="item.itemType === 'textbtn'" style="display: flex;align-items: center">
+                <el-input v-model="item.value" :placeholder="item.text" size="mini"></el-input>
+                <el-button icon="el-icon-edit" plain size="mini" style="height: 28px;"
+                           type="primary"></el-button>
+              </div>
+
+              <el-input
+                v-if="item.itemType === 'textarea' || item.itemType === 'richtext' || item.itemType === 'webeditor'"
+                v-model="item.value"
+                :placeholder="item.text"
+                :rows="2"
+                type="textarea">
+              </el-input>
+
+              <el-input-number v-if="item.itemType === 'number'" v-model="item.value" :max="99999"
+                               :min="1"></el-input-number>
+              <el-input v-if="item.itemType === 'password'" v-model="input" placeholder="璇疯緭鍏ュ瘑鐮�"
+                        show-password></el-input>
+              <el-radio v-if="item.itemType === 'radio'" v-model="item.value"></el-radio>
+              <el-checkbox v-if="item.itemType === 'checkbox'" v-model="item.value"></el-checkbox>
+              <el-select v-if="item.itemType === 'select' || item.itemType === 'multiselect'"
+                         v-model="item.value" :disabled="true" placeholder="璇烽�夋嫨" size="mini">
+              </el-select>
+              <el-date-picker
+                v-if="item.itemType === 'date' || item.itemType === 'datetime'"
+                v-model="item.value"
+                :placeholder="item.itemType === 'date' ? '璇烽�夋嫨鏃ユ湡' : '璇烽�夋嫨鏃ユ湡鏃堕棿'"
+                type="date">
+              </el-date-picker>
+
+              <el-time-select
+                v-if="item.itemType === 'time'"
+                v-model="item.value"
+                :picker-options="{
+                         start: '08:30',
+                         step: '00:15',
+                         end: '18:30'
+                         }"
+                placeholder="閫夋嫨鏃堕棿">
+              </el-time-select>
+              <el-button v-if="item.itemType === 'file'"
+                         v-model="item.value" plain size="mini" type="primary">
+                涓婁紶鏂囦欢
+              </el-button>
+              <el-button v-if="item.itemType === 'multiFile'"
+                         v-model="item.value" plain size="mini" type="primary">
+                澶氭枃浠朵笂浼�
+              </el-button>
+
+            </el-form-item>
+          </el-col>
+        </el-row>
+      </el-form>
+    </el-dialog>
   </el-dialog>
 </template>
 
@@ -695,6 +771,7 @@
   },
   data() {
     return {
+      checkViewVisible: false,
       optionObj: {
         optionName: '',
         optionValue: ''
@@ -908,6 +985,7 @@
       this.activeItem = item;
       this.activeItemIndex = index;
       this.form = {...item};
+
       // console.log(item,index);
       this.topForm.position = index += 1;
     },
@@ -1088,10 +1166,8 @@
           prmItemList: this.formList
         },
       }
-      console.log(params);
       savePortalVI(params).then(res => {
-        console.log(res);
-        if(res.data.code === 200){
+        if (res.data.code === 200) {
           this.$message.success(res.data.obj);
           this.visible = false;
           this.closeDialog();
@@ -1110,12 +1186,14 @@
         this.$message.error('璇峰湪鍙充晶閫夋嫨鏁版嵁鍚庤繘琛屾搷浣滐紒');
         return;
       }
-      const targetObject = this.formList.find(item => item.text === this.form.text);
 
-      if (targetObject) {
-        targetObject.itemType = val;
+    },
+
+    // 鑷畾涔夌粍浠朵慨鏀规樉绀虹被鍨�
+    customItemTypeChange(val) {
+      if (val) {
+        this.customClearFormBottom();
       }
-      this.form.itemType = val;
     },
 
     // 鑷畾涔夌粍浠朵繚瀛�
@@ -1126,6 +1204,11 @@
       }
       if (!this.customForm.itemType) {
         this.$message.error('璇烽�夋嫨鏄剧ず绫诲瀷');
+        return;
+      }
+      const status = this.formList.some(item => item.text === this.customForm.text);
+      if(status){
+        this.$message.error('璇锋鏌ユ槸鍚︽坊鍔犵浉鍚岄」');
         return;
       }
       this.formList.push(this.customForm);
@@ -1148,6 +1231,13 @@
       this.form.itemListTable = this.form.itemListTxt = this.form.itemListVal = this.form.itemStyle = "";
     },
 
+    // 鑷畾涔夌粍浠舵竻绌轰笉鍚岀被鍨嬭〃鍗曚笅鏂圭粦瀹氬��
+    customClearFormBottom() {
+      this.customOptionObj = {};
+      this.customForm.itemKeyValueList = [];
+      this.customForm.itemListTable = this.customForm.itemListTxt = this.customForm.itemListVal = this.customForm.itemStyle = "";
+    },
+
     // 鑷畾涔夎〃鍗曚娇鐢ㄥ瓧娈甸�夋嫨
     customTextHandler() {
 
@@ -1155,17 +1245,22 @@
 
     // 鍙充晶琛ㄥ崟搴旂敤鎸夐挳
     asideFormHandler() {
+      if(!this.form.text){
+        this.$message.error('璇锋坊鍔犱竴鏉℃暟鎹繘琛屼繚瀛橈紒');
+        return;
+      }
+      this.formList = this.formList.map(item =>
+        item.text === this.form.text ? this.form : item
+      );
 
+      this.$message.success('搴旂敤鎴愬姛');
     },
 
-    customClearFormBottom() {
-      this.optionObj = {};
-      this.form.itemKeyValueList = [];
-      this.form.itemListTable = "";
-      this.form.itemListTxt = "";
-      this.form.itemListVal = "";
-      this.form.itemStyle = "";
+    // 棰勮鎸夐挳
+    checkViewHandler(){
+      this.checkViewVisible = true;
     }
+
   }
 }
 </script>
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 320ee99..ef4e680 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
@@ -284,7 +284,8 @@
       <el-col :span="24">
         <el-form-item label="鏌ヨ妯℃澘">
           <el-select v-model="form.itemQtName" placeholder="璇烽�夋嫨鏌ヨ妯℃澘" size="mini">
-            <el-option v-for="(item,index) in searchQtNameList" :key="index" :label="item.qtName" :value="item.qtName"></el-option>
+            <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>
@@ -344,7 +345,7 @@
   },
   data() {
     return {
-      searchQtNameList:[],
+      searchQtNameList: [],
       formLoading: false,
       itemImgHeight: '',
       itemImgWidth: '',
@@ -509,7 +510,7 @@
     },
 
     // 鏌ヨ妯℃澘涓嬫媺鎺ュ彛鏌ヨ
-    getSearchSelectList(){
+    getSearchSelectList() {
       getObjTypeQTs({btName: this.treeRadio === '0' ? this.TreeNodeRow.id : this.TreeNodeRow.name}).then(res => {
         this.searchQtNameList = res.data.data;
       })
@@ -604,6 +605,18 @@
         this.$message.error('璇烽�夋嫨涓�鏉℃暟鎹�');
         return;
       }
+
+
+      const onlyFlag = this.form.itemOutFieldList.some(item => item.id === this.showLabelLeftRow.id);
+
+      if (onlyFlag) {
+        this.$message.error('璇锋鏌ユ槸鍚︽湁閲嶅椤�');
+        this.form.itemSelectOutFieldList = this.form.itemSelectOutFieldList.filter(selectItem =>
+          !this.form.itemOutFieldList.some(outItem => outItem.id === selectItem.id)
+      )
+        return;
+      }
+
       this.form.itemOutFieldList.push(this.showLabelLeftRow);
       this.form.itemSearchFieldList = this.form.itemOutFieldList;
 
@@ -679,7 +692,7 @@
 
     // 鏌ヨ妯℃澘娣诲姞
     searchAddClickHandler() {
-      if(!this.form.searchLabel){
+      if (!this.form.searchLabel) {
         this.$message.error('鏌ヨ瀛楁涓嶈兘涓虹┖!');
         return;
       }
diff --git a/Source/plt-web/plt-web-ui/src/views/modelingMenu/ui/formDefine/index.vue b/Source/plt-web/plt-web-ui/src/views/modelingMenu/ui/formDefine/index.vue
index f92c433..e1b47da 100644
--- a/Source/plt-web/plt-web-ui/src/views/modelingMenu/ui/formDefine/index.vue
+++ b/Source/plt-web/plt-web-ui/src/views/modelingMenu/ui/formDefine/index.vue
@@ -264,7 +264,6 @@
 
     // 宸︿晶鏍戠偣鍑�
     nodeClick(row) {
-      console.log(row);
       this.tableRadio = null;
       this.nodeRow = row;
       this.getRightPortalVIDatas(row);

--
Gitblit v1.9.3