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