diff --git a/frontend-sjtb/.eslintrc.js b/frontend-sjtb/.eslintrc.js index d7878cc2..061b63d5 100644 --- a/frontend-sjtb/.eslintrc.js +++ b/frontend-sjtb/.eslintrc.js @@ -24,6 +24,7 @@ module.exports = { }, plugins: ['vue', '@typescript-eslint'], rules: { + "no-unused-vars": ["error", { "argsIgnorePattern": "^_" }], 'vue/multi-word-component-names': 'off', '@typescript-eslint/no-empty-function': 'off', // 关闭空方法检查 '@typescript-eslint/no-explicit-any': 'off', // 关闭any类型的警告 diff --git a/frontend-sjtb/src/api/changePassWord/index.ts b/frontend-sjtb/src/api/changePassWord/index.ts new file mode 100644 index 00000000..727c442f --- /dev/null +++ b/frontend-sjtb/src/api/changePassWord/index.ts @@ -0,0 +1,9 @@ +import request from '@/utils/request'; +//修改密码 +export function updatePassword(params:any) { + return request({ + url: '/user/updatePassword', + method: 'post', + data: params + }); +} \ No newline at end of file diff --git a/frontend-sjtb/src/api/shuidiankaifa/index.ts b/frontend-sjtb/src/api/shuidiankaifa/index.ts deleted file mode 100644 index c46f8d25..00000000 --- a/frontend-sjtb/src/api/shuidiankaifa/index.ts +++ /dev/null @@ -1,62 +0,0 @@ -import request from '@/utils/request'; - -/** - * 获取 Kendo 列表数据(支持聚合和分组) - * @param params 过滤条件 - * @param sortConfig 排序配置 - */ -export function getKendoList(params: any, sortConfig?: any[]) { - return request({ - url: '/dec-lygk-base-server/base/vmsstbprpt/GetKendoList', - method: 'post', - data: { - filters: params, - sorts: sortConfig || [] - } - }); -} - -/** - * 获取自定义 Kendo 列表数据(用于全基地模式) - * @param params 过滤条件 - * @param sortConfig 排序配置 - */ -export function getKendoListCust(params: any, sortConfig?: any[]) { - return request({ - url: '/dec-lygk-base-server/base/vmsstbprpt/GetKendoListCust', - method: 'post', - data: { - filters: params, - sorts: sortConfig || [] - } - }); -} - -/** - * 获取介绍信息(用于 other 类型排序) - * @param filters 过滤条件 - * @param sorts 排序配置 - * @param needTotal 是否需要总数 - * @param fields 返回字段 - * @param defaultSort 默认排序 - */ -export function getIntroduce( - filters: any[], - sorts?: any[], - needTotal?: boolean, - fields?: string[], - defaultSort?: any -) { - return request({ - url: '/dec-lygk-base-server/base/introduce/getIntroduce', - method: 'post', - data: { - logic: 'and', - filters: filters, - sorts: sorts || [], - needTotal: needTotal || false, - fields: fields || [], - defaultSort: defaultSort - } - }); -} diff --git a/frontend-sjtb/src/api/system/map/ConfigManagement/index.ts b/frontend-sjtb/src/api/system/map/ConfigManagement/index.ts deleted file mode 100644 index d9549aed..00000000 --- a/frontend-sjtb/src/api/system/map/ConfigManagement/index.ts +++ /dev/null @@ -1,26 +0,0 @@ -import request from '@/utils/request'; - -// 获取所有沿程配置数据 -export function getAllConfigTree(data: any) { - return request({ - url: '/api/dec-lygk-base-server/base/msalongb/GetKendoList', - method: 'post', - data: data - }); -} -// 保存沿程配置 -export function saveBaseWbsb(data: any) { - return request({ - url: '/api/dec-lygk-base-server/base/wbsb/addOrUpdate', - method: 'post', - data: data - }); -} -// 删除沿程配置 -export function deleteBaseWbsb(data: any) { - return request({ - url: '/api/dec-lygk-base-server/base/wbsb/delete', - method: 'get', - params: data - }); -} diff --git a/frontend-sjtb/src/api/system/map/LayerManagement/index.ts b/frontend-sjtb/src/api/system/map/LayerManagement/index.ts deleted file mode 100644 index b24fe72d..00000000 --- a/frontend-sjtb/src/api/system/map/LayerManagement/index.ts +++ /dev/null @@ -1,34 +0,0 @@ -import request from '@/utils/request'; - -// 获取所有地图 图层树 -export function getAllMapLayerTree(data: any) { - return request({ - url: '/api/wmp-sys-server/mapLayer/getAllMapLayerTree', - method: 'post', - data: data - }); -} -// 保存地图 图层 -export function saveMapLayer(data: any) { - return request({ - url: '/api/wmp-sys-server/mapLayer/save', - method: 'post', - data: data - }); -} -// 删除地图 图层 -export function deleteMapLayer(data: any) { - return request({ - url: '/api/wmp-sys-server/mapLayer/delete', - method: 'post', - data: data - }); -} -// 获取所有地图 图层树 -export function getAllMapLayerParentIdTree(data: any) { - return request({ - url: '/api/wmp-sys-server/mapLayer/getAllMapLayerTree', - method: 'post', - data: data - }); -} diff --git a/frontend-sjtb/src/api/system/map/LegendStructure/index.ts b/frontend-sjtb/src/api/system/map/LegendStructure/index.ts deleted file mode 100644 index 0ba70188..00000000 --- a/frontend-sjtb/src/api/system/map/LegendStructure/index.ts +++ /dev/null @@ -1,35 +0,0 @@ -import request from '@/utils/request'; - -// 获取所有地图 图例树 -export function getAllMapLegendTree(data: any) { - return request({ - url: '/api/wmp-sys-server/mapLegend/GetKendoList', - method: 'post', - data: data - }); -} -// 保存地图 图例 -export function saveMapLegend(data: any) { - return request({ - url: '/api/wmp-sys-server/mapLegend/save', - method: 'post', - data: data - }); -} -// 删除地图 图例 -export function deleteMapLegend(data: any) { - return request({ - url: '/api/wmp-sys-server/mapLegend/delete', - method: 'post', - data: data - }); -} - -// 获取所有地图 图例树 -export function getAllMapLegendParentIdTree(data: any) { - return request({ - url: '/api/wmp-sys-server/mapLegend/getAllMapLegendTree', - method: 'get', - params: data - }); -} diff --git a/frontend-sjtb/src/api/system/map/TiltPhotoManagement/index.ts b/frontend-sjtb/src/api/system/map/TiltPhotoManagement/index.ts deleted file mode 100644 index b6ee61fc..00000000 --- a/frontend-sjtb/src/api/system/map/TiltPhotoManagement/index.ts +++ /dev/null @@ -1,26 +0,0 @@ -import request from '@/utils/request'; - -// 获取所有倾斜摄影 -export function getAllTiltPhotoTree(data: any) { - return request({ - url: '/api/wmp-sys-server/sys/oblique/GetKendoListCust', - method: 'post', - data: data - }); -} -// 保存倾斜摄影 -export function saveTiltPhoto(data: any) { - return request({ - url: '/api/wmp-sys-server/sys/oblique/addOrUpdate', - method: 'post', - data: data - }); -} -// 删除倾斜摄影 -export function deleteTiltPhoto(data: any) { - return request({ - url: '/api/wmp-sys-server/sys/oblique/delete', - method: 'get', - params: data - }); -} diff --git a/frontend-sjtb/src/assets/401_images/401.gif b/frontend-sjtb/src/assets/401_images/401.gif deleted file mode 100644 index cd6e0d94..00000000 Binary files a/frontend-sjtb/src/assets/401_images/401.gif and /dev/null differ diff --git a/frontend-sjtb/src/assets/404_images/404.png b/frontend-sjtb/src/assets/404_images/404.png deleted file mode 100644 index 3d8e2305..00000000 Binary files a/frontend-sjtb/src/assets/404_images/404.png and /dev/null differ diff --git a/frontend-sjtb/src/assets/404_images/404_cloud.png b/frontend-sjtb/src/assets/404_images/404_cloud.png deleted file mode 100644 index c6281d09..00000000 Binary files a/frontend-sjtb/src/assets/404_images/404_cloud.png and /dev/null differ diff --git a/frontend-sjtb/src/assets/components/审批通过.png b/frontend-sjtb/src/assets/components/审批通过.png deleted file mode 100644 index 53cecf20..00000000 Binary files a/frontend-sjtb/src/assets/components/审批通过.png and /dev/null differ diff --git a/frontend-sjtb/src/layout/components/Navbar.vue b/frontend-sjtb/src/layout/components/Navbar.vue index 60febd65..0e72ea71 100644 --- a/frontend-sjtb/src/layout/components/Navbar.vue +++ b/frontend-sjtb/src/layout/components/Navbar.vue @@ -1,18 +1,17 @@ + diff --git a/frontend-sjtb/src/main.ts b/frontend-sjtb/src/main.ts index 48e4d1a4..66b5af4b 100644 --- a/frontend-sjtb/src/main.ts +++ b/frontend-sjtb/src/main.ts @@ -14,17 +14,11 @@ import dayjs from 'dayjs'; // ant 中文语言 import 'dayjs/locale/zh-cn'; // @ts-ignore import 'virtual:svg-icons-register'; -// 3d地图 -import * as Cesium from 'cesium'; -import 'cesium/Build/Cesium/Widgets/widgets.css'; - // 国际化 import i18n from '@/lang/index'; import '@/styles/index.scss'; import 'element-plus/theme-chalk/index.css'; -//import 'element-plus/theme-chalk/dark/css-vars.css'; -import WujieVue from 'wujie-vue3'; const app = createApp(App); // 自定义指令 @@ -48,7 +42,5 @@ app .use(router) .use(ElementPlus) .use(Antd) - .use(Antd) - .use(WujieVue) .use(i18n) .mount('#app'); diff --git a/frontend-sjtb/src/permission.ts b/frontend-sjtb/src/permission.ts index 7e9fa5df..8a26aa43 100644 --- a/frontend-sjtb/src/permission.ts +++ b/frontend-sjtb/src/permission.ts @@ -52,7 +52,6 @@ function findFirstAvailableRoute(routes: any[]): string | undefined { router.beforeEach(async (to, from, next) => { NProgress.start(); const userStore = useUserStoreHook(); - if (userStore.Token) { // 登录成功,跳转到首页 if (to.path === '/login') { @@ -60,6 +59,15 @@ router.beforeEach(async (to, from, next) => { next({ path: '/' }); NProgress.done(); return; + } else if ( + (to.path === '/401' || to.path === '/404') && + from.matched.length === 0 && + !from.name + ) { + // 拦截直接 URL 访问错误页面,仅允许内部重定向触发 + next({ path: '/' }); + NProgress.done(); + return; } else { const hasGetUserInfo = userStore.roles.length > 0; if (hasGetUserInfo) { diff --git a/frontend-sjtb/src/router/index.ts b/frontend-sjtb/src/router/index.ts index 84eaef81..75cf3d8f 100644 --- a/frontend-sjtb/src/router/index.ts +++ b/frontend-sjtb/src/router/index.ts @@ -35,12 +35,7 @@ export const constantRoutes: RouteRecordRaw[] = [ path: '/401', component: () => import('@/views/error-page/401.vue'), meta: { hidden: true } - }, - { - path: '/changePassword', - component: () => import('@/views/changePassword/index.vue'), - meta: { hidden: true } - }, + } ]; // 创建路由 diff --git a/frontend-sjtb/src/utils/request.ts b/frontend-sjtb/src/utils/request.ts index 85febfcf..f7c65b69 100644 --- a/frontend-sjtb/src/utils/request.ts +++ b/frontend-sjtb/src/utils/request.ts @@ -19,27 +19,10 @@ service.interceptors.request.use( `Expected 'config' and 'config.headers' not to be undefined` ); } - config.headers.tenant_id = '4'; - if ( - config.url.includes('/dec-lygk-base-server') || - config.url.includes('/wmp-env-server') || - config.url.includes('/wmp-sys-server') || - config.url.includes('/wmp-eng-server') || - config.url.includes('/dec-modules-usm-springcloud-starter') || - config.url.includes('/wmp-swqx-server') - ) { - config.headers._appid = '974975A6-47FD-4C04-9ACD-68938D2992BD'; - config.headers._isolateid = '5b34aecb-adfb-4dfc-ad95-21505a9eb388'; - config.headers._platformid = '31e6d13f-c359-4a19-8e67-b6f868f2401b'; - config.headers._sysid = '10EC2E0B-AEA9-4757-83A2-201BA1BC54E9'; - config.headers.authorization = - 'bearer aa5be16b-d1a3-4b93-9886-b2490025c7d6'; - config.baseURL = '/'; - } else { - const user = useUserStoreHook(); - if (user.Token) { - config.headers.token = getToken(); - } + config.headers.tenant_id = '4'; + const user = useUserStoreHook(); + if (user.Token) { + config.headers.token = getToken(); } return config; }, diff --git a/frontend-sjtb/src/views/error-page/401.vue b/frontend-sjtb/src/views/error-page/401.vue index 61c6ae60..2e393696 100644 --- a/frontend-sjtb/src/views/error-page/401.vue +++ b/frontend-sjtb/src/views/error-page/401.vue @@ -1,114 +1,48 @@ - - - - - - diff --git a/frontend-sjtb/src/views/error-page/404.vue b/frontend-sjtb/src/views/error-page/404.vue index 85594047..567066a4 100644 --- a/frontend-sjtb/src/views/error-page/404.vue +++ b/frontend-sjtb/src/views/error-page/404.vue @@ -1,280 +1,47 @@ - - - - - - diff --git a/frontend-sjtb/src/views/redirect/index.vue b/frontend-sjtb/src/views/redirect/index.vue new file mode 100644 index 00000000..47cad96e --- /dev/null +++ b/frontend-sjtb/src/views/redirect/index.vue @@ -0,0 +1,15 @@ + + + diff --git a/frontend-sjtb/src/views/shuJuTianBao/guoYuDaoShuTongJi/guoYuDaoShuTongJiSearch.vue b/frontend-sjtb/src/views/shuJuTianBao/guoYuDaoShuTongJi/guoYuDaoShuTongJiSearch.vue index f32f79f9..00daca1e 100644 --- a/frontend-sjtb/src/views/shuJuTianBao/guoYuDaoShuTongJi/guoYuDaoShuTongJiSearch.vue +++ b/frontend-sjtb/src/views/shuJuTianBao/guoYuDaoShuTongJi/guoYuDaoShuTongJiSearch.vue @@ -25,8 +25,7 @@ + diff --git a/frontend/src/main.ts b/frontend/src/main.ts index 48e4d1a4..a66c35a5 100644 --- a/frontend/src/main.ts +++ b/frontend/src/main.ts @@ -23,8 +23,6 @@ import i18n from '@/lang/index'; import '@/styles/index.scss'; import 'element-plus/theme-chalk/index.css'; -//import 'element-plus/theme-chalk/dark/css-vars.css'; -import WujieVue from 'wujie-vue3'; const app = createApp(App); // 自定义指令 @@ -49,6 +47,5 @@ app .use(ElementPlus) .use(Antd) .use(Antd) - .use(WujieVue) .use(i18n) .mount('#app'); diff --git a/frontend/src/modules/map/application/map-orchestrator.ts b/frontend/src/modules/map/application/map-orchestrator.ts index 1e70dcf4..25247a4a 100644 --- a/frontend/src/modules/map/application/map-orchestrator.ts +++ b/frontend/src/modules/map/application/map-orchestrator.ts @@ -1,6 +1,6 @@ import { watch, type WatchStopHandle } from 'vue'; import { unByKey } from 'ol/Observable'; -import moment from 'moment'; +import dayjs from 'dayjs'; import { MapClass } from '@/components/gis/map.class'; import { getMapConfig, layerConfig2Flat } from '@/components/gis/gisUtils'; import { useMapConfigStore } from '@/modules/map/stores/map-config.store'; @@ -393,7 +393,7 @@ export const useMapOrchestrator = () => { // 备注:统一重置地图筛选表单依赖的时间范围,供筛选组件在切页时复位默认输入。 const resetFilterState = () => { - mapViewStore.setSearchTimeRange([moment().subtract(1, 'M'), moment()]); + mapViewStore.setSearchTimeRange([dayjs().subtract(1, 'M'), dayjs()]); }; // 备注:统一处理搜索定位,按点位编码从缓存数据中查找并飞行到目标位置。 diff --git a/frontend/src/modules/map/stores/map-view.store.ts b/frontend/src/modules/map/stores/map-view.store.ts index 4be243c9..c0c80452 100644 --- a/frontend/src/modules/map/stores/map-view.store.ts +++ b/frontend/src/modules/map/stores/map-view.store.ts @@ -1,11 +1,11 @@ import { defineStore } from 'pinia'; import { ref } from 'vue'; -import moment from 'moment'; +import dayjs from 'dayjs'; export const useMapViewStore = defineStore('map-view', () => { const checkedLayerKeys = ref([]); const legendCheckedState = ref>({}); - const searchTimeRange = ref<[any, any]>([moment().subtract(1, 'M'), moment()]); + const searchTimeRange = ref<[any, any]>([dayjs().subtract(1, 'M'), dayjs()]); const selectedBaseId = ref(''); const currentZoomLevel = ref(4.5); @@ -67,7 +67,7 @@ export const useMapViewStore = defineStore('map-view', () => { const resetViewState = () => { checkedLayerKeys.value = []; legendCheckedState.value = {}; - searchTimeRange.value = [moment().subtract(1, 'M'), moment()]; + searchTimeRange.value = [dayjs().subtract(1, 'M'), dayjs()]; selectedBaseId.value = ''; currentZoomLevel.value = 4.5; }; diff --git a/frontend/src/modules/monthlyAvgWaterTemCompareHistory/index.vue b/frontend/src/modules/monthlyAvgWaterTemCompareHistory/index.vue index 8038f574..2e43cba5 100644 --- a/frontend/src/modules/monthlyAvgWaterTemCompareHistory/index.vue +++ b/frontend/src/modules/monthlyAvgWaterTemCompareHistory/index.vue @@ -18,7 +18,7 @@ @@ -37,7 +37,7 @@ import { wbsbGetKendoList, avgMonGetKendoListCust } from "@/api/sw"; import { useJidiSelectEventStore } from "@/store/modules/jidiSelectEvent"; import MonthlyAverage from './monthlyAverage.vue' import MonthlyAverageMaxModal from './TwoLayers/monthlyAverageMaxModal.vue' -import moment from 'moment' +import dayjs from 'dayjs' import { ZoomInOutlined } from '@ant-design/icons-vue'; diff --git a/frontend/src/modules/monthlyAvgWaterTemCompareHistory/monthlyAverage.vue b/frontend/src/modules/monthlyAvgWaterTemCompareHistory/monthlyAverage.vue index c1a416c3..b4be4b17 100644 --- a/frontend/src/modules/monthlyAvgWaterTemCompareHistory/monthlyAverage.vue +++ b/frontend/src/modules/monthlyAvgWaterTemCompareHistory/monthlyAverage.vue @@ -104,7 +104,7 @@ import { message } from 'ant-design-vue'; import dayjs, { Dayjs } from 'dayjs'; import * as echarts from 'echarts'; import type { EChartsOption } from 'echarts'; -import moment from 'moment'; +import dayjs from 'dayjs'; import { omit } from 'lodash'; import { wbsbGetKendoList, getVmsstbprpt, DetGetKendoListCust } from '@/api/sw'; import BasicTable from '@/components/BasicTable/index.vue'; @@ -220,7 +220,7 @@ const getColorByCodeAndType = (code: string[], typeKey: string[]): string[] => { /** * 日期格式化 */ -const tmFmt = (d: string) => moment(d).format('YYYY-MM-DD'); +const tmFmt = (d: string) => dayjs(d).format('YYYY-MM-DD'); /** * 格式化数值:保留一位小数,四舍五入,空值显示 - @@ -675,7 +675,7 @@ const handleSearch = async () => { const tmValue = dayjs.isDayjs(formValue.tm) ? formValue.tm.format('YYYY-MM-DD 00:00:00') - : moment(formValue.tm).format('YYYY-MM-DD 00:00:00'); + : dayjs(formValue.tm).format('YYYY-MM-DD 00:00:00'); const values = { ...formValue, @@ -694,12 +694,12 @@ const handleExport = async () => { try { const tmValue = dayjs.isDayjs(formValue.tm) ? formValue.tm.format('YYYY-MM-DD 00:00:00') - : moment(formValue.tm).format('YYYY-MM-DD 00:00:00'); + : dayjs(formValue.tm).format('YYYY-MM-DD 00:00:00'); const params = { ...buildFilterParams({ ...formValue, tm: tmValue }), exportType: 'excel', - exportFileName: `月平均水温历史对比 ${moment().format( + exportFileName: `月平均水温历史对比 ${dayjs().format( 'YYYY-MM-DD HH-mm-ss' )}` }; diff --git a/frontend/src/permission.ts b/frontend/src/permission.ts index 7e9fa5df..9cffa7d9 100644 --- a/frontend/src/permission.ts +++ b/frontend/src/permission.ts @@ -60,6 +60,15 @@ router.beforeEach(async (to, from, next) => { next({ path: '/' }); NProgress.done(); return; + } else if ( + (to.path === '/401' || to.path === '/404') && + from.matched.length === 0 && + !from.name + ) { + // 拦截直接 URL 访问错误页面,仅允许内部重定向触发 + next({ path: '/' }); + NProgress.done(); + return; } else { const hasGetUserInfo = userStore.roles.length > 0; if (hasGetUserInfo) { diff --git a/frontend/src/router/index.ts b/frontend/src/router/index.ts index 84eaef81..75cf3d8f 100644 --- a/frontend/src/router/index.ts +++ b/frontend/src/router/index.ts @@ -35,12 +35,7 @@ export const constantRoutes: RouteRecordRaw[] = [ path: '/401', component: () => import('@/views/error-page/401.vue'), meta: { hidden: true } - }, - { - path: '/changePassword', - component: () => import('@/views/changePassword/index.vue'), - meta: { hidden: true } - }, + } ]; // 创建路由 diff --git a/frontend/src/store/composables/useTimeScale.ts b/frontend/src/store/composables/useTimeScale.ts new file mode 100644 index 00000000..c346de9b --- /dev/null +++ b/frontend/src/store/composables/useTimeScale.ts @@ -0,0 +1,136 @@ +import { ref, computed } from 'vue'; +import dayjs, { Dayjs } from 'dayjs'; + +export interface UseTimeScaleOptions { + defaultTimeScale?: string; + onSearchFinish?: (values: any) => void; + onReset?: (values: any) => void; +} + +export function useTimeScale(options: UseTimeScaleOptions = {}) { + const defaultTimeScale = options.defaultTimeScale || 'tm'; + const currentTimeScale = ref(defaultTimeScale); + + const jcdt = ref({ + min: null as string | null, + max: null as string | null + }); + + // 根据时间尺度动态切换 picker 类型 + const timePicker = computed(() => { + if (currentTimeScale.value === 'tm') return 'date'; + if (currentTimeScale.value === 'dt') return 'date'; + return 'month'; + }); + + // 根据时间尺度动态切换 format + const timeFormat = computed(() => { + if (currentTimeScale.value === 'tm') return 'YYYY-MM-DD HH:mm'; + if (currentTimeScale.value === 'dt') return 'YYYY-MM-DD'; + return 'YYYY-MM'; + }); + + // 小时模式需要 showTime 配置 + const timeShowTime = computed(() => { + if (currentTimeScale.value === 'tm') return { format: 'HH:mm' }; + return undefined; + }); + + // 设置默认时间范围 + const setDefaultTimeRange = (timeScale: string) => { + const now = dayjs(); + const today = now.format('YYYY-MM-DD'); + + if (timeScale === 'tm') { + // 小时:默认前七天,使用当前时分秒 + jcdt.value = { + min: `${dayjs().subtract(6, 'day').format('YYYY-MM-DD')} ${now.format( + 'HH:mm:ss' + )}`, + max: `${today} ${now.format('HH:mm:ss')}` + }; + } else if (timeScale === 'dt') { + // 日:默认前一个月 + jcdt.value = { + min: `${dayjs().subtract(1, 'month').format('YYYY-MM-DD')} 00:00:00`, + max: `${today} 23:59:59` + }; + } else { + // 月:默认前4个月 + jcdt.value = { + min: `${dayjs().subtract(4, 'month').format('YYYY-MM')}-01 00:00:00`, + max: `${today} 23:59:59` + }; + } + }; + + const handleRangeClick = (value: any) => { + jcdt.value = { + min: dayjs(value.value[0]).format('YYYY-MM-DD HH:mm:ss'), + max: dayjs(value.value[1]).format('YYYY-MM-DD HH:mm:ss') + }; + }; + + // 禁用起始时间之前的日期 + const disabledEndDate = (current: Dayjs) => { + if (!jcdt.value.min) return false; + return current && current < dayjs(jcdt.value.min).endOf('day'); + }; + + // 处理搜索完成 + const handleSearchFinish = (values: any) => { + values.jcdt = { + min: values.jcdt?.min || jcdt.value.min, + max: values.jcdt?.max || jcdt.value.max + }; + if (jcdt.value.min) values.jcdt.min = dayjs(jcdt.value.min); + if (jcdt.value.max) values.jcdt.max = dayjs(jcdt.value.max); + // 强制使用当前 timeScale,不被传入值覆盖 + values.timeScale = currentTimeScale.value; + options.onSearchFinish?.(values); + }; + + // 处理值变化 + const handleValuesChange = (changedValues: any, allValues: any) => { + if ( + changedValues.timeScale && + changedValues.timeScale !== currentTimeScale.value + ) { + currentTimeScale.value = changedValues.timeScale; + setDefaultTimeRange(changedValues.timeScale); + } + }; + + // 处理重置 + const handleReset = () => { + jcdt.value = { + min: null, + max: null + }; + currentTimeScale.value = defaultTimeScale; + setDefaultTimeRange(defaultTimeScale); + options.onReset?.({ + timeScale: defaultTimeScale + }); + }; + + // 初始化 + const init = () => { + setDefaultTimeRange(defaultTimeScale); + }; + + return { + jcdt, + currentTimeScale, + timePicker, + timeFormat, + timeShowTime, + handleRangeClick, + disabledEndDate, + handleSearchFinish, + handleValuesChange, + handleReset, + init, + setDefaultTimeRange + }; +} diff --git a/frontend/src/store/modules/GisUrlList.ts b/frontend/src/store/modules/GisUrlList.ts deleted file mode 100644 index b980071a..00000000 --- a/frontend/src/store/modules/GisUrlList.ts +++ /dev/null @@ -1,449 +0,0 @@ -import moment from 'moment'; - -export const urlList = [ - { - url: '/wmp-eng-server/eng/point/GetKendoListCust', - title: '常规水电', - params: { - anchoPointState: [{ field: 'anchoPointState', operator: 'isnotnull' }] - }, - orders: - '{"baseId":"asc","rvcdStepSort":"asc","siteStepSort":"asc","ennm":"asc"}' - }, - { - url: '/wmp-env-server/sw/getFacilityPointList/GetKendoListCust', - title: '低温水减缓设施', - params: { lgtd: [{ field: 'lgtd', operator: 'isnotnull' }] } - }, - { - url: '/wmp-eng-server/eng/eq/interval/GetKendoListCust', - title: '生态流量达标率', - params: { lgtd: [{ field: 'lgtd', operator: 'isnotnull' }] }, - orders: - '{"baseId":"asc","rvcdStepSort":"asc","siteStepSort":"asc","ennm":"asc"}' - }, - { - url: '/wmp-env-server/env/wq/anchorPoint/reach/GetKendoListCust', - title: '实际水质', - params: { lgtd: [{ field: 'lgtd', operator: 'isnotnull' }] } - }, - { - url: '/wmp-env-server/env/wq/anchorPoint/reach/GetKendoListCust', - title: '目标水质', - params: { lgtd: [{ field: 'lgtd', operator: 'isnotnull' }] } - }, - { - url: '/wmp-env-server/env/wq/anchorPoint/GetKendoListCust', - title: '自建站', - params: { - dtinType: [{ field: 'dtinType', operator: 'eq', value: '0' }], - lgtd: [{ field: 'lgtd', operator: 'isnotnull' }] - }, - orders: '{"siteStepSort":"asc"}' - }, - { - url: '/wmp-env-server/env/wq/anchorPoint/GetKendoListCust', - title: '国家站', - params: { - dtinType: [{ field: 'dtinType', operator: 'eq', value: '1' }], - lgtd: [{ field: 'lgtd', operator: 'isnotnull' }] - } - }, - { - url: '/wmp-env-server/env/wq/anchorPoint/GetKendoListCust', - title: '人工站', - params: { - dtinType: [{ field: 'dtinType', operator: 'eq', value: '2' }], - lgtd: [{ field: 'lgtd', operator: 'isnotnull' }] - } - }, - { - url: '/wmp-env-server/env/wq/anchorPoint/GetKendoListCust', - title: '栖息地水质站', - params: { - fhstcd: [{ field: 'fhstcd', operator: 'isnotnull' }], - fhFlag: [{ field: 'fhFlag', operator: 'eq', value: '1' }], - lgtd: [{ field: 'lgtd', operator: 'isnotnull' }] - } - }, - { - url: '/wmp-env-server/env/fp/point/qgc/GetKendoListCust', - title: '过鱼设施', - params: { lgtd: [{ field: 'lgtd', operator: 'isnotnull' }] } - }, - { - url: '/wmp-eng-server/eng/eq/eqds/GetKendoListCust', - title: '生态流量泄放设施', - params: { lgtd: [{ field: 'lgtd', operator: 'isnotnull' }] } - }, - { - url: '/wmp-env-server/fb/point/GetKendoListCust', - title: '鱼类增殖站', - params: { - sttp: [{ field: 'sttp', operator: 'eq', value: 'FB' }], - lgtd: [{ field: 'lgtd', operator: 'isnotnull' }] - } - }, - { - url: '/wmp-env-server/env/fhvap/GetKendoListCust', - title: '珍稀植物园', - params: { sttpCode: 'VP', lgtd: [{ field: 'lgtd', operator: 'isnotnull' }] } - }, - { - url: '/wmp-env-server/env/fhvap/GetKendoListCust', - title: '动物救助站', - params: { sttpCode: 'VA', lgtd: [{ field: 'lgtd', operator: 'isnotnull' }] } - }, - { - url: '/wmp-env-server/fb/point/GetKendoListCust', - title: '人工产卵场', - params: { sttp: 'SG', lgtd: [{ field: 'lgtd', operator: 'isnotnull' }] } - }, - { - url: '/wmp-env-server/sw/getEngTempPointList/GetKendoListCust', - title: '水温监测断面', - keyType: 'wt_point', - params: { lgtd: [{ field: 'lgtd', operator: 'isnotnull' }] } - }, - { - url: '/wmp-env-server/sw/getEngTempPointList/GetKendoListCust', - title: '自建水温站', - params: { lgtd: [{ field: 'lgtd', operator: 'isnotnull' }], flag: '0' } - }, - { - url: '/wmp-env-server/sw/getEngTempPointList/GetKendoListCust', - title: '人工水温站', - params: { lgtd: [{ field: 'lgtd', operator: 'isnotnull' }], flag: '2' } - }, - { - url: '/wmp-env-server/sw/getEngTempPointList/GetKendoListCust', - title: '栖息地水温站', - params: { - lgtd: [{ field: 'lgtd', operator: 'isnotnull' }], - fhstcd: [{ field: 'fhstcd', operator: 'isnotnull' }], - fhFlag: '1' - } - }, - { - url: '/wmp-env-server/env/fhvap/GetKendoListCust', - title: '栖息地', - params: { sttpCode: 'FH', lgtd: [{ field: 'lgtd', operator: 'isnotnull' }] } - }, - - { - url: '/wmp-env-server/env/fhvap/fhPoint/GetKendoListCust', - title: '水质监测站', - params: { sttpCode: 'WQ', lgtd: [{ field: 'lgtd', operator: 'isnotnull' }] } - }, - { - url: '/wmp-env-server/env/fhvap/fhPoint/GetKendoListCust', - title: '水温监测站', - params: { - sttpCode: 'WTRV', - lgtd: [{ field: 'lgtd', operator: 'isnotnull' }] - } - }, - { - url: '/wmp-env-server/env/fhvap/fhPoint/GetKendoListCust', - title: '流量监测站', - params: { sttpCode: 'ZQ', lgtd: [{ field: 'lgtd', operator: 'isnotnull' }] } - }, - { - url: '/wmp-env-server/env/fhvap/fhPoint/GetKendoListCust', - title: '视频监控', - params: { sttpCode: 'VD', lgtd: [{ field: 'lgtd', operator: 'isnotnull' }] } - }, - { - url: '/wmp-env-server/env/vd/aiPoint/GetKendoListCust', - title: 'AI视频监控站', - params: { sttpCode: 'AIVD' } - }, - { - url: '/wmp-env-server/env/fh/vdpoint/GetKendoListCust', - title: '水电站监控视频', - keyType: 'video_fbfm_point', - params: { - sttp: 'VD_FBFM', - lgtd: [{ field: 'lgtd', operator: 'isnotnull' }] - } - }, - { - url: '/wmp-env-server/env/fh/vdpoint/GetKendoListCust', - title: '生态流量监测断面视频', - keyType: 'video_eqs_point', - params: { - sttp: 'VD_EQS', - - lgtd: [{ field: 'lgtd', operator: 'isnotnull' }] - } - }, - { - url: '/wmp-env-server/env/fh/vdpoint/GetKendoListCust', - title: '水质站运行视频', - keyType: 'video_wq_point', - params: { - sttp: 'VD_WQ', - - lgtd: [{ field: 'lgtd', operator: 'isnotnull' }] - } - }, - { - url: '/wmp-env-server/env/fh/vdpoint/GetKendoListCust', - title: '过鱼设施视频', - keyType: 'video_fp_point', - params: { - sttp: 'VD_FP', - - lgtd: [{ field: 'lgtd', operator: 'isnotnull' }] - } - }, - { - url: '/wmp-env-server/env/fh/vdpoint/GetKendoListCust', - title: '鱼类增殖站视频', - keyType: 'video_fb_point', - params: { - sttp: 'VD_FB', - - lgtd: [{ field: 'lgtd', operator: 'isnotnull' }] - } - }, - { - url: '/wmp-env-server/env/fh/vdpoint/GetKendoListCust', - title: '栖息地视频', - keyType: 'video_fh_point', - params: { - sttp: 'VD_FH', - - lgtd: [{ field: 'lgtd', operator: 'isnotnull' }] - } - }, - { - url: '/wmp-env-server/env/fh/vdpoint/GetKendoListCust', - title: '低温水减缓设施视频', - keyType: 'video_dw_point', - params: { - sttp: 'VD_DW', - - lgtd: [{ field: 'lgtd', operator: 'isnotnull' }] - } - }, - { - url: '/wmp-env-server/env/fh/vdpoint/GetKendoListCust', - title: '动物救助站视频', - keyType: 'video_va_point', - params: { - sttp: 'VD_VA', - - lgtd: [{ field: 'lgtd', operator: 'isnotnull' }] - } - }, - { - url: '/wmp-env-server/env/fh/vdpoint/GetKendoListCust', - title: '珍稀植物园视频', - keyType: 'video_vp_point', - params: { - sttp: 'VD_VP', - - lgtd: [{ field: 'lgtd', operator: 'isnotnull' }] - } - }, - - { - url: '/wmp-env-server/env/we/point/qgc/GetKendoListCust', - title: '水生生态调查断面', - params: { lgtd: [{ field: 'lgtd', operator: 'isnotnull' }] }, - orders: '{"siteStepSort":"asc"}' - }, - { - url: '/wmp-env-server/env/we/fishPoint/qgc/GetKendoListCust', - title: '鱼类分布', - params: { lgtd: [{ field: 'lgtd', operator: 'isnotnull' }] } - }, - { - url: '/wmp-eng-server/eng/alarmPoint/GetKendoListCust', - title: '水电站告警情况', - params: { lgtd: [{ field: 'lgtd', operator: 'isnotnull' }] } - }, - { - url: '/wmp-env-server/fb/point/discharge/GetKendoListCust', - title: '水电站', - params: { lgtd: [{ field: 'lgtd', operator: 'isnotnull' }] } - }, - { - url: '/wmp-env-server/env/fh/zqpoint/GetKendoListCust', - title: '国家水文站', - params: { dtinType: 1, lgtd: [{ field: 'lgtd', operator: 'isnotnull' }] } - }, - { - url: '/wmp-env-server/env/fh/zqpoint/GetKendoListCust', - title: '自建水文站', - params: { dtinType: 0, lgtd: [{ field: 'lgtd', operator: 'isnotnull' }] } - }, - { - url: '/wmp-env-server/env/wq/anchorPoint/GetKendoListCust', - title: '增殖站水质站', - params: { - dtinType: 0, - sttpCode: 'WQFB', - lgtd: [{ field: 'lgtd', operator: 'isnotnull' }] - } - }, - { - url: '/wmp-env-server/env/fh/vdpoint/GetKendoListCust', - title: '视频监控站', - params: { lgtd: [{ field: 'lgtd', operator: 'isnotnull' }] } - }, - { - url: '/wmp-env-server/env/wb/point/GetKendoListCust', - title: '气象站', - params: { lgtd: [{ field: 'lgtd', operator: 'isnotnull' }] } - }, - { - url: '/wmp-env-server/sw/getEngTempPointList/getLastData', - title: '水温站点', - params: { - logic: 'and', - filters: [] - } - }, - { - url: '/wmp-env-server/env/wq/anchorPoint/GetKendoListCust', - title: '水质站点', - params: { - logic: 'and', - filters: [ - { - field: 'lgtd', - operator: 'isnotnull', - dataType: 'string' - }, - { - field: 'orderIndex', - operator: 'isnotnull', - dataType: 'string' - } - ] - }, - orders: '{"orderIndex":"asc"}' - }, - { - url: '/wmp-env-server/env/warn/stcd/point/GetKendoListCust', - title: '水质告警', - params: { - lgtd: [{ field: 'lgtd', operator: 'isnotnull' }], - sttpCode: [{ field: 'sttpCode', operator: 'eq', value: 'WQ' }] - } - }, - { - url: '/wmp-env-server/env/warn/stcd/point/GetKendoListCust', - title: '水温告警', - params: { - lgtd: [{ field: 'lgtd', operator: 'isnotnull' }], - sttpCode: [{ field: 'sttpCode', operator: 'eq', value: 'WTRV' }] - } - }, - { - url: '/wmp-env-server/env/warn/stcd/point/GetKendoListCust', - title: '水位告警', - params: { - lgtd: [{ field: 'lgtd', operator: 'isnotnull' }], - sttpCode: [{ field: 'sttpCode', operator: 'eq', value: 'ENG' }] - } - }, - { - url: '/wmp-env-server/env/warn/stcd/operatePoint/GetKendoListCust', - title: '环保设施告警', - params: { - lgtd: [{ field: 'lgtd', operator: 'isnotnull' }], - yr: moment().format('YYYY') - } - }, - { - url: '/wmp-env-server/env/fp/point/built/GetKendoListCust', - title: '在建过鱼设施-地图锚点', - params: { - lgtd: [{ field: 'lgtd', operator: 'isnotnull' }], - bldsttCcode: [{ field: 'bldsttCcode', operator: 'eq', value: '1' }] - } - }, - { - url: '/wmp-env-server/env/fb/point/built/GetKendoListCust', - title: '在建鱼类增殖站', - params: { - lgtd: [{ field: 'lgtd', operator: 'isnotnull' }], - sttpCode: [{ field: 'sttpCode', operator: 'eq', value: 'FB' }], - bldsttCcode: [{ field: 'bldsttCcode', operator: 'eq', value: '1' }] - } - }, - { - url: '/wmp-env-server/env/fb/point/built/GetKendoListCust', - title: '在建人工产卵场', - params: { - lgtd: [{ field: 'lgtd', operator: 'isnotnull' }], - sttpCode: [{ field: 'sttpCode', operator: 'eq', value: 'SG' }], - bldsttCcode: [{ field: 'bldsttCcode', operator: 'eq', value: '1' }] - } - }, - { - url: '/wmp-env-server/env/fhvap/built/GetKendoListCust', - title: '珍稀植物园-在建', - params: { - lgtd: [{ field: 'lgtd', operator: 'isnotnull' }], - sttpCode: [{ field: 'sttpCode', operator: 'eq', value: 'VP' }], - bldsttCcode: [{ field: 'bldsttCcode', operator: 'eq', value: '1' }] - } - }, - { - url: '/wmp-env-server/env/fhvap/built/GetKendoListCust', - title: '动物救助站-在建', - params: { - lgtd: [{ field: 'lgtd', operator: 'isnotnull' }], - sttpCode: [{ field: 'sttpCode', operator: 'eq', value: 'VA' }], - bldsttCcode: [{ field: 'bldsttCcode', operator: 'eq', value: '1' }] - } - }, - { - url: '/wmp-env-server/eng/eq/eqds/built/GetKendoListCust', - title: '在建生态流量泄放设施', - params: { - lgtd: [{ field: 'lgtd', operator: 'isnotnull' }], - BLDSTT_CCODE: [{ field: 'BLDSTT_CCODE', operator: 'eq', value: '1' }] - } - }, - { - url: '/wmp-env-server/env/we/fishList/point/GetKendoList', - title: '鱼类沿程', - params: { - lgtd: [{ field: 'lgtd', operator: 'isnotnull' }] - } - }, - { - url: '/wmp-env-server/env/wva/point/GetKendoListCust', - title: '野生动物监测', - params: { - lgtd: [{ field: 'lgtd', operator: 'isnotnull' }], - sttpCode: [{ field: 'sttpCode', operator: 'eq', value: 'WVA' }] - } - }, - { - url: '/wmp-env-server/env/we/fishList/point/GetNativeRareFish', - title: '土著珍稀鱼类', - params: { - rare: '1', - specOrigin: '1', - lgtd: [{ field: 'lgtd', operator: 'isnotnull' }] - } - }, - { - url: '/wmp-env-server/te/tet/point/GetTerrestrialAnimal', - title: '陆生动物分布', - params: { - lgtd: [{ field: 'lgtd', operator: 'isnotnull' }] - } - }, - { - url: '/wmp-env-server/sdFprdR/point/getFprdPointList', - title: '鱼类调查装置', - params: { lgtd: [{ field: 'lgtd', operator: 'isnotnull' }] } - } -]; diff --git a/frontend/src/store/modules/map.ts b/frontend/src/store/modules/map.ts index b086962a..7aa77698 100644 --- a/frontend/src/store/modules/map.ts +++ b/frontend/src/store/modules/map.ts @@ -1,7 +1,6 @@ import { defineStore, storeToRefs } from 'pinia'; import { ref } from 'vue'; -import { omit } from 'lodash'; -import moment from 'moment'; +import dayjs from 'dayjs'; import { MapClass } from '@/components/gis/map.class'; import { applyLayerMutualExclusionRules } from '@/modules/map/domain/map-layer-rules'; import { @@ -13,7 +12,7 @@ import { useMapConfigStore } from '@/modules/map/stores/map-config.store'; import { useMapDataStore } from '@/modules/map/stores/map-data.store'; import { useMapViewStore } from '@/modules/map/stores/map-view.store'; import request from '@/utils/request'; -import { urlList } from './GisUrlList'; +import { urlList } from '@/utils/GisUrlList'; const mapClass = MapClass.getInstance(); const DEFAULT_LAYER_REQUEST_CONCURRENCY = 4; @@ -707,19 +706,19 @@ export const useMapStore = defineStore('map', () => { 'wq_rive_gradient_line' ]; // 需要时间搜索的图层key - let yearTime = moment().subtract(1, 'years'); // 鱼类分布年份 + let yearTime = dayjs().subtract(1, 'years'); // 鱼类分布年份 if (timeRangeLayerKeys.includes(layerKey)) { requestParams.filters.push({ field: 'tm', operator: 'gte', dataType: 'date', - value: moment(searchTimeRange.value[0]).format('YYYY-MM-DD HH:mm:ss') + value: dayjs(searchTimeRange.value[0]).format('YYYY-MM-DD HH:mm:ss') }); requestParams.filters.push({ field: 'tm', operator: 'lte', dataType: 'date', - value: moment(searchTimeRange.value[1]).format('YYYY-MM-DD 23:59:59') + value: dayjs(searchTimeRange.value[1]).format('YYYY-MM-DD 23:59:59') }); } if (spjkz.includes(layerKey)) { @@ -737,7 +736,7 @@ export const useMapStore = defineStore('map', () => { field: 'startTime', operator: 'eq', dataType: 'date', - value: moment(yearTime) + value: dayjs(yearTime) .startOf('year') .format('YYYY-MM-DD 00:00:00') }); @@ -745,7 +744,7 @@ export const useMapStore = defineStore('map', () => { field: 'endTime', operator: 'eq', dataType: 'date', - value: moment(yearTime).endOf('year').format('YYYY-MM-DD 23:59:59') + value: dayjs(yearTime).endOf('year').format('YYYY-MM-DD 23:59:59') }); } } diff --git a/frontend/src/utils/GisUrlList.ts b/frontend/src/utils/GisUrlList.ts index db090e10..adb5e8e8 100644 --- a/frontend/src/utils/GisUrlList.ts +++ b/frontend/src/utils/GisUrlList.ts @@ -1,4 +1,4 @@ -import moment from 'moment'; +import dayjs from 'dayjs'; // const page =location.href.split('page='); // const zaiJianParams = page?.[1]==="zaiJianDianZhanHuanBaoGongZuo"?{bldsttCcode:1}:{} // const zaiJianParams2 = page?.[1]==="zaiJianDianZhanHuanBaoGongZuo"?{BLDSTT_CCODE:1}:{} @@ -262,7 +262,7 @@ export const urlList = [ title: '环保设施告警', params: { lgtd: [{ field: 'lgtd', operator: 'isnotnull' }], - yr: moment().format('YYYY') + yr: dayjs().format('YYYY') } }, { diff --git a/frontend/src/views/DataQueryMenuModule/components/conventionalHydropower/FishResource/FishResourceSearch.vue b/frontend/src/views/DataQueryMenuModule/components/conventionalHydropower/FishResource/FishResourceSearch.vue index 05ba6d7c..a6d4945c 100644 --- a/frontend/src/views/DataQueryMenuModule/components/conventionalHydropower/FishResource/FishResourceSearch.vue +++ b/frontend/src/views/DataQueryMenuModule/components/conventionalHydropower/FishResource/FishResourceSearch.vue @@ -17,8 +17,6 @@ - - - - diff --git a/frontend/src/views/error-page/401.vue b/frontend/src/views/error-page/401.vue index 61c6ae60..2e393696 100644 --- a/frontend/src/views/error-page/401.vue +++ b/frontend/src/views/error-page/401.vue @@ -1,114 +1,48 @@ - - - - - - diff --git a/frontend/src/views/error-page/404.vue b/frontend/src/views/error-page/404.vue index 85594047..567066a4 100644 --- a/frontend/src/views/error-page/404.vue +++ b/frontend/src/views/error-page/404.vue @@ -1,280 +1,47 @@ - - - - - - diff --git a/frontend/src/views/home/shuiDianKaiFaZhuangKuang.vue b/frontend/src/views/home/shuiDianKaiFaZhuangKuang.vue index 18222986..264b8634 100644 --- a/frontend/src/views/home/shuiDianKaiFaZhuangKuang.vue +++ b/frontend/src/views/home/shuiDianKaiFaZhuangKuang.vue @@ -1,10 +1,10 @@