Merge branch 'lichang' into lite

This commit is contained in:
TsMask
2025-04-29 20:31:46 +08:00
11 changed files with 284 additions and 213 deletions

View File

@@ -5,13 +5,11 @@ import zhCN from 'ant-design-vue/es/locale/zh_CN';
import enUS from 'ant-design-vue/es/locale/en_US'; import enUS from 'ant-design-vue/es/locale/en_US';
import { usePrefersColorScheme, viewTransitionTheme } from 'antdv-pro-layout'; import { usePrefersColorScheme, viewTransitionTheme } from 'antdv-pro-layout';
import dayjs from 'dayjs'; import dayjs from 'dayjs';
import advancedFormat from 'dayjs/plugin/advancedFormat';
import useLayoutStore from '@/store/modules/layout'; import useLayoutStore from '@/store/modules/layout';
import useAppStore from '@/store/modules/app'; import useAppStore from '@/store/modules/app';
import useI18n from '@/hooks/useI18n'; import useI18n from '@/hooks/useI18n';
const { t, currentLocale } = useI18n(); const { t, currentLocale } = useI18n();
const { themeConfig, initPrimaryColor, changeConf } = useLayoutStore(); const { themeConfig, initPrimaryColor, changeConf } = useLayoutStore();
dayjs.extend(advancedFormat);
// dayjs.locale('zh-cn'); // 默认中文 // dayjs.locale('zh-cn'); // 默认中文
let locale = ref(enUS); // 国际化初始中文 let locale = ref(enUS); // 国际化初始中文

View File

