| | |
| | | </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> |
| | |
| | | <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"> |
| | |
| | | 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, |
| | |
| | | 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 |
| | | } |
| | | } |
| | | ] |
| | |
| | | }, |
| | | component: () => |
| | | import( /* webpackChunkName: "views" */ '@/views/wel/index') |
| | | },{ |
| | | path: 'workIndex', |
| | | name: 'å·¥ä½å°', |
| | | meta: { |
| | | i18n: 'work' |
| | | }, |
| | | component: () => |
| | | import( /* webpackChunkName: "views" */ '@/views/wel/workIndex') |
| | | }, { |
| | | path: 'dashboard', |
| | | name: 'æ§å¶å°', |
| | |
| | | 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') |
| | | }] |
| | | } ] |
| | |
| | | checkedTypes:[], |
| | | searchText:'', |
| | | activeName:'', |
| | | iconValue:'iconoir2:adobe-illustrator', |
| | | allIconList:[], |
| | | iconList:[], |
| | | visible: false, |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <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ãå京å®åè¿è¾¾ç§ææéå
¬å¸ï¼ä»¥ä¸ç®ç§°âå®åè¿è¾¾âï¼é¿æä¸æ³¨äºå¶é ä¸ä¿¡æ¯å建设ï¼ä¸ºå®¢æ·æä¾ä¼ä¸ä¿¡æ¯åæ´ä½è§£å³æ¹æ¡åç¸å
³è½¯ä»¶ç åãå¨è¯¢å宿½æå¡ãå®åè¿è¾¾å®¢æ·ç¾¤ä½æ¶µçèªç©ºãèªå¤©ãè¹è¶ãå
µå¨ã汽车ãéç¨æºæ¢°ãçµåçå¶é è¡ä¸ï¼éè¿ä¸å®¢æ·æ·±åº¦åä½ï¼æ¿æ
äºå¤é¡¹å½å®¶çº§è½¯ä»¶ç åä¸ææ¯æå¡é¡¹ç®ï¼æ¥æå¤é¡¹å
·æèªä¸»ç¥è¯äº§æç软件产åã |
| | | </div> |
| | | <div> |
| | | 2ã为äºç»å®¢æ·æä¾æ´å¤çææ¯åæ°è½ååç¸åºçä¼ä¸çº§ç®¡çæ¯æå¹³å°ï¼å®åè¿è¾¾ç åäºå
·æèªä¸»ç¥è¯äº§æçä¼ä¸çº§ä¿¡æ¯åæ´ä½è§£å³æ¹æ¡ï¼åæ¶é对客æ·çç¹å®éæ±ï¼æä¾äºé«åº¦å¯å®å¶çä¸ä¸åºç¨ã为äºè¿ä¸æ¥æåææ¯æå¡è½åï¼å®åè¿è¾¾æå
¥ä¸é¨åéå¨åæ²¿ææ¯æ¹é¢è¿è¡æ¢ç´¢ï¼å¨ä¼ä¸ç§æäºè®¡ç®åå¤§æ°æ®çé¢å䏿åå¾çªç ´ãéçæ°ä¸ä»£ä¸å¡ä¸ç®¡çææ¯å¹³å°çæ¨åºï¼æ´å¢å¼ºäºå
¬å¸ä¸ºå®¢æ·æä¾é«è´¨éãå
¨æ¹ä½ãæ·±å±æ¬¡æå¡çææ¯è½åã |
| | | </div> |
| | | <div> |
| | | 3ãå®åè¿è¾¾ä¸ç´ç§æ¿âç¨æºæ
§ä¸ºå®¢æ·åé ä»·å¼âç宿¨ï¼æ¿ä»¥âè¯ä¿¡è´è´£âçæåº¦åä¸ä¸åçæå¡ï¼å¨ä¼ä¸ä¿¡æ¯ååå±çéè·¯ä¸ï¼ä¸å®¢æ·ä¸èµ·æé¿ï¼å
±åè§è¯æåï¼ |
| | | </div> |
| | | </el-collapse-item> |
| | | |
| | | <el-collapse-item name="2" title="æå¡è®¡åå¶å®"> |
| | | <div> |
| | | 1ãæ ¹æ®å®¢æ·å®é
éæ±ï¼å®åè¿è¾¾å°ä¸å®¢æ·å
±åå¶å®å¹´åº¦æå¡è®¡åï¼åå®å
·ä½çæå¡å¯¹è±¡ãæå¡å
容ãå®æç»´æ¤çæå¡æ¶é´ãææ¯äº¤æµç主é¢ãå
·ä½çç»´æ¤äººå宿çæå¡ç»èã |
| | | </div> |
| | | <div> |
| | | 2ã客æ·å¯éè¿çµè¯ãçµåé®ä»¶ãå½ä»¶çæ¹å¼åå¾ç³»ç»ææ¯æ¯æã对äºç³»ç»ä»¥å¤çé®é¢ï¼æä»¬ä¼å°½ååå©å®¢æ·æ¾å°è§£å³éå¾ã |
| | | </div> |
| | | <div> |
| | | 3ã对äºè¿ç¨æ æ³è§£å³çæ
é(é®é¢)ï¼å®åè¿è¾¾å·¥ç¨å¸å°å¨ååè§å®çæ¶é´å
å°è¾¾å®¢æ·ç°åºè¿è¡æ
éè¯æåå¤çï¼å好ç¸åºçè®°å½ãå¿
è¦æ¶éè¦éæ°æ¶éç³»ç»ä¿¡æ¯ï¼å¹¶å½æ¡£ã对äºéç³»ç»çåå èå¼èµ·çæ
é(é®é¢)ï¼å®åè¿è¾¾å°å
³å¿ååå©å®¢æ·è§£å³æ
é(é®é¢)ã |
| | | </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> |
| | | |
| | |
| | | <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" |
| | |
| | | <script> |
| | | export default { |
| | | name: "UndoTaskPortlet", |
| | | props:{ |
| | | height: { |
| | | type: Number |
| | | }, |
| | | title: { |
| | | type: String |
| | | }, |
| | | icon: { |
| | | type: String |
| | | } |
| | | }, |
| | | data(){ |
| | | return { |
| | | loading: false, |
| | |
| | | todoData: [], |
| | | // 代念ç¨ä»»å¡option |
| | | todoOption: { |
| | | height: 500, |
| | | height: 'auto', |
| | | addBtn: false, |
| | | header: false, |
| | | align: 'center', |
| | |
| | | }, |
| | | 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; |
| | |
| | | this.$message.error(error); |
| | | this.loading = false; |
| | | }) |
| | | |
| | | */ |
| | | }, |
| | | cellHandle(row, column, cell, event) { |
| | | if (column.property == 'taskName') { |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <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> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <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> |
| | |
| | | <template> |
| | | <!-- ä¸å¡ç®¡ç é¦é¡µé
ç½® --> |
| | | <basic-container> |
| | | <avue-crud |
| | | ref="crud" |
| | |
| | | </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"> |
| | |
| | | <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ãå京å®åè¿è¾¾ç§ææéå
¬å¸ï¼ä»¥ä¸ç®ç§°âå®åè¿è¾¾âï¼é¿æä¸æ³¨äºå¶é ä¸ä¿¡æ¯å建设ï¼ä¸ºå®¢æ·æä¾ä¼ä¸ä¿¡æ¯åæ´ä½è§£å³æ¹æ¡åç¸å
³è½¯ä»¶ç åãå¨è¯¢å宿½æå¡ãå®åè¿è¾¾å®¢æ·ç¾¤ä½æ¶µçèªç©ºãèªå¤©ãè¹è¶ãå
µå¨ã汽车ãéç¨æºæ¢°ãçµåçå¶é è¡ä¸ï¼éè¿ä¸å®¢æ·æ·±åº¦åä½ï¼æ¿æ
äºå¤é¡¹å½å®¶çº§è½¯ä»¶ç åä¸ææ¯æå¡é¡¹ç®ï¼æ¥æå¤é¡¹å
·æèªä¸»ç¥è¯äº§æç软件产åã |
| | | </div> |
| | | <div> |
| | | 2ã为äºç»å®¢æ·æä¾æ´å¤çææ¯åæ°è½ååç¸åºçä¼ä¸çº§ç®¡çæ¯æå¹³å°ï¼å®åè¿è¾¾ç åäºå
·æèªä¸»ç¥è¯äº§æçä¼ä¸çº§ä¿¡æ¯åæ´ä½è§£å³æ¹æ¡ï¼åæ¶é对客æ·çç¹å®éæ±ï¼æä¾äºé«åº¦å¯å®å¶çä¸ä¸åºç¨ã为äºè¿ä¸æ¥æåææ¯æå¡è½åï¼å®åè¿è¾¾æå
¥ä¸é¨åéå¨åæ²¿ææ¯æ¹é¢è¿è¡æ¢ç´¢ï¼å¨ä¼ä¸ç§æäºè®¡ç®åå¤§æ°æ®çé¢å䏿åå¾çªç ´ãéçæ°ä¸ä»£ä¸å¡ä¸ç®¡çææ¯å¹³å°çæ¨åºï¼æ´å¢å¼ºäºå
¬å¸ä¸ºå®¢æ·æä¾é«è´¨éãå
¨æ¹ä½ãæ·±å±æ¬¡æå¡çææ¯è½åã |
| | | </div> |
| | | <div> |
| | | 3ãå®åè¿è¾¾ä¸ç´ç§æ¿âç¨æºæ
§ä¸ºå®¢æ·åé ä»·å¼âç宿¨ï¼æ¿ä»¥âè¯ä¿¡è´è´£âçæåº¦åä¸ä¸åçæå¡ï¼å¨ä¼ä¸ä¿¡æ¯ååå±çéè·¯ä¸ï¼ä¸å®¢æ·ä¸èµ·æé¿ï¼å
±åè§è¯æåï¼ |
| | | </div> |
| | | </el-collapse-item> |
| | | |
| | | <el-collapse-item name="2" title="æå¡è®¡åå¶å®"> |
| | | <div> |
| | | 1ãæ ¹æ®å®¢æ·å®é
éæ±ï¼å®åè¿è¾¾å°ä¸å®¢æ·å
±åå¶å®å¹´åº¦æå¡è®¡åï¼åå®å
·ä½çæå¡å¯¹è±¡ãæå¡å
容ãå®æç»´æ¤çæå¡æ¶é´ãææ¯äº¤æµç主é¢ãå
·ä½çç»´æ¤äººå宿çæå¡ç»èã |
| | | </div> |
| | | <div> |
| | | 2ã客æ·å¯éè¿çµè¯ãçµåé®ä»¶ãå½ä»¶çæ¹å¼åå¾ç³»ç»ææ¯æ¯æã对äºç³»ç»ä»¥å¤çé®é¢ï¼æä»¬ä¼å°½ååå©å®¢æ·æ¾å°è§£å³éå¾ã |
| | | </div> |
| | | <div> |
| | | 3ã对äºè¿ç¨æ æ³è§£å³çæ
é(é®é¢)ï¼å®åè¿è¾¾å·¥ç¨å¸å°å¨ååè§å®çæ¶é´å
å°è¾¾å®¢æ·ç°åºè¿è¡æ
éè¯æåå¤çï¼å好ç¸åºçè®°å½ãå¿
è¦æ¶éè¦éæ°æ¶éç³»ç»ä¿¡æ¯ï¼å¹¶å½æ¡£ã对äºéç³»ç»çåå èå¼èµ·çæ
é(é®é¢)ï¼å®åè¿è¾¾å°å
³å¿ååå©å®¢æ·è§£å³æ
é(é®é¢)ã |
| | | </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> |
| | |
| | | <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 |
| | | }] |
| | | } |
| | | }, |
| | |
| | | }, |
| | | 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); |
| | | }); |
| | | }, |
| | | } |
| | | } |