From aa869225a5f2054cb0253d8f037863aaec866c6e Mon Sep 17 00:00:00 2001 From: wangting <675591594@qq.com> Date: 星期五, 27 九月 2024 09:51:36 +0800 Subject: [PATCH] UI定义页面 --- Source/plt-web/plt-web-ui/public/index.html | 3 Source/plt-web/plt-web-ui/src/views/modelingMenu/modeling/attributePool/option.js | 2 Source/plt-web/plt-web-ui/src/views/modelingMenu/ui/formDefine/index.vue | 13 Source/plt-web/plt-web-ui/src/views/modelingMenu/ui/uiDefine/index.vue | 622 +++++++++++++++++++++++++++ Source/plt-web/plt-web-ui/src/views/modelingMenu/modeling/linkType/index.vue | 36 - Source/plt-web/plt-web-ui/src/components/PLT-basic-component/upload-file.vue | 14 Source/plt-web/plt-web-ui/src/views/modelingMenu/queryTemplate/queryDefine/index.vue | 2 Source/plt-web/plt-web-ui/src/App.vue | 2 Source/plt-web/plt-web-ui/src/router/page/index.js | 25 Source/plt-web/plt-web-ui/src/util/basic-option.js | 1 Source/plt-web/plt-web-ui/src/api/UI/uiDefine.js | 105 ++++ Source/plt-web/plt-web-ui/src/views/modelingMenu/modeling/attributePool/index.vue | 6 Source/plt-web/plt-web-ui/src/views/modelingMenu/queryTemplate/linkTypeQuery/formDialog.vue | 2 Source/plt-web/plt-web-ui/src/views/modelingMenu/ui/uiDefine/plShow.vue | 385 +++++++++++++++++ Source/plt-web/plt-web-ui/src/views/modelingMenu/modeling/businessType/index.vue | 61 -- Source/plt-web/plt-web-ui/src/views/modelingMenu/modeling/statusPool/index.vue | 2 16 files changed, 1,167 insertions(+), 114 deletions(-) diff --git a/Source/plt-web/plt-web-ui/public/index.html b/Source/plt-web/plt-web-ui/public/index.html index e72aba5..ebee444 100644 --- a/Source/plt-web/plt-web-ui/public/index.html +++ b/Source/plt-web/plt-web-ui/public/index.html @@ -97,8 +97,7 @@ </div> </div> <div class="avue-home__footer"> - <a href="https://bladex.vip" target="_blank"> - https://bladex.vip </a> + </div> </div> </div> diff --git a/Source/plt-web/plt-web-ui/src/App.vue b/Source/plt-web/plt-web-ui/src/App.vue index a3f276c..009bef0 100644 --- a/Source/plt-web/plt-web-ui/src/App.vue +++ b/Source/plt-web/plt-web-ui/src/App.vue @@ -113,7 +113,7 @@ margin-bottom: 15px; } .el-form-item--mini.el-form-item, .el-form-item--small.el-form-item{ - margin-bottom: 10px; + margin-bottom: 15px; } .tree-buttons .el-button{ diff --git a/Source/plt-web/plt-web-ui/src/api/UI/uiDefine.js b/Source/plt-web/plt-web-ui/src/api/UI/uiDefine.js new file mode 100644 index 0000000..b8c9663 --- /dev/null +++ b/Source/plt-web/plt-web-ui/src/api/UI/uiDefine.js @@ -0,0 +1,105 @@ +import request from '@/router/axios'; + +// 涓氬姟绫诲瀷鏍戞煡璇� +export function getBizTree(params) { + return request({ + url: "/api/uiManagerController/getBizTree", + method: "get", + params + }); +} +// 鍒楄〃鏌ヨ +export function gridUIContextData(page, limit, params) { + return request({ + url: "/api/uiManagerController/gridUIContextData", + method: "get", + params: { + page, + limit, + ...params + } + }); +} +export const saveUIContextData = (row) => { + return request({ + url: '/api/uiManagerController/saveUIContextData', + method: 'post', + data: row + }) +} + +export const updateUIContextData = (row) => { + return request({ + url: '/api/uiManagerController/updateUIContextData', + method: 'put', + data: row + }) +} +// 閫氳繃oid鍒犻櫎 +export function delUIContextData(params) { + return request({ + url: "/api/uiManagerController/delUIContextData", + method: "delete", + params + }) +} +//鍏嬮殕 +export const cloneUIContextData = (params) => { + return request({ + url: '/api/uiManagerController/cloneUIContextData', + method: 'post', + data: params + }) +} +// 瀵煎嚭閫夋嫨鍒楄〃 +//鍙傛暟 expDatas:閫夋嫨oid +export function getExpContextTree(params) { + return request({ + url: "/api/uiManagerController/getExpContextTree", + method: "get", + params: params + }); +} +// 瀵煎嚭 +export function expUIContextData (params) { + return request({ + url: '/api/uiManagerController/expUIContextData', + method: 'post', + responseType: 'blob', + data:{ + params + } + }) +} + +//涓婁笅鏂囧悇鍖哄煙鍒楄〃鏁版嵁 +export function getTabByContextIdAndType(params){ + return request({ + url: "/api/uiManagerController/getTabByContextIdAndType", + method: "get", + params + }); +} +export const addTabData = (row) => { + return request({ + url: '/api/uiManagerController/addTabData', + method: 'post', + data: row + }) +} + +export const updateTabData = (row) => { + return request({ + url: '/api/uiManagerController/updateTabData', + method: 'put', + data: row + }) +} +// 閫氳繃oid鍒犻櫎 +export function deleteTabData(params) { + return request({ + url: "/api/uiManagerController/deleteTabData", + method: "delete", + params + }) +} diff --git a/Source/plt-web/plt-web-ui/src/components/PLT-basic-component/upload-file.vue b/Source/plt-web/plt-web-ui/src/components/PLT-basic-component/upload-file.vue index 7e23662..f8bf56f 100644 --- a/Source/plt-web/plt-web-ui/src/components/PLT-basic-component/upload-file.vue +++ b/Source/plt-web/plt-web-ui/src/components/PLT-basic-component/upload-file.vue @@ -69,8 +69,8 @@ }, // 璇锋眰鍦板潃 鎼哄甫鍙傛暟 fileData: { - type: Array, - default: () => [] + type: Object, + default: () => {} }, // 瀵煎叆鎻愮ず鏂囧瓧 tipList:["瀵煎叆妯℃澘涓爣鏄庣孩鑹插瓧浣撶殑涓哄繀杈撻」","閮ㄩ棬鍒椾笂涓嬬骇鍏崇郴蹇呴』鎸夌収鍙嶆枩鏉犻殧寮�(/)"] tipList:{ @@ -124,13 +124,14 @@ return true; }, // 鏂囦欢涓婁紶鎴愬姛 - onSuccess(resbonse) { - if (resbonse.code === 200) { + onSuccess(response) { + if (response.code === 200) { this.$message.success("瀵煎叆鎴愬姛锛�"); this.visible = false; - this.$emit('updata',resbonse); + this.$emit('updata',response); } else { - this.$message.error(resbonse.msg); + this.$emit('upfaildata',response); + this.$message.error(response.msg); } }, //鏂囦欢涓婁紶澶辫触 @@ -140,7 +141,6 @@ }, //鏂囦欢鐘舵�佹敼鍙� uploadChange(file) { - console.log( this.pageLoading); if (file.status === "success" || file.status === "error") { this.pageLoading.close(); } diff --git a/Source/plt-web/plt-web-ui/src/router/page/index.js b/Source/plt-web/plt-web-ui/src/router/page/index.js index 8a0cac6..b384b71 100644 --- a/Source/plt-web/plt-web-ui/src/router/page/index.js +++ b/Source/plt-web/plt-web-ui/src/router/page/index.js @@ -91,11 +91,11 @@ }, { path: '/UIContentViewer', - name: '鍔ㄦ�佽〃鏍奸〉闈�', + name: 'UI涓婁笅鏂囧睍绀�', component: Layout, children: [ { - path: '', // 绌鸿矾寰勮〃绀鸿闂� '/dynamic-form' 鏃跺姞杞� Layout 缁勪欢 + path: '', // 绌鸿矾寰勮〃绀鸿闂� '/UIContentViewer' 鏃跺姞杞� Layout 缁勪欢 component: () => import('@/views/base/UIContentViewer'), props: true } @@ -103,14 +103,31 @@ }, { path: '/referIndex', - name: '鍔ㄦ�佽〃鏍奸〉闈�', + name: '鍙傜収绀轰緥', component: Layout, children: [ { - path: '', // 绌鸿矾寰勮〃绀鸿闂� '/dynamic-form' 鏃跺姞杞� Layout 缁勪欢 + path: '', // 绌鸿矾寰勮〃绀鸿闂� '/referIndex' 鏃跺姞杞� Layout 缁勪欢 component: () => import('@/views/test/referDemo/index'), props: true } ] }, + { + path: '/UIDefineShow/:uiDefineOid', + name: 'UI瀹氫箟璇︽儏', + component: Layout, + children: [ + { + path: '', // 绌鸿矾寰勮〃绀鸿闂� '/referIndex' 鏃跺姞杞� Layout 缁勪欢 + component: () => import('@/views/modelingMenu/ui/uiDefine/plShow'), + props: true + } + ], + meta:{ + keepAlive: true, + isTab: true, + isAuth: true + } + } ] diff --git a/Source/plt-web/plt-web-ui/src/util/basic-option.js b/Source/plt-web/plt-web-ui/src/util/basic-option.js index e34e741..196904c 100644 --- a/Source/plt-web/plt-web-ui/src/util/basic-option.js +++ b/Source/plt-web/plt-web-ui/src/util/basic-option.js @@ -10,6 +10,7 @@ headerAlign: 'center', align: 'center', emptyText: '鏆傛棤鍐呭', + tip:false, // selection 鏄惁鏈夐�夋嫨妗� // indexFixed:true/left/right, 鍥哄畾鍒� // menu:false, 鏄惁鏈夋搷浣滄爮 diff --git a/Source/plt-web/plt-web-ui/src/views/modelingMenu/modeling/attributePool/index.vue b/Source/plt-web/plt-web-ui/src/views/modelingMenu/modeling/attributePool/index.vue index 0cd245d..e2a9494 100644 --- a/Source/plt-web/plt-web-ui/src/views/modelingMenu/modeling/attributePool/index.vue +++ b/Source/plt-web/plt-web-ui/src/views/modelingMenu/modeling/attributePool/index.vue @@ -21,8 +21,7 @@ <el-button icon="el-icon-plus" plain size="small" type="primary" @click="rowSaveHandlerClick">鍒涘缓</el-button> <el-button icon="el-icon-delete" plain size="small" type="danger" @click="allDelHandler">鍒犻櫎</el-button> <el-button icon="el-icon-view" plain size="small" type="primary" @click="chekView">鏌ョ湅浣跨敤鑼冨洿</el-button> - <el-button icon="el-icon-download" plain size="small" type="primary" @click="downloadTemplateHandler">涓嬭浇瀵煎叆妯℃澘 - </el-button> + <el-button icon="el-icon-download" plain size="small" type="primary" @click="downloadTemplateHandler">涓嬭浇瀵煎叆妯℃澘</el-button> <el-button icon="el-icon-upload2" plain size="small" type="primary" @click="upLoadHandler">瀵煎叆</el-button> <el-button icon="el-icon-download" plain size="small" type="primary" @click="downLoadHandler">瀵煎嚭</el-button> </template> @@ -206,9 +205,7 @@ <el-row> <div class="addDialog"> <div> - <h3>灞炴�ч」</h3> - <el-col :span="12"> <el-form-item label="鍚嶇О锛�" prop="id"> <el-input v-model="form.id"></el-input> @@ -576,6 +573,7 @@ addBtn: false, editBtn: false, delBtn: false, + menuWidth:160, column }, tableLoading: false, diff --git a/Source/plt-web/plt-web-ui/src/views/modelingMenu/modeling/attributePool/option.js b/Source/plt-web/plt-web-ui/src/views/modelingMenu/modeling/attributePool/option.js index 695bd5a..1440b66 100644 --- a/Source/plt-web/plt-web-ui/src/views/modelingMenu/modeling/attributePool/option.js +++ b/Source/plt-web/plt-web-ui/src/views/modelingMenu/modeling/attributePool/option.js @@ -14,11 +14,13 @@ label: '绫诲瀷', prop: 'attributeDataTypeText', sortable: true, + width:100 }, { label: '榛樿鍊�', prop: 'defaultValue', sortable: true, + width: 120 }, { label: '鎻忚堪', diff --git a/Source/plt-web/plt-web-ui/src/views/modelingMenu/modeling/businessType/index.vue b/Source/plt-web/plt-web-ui/src/views/modelingMenu/modeling/businessType/index.vue index 4a4fc6e..49029ed 100644 --- a/Source/plt-web/plt-web-ui/src/views/modelingMenu/modeling/businessType/index.vue +++ b/Source/plt-web/plt-web-ui/src/views/modelingMenu/modeling/businessType/index.vue @@ -2,38 +2,10 @@ <el-container v-loading="createViewLoading"> <el-aside> <basic-container> - <div ref="TreeBox" style="height: calc(100vh - 144px);!important;"> - <div class="headerCon"> - <el-button icon="el-icon-plus" plain size="small" type="primary" @click="addClickHandler">鍒涘缓 - </el-button> - <el-button icon="el-icon-edit" plain size="small" type="primary" @click="editClickHandler">淇敼 - </el-button> - <el-button icon="el-icon-delete" plain size="small" type="danger" @click="deleteClickHandler">鍒犻櫎 - </el-button> - <el-button icon="el-icon-download" plain size="small" type="primary" @click="exportClickHandler">瀵煎嚭 - </el-button> - <el-button icon="el-icon-upload2" plain size="small" type="primary" @click="upLoadClickHandler">瀵煎叆 - </el-button> - <el-button class="miniBtn" icon="el-icon-circle-plus-outline" plain size="small" - type="primary" @click="createViewClickHandler">鍒涘缓瑙嗗浘 - </el-button> - <el-button class="miniBtn" icon="el-icon-circle-plus-outline" plain size="small" - type="primary" @click="indexClickHandler">鍒涘缓绱㈠紩 - </el-button> - <el-button icon="el-icon-menu" plain size="small" style="width: 82px;text-align: center;padding-left: 1px" - type="primary" @click="checkClickHandler">涓�鑷存�ф鏌� - </el-button> - <el-button class="miniBtn" icon="el-icon-delete" plain size="small" - type="danger" @click="checkClickHandler">鍒犻櫎鏁版嵁 - </el-button> - <el-button class="smallBtn" plain size="small" - type="danger" @click="checkClickHandler">鍒犻櫎鍏ㄩ儴绫诲瀷 - </el-button> - <el-button class="smallBtn" plain size="small" type="primary" @click="checkViewClickHandler">鏌ョ湅浣跨敤鑼冨洿 - </el-button> - </div> + <div ref="TreeBox" style="height: calc(100vh - 154px);!important;"> + <!-- 宸︿晶鏍� --> - <div style="height: calc(100vh - 330px);"> + <div style="height: calc(100vh - 190px);"> <avue-tree ref="tree" v-loading="treeLoading" :data="treeData" :option="treeOption" @node-click="nodeClick"> <span slot-scope="{ node, data }" class="el-tree-node__label"> <span style="font-size: 15px"> @@ -48,7 +20,20 @@ </el-aside> <el-main> <basic-container> - <div style="display: flex;justify-content: center; height: 230px"> + <div> + <el-button icon="el-icon-plus" plain size="small" type="primary" @click="addClickHandler">鍒涘缓</el-button> + <el-button icon="el-icon-edit" plain size="small" type="primary" @click="editClickHandler">淇敼</el-button> + <el-button icon="el-icon-delete" plain size="small" type="danger" @click="deleteClickHandler">鍒犻櫎</el-button> + <el-button icon="el-icon-download" plain size="small" type="primary" @click="exportClickHandler">瀵煎嚭</el-button> + <el-button icon="el-icon-upload2" plain size="small" type="primary" @click="upLoadClickHandler">瀵煎叆</el-button> + <el-button icon="el-icon-circle-plus-outline" plain size="small" type="primary" @click="createViewClickHandler">鍒涘缓瑙嗗浘</el-button> + <el-button icon="el-icon-circle-plus-outline" plain size="small" type="primary" @click="indexClickHandler">鍒涘缓绱㈠紩</el-button> + <el-button icon="el-icon-menu" plain size="small" type="primary" @click="checkClickHandler">涓�鑷存�ф鏌�</el-button> + <el-button icon="el-icon-delete" plain size="small" type="danger" @click="checkClickHandler">鍒犻櫎鏁版嵁</el-button> + <el-button plain size="small" type="danger" @click="checkClickHandler">鍒犻櫎鍏ㄩ儴绫诲瀷</el-button> + <el-button plain size="small" type="primary" @click="checkViewClickHandler">鏌ョ湅浣跨敤鑼冨洿</el-button> + </div> + <div style="display: flex;justify-content: center; height: 230px;margin-top: 10px;"> <div class="descBox" style="max-height: 100px"> <el-descriptions :column="1" border class="margin-top" size="medium" title="灞炴�т俊鎭�"> <el-descriptions-item :contentStyle="descriptionOption.contentStyle" @@ -1703,18 +1688,6 @@ .headerCon > .el-button:nth-child(10) { margin-left: 0; -} - -.miniBtn { - width: 82px; - text-align: center; - padding-left: 7px; -} - -.smallBtn { - width: 82px; - text-align: center; - padding-left: 4.5px; } .descBox { diff --git a/Source/plt-web/plt-web-ui/src/views/modelingMenu/modeling/linkType/index.vue b/Source/plt-web/plt-web-ui/src/views/modelingMenu/modeling/linkType/index.vue index 48bc0df..66319a6 100644 --- a/Source/plt-web/plt-web-ui/src/views/modelingMenu/modeling/linkType/index.vue +++ b/Source/plt-web/plt-web-ui/src/views/modelingMenu/modeling/linkType/index.vue @@ -2,30 +2,9 @@ <el-container v-loading="createViewLoading"> <el-aside> <basic-container> - <div ref="TreeBox" style="height: calc(100vh - 144px);!important;"> - <div class="headerCon"> - <el-button icon="el-icon-plus" plain size="small" type="primary" @click="addClickHandler">鍒涘缓 - </el-button> - <el-button icon="el-icon-edit" plain size="small" type="primary" @click="editClickHandler">淇敼 - </el-button> - <el-button icon="el-icon-delete" plain size="small" type="danger" @click="deleteClickHandler">鍒犻櫎 - </el-button> - <el-button icon="el-icon-view" plain size="small" type="primary">鏌ョ湅 - </el-button> - <el-button icon="el-icon-download" plain size="small" type="primary" @click="exportClickHandler">瀵煎嚭 - </el-button> - <el-button icon="el-icon-upload2" plain size="small" type="primary" @click="upLoadClickHandler">瀵煎叆 - </el-button> - <el-button class="smallBtn" icon="el-icon-circle-plus-outline" plain size="small" - style="padding-left: 7px !important;" - type="primary" @click="createViewClickHandler">鍒涘缓瑙嗗浘 - </el-button> - <el-button class="smallBtn" icon="el-icon-menu" plain size="small" style="padding-left: 1px" - type="primary" @click="checkClickHandler">涓�鑷存�ф鏌� - </el-button> - </div> + <div ref="TreeBox" style="height: calc(100vh - 154px);!important;"> <!-- 宸︿晶鏍� --> - <div style="height: calc(100vh - 300px);"> + <div style="height: calc(100vh - 190px);"> <avue-tree :data="treeData" :option="treeOption" @node-click="nodeClick"> <span slot-scope="{ node, data }" class="el-tree-node__label"> <span style="font-size: 15px"> @@ -41,7 +20,16 @@ <el-main> <basic-container> - <div style="height: 380px"> + <div> + <el-button icon="el-icon-plus" plain size="small" type="primary" @click="addClickHandler">鍒涘缓</el-button> + <el-button icon="el-icon-edit" plain size="small" type="primary" @click="editClickHandler">淇敼</el-button> + <el-button icon="el-icon-delete" plain size="small" type="danger" @click="deleteClickHandler">鍒犻櫎</el-button> + <el-button icon="el-icon-download" plain size="small" type="primary" @click="exportClickHandler">瀵煎嚭</el-button> + <el-button icon="el-icon-upload2" plain size="small" type="primary" @click="upLoadClickHandler">瀵煎叆</el-button> + <el-button icon="el-icon-circle-plus-outline" plain size="small" type="primary" @click="createViewClickHandler">鍒涘缓瑙嗗浘</el-button> + <el-button icon="el-icon-menu" plain size="small" type="primary" @click="checkClickHandler">涓�鑷存�ф鏌�</el-button> + </div> + <div style="height: 380px;margin-top: 10px"> <el-descriptions :column="2" border class="margin-top" size="medium"> <el-descriptions-item :contentStyle="descriptionOption.contentStyle" :labelStyle="descriptionOption.labelStyle"> diff --git a/Source/plt-web/plt-web-ui/src/views/modelingMenu/modeling/statusPool/index.vue b/Source/plt-web/plt-web-ui/src/views/modelingMenu/modeling/statusPool/index.vue index ec3de1a..e645fcb 100644 --- a/Source/plt-web/plt-web-ui/src/views/modelingMenu/modeling/statusPool/index.vue +++ b/Source/plt-web/plt-web-ui/src/views/modelingMenu/modeling/statusPool/index.vue @@ -32,8 +32,6 @@ <el-button icon="el-icon-delete" plain size="small" type="text" @click="delRowClickHandler(row)">鍒犻櫎 </el-button> </template> - - </avue-crud> <!-- 鏂板 淇敼 --> diff --git a/Source/plt-web/plt-web-ui/src/views/modelingMenu/queryTemplate/linkTypeQuery/formDialog.vue b/Source/plt-web/plt-web-ui/src/views/modelingMenu/queryTemplate/linkTypeQuery/formDialog.vue index 0561cfc..3490a9d 100644 --- a/Source/plt-web/plt-web-ui/src/views/modelingMenu/queryTemplate/linkTypeQuery/formDialog.vue +++ b/Source/plt-web/plt-web-ui/src/views/modelingMenu/queryTemplate/linkTypeQuery/formDialog.vue @@ -528,7 +528,7 @@ //鑾峰彇鏌ヨ妯℃澘瀹氫箟涓嬫媺 getTemp(btmName,linkFlag) { if (btmName) { - queryTemplateListByAttr({btmName: btmName, linkFlag: linkFlag,direction:this.form.direction}).then(res => { + queryTemplateListByAttr({btmName: btmName, linkFlag: linkFlag,direction:linkFlag?null:this.form.direction}).then(res => { const data = res.data.data.map(item => { item.label = item.name + '-' + (item.linkTypeName || item.btmName); item.value = item.name; diff --git a/Source/plt-web/plt-web-ui/src/views/modelingMenu/queryTemplate/queryDefine/index.vue b/Source/plt-web/plt-web-ui/src/views/modelingMenu/queryTemplate/queryDefine/index.vue index 5b8d5cf..1463262 100644 --- a/Source/plt-web/plt-web-ui/src/views/modelingMenu/queryTemplate/queryDefine/index.vue +++ b/Source/plt-web/plt-web-ui/src/views/modelingMenu/queryTemplate/queryDefine/index.vue @@ -251,7 +251,7 @@ this.tableLoading = false; }) }, - selectHandler(selection, row){debugger; + selectHandler(selection, row){ this.dialogSelectionRow=selection }, changeTemp(data) { 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 f3d3a47..78bea66 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 @@ -184,6 +184,8 @@ }); this.treeData = data; this.treeLoading = false; + }).catch(error => { + loading.close(); }); }, @@ -384,12 +386,10 @@ this.$message.error('璇疯嚦灏戦�夋嫨涓�鏉℃暟鎹�'); return; } - console.log(this.selectList); const params = { ids: this.selectList.map(item => item.id).join(',') } deleteByIds(params).then(res => { - console.log(res); if (res.data.code === 200) { this.$message.success('鍒犻櫎鎴愬姛'); this.getRightPortalVIDatas(); @@ -397,7 +397,14 @@ }) }, - + rowDeleteHandler(row){ + deleteByIds({ids:row.id}).then(res => { + if (res.data.code === 200) { + this.$message.success('鍒犻櫎鎴愬姛'); + this.getRightPortalVIDatas(); + } + }) + }, // 澶氶�� selectChangeHandler(row) { this.selectList = row; diff --git a/Source/plt-web/plt-web-ui/src/views/modelingMenu/ui/uiDefine/index.vue b/Source/plt-web/plt-web-ui/src/views/modelingMenu/ui/uiDefine/index.vue index e83166d..c9a1e4b 100644 --- a/Source/plt-web/plt-web-ui/src/views/modelingMenu/ui/uiDefine/index.vue +++ b/Source/plt-web/plt-web-ui/src/views/modelingMenu/ui/uiDefine/index.vue @@ -6,12 +6,12 @@ <!-- 宸︿晶鏍� --> <div style="height: calc(100vh - 190px);"> <avue-tree :data="treeData" :option="treeOption" @node-click="nodeClick"> - <span slot-scope="{ node, data }" class="el-tree-node__label"> - <span style="font-size: 15px"> - <i class="el-icon-s-promotion"></i> - {{ (node || {}).label }} - </span> - </span> + <span slot-scope="{ node, data }" class="el-tree-node__label"> + <span style="font-size: 15px"> + <i class="el-icon-s-promotion"></i> + {{ (node || {}).label }} + </span> + </span> </avue-tree> </div> </div> @@ -20,36 +20,323 @@ <el-main> <basic-container> - + <avue-crud + ref="crud" + :data="data" + :option="option" + :page.sync="page" + :table-loading="tableLoading" + @size-change="sizeChange" + @current-change="currentChange" + @selection-change="selectChangeHandler" + @search-change="handleSearch" + @search-reset="handleReset" + @row-click="rowClickHandler"> + <template slot="menuLeft"> + <el-button icon="el-icon-plus" size="small" type="primary" @click="addHandler">鍒涘缓</el-button> + <el-button icon="el-icon-edit" plain size="small" type="primary" @click="editHandler">淇敼</el-button> + <el-button icon="el-icon-delete" plain size="small" type="danger" @click="delHandler">鍒犻櫎</el-button> + <el-button icon="el-icon-download" plain size="small" type="primary" @click="exportClickHandler">瀵煎嚭</el-button> + <el-button icon="el-icon-upload2" plain size="small" type="primary" @click="upLoadClickHandler">瀵煎叆</el-button> + <el-button icon="el-icon-place" plain size="small" type="primary" @click="">鎺堟潈</el-button> + </template> + <template slot="menu" slot-scope="scope"> + <el-button icon="el-icon-edit" size="small" type="text" @click="rowEditBtnClick(scope.row)">缂栬緫 + </el-button> + <el-button icon="el-icon-delete" size="small" type="text" @click="rowDeleteHandler(scope.row)">鍒犻櫎 + </el-button> + <el-button icon="el-icon-document-copy" size="small" type="text" @click="rowCloneHandler(scope.row)">鍏嬮殕</el-button> + </template> + <template slot="plName" slot-scope="{row}"> + <el-link type="primary" @click="linkClickHandler(row)">{{ row.plName }}</el-link> + </template> + </avue-crud> + <!-- 鍒涘缓缂栬緫鑷畾涔夊璇濇 --> + <el-dialog + v-dialogDrag + v-loading="dialogLoading" + :title="dialogType === 'add' ? ' 鍒涘缓 涓婁笅鏂�' : '缂栬緫 涓婁笅鏂�'" + :visible.sync="dialogVisible" + append-to-body="true" + class="avue-dialog" + :close-on-click-modal="false" + width="500px" + @close="dialogClose" + > + <el-form ref="form" :model="form" :rules="rules" label-width="95px" size="small"> + <el-form-item label="鍚嶇О锛�" prop="plName"> + <el-input v-model="form.plName"></el-input> + </el-form-item> + <el-form-item label="UI涓婁笅鏂囷細" prop="plCode"> + <el-input v-model="form.plCode"></el-input> + </el-form-item> + <el-form-item label="鏄剧ず锛�" prop="plIsShow"> + <el-checkbox-group v-model="form.plIsShow"> + <el-checkbox label="瀵艰埅鍖�"></el-checkbox> + <el-checkbox label="鎺у埗鍖�"></el-checkbox> + <el-checkbox label="鎿嶄綔鍖�"></el-checkbox> + </el-checkbox-group> + </el-form-item> + <el-form-item label="鎻忚堪锛�" prop="plDesc"> + <el-input type="textarea" :rows="5" v-model="form.plDesc"></el-input> + </el-form-item> + </el-form> + <span slot="footer" class="dialog-footer"> + <el-button @click="dialogClose">鍙� 娑�</el-button> + <el-button type="primary" @click="saveHandler">纭� 瀹�</el-button> + </span> + </el-dialog> + <!-- 鍏嬮殕 --> + <el-dialog + key="cloneDialog" + v-dialogDrag + title="鍏嬮殕" + :visible.sync="cloneDialogVisible" + append-to-body="true" + class="avue-dialog" + width="500px" + @close="cloneDialogClose" + > + <avue-form ref="cloneForm" :option="cloneOption" v-model="cloneForm"></avue-form> + <span slot="footer" class="dialog-footer"> + <el-button @click="cloneDialogClose">鍙� 娑�</el-button> + <el-button type="primary" @click="cloneSaveHandler">纭� 瀹�</el-button> + </span> + </el-dialog> + <!-- 瀵煎嚭 --> + <el-dialog + key="cloneDialog" + v-dialogDrag + title="瀵煎嚭" + :visible.sync="expDialogVisible" + append-to-body="true" + class="avue-dialog" + width="500px" + @close="expDialogVisible=false" + > + <div style="height: 70%;min-height: 300px"> + <avue-tree ref="expTree" :data="expTreeData" :option="expOption"></avue-tree> + </div> + <span slot="footer" class="dialog-footer"> + <el-button @click="expDialogVisible=false">鍙� 娑�</el-button> + <el-button type="primary" @click="exportData">纭� 瀹�</el-button> + </span> + </el-dialog> </basic-container> + <!-- 瀵煎叆 --> + <upload-file ref="upload" :fileType="upFileType" :fileUrl="fileUrl" :tipList="tipList" :fileData="fileData" title="瀵煎叆" + @updata="getTableList" @upfaildata="upFail"></upload-file> + <el-dialog v-dialogDrag + :title="dialog.title" + :visible.sync="dialog.showDialog" + :fullscreen="true" + :append-to-body="true" + class="avue-dialog" + :destroy-on-close="true" + :close-on-click-modal="false" + @close="dialog.showDialog=false"> + <pl-show :uiDefineData="dialog.uiDefineData"></pl-show> + </el-dialog> </el-main> </el-container> </template> <script> -import {getBizTypes} from "@/api/modeling/businessType/api"; +import {getBizTree,gridUIContextData,saveUIContextData,updateUIContextData,delUIContextData, cloneUIContextData ,getExpContextTree,expUIContextData} from "@/api/UI/uiDefine"; +import basicOption from "@/util/basic-option"; +import func from "@/util/func"; +import plShow from "@/views/modelingMenu/ui/uiDefine/plShow"; export default { name: "index", + components:{plShow}, data() { return { + dialog: { + showDialog: false, + title: "涓婁笅鏂囪鎯�", + loading: false, + uiDefineData:null + }, + tipList: [], + upFileType: ['xls'], + fileUrl: 'api/uiManagerController/impUIContextData', + fileData:{}, + lastIndex: null, treeOption: { height: 'auto', - defaultExpandedKeys: ['topNode'], + defaultExpandAll: true, menu: false, addBtn: false, props: { - label: 'label', + label: 'text', value: 'oid', children: 'children' } }, nodeRow: {}, - treeData: [{ - label: '涓氬姟绫诲瀷鏍�', - oid: 'topNode', - children: [] - }], + treeData: [], + searchParams: { + 'conditionMap[txtName]': '', + 'conditionMap[txtCode]': '', + }, + tableLoading: false, + page: { + currentPage: 1, + pageSize: 50, + total: 0, + pageSizes: [10, 30, 50, 100], + }, + selectList: [], + option: { + ...basicOption, + calcHeight: -40, + addBtn: false, + editBtn: false, + delBtn: false, + tip: false, + searchMenuSpan: 6, + align:'left', + column: [{ + label: '鍚嶇О', + prop: 'plName', + search: true + }, { + label: 'UI涓婁笅鏂�', + prop: 'plCode', + search: true, + sortable: true, + }, { + label: '瀵艰埅鍖�', + prop: 'plIsShowNavigator', + width: 130, + align:'center', + formatter: function (row, value) { + if (row.plIsShowNavigator == 0) { + return '涓嶆樉绀�' + } else { + return '鏄剧ず' + } + } + }, { + label: '鎺у埗鍖�', + prop: 'plIsShowForm', + width: 130, + align:'center', + formatter: function (row, value) { + if (row.plIsShowForm == 0) { + return '涓嶆樉绀�' + } else { + return '鏄剧ず' + } + } + }, { + label: '鎿嶄綔鍖�', + prop: 'plIsShowTab', + width: 130, + align:'center', + formatter: function (row, value) { + if (row.plIsShowTab == 0) { + return '涓嶆樉绀�' + } else { + return '鏄剧ず' + } + } + }] + }, + data: [], + dialogLoading: false, + dialogVisible: false, + dialogType: '', + form: { + plName: '', + plCode: '', + plIsShow: [], + }, + rules: { + plName: [{ + required: true, + message: '璇疯緭鍏ュ悕绉�', + trigger: 'blur' + }], + plCode: [{ + required: true, + message: '璇疯緭鍏I涓婁笅鏂�', + trigger: 'blur' + }], + plIsShow: [{ + required: true, + message: '璇烽�夋嫨鏄剧ず鍖哄煙', + trigger: 'blur' + }] + }, + cloneDialogVisible:false, + cloneOption: { + submitBtn:false, + emptyBtn:false, + column: [{ + label: '鍏嬮殕鐩爣', + prop: 'cloneTargetName', + span:24, + type: 'tree', + clearable: true, + dicData: [], + defaultExpandAll:true, + rules: [ + { + required: true, + message: '璇烽�夋嫨鍏嬮殕鐩爣', + trigger: 'blur' + } + ] + }, { + label: 'UI鍚嶇О', + prop: 'cloneName', + span:24, + type: 'input', + rules: [ + { + required: true, + message: '璇疯緭鍏I鍚嶇О', + trigger: 'blur' + } + ] + }, { + label: 'UI涓婁笅鏂�', + prop: 'cloneContextCode', + span:24, + type: 'input', + rules: [ + { + required: true, + message: '璇疯緭鍏I涓婁笅鏂�', + trigger: 'blur' + } + ] + }] + }, + cloneForm:{ + //鍏嬮殕鐨勬簮瀵硅薄鐨勪俊鎭� + sourcePLUILayout:null, + cloneTargetName:'n', + cloneName:'', + cloneContextCode:'' + }, + expDialogVisible:false, + expTreeData:[], + expOption:{ + height: 'auto', + filter:false, + multiple:true, + defaultExpandAll: true, + menu: false, + addBtn: false, + props: { + label: 'text', + value: 'oid', + children: 'children' + } + } } }, created() { @@ -59,12 +346,19 @@ //鏍戣〃鏌ヨ getTreeList() { const loading = this.$loading({}); - getBizTypes().then(res => { - const data = res.data.data.map(item => { - item.attributes.label = item.attributes.id; - return item.attributes; + getBizTree().then(res => { + this.treeData=[res.data.obj]; + const dicData = res.data.obj.children.map(item => { + item.label=item.attributes.name; + item.value=item.attributes.name; + return item; }); - this.treeData[0].children = data; + this.cloneOption.column[0].dicData=[{ + label:'涓氬姟绫诲瀷鏍�', + value:'涓氬姟绫诲瀷鏍�', + disabled: true, + children:dicData + }]; loading.close(); }).catch(error => { loading.close(); @@ -72,8 +366,294 @@ }, // 鏍戠偣鍑� nodeClick(row) { - this.nodeRow = row; + if (row.oid) { + this.nodeRow = row; + this.tableLoading = true; + this.getTableList(); + } }, + getTableList(){ + const params = Object.assign(this.searchParams,{ + 'conditionMap[btmName]': this.nodeRow.attributes.name, + }) + gridUIContextData(this.page.currentPage, this.page.pageSize, params).then(res => { + this.data = res.data.data; + this.page.total = res.data.total; + this.$refs.crud.clearSelection(); + this.tableLoading = false; + }) + }, + linkClickHandler(row){ + this.dialog.title='銆�'+row.plName+' - '+row.plCode+'銆戣鎯�' + this.dialog.uiDefineData=row; + this.dialog.showDialog=true; + return false; + this.$router.push({ + path: '/UIDefineShow/:'+row.plOId, + name: row.plName+'璇︽儏' + }); + }, + sizeChange(val) { + this.page.pageSize = val; + }, + // 椤电爜 + currentChange(val) { + this.page.currentPage = val; + }, + // 澶氶�� + selectChangeHandler(row) { + this.selectList = row; + }, + // 鎼滅储 + handleSearch(params, done) { + this.searchParams = { + 'conditionMap[txtName]': params.plName, + 'conditionMap[txtCode]': params.plCode, + }; + this.getTableList() + done(); + }, + + // 閲嶇疆鎼滅储鏉′欢 + handleReset() { + this.searchParams = {}; + this.getTableList(); + }, + // 琛岀偣鍑� + rowClickHandler(row) { + func.rowClickHandler( + row, + this.$refs.crud, + this.lastIndex, + (newIndex) => { + this.lastIndex = newIndex; + }, + () => { + this.selectList = []; + } + ); + }, + + //鍒涘缓 + addHandler(){ + if(this.nodeRow && this.nodeRow.oid){ + this.form.plIsShow=[]; + this.form.plRelatedType=this.nodeRow.attributes.name; + this.dialogType = 'add'; + this.dialogVisible = true; + }else { + this.$message.error('璇烽�夋嫨涓氬姟绫诲瀷'); + } + + }, + editHandler(){ + if(this.selectList.length!=0){ + this.rowEditBtnClick(this.selectList[0]); + }else { + this.$message.error('璇烽�夋嫨涓�鏉℃暟鎹繘琛岀紪杈�'); + } + }, + delHandler(){ + if (this.selectList.length <= 0) { + this.$message.error('璇疯嚦灏戦�夋嫨涓�鏉℃暟鎹�'); + return; + } + const params = { + oids: this.selectList.map(item => item.plOId).join(',') + } + this.$confirm('鎮ㄧ‘瀹氳鍒犻櫎鎵�閫夋嫨鐨勬暟鎹悧锛�', '鎻愮ず', { + confirmButtonText: '纭畾', + cancelButtonText: '鍙栨秷', + type: 'warning' + }).then(() => { + delUIContextData(params).then(res => { + if (res.data.code === 200) { + this.$message.success('鍒犻櫎鎴愬姛'); + this.getTableList(); + } + }) + }).catch(() => { + this.$message({ + type: 'info', + message: '宸插彇娑堝垹闄�' + }); + }); + }, + + // 鍏抽棴瀵硅瘽妗� + dialogClose() { + this.dialogVisible = false; + this.$refs.form.clearValidate(); + this.form = { + plName: '', + plCode: '', + plDesc:'', + plIsShow: [], + } + }, + // 淇濆瓨UI涓婁笅鏂� + saveHandler() { + this.$refs.form.validate((valid,done) => { + if (valid) { + let params = { + ...this.form + } + if(this.form.plIsShow.includes('瀵艰埅鍖�')){ + params.plIsShowNavigator=1 + }else { + params.plIsShowNavigator=0 + } + if(this.form.plIsShow.includes('鎺у埗鍖�')){ + params.plIsShowForm=1; + }else { + params.plIsShowForm=0; + } + if(this.form.plIsShow.includes('鎿嶄綔鍖�')){ + params.plIsShowTab=1; + }else { + params.plIsShowTab=0; + } + delete params.plIsShow; + if (this.dialogType === 'add') { + saveUIContextData(params).then(res => { + if (res.data.code === 200) { + this.$message.success('娣诲姞鎴愬姛'); + this.dialogClose(); + this.getTableList(); + } + }) + } else if (this.dialogType === 'edit') { + updateUIContextData(params).then(res => { + if (res.data.code === 200) { + this.$message.success('淇敼鎴愬姛'); + this.dialogClose() + this.getTableList(); + } + }) + } + } else { + return false; + } + }); + }, + // 瀵煎嚭 + exportClickHandler() { + if (this.selectList.length <= 0) { + this.$message.error('璇烽�夋嫨鏁版嵁'); + return; + } + const params = { + expDatas: this.selectList.map(item => item.plOId).join(',') + } + getExpContextTree(params).then(res => { + this.expTreeData=[res.data.obj]; + }) + this.expDialogVisible=true; + }, + exportData(){ + const params = {} + const checkedDatas=this.$refs.expTree.getCheckedNodes(); + if (checkedDatas.length <= 0) { + this.$message.error('璇烽�夋嫨鏁版嵁'); + return; + } + this.selectList.forEach(item=>{ + params[item.plOId]=checkedDatas.filter(checkitem => checkitem.parentId==item.plOId).map(checkitem => checkitem.oid).join(',') + }) + expUIContextData(params).then(res => { + func.downloadFileByBlobHandler(res); + this.$message.success('瀵煎嚭鎴愬姛'); + this.expDialogVisible=false; + }).catch(err => { + this.$message.error(err); + }); + }, + + // 瀵煎叆 + upLoadClickHandler() { + this.fileData={ + isCovered:false, + selectBtm:this.nodeRow.attributes.name + } + this.$refs.upload.visible = true; + }, + //瀵煎叆澶辫触 + upFail(response){ + + }, + // 缂栬緫鎸夐挳 + rowEditBtnClick(row) { + this.form={ + ...row, + plIsShow: [], + }; + if(row.plIsShowNavigator){ + this.form.plIsShow.push('瀵艰埅鍖�') + } + if(row.plIsShowForm){ + this.form.plIsShow.push('鎺у埗鍖�') + } + if(row.plIsShowTab){ + this.form.plIsShow.push('鎿嶄綔鍖�') + } + this.dialogType = 'edit'; + this.dialogVisible = true; + }, + // 鍒犻櫎鎸夐挳 + rowDeleteHandler(row) { + this.$confirm('鎮ㄧ‘瀹氳鍒犻櫎鎵�閫夋嫨鐨勬暟鎹悧锛�', '鎻愮ず', { + confirmButtonText: '纭畾', + cancelButtonText: '鍙栨秷', + type: 'warning' + }).then(() => { + delUIContextData({oids: row.plOId}).then(res => { + if (res.data.code === 200) { + this.$message.success('鍒犻櫎鎴愬姛'); + this.getTableList(); + } + }) + }).catch(() => { + this.$message({ + type: 'info', + message: '宸插彇娑堝垹闄�' + }); + }); + }, + //鍏嬮殕 + rowCloneHandler(row){ + this.cloneForm={ + sourcePLUILayout:row, + cloneTargetName:'', + cloneName:row.plName+'_copy(0)', + cloneContextCode:row.plCode+'_copy(0)', + } + this.cloneDialogVisible=true; + }, + cloneSaveHandler(){ + this.$refs.cloneForm.validate((valid,done) => { + if (valid) { + cloneUIContextData(this.cloneForm).then(res => { + if (res.data.code === 200) { + this.$message.success('鍏嬮殕鎴愬姛'); + this.cloneDialogClose(); + this.getTableList(); + } + }) + } else { + return false; + } + }); + }, + cloneDialogClose(){ + this.cloneDialogVisible=false; + this.cloneForm= { + //鍏嬮殕鐨勬簮瀵硅薄鐨勪俊鎭� + sourcePLUILayout: null, + cloneTargetName: '', + cloneName: '', + cloneContextCode: '' + } + } } } </script> diff --git a/Source/plt-web/plt-web-ui/src/views/modelingMenu/ui/uiDefine/plShow.vue b/Source/plt-web/plt-web-ui/src/views/modelingMenu/ui/uiDefine/plShow.vue new file mode 100644 index 0000000..7897bd6 --- /dev/null +++ b/Source/plt-web/plt-web-ui/src/views/modelingMenu/ui/uiDefine/plShow.vue @@ -0,0 +1,385 @@ +<template> + <div> + <el-tabs v-model="areaType" type="card" @tab-click="handleClick"> + <el-tab-pane v-if="uiDefineData.plIsShowNavigator" label="瀵艰埅鍖�" name="1"></el-tab-pane> + <el-tab-pane v-if="uiDefineData.plIsShowForm" label="鎺у埗鍖�" name="2"></el-tab-pane> + <el-tab-pane v-if="uiDefineData.plIsShowTab" label="鎿嶄綔鍖�" name="3"></el-tab-pane> + </el-tabs> + <avue-crud + ref="crud" + :data="data" + :option="option" + :table-loading="tableLoading" + @selection-change="selectChangeHandler" + @row-click="rowClickHandler"> + <template slot="menuLeft"> + <el-button icon="el-icon-plus" size="small" type="primary" @click="addHandler">鍒涘缓</el-button> + <el-button icon="el-icon-edit" plain size="small" type="primary" @click="editHandler">淇敼</el-button> + <el-button icon="el-icon-delete" plain size="small" type="danger" @click="delHandler">鍒犻櫎</el-button> + </template> + <template slot="menu" slot-scope="scope"> + <el-button icon="el-icon-edit" size="small" type="text" @click="rowEditBtnClick(scope.row)">缂栬緫 + </el-button> + <el-button icon="el-icon-delete" size="small" type="text" @click="rowDeleteHandler(scope.row)">鍒犻櫎 + </el-button> + </template> + <template slot="plIsOpen" slot-scope="{row}"> + <el-tag v-if="row.plIsOpen === 1" type="success">鍚敤</el-tag> + <el-tag v-else type="danger">鏈惎鐢�</el-tag> + </template> + </avue-crud> + <!-- 鍒涘缓缂栬緫鑷畾涔夊璇濇 --> + <el-dialog + v-dialogDrag + v-loading="dialogLoading" + :title="dialogType === 'add' ? ' 鍒涘缓 椤电' : '缂栬緫 椤电'" + :visible.sync="dialogVisible" + append-to-body="true" + class="avue-dialog" + :close-on-click-modal="false" + width="800px" + @close="dialogClose" + > + <el-form ref="form" :model="form" :rules="rules" label-width="100px" size="small"> + <el-row> + <el-col :span="12"> + <el-form-item label="椤甸潰缂栫爜锛�" prop="plCode"> + <el-input v-model="form.plCode"></el-input> + </el-form-item> + </el-col> + <el-col :span="12"> + <el-form-item label="鍚嶇О锛�" prop="plName"> + <el-input v-model="form.plName"></el-input> + </el-form-item> + </el-col> + <el-col :span="12"> + <el-form-item label="搴忓彿锛�" prop="plSeq"> + <el-input v-model="form.plSeq"></el-input> + </el-form-item> + </el-col> + <el-col :span="12"> + <el-form-item label="鏄惁鍚敤" prop="plIsOpen"> + <el-switch v-model="form.plIsOpen" :active-value="1" :inactive-value="0" active-color="#13ce66" inactive-color="#ff4949"></el-switch> + </el-form-item> + </el-col> + </el-row> + <el-form-item label="鏄剧ず琛ㄨ揪寮忥細" prop="plOpenExpression"> + <el-input type="textarea" :rows="3" v-model="form.plOpenExpression"></el-input> + </el-form-item> + <el-form-item label="鍥介檯鍖栨爣鍑嗭細" prop="plLabel"> + <el-input type="textarea" :rows="1" v-model="form.plLabel"></el-input> + </el-form-item> + <el-form-item label="鎻忚堪锛�" prop="plDesc"> + <el-input type="textarea" :rows="1" v-model="form.plDesc"></el-input> + </el-form-item> + <el-form-item label="UI瑙f瀽绫伙細" prop="plUIParser"> + <el-input type="textarea" :rows="2" v-model="form.plUIParser"></el-input> + </el-form-item> + <div class="tip"> + <div style="color: #D40000">绀轰緥锛歫ava_cs:xxx;java_bs:xxx;net_cs:xxx;net_bs:xxx;mobile_cs:xxx;mobile_bs:xxx;</div> + <div>1銆佺敤鑻辨枃鍗婅鍒嗗彿;鍒嗛殧鍚勭粍鍊笺��</div> + <div>2銆佹瘡缁勭敤鑻辨枃鍗婅鍐掑彿:鍒嗛殧鍗曚竴鎷撳睍灞炴�у悕绉板強灞炴�у�笺��</div> + <div>3銆佸叾涓殑xxx鏄悇绉嶈В鏋愮被鐨勫畬鏁寸被鍨嬪悕绉帮紙瀹屽叏闄愬畾鍚嶏級銆�</div> + <div>4銆佽緭鍏ユ椂锛屼笉瑕佹暡鍥炶溅鎹㈣銆�</div> + </div> + <el-form-item label="鎷撳睍灞炴�э細" prop="plExtAttr"> + <el-input type="textarea" :rows="2" v-model="form.plExtAttr"></el-input> + </el-form-item> + <div class="tip"> + <div style="color: #D40000">绀轰緥锛歟xt1:xx;ext2:xx;ext3:xxx;ext4:xxx;extn:xxx</div> + <div>1銆佺敤鑻辨枃鍗婅鍒嗗彿;鍒嗛殧鍚勭粍鍊笺��</div> + <div>2銆佹瘡缁勭敤鑻辨枃鍗婅鍐掑彿:鍒嗛殧鍗曚竴鎷撳睍灞炴�у悕绉板強灞炴�у�笺��</div> + <div>3銆佸彲浠ュ畾涔変换鎰忕粍锛屼絾鎬诲瓧绗﹂暱搴︿笉寰楄秴杩�4000銆�</div> + <div>4銆佽緭鍏ユ椂锛屼笉瑕佹暡鍥炶溅鎹㈣銆�</div> + </div> + </el-form> + <span slot="footer" class="dialog-footer"> + <el-button @click="dialogClose">鍙� 娑�</el-button> + <el-button type="primary" @click="saveHandler">纭� 瀹�</el-button> + </span> + </el-dialog> + </div> +</template> + +<script> +import basicOption from "@/util/basic-option"; +import { + getTabByContextIdAndType, + addTabData, + updateTabData, + deleteTabData, +} from "@/api/UI/uiDefine"; +import func from "@/util/func"; +import {uiDefineVOData} from "@/views/base/uiDefineVO"; + +export default { +name: "plShow", + props: { + uiDefineData: { + type: Object, + default: {} + }, + }, + data() { + return { + uiDefineOid:'', + areaType: '', + tableLoading: false, + selectList: [], + option: { + ...basicOption, + height:'50%', + addBtn: false, + editBtn: false, + delBtn: false, + index:false, + menuWidth:160, + align:'left', + column: [{ + label: '搴忓彿', + prop: 'plSeq', + width:60 + }, { + label: '缂栫爜', + prop: 'plCode', + width:180 + }, { + label: '鍚嶇О', + prop: 'plName', + width:200 + }, { + label: '鏄惁鍚敤', + prop: 'plIsOpen', + align:'center', + width: 90 + }, { + label: '鏄剧ず琛ㄨ揪寮�', + prop: 'plOpenExpression', + overHidden:true, + width:300 + }, { + label: 'UI瑙f瀽绫�', + prop: 'plUIParser' + }, { + label: '鎷撳睍灞炴��', + prop: 'plExtAttr' + }, { + label: '鎻忚堪', + prop: 'plDesc' + }] + }, + data: [], + dialogLoading: false, + dialogVisible: false, + dialogType: '', + form: { + plSeq: '', + plCode: '', + plName: '', + plIsOpen:0, + plOpenExpression:'', + plLabel:'', + plUIParser:'', + plExtAttr:'', + plDesc:'' + }, + rules: { + plName: [{ + required: true, + message: '璇疯緭鍏ュ悕绉�', + trigger: 'blur' + }], + plCode: [{ + required: true, + message: '璇疯緭鍏ョ紪鐮�', + trigger: 'blur' + }], + plSeq: [{ + required: true, + message: '璇疯緭鍏ュ簭鍙�', + trigger: 'blur' + }] + }, + } + }, + watch: { + uiDefineData:{ + handler(val) { + if(val && val.plOId) { + if (val.plIsShowNavigator) { + this.areaType = '1'; + }else if(val.plIsShowForm){ + this.areaType = '2' + }else{ + this.areaType = '3' + } + this.getTableList() + } + }, + immediate: true, + deep:true + } + }, + created() { + this.uiDefineOid=this.$route.params.uiDefineOid; + }, + methods: { + handleClick(tab, event) { + this.getTableList() + }, + getTableList(){ + const params = { + contextId:this.uiDefineData.plOId, + areaType:this.areaType + } + getTabByContextIdAndType( params).then(res => { + this.data = res.data.data; + this.$refs.crud.clearSelection(); + this.tableLoading = false; + }) + }, + selectChangeHandler(row) { + this.selectList = row; + }, + // 琛岀偣鍑� + rowClickHandler(row) { + func.rowClickHandler( + row, + this.$refs.crud, + this.lastIndex, + (newIndex) => { + this.lastIndex = newIndex; + }, + () => { + this.selectList = []; + } + ); + }, + //鍒涘缓 + addHandler(){ + this.form={ + plSeq: '', + plCode: '', + plName: '', + plIsOpen:0, + plOpenExpression:'', + plLabel:'', + plUIParser:'', + plExtAttr:'', + plDesc:'' + }; + this.dialogType = 'add'; + this.dialogVisible = true; + }, + editHandler(){ + if(this.selectList.length!=0){ + this.rowEditBtnClick(this.selectList[0]); + }else { + this.$message.error('璇烽�夋嫨涓�鏉℃暟鎹繘琛岀紪杈�'); + } + }, + delHandler(){ + if (this.selectList.length <= 0) { + this.$message.error('璇疯嚦灏戦�夋嫨涓�鏉℃暟鎹�'); + return; + } + const params = { + oids: this.selectList.map(item => item.plOId).join(',') + } + this.$confirm('鎮ㄧ‘瀹氳鍒犻櫎鎵�閫夋嫨鐨勬暟鎹悧锛�', '鎻愮ず', { + confirmButtonText: '纭畾', + cancelButtonText: '鍙栨秷', + type: 'warning' + }).then(() => { + deleteTabData(params).then(res => { + if (res.data.code === 200) { + this.$message.success('鍒犻櫎鎴愬姛'); + this.getTableList(); + } + }) + }).catch(() => { + this.$message({ + type: 'info', + message: '宸插彇娑堝垹闄�' + }); + }); + }, + // 缂栬緫鎸夐挳 + rowEditBtnClick(row) { + this.form=row; + this.dialogType = 'edit'; + this.dialogVisible = true; + }, + // 鍒犻櫎鎸夐挳 + rowDeleteHandler(row) { + this.$confirm('鎮ㄧ‘瀹氳鍒犻櫎鎵�閫夋嫨鐨勬暟鎹悧锛�', '鎻愮ず', { + confirmButtonText: '纭畾', + cancelButtonText: '鍙栨秷', + type: 'warning' + }).then(() => { + deleteTabData({oids: row.plOId}).then(res => { + if (res.data.code === 200) { + this.$message.success('鍒犻櫎鎴愬姛'); + this.getTableList(); + } + }) + }).catch(() => { + this.$message({ + type: 'info', + message: '宸插彇娑堝垹闄�' + }); + }); + }, + // 鍏抽棴瀵硅瘽妗� + dialogClose() { + this.dialogVisible = false; + this.$refs.form.clearValidate(); + this.form = { + plName: '', + plCode: '', + plDesc:'', + plIsShow: [], + } + }, + // 淇濆瓨椤电 + saveHandler() { + this.$refs.form.validate((valid,done) => { + if (valid) { + const params = { + plAreaType:parseInt(this.areaType), + plContextOId:this.uiDefineData.plOId, + ...this.form + } + if (this.dialogType === 'add') { + addTabData(params).then(res => { + if (res.data.code === 200) { + this.$message.success('娣诲姞鎴愬姛'); + this.dialogClose(); + this.getTableList(); + } + }) + } else if (this.dialogType === 'edit') { + updateTabData(params).then(res => { + if (res.data.code === 200) { + this.$message.success('淇敼鎴愬姛'); + this.dialogClose() + this.getTableList(); + } + }) + } + } else { + return false; + } + }); + }, + } +} +</script> + +<style scoped> +.tip{ + font-size: 12px; + color: #909399; + margin: -13px 0 10px 100px; +} +</style> -- Gitblit v1.9.3