From acecd2af0d71d980c741936637f29f008adaf88f Mon Sep 17 00:00:00 2001 From: wangting <wangting@vci-tech.com> Date: 星期四, 19 十二月 2024 18:12:08 +0800 Subject: [PATCH] 首页配置,业务模块展示不同首页 --- Source/plt-web/plt-web-ui/src/router/page/index.js | 41 --- Source/plt-web/plt-web-ui/src/views/modelingMenu/ui/Icons/index.vue | 1 Source/plt-web/plt-web-ui/src/page/index/tags.vue | 17 - Source/plt-web/plt-web-ui/src/views/wel/components/test.vue | 26 ++ Source/plt-web/plt-web-ui/src/views/wel/workIndex.vue | 35 +- Source/plt-web/plt-web-ui/src/views/wel/components/UndoTaskPortlet.vue | 21 + Source/plt-web/plt-web-ui/src/page/index/logo.vue | 6 Source/plt-web/plt-web-ui/src/router/views/index.js | 74 +++++- Source/plt-web/plt-web-ui/src/views/wel/index.vue | 214 +---------------- Source/plt-web/plt-web-ui/src/views/wel/adminIndex.vue | 233 +++++++++++++++++++ Source/plt-web/plt-web-ui/src/views/wel/components/taskPortlet.vue | 26 ++ Source/plt-web/plt-web-ui/src/views/wel/homeConfig.vue | 5 12 files changed, 412 insertions(+), 287 deletions(-) diff --git a/Source/plt-web/plt-web-ui/src/page/index/logo.vue b/Source/plt-web/plt-web-ui/src/page/index/logo.vue index 1dd1a14..0db22fa 100644 --- a/Source/plt-web/plt-web-ui/src/page/index/logo.vue +++ b/Source/plt-web/plt-web-ui/src/page/index/logo.vue @@ -9,9 +9,9 @@ </transition> <transition-group name="fade"> <template v-if="!keyCollapse"> -<span> - <img class="imgSpan" :src=imgurl> - </span> + <span> + <img class="imgSpan" :src=imgurl> + </span> <span class="avue-logo_title" key="1"> <span> diff --git a/Source/plt-web/plt-web-ui/src/page/index/tags.vue b/Source/plt-web/plt-web-ui/src/page/index/tags.vue index 673585c..8865912 100644 --- a/Source/plt-web/plt-web-ui/src/page/index/tags.vue +++ b/Source/plt-web/plt-web-ui/src/page/index/tags.vue @@ -1,19 +1,12 @@ <template> - <div v-if="showTag" - class="avue-tags"> - <!-- tag鐩掑瓙 --> + <div v-if="showTag" class="avue-tags"> + <!-- 鍙抽敭 --> <div v-if="contextmenuFlag" :style="{left:contentmenuX+'px',top:contentmenuY+'px'}" class="avue-tags__contentmenu"> - <div class="item" - @click="clearCacheTags">{{ $t('tagsView.clearCache') }} - </div> - <div class="item" - @click="closeOthersTags">{{ $t('tagsView.closeOthers') }} - </div> - <div class="item" - @click="closeAllTags">{{ $t('tagsView.closeAll') }} - </div> + <div class="item" @click="clearCacheTags">{{ $t('tagsView.clearCache') }}</div> + <div class="item" @click="closeOthersTags">{{ $t('tagsView.closeOthers') }}</div> + <div class="item" @click="closeAllTags">{{ $t('tagsView.closeAll') }}</div> </div> <div :class="{'avue-tags__box--close':!website.isFirstPage}" class="avue-tags__box"> 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 5e4006d..5cc98e8 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 @@ -78,30 +78,6 @@ redirect: '/404' }, { - path: '/dynamic-form', - name: '鍔ㄦ�佽〃鏍奸〉闈�', - component: Layout, - children: [ - { - path: '', // 绌鸿矾寰勮〃绀鸿闂� '/dynamic-form' 鏃跺姞杞� Layout 缁勪欢 - component: () => import('@/components/dynamic-components/dynamic-form'), - props: true - } - ] - }, - { - path: '/UIContentViewer', - name: 'UI涓婁笅鏂囧睍绀�', - component: Layout, - children: [ - { - path: '', // 绌鸿矾寰勮〃绀鸿闂� '/UIContentViewer' 鏃跺姞杞� Layout 缁勪欢 - component: () => import('@/views/base/UIContentViewer'), - props: true - } - ] - }, - { path: '/referIndex', name: '鍙傜収绀轰緥', component: Layout, @@ -112,22 +88,5 @@ props: true } ] - }, - { - path: '/UIDefineShow/:uiDefineOid', - name: 'UI瀹氫箟璇︽儏', - component: Layout, - children: [ - { - path: '', // 绌鸿矾寰勮〃绀鸿闂� '/referIndex' 鏃跺姞杞� Layout 缁勪欢 - component: () => import('@/views/modelingMenu/ui/uiDefine/rightRegion/plShow'), - props: true - } - ], - meta:{ - keepAlive: true, - isTab: true, - isAuth: true - } } ] diff --git a/Source/plt-web/plt-web-ui/src/router/views/index.js b/Source/plt-web/plt-web-ui/src/router/views/index.js index 2826e0e..385dd98 100644 --- a/Source/plt-web/plt-web-ui/src/router/views/index.js +++ b/Source/plt-web/plt-web-ui/src/router/views/index.js @@ -12,6 +12,14 @@ }, component: () => import( /* webpackChunkName: "views" */ '@/views/wel/index') + },{ + path: 'workIndex', + name: '宸ヤ綔鍙�', + meta: { + i18n: 'work' + }, + component: () => + import( /* webpackChunkName: "views" */ '@/views/wel/workIndex') }, { path: 'dashboard', name: '鎺у埗鍙�', @@ -104,16 +112,56 @@ import( /* webpackChunkName: "views" */ '@/views/work/process/leave/detail') }] },{ - path: '/base', - component: Layout, - redirect: '/viewTab', - children: [{ - path: 'viewTab', - name: '鏌ョ湅璇︽儏', - meta: { - i18n: 'viewTab' - }, - component: () => - import('@/views/base/ViewTab') - }] -} ] + path: '/UIContentViewer', + name: 'UI涓婁笅鏂囧睍绀�', + component: Layout, + children: [ + { + path: '', // 绌鸿矾寰勮〃绀鸿闂� '/UIContentViewer' 鏃跺姞杞� Layout 缁勪欢 + component: () => import('@/views/base/UIContentViewer'), + props: true + } + ] + }, + { + path: '/dynamic-form', + name: '鍔ㄦ�佽〃鍗曢〉闈�', + component: Layout, + children: [ + { + path: '', // 绌鸿矾寰勮〃绀鸿闂� '/dynamic-form' 鏃跺姞杞� Layout 缁勪欢 + component: () => import('@/components/dynamic-components/dynamic-form'), + props: true + } + ] + }, + { + path: '/UIDefineShow/:uiDefineOid', + name: 'UI瀹氫箟璇︽儏', + component: Layout, + children: [ + { + path: '', // 绌鸿矾寰勮〃绀鸿闂� '/referIndex' 鏃跺姞杞� Layout 缁勪欢 + component: () => import('@/views/modelingMenu/ui/uiDefine/rightRegion/plShow'), + props: true + } + ], + meta:{ + keepAlive: true, + isTab: true, + isAuth: true + } + }, { + path: '/base', + component: Layout, + redirect: '/viewTab', + children: [{ + path: 'viewTab', + name: '鏌ョ湅璇︽儏', + meta: { + i18n: 'viewTab' + }, + component: () => + import('@/views/base/ViewTab') + }] + } ] diff --git a/Source/plt-web/plt-web-ui/src/views/modelingMenu/ui/Icons/index.vue b/Source/plt-web/plt-web-ui/src/views/modelingMenu/ui/Icons/index.vue index 5c87518..855611b 100644 --- a/Source/plt-web/plt-web-ui/src/views/modelingMenu/ui/Icons/index.vue +++ b/Source/plt-web/plt-web-ui/src/views/modelingMenu/ui/Icons/index.vue @@ -98,7 +98,6 @@ checkedTypes:[], searchText:'', activeName:'', - iconValue:'iconoir2:adobe-illustrator', allIconList:[], iconList:[], visible: false, diff --git a/Source/plt-web/plt-web-ui/src/views/wel/adminIndex.vue b/Source/plt-web/plt-web-ui/src/views/wel/adminIndex.vue new file mode 100644 index 0000000..810ee60 --- /dev/null +++ b/Source/plt-web/plt-web-ui/src/views/wel/adminIndex.vue @@ -0,0 +1,233 @@ +<template> + <div> + <el-row> + <el-col :span="24"> + <basic-container v-loading="loading"> + <avue-data-tabs :option="topOption"></avue-data-tabs> + </basic-container> + </el-col> + </el-row> + <el-row> + <el-col :span="16" style="height: 560px"> + <basic-container> + <el-collapse v-model="activeNames"> + <el-collapse-item name="1" title="娆㈣繋浣跨敤PLT-WEB骞冲彴"> + <div> + 1銆佸寳浜畯鍗氳繙杈剧鎶�鏈夐檺鍏徃锛堜互涓嬬畝绉扳�滃畯鍗氳繙杈锯�濓級闀挎湡涓撴敞浜庡埗閫犱笟淇℃伅鍖栧缓璁撅紝涓哄鎴锋彁渚涗紒涓氫俊鎭寲鏁翠綋瑙e喅鏂规鍙婄浉鍏宠蒋浠剁爺鍙戙�佸挩璇㈠強瀹炴柦鏈嶅姟銆傚畯鍗氳繙杈惧鎴风兢浣撴兜鐩栬埅绌恒�佽埅澶┿�佽埞鑸躲�佸叺鍣ㄣ�佹苯杞︺�侀�氱敤鏈烘銆佺數瀛愮瓑鍒堕�犺涓氾紝閫氳繃涓庡鎴锋繁搴﹀悎浣滐紝鎵挎媴浜嗗椤瑰浗瀹剁骇杞欢鐮斿彂涓庢妧鏈湇鍔¢」鐩紝鎷ユ湁澶氶」鍏锋湁鑷富鐭ヨ瘑浜ф潈鐨勮蒋浠朵骇鍝併�� + </div> + <div> + 2銆佷负浜嗙粰瀹㈡埛鎻愪緵鏇村鐨勬妧鏈垱鏂拌兘鍔涘強鐩稿簲鐨勪紒涓氱骇绠$悊鏀拺骞冲彴锛屽畯鍗氳繙杈剧爺鍙戜簡鍏锋湁鑷富鐭ヨ瘑浜ф潈鐨勪紒涓氱骇淇℃伅鍖栨暣浣撹В鍐虫柟妗堬紝鍚屾椂閽堝瀹㈡埛鐨勭壒瀹氶渶姹傦紝鎻愪緵浜嗛珮搴﹀彲瀹氬埗鐨勪笓涓氬簲鐢ㄣ�備负浜嗚繘涓�姝ユ彁鍗囨妧鏈湇鍔¤兘鍔涳紝瀹忓崥杩滆揪鎶曞叆涓撻棬鍔涢噺鍦ㄥ墠娌挎妧鏈柟闈㈣繘琛屾帰绱紝鍦ㄤ紒涓氱鏈変簯璁$畻鍜屽ぇ鏁版嵁绛夐鍩熶笉鏂彇寰楃獊鐮淬�傞殢鐫�鏂颁竴浠d笟鍔′笌绠$悊鎶�鏈钩鍙扮殑鎺ㄥ嚭锛屾洿澧炲己浜嗗叕鍙镐负瀹㈡埛鎻愪緵楂樿川閲忋�佸叏鏂逛綅銆佹繁灞傛鏈嶅姟鐨勬妧鏈兘鍔涖�� + </div> + <div> + 3銆佸畯鍗氳繙杈句竴鐩寸鎵库�滅敤鏅烘収涓哄鎴峰垱閫犱环鍊尖�濈殑瀹楁棬锛屾効浠モ�滆瘹淇¤礋璐b�濈殑鎬佸害鍜屼笓涓氬寲鐨勬湇鍔★紝鍦ㄤ紒涓氫俊鎭寲鍙戝睍鐨勯亾璺笂锛屼笌瀹㈡埛涓�璧锋垚闀匡紝鍏卞悓瑙佽瘉鎴愬姛锛� + </div> + </el-collapse-item> + + <el-collapse-item name="2" title="鏈嶅姟璁″垝鍒跺畾"> + <div> + 1銆佹牴鎹鎴峰疄闄呴渶姹傦紝瀹忓崥杩滆揪灏嗕笌瀹㈡埛鍏卞悓鍒跺畾骞村害鏈嶅姟璁″垝锛屽晢瀹氬叿浣撶殑鏈嶅姟瀵硅薄銆佹湇鍔″唴瀹广�佸畾鏈熺淮鎶ょ殑鏈嶅姟鏃堕棿銆佹妧鏈氦娴佺殑涓婚銆佸叿浣撶殑缁存姢浜哄憳瀹夋帓绛夋湇鍔$粏鑺傘�� + </div> + <div> + 2銆佸鎴峰彲閫氳繃鐢佃瘽銆佺數瀛愰偖浠躲�佸嚱浠剁瓑鏂瑰紡鍙栧緱绯荤粺鎶�鏈敮鎸併�傚浜庣郴缁熶互澶栫殑闂锛屾垜浠細灏藉姏鍗忓姪瀹㈡埛鎵惧埌瑙e喅閫斿緞銆� + </div> + <div> + 3銆佸浜庤繙绋嬫棤娉曡В鍐崇殑鏁呴殰(闂)锛屽畯鍗氳繙杈惧伐绋嬪笀灏嗗湪鍚堝悓瑙勫畾鐨勬椂闂村唴鍒拌揪瀹㈡埛鐜板満杩涜鏁呴殰璇婃柇鍙婂鐞嗭紝鍋氬ソ鐩稿簲鐨勮褰曘�傚繀瑕佹椂闇�瑕侀噸鏂版敹闆嗙郴缁熶俊鎭紝骞跺綊妗c�傚浜庨潪绯荤粺鐨勫師鍥犺�屽紩璧风殑鏁呴殰(闂)锛屽畯鍗氳繙杈惧皢鍏冲績鍜屽崗鍔╁鎴疯В鍐虫晠闅�(闂)銆� + </div> + <div> + 4銆佸湪鍏朵粬鎯呭舰涓嬶紝瀹忓崥杩滆揪涔熷彲鎻愪緵蹇呰鐨勭幇鍦烘湇鍔°�傚涓哄鎴疯幏寰楃殑鍚堟硶鎿嶄綔绯荤粺杩涜鍗囩骇鏈嶅姟銆佷负瀹㈡埛瀹夎蹇呰鐨勮蒋浠剁瓑鐨勬湇鍔°�侀厤鍚堝鎴峰仛涓绘満绯荤粺鏂归潰鐨勬祴璇曘�佷负瀹㈡埛鐨勫簲鐢ㄨ皟鏁存彁渚涚郴缁熸柟闈㈢殑鏀寔绛夌瓑銆� + </div> + <div> + 5銆佸畯鍗氳繙杈捐繕灏嗕负瀹㈡埛鎻愪緵瀹氭湡鐨勭郴缁熸�ц兘璇勪及涓庝紭鍖栨湇鍔°�傞�氳繃瀵圭郴缁熻繍琛屾暟鎹殑娣卞叆鍒嗘瀽锛屾垜浠皢璇嗗埆娼滃湪鐨勬�ц兘鐡堕锛屾彁鍑洪拡瀵规�х殑浼樺寲寤鸿锛屽苟鍗忓姪瀹㈡埛瀹炴柦浼樺寲鎺柦銆傝繖鍖呮嫭浣嗕笉闄愪簬纭欢璧勬簮鐨勫悎鐞嗛厤缃�佽蒋浠跺弬鏁扮殑璋冧紭銆佹暟鎹簱鎬ц兘鐨勬彁鍗囩瓑锛屾棬鍦ㄧ‘淇濈郴缁熻兘澶熸寔缁ǔ瀹氥�侀珮鏁堝湴杩愯锛屾弧瓒冲鎴风殑涓氬姟鍙戝睍闇�姹傘�傚悓鏃讹紝鎴戜滑涔熷皢鏍规嵁绯荤粺璇勪及缁撴灉锛屼负瀹㈡埛鎻愪緵鏈潵鐨勭郴缁熷崌绾у拰鎵╁睍瑙勫垝寤鸿锛屽府鍔╁鎴锋彁鍓嶅竷灞�锛屽簲瀵规湭鏉ョ殑涓氬姟澧為暱鍜屾妧鏈彉闈┿�� + </div> + </el-collapse-item> + </el-collapse> + </basic-container> + </el-col> + <el-col :span="8" style="height: 560px"> + <el-row> + <basic-container> + <div class="el-font-size"> + <span>浜у搧鍚嶇О</span> + <el-divider direction="vertical"/> + <span><el-tag>PLT-WEB骞冲彴</el-tag></span> + <el-divider content-position="right"><i class="el-icon-star-off"/></el-divider> + + <span>褰撳墠鐢ㄦ埛</span> + <el-divider direction="vertical"/> + <span><el-tag type="success">{{ userInfo.userName }}</el-tag></span> + <el-divider content-position="right"><i class="el-icon-star-off"/></el-divider> + + <span>璇存槑鏂囨。</span> + <el-divider direction="vertical"/> + <span> + <el-link href="https://bladex.vip" target="_blank" + type="primary">https://bladex.vip + </el-link> + </span> + <el-divider content-position="right"><i class="el-icon-star-off"/></el-divider> + + </div> + </basic-container> + <basic-container> + <div style="height: 309px"> + <v-chart id="chart" :auto-resize="true" :options="chartOptions"></v-chart> + </div> + </basic-container> + </el-row> + + </el-col> + </el-row> + </div> +</template> + +<script> +import {mapGetters} from "vuex"; +import {getLogListByContion} from "@/api/system/log/logBasic"; +import 'echarts' +import 'echarts/lib/chart/pie' // 瀵煎叆鏌辩姸鍥剧粍浠� +import 'echarts/lib/component/tooltip' +import 'echarts/lib/component/legend' +import func from "@/util/func"; + +export default { + name: "adminIndex", + data() { + return { + loading: false, + activeNames: ['1', '2', '3', '5'], + logActiveNames: ['28'], + topOption: { + data: [] + }, + chartOptions: { + title: { + text: '', + }, + tooltip: { + trigger: 'item' + }, + legend: { + top: '5%', + left: 'center' + }, + series: [ + { + name: '鏃ュ織缁熻', + type: 'pie', + radius: ['45%', '70%'], + avoidLabelOverlap: false, + padAngle: 5, + itemStyle: { + borderRadius: 10, + normal: { + color: function (colors) { + const colorList = ['rgb(230, 71, 88)', 'rgb(178, 159, 255)', 'rgb(27, 201, 142)']; + return colorList[colors.dataIndex]; + } + } + }, + label: { + show: false, + position: 'center' + }, + emphasis: { + label: { + show: true, + fontSize: 14, + fontWeight: 'bold' + } + }, + labelLine: { + show: false + }, + data: [] + } + ] + } + }; + }, + computed: { + ...mapGetters(["userInfo"]), + }, + created() { + this.getLogHandler(); + }, + methods: { + getLogHandler() { + this.loading = true; + + // 鏃ュ織璇锋眰鍜屽睍绀虹殑鐩稿叧鐨勯厤缃� + const logConfig = [ + { + logType: "1", + logName: "鐧诲綍鏃ュ織缁熻", + text: "褰撳墠鐧诲綍鏃ュ織鎬昏褰曟暟", + color: 'rgb(230, 71, 88)', + router: '/LogInfoMain?logType=1&roleType=2' + }, + { + logType: "3", + logName: "鎺堟潈鏃ュ織缁熻", + text: "褰撳墠鎺堟潈鏃ュ織鎬昏褰曟暟", + color: 'rgb(178, 159, 255)', + router: '/LogAuthorizeMain?logType=3&roleType=2' + }, + { + logType: "4", + logName: "鎿嶄綔鏃ュ織缁熻", + text: "褰撳墠鎿嶄綔鏃ュ織鎬昏褰曟暟", + color: 'rgb(27, 201, 142)', + router: '/LogOperateMain?logType=4&roleType=2' + }, + ]; + + const roleType = "2"; + + const requests = logConfig.map(config => getLogListByContion(1, -1, {logType: config.logType, roleType})); + + Promise.all(requests).then(responses => { + // 璁$畻涓変釜鏃ュ織鐨勬�诲拰 + const totalCount = responses.reduce((sum, res) => sum + (res.data.total || 0), 0); + + this.topOption.data = responses.map((res, index) => ({ + title: logConfig[index].logName, + text: logConfig[index].text, + color: logConfig[index].color, + subtitle: '瀹炴椂', + count: res.data.total, + allcount: `鏃ュ織鎬绘暟锛�${totalCount}`, + key: '鏃ュ織', + click: () => this.$router.push({path: logConfig[index].router}), + })); + + const chartData = responses.map((res, index) => ({ + name: logConfig[index].logName, + value: res.data.total, + })); + this.$set(this.chartOptions.series[0], 'data', chartData); + + this.loading = false; + }).catch(error => { + this.$message.error(error); + this.loading = false; + }); + } + }, +}; +</script> + +<style> +.el-font-size { + font-size: 14px; +} + +.avue-text-ellipsis__text { + font-size: 14px !important; +} + +#chart { + width: 100%; + height: 309px; +} +</style> + diff --git a/Source/plt-web/plt-web-ui/src/views/wel/components/UndoTaskPortlet.vue b/Source/plt-web/plt-web-ui/src/views/wel/components/UndoTaskPortlet.vue index c0d691a..35eb19d 100644 --- a/Source/plt-web/plt-web-ui/src/views/wel/components/UndoTaskPortlet.vue +++ b/Source/plt-web/plt-web-ui/src/views/wel/components/UndoTaskPortlet.vue @@ -1,5 +1,5 @@ <template> - <basic-container title="寰呭姙娴佺▼浠诲姟"> + <basic-container title="寰呭姙娴佺▼浠诲姟" :style="'height:'+height+'px' "> <avue-crud ref="crud" :data="todoData" :option="todoOption" :page.sync="page" :table-loading="loading" @on-load="onLoad" @@ -18,6 +18,17 @@ <script> export default { name: "UndoTaskPortlet", + props:{ + height: { + type: Number + }, + title: { + type: String + }, + icon: { + type: String + } + }, data(){ return { loading: false, @@ -30,7 +41,7 @@ todoData: [], // 浠e姙娴佺▼浠诲姟option todoOption: { - height: 500, + height: 'auto', addBtn: false, header: false, align: 'center', @@ -86,12 +97,12 @@ }, methods: { onLoad(page, params = {}) { - this.loading = true; + //this.loading = true; const query = { ...this.query, category: (params.category) ? flowCategory(params.category) : null }; - todoList(page.currentPage, page.pageSize, Object.assign(params, query)).then(res => { + /*todoList(page.currentPage, page.pageSize, Object.assign(params, query)).then(res => { const data = res.data.data; this.page.total = data.total; this.todoData = data.records; @@ -100,6 +111,8 @@ this.$message.error(error); this.loading = false; }) + + */ }, cellHandle(row, column, cell, event) { if (column.property == 'taskName') { diff --git a/Source/plt-web/plt-web-ui/src/views/wel/components/taskPortlet.vue b/Source/plt-web/plt-web-ui/src/views/wel/components/taskPortlet.vue new file mode 100644 index 0000000..b9dcee3 --- /dev/null +++ b/Source/plt-web/plt-web-ui/src/views/wel/components/taskPortlet.vue @@ -0,0 +1,26 @@ +<template> + <basic-container title="寰呭姙浜嬮」" :style="'height:'+height+'px' "> + 寰呭姙 + </basic-container> +</template> + +<script> +export default { + name: "taskPortlet", + props:{ + height: { + type: Number + }, + title: { + type: String + }, + icon: { + type: String + } + }, +} +</script> + +<style scoped> + +</style> diff --git a/Source/plt-web/plt-web-ui/src/views/wel/components/test.vue b/Source/plt-web/plt-web-ui/src/views/wel/components/test.vue new file mode 100644 index 0000000..f2d1266 --- /dev/null +++ b/Source/plt-web/plt-web-ui/src/views/wel/components/test.vue @@ -0,0 +1,26 @@ +<template> + <basic-container title="棣栭〉缁勪欢" :style="'height:'+height+'px' "> + 棣栭〉缁勪欢 + </basic-container> +</template> + +<script> +export default { + name: "test", + props:{ + height: { + type: Number + }, + title: { + type: String + }, + icon: { + type: String + } + }, +} +</script> + +<style scoped> + +</style> diff --git a/Source/plt-web/plt-web-ui/src/views/wel/homeConfig.vue b/Source/plt-web/plt-web-ui/src/views/wel/homeConfig.vue index 2aba3a8..73b5660 100644 --- a/Source/plt-web/plt-web-ui/src/views/wel/homeConfig.vue +++ b/Source/plt-web/plt-web-ui/src/views/wel/homeConfig.vue @@ -1,4 +1,5 @@ <template> + <!-- 涓氬姟绠$悊 棣栭〉閰嶇疆 --> <basic-container> <avue-crud ref="crud" @@ -53,8 +54,8 @@ </el-col> <el-col :span="24"> <el-form-item label="鍥炬爣锛�" prop="icon"> - <avue-input-icon v-model="form.icon" :icon-list="iconList" placeholder="璇烽�夋嫨鍥炬爣"> - </avue-input-icon> + <input-icon v-model="form.icon" placeholder="璇烽�夋嫨鍥炬爣"> + </input-icon> </el-form-item> </el-col> <el-col :span="24"> diff --git a/Source/plt-web/plt-web-ui/src/views/wel/index.vue b/Source/plt-web/plt-web-ui/src/views/wel/index.vue index 7d762f7..3f0e5c7 100644 --- a/Source/plt-web/plt-web-ui/src/views/wel/index.vue +++ b/Source/plt-web/plt-web-ui/src/views/wel/index.vue @@ -1,217 +1,45 @@ <template> <div> - <el-row> - <el-col :span="24"> - <basic-container v-loading="loading"> - <avue-data-tabs :option="topOption"></avue-data-tabs> - </basic-container> - </el-col> - </el-row> - <el-row> - <el-col :span="16" style="height: 560px"> - <basic-container> - <el-collapse v-model="activeNames"> - <el-collapse-item name="1" title="娆㈣繋浣跨敤PLT-WEB骞冲彴"> - <div> - 1銆佸寳浜畯鍗氳繙杈剧鎶�鏈夐檺鍏徃锛堜互涓嬬畝绉扳�滃畯鍗氳繙杈锯�濓級闀挎湡涓撴敞浜庡埗閫犱笟淇℃伅鍖栧缓璁撅紝涓哄鎴锋彁渚涗紒涓氫俊鎭寲鏁翠綋瑙e喅鏂规鍙婄浉鍏宠蒋浠剁爺鍙戙�佸挩璇㈠強瀹炴柦鏈嶅姟銆傚畯鍗氳繙杈惧鎴风兢浣撴兜鐩栬埅绌恒�佽埅澶┿�佽埞鑸躲�佸叺鍣ㄣ�佹苯杞︺�侀�氱敤鏈烘銆佺數瀛愮瓑鍒堕�犺涓氾紝閫氳繃涓庡鎴锋繁搴﹀悎浣滐紝鎵挎媴浜嗗椤瑰浗瀹剁骇杞欢鐮斿彂涓庢妧鏈湇鍔¢」鐩紝鎷ユ湁澶氶」鍏锋湁鑷富鐭ヨ瘑浜ф潈鐨勮蒋浠朵骇鍝併�� - </div> - <div> - 2銆佷负浜嗙粰瀹㈡埛鎻愪緵鏇村鐨勬妧鏈垱鏂拌兘鍔涘強鐩稿簲鐨勪紒涓氱骇绠$悊鏀拺骞冲彴锛屽畯鍗氳繙杈剧爺鍙戜簡鍏锋湁鑷富鐭ヨ瘑浜ф潈鐨勪紒涓氱骇淇℃伅鍖栨暣浣撹В鍐虫柟妗堬紝鍚屾椂閽堝瀹㈡埛鐨勭壒瀹氶渶姹傦紝鎻愪緵浜嗛珮搴﹀彲瀹氬埗鐨勪笓涓氬簲鐢ㄣ�備负浜嗚繘涓�姝ユ彁鍗囨妧鏈湇鍔¤兘鍔涳紝瀹忓崥杩滆揪鎶曞叆涓撻棬鍔涢噺鍦ㄥ墠娌挎妧鏈柟闈㈣繘琛屾帰绱紝鍦ㄤ紒涓氱鏈変簯璁$畻鍜屽ぇ鏁版嵁绛夐鍩熶笉鏂彇寰楃獊鐮淬�傞殢鐫�鏂颁竴浠d笟鍔′笌绠$悊鎶�鏈钩鍙扮殑鎺ㄥ嚭锛屾洿澧炲己浜嗗叕鍙镐负瀹㈡埛鎻愪緵楂樿川閲忋�佸叏鏂逛綅銆佹繁灞傛鏈嶅姟鐨勬妧鏈兘鍔涖�� - </div> - <div> - 3銆佸畯鍗氳繙杈句竴鐩寸鎵库�滅敤鏅烘収涓哄鎴峰垱閫犱环鍊尖�濈殑瀹楁棬锛屾効浠モ�滆瘹淇¤礋璐b�濈殑鎬佸害鍜屼笓涓氬寲鐨勬湇鍔★紝鍦ㄤ紒涓氫俊鎭寲鍙戝睍鐨勯亾璺笂锛屼笌瀹㈡埛涓�璧锋垚闀匡紝鍏卞悓瑙佽瘉鎴愬姛锛� - </div> - </el-collapse-item> - - <el-collapse-item name="2" title="鏈嶅姟璁″垝鍒跺畾"> - <div> - 1銆佹牴鎹鎴峰疄闄呴渶姹傦紝瀹忓崥杩滆揪灏嗕笌瀹㈡埛鍏卞悓鍒跺畾骞村害鏈嶅姟璁″垝锛屽晢瀹氬叿浣撶殑鏈嶅姟瀵硅薄銆佹湇鍔″唴瀹广�佸畾鏈熺淮鎶ょ殑鏈嶅姟鏃堕棿銆佹妧鏈氦娴佺殑涓婚銆佸叿浣撶殑缁存姢浜哄憳瀹夋帓绛夋湇鍔$粏鑺傘�� - </div> - <div> - 2銆佸鎴峰彲閫氳繃鐢佃瘽銆佺數瀛愰偖浠躲�佸嚱浠剁瓑鏂瑰紡鍙栧緱绯荤粺鎶�鏈敮鎸併�傚浜庣郴缁熶互澶栫殑闂锛屾垜浠細灏藉姏鍗忓姪瀹㈡埛鎵惧埌瑙e喅閫斿緞銆� - </div> - <div> - 3銆佸浜庤繙绋嬫棤娉曡В鍐崇殑鏁呴殰(闂)锛屽畯鍗氳繙杈惧伐绋嬪笀灏嗗湪鍚堝悓瑙勫畾鐨勬椂闂村唴鍒拌揪瀹㈡埛鐜板満杩涜鏁呴殰璇婃柇鍙婂鐞嗭紝鍋氬ソ鐩稿簲鐨勮褰曘�傚繀瑕佹椂闇�瑕侀噸鏂版敹闆嗙郴缁熶俊鎭紝骞跺綊妗c�傚浜庨潪绯荤粺鐨勫師鍥犺�屽紩璧风殑鏁呴殰(闂)锛屽畯鍗氳繙杈惧皢鍏冲績鍜屽崗鍔╁鎴疯В鍐虫晠闅�(闂)銆� - </div> - <div> - 4銆佸湪鍏朵粬鎯呭舰涓嬶紝瀹忓崥杩滆揪涔熷彲鎻愪緵蹇呰鐨勭幇鍦烘湇鍔°�傚涓哄鎴疯幏寰楃殑鍚堟硶鎿嶄綔绯荤粺杩涜鍗囩骇鏈嶅姟銆佷负瀹㈡埛瀹夎蹇呰鐨勮蒋浠剁瓑鐨勬湇鍔°�侀厤鍚堝鎴峰仛涓绘満绯荤粺鏂归潰鐨勬祴璇曘�佷负瀹㈡埛鐨勫簲鐢ㄨ皟鏁存彁渚涚郴缁熸柟闈㈢殑鏀寔绛夌瓑銆� - </div> - <div> - 5銆佸畯鍗氳繙杈捐繕灏嗕负瀹㈡埛鎻愪緵瀹氭湡鐨勭郴缁熸�ц兘璇勪及涓庝紭鍖栨湇鍔°�傞�氳繃瀵圭郴缁熻繍琛屾暟鎹殑娣卞叆鍒嗘瀽锛屾垜浠皢璇嗗埆娼滃湪鐨勬�ц兘鐡堕锛屾彁鍑洪拡瀵规�х殑浼樺寲寤鸿锛屽苟鍗忓姪瀹㈡埛瀹炴柦浼樺寲鎺柦銆傝繖鍖呮嫭浣嗕笉闄愪簬纭欢璧勬簮鐨勫悎鐞嗛厤缃�佽蒋浠跺弬鏁扮殑璋冧紭銆佹暟鎹簱鎬ц兘鐨勬彁鍗囩瓑锛屾棬鍦ㄧ‘淇濈郴缁熻兘澶熸寔缁ǔ瀹氥�侀珮鏁堝湴杩愯锛屾弧瓒冲鎴风殑涓氬姟鍙戝睍闇�姹傘�傚悓鏃讹紝鎴戜滑涔熷皢鏍规嵁绯荤粺璇勪及缁撴灉锛屼负瀹㈡埛鎻愪緵鏈潵鐨勭郴缁熷崌绾у拰鎵╁睍瑙勫垝寤鸿锛屽府鍔╁鎴锋彁鍓嶅竷灞�锛屽簲瀵规湭鏉ョ殑涓氬姟澧為暱鍜屾妧鏈彉闈┿�� - </div> - </el-collapse-item> - </el-collapse> - </basic-container> - </el-col> - <el-col :span="8" style="height: 560px"> - <el-row> - <basic-container> - <div class="el-font-size"> - <span>浜у搧鍚嶇О</span> - <el-divider direction="vertical"/> - <span><el-tag>PLT-WEB骞冲彴</el-tag></span> - <el-divider content-position="right"><i class="el-icon-star-off"/></el-divider> - - <span>褰撳墠鐢ㄦ埛</span> - <el-divider direction="vertical"/> - <span><el-tag type="success">{{ userInfo.userName }}</el-tag></span> - <el-divider content-position="right"><i class="el-icon-star-off"/></el-divider> - - <span>璇存槑鏂囨。</span> - <el-divider direction="vertical"/> - <span> - <el-link href="https://bladex.vip" target="_blank" - type="primary">https://bladex.vip - </el-link> - </span> - <el-divider content-position="right"><i class="el-icon-star-off"/></el-divider> - - </div> - </basic-container> - <basic-container> - <div style="height: 309px"> - <v-chart id="chart" :auto-resize="true" :options="chartOptions"></v-chart> - </div> - </basic-container> - </el-row> - - </el-col> - </el-row> + <component :is="showComponent"></component> </div> </template> <script> import {mapGetters} from "vuex"; -import {getLogListByContion} from "@/api/system/log/logBasic"; -import 'echarts' -import 'echarts/lib/chart/pie' // 瀵煎叆鏌辩姸鍥剧粍浠� -import 'echarts/lib/component/tooltip' -import 'echarts/lib/component/legend' -import func from "@/util/func"; +import adminIndex from './adminIndex.vue'; +import workIndex from './workIndex.vue'; export default { name: "wel", + components:{adminIndex,workIndex}, data() { return { - loading: false, - activeNames: ['1', '2', '3', '5'], - logActiveNames: ['28'], - topOption: { - data: [] - }, - chartOptions: { - title: { - text: '', - }, - tooltip: { - trigger: 'item' - }, - legend: { - top: '5%', - left: 'center' - }, - series: [ - { - name: '鏃ュ織缁熻', - type: 'pie', - radius: ['45%', '70%'], - avoidLabelOverlap: false, - padAngle: 5, - itemStyle: { - borderRadius: 10, - normal: { - color: function (colors) { - const colorList = ['rgb(230, 71, 88)', 'rgb(178, 159, 255)', 'rgb(27, 201, 142)']; - return colorList[colors.dataIndex]; - } - } - }, - label: { - show: false, - position: 'center' - }, - emphasis: { - label: { - show: true, - fontSize: 14, - fontWeight: 'bold' - } - }, - labelLine: { - show: false - }, - data: [] - } - ] - } + showComponent: null, // 鍒濆涓嶆樉绀轰换浣曠粍浠� }; }, computed: { ...mapGetters(["userInfo"]), }, + watch: { + 'userInfo.userId'() { + //鏄鐞嗗憳杩涘叆绠$悊鍛橀椤� + if(this.userInfo.userId.includes('admin')){ + this.showComponent=adminIndex; + }else { + this.showComponent=workIndex; + } + } + }, created() { - this.getLogHandler(); + //鏄鐞嗗憳杩涘叆绠$悊鍛橀椤� + if(this.userInfo.userId.includes('admin')){ + this.showComponent=adminIndex; + }else { + this.showComponent=workIndex; + } }, methods: { - getLogHandler() { - this.loading = true; - // 鏃ュ織璇锋眰鍜屽睍绀虹殑鐩稿叧鐨勯厤缃� - const logConfig = [ - { - logType: "1", - logName: "鐧诲綍鏃ュ織缁熻", - text: "褰撳墠鐧诲綍鏃ュ織鎬昏褰曟暟", - color: 'rgb(230, 71, 88)', - router: '/LogInfoMain?logType=1&roleType=2' - }, - { - logType: "3", - logName: "鎺堟潈鏃ュ織缁熻", - text: "褰撳墠鎺堟潈鏃ュ織鎬昏褰曟暟", - color: 'rgb(178, 159, 255)', - router: '/LogAuthorizeMain?logType=3&roleType=2' - }, - { - logType: "4", - logName: "鎿嶄綔鏃ュ織缁熻", - text: "褰撳墠鎿嶄綔鏃ュ織鎬昏褰曟暟", - color: 'rgb(27, 201, 142)', - router: '/LogOperateMain?logType=4&roleType=2' - }, - ]; - - const roleType = "2"; - - const requests = logConfig.map(config => getLogListByContion(1, -1, {logType: config.logType, roleType})); - - Promise.all(requests).then(responses => { - // 璁$畻涓変釜鏃ュ織鐨勬�诲拰 - const totalCount = responses.reduce((sum, res) => sum + (res.data.total || 0), 0); - - this.topOption.data = responses.map((res, index) => ({ - title: logConfig[index].logName, - text: logConfig[index].text, - color: logConfig[index].color, - subtitle: '瀹炴椂', - count: res.data.total, - allcount: `鏃ュ織鎬绘暟锛�${totalCount}`, - key: '鏃ュ織', - click: () => this.$router.push({path: logConfig[index].router}), - })); - - const chartData = responses.map((res, index) => ({ - name: logConfig[index].logName, - value: res.data.total, - })); - this.$set(this.chartOptions.series[0], 'data', chartData); - - this.loading = false; - }).catch(error => { - this.$message.error(error); - this.loading = false; - }); - } }, }; </script> diff --git a/Source/plt-web/plt-web-ui/src/views/wel/workIndex.vue b/Source/plt-web/plt-web-ui/src/views/wel/workIndex.vue index 69a16ca..8718080 100644 --- a/Source/plt-web/plt-web-ui/src/views/wel/workIndex.vue +++ b/Source/plt-web/plt-web-ui/src/views/wel/workIndex.vue @@ -1,22 +1,35 @@ <template> <div> <el-row> - <el-col v-for="item in homeData" :span="item.span"> - <component :is="item.currentComponent" :key="item.component"></component> + <el-col v-for="item in homeData" :span="item.span" :xs="24"> + <component :height="height*item.height" :is="item.component" :key="item.component" :title="item.title" :icon="item.icon"></component> </el-col> </el-row> </div> </template> <script> +import UndoTaskPortlet from './components/UndoTaskPortlet.vue'; +import taskPortlet from './components/taskPortlet.vue'; +import test from './components/test.vue'; export default { name: "workIndex", - components:{}, + components:{UndoTaskPortlet,taskPortlet,test}, data(){ return { + height:document.body.clientHeight-115, homeData:[{ component:'UndoTaskPortlet', - span:24 + height:0.4, + span:16 + },{ + component:'taskPortlet', + height:0.3, + span:5 + },{ + component:'test', + height:0.6, + span:12 }] } }, @@ -25,20 +38,6 @@ }, methods:{ initData() { - this.homeData.map(item => { - this.loadCompoent(item); - return item; - }) - }, - loadCompoent(item){ - // 鍔ㄦ�佸鍏ョ粍浠� - import(`@/views/wel/components/${item.component}.vue`).then((module) => { - // 鎴愬姛瀵煎叆鍚庯紝灏嗙粍浠舵敞鍐屽埌Vue瀹炰緥涓� - item.currentComponent = module.default; - }).catch((error) => { - // 澶勭悊瀵煎叆澶辫触鐨勬儏鍐� - console.log('缁勪欢鍔犺浇澶辫触:', error); - }); }, } } -- Gitblit v1.9.3