From 91f7d642ffa2fb5c776b4ac3ae18cdf8204ed44c Mon Sep 17 00:00:00 2001
From: 田源 <lastanimals@163.com>
Date: 星期四, 07 十一月 2024 17:54:24 +0800
Subject: [PATCH] 表单定义修只读必填绑定值&&预览功能样式变更

---
 Source/plt-web/plt-web-ui/src/page/index/tags.vue                                        |  303 +++++++++++++++++++------------------
 Source/plt-web/plt-web-ui/src/components/actions/BaseAction.js                           |    1 
 Source/plt-web/plt-web-ui/src/views/modelingMenu/ui/formDefine/components/formDialog.vue |  140 ++++++++--------
 3 files changed, 224 insertions(+), 220 deletions(-)

diff --git a/Source/plt-web/plt-web-ui/src/components/actions/BaseAction.js b/Source/plt-web/plt-web-ui/src/components/actions/BaseAction.js
index 012a316..3fe48d9 100644
--- a/Source/plt-web/plt-web-ui/src/components/actions/BaseAction.js
+++ b/Source/plt-web/plt-web-ui/src/components/actions/BaseAction.js
@@ -10,6 +10,7 @@
  * action閫氱敤鍏ュ彛
  */
 export const doAction = (button,options,callback) => {
+  console.log('option',options)
   options.paramVOS = paramLow(options.paramVOS)
   options.paramVOS['title'] = replaceFreeMarker(options.paramVOS.title, options.dataStore, options.sourceData);
   let isShow = true;
diff --git a/Source/plt-web/plt-web-ui/src/page/index/tags.vue b/Source/plt-web/plt-web-ui/src/page/index/tags.vue
index ab14485..673585c 100644
--- a/Source/plt-web/plt-web-ui/src/page/index/tags.vue
+++ b/Source/plt-web/plt-web-ui/src/page/index/tags.vue
@@ -1,46 +1,46 @@
 <template>
-  <div class="avue-tags"
-       v-if="showTag">
+  <div v-if="showTag"
+       class="avue-tags">
     <!-- tag鐩掑瓙 -->
     <div v-if="contextmenuFlag"
-         class="avue-tags__contentmenu"
-         :style="{left:contentmenuX+'px',top:contentmenuY+'px'}">
+         :style="{left:contentmenuX+'px',top:contentmenuY+'px'}"
+         class="avue-tags__contentmenu">
       <div class="item"
-           @click="clearCacheTags">{{$t('tagsView.clearCache')}}
+           @click="clearCacheTags">{{ $t('tagsView.clearCache') }}
       </div>
       <div class="item"
-           @click="closeOthersTags">{{$t('tagsView.closeOthers')}}
+           @click="closeOthersTags">{{ $t('tagsView.closeOthers') }}
       </div>
       <div class="item"
-           @click="closeAllTags">{{$t('tagsView.closeAll')}}
+           @click="closeAllTags">{{ $t('tagsView.closeAll') }}
       </div>
     </div>
-    <div class="avue-tags__box"
-         :class="{'avue-tags__box--close':!website.isFirstPage}">
+    <div :class="{'avue-tags__box--close':!website.isFirstPage}"
+         class="avue-tags__box">
       <el-tabs v-model="active"
-               type="card"
-               @contextmenu.native="handleContextmenu"
                :closable="tagLen!==1"
-               @tab-click="openTag"
-               @edit="menuTag">
-        <el-tab-pane :key="item.value"
-                     v-for="item in tagList"
+               type="card"
+               @edit="menuTag"
+               @contextmenu.native="handleContextmenu"
+               @tab-click="openTag">
+        <el-tab-pane v-for="item in tagList"
+                     :key="item.value"
                      :label="generateTitle(item)"
                      :name="item.value">
         </el-tab-pane>
 
       </el-tabs>
       <el-dropdown class="avue-tags__menu">
-        <el-button type="primary"
-                   size="mini">
-          {{$t('tagsView.menu')}}
+        <el-button size="mini"
+                   type="primary">
+          {{ $t('tagsView.menu') }}
           <i class="el-icon-arrow-down el-icon--right"></i>
         </el-button>
         <el-dropdown-menu slot="dropdown">
-          <el-dropdown-item @click.native="$parent.isSearch=true">{{$t('tagsView.search')}}</el-dropdown-item>
-          <el-dropdown-item @click.native="closeOthersTags">{{$t('tagsView.closeOthers')}}</el-dropdown-item>
-          <el-dropdown-item @click.native="closeAllTags">{{$t('tagsView.closeAll')}}</el-dropdown-item>
-          <el-dropdown-item @click.native="clearCacheTags">{{$t('tagsView.clearCache')}}</el-dropdown-item>
+          <el-dropdown-item @click.native="$parent.isSearch=true">{{ $t('tagsView.search') }}</el-dropdown-item>
+          <el-dropdown-item @click.native="closeOthersTags">{{ $t('tagsView.closeOthers') }}</el-dropdown-item>
+          <el-dropdown-item @click.native="closeAllTags">{{ $t('tagsView.closeAll') }}</el-dropdown-item>
+          <el-dropdown-item @click.native="clearCacheTags">{{ $t('tagsView.clearCache') }}</el-dropdown-item>
         </el-dropdown-menu>
       </el-dropdown>
     </div>
@@ -48,139 +48,140 @@
   </div>
 </template>
 <script>
-  import {mapGetters, mapState} from "vuex";
-  import {clearCache} from "@/api/user";
+import {mapGetters, mapState} from "vuex";
+import {clearCache} from "@/api/user";
 
-  export default {
-    name: "tags",
-    data() {
-      return {
-        active: "",
-        contentmenuX: "",
-        contentmenuY: "",
-        contextmenuFlag: false
-      };
-    },
-    created() {
-    },
-    mounted() {
+export default {
+  name: "tags",
+  data() {
+    return {
+      active: "",
+      contentmenuX: "",
+      contentmenuY: "",
+      contextmenuFlag: false
+    };
+  },
+  created() {
+  },
+  mounted() {
+    this.setActive();
+  },
+  watch: {
+    tag() {
       this.setActive();
     },
-    watch: {
-      tag() {
-        this.setActive();
-      },
-      contextmenuFlag() {
-        window.addEventListener("mousedown", this.watchContextmenu);
-      }
-    },
-    computed: {
-      ...mapGetters(["tagWel", "tagList", "tag", "website"]),
-      ...mapState({
-        showTag: state => state.common.showTag
-      }),
-      tagLen() {
-        return this.tagList.length || 0;
-      }
-    },
-    methods: {
-      generateTitle(item) {
-        return this.$router.$avueRouter.generateTitle(
-          item.label,
-          (item.meta || {}).i18n
-        );
-      },
-      watchContextmenu(event) {
-        if (!this.$el.contains(event.target) || event.button !== 0) {
-          this.contextmenuFlag = false;
-        }
-        window.removeEventListener("mousedown", this.watchContextmenu);
-      },
-      handleContextmenu(event) {
-        let target = event.target;
-        // 瑙e喅 https://github.com/d2-projects/d2-admin/issues/54
-        let flag = false;
-        if (target.className.indexOf("el-tabs__item") > -1) flag = true;
-        else if (target.parentNode.className.indexOf("el-tabs__item") > -1) {
-          target = target.parentNode;
-          flag = true;
-        }
-        if (flag) {
-          event.preventDefault();
-          event.stopPropagation();
-          this.contentmenuX = event.clientX;
-          this.contentmenuY = event.clientY;
-          this.tagName = target.getAttribute("aria-controls").slice(5);
-          this.contextmenuFlag = true;
-        }
-      },
-      //婵�娲诲綋鍓嶉�夐」
-      setActive() {
-        this.active = this.tag.value;
-      },
-      menuTag(value, action) {
-        if (action === "remove") {
-          let {tag, key} = this.findTag(value);
-          this.$store.commit("DEL_TAG", tag);
-          if (tag.value === this.tag.value) {
-            tag = this.tagList[key === 0 ? key : key - 1]; //濡傛灉鍏抽棴鏈爣绛捐鍓嶆帹涓�涓�
-            this.openTag(tag);
-          }
-        }
-      },
-      openTag(item) {
-        let tag;
-        if (item.name) {
-          tag = this.findTag(item.name).tag;
-        } else {
-          tag = item;
-        }
-        this.$router.push({
-          path: this.$router.$avueRouter.getPath({
-            name: tag.label,
-            src: tag.value
-          }, tag.meta),
-          query: tag.query
-        });
-      },
-      closeOthersTags() {
-        this.contextmenuFlag = false;
-        this.$store.commit("DEL_TAG_OTHER");
-      },
-      findTag(value) {
-        let tag, key;
-        this.tagList.map((item, index) => {
-          if (item.value === value) {
-            tag = item;
-            key = index;
-          }
-        });
-        return {tag: tag, key: key};
-      },
-      closeAllTags() {
-        this.contextmenuFlag = false;
-        this.$store.commit("DEL_ALL_TAG");
-        this.$router.push({
-          path: this.$router.$avueRouter.getPath({
-            src: this.tagWel.value
-          }),
-          query: this.tagWel.query
-        });
-      },
-      clearCacheTags() {
-        this.$confirm("鏄惁闇�瑕佹竻闄ょ紦瀛�?", {
-          confirmButtonText: "纭畾",
-          cancelButtonText: "鍙栨秷",
-          type: "warning"
-        }).then(() => {
-          clearCache().then(() => {
-            this.contextmenuFlag = false;
-            this.$message.success('娓呴櫎瀹屾瘯');
-          })
-        });
-      }
+    contextmenuFlag() {
+      window.addEventListener("mousedown", this.watchContextmenu);
     }
-  };
+  },
+  computed: {
+    ...mapGetters(["tagWel", "tagList", "tag", "website"]),
+    ...mapState({
+      showTag: state => state.common.showTag
+    }),
+    tagLen() {
+      return this.tagList.length || 0;
+    }
+  },
+  methods: {
+    generateTitle(item) {
+      return this.$router.$avueRouter.generateTitle(
+        item.label,
+        (item.meta || {}).i18n
+      );
+    },
+    watchContextmenu(event) {
+      if (!this.$el.contains(event.target) || event.button !== 0) {
+        this.contextmenuFlag = false;
+      }
+      window.removeEventListener("mousedown", this.watchContextmenu);
+    },
+    handleContextmenu(event) {
+      let target = event.target;
+      // 瑙e喅 https://github.com/d2-projects/d2-admin/issues/54
+      let flag = false;
+      if (target.className.indexOf("el-tabs__item") > -1) flag = true;
+      else if (target.parentNode.className.indexOf("el-tabs__item") > -1) {
+        target = target.parentNode;
+        flag = true;
+      }
+      if (flag) {
+        event.preventDefault();
+        event.stopPropagation();
+        this.contentmenuX = event.clientX;
+        this.contentmenuY = event.clientY;
+        this.tagName = target.getAttribute("aria-controls").slice(5);
+        this.contextmenuFlag = true;
+      }
+    },
+    //婵�娲诲綋鍓嶉�夐」
+    setActive() {
+      this.active = this.tag.value;
+    },
+    menuTag(value, action) {
+      if (action === "remove") {
+        let {tag, key} = this.findTag(value);
+        this.$store.commit("DEL_TAG", tag);
+        if (tag.value === this.tag.value) {
+          tag = this.tagList[key === 0 ? key : key - 1]; //濡傛灉鍏抽棴鏈爣绛捐鍓嶆帹涓�涓�
+          this.openTag(tag);
+        }
+      }
+    },
+    openTag(item) {
+      let tag;
+      if (item.name) {
+        tag = this.findTag(item.name).tag;
+      } else {
+        tag = item;
+      }
+      this.$router.push({
+        path: this.$router.$avueRouter.getPath({
+          name: tag.label,
+          src: tag.value
+        }, tag.meta),
+        query: tag.query
+      });
+    },
+    closeOthersTags() {
+      this.contextmenuFlag = false;
+      this.$store.commit("DEL_TAG_OTHER");
+    },
+    findTag(value) {
+      let tag, key;
+      this.tagList.map((item, index) => {
+        if (item.value === value) {
+          tag = item;
+          key = index;
+        }
+      });
+      return {tag: tag, key: key};
+    },
+    closeAllTags() {
+      this.contextmenuFlag = false;
+      this.$store.commit("DEL_ALL_TAG");
+      this.$router.push({
+        path: this.$router.$avueRouter.getPath({
+          src: this.tagWel.value
+        }),
+        query: this.tagWel.query
+      });
+    },
+    clearCacheTags() {
+      this.$confirm("鏄惁闇�瑕佹竻闄ょ紦瀛�?", {
+        confirmButtonText: "纭畾",
+        cancelButtonText: "鍙栨秷",
+        type: "warning"
+      }).then(() => {
+        // clearCache().then(() => {
+        //   this.contextmenuFlag = false;
+        //   this.$message.success('娓呴櫎瀹屾瘯');
+        // })
+        this.$message.success('娓呴櫎瀹屾瘯');
+      });
+    }
+  }
+};
 </script>
 
 
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 0e8b0c5..142890e 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
@@ -75,25 +75,22 @@
                         <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">
+                          v-if="item.itemType === 'textarea' || item.itemType === 'richtext' || item.itemType === 'webeditor'"
+                          v-model="item.value"
+                          :placeholder="item.text">
                       </el-input>
-
-                      <el-input-number v-if="item.itemType === 'number'" v-model="item.value" :max="99999"
+                      <el-input-number size="mini" 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  v-if="item.itemType === 'select' || item.itemType === 'multiselect'"
+                                 v-model="item.value" :disabled="false" placeholder="璇烽�夋嫨" size="mini">
                       </el-select>
                       <el-date-picker
+                        class="formItemMargin"
                         v-if="item.itemType === 'date' || item.itemType === 'datetime'"
                         v-model="item.value"
                         :placeholder="item.itemType === 'date' ? '璇烽�夋嫨鏃ユ湡' : '璇烽�夋嫨鏃ユ湡鏃堕棿'"
@@ -101,6 +98,7 @@
                       </el-date-picker>
 
                       <el-time-select
+                        class="formItemMargin"
                         v-if="item.itemType === 'time'"
                         v-model="item.value"
                         :picker-options="{
@@ -146,11 +144,11 @@
                 <el-row style="border-bottom: 1px solid #878585;padding-bottom: 10px">
                   <el-col :span="24">
                     <el-form-item label="浣跨敤瀛楁">
-                      <div style="display: flex">
+                      <div style="display: flex;align-items: center">
                         <el-input v-model="form.text" :readonly="true" placeholder="璇疯緭鍏ヤ娇鐢ㄥ瓧娈�" size="mini"></el-input>
-                        <el-checkbox v-model="form.itemIsEditable" style="margin-left: 5px; margin-right: 5px">鍙
+                        <el-checkbox v-model="form.itemIsEditable" true-label="1" false-label="0" style="margin-left: 5px; margin-right: 5px">鍙
                         </el-checkbox>
-                        <el-checkbox v-model="form.itemIsRequired" style="margin-left: 5px;margin-right: 0px">蹇呭~
+                        <el-checkbox v-model="form.itemIsRequired" true-label="1" false-label="0" style="margin-left: 5px;margin-right: 0px">蹇呭~
                         </el-checkbox>
                       </div>
                     </el-form-item>
@@ -705,75 +703,75 @@
       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' ||
+      width="60%">
+      <div style="height: 600px">
+        <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 :label="item.itemName + '锛�'" style="padding-left: 5px">
+                <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>
+                  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>
+                <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
+                  v-if="item.itemType === 'textarea' || item.itemType === 'richtext' || item.itemType === 'webeditor'"
+                  v-model="item.value"
+                  :placeholder="item.text">
+                </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-input-number size="mini" 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" placeholder="璇烽�夋嫨" size="mini">
+                  <el-option v-for="(i,k) in item.itemKeyValueList" :key="l" :label="i.value"
+                             :value="i.key"></el-option>
+                </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="{
+                <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>
+                  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-form-item>
+            </el-col>
+          </el-row>
+        </el-form>
+      </div>
     </el-dialog>
 
     <el-dialog
@@ -1527,4 +1525,8 @@
   font-size: 14px
 }
 
+.formItemMargin{
+  margin: 10px 0 10px 0;
+}
+
 </style>

--
Gitblit v1.9.3