@@ -28,7 +28,7 @@ import useAlarmStore from '@/store/modules/alarm';
import { getServerTime } from '@/api'; import { getServerTime } from '@/api';
import { MENU_PATH_INLINE } from '@/constants/menu-constants'; import { MENU_PATH_INLINE } from '@/constants/menu-constants';
import { RESULT_CODE_SUCCESS } from '@/constants/result-constants'; import { RESULT_CODE_SUCCESS } from '@/constants/result-constants';
import { parseDateToStr } from '@/utils/date-utils'; import { getTimezoneOffset, parseDateUTCToStr } from '@/utils/date-utils';
import { parseUrlPath } from '@/plugins/file-static-url'; import { parseUrlPath } from '@/plugins/file-static-url';
const { proConfig, waterMarkContent } = useLayoutStore(); const { proConfig, waterMarkContent } = useLayoutStore();
const { t, currentLocale } = useI18n(); const { t, currentLocale } = useI18n();
@@ -196,6 +196,7 @@ onMounted(() => {
// ==== 服务器时间显示 start // ==== 服务器时间显示 start
let serverTimeInterval: any = null; let serverTimeInterval: any = null;
let serverTime = 0; let serverTime = 0;
let serverTimeZone = getTimezoneOffset();
// 获取服务器时间 // 获取服务器时间
function fnGetServerTime() { function fnGetServerTime() {
@@ -204,12 +205,16 @@ function fnGetServerTime() {
clearInterval(serverTimeInterval); clearInterval(serverTimeInterval);
serverTimeInterval = null; serverTimeInterval = null;
serverTime = res.data.timestamp; serverTime = res.data.timestamp;
serverTimeZone = res.data.timezone;
// 用DOM直接修改 // 用DOM直接修改
const serverTimeDom = document.getElementById('serverTimeDom'); const serverTimeDom = document.getElementById('serverTimeDom');
serverTimeInterval = setInterval(() => { serverTimeInterval = setInterval(() => {
serverTime += 1000; serverTime += 1000;
if (serverTimeDom) { if (serverTimeDom) {
serverTimeDom.innerText = parseDateToStr(serverTime); serverTimeDom.innerText = parseDateUTCToStr(
serverTime,
serverTimeZone
);
} else { } else {
clearInterval(serverTimeInterval); clearInterval(serverTimeInterval);
serverTimeInterval = null; serverTimeInterval = null;

View File

@@ -1,27 +1,19 @@
// 依赖来源 https://github.com/iamkun/dayjs // 依赖来源 https://github.com/iamkun/dayjs
import dayjs from 'dayjs'; import dayjs from 'dayjs';
import utc from 'dayjs/plugin/utc';
import timezone from 'dayjs/plugin/timezone';
dayjs.extend(utc);
dayjs.extend(timezone);
// 导入本地化语言并设为默认使用,只需要全局有引入就行 // 导入本地化语言并设为默认使用,只需要全局有引入就行
// import('dayjs/locale/zh-cn'); // import('dayjs/locale/zh-cn');
// dayjs.locale('zh-cn'); // dayjs.locale('zh-cn');
/**年 列如2022 */
export const YYYY = 'YYYY';
/**年-月 列如2022-12 */
export const YYYY_MM = 'YYYY-MM';
/**年-月-日 列如2022-12-30 */
export const YYYY_MM_DD = 'YYYY-MM-DD';
/**年月日时分秒 列如20221230010159 */
export const YYYYMMDDHHMMSS = 'YYYYMMDDHHmmss';
/**年-月-日 时:分:秒 列如2022-12-30 01:01:59 */ /**年-月-日 时:分:秒 列如2022-12-30 01:01:59 */
export const YYYY_MM_DD_HH_MM_SS = 'YYYY-MM-DD HH:mm:ss'; export const YYYY_MM_DD_HH_MM_SS = 'YYYY-MM-DD HH:mm:ss';
/**国际时间 列如2022-12-30T01:01:59+08:00 */ /**国际时间 列如2022-12-30T01:01:59+08:00 */
export const RFC3339 = 'YYYY-MM-DDTHH:mm:ssZ'; export const RFC3339 = 'YYYY-MM-DDTHH:mm:ssZ';
/**国际时间 列如Thu, Nov 14 2024 10:19 GMT+08:00 */ /**国际时间 列如Thu, Nov 14 2024 10:19 GMT+08:00 */
export const RFC822Z = 'ddd, MMM DD YYYY HH:mm [GMT]Z'; export const RFC822Z = 'ddd, MMM DD YYYY HH:mm [GMT]Z';
@@ -52,13 +44,34 @@ export function parseDateToStr(
} }
/** /**
* 格式时间成日期路径 * 格式时间
* * @param date 可转的Date对象
* 年/月 列如2022/12 * @param offset 时间格式 默认 RFC3339
* @returns 时间格式字符串 YYYY/MM * @returns 时间格式字符串
*/ */
export function parseDatePath(date: number | Date = Date.now()): string { export function parseDateUTCToStr(
return dayjs(date).format('YYYY/MM'); date: string | number | Date,
offset: string = '+0000'
): string {
// 将时间戳转换为 UTC 时间
const utcTime = dayjs.utc(date);
// 使用自定义时区偏移格式化时间
return utcTime.format(`YYYY-MM-DD HH:mm:ss [UTC${offset}]`);
}
/**
* 获取时区偏移量
* @returns +0800格式
*/
export function getTimezoneOffset(): string {
const offset = new Date().getTimezoneOffset();
const hours = Math.abs(Math.floor(offset / 60));
const minutes = Math.abs(offset % 60);
const sign = offset <= 0 ? '+' : '-';
return `${sign}${String(hours).padStart(2, '0')}${String(minutes).padStart(
2,
'0'
)}`;
} }
/** /**

View File

@@ -20,6 +20,7 @@ import useTabsStore from '@/store/modules/tabs';
import useDictStore from '@/store/modules/dict'; import useDictStore from '@/store/modules/dict';
import { RESULT_CODE_SUCCESS } from '@/constants/result-constants'; import { RESULT_CODE_SUCCESS } from '@/constants/result-constants';
import useI18n from '@/hooks/useI18n'; import useI18n from '@/hooks/useI18n';
import type { Dayjs } from 'dayjs';
const { t } = useI18n(); const { t } = useI18n();
const tabsStore = useTabsStore(); const tabsStore = useTabsStore();
const { getDict } = useDictStore(); const { getDict } = useDictStore();
@@ -40,8 +41,8 @@ let dict: {
sysCommonStatus: [], sysCommonStatus: [],
}); });
/**记录开始结束时间 */ /**开始结束时间 */
let queryRangePicker = ref<[string, string]>(['', '']); let queryRangePicker = ref<[Dayjs, Dayjs] | undefined>(undefined);
/**查询参数 */ /**查询参数 */
let queryParams = reactive({ let queryParams = reactive({
@@ -54,9 +55,9 @@ let queryParams = reactive({
/**执行状态 */ /**执行状态 */
statusFlag: undefined, statusFlag: undefined,
/**记录开始时间 */ /**记录开始时间 */
beginTime: '', beginTime: undefined as number | undefined,
/**记录结束时间 */ /**记录结束时间 */
endTime: '', endTime: undefined as number | undefined,
/**当前页数 */ /**当前页数 */
pageNum: 1, pageNum: 1,
/**每页条数 */ /**每页条数 */
@@ -68,8 +69,8 @@ function fnQueryReset() {
if (jobId && jobId !== '0') { if (jobId && jobId !== '0') {
queryParams = Object.assign(queryParams, { queryParams = Object.assign(queryParams, {
statusFlag: undefined, statusFlag: undefined,
beginTime: '', beginTime: undefined,
endTime: '', endTime: undefined,
pageNum: 1, pageNum: 1,
pageSize: 20, pageSize: 20,
}); });
@@ -85,7 +86,7 @@ function fnQueryReset() {
pageSize: 20, pageSize: 20,
}); });
} }
queryRangePicker.value = ['', '']; queryRangePicker.value = undefined;
tablePagination.current = 1; tablePagination.current = 1;
tablePagination.pageSize = 20; tablePagination.pageSize = 20;
fnGetList(); fnGetList();
@@ -361,11 +362,17 @@ function fnGetList(pageNum?: number) {
if (pageNum) { if (pageNum) {
queryParams.pageNum = pageNum; queryParams.pageNum = pageNum;
} }
if (!queryRangePicker.value) { // 时间范围
queryRangePicker.value = ['', '']; if (
Array.isArray(queryRangePicker.value) &&
queryRangePicker.value.length > 0
) {
queryParams.beginTime = queryRangePicker.value[0].valueOf();
queryParams.endTime = queryRangePicker.value[1].valueOf();
} else {
queryParams.beginTime = undefined;
queryParams.endTime = undefined;
} }
queryParams.beginTime = queryRangePicker.value[0];
queryParams.endTime = queryRangePicker.value[1];
listJobLog(toRaw(queryParams)).then(res => { listJobLog(toRaw(queryParams)).then(res => {
if (res.code === RESULT_CODE_SUCCESS) { if (res.code === RESULT_CODE_SUCCESS) {
// 取消勾选 // 取消勾选
@@ -475,12 +482,11 @@ onMounted(() => {
> >
<a-range-picker <a-range-picker
v-model:value="queryRangePicker" v-model:value="queryRangePicker"
allow-clear :bordered="true"
bordered :allow-clear="true"
style="width: 100%"
:show-time="{ format: 'HH:mm:ss' }" :show-time="{ format: 'HH:mm:ss' }"
format="YYYY-MM-DD HH:mm:ss" format="YYYY-MM-DD HH:mm:ss"
value-format="x"
style="width: 100%"
></a-range-picker> ></a-range-picker>
</a-form-item> </a-form-item>
</a-col> </a-col>

View File

@@ -7,30 +7,29 @@ import { RESULT_CODE_SUCCESS } from '@/constants/result-constants';
import useI18n from '@/hooks/useI18n'; import useI18n from '@/hooks/useI18n';
import { import {
YYYY_MM_DD_HH_MM_SS, YYYY_MM_DD_HH_MM_SS,
parseDateToStr,
parseDateWithoutYear, parseDateWithoutYear,
parseStrToDate, parseStrToDate,
} from '@/utils/date-utils'; } from '@/utils/date-utils';
import { parseSizeFromKBs } from '@/utils/parse-utils'; import { parseSizeFromKBs } from '@/utils/parse-utils';
import dayjs, { Dayjs } from 'dayjs'; import dayjs, { type Dayjs } from 'dayjs';
const { t } = useI18n(); const { t } = useI18n();
/**开始结束时间类型 */ /**开始结束时间类型 */
type RangePickerType = { type RangePickerType = {
placeholder: [string, string]; placeholder: [string, string];
ranges: Record<string, [Dayjs, Dayjs]>; presets: { label: string; value: Dayjs[] }[] | undefined;
/**全局时间 */ /**全局时间 */
all: [string, string]; all: [Dayjs, Dayjs] | undefined;
/**平均负载 */ /**平均负载 */
load: [string, string]; load: [Dayjs, Dayjs] | undefined;
/**CPU */ /**CPU */
cpu: [string, string]; cpu: [Dayjs, Dayjs] | undefined;
/**内存 */ /**内存 */
memory: [string, string]; memory: [Dayjs, Dayjs] | undefined;
/**磁盘 */ /**磁盘 */
io: [string, string]; io: [Dayjs, Dayjs] | undefined;
/**网络 */ /**网络 */
network: [string, string]; network: [Dayjs, Dayjs] | undefined;
}; };
/**开始结束时间 */ /**开始结束时间 */
@@ -39,42 +38,54 @@ let rangePicker = reactive<RangePickerType>({
t('views.monitor.monitor.startTime'), t('views.monitor.monitor.startTime'),
t('views.monitor.monitor.endTime'), t('views.monitor.monitor.endTime'),
], ],
ranges: { presets: [
[t('views.monitor.monitor.yesterday')]: [ {
dayjs().subtract(1, 'day').startOf('day'), label: t('views.monitor.monitor.yesterday'),
dayjs().subtract(1, 'day').endOf('day'), value: [
], dayjs().subtract(1, 'day').startOf('day'),
[t('views.monitor.monitor.today')]: [dayjs().startOf('day'), dayjs()], dayjs().subtract(1, 'day').endOf('day'),
[t('views.monitor.monitor.week')]: [ ],
dayjs().startOf('week'), },
dayjs().endOf('week'), {
], label: t('views.monitor.monitor.today'),
[t('views.monitor.monitor.month')]: [ value: [dayjs().startOf('day'), dayjs()],
dayjs().startOf('month'), },
dayjs().endOf('month'), {
], label: t('views.monitor.monitor.week'),
}, value: [dayjs().startOf('week'), dayjs().endOf('week')],
all: ['', ''], },
load: ['', ''], {
cpu: ['', ''], label: t('views.monitor.monitor.month'),
memory: ['', ''], value: [dayjs().startOf('month'), dayjs().endOf('month')],
io: ['', ''], },
network: ['', ''], ],
all: [dayjs().subtract(2, 'hour'), dayjs().endOf('hour')],
load: undefined,
cpu: undefined,
memory: undefined,
io: undefined,
network: undefined,
}); });
/**查询全部资源数据列表 */ /**查询全部资源数据列表 */
function fnGetList() { function fnGetList() {
let beginTime = null; let beginTime = null;
let endTime = null; let endTime = null;
const dateNumber = rangePicker.all; // 时间范围
if (dateNumber[0]) { if (Array.isArray(rangePicker.all) && rangePicker.all.length > 0) {
beginTime = dateNumber[0]; beginTime = rangePicker.all[0].valueOf();
endTime = dateNumber[1]; endTime = rangePicker.all[1].valueOf();
// 设置初始时间段
const initRangePicker = rangePicker.all;
rangePicker.all = initRangePicker;
rangePicker.load = initRangePicker;
rangePicker.cpu = initRangePicker;
rangePicker.memory = initRangePicker;
rangePicker.io = initRangePicker;
rangePicker.network = initRangePicker;
} else { } else {
const now = new Date(); beginTime = undefined;
now.setHours(0, 0, 0, 0); endTime = undefined;
beginTime = `${now.getTime()}`;
endTime = `${new Date().getTime()}`;
} }
getLoad({ getLoad({
@@ -92,15 +103,6 @@ function fnGetList() {
fnNetworkChart(res.data.network); fnNetworkChart(res.data.network);
} }
}); });
// 设置初始时间段
const initRangePicker: [string, string] = [beginTime, endTime];
rangePicker.all = initRangePicker;
rangePicker.load = initRangePicker;
rangePicker.cpu = initRangePicker;
rangePicker.memory = initRangePicker;
rangePicker.io = initRangePicker;
rangePicker.network = initRangePicker;
} }
/**图表显示数据 */ /**图表显示数据 */
@@ -350,19 +352,14 @@ function fnNetworkChart(data: Record<string, any>[]) {
} }
/**查询数据-平均负载/CPU/内存 */ /**查询数据-平均负载/CPU/内存 */
function fnGetQuery( function fnGetQuery(type: 'load' | 'cpu' | 'memory', v: [Dayjs, Dayjs]) {
type: 'load' | 'cpu' | 'memory', if (!Array.isArray(v) || v.length <= 0) {
dateString: [string, string]
) {
if (!dateString[0]) {
return; return;
} }
const beginTime = parseStrToDate(dateString[0], YYYY_MM_DD_HH_MM_SS);
const endTime = parseStrToDate(dateString[1], YYYY_MM_DD_HH_MM_SS);
getLoad({ getLoad({
type: type, type: type,
beginTime: beginTime.getTime(), beginTime: v[0].valueOf(),
endTime: endTime.getTime(), endTime: v[1].valueOf(),
neType: '#', neType: '#',
neId: '#', neId: '#',
}).then(res => { }).then(res => {
@@ -381,16 +378,14 @@ function fnGetQuery(
} }
/**查询数据-IO */ /**查询数据-IO */
function fnGetQueryIO(v: any, dateString: [string, string]) { function fnGetQueryIO(v: [string, string] | [Dayjs, Dayjs]) {
if (!v) { if (!Array.isArray(v) || v.length <= 0) {
return; return;
} }
const beginTime = parseStrToDate(dateString[0], YYYY_MM_DD_HH_MM_SS);
const endTime = parseStrToDate(dateString[1], YYYY_MM_DD_HH_MM_SS);
getLoad({ getLoad({
type: 'io', type: 'io',
beginTime: beginTime.getTime(), beginTime: v[0].valueOf(),
endTime: endTime.getTime(), endTime: v[1].valueOf(),
neType: '#', neType: '#',
neId: '#', neId: '#',
}).then(res => { }).then(res => {
@@ -401,16 +396,15 @@ function fnGetQueryIO(v: any, dateString: [string, string]) {
} }
/**查询数据-Network */ /**查询数据-Network */
function fnGetQueryNetwork(v: any, dateString: [string, string]) { function fnGetQueryNetwork(v: [string, string] | [Dayjs, Dayjs]) {
if (!v) { console.log(v);
if (!Array.isArray(v) || v.length <= 0) {
return; return;
} }
const beginTime = parseStrToDate(dateString[0], YYYY_MM_DD_HH_MM_SS);
const endTime = parseStrToDate(dateString[1], YYYY_MM_DD_HH_MM_SS);
getLoad({ getLoad({
type: 'network', type: 'network',
beginTime: beginTime.getTime(), beginTime: v[0].valueOf(),
endTime: endTime.getTime(), endTime: v[1].valueOf(),
neType: '#', neType: '#',
neId: '#', neId: '#',
}).then(res => { }).then(res => {
@@ -441,14 +435,13 @@ onMounted(() => {
> >
<a-range-picker <a-range-picker
v-model:value="rangePicker.all" v-model:value="rangePicker.all"
:placeholder="rangePicker.placeholder"
:presets="rangePicker.presets"
:bordered="true"
:allow-clear="false" :allow-clear="false"
bordered style="width: 100%"
:show-time="{ format: 'HH:mm:ss' }" :show-time="{ format: 'HH:mm:ss' }"
format="YYYY-MM-DD HH:mm:ss" format="YYYY-MM-DD HH:mm:ss"
value-format="x"
:placeholder="rangePicker.placeholder"
:ranges="rangePicker.ranges"
style="width: 100%"
></a-range-picker> ></a-range-picker>
</a-form-item> </a-form-item>
</a-col> </a-col>
@@ -479,10 +472,9 @@ onMounted(() => {
bordered bordered
:show-time="{ format: 'HH:mm:ss' }" :show-time="{ format: 'HH:mm:ss' }"
format="YYYY-MM-DD HH:mm:ss" format="YYYY-MM-DD HH:mm:ss"
value-format="x"
:placeholder="rangePicker.placeholder" :placeholder="rangePicker.placeholder"
style="width: 100%" style="width: 100%"
@change="(_:any, d:[string,string]) => fnGetQuery('load', d)" @change="(v:any) => fnGetQuery('load', v)"
></a-range-picker> ></a-range-picker>
</template> </template>
@@ -509,10 +501,9 @@ onMounted(() => {
bordered bordered
:show-time="{ format: 'HH:mm:ss' }" :show-time="{ format: 'HH:mm:ss' }"
format="YYYY-MM-DD HH:mm:ss" format="YYYY-MM-DD HH:mm:ss"
value-format="x"
:placeholder="rangePicker.placeholder" :placeholder="rangePicker.placeholder"
style="width: 100%" style="width: 100%"
@change="(_:any, d:[string,string]) => fnGetQuery('cpu', d)" @change="(v:any) => fnGetQuery('cpu', v)"
></a-range-picker> ></a-range-picker>
</template> </template>
@@ -537,10 +528,9 @@ onMounted(() => {
bordered bordered
:show-time="{ format: 'HH:mm:ss' }" :show-time="{ format: 'HH:mm:ss' }"
format="YYYY-MM-DD HH:mm:ss" format="YYYY-MM-DD HH:mm:ss"
value-format="x"
:placeholder="rangePicker.placeholder" :placeholder="rangePicker.placeholder"
style="width: 100%" style="width: 100%"
@change="(_:any, d:[string,string]) => fnGetQuery('memory', d)" @change="(v:any) => fnGetQuery('memory', v)"
></a-range-picker> ></a-range-picker>
</template> </template>
@@ -567,7 +557,6 @@ onMounted(() => {
bordered bordered
:show-time="{ format: 'HH:mm:ss' }" :show-time="{ format: 'HH:mm:ss' }"
format="YYYY-MM-DD HH:mm:ss" format="YYYY-MM-DD HH:mm:ss"
value-format="x"
:placeholder="rangePicker.placeholder" :placeholder="rangePicker.placeholder"
style="width: 100%" style="width: 100%"
@change="fnGetQueryIO" @change="fnGetQueryIO"
@@ -595,10 +584,9 @@ onMounted(() => {
bordered bordered
:show-time="{ format: 'HH:mm:ss' }" :show-time="{ format: 'HH:mm:ss' }"
format="YYYY-MM-DD HH:mm:ss" format="YYYY-MM-DD HH:mm:ss"
value-format="x"
:placeholder="rangePicker.placeholder" :placeholder="rangePicker.placeholder"
style="width: 100%" style="width: 100%"
@change="fnGetQueryNetwork" @ok="fnGetQueryNetwork"
></a-range-picker> ></a-range-picker>
</template> </template>

View File

@@ -20,6 +20,7 @@ import { parseDateToStr } from '@/utils/date-utils';
import useDictStore from '@/store/modules/dict'; import useDictStore from '@/store/modules/dict';
import { RESULT_CODE_SUCCESS } from '@/constants/result-constants'; import { RESULT_CODE_SUCCESS } from '@/constants/result-constants';
import useI18n from '@/hooks/useI18n'; import useI18n from '@/hooks/useI18n';
import type { Dayjs } from 'dayjs';
const { t } = useI18n(); const { t } = useI18n();
const { getDict } = useDictStore(); const { getDict } = useDictStore();
@@ -32,7 +33,7 @@ let dict: {
}); });
/**开始结束时间 */ /**开始结束时间 */
let queryRangePicker = ref<[string, string]>(['', '']); let queryRangePicker = ref<[Dayjs, Dayjs] | undefined>(undefined);
/**查询参数 */ /**查询参数 */
let queryParams = reactive({ let queryParams = reactive({
@@ -43,9 +44,9 @@ let queryParams = reactive({
/**系统内置 */ /**系统内置 */
configType: undefined, configType: undefined,
/**记录开始时间 */ /**记录开始时间 */
beginTime: '', beginTime: undefined as number | undefined,
/**记录结束时间 */ /**记录结束时间 */
endTime: '', endTime: undefined as number | undefined,
/**当前页数 */ /**当前页数 */
pageNum: 1, pageNum: 1,
/**每页条数 */ /**每页条数 */
@@ -58,12 +59,12 @@ function fnQueryReset() {
configName: '', configName: '',
configKey: '', configKey: '',
configType: undefined, configType: undefined,
beginTime: '', beginTime: undefined,
endTime: '', endTime: undefined,
pageNum: 1, pageNum: 1,
pageSize: 20, pageSize: 20,
}); });
queryRangePicker.value = ['', '']; queryRangePicker.value = undefined;
tablePagination.current = 1; tablePagination.current = 1;
tablePagination.pageSize = 20; tablePagination.pageSize = 20;
fnGetList(); fnGetList();
@@ -439,13 +440,21 @@ function fnGetList(pageNum?: number) {
if (pageNum) { if (pageNum) {
queryParams.pageNum = pageNum; queryParams.pageNum = pageNum;
} }
if (!queryRangePicker.value) {
queryRangePicker.value = ['', '']; // 时间范围
if (
Array.isArray(queryRangePicker.value) &&
queryRangePicker.value.length > 0
) {
queryParams.beginTime = queryRangePicker.value[0].valueOf();
queryParams.endTime = queryRangePicker.value[1].valueOf();
} else {
queryParams.beginTime = undefined;
queryParams.endTime = undefined;
} }
queryParams.beginTime = queryRangePicker.value[0];
queryParams.endTime = queryRangePicker.value[1];
listConfig(toRaw(queryParams)).then(res => { listConfig(toRaw(queryParams)).then(res => {
if (res.code === RESULT_CODE_SUCCESS) { if (res.code === RESULT_CODE_SUCCESS) {
// 取消勾选 // 取消勾选
if (tableState.selectedRowKeys.length > 0) { if (tableState.selectedRowKeys.length > 0) {
tableState.selectedRowKeys = []; tableState.selectedRowKeys = [];
@@ -533,12 +542,11 @@ onMounted(() => {
> >
<a-range-picker <a-range-picker
v-model:value="queryRangePicker" v-model:value="queryRangePicker"
allow-clear :bordered="true"
bordered :allow-clear="true"
style="width: 100%"
:show-time="{ format: 'HH:mm:ss' }" :show-time="{ format: 'HH:mm:ss' }"
format="YYYY-MM-DD HH:mm:ss" format="YYYY-MM-DD HH:mm:ss"
value-format="x"
style="width: 100%"
></a-range-picker> ></a-range-picker>
</a-form-item> </a-form-item>
</a-col> </a-col>

View File

@@ -22,6 +22,7 @@ import useDictStore from '@/store/modules/dict';
import { MENU_PATH_INLINE } from '@/constants/menu-constants'; import { MENU_PATH_INLINE } from '@/constants/menu-constants';
import { RESULT_CODE_SUCCESS } from '@/constants/result-constants'; import { RESULT_CODE_SUCCESS } from '@/constants/result-constants';
import useI18n from '@/hooks/useI18n'; import useI18n from '@/hooks/useI18n';
import type { Dayjs } from 'dayjs';
const { t } = useI18n(); const { t } = useI18n();
const { getDict } = useDictStore(); const { getDict } = useDictStore();
const router = useRouter(); const router = useRouter();
@@ -37,7 +38,7 @@ let dict: {
}); });
/**开始结束时间 */ /**开始结束时间 */
let queryRangePicker = ref<[string, string]>(['', '']); let queryRangePicker = ref<[Dayjs, Dayjs] | undefined>(undefined);
/**查询参数 */ /**查询参数 */
let queryParams = reactive({ let queryParams = reactive({
@@ -48,9 +49,9 @@ let queryParams = reactive({
/**字典状态 */ /**字典状态 */
statusFlag: undefined, statusFlag: undefined,
/**记录开始时间 */ /**记录开始时间 */
beginTime: '', beginTime: undefined as number | undefined,
/**记录结束时间 */ /**记录结束时间 */
endTime: '', endTime: undefined as number | undefined,
/**当前页数 */ /**当前页数 */
pageNum: 1, pageNum: 1,
/**每页条数 */ /**每页条数 */
@@ -63,12 +64,12 @@ function fnQueryReset() {
dictName: '', dictName: '',
dictType: '', dictType: '',
statusFlag: undefined, statusFlag: undefined,
beginTime: '', beginTime: undefined,
endTime: '', endTime: undefined,
pageNum: 1, pageNum: 1,
pageSize: 20, pageSize: 20,
}); });
queryRangePicker.value = ['', '']; queryRangePicker.value = undefined;
tablePagination.current = 1; tablePagination.current = 1;
tablePagination.pageSize = 20; tablePagination.pageSize = 20;
fnGetList(); fnGetList();
@@ -440,13 +441,19 @@ function fnGetList(pageNum?: number) {
if (pageNum) { if (pageNum) {
queryParams.pageNum = pageNum; queryParams.pageNum = pageNum;
} }
if (!queryRangePicker.value) { // 时间范围
queryRangePicker.value = ['', '']; if (
Array.isArray(queryRangePicker.value) &&
queryRangePicker.value.length > 0
) {
queryParams.beginTime = queryRangePicker.value[0].valueOf();
queryParams.endTime = queryRangePicker.value[1].valueOf();
} else {
queryParams.beginTime = undefined;
queryParams.endTime = undefined;
} }
queryParams.beginTime = queryRangePicker.value[0];
queryParams.endTime = queryRangePicker.value[1];
listType(toRaw(queryParams)).then(res => { listType(toRaw(queryParams)).then(res => {
if (res.code === RESULT_CODE_SUCCESS) { if (res.code === RESULT_CODE_SUCCESS) {
// 取消勾选 // 取消勾选
if (tableState.selectedRowKeys.length > 0) { if (tableState.selectedRowKeys.length > 0) {
tableState.selectedRowKeys = []; tableState.selectedRowKeys = [];
@@ -531,12 +538,11 @@ onMounted(() => {
> >
<a-range-picker <a-range-picker
v-model:value="queryRangePicker" v-model:value="queryRangePicker"
allow-clear :bordered="true"
bordered :allow-clear="true"
style="width: 100%"
:show-time="{ format: 'HH:mm:ss' }" :show-time="{ format: 'HH:mm:ss' }"
format="YYYY-MM-DD HH:mm:ss" format="YYYY-MM-DD HH:mm:ss"
value-format="x"
style="width: 100%"
></a-range-picker> ></a-range-picker>
</a-form-item> </a-form-item>
</a-col> </a-col>
@@ -671,7 +677,10 @@ onMounted(() => {
> >
<template #bodyCell="{ column, record }"> <template #bodyCell="{ column, record }">
<template v-if="column.key === 'statusFlag'"> <template v-if="column.key === 'statusFlag'">
<DictTag :options="dict.sysNormalDisable" :value="record.statusFlag" /> <DictTag
:options="dict.sysNormalDisable"
:value="record.statusFlag"
/>
</template> </template>
<template v-if="column.key === 'dictId'"> <template v-if="column.key === 'dictId'">
<a-space :size="8" align="center"> <a-space :size="8" align="center">
@@ -741,7 +750,10 @@ onMounted(() => {
<a-form-item :label="t('views.system.dict.dictType')" name="dictType"> <a-form-item :label="t('views.system.dict.dictType')" name="dictType">
{{ modalState.from.dictType }} {{ modalState.from.dictType }}
</a-form-item> </a-form-item>
<a-form-item :label="t('views.system.dict.dictSatus')" name="statusFlag"> <a-form-item
:label="t('views.system.dict.dictSatus')"
name="statusFlag"
>
<DictTag <DictTag
:options="dict.sysNormalDisable" :options="dict.sysNormalDisable"
:value="modalState.from.statusFlag" :value="modalState.from.statusFlag"
@@ -801,7 +813,10 @@ onMounted(() => {
allow-clear allow-clear
></a-input> ></a-input>
</a-form-item> </a-form-item>
<a-form-item :label="t('views.system.dict.dictSatus')" name="statusFlag"> <a-form-item
:label="t('views.system.dict.dictSatus')"
name="statusFlag"
>
<a-select <a-select
v-model:value="modalState.from.statusFlag" v-model:value="modalState.from.statusFlag"
default-value="0" default-value="0"

View File

@@ -17,6 +17,7 @@ import { parseDateToStr } from '@/utils/date-utils';
import useDictStore from '@/store/modules/dict'; import useDictStore from '@/store/modules/dict';
import { RESULT_CODE_SUCCESS } from '@/constants/result-constants'; import { RESULT_CODE_SUCCESS } from '@/constants/result-constants';
import useI18n from '@/hooks/useI18n'; import useI18n from '@/hooks/useI18n';
import type { Dayjs } from 'dayjs';
const { t } = useI18n(); const { t } = useI18n();
const { getDict } = useDictStore(); const { getDict } = useDictStore();
@@ -29,7 +30,7 @@ let dict: {
}); });
/**开始结束时间 */ /**开始结束时间 */
let queryRangePicker = ref<[string, string]>(['', '']); let queryRangePicker = ref<[Dayjs, Dayjs] | undefined>(undefined);
/**查询参数 */ /**查询参数 */
let queryParams = reactive({ let queryParams = reactive({
@@ -39,10 +40,10 @@ let queryParams = reactive({
userName: '', userName: '',
/**登录状态 */ /**登录状态 */
statusFlag: undefined, statusFlag: undefined,
/**开始时间 */ /**记录开始时间 */
beginTime: '', beginTime: undefined as number | undefined,
/**结束时间 */ /**记录结束时间 */
endTime: '', endTime: undefined as number | undefined,
/**当前页数 */ /**当前页数 */
pageNum: 1, pageNum: 1,
/**每页条数 */ /**每页条数 */
@@ -55,12 +56,12 @@ function fnQueryReset() {
loginIp: '', loginIp: '',
userName: '', userName: '',
statusFlag: undefined, statusFlag: undefined,
beginTime: '', beginTime: undefined,
endTime: '', endTime: undefined,
pageNum: 1, pageNum: 1,
pageSize: 20, pageSize: 20,
}); });
queryRangePicker.value = ['', '']; queryRangePicker.value = undefined;
tablePagination.current = 1; tablePagination.current = 1;
tablePagination.pageSize = 20; tablePagination.pageSize = 20;
fnGetList(); fnGetList();
@@ -325,13 +326,21 @@ function fnGetList(pageNum?: number) {
if (pageNum) { if (pageNum) {
queryParams.pageNum = pageNum; queryParams.pageNum = pageNum;
} }
if (!queryRangePicker.value) {
queryRangePicker.value = ['', '']; // 时间范围
if (
Array.isArray(queryRangePicker.value) &&
queryRangePicker.value.length > 0
) {
queryParams.beginTime = queryRangePicker.value[0].valueOf();
queryParams.endTime = queryRangePicker.value[1].valueOf();
} else {
queryParams.beginTime = undefined;
queryParams.endTime = undefined;
} }
queryParams.beginTime = queryRangePicker.value[0];
queryParams.endTime = queryRangePicker.value[1];
listSysLogLogin(toRaw(queryParams)).then(res => { listSysLogLogin(toRaw(queryParams)).then(res => {
if (res.code === RESULT_CODE_SUCCESS) { if (res.code === RESULT_CODE_SUCCESS) {
// 取消勾选 // 取消勾选
if (tableState.selectedRowKeys.length > 0) { if (tableState.selectedRowKeys.length > 0) {
tableState.selectedRowKeys = []; tableState.selectedRowKeys = [];
@@ -424,12 +433,11 @@ onMounted(() => {
> >
<a-range-picker <a-range-picker
v-model:value="queryRangePicker" v-model:value="queryRangePicker"
allow-clear :bordered="true"
bordered :allow-clear="true"
style="width: 100%"
:show-time="{ format: 'HH:mm:ss' }" :show-time="{ format: 'HH:mm:ss' }"
format="YYYY-MM-DD HH:mm:ss" format="YYYY-MM-DD HH:mm:ss"
value-format="x"
style="width: 100%"
></a-range-picker> ></a-range-picker>
</a-form-item> </a-form-item>
</a-col> </a-col>
@@ -543,7 +551,10 @@ onMounted(() => {
> >
<template #bodyCell="{ column, record }"> <template #bodyCell="{ column, record }">
<template v-if="column.key === 'statusFlag'"> <template v-if="column.key === 'statusFlag'">
<DictTag :options="dict.sysCommonStatus" :value="record.statusFlag" /> <DictTag
:options="dict.sysCommonStatus"
:value="record.statusFlag"
/>
</template> </template>
</template> </template>
</a-table> </a-table>

View File

@@ -17,6 +17,7 @@ import { parseDateToStr } from '@/utils/date-utils';
import useDictStore from '@/store/modules/dict'; import useDictStore from '@/store/modules/dict';
import { RESULT_CODE_SUCCESS } from '@/constants/result-constants'; import { RESULT_CODE_SUCCESS } from '@/constants/result-constants';
import useI18n from '@/hooks/useI18n'; import useI18n from '@/hooks/useI18n';
import type { Dayjs } from 'dayjs';
const { t } = useI18n(); const { t } = useI18n();
const { getDict } = useDictStore(); const { getDict } = useDictStore();
@@ -32,7 +33,7 @@ let dict: {
}); });
/**开始结束时间 */ /**开始结束时间 */
let queryRangePicker = ref<[string, string]>(['', '']); let queryRangePicker = ref<[Dayjs, Dayjs] | undefined>(undefined);
/**查询参数 */ /**查询参数 */
let queryParams = reactive({ let queryParams = reactive({
@@ -44,10 +45,10 @@ let queryParams = reactive({
businessType: undefined, businessType: undefined,
/**操作状态 */ /**操作状态 */
statusFlag: undefined, statusFlag: undefined,
/**开始时间 */ /**记录开始时间 */
beginTime: '', beginTime: undefined as number | undefined,
/**结束时间 */ /**记录结束时间 */
endTime: '', endTime: undefined as number | undefined,
/**当前页数 */ /**当前页数 */
pageNum: 1, pageNum: 1,
/**每页条数 */ /**每页条数 */
@@ -61,12 +62,12 @@ function fnQueryReset() {
operaBy: '', operaBy: '',
businessType: undefined, businessType: undefined,
statusFlag: undefined, statusFlag: undefined,
beginTime: '', beginTime: undefined,
endTime: '', endTime: undefined,
pageNum: 1, pageNum: 1,
pageSize: 20, pageSize: 20,
}); });
queryRangePicker.value = ['', '']; queryRangePicker.value = undefined;
tablePagination.current = 1; tablePagination.current = 1;
tablePagination.pageSize = 20; tablePagination.pageSize = 20;
fnGetList(); fnGetList();
@@ -349,11 +350,17 @@ function fnGetList(pageNum?: number) {
if (pageNum) { if (pageNum) {
queryParams.pageNum = pageNum; queryParams.pageNum = pageNum;
} }
if (!queryRangePicker.value) { // 时间范围
queryRangePicker.value = ['', '']; if (
Array.isArray(queryRangePicker.value) &&
queryRangePicker.value.length > 0
) {
queryParams.beginTime = queryRangePicker.value[0].valueOf();
queryParams.endTime = queryRangePicker.value[1].valueOf();
} else {
queryParams.beginTime = undefined;
queryParams.endTime = undefined;
} }
queryParams.beginTime = queryRangePicker.value[0];
queryParams.endTime = queryRangePicker.value[1];
listSysLogOperate(toRaw(queryParams)).then(res => { listSysLogOperate(toRaw(queryParams)).then(res => {
if (res.code === RESULT_CODE_SUCCESS) { if (res.code === RESULT_CODE_SUCCESS) {
// 取消勾选 // 取消勾选
@@ -456,12 +463,11 @@ onMounted(() => {
> >
<a-range-picker <a-range-picker
v-model:value="queryRangePicker" v-model:value="queryRangePicker"
allow-clear :bordered="true"
bordered :allow-clear="true"
style="width: 100%"
:show-time="{ format: 'HH:mm:ss' }" :show-time="{ format: 'HH:mm:ss' }"
format="YYYY-MM-DD HH:mm:ss" format="YYYY-MM-DD HH:mm:ss"
value-format="x"
style="width: 100%"
></a-range-picker> ></a-range-picker>
</a-form-item> </a-form-item>
</a-col> </a-col>

View File

@@ -33,6 +33,7 @@ import { MENU_PATH_INLINE } from '@/constants/menu-constants';
import { RESULT_CODE_SUCCESS } from '@/constants/result-constants'; import { RESULT_CODE_SUCCESS } from '@/constants/result-constants';
import useI18n from '@/hooks/useI18n'; import useI18n from '@/hooks/useI18n';
import useUserStore from '@/store/modules/user'; import useUserStore from '@/store/modules/user';
import type { Dayjs } from 'dayjs';
const { t } = useI18n(); const { t } = useI18n();
const { getDict } = useDictStore(); const { getDict } = useDictStore();
const userStore = useUserStore(); const userStore = useUserStore();
@@ -49,7 +50,7 @@ let dict: {
}); });
/**开始结束时间 */ /**开始结束时间 */
let queryRangePicker = ref<[string, string]>(['', '']); let queryRangePicker = ref<[Dayjs, Dayjs] | undefined>(undefined);
/**查询参数 */ /**查询参数 */
let queryParams = reactive({ let queryParams = reactive({
@@ -60,9 +61,9 @@ let queryParams = reactive({
/**角色状态 */ /**角色状态 */
statusFlag: undefined, statusFlag: undefined,
/**记录开始时间 */ /**记录开始时间 */
beginTime: '', beginTime: undefined as number | undefined,
/**记录结束时间 */ /**记录结束时间 */
endTime: '', endTime: undefined as number | undefined,
/**当前页数 */ /**当前页数 */
pageNum: 1, pageNum: 1,
/**每页条数 */ /**每页条数 */
@@ -75,12 +76,12 @@ function fnQueryReset() {
roleName: '', roleName: '',
roleKey: '', roleKey: '',
statusFlag: undefined, statusFlag: undefined,
beginTime: '', beginTime: undefined,
endTime: '', endTime: undefined,
pageNum: 1, pageNum: 1,
pageSize: 20, pageSize: 20,
}); });
queryRangePicker.value = ['', '']; queryRangePicker.value = undefined;
tablePagination.current = 1; tablePagination.current = 1;
tablePagination.pageSize = 20; tablePagination.pageSize = 20;
fnGetList(); fnGetList();
@@ -728,11 +729,17 @@ function fnGetList(pageNum?: number) {
if (pageNum) { if (pageNum) {
queryParams.pageNum = pageNum; queryParams.pageNum = pageNum;
} }
if (!queryRangePicker.value) { // 时间范围
queryRangePicker.value = ['', '']; if (
Array.isArray(queryRangePicker.value) &&
queryRangePicker.value.length > 0
) {
queryParams.beginTime = queryRangePicker.value[0].valueOf();
queryParams.endTime = queryRangePicker.value[1].valueOf();
} else {
queryParams.beginTime = undefined;
queryParams.endTime = undefined;
} }
queryParams.beginTime = queryRangePicker.value[0];
queryParams.endTime = queryRangePicker.value[1];
listRole(toRaw(queryParams)).then(res => { listRole(toRaw(queryParams)).then(res => {
if (res.code === RESULT_CODE_SUCCESS) { if (res.code === RESULT_CODE_SUCCESS) {
// 取消勾选 // 取消勾选
@@ -816,12 +823,11 @@ onMounted(() => {
> >
<a-range-picker <a-range-picker
v-model:value="queryRangePicker" v-model:value="queryRangePicker"
allow-clear :bordered="true"
bordered :allow-clear="true"
style="width: 100%"
:show-time="{ format: 'HH:mm:ss' }" :show-time="{ format: 'HH:mm:ss' }"
format="YYYY-MM-DD HH:mm:ss" format="YYYY-MM-DD HH:mm:ss"
value-format="x"
style="width: 100%"
></a-range-picker> ></a-range-picker>
</a-form-item> </a-form-item>
</a-col> </a-col>

View File

@@ -35,6 +35,7 @@ import useUserStore from '@/store/modules/user';
import { DataNode } from 'ant-design-vue/es/tree'; import { DataNode } from 'ant-design-vue/es/tree';
import { RESULT_CODE_SUCCESS } from '@/constants/result-constants'; import { RESULT_CODE_SUCCESS } from '@/constants/result-constants';
import { uploadFile } from '@/api/tool/file'; import { uploadFile } from '@/api/tool/file';
import type { Dayjs } from 'dayjs';
const { getDict } = useDictStore(); const { getDict } = useDictStore();
const userStore = useUserStore(); const userStore = useUserStore();
const { t } = useI18n(); const { t } = useI18n();
@@ -51,7 +52,7 @@ let dict: {
}); });
/**开始结束时间 */ /**开始结束时间 */
let queryRangePicker = ref<[string, string]>(['', '']); let queryRangePicker = ref<[Dayjs, Dayjs] | undefined>(undefined);
/**查询参数 */ /**查询参数 */
let queryParams = reactive({ let queryParams = reactive({
@@ -64,9 +65,9 @@ let queryParams = reactive({
/**用户状态 */ /**用户状态 */
statusFlag: undefined, statusFlag: undefined,
/**记录开始时间 */ /**记录开始时间 */
beginTime: '', beginTime: undefined as number | undefined,
/**记录结束时间 */ /**记录结束时间 */
endTime: '', endTime: undefined as number | undefined,
/**当前页数 */ /**当前页数 */
pageNum: 1, pageNum: 1,
/**每页条数 */ /**每页条数 */
@@ -80,12 +81,12 @@ function fnQueryReset() {
phone: '', phone: '',
deptId: undefined, deptId: undefined,
statusFlag: undefined, statusFlag: undefined,
beginTime: '', beginTime: undefined,
endTime: '', endTime: undefined,
pageNum: 1, pageNum: 1,
pageSize: 20, pageSize: 20,
}); });
queryRangePicker.value = ['', '']; queryRangePicker.value = undefined;
tablePagination.current = 1; tablePagination.current = 1;
tablePagination.pageSize = 20; tablePagination.pageSize = 20;
fnGetList(); fnGetList();
@@ -747,11 +748,19 @@ function fnGetList(pageNum?: number) {
if (pageNum) { if (pageNum) {
queryParams.pageNum = pageNum; queryParams.pageNum = pageNum;
} }
if (!queryRangePicker.value) {
queryRangePicker.value = ['', '']; // 时间范围
if (
Array.isArray(queryRangePicker.value) &&
queryRangePicker.value.length > 0
) {
queryParams.beginTime = queryRangePicker.value[0].valueOf();
queryParams.endTime = queryRangePicker.value[1].valueOf();
} else {
queryParams.beginTime = undefined;
queryParams.endTime = undefined;
} }
queryParams.beginTime = queryRangePicker.value[0];
queryParams.endTime = queryRangePicker.value[1];
listUser(toRaw(queryParams)).then(res => { listUser(toRaw(queryParams)).then(res => {
if (res.code === RESULT_CODE_SUCCESS) { if (res.code === RESULT_CODE_SUCCESS) {
// 取消勾选 // 取消勾选
@@ -1061,7 +1070,10 @@ onMounted(() => {
<template #icon><FormOutlined /></template> <template #icon><FormOutlined /></template>
</a-button> </a-button>
</a-tooltip> </a-tooltip>
<a-tooltip placement="topLeft" v-if="record.userId != userStore.userId"> <a-tooltip
placement="topLeft"
v-if="record.userId != userStore.userId"
>
<template #title>{{ t('common.deleteText') }}</template> <template #title>{{ t('common.deleteText') }}</template>
<a-button <a-button
type="link" type="link"
@@ -1071,7 +1083,10 @@ onMounted(() => {
<template #icon><DeleteOutlined /></template> <template #icon><DeleteOutlined /></template>
</a-button> </a-button>
</a-tooltip> </a-tooltip>
<a-tooltip placement="topLeft" v-if="record.userId != userStore.userId"> <a-tooltip
placement="topLeft"
v-if="record.userId != userStore.userId"
>
<template #title> <template #title>
{{ t('views.system.user.resetPwd') }} {{ t('views.system.user.resetPwd') }}
</template> </template>