9.23前后端代码提交

详情见周总结
This commit is contained in:
hky 2023-09-23 10:50:31 +08:00
parent 425a9ccca8
commit 3d9007ecc1
118 changed files with 3560 additions and 538 deletions

View File

@ -1,5 +1,5 @@
NODE_ENV=development
VUE_APP_API_BASE_URL=http://localhost:8080/jeecg-boot
VUE_APP_API_BASE_URL=http://192.168.0.7:8080/jeecg-boot
VUE_APP_CAS_BASE_URL=http://cas.example.org:8443/cas
VUE_APP_ONLINE_BASE_URL=http://fileview.jeecg.com/onlinePreview

View File

@ -1,44 +1,44 @@
<template>
<a-config-provider :locale="locale">
<div id="app">
<router-view/>
<router-view />
</div>
</a-config-provider>
</template>
<script>
import zhCN from 'ant-design-vue/lib/locale-provider/zh_CN'
import enquireScreen from '@/utils/device'
import zhCN from 'ant-design-vue/lib/locale-provider/zh_CN'
import enquireScreen from '@/utils/device'
export default {
data () {
return {
locale: zhCN,
}
},
created () {
let that = this
enquireScreen(deviceType => {
// tablet
if (deviceType === 0) {
that.$store.commit('TOGGLE_DEVICE', 'mobile')
that.$store.dispatch('setSidebar', false)
}
// mobile
else if (deviceType === 1) {
that.$store.commit('TOGGLE_DEVICE', 'mobile')
that.$store.dispatch('setSidebar', false)
}
else {
that.$store.commit('TOGGLE_DEVICE', 'desktop')
that.$store.dispatch('setSidebar', true)
}
})
export default {
data() {
return {
locale: zhCN,
}
},
created() {
let that = this
enquireScreen(deviceType => {
// tablet
if (deviceType === 0) {
that.$store.commit('TOGGLE_DEVICE', 'mobile')
that.$store.dispatch('setSidebar', false)
}
// mobile
else if (deviceType === 1) {
that.$store.commit('TOGGLE_DEVICE', 'mobile')
that.$store.dispatch('setSidebar', false)
}
else {
that.$store.commit('TOGGLE_DEVICE', 'desktop')
that.$store.dispatch('setSidebar', true)
}
})
}
}
</script>
<style>
#app {
height: 100%;
}
#app {
height: 100%;
}
</style>

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 46 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 646 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,239 @@
.ant-calendar,
.ant-calendar-panel,
.ant-calendar-header,
.ant-calendar-footer,
.ant-calendar-input-wrap {
background-color: #042b4f !important;
border-color: #1673cb !important;
}
.ant-calendar-column-header-inner,
.ant-calendar-year-select,
.ant-calendar-month-select,
.ant-calendar-date {
color: #fff !important;
}
.ant-calendar-selected-day .ant-calendar-date,
.ant-calendar-date:hover {
background: #1890FF !important;
}
.ant-calendar-input {
background-color: #042b4f !important;
color: #7ba7c6 !important;
}
.ant-calendar-next-month-btn:hover:before,
.ant-calendar-next-year-btn:hover::before,
.ant-calendar-next-year-btn:hover::after,
.ant-calendar-prev-year-btn:hover::before,
.ant-calendar-prev-year-btn:hover::after,
.ant-calendar-prev-month-btn:hover::before {
border-color: #fff !important;
}
.ant-calendar-picker-icon {
color: #1b9ee8 !important;
}
//select
.ant-select-arrow {
color: #00b1ff !important;
}
.ant-select-dropdown-menu-item {
color: #7ba7c6 !important;
}
.ant-select-dropdown-menu-item-selected,
.ant-select-dropdown-menu-item-active {
background-color: #1673cb !important;
}
//ant-tab
.ant-tabs-bar {
border-color: #1673cb !important;
margin: 10px 20px 0px 20px !important;
}
.ant-tabs-nav-wrap
{
margin: 0 !important;
}
.ant-tabs-ink-bar
{
display: none !important;
}
.ant-tabs-nav .ant-tabs-tab {
background-image: linear-gradient(0deg,
#021831 0%,
#064576 60%,
#0971ba 100%),
linear-gradient(#2261a6,
#2261a6);
background-blend-mode: normal,
normal;
border: solid 1px #0a7bc4;
margin: 0 !important;
padding: 6px 31px !important;
color: #9acef7 !important;
}
.ant-tabs-nav .ant-tabs-tab-active {
background-image: linear-gradient(0deg,
#042e5c 0%,
#0262ae 60%,
#0096ff 100%),
linear-gradient(#2261a6,
#2261a6);
background-blend-mode: normal,
normal;
color: #ffffff !important;
}
//input
.ant-select-selection,
.ant-select-dropdown,
.ant-input:not(.logininput) {
background-color: #042b4f !important;
box-shadow: 0px 4px 6px 0px rgba(0, 0, 0, 0.44) !important;
border: solid 1px #1673cb !important;
border-radius: 0 !important;
color: #7ba7c6 !important;
font-size: 16px;
}
.ant-input:hover:not(.logininput) {
background-color: #042b4f !important;
box-shadow: 0px 4px 6px 0px rgba(0, 0, 0, 0.44) !important;
border: solid 1px #1673cb !important;
color: #7ba7c6;
}
.ant-input:focus {
box-shadow: 0px 4px 6px 0px rgba(0, 0, 0, 0.44) !important;
color: #7ba7c6;
}
input:-webkit-autofill {
box-shadow: none !important;
-webkit-text-fill-color: #d32424 !important;
}
.ant-btn-cannel {
width: 60px !important;
height: 30px !important;
background-color: #658199 !important;
border: none !important;
color: #ffffff !important;
border-radius: 0 !important;
}
.ant-btn-ok {
width: 60px !important;
height: 30px !important;
background-color: #1a89e7 !important;
border: none !important;
color: #ffffff !important;
border-radius: 0 !important;
}
.footerButton {
display: flex;
justify-content: center;
align-items: center;
.ant-btn {
margin: 0 10px;
}
}
.ant-table-body table {
border-left: 1px solid #1877d0 !important;
}
.ant-table-tbody tr:nth-child(odd)>th,
.ant-table-tbody tr:nth-child(odd)>td {
background-color: #042b4f;
color: #ffffff;
}
.ant-table-tbody tr:nth-child(even)>th,
.ant-table-tbody tr:nth-child(even)>td {
background-color: #093a68;
color: #ffffff;
}
.ant-table-tbody tr:hover>th,
.ant-table-tbody tr:hover>td {
background-color: #0c4377 !important;
}
.ant-table-placeholder {
background-color: #042b4f !important;
border: 1px solid #1877d0 !important;
border-radius: 0 !important;
}
.ant-table-placeholder .ant-empty-normal {
color: #ffffff !important;
}
.ant-table-align-center,
.ant-table-thead tr th {
background-image: linear-gradient(0deg, #06478a 14%, #00aeff 100%), linear-gradient(#008aff, #008aff) !important;
background-blend-mode: normal,
normal;
color: #ffffff !important;
}
.ant-table-bordered .ant-table-thead>tr>th,
.ant-table-bordered .ant-table-tbody>tr>td,
.ant-table-content .ant-table-thead>tr>th,
.ant-table-content .ant-table-tbody>tr>td {
border-right: 1px solid #1877d0 !important;
border-bottom: 1px solid #1877d0 !important;
line-height: 22px;
font-size: 14px;
border-radius: 0 !important;
}
/* 滚动条优化 start */
::-webkit-scrollbar {
width: 10px;
height: 8px;
}
::-webkit-scrollbar-track {
background: #3a3d4e;
border-radius: 2px;
}
::-webkit-scrollbar-thumb {
background: #717483;
border-radius: 10px;
}
::-webkit-scrollbar-thumb:hover {
background: #717483;
}
::-webkit-scrollbar-corner {
background: #3a3d4e;
}
/* 滚动条优化 end */
.ant-col {
margin-bottom: 6px;
}
body {
// 打开滚动条固定显示
overflow-y: hidden;
&.colorWeak {
filter: invert(80%);
}
}

View File

@ -3,7 +3,7 @@
<!-- update-begin- author:sunjianlei --- date:20191009 --- for: 提升右键菜单的层级 -->
<contextmenu :itemList="menuItemList" :visible.sync="menuVisible" style="z-index: 9999;" @select="onMenuSelect"/>
<!-- update-end- author:sunjianlei --- date:20191009 --- for: 提升右键菜单的层级 -->
<a-tabs
<!-- <a-tabs
@contextmenu.native="e => onContextmenu(e)"
v-if="multipage"
:active-key="activePage"
@ -17,8 +17,8 @@
<a-tab-pane :id="page.fullPath" :key="page.fullPath" v-for="page in pageList" :closable="!(page.meta.title=='首页')">
<span slot="tab" :pagekey="page.fullPath">{{ page.meta.title }}</span>
</a-tab-pane>
</a-tabs>
<div style="margin: 12px 12px 0;">
</a-tabs> -->
<div>
<!-- update-begin-author:taoyan date:20201221 for:此处删掉transition标签 不知道为什么加上后 页面路由切换的时候即1及菜单切到2及菜单的时候 两个菜单页面会同时出现300-500秒左右 -->
<keep-alive v-if="multipage">
<router-view v-if="reloadFlag"/>

View File

@ -1,150 +1,35 @@
<template>
<div id="userLayout" :class="['user-layout-wrapper', device]">
<div class="container">
<div class="top">
<div class="header">
<a href="/">
<img src="~@/assets/logo.svg" class="logo" alt="logo">
<span class="title">Jeecg Boot</span>
</a>
</div>
<div class="desc">
Jeecg Boot 是中国最具影响力的 企业级 低代码平台
</div>
</div>
<route-view></route-view>
<div class="footer">
<div class="links">
<a href="http://doc.jeecg.com" target="_blank">帮助</a>
<a href="https://github.com/zhangdaiscott/jeecg-boot" target="_blank">隐私</a>
<a href="https://github.com/zhangdaiscott/jeecg-boot/blob/master/LICENSE" target="_blank">条款</a>
</div>
<div class="copyright">
Copyright &copy; 2019 <a href="http://www.jeecg.com" target="_blank">JEECG开源社区</a> 出品
</div>
</div>
</div>
</div>
</template>
<script>
import RouteView from "@/components/layouts/RouteView"
import { mixinDevice } from '@/utils/mixin.js'
import RouteView from "@/components/layouts/RouteView"
import { mixinDevice } from '@/utils/mixin.js'
export default {
name: "UserLayout",
components: { RouteView },
mixins: [mixinDevice],
data () {
return {}
},
mounted () {
document.body.classList.add('userLayout')
},
beforeDestroy () {
document.body.classList.remove('userLayout')
},
}
export default {
name: "UserLayout",
components: { RouteView },
mixins: [mixinDevice],
data() {
return {}
},
mounted() {
document.body.classList.add('userLayout')
},
beforeDestroy() {
document.body.classList.remove('userLayout')
},
}
</script>
<style lang="less" scoped>
#userLayout.user-layout-wrapper {
height: 100%;
&.mobile {
.container {
.main {
max-width: 368px;
width: 98%;
}
}
}
.container {
width: 100%;
min-height: 100%;
background: #f0f2f5 url(~@/assets/background.svg) no-repeat 50%;
background-size: 100%;
padding: 110px 0 144px;
position: relative;
a {
text-decoration: none;
}
.top {
text-align: center;
.header {
height: 44px;
line-height: 44px;
.badge {
position: absolute;
display: inline-block;
line-height: 1;
vertical-align: middle;
margin-left: -12px;
margin-top: -10px;
opacity: 0.8;
}
.logo {
height: 44px;
vertical-align: top;
margin-right: 16px;
border-style: none;
}
.title {
font-size: 33px;
color: rgba(0, 0, 0, .85);
font-family: "Chinese Quote", -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";
font-weight: 600;
position: relative;
top: 2px;
}
}
.desc {
font-size: 14px;
color: rgba(0, 0, 0, 0.45);
margin-top: 12px;
margin-bottom: 40px;
}
}
.main {
min-width: 260px;
width: 368px;
margin: 0 auto;
}
.footer {
position: absolute;
width: 100%;
bottom: 0;
padding: 0 16px;
margin: 48px 0 24px;
text-align: center;
.links {
margin-bottom: 8px;
font-size: 14px;
a {
color: rgba(0, 0, 0, 0.45);
transition: all 0.3s;
&:not(:last-child) {
margin-right: 40px;
}
}
}
.copyright {
color: rgba(0, 0, 0, 0.45);
font-size: 14px;
}
}
}
}
<style lang="less">
@import "~@assets/less/sulesss.less";
#userLayout {
height: 100%;
background-image: url(~@/assets/imgs/bg/lgBg.jpg);
}
</style>

View File

@ -1,64 +1,10 @@
<template>
<a-layout class="layout" :class="[device]">
<template v-if="layoutMode === 'sidemenu'">
<a-drawer
v-if="device === 'mobile'"
:wrapClassName="'drawer-sider ' + navTheme"
placement="left"
@close="() => this.collapsed = false"
:closable="false"
:visible="collapsed"
width="200px"
>
<side-menu
mode="inline"
v-if="device === 'mobile'"
:menus="menus"
@menuSelect="menuSelect"
@updateMenuTitle="handleUpdateMenuTitle"
:theme="navTheme"
:collapsed="false"
:collapsible="true"></side-menu>
</a-drawer>
<side-menu
v-show="device === 'desktop'"
mode="inline"
:menus="menus"
@menuSelect="myMenuSelect"
@updateMenuTitle="handleUpdateMenuTitle"
:theme="navTheme"
:collapsed="collapsed"
:collapsible="true"></side-menu>
</template>
<!-- 下次优化这些代码 -->
<template v-else>
<a-drawer
v-if="device === 'mobile'"
:wrapClassName="'drawer-sider ' + navTheme"
placement="left"
@close="() => this.collapsed = false"
:closable="false"
:visible="collapsed"
width="200px"
>
<side-menu
mode="inline"
:menus="menus"
@menuSelect="menuSelect"
@updateMenuTitle="handleUpdateMenuTitle"
:theme="navTheme"
:collapsed="false"
:collapsible="true"></side-menu>
</a-drawer>
</template>
<a-layout
:class="[layoutMode, `content-width-${contentWidth}`]"
:style="{ paddingLeft: fixSiderbar && isDesktop() ? `${sidebarOpened ? 200 : 80}px` : '0' }">
<!-- layout header -->
<global-header
<!-- <global-header
:mode="layoutMode"
:menus="menus"
:theme="navTheme"
@ -66,17 +12,13 @@
:device="device"
@toggle="toggle"
@updateMenuTitle="handleUpdateMenuTitle"
/>
/> -->
<!-- layout content -->
<a-layout-content :style="{ height: '100%', paddingTop: fixedHeader ? '59px' : '0' }">
<slot></slot>
</a-layout-content>
<!-- layout footer -->
<a-layout-footer style="padding: 0px">
<global-footer/>
</a-layout-footer>
</a-layout>
<!-- update-start---- author:os_chengtgen -- date:20190830 -- for:issues/463 -编译主题颜色已生效但还一直转圈显示主题 正在编译 ---- -->

View File

@ -13,7 +13,7 @@
</template>
<script>
import { mixin } from '@/utils/mixin.js'
import { mixin } from '@/utils/mixin.js'
export default {
name: 'Logo',

View File

@ -1,41 +1,384 @@
<template>
<div>
<index-chart v-if="indexStyle==1"></index-chart>
<index-bdc v-if="indexStyle==2"></index-bdc>
<index-task v-if="indexStyle==3"></index-task>
<div style="width: 100%;text-align: right;margin-top: 20px">
请选择首页样式
<a-radio-group v-model="indexStyle">
<a-radio :value="1">统计图表</a-radio>
<a-radio :value="2">统计图表2</a-radio>
<a-radio :value="3">任务表格</a-radio>
</a-radio-group>
<div id="homePage">
<div class="bgTop">
<img src="@/assets/imgs/bg/bgTop.png" />
<div class="logo">
<img src="@/assets/imgs/logo.png" />
<div class="centerTitle">{{ content_word.centerTitle }}</div>
</div>
<div class="menuTop">
<div @click="selectMenu('t', 1)" :class="selectMenuIdT == 1 ? 'select menuBgL clickmode' : 'menuBgL clickmode'">
<img src="@/assets/imgs/icon1.png" /><label>{{ content_word.modalname1 }}</label>
</div>
<div @click="selectMenu('t', 2)" :class="selectMenuIdT == 2 ? 'select menuBgL clickmode' : 'menuBgL clickmode'">
<img src="@/assets/imgs/icon2.png" /><label>{{ content_word.modalname2 }}</label>
</div>
<div @click="selectMenu('t', 3)" :class="selectMenuIdT == 3 ? 'select menuBgL clickmode' : 'menuBgL clickmode'">
<img src="@/assets/imgs/icon3.png" /><label>{{ content_word.modalname3 }}</label>
</div>
<div @click="selectMenu('t', 6)" :class="selectMenuIdT == 6 ? 'select menuBgR clickmode' : 'menuBgR clickmode'">
<img src="@/assets/imgs/icon6.png" /><label>{{ content_word.modalname6 }}</label>
</div>
<div @click="selectMenu('t', 5)" :class="selectMenuIdT == 5 ? 'select menuBgR clickmode' : 'menuBgR clickmode'">
<img src="@/assets/imgs/icon5.png" /><label>{{ content_word.modalname5 }}</label>
</div>
<div @click="selectMenu('t', 4)" :class="selectMenuIdT == 4 ? 'select menuBgR clickmode' : 'menuBgR clickmode'">
<img src="@/assets/imgs/icon4.png" /><label>{{ content_word.modalname4 }}</label>
</div>
</div>
<div class="logout" @click="handleLogout">
<img src="@/assets/imgs/usericon.png" /><label>退出登录</label>
</div>
</div>
<div class="mainBg">
<div class="overMpdal"><overview-modal ref="overForm" class="overview"></overview-modal></div>
<div class="bgBottom">
<img src="@/assets/imgs/bg/bgBottom.png" />
<div class="menuBottom">
<div @click="selectMenu('b', 1)" :class="selectMenuIdB == 1 ? 'select clickmode' : ' clickmode'"><img
src="@/assets/imgs/menu1.png" /></div>
<div @click="selectMenu('b', 2)" :class="selectMenuIdB == 2 ? 'select clickmode' : ' clickmode'"><img
src="@/assets/imgs/menu2.png" /></div>
<div @click="selectMenu('b', 3)" :class="selectMenuIdB == 3 ? 'select clickmode' : ' clickmode'"><img
src="@/assets/imgs/menu3.png" /></div>
<div @click="selectMenu('b', 4)" :class="selectMenuIdB == 4 ? 'select clickmode' : ' clickmode'"><img
src="@/assets/imgs/menu4.png" /></div>
<div @click="selectMenu('b', 5)" :class="selectMenuIdB == 5 ? 'select clickmode' : ' clickmode'"><img
src="@/assets/imgs/menu5.png" /></div>
<div @click="selectMenu('b', 6)" :class="selectMenuIdB == 6 ? 'select clickmode' : ' clickmode'"><img
src="@/assets/imgs/menu6.png" /></div>
</div>
</div>
<div class="bgBottom2" v-show="selectMenuIdB == 4">
<img src="@/assets/imgs/bg/menu2Bg.png" />
<div class="menuBottom2">
<img class="clickmode" @click="selectMenu('b', 11)" src="@/assets/imgs/menu2/data1.png" />
<img class="clickmode" @click="selectMenu('b', 12)" src="@/assets/imgs/menu2/data2.png" />
<img class="clickmode" @click="selectMenu('b', 13)" src="@/assets/imgs/menu2/data3.png" />
<img class="clickmode" @click="selectMenu('b', 14)" src="@/assets/imgs/menu2/data4.png" />
<img class="clickmode" @click="selectMenu('b', 15)" src="@/assets/imgs/menu2/data5.png" />
<img class="clickmode" @click="selectMenu('b', 16)" src="@/assets/imgs/menu2/data6.png" />
<img class="clickmode" @click="selectMenu('b', 17)" src="@/assets/imgs/menu2/data7.png" />
</div>
</div>
<div class="bgBottom3" v-show="selectMenuIdB == 5">
<img src="@/assets/imgs/bg/menu3Bg.png" />
<div class="menuBottom2">
<img class="clickmode" @click="selectMenu('b', 21)" src="@/assets/imgs/menu2/system1.png" />
<img class="clickmode" @click="selectMenu('b', 22)" src="@/assets/imgs/menu2/system2.png" />
<img class="clickmode" @click="selectMenu('b', 23)" src="@/assets/imgs/menu2/system3.png" />
<img class="clickmode" @click="selectMenu('b', 24)" src="@/assets/imgs/menu2/system4.png" />
<img class="clickmode" @click="selectMenu('b', 25)" src="@/assets/imgs/menu2/system5.png" />
</div>
</div>
<div class="bgBottom4" v-show="selectMenuIdB == 6">
<img src="@/assets/imgs/bg/menu3Bg.png" />
<div class="menuBottom2">
<img class="clickmode" @click="selectMenu('b', 31)" src="@/assets/imgs/menu2/gis1.png" />
<img class="clickmode" @click="selectMenu('b', 32)" src="@/assets/imgs/menu2/gis2.png" />
<img class="clickmode" @click="selectMenu('b', 33)" src="@/assets/imgs/menu2/gis3.png" />
<img class="clickmode" @click="selectMenu('b', 34)" src="@/assets/imgs/menu2/gis4.png" />
<img class="clickmode" @click="selectMenu('b', 35)" src="@/assets/imgs/menu2/gis5.png" />
</div>
</div>
</div>
</div>
</template>
<script>
import IndexChart from './IndexChart'
import IndexTask from "./IndexTask"
import IndexBdc from './IndexBdc'
export default {
name: "Analysis",
components: {
IndexChart,
IndexTask,
IndexBdc
},
data() {
return {
indexStyle:1
import { mapActions } from 'vuex'
import OverviewModal from './Overview'
import { CONTENT_WORD } from './config'
export default {
name: 'homePage',
components: { OverviewModal },
data() {
return {
bmap: null,
view: '',
selectMenuIdT: 0,
selectMenuIdB: 0,
content_word: {},
}
},
created() {
},
mounted() {
this.content_word = CONTENT_WORD
this.selectMenu('b', 1)
},
computed: {
},
watch: {
},
methods: {
selectMenu(type, menuid) {
if (type == 't') {
this.selectMenuIdT = menuid
}
},
created() {
else if (type == 'b') {
this.selectMenuIdB = menuid
this.$refs.overForm.menuCilck(menuid)
}
},
methods: {
...mapActions(["Logout"]),
handleLogout() {
const that = this
this.$confirm({
title: '提示',
content: '真的要注销登录吗 ?',
onOk() {
return that.Logout({}).then(() => {
window.location.reload()
}).catch(err => {
that.$message.error({
title: '错误',
description: err.message
})
})
},
onCancel() {
},
});
},
}
}
</script>
<style lang="less">
#homePage {
background-color: #052f57;
.bgTop {
height: 8.24vh;
img {
width: 100%;
height: 100%;
}
.logo {
position: absolute;
top: 0;
left: 35vw;
width: 30vw;
height: 64px;
img {
width: auto;
height: auto;
float: left;
margin: 12px 8px 0 36px;
}
.centerTitle {
float: left;
font-family: MicrosoftYaHei-Bold;
font-size: 26px;
line-height: 52px;
letter-spacing: 2px;
color: #ffffff;
}
}
.menuTop {
position: absolute;
top: 3vh;
left: 8vw;
width: 84vw;
label {
font-family: FZZYJW--GB1-0;
font-size: 21px;
line-height: 38px;
letter-spacing: 2px;
color: #ffffff;
font-weight: 600;
}
.menuBgL {
float: left;
width: 189px;
height: 45px;
margin-right: -22px;
background-image: url('~@/assets/imgs/bg/menuBgL.png');
img {
width: auto;
height: auto;
margin: -8px 6px 0 35px;
}
}
.menuBgL.select {
background-image: url('~@/assets/imgs/bg/menuBgLs.png');
}
.menuBgR {
float: right;
width: 189px;
height: 45px;
margin-left: -22px;
background-image: url('~@/assets/imgs/bg/menuBgR.png');
img {
width: auto;
height: auto;
margin: -8px 6px 0 40px;
}
}
}
.logout {
position: absolute;
top: 3vh;
left: 93vw;
width: 7vw;
height: 42px;
display: flex;
justify-content: center;
align-items: center;
img {
width: 26px;
height: 26px;
margin-right: 10px;
}
label {
font-size: 18px;
letter-spacing: 2px;
color: #618ebc;
}
}
}
</script>
.clickmode {
cursor: pointer;
}
.mainBg {
height: 91.76vh;
background-image: url(~@/assets/imgs/bg/background.png);
background-size: cover;
.overMpdal {
height: 81vh;
display: flex;
justify-content: center;
align-items: center;
}
.overview {
margin: 0 auto;
}
.bgBottom {
height: 85px;
position: absolute;
bottom: 1.98vh;
img {
width: 98.33vw;
height: 100%;
}
.menuBottom {
position: absolute;
top: 8px;
left: calc(50vw - 360px);
width: 720px;
margin: 0 auto;
div {
float: left;
width: 68px;
height: 68px;
margin: 0 26px;
background-image: url('~@/assets/imgs/bg/menuBg.png');
background-size: 100% 100%;
background-repeat: no-repeat;
display: flex;
justify-content: center;
align-items: center;
}
div.select {
background-image: url('~@/assets/imgs/bg/menuBgs.png');
background-size: 100% 100%;
background-repeat: no-repeat;
}
img {
width: auto;
height: auto;
}
}
}
.bgBottom2 {
width: 440px;
height: 50px;
position: absolute;
left: calc(50vw - 160px);
bottom: calc(2vh + 100px);
.menuBottom2 {
position: absolute;
top: 13px;
left: 66px;
img {
width: auto;
height: auto;
margin: 0 10px;
}
}
}
.bgBottom3 {
width: 360px;
height: 50px;
position: absolute;
left: 50vw;
bottom: calc(2vh + 100px);
.menuBottom2 {
position: absolute;
top: 11px;
left: 64px;
img {
width: auto;
height: auto;
margin: 0 10px;
}
}
}
.bgBottom4 {
width: 360px;
height: 50px;
position: absolute;
left: calc(50vw + 120px);
bottom: calc(2vh + 100px);
.menuBottom2 {
position: absolute;
top: 12px;
left: 70px;
img {
width: auto;
height: 26px;
margin: 0 10px;
}
}
}
}
}
</style>

View File

@ -1,15 +0,0 @@
<template>
<div>
Monitor
</div>
</template>
<script>
export default {
name: "Monitor"
}
</script>
<style scoped>
</style>

View File

@ -0,0 +1,991 @@
<template>
<div id="overview" v-show="showModal"
:style="{ width: this.modeWidth, height: this.modeHeight, margintop: this.margintop }">
<div class="top">
<div class="icon"></div>
<div class="name">{{ title }}</div>
<div class="close clickmode" @click="closeModal"></div>
<div class="line"></div>
<!-- <a-upload name="file" :showUploadList="false" :multiple="false" :headers="tokenHeader" :action="importExcelUrl" @change="handleImportExcel">
<a-button type="primary" icon="import">导入</a-button>
</a-upload> -->
</div>
<div class="main">
<div class="form">
<div class="modeChoose" v-if="modal == 'modeChoose'">
<div class="lines">
<div class="leftline"></div>
<div class="name">{{ content_word.modeChoosename1 }}</div>
<div class="rightline"></div>
</div>
<div class="modes">
<div class="mode mode1 clickmode" @click="selectMode('t', 1)">
<div :class="selectmodeIdT == 1 ? 'unchoose choose' : 'unchoose'">{{ content_word.modename1 }}</div>
</div>
<div class="mode mode2 clickmode" @click="selectMode('t', 2)">
<div :class="selectmodeIdT == 2 ? 'unchoose choose' : 'unchoose'">{{ content_word.modename2 }}</div>
</div>
<div class="mode mode3 clickmode" @click="selectMode('t', 3)">
<div :class="selectmodeIdT == 3 ? 'unchoose choose' : 'unchoose'">{{ content_word.modename3 }}</div>
</div>
<div class="mode mode4 clickmode" @click="selectMode('t', 4)">
<div :class="selectmodeIdT == 4 ? 'unchoose choose' : 'unchoose'">{{ content_word.modename4 }}</div>
</div>
<div class="mode mode5 clickmode" @click="selectMode('t', 5)">
<div :class="selectmodeIdT == 5 ? 'unchoose choose' : 'unchoose'">{{ content_word.modename5 }}</div>
</div>
<div class="mode mode6 clickmode" @click="selectMode('t', 6)">
<div :class="selectmodeIdT == 6 ? 'unchoose choose' : 'unchoose'">{{ content_word.modename6 }}</div>
</div>
</div>
<div class="lines">
<div class="leftline"></div>
<div class="name">{{ content_word.modeChoosename2 }}</div>
<div class="rightline"></div>
</div>
<div class="modes2">
<div class="mode clickmode" @click="selectMode('b', 1)">
<div :class="selectmodeIdB == 1 ? 'unchoose choose' : 'unchoose'">{{ content_word.mode2name1 }}</div>
</div>
<div class="mode clickmode" @click="selectMode('b', 2)">
<div :class="selectmodeIdB == 2 ? 'unchoose choose' : 'unchoose'">{{ content_word.mode2name2 }}</div>
</div>
</div>
</div>
<div class="searchTable" v-if="modal == 'newproject'">
<a-form layout="inline">
<a-row :gutter="24">
<a-col :col="24">
<a-form-item label="工程名称:" :label-col="{ span: 5 }" :wrapper-col="{ span: 16 }">
<j-input placeholder="" v-model="queryParam.proname"></j-input>
</a-form-item>
</a-col>
<a-col :col="24">
<a-form-item label="创建人:" :label-col="{ span: 5 }" :wrapper-col="{ span: 16 }">
<j-input placeholder="" v-model="queryParam.username"></j-input>
</a-form-item>
</a-col>
<a-col :col="24">
<a-form-item label="创建时间:" :label-col="{ span: 5 }" :wrapper-col="{ span: 16 }">
<j-input placeholder="" v-model="queryParam.crateTime"></j-input>
</a-form-item>
</a-col>
<a-col :col="24">
<a-form-item label="备注:" :label-col="{ span: 5 }" :wrapper-col="{ span: 16 }">
<a-textarea ref="textarea" :value="inputContent" style="height: 130px" />
</a-form-item>
</a-col>
</a-row>
</a-form>
</div>
<div class="searchTable" v-if="modal == 'openproject'">
<a-form layout="inline">
<a-row :gutter="24">
<a-col :md="6" :sm="6">
<a-form-item label="工程名称:" :label-col="{ span: 9 }" :wrapper-col="{ span: 15 }">
<a-input placeholder="请输入工程名称" v-model="queryParam.dataTable"></a-input>
</a-form-item>
</a-col>
<a-col :md="6" :sm="6">
<a-form-item label="创建时间:" :label-col="{ span: 8 }" :wrapper-col="{ span: 16 }">
<a-date-picker placeholder="请选择创建时间" v-model="queryParam.dataId" format="YYYY-MM-DD" />
</a-form-item>
</a-col>
<a-col :md="6" :sm="6">
<a-button type="ok" @click="searchQuery">查询</a-button>
</a-col>
</a-row>
</a-form>
<a-table class="protable" ref="table" size="middle" rowKey="id" :columns="projectcolumns"
:dataSource="tabledataSource" :pagination="false">
<span slot="action" slot-scope="text, record">
<a-popconfirm title="确定删除吗?" @confirm="() => dataDelete(record.id, 'projectcolumns')">
<a>删除</a>
</a-popconfirm>
</span>
</a-table>
</div>
<div class="searchTable" v-if="modal == 'weatherdata'">
<a-tabs @change="wentherChangeTab">
<a-tab-pane tab="历史数据" key="历史数据" :forceRender="true">
<a-form layout="inline">
<a-row :gutter="24">
<a-col :md="6" :sm="6">
<a-form-item label="气象名称:" :label-col="{ span: 9 }" :wrapper-col="{ span: 15 }">
<a-input placeholder="请输入气象名称" v-model="queryParam.weatherName"></a-input>
</a-form-item>
</a-col>
<a-col :md="6" :sm="6">
<a-form-item label="类别" :label-col="{ span: 8 }" :wrapper-col="{ span: 16 }">
<a-select placeholder="请选择" v-model="queryParam.weatherType">
<a-select-option value="0">中国</a-select-option>
<a-select-option value="1">美国</a-select-option>
<a-select-option value="2">欧洲</a-select-option>
</a-select>
</a-form-item>
</a-col>
<a-col :md="3" :sm="3">
<a-button type="ok" @click="searchQuery">查询</a-button>
</a-col>
</a-row>
</a-form>
<a-table class="protable" ref="table" size="middle" rowKey="id" :columns="wenthercolumns"
:dataSource="tabledataSource" :pagination="false">
<span slot="action" slot-scope="text, record">
<a>启用</a>
<a-divider type="vertical" />
<a>下载</a>
</span>
</a-table>
</a-tab-pane>
<a-tab-pane tab="气象预报" key="气象预报" :forceRender="true">
<a-form layout="inline">
<a-row :gutter="24">
<a-col :md="6" :sm="6">
<a-form-item label="气象名称:" :label-col="{ span: 9 }" :wrapper-col="{ span: 15 }">
<a-input placeholder="请输入气象名称" v-model="queryParam.weatherName"></a-input>
</a-form-item>
</a-col>
<a-col :md="3" :sm="3">
<a-button type="ok" @click="searchQuery">查询</a-button>
</a-col>
</a-row>
</a-form>
<a-table class="protable" ref="table" size="middle" rowKey="id" :columns="forecastcolumns"
:dataSource="tabledataSource" :pagination="false">
<span slot="action" slot-scope="text, record">
<a>启用</a>
<a-divider type="vertical" />
<a>下载</a>
</span>
</a-table>
</a-tab-pane>
</a-tabs>
</div>
<div class="searchTable" v-if="modal == 'nuclidedata'">
<a-form layout="inline">
<a-row :gutter="24">
<a-col :md="7" :sm="7">
<a-form-item label="XX名称:" :label-col="{ span: 9 }" :wrapper-col="{ span: 15 }">
<a-select placeholder="请选择" v-model="queryParam.nuclideName">
<a-select-option value="0">xxx</a-select-option>
<a-select-option value="1">xxx</a-select-option>
<a-select-option value="2">xxx</a-select-option>
</a-select>
</a-form-item>
</a-col>
<a-col :md="7" :sm="7">
<a-form-item label="时间:" :label-col="{ span: 6 }" :wrapper-col="{ span: 18 }">
<a-date-picker placeholder="请选择创建时间" v-model="queryParam.dataId" format="YYYY-MM-DD" />
</a-form-item>
</a-col>
<a-col :md="3" :sm="3">
<a-button type="ok" @click="searchQuery">查询</a-button>
</a-col>
</a-row>
</a-form>
<a-table class="protable" ref="table" size="middle" rowKey="id" :columns="nuclidecolumns"
:dataSource="tabledataSource" :pagination="false">
<span slot="action" slot-scope="text, record">
<a>查看</a>
</span>
</a-table>
</div>
<div class="searchTable" v-if="modal == 'weapondata'">
<a-form layout="inline">
<a-row :gutter="24">
<a-col :md="7" :sm="7">
<a-form-item label="XX名称:" :label-col="{ span: 9 }" :wrapper-col="{ span: 15 }">
<a-select placeholder="请选择" v-model="queryParam.weaponType">
<a-select-option value="0">xxx</a-select-option>
<a-select-option value="1">xxx</a-select-option>
<a-select-option value="2">xxx</a-select-option>
</a-select>
</a-form-item>
</a-col>
<a-col :md="7" :sm="7">
<a-form-item label="时间:" :label-col="{ span: 6 }" :wrapper-col="{ span: 18 }">
<a-date-picker placeholder="请选择创建时间" v-model="queryParam.dataId" format="YYYY-MM-DD" />
</a-form-item>
</a-col>
<a-col :md="3" :sm="3">
<a-button type="ok" @click="searchQuery">查询</a-button>
</a-col>
</a-row>
</a-form>
<a-table class="protable" ref="table" size="middle" rowKey="id" :columns="weaponcolumns"
:dataSource="tabledataSource" :pagination="false">
<span slot="action" slot-scope="text, record">
<a-popconfirm title="确定删除吗?" @confirm="() => dataDelete(record.id, 'weaponcolumns')">
<a>删除</a>
</a-popconfirm>
</span>
</a-table>
</div>
<div class="searchTable" v-if="modal == 'topographydata'">
<a-tabs @change="topographyChangeTab">
<a-tab-pane tab="地理数据" key="地理数据" :forceRender="true">
<a-form layout="inline">
<a-row :gutter="24">
<a-col :md="7" :sm="7">
<a-form-item label="地形名称:" :label-col="{ span: 8 }" :wrapper-col="{ span: 16 }">
<a-input placeholder="请输入气象名称" v-model="queryParam.topographyName"></a-input>
</a-form-item>
</a-col>
<a-col :md="3" :sm="3">
<a-button type="ok" @click="searchQuery">查询</a-button>
</a-col>
</a-row>
</a-form>
<a-table class="protable" ref="table" size="middle" rowKey="id" :columns="topographycolumns"
:dataSource="tabledataSource" :pagination="false">
<span slot="action" slot-scope="text, record">
<a>下载</a>
<a-divider type="vertical" />
<a-popconfirm title="确定删除吗?" @confirm="() => dataDelete(record.id, 'topographycolumns')">
<a>删除</a>
</a-popconfirm>
</span>
</a-table>
</a-tab-pane>
<a-tab-pane tab="本构参数" key="本构参数" :forceRender="true">
</a-tab-pane>
</a-tabs>
</div>
<div class="searchTable" v-if="modal == 'citydata'">
<a-tabs @change="cityChangeTab">
<a-tab-pane tab="城市目标" key="城市目标" :forceRender="true">
<a-form layout="inline">
<a-row :gutter="24">
<a-col :md="8" :sm="8">
<a-form-item label="城市名称:" :label-col="{ span: 9 }" :wrapper-col="{ span: 15 }">
<a-input placeholder="请输入城市名称" v-model="queryParam.cityName"></a-input>
</a-form-item>
</a-col>
<a-col :md="3" :sm="3">
<a-button type="ok" @click="searchQuery">查询</a-button>
</a-col>
</a-row>
</a-form>
<a-table class="protable" ref="table" size="middle" rowKey="id" :columns="citycolumns"
:dataSource="tabledataSource" :pagination="false">
<span slot="action" slot-scope="text, record">
<a>查看</a>
<a-divider type="vertical" />
<a-popconfirm title="确定删除吗?" @confirm="() => dataDelete(record.id, 'citycolumns')">
<a>删除</a>
</a-popconfirm>
</span>
</a-table>
</a-tab-pane>
<a-tab-pane tab="设施目标" key="设施目标" :forceRender="true">
<a-form layout="inline">
<a-row :gutter="24">
<a-col :md="8" :sm="8">
<a-form-item label="气象名称:" :label-col="{ span: 9 }" :wrapper-col="{ span: 15 }">
<a-input placeholder="请输入气象名称" v-model="queryParam.weatherName"></a-input>
</a-form-item>
</a-col>
<a-col :md="3" :sm="3">
<a-button type="ok" @click="searchQuery">查询</a-button>
</a-col>
</a-row>
</a-form>
<a-table class="protable" ref="table" size="middle" rowKey="id" :columns="facilitycolumns"
:dataSource="tabledataSource" :pagination="false">
<span slot="action" slot-scope="text, record">
<a>查看</a>
<a-divider type="vertical" />
<a-popconfirm title="确定删除吗?" @confirm="() => dataDelete(record.id, 'facilitycolumns')">
<a>删除</a>
</a-popconfirm>
</span>
</a-table>
</a-tab-pane>
</a-tabs>
</div>
<div class="searchTable" v-if="modal == 'equdata'">
<a-tabs @change="equChangeTab">
<a-tab-pane tab="机动装备" key="机动装备" :forceRender="true">
<a-form layout="inline">
<a-row :gutter="24">
<a-col :md="10" :sm="10">
<a-form-item label="机动装备名称:" :label-col="{ span: 9 }" :wrapper-col="{ span: 15 }">
<a-input placeholder="请输入机动装备名称" v-model="queryParam.weatherName"></a-input>
</a-form-item>
</a-col>
<a-col :md="3" :sm="3">
<a-button type="ok" @click="searchQuery">查询</a-button>
</a-col>
</a-row>
</a-form>
<a-table class="protable" ref="table" size="middle" rowKey="id" :columns="equmotcolumns"
:dataSource="tabledataSource" :pagination="false">
<span slot="action" slot-scope="text, record">
<a>查看</a>
<a-divider type="vertical" />
<a-popconfirm title="确定删除吗?" @confirm="() => dataDelete(record.id, 'equmotcolumns')">
<a>删除</a>
</a-popconfirm>
</span>
</a-table>
</a-tab-pane>
<a-tab-pane tab="防护装备" key="防护装备" :forceRender="true">
<a-form layout="inline">
<a-row :gutter="24">
<a-col :md="10" :sm="10">
<a-form-item label="防护装备名称:" :label-col="{ span: 9 }" :wrapper-col="{ span: 15 }">
<a-input placeholder="请输入防护装备名称" v-model="queryParam.weatherName"></a-input>
</a-form-item>
</a-col>
<a-col :md="3" :sm="3">
<a-button type="ok" @click="searchQuery">查询</a-button>
</a-col>
</a-row>
</a-form>
<a-table class="protable" ref="table" size="middle" rowKey="id" :columns="equprocolumns"
:dataSource="tabledataSource" :pagination="false">
<span slot="action" slot-scope="text, record">
<a>查看</a>
<a-divider type="vertical" />
<a-popconfirm title="确定删除吗?" @confirm="() => dataDelete(record.id, 'equprocolumns')">
<a>删除</a>
</a-popconfirm>
</span>
</a-table>
</a-tab-pane>
</a-tabs>
</div>
<div class="searchTable" v-if="modal == 'sysuser'">
<a-form layout="inline">
<a-row :gutter="24">
<a-col :md="7" :sm="7">
<a-form-item label="用户名:" :label-col="{ span: 8 }" :wrapper-col="{ span: 16 }">
<a-input placeholder="请输入用户名" v-model="queryParam.username"></a-input>
</a-form-item>
</a-col>
<a-col :md="3" :sm="3">
<a-button type="ok" @click="searchQuery">查询</a-button>
</a-col>
</a-row>
</a-form>
<a-table class="protable" ref="table" size="middle" rowKey="id" :columns="sysusercolumns"
:dataSource="tabledataSource" :pagination="false">
<span slot="action" slot-scope="text, record">
<a-popconfirm title="确定删除吗?" @confirm="() => dataDelete(record.id, 'sysusercolumns')">
<a>删除</a>
</a-popconfirm>
</span>
</a-table>
</div>
<div class="userroles" v-if="modal == 'roleops'">
<div v-for="(roleitem, roleindex) in userroles" :key="roleindex" class="panels">
<div class="rolesname">{{ roleitem }}</div>
<a-checkbox v-for="(role, rolekey) in rolesOptions" :key="rolekey" :value="role">{{ role }}</a-checkbox>
</div>
</div>
<div class="userroles" v-if="modal == 'gisops'">
<div v-for="(gisitem, gisindex) in userroles" :key="gisindex" class="panels">
<div class="rolesname">{{ gisitem }}</div>
<a-checkbox v-for="(gis, giskey) in gisOptions" :key="giskey" :value="gis">{{ gis }}</a-checkbox>
</div>
</div>
</div>
<div class="footerButton" v-if="hasfooterButton">
<a-button type="cannel" @click="closeModal">取消</a-button>
<a-button type="ok" @click="buttonOk">确定</a-button>
</div>
</div>
</div>
</template>
<script>
import { CONTENT_WORD } from './config'
import { getAction, postAction } from '@/api/manage'
export default {
name: "Overview",
props: {
spliter: {
type: String,
required: false,
default: ','
},
},
data() {
return {
title: "",
modal: '',
modeChoosename1: '',
CONTENT_WORD: {},
showModal: false,
hasfooterButton: false,
selectmodeIdT: 1,
selectmodeIdB: 1,
modeWidth: '700px',
modeHeight: '530px',
margintop: '230px',
queryParam: {},
tabaldataurl: '',
deldataurl: '',
editmenuid: 0,
arrayValue: [],
userroles: ['开发维护者', '研究使用者', '普通用户者'],
rolesOptions: ['源项分析', '扩散分析', '剂量计算', '剂量评估', '路径优化', '报表展示', '场景选择', '新建工程', '打开工程', '数据管理', '系统管理', 'GIS工具箱'],
gisOptions: ['地图更换', '放大', '缩小', '标注', '空间测量', '点位测量', '面积测量', '水平距离测量'],
//打开工程表头
projectcolumns: [
{ title: '序号', dataIndex: '', key: 'rowIndex', width: "50", align: "center", customRender: function (t, r, index) { return parseInt(index) + 1; } },
{ title: '工程名称', align: 'center', dataIndex: 'engineeringName' },
{ title: '场景类型', align: 'center', dataIndex: 'sceneType' },
{ title: '创建人', align: 'center', dataIndex: 'createBy' },
{ title: '创建时间', align: 'center', dataIndex: 'createTime' },
{ title: '存放位置', align: 'center', dataIndex: 'engineeringPath' },
{ title: '备注', align: 'center', dataIndex: 'remark' },
{ title: '操作', dataIndex: 'action', align: "center", scopedSlots: { customRender: 'action' }, },
],
//气象历史数据
wenthercolumns: [
{ title: '序号', dataIndex: '', key: 'rowIndex', width: "50", align: "center", customRender: function (t, r, index) { return parseInt(index) + 1; } },
{ title: '气象名称', align: 'center', dataIndex: 'weatherName', },
{ title: '类别', align: 'center', dataIndex: 'weatherType' },
{ title: '气象时间', align: 'center', dataIndex: 'weatherTime' },
{ title: '上传日期', align: 'center', dataIndex: 'createTime' },
{ title: '文件路径', align: 'center', dataIndex: 'filePath' },
{ title: '操作', dataIndex: 'action', align: "center", scopedSlots: { customRender: 'action' }, },
],
//气象预报数据
forecastcolumns: [
{ title: '序号', dataIndex: '', key: 'rowIndex', width: "50", align: "center", customRender: function (t, r, index) { return parseInt(index) + 1; } },
{ title: '气象名称', align: 'center', dataIndex: 'forecastName', },
{ title: '采集时间', align: 'center', dataIndex: 'gatherTime' },
{ title: '上传日期', align: 'center', dataIndex: 'createTime' },
{ title: '文件路径', align: 'center', dataIndex: 'forecastPath' },
{ title: '操作', dataIndex: 'action', align: "center", scopedSlots: { customRender: 'action' }, },
],
//核素模块数据
nuclidecolumns: [
{ title: '序号', dataIndex: '', key: 'rowIndex', width: "50", align: "center", customRender: function (t, r, index) { return parseInt(index) + 1; } },
{ title: 'xx名称', align: 'center', dataIndex: 'nuclideName', },
{ title: 'Conc.[mBq/m^3]', align: 'center', dataIndex: 'conc' },
{ title: 'Uncertainty', align: 'center', dataIndex: 'uncertainty' },
{ title: 'MDC[mBq/m^3]', align: 'center', dataIndex: 'mdc' },
{ title: '操作', dataIndex: 'action', align: "center", scopedSlots: { customRender: 'action' }, },
],
//WQ类型数据
weaponcolumns: [
{ title: '序号', dataIndex: '', key: 'rowIndex', width: "50", align: "center", customRender: function (t, r, index) { return parseInt(index) + 1; } },
{ title: 'WQ名称', align: 'center', dataIndex: 'weaponName', },
{ title: '裂变材料', align: 'center', dataIndex: 'fission' },
{ title: '分凝温度', align: 'center', dataIndex: 'condensationT' },
{ title: '分凝时间', align: 'center', dataIndex: 'condensationTime' },
{ title: '操作', dataIndex: 'action', align: "center", scopedSlots: { customRender: 'action' }, },
],
//地形信息数据
topographycolumns: [
{ title: '序号', dataIndex: '', key: 'rowIndex', width: "50", align: "center", customRender: function (t, r, index) { return parseInt(index) + 1; } },
{ title: '地形名称', align: 'center', dataIndex: 'topographyName', },
{ title: '上传时间', align: 'center', dataIndex: 'createTime' },
{ title: '文件路径', align: 'center', dataIndex: 'topographyPath' },
{ title: '备注', align: 'center', dataIndex: 'remark' },
{ title: '操作', dataIndex: 'action', align: "center", scopedSlots: { customRender: 'action' }, },
],
//城市目标数据
citycolumns: [
{ title: '序号', dataIndex: '', key: 'rowIndex', width: "50", align: "center", customRender: function (t, r, index) { return parseInt(index) + 1; } },
{ title: '城市名称', align: 'center', dataIndex: 'cityName', },
{ title: '行政区', align: 'center', dataIndex: 'district' },
{ title: '经维度', align: 'center', dataIndex: 'cityLon', customRender: function (t, r, index) { return r.cityLon + ' , ' + r.cityLat; } },
{ title: '备注', align: 'center', dataIndex: 'remark' },
{ title: '操作', dataIndex: 'action', align: "center", scopedSlots: { customRender: 'action' }, },
],
//设施目标数据
facilitycolumns: [
{ title: '序号', dataIndex: '', key: 'rowIndex', width: "50", align: "center", customRender: function (t, r, index) { return parseInt(index) + 1; } },
{ title: '设施名称', align: 'center', dataIndex: 'facilityName', },
{ title: '设施类型', align: 'center', dataIndex: 'facilityType' },
{ title: '国家/地区', align: 'center', dataIndex: 'facilityArea' },
{ title: '经维度', align: 'center', dataIndex: 'cityLon', customRender: function (t, r, index) { return r.facilityLon + ' , ' + r.facilityLat; } },
{ title: '海拔', align: 'center', dataIndex: 'elevation' },
{ title: '操作', dataIndex: 'action', align: "center", scopedSlots: { customRender: 'action' }, },
],
//城市目标数据
equmotcolumns: [
{ title: '序号', dataIndex: '', key: 'rowIndex', width: "50", align: "center", customRender: function (t, r, index) { return parseInt(index) + 1; } },
{ title: '机动装备名称', align: 'center', dataIndex: 'motorName', },
{ title: '类型', align: 'center', dataIndex: 'motorType' },
{ title: '速度', align: 'center', dataIndex: 'speed' },
{ title: '备注', align: 'center', dataIndex: 'remark' },
{ title: '操作', dataIndex: 'action', align: "center", scopedSlots: { customRender: 'action' }, },
],
//设施目标数据
equprocolumns: [
{ title: '序号', dataIndex: '', key: 'rowIndex', width: "50", align: "center", customRender: function (t, r, index) { return parseInt(index) + 1; } },
{ title: '防护装备名称', align: 'center', dataIndex: 'protectionName', },
{ title: '防护等级', align: 'center', dataIndex: 'protectionLevel' },
{ title: '辐射屏蔽率', align: 'center', dataIndex: 'protectionRate' },
{ title: '备注', align: 'center', dataIndex: 'remark' },
{ title: '操作', dataIndex: 'action', align: "center", scopedSlots: { customRender: 'action' }, },
],
//用户管理
sysusercolumns: [
{ title: '序号', dataIndex: '', key: 'rowIndex', width: "50", align: "center", customRender: function (t, r, index) { return parseInt(index) + 1; } },
{ title: '用户名', align: 'center', dataIndex: 'username', },
{ title: '姓名', align: 'center', dataIndex: 'realname' },
{ title: '所属角色', align: 'center', dataIndex: 'roleName' },
{ title: '操作', dataIndex: 'action', align: "center", scopedSlots: { customRender: 'action' }, },
],
tabledataSource: [],
}
},
computed: {
},
created() {
},
mounted() {
this.content_word = CONTENT_WORD
},
methods: {
selectMode(type, modeid) {
if (type == 't') this.selectmodeIdT = modeid
else if (type == 'b') this.selectmodeIdB = modeid
},
menuCilck(menuid) {
this.hasfooterButton = false
this.editmenuid = menuid
if (menuid == 1) {
this.title = '场景及模式选择'
this.modal = 'modeChoose'
this.resetMode('700px', '530px')
}
else if (menuid == 2) {
this.hasfooterButton = true
this.title = '新建工程'
this.modal = 'newproject'
this.resetMode('700px', '480px')
}
else if (menuid == 3) {
this.hasfooterButton = true
this.title = '打开工程'
this.modal = 'openproject'
this.tabaldataurl = '/bizEngineering/list'
this.deldataurl = ''
this.searchQuery(menuid)
this.resetMode('1240px', '540px')
}
else if (menuid == 12) {
this.title = this.content_word.data2name
this.modal = 'weatherdata'
this.tabaldataurl = '/bizWeatherHistory/bizWeatherHistory/list'
this.deldataurl = ''
this.searchQuery(menuid)
this.resetMode('1200px', '480px')
}
else if (menuid == 13) {
this.title = this.content_word.data3name
this.modal = 'nuclidedata'
this.tabaldataurl = '/bizNuclide/bizNuclide/list'
this.deldataurl = ''
this.searchQuery(menuid)
this.resetMode('900px', '540px')
}
else if (menuid == 14) {
this.title = this.content_word.data4name
this.modal = 'weapondata'
this.tabaldataurl = '/bizWeapon/bizWeapon/list'
this.deldataurl = '/bizWeapon/bizWeapon/delete'
this.deldataurl = ''
this.searchQuery(menuid)
this.resetMode('900px', '540px')
}
else if (menuid == 15) {
this.title = this.content_word.data5name
this.modal = 'topographydata'
this.tabaldataurl = '/bizTopographyInfo/bizTopographyInfo/list'
this.deldataurl = '/bizTopographyInfo/bizTopographyInfo/delete'
this.deldataurl = ''
this.searchQuery(menuid)
this.resetMode('1100px', '540px')
}
else if (menuid == 16) {
this.title = this.content_word.data6name
this.modal = 'citydata'
this.tabaldataurl = '/bizCityAim/bizCityAim/list'
this.deldataurl = '/bizCityAim/bizCityAim/delete'
this.searchQuery(menuid)
this.resetMode('900px', '540px')
}
else if (menuid == 17) {
this.title = this.content_word.data7name
this.modal = 'equdata'
this.tabaldataurl = '/bizEquipmentMotor/bizEquipmentMotor/list'
this.deldataurl = '/bizEquipmentMotor/bizEquipmentMotor/delete'
this.searchQuery(menuid)
this.resetMode('900px', '540px')
}
else if (menuid == 21) {
this.title = this.content_word.system1name
this.modal = 'sysuser'
this.tabaldataurl = '/sys/user/list'
this.deldataurl = '/sys/user/delete'
this.searchQuery(menuid)
this.resetMode('900px', '540px')
}
else if (menuid == 22) {
this.title = this.content_word.system2name
this.modal = 'roleops'
this.resetMode('800px', '540px')
this.hasfooterButton = true
// getAction('/bizRole/bizRole/list').then((res) => {
// if (res.success) {
// this.userrolesdata = res.result.records
// }
// })
}
else if (menuid == 23) {
this.title = this.content_word.system3name
this.modal = 'gisops'
this.resetMode('800px', '540px')
this.hasfooterButton = true
// getAction('/bizRole/bizRole/list').then((res) => {
// if (res.success) {
// this.userrolesdata = res.result.records
// }
// })
}
},
resetMode(width, height) {
this.modeWidth = width
this.modeHeight = height
this.showModal = true
},
closeModal() {
this.showModal = false
},
buttonOk() {
this.showModal = false
if (this.editmenuid == 22) {
// this.userrolesdata
}
else if (this.editmenuid == 23) {
}
},
dataDelete() {
},
wentherChangeTab(key) {
if (key == '气象数据') {
this.tabaldataurl = '/bizWeatherHistory/bizWeatherHistory/list'
this.searchQuery()
}
else {
this.tabaldataurl = '/bizWeatherForecast/bizWeatherForecast/list'
this.searchQuery()
}
},
topographyChangeTab(key) {
if (key == '地理数据') {
this.tabaldataurl = '/bizTopographyInfo/bizTopographyInfo/list'
this.deldataurl = '/bizFacilityAim/bizFacilityAim/delete'
this.searchQuery()
}
else {
}
},
cityChangeTab(key) {
if (key == '城市目标') {
this.tabaldataurl = '/bizCityAim/bizCityAim/list'
this.deldataurl = '/bizCityAim/bizCityAim/delete'
this.searchQuery()
}
else {
this.tabaldataurl = '/bizFacilityAim/bizFacilityAim/list'
this.deldataurl = '/bizFacilityAim/bizFacilityAim/delete'
this.searchQuery()
}
},
equChangeTab(key) {
if (key == '机动装备') {
this.tabaldataurl = '/bizEquipmentMotor/bizEquipmentMotor/list'
this.deldataurl = '/bizEquipmentMotor/bizEquipmentMotor/delete'
this.searchQuery()
}
else {
this.tabaldataurl = '/bizEquipmentProtection/bizEquipmentProtection/list'
this.deldataurl = '/bizEquipmentProtection/bizEquipmentProtection/delete'
this.searchQuery()
}
},
searchQuery(menuid) {
this.tabledataSource = []
getAction(this.tabaldataurl).then((res) => {
if (res.success) {
if (menuid == 3) {
this.tabledataSource = res.result
}
else {
this.tabledataSource = res.result.records
}
} else {
}
})
},
}
}
</script>
<style scoped>
#overview {
.top {
width: 100%;
height: 37px;
background: url(~@/assets/imgs/bg/viewBg.png);
position: relative;
.line {
width: 100%;
height: 3px;
top: 36px;
position: absolute;
background-image: url(~@/assets/imgs/line.png);
background-size: cover;
}
.icon {
width: 30px;
height: 37px;
float: left;
background: url(~@/assets/imgs/viewicon.png) center center no-repeat;
}
.name {
width: 200px;
height: 37px;
float: left;
font-size: 16px;
font-weight: bold;
font-stretch: normal;
letter-spacing: 2px;
color: #ffffff;
line-height: 32px;
}
.close {
width: 30px;
height: 37px;
float: right;
background: url(~@/assets/imgs/close.png) center center no-repeat;
}
}
.clickmode {
cursor: pointer;
}
.main {
width: 100%;
height: calc(100% - 40px);
background-color: #083b67;
border: solid 1px #1673cb;
.footerButton {
width: 100%;
height: 40px;
}
.form {
width: 100%;
height: calc(100% - 60px);
.userroles {
margin: 20px;
background-color: #073e71;
border: solid 1px #1869b6;
height: calc(100% - 20px);
.panels {
padding: 0 20px;
}
.rolesname {
font-size: 16px;
line-height: 50px;
letter-spacing: 2px;
color: #0bd4f2;
border-bottom: solid 1px #1869b6;
margin-bottom: 5px;
}
.ant-checkbox-wrapper {
font-size: 15px;
line-height: 36px;
letter-spacing: 2px;
color: #ffffff;
}
.ant-checkbox-inner {
background-color: #062d51;
border: solid 1px #195b95;
opacity: 0.8;
}
.ant-checkbox-checked .ant-checkbox-inner {
background-color: #1d79dd;
border: solid 1px #1d79dd;
opacity: 0.8;
}
.ant-checkbox-wrapper {
margin: 0 10px 0 0 !important;
min-width: 100px;
}
}
.ant-form-item {
display: block;
margin-top: 20px;
}
.ant-form-item label {
font-size: 16px;
line-height: 39px;
color: #ffffff;
}
.ant-btn.ant-btn-ok {
margin-top: 25px;
}
.ant-divider {
background: transparent;
margin: 0 6px;
}
.modeChoose {
.lines {
width: 100%;
height: 22px;
margin-top: 30px;
display: flex;
justify-content: center;
align-items: center;
.leftline {
width: 291px;
height: 17px;
background: url(~@/assets/imgs/leftline.png);
}
.name {
width: 120px;
text-align: center;
font-size: 22px;
letter-spacing: 2px;
color: #00f6ff;
}
.rightline {
width: 291px;
height: 17px;
background: url(~@/assets/imgs/rightline.png);
}
}
.modes {
width: 660px;
height: 280px;
margin-left: calc(50% - 330px);
.mode {
width: 200px;
height: 120px;
float: left;
margin: 20px 10px 0;
box-shadow: 0px 4px 6px 0px rgba(0, 0, 0, 0.44);
.unchoose {
width: 180px;
height: 24px;
margin: 96px 10px 0;
font-size: 16px;
letter-spacing: 3px;
color: #ffffff;
text-align: center;
background: url(~@/assets/imgs/unchoose16.png) center right no-repeat;
}
.choose {
background: url(~@/assets/imgs/choose16.png) center right no-repeat;
}
}
.mode1 {
background: url(~@/assets/imgs/mode1.png);
}
.mode2 {
background: url(~@/assets/imgs/mode2.png);
}
.mode3 {
background: url(~@/assets/imgs/mode3.png);
}
.mode4 {
background: url(~@/assets/imgs/mode4.png);
}
.mode5 {
background: url(~@/assets/imgs/mode5.png);
}
.mode6 {
background: url(~@/assets/imgs/mode5.png);
}
}
.modes2 {
width: 660px;
height: 40px;
margin-left: calc(50% - 330px);
.mode {
width: 304px;
height: 40px;
float: left;
margin: 20px 10px 0;
background-color: #042b4f;
box-shadow: 0px 4px 6px 0px rgba(0, 0, 0, 0.44);
border: solid 1px #0892da;
.unchoose {
width: 280px;
height: 24px;
margin: 7px 10px 0;
font-size: 16px;
letter-spacing: 3px;
color: #ffffff;
text-align: left;
background: url(~@/assets/imgs/unchoose20.png) center right no-repeat;
}
.choose {
background: url(~@/assets/imgs/choose20.png) center right no-repeat;
}
}
}
}
.protable {
margin: 10px 20px;
}
}
}
}
</style>

View File

@ -0,0 +1,36 @@
export const CONTENT_WORD = {
centerTitle: '计算软件计算软件计算软件计算软件',
modalname1: '源项分析',
modalname2: '扩散分析',
modalname3: '剂量计算',
modalname4: '剂量评估',
modalname5: '路径优化',
modalname6: '报表展示',
modeChoosename1: '场景选择',
modename1: 'HXX',
modename2: 'HXX',
modename3: 'HXX',
modename4: '泄露',
modename5: '待开发',
modename6: '待开发',
modeChoosename2: '模式选择',
mode2name1: '精细模拟',
mode2name2: '快速评估',
data1name: '模板参数配置',
data2name: '气象数据管理',
data3name: 'xx模块',
data4name: 'WQ类型数据管理',
data5name: '地形数据管理',
data6name: '目标管理',
data7name: '机动与防护装备管理',
system1name: '用户管理',
system2name: '角色管理',
system3name: 'GIS工具箱管理',
system4name: '服务器监控',
system5name: '帮助文档',
gis1name: '待开发',
gis2name: '待开发',
gis3name: '待开发',
gis4name: '待开发',
gis5name: '待开发',
}

View File

@ -1,214 +1,177 @@
<template>
<div class="main">
<a-form-model class="user-layout-login" @keyup.enter.native="handleSubmit">
<a-tabs :activeKey="customActiveKey" :tabBarStyle="{ textAlign: 'center', borderBottom: 'unset' }" @change="handleTabClick">
<a-tab-pane key="tab1" tab="账号密码登录">
<login-account ref="alogin" @validateFail="validateFail" @success="requestSuccess" @fail="requestFailed"></login-account>
</a-tab-pane>
<a-tab-pane key="tab2" tab="手机号登录">
<login-phone ref="plogin" @validateFail="validateFail" @success="requestSuccess" @fail="requestFailed"></login-phone>
</a-tab-pane>
</a-tabs>
<a-form-model-item>
<a-checkbox @change="handleRememberMeChange" default-checked>自动登录</a-checkbox>
<router-link :to="{ name: 'alteration'}" class="forge-password" style="float: right;">
忘记密码
</router-link>
<router-link :to="{ name: 'register'}" class="forge-password" style="float: right;margin-right: 10px" >
注册账户
</router-link>
</a-form-model-item>
<a-form-item style="margin-top:24px">
<a-button size="large" type="primary" htmlType="submit" class="login-button" :loading="loginBtn" @click.stop.prevent="handleSubmit" :disabled="loginBtn">确定
<a-form-item>
<div class="loginlogo">计算软件计算软件计算软件计算软件</div>
</a-form-item>
<a-form-item>
<div class="logintitle">用户登录</div>
</a-form-item>
<a-form-item>
<div class="loginLabel">用户名:</div>
<a-input class="logininput" v-model="model.username" />
</a-form-item>
<a-form-item>
<div class="loginLabel">密码:</div>
<a-input class="logininput" v-model="model.password" type="password" />
</a-form-item>
<a-form-item>
<div class="loginLabel">角色选择:</div>
<a-input class="logininput" v-model="model.inputCode" />
</a-form-item>
<a-form-item>
<a-button type="primary" htmlType="submit" class="login-button clickmode" :loading="loginBtn"
@click.stop.prevent="handleSubmit" :disabled="loginBtn">确定
</a-button>
</a-form-item>
</a-form-model>
<two-step-captcha v-if="requiredTwoStepCaptcha" :visible="stepCaptchaVisible" @success="stepCaptchaSuccess" @cancel="stepCaptchaCancel"></two-step-captcha>
<login-select-tenant ref="loginSelect" @success="loginSelectOk"></login-select-tenant>
<third-login ref="thirdLogin"></third-login>
</div>
</template>
<script>
import Vue from 'vue'
import { ACCESS_TOKEN, ENCRYPTED_STRING } from '@/store/mutation-types'
import ThirdLogin from './third/ThirdLogin'
import LoginSelectTenant from './LoginSelectTenant'
import TwoStepCaptcha from '@/components/tools/TwoStepCaptcha'
import { getEncryptedString } from '@/utils/encryption/aesEncrypt'
import { timeFix } from '@/utils/util'
import LoginAccount from './LoginAccount'
import LoginPhone from './LoginPhone'
import { mapActions } from 'vuex'
export default {
components: {
LoginSelectTenant,
TwoStepCaptcha,
ThirdLogin,
LoginAccount,
LoginPhone
},
data () {
return {
customActiveKey: 'tab1',
rememberMe: true,
loginBtn: false,
requiredTwoStepCaptcha: false,
stepCaptchaVisible: false,
encryptedString:{
key:"",
iv:"",
},
}
},
created() {
Vue.ls.remove(ACCESS_TOKEN)
this.getRouterData();
this.rememberMe = true
},
methods:{
handleTabClick(key){
this.customActiveKey = key
components: {
},
data() {
return {
rememberMe: false,
loginBtn: false,
model: {
username: 'admin',
password: '123456',
inputCode: '请选择'
},
handleRememberMeChange(e){
this.rememberMe = e.target.checked
},
/**跳转到登录页面的参数-账号获取*/
getRouterData(){
this.$nextTick(() => {
let temp = this.$route.params.username || this.$route.query.username || ''
if (temp) {
this.$refs.alogin.acceptUsername(temp)
}
})
},
//登录
handleSubmit () {
this.loginBtn = true;
if (this.customActiveKey === 'tab1') {
// 使用账户密码登录
this.$refs.alogin.handleLogin(this.rememberMe)
} else {
//手机号码登录
this.$refs.plogin.handleLogin(this.rememberMe)
}
},
// 校验失败
validateFail(){
this.loginBtn = false;
},
// 登录后台成功
requestSuccess(loginResult){
this.$refs.loginSelect.show(loginResult)
},
//登录后台失败
requestFailed (err) {
let description = ((err.response || {}).data || {}).message || err.message || "请求出现错误,请稍后再试"
this.$notification[ 'error' ]({
message: '登录失败',
description: description,
duration: 4,
});
//账户密码登录错误后更新验证码
if(this.customActiveKey === 'tab1' && description.indexOf('密码错误')>0){
this.$refs.alogin.handleChangeCheckCode()
}
this.loginBtn = false;
},
loginSelectOk(){
this.loginSuccess()
},
//登录成功
loginSuccess () {
this.$router.push({ path: "/dashboard/analysis" }).catch(()=>{
console.log('登录跳转首页出错,这个错误从哪里来的')
})
this.$notification.success({
message: '欢迎',
description: `${timeFix()}欢迎回来`,
});
},
stepCaptchaSuccess () {
this.loginSuccess()
},
stepCaptchaCancel () {
this.Logout().then(() => {
this.loginBtn = false
this.stepCaptchaVisible = false
})
},
//获取密码加密规则
getEncrypte(){
var encryptedString = Vue.ls.get(ENCRYPTED_STRING);
if(encryptedString == null){
getEncryptedString().then((data) => {
this.encryptedString = data
});
}else{
this.encryptedString = encryptedString;
}
}
}
},
created() {
Vue.ls.remove(ACCESS_TOKEN)
},
methods: {
...mapActions(['Login']),
//登录
handleSubmit() {
this.loginBtn = true;
let loginParams = {
username: 'admin',
password: '123456',
captcha: '',
checkKey: new Date().getTime(),
remember_me: this.rememberMe,
}
this.Login(loginParams).then((res) => {
this.loginSuccess()
}).catch((err) => {
this.requestFailed(err)
});
},
//登录后台失败
requestFailed(err) {
let description = ((err.response || {}).data || {}).message || err.message || "请求出现错误,请稍后再试"
this.$notification['error']({
message: '登录失败',
description: description,
duration: 4,
});
//账户密码登录错误后更新验证码
if (this.customActiveKey === 'tab1' && description.indexOf('密码错误') > 0) {
this.$refs.alogin.handleChangeCheckCode()
}
this.loginBtn = false;
},
//登录成功
loginSuccess() {
this.$router.push({ path: "/dashboard/analysis" }).catch(() => {
})
this.$notification.success({
message: '欢迎',
description: `${timeFix()}欢迎回来`,
});
},
//获取密码加密规则
getEncrypte() {
var encryptedString = Vue.ls.get(ENCRYPTED_STRING);
if (encryptedString == null) {
getEncryptedString().then((data) => {
this.encryptedString = data
});
} else {
this.encryptedString = encryptedString;
}
},
}
}
</script>
<style lang="less" scoped>
.user-layout-login {
label {
font-size: 14px;
}
.getCaptcha {
display: block;
width: 100%;
height: 40px;
}
.forge-password {
font-size: 14px;
}
button.login-button {
padding: 0 15px;
font-size: 16px;
height: 40px;
width: 100%;
}
.user-login-other {
text-align: left;
margin-top: 24px;
line-height: 22px;
.item-icon {
font-size: 24px;
color: rgba(0,0,0,.2);
margin-left: 16px;
vertical-align: middle;
cursor: pointer;
transition: color .3s;
&:hover {
color: #1890ff;
}
}
.register {
float: right;
}
}
.user-layout-login {
width: 620px;
height: 620px;
background: url(~@/assets/imgs/bg/loginBg.png) center bottom no-repeat;
position: absolute;
left: calc(50vw - 310px);
top: calc(50vh - 350px);
.clickmode{
cursor: pointer;
}
</style>
<style>
.valid-error .ant-select-selection__placeholder{
color: #f5222d;
.loginlogo {
height: 73PX;
background: url(~@/assets/imgs/loginlogo.png) left center no-repeat;
font-family: 'Microsoft YaHei';
font-size: 30px;
letter-spacing: 2px;
color: #ffffff;
padding: 10px 0 0 105px;
}
.logintitle {
font-family: 'Microsoft YaHei';
font-size: 28px;
font-weight: bold;
font-style: italic;
font-stretch: normal;
line-height: 39px;
letter-spacing: 3px;
color: #ffffff;
padding-left: 130px;
}
.loginLabel {
font-family: 'Microsoft YaHei';
font-size: 18px;
letter-spacing: 2px;
color: #ffffff;
padding-left: 130px;
}
.logininput {
background: url(~@/assets/imgs/bg/lginputBg.png) left center no-repeat;
width: 381px;
height: 50px;
border: none !important;
margin: 4px 0 -4px 120px;
padding-left: 14px;
color: #00deff;
font-size: 16px;
}
button.login-button {
padding: 0 15px;
font-size: 16px;
width: 375px;
height: 50px;
background: url(~@/assets/imgs/bg/loginbtnBg.png) left center no-repeat;
margin: 20px 0 0 120px;
}
}
</style>

View File

@ -108,7 +108,7 @@ module.exports = {
/* 注意jeecgboot前端做了改造此处不需要配置跨域和后台接口只需要改.env相关配置文件即可
issues/3462 很多人此处做了配置导致刷新前端404问题请一定注意*/
'/jeecg-boot': {
target: 'http://localhost:8080',
target: 'http://192.168.0.7:8080',
ws: false,
changeOrigin: true
},

View File

@ -0,0 +1,102 @@
package org.jeecg.modules.listener;
import java.io.File;
import java.io.IOException;
import java.util.concurrent.TimeUnit;
import org.apache.commons.io.filefilter.FileFilterUtils;
import org.apache.commons.io.filefilter.HiddenFileFilter;
import org.apache.commons.io.filefilter.IOFileFilter;
import org.apache.commons.io.monitor.FileAlterationListenerAdaptor;
import org.apache.commons.io.monitor.FileAlterationMonitor;
import org.apache.commons.io.monitor.FileAlterationObserver;
public class FileListener extends FileAlterationListenerAdaptor {
/**
* 文件创建执行
*/
public void onFileCreate(File file) {
//也可以打印日志
System.out.println("文件[新建]:" + file.getAbsolutePath());
}
/**
* 文件创建修改
*/
public void onFileChange(File file) {
System.out.println("文件[修改]:" + file.getAbsolutePath());
//目标文件路径
String str = "d:\\test\\est.txt";
//如果被修改的是目标文件执行自己的业务操作
if(str.equals(file.getAbsolutePath())){
// try {
// readTest.readAW();
// } catch (IOException e) {
// e.printStackTrace();
// }
}
}
/**
* 文件删除
*/
public void onFileDelete(File file) {
System.out.println("文件[删除]:" + file.getAbsolutePath());
}
/**
* 目录创建
*/
public void onDirectoryCreate(File directory) {
System.out.println("[新建]:" + directory.getAbsolutePath());
}
/**
* 目录修改
*/
public void onDirectoryChange(File directory) {
System.out.println("[修改]:" + directory.getAbsolutePath());
}
/**
* 目录删除
*/
public void onDirectoryDelete(File directory) {
System.out.println("[删除]:" + directory.getAbsolutePath());
}
public void onStart(FileAlterationObserver observer) {
// TODO Auto-generated method stub
super.onStart(observer);
}
public void onStop(FileAlterationObserver observer) {
// TODO Auto-generated method stub
super.onStop(observer);
}
public static void main(String[] args) throws Exception{
// 监控目录
String rootDir = "D://test";
// 轮询间隔
long interval = TimeUnit.SECONDS.toMillis(1);
// 创建过滤器
IOFileFilter directories = FileFilterUtils.and(
// 只监听文件夹目录
FileFilterUtils.directoryFileFilter(),
// 此过滤器接受File隐藏的
HiddenFileFilter.VISIBLE);
IOFileFilter files = FileFilterUtils.and(
// 只监听文件
FileFilterUtils.fileFileFilter(),
// 只监听文件后缀为txt的文件
FileFilterUtils.suffixFileFilter(".txt"));
IOFileFilter filter = FileFilterUtils.or(directories, files);
// 使用过滤器
FileAlterationObserver observer = new FileAlterationObserver(new File(rootDir), filter);
//不使用过滤器
//FileAlterationObserver observer = new FileAlterationObserver(new File(rootDir));
observer.addListener(new FileListener());
//创建文件变化监听器
FileAlterationMonitor monitor = new FileAlterationMonitor(interval, observer);
// 开始监控
monitor.start();
}
}

View File

@ -0,0 +1,26 @@
package org.jeecg.modules.listener;
import java.io.File;
import java.io.IOException;
import java.io.RandomAccessFile;
public class ReadTest {
//设置变量 记录上次读取位置
private long num = 0;
public void readAW() throws IOException {
File file = new File("d://test//est.txt");
RandomAccessFile randomAccessFile = new RandomAccessFile(file,"rw");
//将文件定位到偏移量所指位置在该位置发生下一个读取或写入操作
randomAccessFile.seek(num);
//获取按行读取的数据并落库
String s = randomAccessFile.readLine();
for(;s!= null;s = randomAccessFile.readLine()){
// User user = new User();
// user.setUserName(s);
// userServer.insertUser(user);
}
//重新计算偏移量做下一次读取时的初始偏移量
num= randomAccessFile.length();
}
}

View File

@ -50,7 +50,7 @@ public class BizCityAimController extends JeecgController<BizCityAim, IBizCityAi
@GetMapping(value = "/list")
public Result<IPage<BizCityAim>> queryPageList(BizCityAim bizCityAim,
@RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
@RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
@RequestParam(name="pageSize", defaultValue="10000") Integer pageSize,
HttpServletRequest req) {
QueryWrapper<BizCityAim> queryWrapper = QueryGenerator.initQueryWrapper(bizCityAim, req.getParameterMap());
Page<BizCityAim> page = new Page<BizCityAim>(pageNo, pageSize);

View File

@ -65,7 +65,7 @@ public class BizFacilityAimController extends JeecgController<BizFacilityAim, IB
@GetMapping(value = "/list")
public Result<IPage<BizFacilityAim>> queryPageList(BizFacilityAim bizFacilityAim,
@RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
@RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
@RequestParam(name="pageSize", defaultValue="10000") Integer pageSize,
HttpServletRequest req) {
QueryWrapper<BizFacilityAim> queryWrapper = QueryGenerator.initQueryWrapper(bizFacilityAim, req.getParameterMap());
Page<BizFacilityAim> page = new Page<BizFacilityAim>(pageNo, pageSize);

View File

@ -17,7 +17,7 @@ import org.springframework.web.bind.annotation.*;
import java.util.Date;
import java.util.List;
@Api(tags="BizEngineering")
@Api(tags="工程管理")
@RestController
@RequestMapping("/bizEngineering")
@Slf4j
@ -34,6 +34,8 @@ public class BizEngineeringController {
*
* @return
*/
@AutoLog(value = "工程管理-查询用户所有工程")
@ApiOperation(value="工程管理-查询用户所有工程", notes="工程管理-查询用户所有工程")
@GetMapping(value = "/list")
public Result<List<BizEngineering>> list() {
LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
@ -64,8 +66,8 @@ public class BizEngineeringController {
* @param bizEngineering
* @return
*/
@AutoLog(value = "BizEngineering-添加")
@ApiOperation(value="BizEngineering-添加", notes="BizEngineering-添加")
@AutoLog(value = "工程管理-添加")
@ApiOperation(value="工程管理-添加", notes="工程管理-添加")
//@RequiresPermissions("bizWrf:biz_wrf:add")
@PostMapping(value = "/add")
public Result<String> add(@RequestBody BizEngineering bizEngineering) {
@ -82,8 +84,8 @@ public class BizEngineeringController {
* @param bizEngineering
* @return
*/
@AutoLog(value = "BizEngineering-编辑")
@ApiOperation(value="BizEngineering-编辑", notes="BizEngineering-编辑")
@AutoLog(value = "工程管理-编辑")
@ApiOperation(value="工程管理-编辑", notes="工程管理-编辑")
//@RequiresPermissions("bizWrf:biz_wrf:add")
@PutMapping(value = "/edit")
public Result<String> edit(@RequestBody BizEngineering bizEngineering) {
@ -107,12 +109,14 @@ public class BizEngineeringController {
// }
/**
* 查询选中工程
* 查询最新工程
*
* @return
*/
@GetMapping(value = "/getBizEngineeringByState")
public Result<BizEngineering> getBizEngineeringByState() {
return Result.ok(bizEngineeringService.getBizEngineeringByState());
@AutoLog(value = "工程管理-查询最新工程")
@ApiOperation(value="工程管理-查询最新工程", notes="工程管理-查询最新工程")
@GetMapping(value = "/getBizEngineeringByTime")
public Result<BizEngineering> getBizEngineeringByTime() {
return Result.ok(bizEngineeringService.getBizEngineeringByTime());
}
}

View File

@ -4,5 +4,5 @@ import com.baomidou.mybatisplus.extension.service.IService;
import org.jeecg.modules.project.baseConfig.bizEngineering.entity.BizEngineering;
public interface IBizEngineeringService extends IService<BizEngineering> {
BizEngineering getBizEngineeringByState();
BizEngineering getBizEngineeringByTime();
}

View File

@ -20,7 +20,7 @@ public class BizEngineeringServiceImpl extends ServiceImpl<BizEngineeringMapper,
private String baseHome;
@Override
public BizEngineering getBizEngineeringByState(){
public BizEngineering getBizEngineeringByTime(){
LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
List<BizEngineering> bizEngineerings = this.baseMapper.selectList(new LambdaQueryWrapper<BizEngineering>().
eq(BizEngineering::getCreateBy,sysUser.getUsername()).

View File

@ -50,7 +50,7 @@ public class BizNuclideController extends JeecgController<BizNuclide, IBizNuclid
@GetMapping(value = "/list")
public Result<IPage<BizNuclide>> queryPageList(BizNuclide bizNuclide,
@RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
@RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
@RequestParam(name="pageSize", defaultValue="10000") Integer pageSize,
HttpServletRequest req) {
QueryWrapper<BizNuclide> queryWrapper = QueryGenerator.initQueryWrapper(bizNuclide, req.getParameterMap());
Page<BizNuclide> page = new Page<BizNuclide>(pageNo, pageSize);

View File

@ -0,0 +1,195 @@
package org.jeecg.modules.project.baseConfig.bizRole.controller;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.net.URLDecoder;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.jeecg.common.api.vo.Result;
import org.jeecg.common.system.query.QueryGenerator;
import org.jeecg.common.util.oConvertUtils;
import org.jeecg.modules.project.baseConfig.bizRole.entity.BizRole;
import org.jeecg.modules.project.baseConfig.bizRole.service.IBizRoleService;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import lombok.extern.slf4j.Slf4j;
import org.jeecgframework.poi.excel.ExcelImportUtil;
import org.jeecgframework.poi.excel.def.NormalExcelConstants;
import org.jeecgframework.poi.excel.entity.ExportParams;
import org.jeecgframework.poi.excel.entity.ImportParams;
import org.jeecgframework.poi.excel.view.JeecgEntityExcelView;
import org.jeecg.common.system.base.controller.JeecgController;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.multipart.MultipartHttpServletRequest;
import org.springframework.web.servlet.ModelAndView;
import com.alibaba.fastjson.JSON;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.jeecg.common.aspect.annotation.AutoLog;
import org.apache.shiro.authz.annotation.RequiresPermissions;
/**
* @Description: Gis和角色权限管理表
* @Author: jeecg-boot
* @Date: 2023-09-22
* @Version: V1.0
*/
@Api(tags="Gis和角色权限管理表")
@RestController
@RequestMapping("/bizRole/bizRole")
@Slf4j
public class BizRoleController extends JeecgController<BizRole, IBizRoleService> {
@Autowired
private IBizRoleService bizRoleService;
/**
* 分页列表查询
*
* @param bizRole
* @param pageNo
* @param pageSize
* @param req
* @return
*/
//@AutoLog(value = "Gis和角色权限管理表-分页列表查询")
@ApiOperation(value="Gis和角色权限管理表-分页列表查询", notes="Gis和角色权限管理表-分页列表查询")
@GetMapping(value = "/list")
public Result<IPage<BizRole>> queryPageList(BizRole bizRole,
@RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
@RequestParam(name="pageSize", defaultValue="10000") Integer pageSize,
HttpServletRequest req) {
QueryWrapper<BizRole> queryWrapper = QueryGenerator.initQueryWrapper(bizRole, req.getParameterMap());
Page<BizRole> page = new Page<BizRole>(pageNo, pageSize);
IPage<BizRole> pageList = bizRoleService.page(page, queryWrapper);
return Result.OK(pageList);
}
/**
* 添加
*
* @param bizRole
* @return
*/
@AutoLog(value = "Gis和角色权限管理表-添加")
@ApiOperation(value="Gis和角色权限管理表-添加", notes="Gis和角色权限管理表-添加")
@RequiresPermissions("bizRole:biz_role:add")
@PostMapping(value = "/add")
public Result<String> add(@RequestBody BizRole bizRole) {
bizRoleService.save(bizRole);
return Result.OK("添加成功!");
}
/**
* 编辑
*
* @param bizRole
* @return
*/
@AutoLog(value = "Gis和角色权限管理表-编辑")
@ApiOperation(value="Gis和角色权限管理表-编辑", notes="Gis和角色权限管理表-编辑")
@RequiresPermissions("bizRole:biz_role:edit")
@RequestMapping(value = "/edit", method = {RequestMethod.PUT,RequestMethod.POST})
public Result<String> edit(@RequestBody BizRole bizRole) {
bizRoleService.updateById(bizRole);
return Result.OK("编辑成功!");
}
/**
* 批量编辑
*
* @param bizRoles
* @return
*/
@AutoLog(value = "Gis和角色权限管理表-批量编辑")
@ApiOperation(value="Gis和角色权限管理表-批量编辑", notes="Gis和角色权限管理表-批量编辑")
@RequiresPermissions("bizRole:biz_role:editBatch")
@RequestMapping(value = "/editBatch", method = {RequestMethod.PUT,RequestMethod.POST})
public Result<String> editBatch(@RequestBody List<BizRole> bizRoles) {
for (BizRole bizRole : bizRoles) {
bizRoleService.updateById(bizRole);
}
return Result.OK("批量编辑成功!");
}
/**
* 通过id删除
*
* @param id
* @return
*/
@AutoLog(value = "Gis和角色权限管理表-通过id删除")
@ApiOperation(value="Gis和角色权限管理表-通过id删除", notes="Gis和角色权限管理表-通过id删除")
@RequiresPermissions("bizRole:biz_role:delete")
@DeleteMapping(value = "/delete")
public Result<String> delete(@RequestParam(name="id",required=true) String id) {
bizRoleService.removeById(id);
return Result.OK("删除成功!");
}
/**
* 批量删除
*
* @param ids
* @return
*/
@AutoLog(value = "Gis和角色权限管理表-批量删除")
@ApiOperation(value="Gis和角色权限管理表-批量删除", notes="Gis和角色权限管理表-批量删除")
@RequiresPermissions("bizRole:biz_role:deleteBatch")
@DeleteMapping(value = "/deleteBatch")
public Result<String> deleteBatch(@RequestParam(name="ids",required=true) String ids) {
this.bizRoleService.removeByIds(Arrays.asList(ids.split(",")));
return Result.OK("批量删除成功!");
}
/**
* 通过id查询
*
* @param id
* @return
*/
//@AutoLog(value = "Gis和角色权限管理表-通过id查询")
@ApiOperation(value="Gis和角色权限管理表-通过id查询", notes="Gis和角色权限管理表-通过id查询")
@GetMapping(value = "/queryById")
public Result<BizRole> queryById(@RequestParam(name="id",required=true) String id) {
BizRole bizRole = bizRoleService.getById(id);
if(bizRole==null) {
return Result.error("未找到对应数据");
}
return Result.OK(bizRole);
}
/**
* 导出excel
*
* @param request
* @param bizRole
*/
@RequiresPermissions("bizRole:biz_role:exportXls")
@RequestMapping(value = "/exportXls")
public ModelAndView exportXls(HttpServletRequest request, BizRole bizRole) {
return super.exportXls(request, bizRole, BizRole.class, "Gis和角色权限管理表");
}
/**
* 通过excel导入数据
*
* @param request
* @param response
* @return
*/
@RequiresPermissions("bizRole:biz_role:importExcel")
@RequestMapping(value = "/importExcel", method = RequestMethod.POST)
public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) {
return super.importExcel(request, response, BizRole.class);
}
}

View File

@ -0,0 +1,67 @@
package org.jeecg.modules.project.baseConfig.bizRole.entity;
import java.io.Serializable;
import java.io.UnsupportedEncodingException;
import java.util.Date;
import java.math.BigDecimal;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.TableLogic;
import lombok.Data;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.springframework.format.annotation.DateTimeFormat;
import org.jeecgframework.poi.excel.annotation.Excel;
import org.jeecg.common.aspect.annotation.Dict;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
/**
* @Description: Gis和角色权限管理表
* @Author: jeecg-boot
* @Date: 2023-09-22
* @Version: V1.0
*/
@Data
@TableName("biz_role")
@Accessors(chain = true)
@EqualsAndHashCode(callSuper = false)
@ApiModel(value="biz_role对象", description="Gis和角色权限管理表")
public class BizRole implements Serializable {
private static final long serialVersionUID = 1L;
/**主键*/
@TableId(type = IdType.ASSIGN_ID)
@ApiModelProperty(value = "主键")
private String id;
/**创建人*/
@ApiModelProperty(value = "创建人")
private String createBy;
/**创建日期*/
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
@ApiModelProperty(value = "创建日期")
private Date createTime;
/**更新人*/
@ApiModelProperty(value = "更新人")
private String updateBy;
/**更新日期*/
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
@ApiModelProperty(value = "更新日期")
private Date updateTime;
/**角色名称*/
@Excel(name = "角色名称", width = 15)
@ApiModelProperty(value = "角色名称")
private String roleName;
/**角色权限*/
@Excel(name = "角色权限", width = 15)
@ApiModelProperty(value = "角色权限")
private String rolePermission;
/**gis权限*/
@Excel(name = "gis权限", width = 15)
@ApiModelProperty(value = "gis权限")
private String gisPermission;
}

View File

@ -0,0 +1,17 @@
package org.jeecg.modules.project.baseConfig.bizRole.mapper;
import java.util.List;
import org.apache.ibatis.annotations.Param;
import org.jeecg.modules.project.baseConfig.bizRole.entity.BizRole;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
* @Description: Gis和角色权限管理表
* @Author: jeecg-boot
* @Date: 2023-09-22
* @Version: V1.0
*/
public interface BizRoleMapper extends BaseMapper<BizRole> {
}

View File

@ -0,0 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="org.jeecg.modules.project.baseConfig.bizRole.mapper.BizRoleMapper">
</mapper>

View File

@ -0,0 +1,14 @@
package org.jeecg.modules.project.baseConfig.bizRole.service;
import org.jeecg.modules.project.baseConfig.bizRole.entity.BizRole;
import com.baomidou.mybatisplus.extension.service.IService;
/**
* @Description: Gis和角色权限管理表
* @Author: jeecg-boot
* @Date: 2023-09-22
* @Version: V1.0
*/
public interface IBizRoleService extends IService<BizRole> {
}

View File

@ -0,0 +1,19 @@
package org.jeecg.modules.project.baseConfig.bizRole.service.impl;
import org.jeecg.modules.project.baseConfig.bizRole.entity.BizRole;
import org.jeecg.modules.project.baseConfig.bizRole.mapper.BizRoleMapper;
import org.jeecg.modules.project.baseConfig.bizRole.service.IBizRoleService;
import org.springframework.stereotype.Service;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
/**
* @Description: Gis和角色权限管理表
* @Author: jeecg-boot
* @Date: 2023-09-22
* @Version: V1.0
*/
@Service
public class BizRoleServiceImpl extends ServiceImpl<BizRoleMapper, BizRole> implements IBizRoleService {
}

View File

@ -50,7 +50,7 @@ public class BizTopographyInfoController extends JeecgController<BizTopographyIn
@GetMapping(value = "/list")
public Result<IPage<BizTopographyInfo>> queryPageList(BizTopographyInfo bizTopographyInfo,
@RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
@RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
@RequestParam(name="pageSize", defaultValue="10000") Integer pageSize,
HttpServletRequest req) {
QueryWrapper<BizTopographyInfo> queryWrapper = QueryGenerator.initQueryWrapper(bizTopographyInfo, req.getParameterMap());
Page<BizTopographyInfo> page = new Page<BizTopographyInfo>(pageNo, pageSize);

View File

@ -50,7 +50,7 @@ public class BizWeaponController extends JeecgController<BizWeapon, IBizWeaponSe
@GetMapping(value = "/list")
public Result<IPage<BizWeapon>> queryPageList(BizWeapon bizWeapon,
@RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
@RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
@RequestParam(name="pageSize", defaultValue="10000") Integer pageSize,
HttpServletRequest req) {
QueryWrapper<BizWeapon> queryWrapper = QueryGenerator.initQueryWrapper(bizWeapon, req.getParameterMap());
Page<BizWeapon> page = new Page<BizWeapon>(pageNo, pageSize);

View File

@ -50,7 +50,7 @@ public class BizEquipmentMotorController extends JeecgController<BizEquipmentMot
@GetMapping(value = "/list")
public Result<IPage<BizEquipmentMotor>> queryPageList(BizEquipmentMotor bizEquipmentMotor,
@RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
@RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
@RequestParam(name="pageSize", defaultValue="10000") Integer pageSize,
HttpServletRequest req) {
QueryWrapper<BizEquipmentMotor> queryWrapper = QueryGenerator.initQueryWrapper(bizEquipmentMotor, req.getParameterMap());
Page<BizEquipmentMotor> page = new Page<BizEquipmentMotor>(pageNo, pageSize);

View File

@ -50,7 +50,7 @@ public class BizEquipmentProtectionController extends JeecgController<BizEquipme
@GetMapping(value = "/list")
public Result<IPage<BizEquipmentProtection>> queryPageList(BizEquipmentProtection bizEquipmentProtection,
@RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
@RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
@RequestParam(name="pageSize", defaultValue="10000") Integer pageSize,
HttpServletRequest req) {
QueryWrapper<BizEquipmentProtection> queryWrapper = QueryGenerator.initQueryWrapper(bizEquipmentProtection, req.getParameterMap());
Page<BizEquipmentProtection> page = new Page<BizEquipmentProtection>(pageNo, pageSize);

View File

@ -50,7 +50,7 @@ public class BizWeatherForecastController extends JeecgController<BizWeatherFore
@GetMapping(value = "/list")
public Result<IPage<BizWeatherForecast>> queryPageList(BizWeatherForecast bizWeatherForecast,
@RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
@RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
@RequestParam(name="pageSize", defaultValue="10000") Integer pageSize,
HttpServletRequest req) {
QueryWrapper<BizWeatherForecast> queryWrapper = QueryGenerator.initQueryWrapper(bizWeatherForecast, req.getParameterMap());
Page<BizWeatherForecast> page = new Page<BizWeatherForecast>(pageNo, pageSize);

View File

@ -63,8 +63,4 @@ public class BizWeatherForecast implements Serializable {
@Excel(name = "预报文件路径", width = 15)
@ApiModelProperty(value = "预报文件路径")
private String forecastPath;
/**预报类别*/
@Excel(name = "预报类别", width = 15)
@ApiModelProperty(value = "预报类别")
private Integer forecastType;
}

View File

@ -50,7 +50,7 @@ public class BizWeatherHistoryController extends JeecgController<BizWeatherHisto
@GetMapping(value = "/list")
public Result<IPage<BizWeatherHistory>> queryPageList(BizWeatherHistory bizWeatherHistory,
@RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
@RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
@RequestParam(name="pageSize", defaultValue="10000") Integer pageSize,
HttpServletRequest req) {
QueryWrapper<BizWeatherHistory> queryWrapper = QueryGenerator.initQueryWrapper(bizWeatherHistory, req.getParameterMap());
Page<BizWeatherHistory> page = new Page<BizWeatherHistory>(pageNo, pageSize);

Some files were not shown because too many files have changed in this diff Show More