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; 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; // 解决 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; // 解决 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> 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>