From 20a1d1809d95d3395403bf2517e49c7def65fedd Mon Sep 17 00:00:00 2001 From: wangting <wangting@vci-tech.com> Date: 星期一, 13 一月 2025 17:50:15 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/master' --- Source/plt-web/plt-web-ui/src/views/modelingMenu/ui/uiDefine/rightRegion/bottomTable/index.vue | 978 +++++++++++++++++++++++++++++++++++++------------------- 1 files changed, 639 insertions(+), 339 deletions(-) diff --git a/Source/plt-web/plt-web-ui/src/views/modelingMenu/ui/uiDefine/rightRegion/bottomTable/index.vue b/Source/plt-web/plt-web-ui/src/views/modelingMenu/ui/uiDefine/rightRegion/bottomTable/index.vue index ac69f17..a2566f8 100644 --- a/Source/plt-web/plt-web-ui/src/views/modelingMenu/ui/uiDefine/rightRegion/bottomTable/index.vue +++ b/Source/plt-web/plt-web-ui/src/views/modelingMenu/ui/uiDefine/rightRegion/bottomTable/index.vue @@ -3,21 +3,44 @@ <avue-crud ref="crud" v-model="form" + :before-close="beforeClose" + :before-open="beforeOpen" :data="data" :option="option" :table-loading="tableLoading" - @row-del="rowDelHandler" @row-save="rowSaveHandler" @row-update="rowUpdateHandler" - @refresh-change="handleRefresh" @selection-change="selectChangeHandler" @row-click="rowClickHandler"> <template slot="menuLeft" slot-scope="scope"> - <el-button icon="el-icon-plus" plain size="small" type="primary" - @click="addClickHandler">澧炲姞 + <el-button v-if="permissionChildrenList.UiPageLayoutAddBtn" class="button-custom-icon" plain size="small" + type="primary" + @click="addClickHandler"> + <icon-show :name="permissionChildrenList.UiPageLayoutAddBtn.source"></icon-show> + 澧炲姞 </el-button> - <el-button icon="el-icon-edit-outline" plain size="small" type="primary" - @click="btnDesignClickHandler">鎸夐挳璁捐 + </template> + + <template slot="menu" slot-scope="scope"> + <el-button v-if="permissionChildrenList.UiPageLayoutDesignBtn" size="small" type="text" + @click="btnDesignClickHandler(scope.row)"> + <icon-show :name="permissionChildrenList.UiPageLayoutDesignBtn.source"></icon-show> + 鎸夐挳璁捐 + </el-button> + <el-button v-if="permissionChildrenList.UiPageLayoutEditBtn" size="small" type="text" + @click="editBtnClick(scope.row)"> + <icon-show :name="permissionChildrenList.UiPageLayoutEditBtn.source"></icon-show> + 缂栬緫 + </el-button> + <el-button v-if="permissionChildrenList.UiPageLayoutDelBtn" size="small" type="text" + @click="rowDeleteHandler(scope.row)"> + <icon-show :name="permissionChildrenList.UiPageLayoutDelBtn.source"></icon-show> + 鍒犻櫎 + </el-button> + <el-button v-if="permissionChildrenList.UiPageLayoutCloneBtn" size="small" type="text" + @click="rowCloneHandler(scope.row)"> + <icon-show :name="permissionChildrenList.UiPageLayoutCloneBtn.source"></icon-show> + 鍏嬮殕 </el-button> </template> @@ -39,7 +62,6 @@ </avue-crud> </template> - <!-- 鍒囨崲鎼滅储绫诲瀷 婧愬璞� 鐩爣瀵硅薄鏄剧ずlabel鍒囨崲 --> <template slot="showTypeLabel" slot-scope="{}"> <span v-if="form.templateType === '3'">椤剁骇鑺傜偣</span> @@ -48,6 +70,52 @@ <span v-else-if="form.searchTarger === '1'">婧愬璞�</span> <span v-else-if="form.searchTarger === '2'">鐩爣瀵硅薄</span> </template> + + <template slot="extAttrLabel" slot-scope="{}"> + <el-tooltip placement="top"> + <div slot="content">绀轰緥:ext1:xx;ext2;ext3:xx;ext4:xxx;extn:xxx; + <br/>1銆佺敤鑻变氦鍗婅鍒嗗彿:鍒嗛殧鍚勭粍鍊�; + <br/>2銆佹瘡缁勭敤鑻变氦鍗婅鍐掑彿:鍒嗛殧鍗曚竴鎵╁睍灞炴�у悕绉板強灞炴�у��; + <br/>3銆佸彲浠ュ畾涔変换鎰忕粍锛屼絾鎬诲瓧绗﹂暱搴︿笉寰楄秴杩�4000; + <br/>4銆佽緭鍏ユ椂锛屼笉瑕佹暡鍥炶溅鎹㈣; + </div> + <span>鎵╁睍灞炴�� <i class="el-icon-warning" style="color:red;"></i> </span> + </el-tooltip> + </template> + + <template slot="uiParserLabel" slot-scope="{}"> + <el-tooltip placement="top"> + <div slot="content">绀轰緥锛歫ava_cs;xxx.java_bs;xxx.net_cs;xxxx.net_bs;xxx.mobile_cs;xx.mobile_bs;xxx; + <br/>1銆佺敤鑻辨枃鍗婅鍒嗗彿;鍒嗗壊鍚勭粍鍊硷紱锛堣繖閲岀粨灏剧殑鏄腑鏂囧瓧绗︾殑鍒嗗彿锛� + <br/>2銆佹瘡缁勭敤鑻辨枃鍗婅鍐掑彿:鍒嗛殧鍗曚竴鎵╁睍灞炴�у悕绉板強灞炴�у�硷紱 + <br/>3銆佸叾涓殑xxx鏄悇绉嶈В鏋愮被鐨勫畬鏁寸被鍨嬪悕绉帮紙瀹屽叏闄愬畾鍚�)锛� + <br/>4銆佽緭鍏ユ椂锛屼笉瑕佹暡鍥炶溅鎹㈣; + </div> + <span>UI瑙f瀽绫诲瀷 <i class="el-icon-warning" style="color:red;"></i> </span> + </el-tooltip> + </template> + + <template slot="templateIdForm" slot-scope="{}"> + <el-select v-model="form.templateId" filterable placeholder="璇烽�夋嫨"> + <el-option + v-for="item in templateIdList" + :key="item.viName" + :label="item.viName" + :value="item.viName"> + </el-option> + </el-select> + </template> + + <template slot="queryTemplateNameForm" slot-scope="{}"> + <el-select v-model="form.queryTemplateName" filterable placeholder="璇烽�夋嫨"> + <el-option + v-for="item in queryTemplateNameList" + :key="item.qtName" + :label="item.qtName" + :value="item.qtName"> + </el-option> + </el-select> + </template> </avue-crud> <el-dialog v-dialogDrag @@ -55,28 +123,36 @@ append-to-body="true" class="avue-dialog" title="閰嶇疆鎸夐挳" - width="75%" - @close="dialogClose"> + width="1200px" + @close="$refs.form.clearValidate();disabledBtn=true;"> <el-container v-loading="dialogLoading"> - <el-header style="height: 40px !important;"> + <el-header style="height: 40px !important;padding-left: 5px;"> <div style="display: flex"> - <el-button :disabled="!disabledBtn" plain size="mini" type="primary" @click="addClickBtnHandler">娣诲姞 + <el-button v-show="disabledBtn" :disabled="!disabledBtn" plain size="mini" type="primary" + @click="addClickBtnHandler">娣诲姞 </el-button> - <el-button :disabled="!disabledBtn" plain size="mini" type="primary" @click="editClickBtnHandler">淇敼 + <el-button v-show="disabledBtn" :disabled="!disabledBtn" plain size="mini" type="primary" + @click="editClickBtnHandler">淇敼 </el-button> - <el-button :disabled="!disabledBtn" plain size="mini" type="danger" @click="delClickBtnHandler">鍒犻櫎 + <el-button v-show="disabledBtn" :disabled="!disabledBtn" plain size="mini" type="danger" + @click="delClickBtnHandler">鍒犻櫎 </el-button> - <el-button :disabled="disabledBtn" plain size="mini" type="primary" @click="saveClickBtnHandler">淇濆瓨 + <el-button v-show="!disabledBtn" :disabled="disabledBtn" icon="el-icon-check" plain size="mini" + type="success" @click="saveClickBtnHandler">淇濆瓨 </el-button> - <el-button :disabled="disabledBtn" plain size="mini" type="primary" @click="escClickBtnHandler">鍙栨秷 + <el-button v-show="!disabledBtn" :disabled="disabledBtn" icon="el-icon-close" plain size="mini" + type="danger" @click="escClickBtnHandler">鍙栨秷 </el-button> - <el-button plain size="mini" type="primary">璋冩暣涓轰笅绾ф寜閽�</el-button> - <el-button plain size="mini" type="primary">璋冩暣涓轰笂绾ф寜閽�</el-button> - <el-button plain size="mini" type="primary">澶嶅埗鍒板叾浠栫粍浠�</el-button> + <el-button v-show="disabledBtn" plain size="mini" type="primary" @click="changeBottomBtnHandler">璋冩暣涓轰笅绾ф寜閽� + </el-button> + <el-button v-show="disabledBtn" plain size="mini" type="primary" @click="changeTopBtnHandler">璋冩暣涓轰笂绾ф寜閽� + </el-button> + <el-button v-show="disabledBtn" plain size="mini" type="primary" @click="cloneClickBtnHandler">澶嶅埗鍒板叾浠栫粍浠� + </el-button> </div> </el-header> <el-container> - <el-aside width="20%"> + <el-aside width="25%"> <basic-container> <div style="height:650px;"> <avue-tree @@ -87,9 +163,10 @@ node-key="value" @node-click="nodeTreeClick"> <span slot-scope="{ node, data }" class="el-tree-node__label"> - <span style="font-size: 14px"> - <i class="el-icon-s-promotion"></i> - {{ (node || {}).label }} + <span style="display: flex"> + <i v-if="data.oId=='parentNode'" class="iconShow el-icon-s-home"></i> + <icon-show v-else :name="data.iconPath"></icon-show> + {{ (node || {}).label }} </span> </span> </avue-tree> @@ -100,38 +177,40 @@ <el-main> <basic-container> <el-divider content-position="left">鍩虹淇℃伅</el-divider> - <el-form ref="form" :model="basicForm" :rules="rules" label-width="90px" size="small" + <el-form ref="form" :model="basicForm" :rules="rules" label-width="100px" size="small" style="margin-top: 20px"> <el-row> - <el-form-item :inline-message='true' label="缂栧彿锛�" prop="seq"> - <el-input-number v-model="basicForm.seq" :disabled="disabledBtn" :max="9999" :min="1" - controls-position="right"></el-input-number> - </el-form-item> - - <el-form-item :inline-message='true' label="鍚嶇О锛�" prop="label"> - <el-col :span="14"> - <el-input v-model="basicForm.label" :readonly="disabledBtn"></el-input> - </el-col> - </el-form-item> - - <el-form-item label="Action锛�" prop="Action"> - <el-col :span="14"> - <div style="display: flex"> - <el-input v-model="basicForm.actionName" :readonly="disabledBtn"></el-input> - <el-button :disabled="disabledBtn" size="mini" style="margin-left: 10px" type="success" - @click="actionFoucus">閫夋嫨 - </el-button> - </div> - </el-col> - </el-form-item> + <el-col :span="12"> + <el-form-item :inline-message='true' label="缂栧彿锛�" prop="seq"> + <el-input-number v-model="basicForm.seq" :disabled="disabledBtn" :max="9999" :min="1" + controls-position="right"></el-input-number> + </el-form-item> + </el-col> <el-col :span="12"> - <el-form-item label="鏄惁鎺堟潈锛�" prop="resource"> + <el-form-item label="鍚嶇О锛�" prop="label"> + <el-input v-model="basicForm.label" :disabled="disabledBtn"></el-input> + </el-form-item> + </el-col> + + <el-col :span="12"> + <el-form-item label="Action锛�" prop="actionName"> + <el-input v-model="basicForm.actionName" :clearable="true" :disabled="disabledBtn" + @clear="clearActionValue" @focus="actionFoucus"> + <i slot="suffix" class="el-input__icon el-icon-search" style="cursor: pointer" + @click="actionFoucus"></i> + </el-input> + </el-form-item> + </el-col> + + <el-col :span="12"> + <el-form-item label="鏄惁鎺堟潈锛�" prop="authorization"> <el-radio v-model="basicForm.authorization" :disabled="disabledBtn" label="0">鏄�</el-radio> <el-radio v-model="basicForm.authorization" :disabled="disabledBtn" label="1">鍚�</el-radio> </el-form-item> </el-col> - + <el-col :span="24"> + </el-col> <el-col :span="12"> <el-form-item label="鏄惁鏄剧ず锛�" prop="show"> <el-radio v-model="basicForm.show" :disabled="disabledBtn" label="0">鏄�</el-radio> @@ -139,7 +218,7 @@ </el-form-item> </el-col> - <el-col :span="12"> + <el-col v-show="basicForm.show=='0'" :span="12"> <el-form-item label="鏄剧ず鏂瑰紡锛�" prop="showType"> <el-radio v-model="basicForm.displayMode" :disabled="disabledBtn" label="text">鏂囧瓧</el-radio> <el-radio v-model="basicForm.displayMode" :disabled="disabledBtn" label="image">鍥炬爣</el-radio> @@ -147,10 +226,18 @@ </el-radio> </el-form-item> </el-col> + <el-col v-show="basicForm.show=='0' && (basicForm.displayMode=='image'||basicForm.displayMode=='textandimage')" + :span="24"> + <el-form-item label="鍥炬爣锛�" prop="iconPath"> + <el-col :span="24" v-show="basicForm.show=='0' && (basicForm.displayMode=='image'||basicForm.displayMode=='textandimage')"> + <el-form-item :class="basicForm.displayMode==='image'?'is-required':''" label="鍥炬爣锛�" prop="iconPath"> + <input-icon v-model="basicForm.iconPath" :disabled="disabledBtn"></input-icon> + </el-form-item> + </el-col> - <el-col :span="12"> + <el-col :span="24"> <el-form-item label="鎻愮ず淇℃伅锛�" prop="desc"> - <el-input v-model="basicForm.desc" :readonly="disabledBtn" type="textarea"></el-input> + <el-input v-model="basicForm.desc" :disabled="disabledBtn" type="textarea"></el-input> </el-form-item> </el-col> @@ -160,10 +247,12 @@ <el-divider content-position="left">鍙傛暟淇℃伅</el-divider> <avue-crud ref="paramsCrud" + v-model="paramsForm" :data="paramsData" :option="paramsOption" style="margin-top: 20px" - @row-save="paramsRowSave"> + @row-save="paramsRowSave" + @row-update="paramsRowUpdate"> <template slot="menuLeft" slot-scope="scope"> <el-button :disabled="disabledBtn" icon="el-icon-plus" plain size="small" type="primary" @click="paramsRowAddClickHandler">鍒涘缓 @@ -171,6 +260,9 @@ </template> <template slot="menu" slot-scope="scope"> + <el-button :disabled="disabledBtn" icon="el-icon-edit" size="small" type="text" + @click="paramsRowEditHandler(scope.row)">淇敼 + </el-button> <el-button :disabled="disabledBtn" icon="el-icon-delete" size="small" type="text" @click="paramsRowDeleteHandler(scope.row)">鍒犻櫎 </el-button> @@ -182,7 +274,12 @@ </el-container> </el-container> </el-dialog> - <action-dialog ref="actionDialog" @updataAction="actionSaveHandler"></action-dialog> + <action-dialog ref="actionDialog" @cancelAction="actionCancelHandler" + @updataAction="actionSaveHandler"></action-dialog> + <clone-dialog ref="cloneDialog" :fromOid="fromOid" :sourceOId="sourceOId" paramsType="tab" + type="pageDef"></clone-dialog> + <clone-dialog ref="cloneBtnDialog" :fromOid="formBtnOid" :sourceOId="sourceBtnOid" paramsType="pageDef" + type="tabButton"></clone-dialog> </div> </template> @@ -191,14 +288,21 @@ import func from "@/util/func"; import { getPLPageDefinations, - getBtmDatasByPage, - getPortalVIDatasByPage, - getQTInfoDatasByPage, getTabButtons, addTapButton, - updateTapButton, getTabByContextIdAndType + updateTapButton, + addPageDefination, + deleteTabButton, + delPageDefination, + joinBtn, + exitBtn, + updatePageDefination, + getPortalVIDatasByPage, + getQTInfoDatasByPage } from "@/api/UI/uiDefine"; -import actionDialog from '@/views/modelingMenu/ui/uiDefine/rightRegion/bottomTable/components/action'; +import actionDialog from '@/views/modelingMenu/ui/Aciton/components/dialog'; +import cloneDialog from "@/views/modelingMenu/ui/uiDefine/rightRegion/cloneDialog"; +import {mapGetters} from "vuex"; export default { props: { @@ -213,11 +317,22 @@ } }, components: { - actionDialog + actionDialog, + cloneDialog }, name: "index", data() { return { + queryTemplateNameList: [], + templateIdList: [], + searchTargerChangeFlag: false, + showTypeChangeFlag: false, + linkTypeChangeFlag: false, + formBtnOid: '', + sourceBtnOid: '', + sourceOId: '', + fromOid: '', + paramsForm: {}, eventOption: { ...basicOption, addBtn: false, @@ -225,6 +340,7 @@ delBtn: false, refreshBtn: false, highlightCurrentRow: true, + height: 200, column: [ { label: 'EventKey', @@ -257,7 +373,7 @@ message: '璇疯緭鍏ventValue', trigger: 'blur' } - ] + ] } ] }, @@ -276,14 +392,36 @@ editBtn: false, delBtn: false, refreshBtn: false, + dialogWidth: '600', + menuWidth: '140', column: [ { label: '鍚嶇О', - prop: 'name' + prop: 'name', + width: 180, + span: 24, + overHidden: true, + rules: [ + { + required: true, + message: '璇疯緭鍏ュ悕绉�', + trigger: 'blur' + } + ] }, { label: '鍊�', - prop: 'value' + prop: 'value', + type: 'textarea', + span: 24, + overHidden: true, + rules: [ + { + required: true, + message: '璇疯緭鍏ュ��', + trigger: 'blur' + } + ] } ] }, @@ -294,11 +432,12 @@ label: [ {required: true, message: '璇疯緭鍏ュ悕绉�', trigger: 'blur'}, ], + actionName: [ + {required: true, message: '璇烽�夋嫨Action', trigger: 'change'}, + ], }, // 鎸夐挳璁捐 鍩虹淇℃伅 - basicForm: { - seq: 1 - }, + basicForm: {}, treeData: [], treeOption: { menu: false, @@ -317,14 +456,20 @@ data: [], option: { ...basicOption, + size: 'mini', height: this.height, addBtn: false, index: true, calcHeight: -30, + editBtn: false, + delBtn: false, + menuWidth: 300, column: [ { label: '鍚嶇О', prop: 'name', + width: 220, + labelWidth: 110, rules: [ { required: true, @@ -336,6 +481,8 @@ { label: '缂栧彿', prop: 'seq', + width: 100, + labelWidth: 110, hide: false, rules: [ { @@ -349,16 +496,25 @@ label: 'UI瑙f瀽绫诲瀷', prop: 'uiParser', hide: true, + labelWidth: 110, }, { label: '鎵╁睍灞炴��', prop: 'extAttr', hide: true, + labelWidth: 110, + }, + { + label: '鎻忚堪', + prop: 'description', + labelWidth: 110, + hide: false, }, { label: '妯℃澘绫诲瀷', prop: 'templateType', type: 'radio', + labelWidth: 110, span: 24, value: '1', dicData: [ @@ -392,7 +548,11 @@ return val; }, change: (val) => { - console.log(val); + const list = ['showType', 'linkType', 'templateId', 'SubUILayout', 'searchObjType', 'queryTemplateName', 'controlPath', 'expandCols', 'rootContent', 'showAbs', 'showLinkAbs', 'separator'] + // list.forEach(item => { + // this.form[item] = ""; + // }) + // this.form.searchTarger = '1' const searchTarger = this.option.column.find(item => item.prop === 'searchTarger'); // 鑾峰彇鎼滅储绫诲瀷閰嶇疆椤� searchTarger.display = true; // 鍒囨崲榛樿灞曠ず鎼滅储绫诲瀷 // 妯℃澘绫诲瀷涓鸿〃鏍� @@ -413,6 +573,7 @@ label: '鏄剧ず绫诲瀷', prop: 'navigatorType', type: 'radio', + labelWidth: 110, span: 24, value: '1', hide: true, @@ -435,6 +596,7 @@ label: '鎼滅储绫诲瀷', prop: 'searchTarger', display: true, + labelWidth: 110, type: 'radio', value: '1', span: 24, @@ -457,173 +619,144 @@ const obj = this.option.group[0].column.find(item => item.prop === 'linkType'); obj.display = val.value !== '1'; } + + if (this.searchTargerChangeFlag) { + // 鍒囨崲娓呯┖妯℃澘绫诲瀷 + const list = ['showType', 'linkType', 'templateId', 'SubUILayout', 'queryTemplateName', 'searchObjType', 'bsDataModel', 'csDataModel']; + list.forEach(item => { + this.form[item] = ''; + }) + } else { + this.searchTargerChangeFlag = true; + } } - }, - { - label: '鎻忚堪', - prop: 'description', - display: false }, ], group: [ { + icon: 'el-icon-info', label: '', - arrow: false, + arrow: true, prop: 'group1', column: [ { label: '婧愬璞�', prop: 'showType', - type: 'table', - display: false, + type: 'select', + labelWidth: 115, + cascader: ['linkType', 'SubUILayout', 'searchObjType'], placeholder: "璇疯緭鍏ュ唴瀹�", - props: { - label: 'name', - value: 'name' - }, - children: { - border: true, - column: [{ - label: '鍚嶇О', - search: true, - searchSpan: 24, - prop: 'name' - }, { - label: '鏍囩', - prop: 'label' - }], - }, - onLoad: ({page, value, data}, callback) => { - //page鍒嗛〉 - // 涓嶇鏄悳绱� 杩樻槸棣栨鍔犺浇閮戒細瑙﹀彂page 鎵�浠ュ彧闇�瑕佹嬁page瀛樺湪涓庡惁杩涜璇锋眰灏卞彲浠� 濡傛灉鍐嶅幓鍒ゆ柇data鎼滅储 鎴栬�卾alue鍒濇鍔犺浇灏变細閲嶅璇锋眰 - if (page) { - const params = { - "conditionMap[filterInputValue]": value ? value.name : '' - }; - getBtmDatasByPage(page.currentPage, page.pageSize, params).then(res => { - callback({ - total: res.data.total, - data: res.data.data - }) + dicUrl: '/api/uiManagerController/getBtmDatasByPage?page=1&limit=-1', + filterable: true, + change: (val) => { + if (val.value) { + let params = { + 'conditionMap[selectBtmType]': this.form.searchTarger === '1' ? val.value : this.form.linkType + } + getPortalVIDatasByPage(1, -1, params).then(res => { + this.templateIdList = res.data.data; + }) + getQTInfoDatasByPage(1, -1, params).then(res => { + this.queryTemplateNameList = res.data.data; }) } + if (this.showTypeChangeFlag) { + if (val.value) { + if (this.form.searchTarger === '1') { + this.form.templateId = ""; + this.form.queryTemplateName = ""; + } else { + this.form.linkType = ""; + this.form.templateId = ""; + this.form.queryTemplateName = ""; + } + } + } else { + this.showTypeChangeFlag = true; + } }, + props: { + label: 'name', + value: 'name', + desc: 'label' + }, + rules: [ + { + required: true, + message: '璇烽�夋嫨鍐呭', + trigger: 'change' + } + ], }, { label: '閾炬帴绫诲瀷', prop: 'linkType', - type: 'table', + type: 'select', display: false, + labelWidth: 115, + filterable: true, props: { - label: 'viName', - value: 'viName' + label: 'name', + value: 'name', + desc: 'tag' }, - children: { - border: true, - column: [{ - label: '鍚嶇О', - search: true, - searchSpan: 24, - prop: 'viName' - }, { - label: '绫诲瀷', - prop: 'viType' - }], - }, - onLoad: ({page, value, data}, callback) => { - if (page) { - const params = { - "conditionMap[selectBtmType]": this.form.showType, - "conditionMap[filterInputValue]": data ? data.viName : '', - }; - getPortalVIDatasByPage(page.currentPage, page.pageSize, params).then(res => { - console.log(res); - callback({ - total: res.data.total, - data: res.data.data - }) + dicUrl: '/api/uiManagerController/getLinkDatasByPage?page=1&limit=-1&conditionMap[selectBtmType]={{key}}', + change: (val) => { + if (val.value) { + let params = { + 'conditionMap[selectBtmType]': val.value + } + getPortalVIDatasByPage(1, -1, params).then(res => { + this.templateIdList = res.data.data; + }) + getQTInfoDatasByPage(1, -1, params).then(res => { + this.queryTemplateNameList = res.data.data; }) } - }, + if (this.linkTypeChangeFlag) { + if (val.value) { + this.form.templateId = ""; + this.form.queryTemplateName = ""; + } + } else { + this.linkTypeChangeFlag = true; + } + } }, { label: '閫夋嫨妯℃澘', - prop: 'showTypea', + prop: 'templateId', + labelWidth: 115, display: false, - type: 'table', - props: { - label: 'viName', - value: 'viName' - }, - children: { - border: true, - column: [{ - label: '鍚嶇О', - search: true, - searchSpan: 24, - prop: 'viName' - }, { - label: '绫诲瀷', - prop: 'viType' - }], - }, - onLoad: ({page, value, data}, callback) => { - if (page) { - const params = { - "conditionMap[selectBtmType]": this.form.showType, - "conditionMap[filterInputValue]": data ? data.viName : '', - }; - getPortalVIDatasByPage(page.currentPage, page.pageSize, params).then(res => { - console.log(res); - callback({ - total: res.data.total, - data: res.data.data - }) - }) + formslot: true, + rules: [ + { + required: true, + message: '璇烽�夋嫨妯℃澘', + trigger: 'submit' } - }, + ], }, { label: 'UI瀹氫箟', - prop: 'UI', - type: 'table', + prop: 'SubUILayout', + type: 'select', + labelWidth: 115, + filterable: true, display: false, props: { - label: 'qtName', - value: 'qtName' + label: 'plName', + value: 'plCode', }, - children: { - border: true, - column: [{ - label: '鍚嶇О', - search: true, - searchSpan: 24, - prop: 'qtName' - }, { - label: '绫诲瀷', - prop: 'btmName' - }], - }, - onLoad: ({page, value, data}, callback) => { - if (page) { - const params = { - "conditionMap[selectBtmType]": this.form.showType, - "conditionMap[filterInputValue]": data ? data.qtName : '', - }; - getQTInfoDatasByPage(page.currentPage, page.pageSize, params).then(res => { - callback({ - total: res.data.total, - data: res.data.data - }) - }) - } - }, + dicUrl: '/api/uiManagerController/getUILayoutDatasByPage?page=1&limit=-1&conditionMap[selectBtmType]={{key}}', }, { label: '鏌ヨ绫诲瀷', prop: 'searchType', display: false, + value: '1', type: 'radio', + labelWidth: 115, span: 24, dicData: [ { @@ -639,112 +772,59 @@ { label: '鏌ヨ瀵硅薄绫诲瀷', prop: 'searchObjType', - type: 'table', + type: 'select', display: false, - labelWidth: 100, + labelWidth: 115, props: { label: 'qtName', - value: 'qtName' + value: 'qtName', + desc: 'btmName' }, - children: { - border: true, - column: [{ - label: '鍚嶇О', - search: true, - searchSpan: 24, - prop: 'qtName' - }, { - label: '绫诲瀷', - prop: 'btmName' - }], - }, - onLoad: ({page, value, data}, callback) => { - if (page) { - const params = { - "conditionMap[selectBtmType]": this.form.showType, - "conditionMap[filterInputValue]": data ? data.qtName : '', - }; - getQTInfoDatasByPage(page.currentPage, page.pageSize, params).then(res => { - callback({ - total: res.data.total, - data: res.data.data - }) - }) - } - }, + dicUrl: '/api/uiManagerController/getLinkDatasByPage?page=1&limit=-1&conditionMap[selectBtmType]=',// cs绔湁闂 鏆傛椂涓嶅睍绀哄唴瀹� }, { label: '鏌ヨ妯℃澘', - prop: 'showTypes', - type: 'table', + prop: 'queryTemplateName', + labelWidth: 115, + type: 'select', display: false, - props: { - label: 'qtName', - value: 'qtName' - }, - children: { - border: true, - column: [{ - label: '鍚嶇О', - search: true, - searchSpan: 24, - prop: 'qtName' - }, { - label: '绫诲瀷', - prop: 'btmName' - }], - }, - onLoad: ({page, value, data}, callback) => { - if (page) { - const params = { - "conditionMap[selectBtmType]": this.form.showType, - "conditionMap[filterInputValue]": data ? data.qtName : '', - }; - getQTInfoDatasByPage(page.currentPage, page.pageSize, params).then(res => { - callback({ - total: res.data.total, - data: res.data.data - }) - }) - } - }, + formslot: true, }, { label: '鎺у埗璺緞', - prop: 'kzlj', + prop: 'controlPath', + labelWidth: 115, display: false, type: 'textarea', + span: 24, rows: 3 }, { - label: '鏍硅妭鐐规樉绀鸿〃杈惧紡', - prop: 'genjiedian', + label: '鏍戠粨鏋勫睍寮�鍒�', + prop: 'expandCols', + labelWidth: 115, display: false, - labelWidth: 135, - span: 24 - }, - { - label: '鏍戣妭鐐规樉绀鸿〃杈惧紡', - prop: 'shujiedian', - display: false, - labelWidth: 135, - span: 24 + span: 12 }, { label: '鍙傜収鏍戣缃�', - prop: 'canzhaoshu', + prop: 'showLinkAbs', + labelWidth: 115, display: false, }, { label: '鍒嗛殧绗�', - prop: 'fgf', + prop: 'separator', + labelWidth: 115, display: false, }, { label: '灞曞紑鏂瑰紡', - prop: 'zkfs', + prop: 'expandMode', display: false, type: 'radio', + labelWidth: 115, + value: '1', dicData: [ { label: '閫愮骇灞曞紑', @@ -752,9 +832,37 @@ }, { label: '鍏ㄩ儴灞曞紑', - value: '2' + value: '0' } ] + }, + { + label: 'B/S鑷畾涔夋煡璇�', + prop: 'bsDataModel', + display: false, + labelWidth: 115, + span: 12 + }, + { + label: 'C/S鑷畾涔夋煡璇�', + prop: 'csDataModel', + display: false, + labelWidth: 115, + span: 12 + }, + { + label: '鏍硅妭鐐规樉绀鸿〃杈惧紡', + prop: 'rootContent', + display: false, + labelWidth: 135, + span: 12 + }, + { + label: '鏍戣妭鐐规樉绀鸿〃杈惧紡', + prop: 'showAbs', + display: false, + labelWidth: 135, + span: 12 }, ] }, @@ -777,13 +885,26 @@ lastIndex: null, selectList: [], formDataRow: {}, + defaultForm: {}, + } + }, + computed: { + ...mapGetters(["permission"]), + permissionChildrenList() { + return { + UiPageLayoutAddBtn: this.vaildData(this.permission[this.$route.query.id].CLSRIGHT, false), + UiPageLayoutEditBtn: this.vaildData(this.permission[this.$route.query.id].DATARIGHT, false), + UiPageLayoutDelBtn: this.vaildData(this.permission[this.$route.query.id].ATTRRIGHT, false), + UiPageLayoutCloneBtn: this.vaildData(this.permission[this.$route.query.id].CLONE, false), + UiPageLayoutDesignBtn: this.vaildData(this.permission[this.$route.query.id].UPLOAD, false), + } } }, watch: { sourceData: { handler(val) { if (val && val.plOId) { - this.getTableList() + this.getTableList(); } else { this.data = []; } @@ -792,7 +913,6 @@ deep: true } }, - computed: {}, methods: { //鑾峰彇鍒楄〃鏁版嵁 getTableList() { @@ -806,6 +926,7 @@ this.tableLoading = false; }) }, + // 鏍规嵁涓嶅悓鍊煎尯鍒嗙被鍨� templateTypeValueHandler(val) { const componentMap = { @@ -835,19 +956,115 @@ this.lastIndex = newIndex; }, () => { - this.selectList = []; + this.selectList = [row]; } ); }, // 澧炲姞 addClickHandler() { - console.log(this.sourceData); if (!this.sourceData || !this.sourceData.plOId) { this.$message.error('璇峰湪涓婃柟閫夋嫨涓�鏉℃暟鎹悗杩涜娣诲姞'); return; } this.$refs.crud.rowAdd(); + }, + + // 澧炲姞鍏抽棴瀵硅瘽妗� 娓呯┖event鏁扮粍 + beforeClose(done) { + this.eventData = []; + this.showTypeChangeFlag = false; + this.linkTypeChangeFlag = false; + done(); + }, + + // 淇敼 + editBtnClick(row) { + this.eventData = []; + if (row.eventKey && row.eventValue) { + let keys = row.eventKey.split(','); + let values = row.eventValue.split(','); + + this.eventData = keys.map((key, index) => { + return { + index: this.eventData.length, + eventKey: key.trim(), + eventValue: values[index], + $cellEdit: true + }; + }); + } + this.searchTargerChangeFlag = false; + this.$refs.crud.rowEdit(row); + }, + + // 鍒犻櫎 + rowDeleteHandler(row) { + this.$confirm('鎮ㄧ‘瀹氳鍒犻櫎鎵�閫夋嫨鐨勬暟鎹悧锛�', '鎻愮ず', { + confirmButtonText: '纭畾', + cancelButtonText: '鍙栨秷', + type: 'warning' + }).then(() => { + const params = { + oids: row.id + } + delPageDefination(params).then(res => { + if (res.data.code === 200) { + this.$message.success('鍒犻櫎鎴愬姛'); + this.getTableList(); + } + }) + }).catch(() => { + this.$message({ + type: 'info', + message: '宸插彇娑堝垹闄�' + }); + }); + }, + + // 淇濆瓨 + rowSaveHandler(row, done, loading) { + if (row.templateType === '6') { + row.SubUIObjType = row.showType; + row.showType = ""; + } + if (row.templateType === '5' && this.form.linkType && !this.form.showLinkAbs) { + this.$message.error('璇烽�夋嫨鍙傜収鏍戣缃�'); + return loading(); + } + const params = { + ...row, + tabPageOId: this.sourceData.plOId + } + addPageDefination(params).then(res => { + if (res.data.code === 200) { + this.$message.success(res.data.obj); + this.getTableList(); + done(); + } + }).catch(err => { + loading(); + }) + }, + + rowUpdateHandler(row, index, done, loading) { + if (row.templateType === '6') { + row.SubUIObjType = row.showType; + row.showType = ""; + } + const params = { + ...row, + tabPageOId: this.sourceData.plOId + } + updatePageDefination(params).then(res => { + if (res.data.code === 200) { + this.$message.success(res.data.obj); + this.getTableList(); + done(); + } + }).catch(err => { + loading(); + }) }, // 瀵硅瘽妗嗚〃鏍艰鐐瑰嚮 @@ -857,24 +1074,6 @@ // 瀵硅瘽妗嗚〃鏍兼坊鍔� formDataAddClickHandler() { - // if (!this.form.eventKey) { - // this.$message.error('璇烽�夋嫨EventKey'); - // return; - // } - // - // if (!this.form.eventValue) { - // this.$message.error('璇疯緭鍏ventValue'); - // return; - // } - // - // if (this.eventData.length >= 1) { - // const eventValueStatus = this.eventData.some(item => item.eventValue === this.form.eventValue); - // - // if (eventValueStatus) { - // this.$message.error('宸插瓨鍦ㄧ浉鍚岀殑 EventValue锛屼笉鑳介噸澶嶆坊鍔�'); - // return; - // } - // } const obj = { index: this.eventData.length, eventKey: this.form.eventKey || 'SelectionEvent', @@ -901,7 +1100,7 @@ // 妯℃澘绫诲瀷涓鸿〃鏍� templateTypeTable(val) { if (!val) return; - this.updateDisplay(val, ['showType', 'showTypea', 'showTypes']); + this.updateDisplay(val, ['showType', 'templateId', 'queryTemplateName', 'bsDataModel', 'csDataModel']); }, // 妯℃澘绫诲瀷涓鸿嚜瀹氫箟妯℃澘 @@ -909,19 +1108,19 @@ if (!val) return; const searchTarger = this.option.column.find(item => item.prop === 'searchTarger'); // 鑾峰彇鎼滅储绫诲瀷閰嶇疆椤� searchTarger.display = false; // 涓嶅睍绀烘悳绱㈢被鍨� - this.updateDisplay(val, ['kzlj']); + this.updateDisplay(val, ['controlPath']); }, // 妯℃澘绫诲瀷涓烘爲琛� templateTypeTreeTable(val) { if (!val) return; - this.updateDisplay(val, ['showType', 'showTypea', 'showTypes', 'zkl', 'zkfs']); + this.updateDisplay(val, ['showType', 'templateId', 'queryTemplateName', 'expandCols', 'expandMode', 'bsDataModel', 'csDataModel']); }, // 妯℃澘绫诲瀷涓鸿〃鍗� templateTypeForm(val) { if (!val) return; - this.updateDisplay(val, ['showType', 'showTypea', 'showTypes']); + this.updateDisplay(val, ['showType', 'templateId', 'queryTemplateName', 'bsDataModel', 'csDataModel']); }, // 妯℃澘绫诲瀷涓烘爲 @@ -929,7 +1128,7 @@ if (!val) return; const searchTarger = this.option.column.find(item => item.prop === 'searchTarger'); // 鑾峰彇鎼滅储绫诲瀷閰嶇疆椤� searchTarger.display = false; // 涓嶅睍绀烘悳绱㈢被鍨� - this.updateDisplay(val, ['showType', 'showTypes', 'genjiedian', 'shujiedian', 'canzhaoshu', 'fgf', 'zkfs', 'linkType']); + this.updateDisplay(val, ['showType', 'queryTemplateName', 'rootContent', 'showAbs', 'showLinkAbs', 'separator', 'expandMode', 'linkType', 'bsDataModel', 'csDataModel']); }, // 妯℃澘绫诲瀷涓篣I瀹氫箟 @@ -937,7 +1136,7 @@ if (!val) return; const searchTarger = this.option.column.find(item => item.prop === 'searchTarger'); // 鑾峰彇鎼滅储绫诲瀷閰嶇疆椤� searchTarger.display = false; // 涓嶅睍绀烘悳绱㈢被鍨� - this.updateDisplay(val, ['showType', 'UI', 'searchType', 'searchObjType', 'showTypes']); + this.updateDisplay(val, ['showType', 'SubUILayout', 'searchType', 'searchObjType', 'queryTemplateName', 'bsDataModel', 'csDataModel']); }, // 鏌ユ壘鏁扮粍涓璞$储寮� @@ -965,38 +1164,35 @@ } }, - // 鎸夐挳璁捐鍏抽棴瀵硅瘽妗� - dialogClose() { - - }, - // 鎸夐挳璁捐 - btnDesignClickHandler() { - if (this.selectList.length != 1) { + btnDesignClickHandler(row) { + /*if (this.selectList.length != 1) { this.$message.error('璇烽�夋嫨涓�鏉℃暟鎹�'); return; - } + }*/ this.btnDesignVisible = true; - this.getTabBtnTree(); + this.formBtnOid = row.id; + this.getTabBtnTree(row); }, // 宸︿晶鏍戣姹� - getTabBtnTree() { + getTabBtnTree(row) { const params = { - pageDefinationOid: this.selectList[0].id + pageDefinationOid: row && row.id ? row.id : this.selectList[0].id } this.treeLoading = true; getTabButtons(params).then(res => { if (res.data.code === 200) { const data = res.data.data; this.treeData = [{ - label: this.selectList[0].name, + label: row && row.id ? row.name : this.selectList[0].name, oId: 'parentNode', + disabled: true, children: data }]; this.treeLoading = false; } else { - this.$message.error('璇锋鏌ユ帶鍒跺彴閿欒'); + this.$message.error(res.data.msg); } }) }, @@ -1004,12 +1200,14 @@ // 鎸夐挳璁捐琛岀偣鍑� nodeTreeClick(row) { this.nodeTreeRow = row; + this.defaultForm = {...row}; this.basicForm = {...row}; this.paramsData = row.buttonParams ? Object.entries(row.buttonParams).map(([key, value]) => ({ name: key, value: value })) : []; this.disabledBtn = true; + this.$refs.form.clearValidate(); }, // 鎸夐挳璁捐鍙傛暟淇℃伅鍒犻櫎 @@ -1017,9 +1215,20 @@ this.paramsData.splice(row.$index, 1) }, + // 鎸夐挳璁捐淇℃伅鍙傛暟淇℃伅淇敼 + paramsRowEditHandler(row) { + this.$refs.paramsCrud.rowEdit(row, row.$index); + }, + // 鎸夐挳璁捐鍙傛暟淇℃伅娣诲姞鎸夐挳 paramsRowAddClickHandler() { this.$refs.paramsCrud.rowAdd(); + }, + + // 鎸夐挳璁捐鍙傛暟淇℃伅淇敼淇濆瓨 + paramsRowUpdate(row, index, done, loading) { + this.paramsData.splice(index, 1, row); + done(); }, // 鎸夐挳璁捐鍙傛暟淇℃伅淇濆瓨 @@ -1071,42 +1280,55 @@ this.disabledBtn = true; if (this.saveType === 'add') { this.$refs.Tree.setCurrentKey(null); + this.$refs.form.resetFields(); + } else { + this.basicForm = {...this.defaultForm}; } }, // 鎸夐挳璁捐淇濆瓨 saveClickBtnHandler() { - this.dialogLoading = true; - const saveFunction = this.saveType === 'add' ? addTapButton : updateTapButton; - const bottomParams = {}; - if (this.paramsData.length > 0) { - this.paramsData.forEach(item => { - bottomParams[item.name] = item.value - }) + if (this.basicForm.show == '0' && this.basicForm.displayMode == 'image' && this.basicForm.iconPath == '') { + this.$message.error('璇烽�夋嫨鍥炬爣'); + return; } - ; + this.$refs.form.validate((valid, done) => { + if (valid) { + this.dialogLoading = true; + const saveFunction = this.saveType === 'add' ? addTapButton : updateTapButton; + const bottomParams = {}; + if (this.paramsData.length > 0) { + this.paramsData.forEach(item => { + bottomParams[item.name] = item.value + }) + } + const params = this.saveType === 'add' ? { + ...this.basicForm, + parentId: this.nodeTreeRow.oId === 'parentNode' ? '' : this.nodeTreeRow.parentId, + buttonParams: bottomParams, + tableOId: this.selectList[0].id + } : { + ...this.basicForm, + buttonParams: bottomParams + } - const params = this.saveType === 'add' ? { - ...this.basicForm, - parentId: this.nodeTreeRow.oId === 'parentNode' ? '' : this.nodeTreeRow.parentId, - buttonParams: bottomParams - } : { - ...this.basicForm, - buttonParams: bottomParams - } - - saveFunction(params).then(res => { - if (res.data.code === 200) { - this.$message.success(res.data.obj); - this.disabledBtn = true; - this.getTabBtnTree(); - this.basicForm = {}; - this.paramsData = []; - this.dialogLoading = false; + saveFunction(params).then(res => { + if (res.data.code === 200) { + this.$message.success(res.data.obj); + this.disabledBtn = true; + this.getTabBtnTree(); + this.paramsData = []; + this.dialogLoading = false; + this.$refs.form.resetFields(); + } + }).catch(err => { + this.dialogLoading = false; + }) + } else { + return false; } - }).catch(err => { - this.dialogLoading = false; - }) + done(); + }); }, // 鎸夐挳璁捐鍒犻櫎 @@ -1126,7 +1348,14 @@ cancelButtonText: '鍙栨秷', type: 'warning' }).then(() => { - + deleteTabButton(this.nodeTreeRow).then(res => { + if (res.data.code === 200) { + this.$message.success('鍒犻櫎鎴愬姛'); + this.getTabBtnTree(); + this.basicForm = {}; + this.paramsData = []; + } + }) }).catch(() => { this.$message({ type: 'info', @@ -1135,17 +1364,88 @@ }); }, + // 澶嶅埗鍒板叾浠栫粍浠� + cloneClickBtnHandler() { + if (func.isEmptyObject(this.nodeTreeRow)) { + this.$message.error('璇烽�夋嫨鑺傜偣杩涜澶嶅埗'); + return; + } + if (this.nodeTreeRow.oId === "parentNode") { + this.$message.error('椤跺眰鑺傜偣涓嶅厑璁稿鍒�'); + return; + } + this.sourceBtnOid = this.nodeTreeRow.oId; + this.$refs.cloneBtnDialog.openDialog(this.nodeTreeRow); + }, + // 閫夋嫨action actionFoucus() { - this.$refs.actionDialog.btnActionVisible = true; + this.$refs.actionDialog.openDialog(); }, // 淇濆瓨action actionSaveHandler(val) { this.$set(this.basicForm, 'actionName', val.plName); this.$set(this.basicForm, 'actionOId', val.plOId); + this.$set(this.basicForm, 'iconPath', val.plImage);//鍥炬爣 + this.$refs.form.clearValidate('Action') + }, + // action閫夋嫨寮圭獥鐩存帴鍏抽棴 + actionCancelHandler() { + if (this.basicForm.actionOId) { + this.$refs.form.clearValidate('Action') + } + }, + + //娓呴櫎action + clearActionValue() { + this.$set(this.basicForm, 'actionName', ''); + this.$set(this.basicForm, 'actionOId', ''); + }, + // 鎵撳紑鍏嬮殕瀵硅瘽妗� + rowCloneHandler(row) { + this.fromOid = this.sourceData.plOId; + this.sourceOId = row.id; + this.$refs.cloneDialog.openDialog(row); + }, + + // 璋冩暣涓轰笅绾ф寜閽� + changeBottomBtnHandler() { + if (func.isEmptyObject(this.nodeTreeRow)) { + this.$message.error('璇烽�夋嫨鑺傜偣杩涜淇敼'); + return; + } + + if (this.nodeTreeRow.oId === "parentNode") { + this.$message.error('椤跺眰鑺傜偣涓嶅厑璁歌皟鏁�'); + return; + } + joinBtn(this.nodeTreeRow).then(res => { + if (res.data.code === 200) { + this.$message.success(res.data.obj); + this.getTabBtnTree(); + } + }) + }, + + // 璋冩暣涓轰笂绾ф寜閽� + changeTopBtnHandler() { + if (func.isEmptyObject(this.nodeTreeRow)) { + this.$message.error('璇烽�夋嫨鑺傜偣杩涜淇敼'); + return; + } + if (this.nodeTreeRow.oId === "parentNode") { + this.$message.error('椤跺眰鑺傜偣涓嶅厑璁歌皟鏁�'); + return; + } + exitBtn(this.nodeTreeRow).then(res => { + if (res.data.code === 200) { + this.$message.success(res.data.obj); + this.getTabBtnTree(); + } + }) } - } + }, } </script> -- Gitblit v1.9.3