10 Commits
dev ... test

Author SHA1 Message Date
tianyongbao
64c165e394 fix: 监测曲线功能优化。 2026-01-11 16:24:39 +08:00
tianyongbao
6613a0651b fix:功能进一步优化。 2026-01-10 02:02:28 +08:00
tianyongbao
bccb7d93e3 fix: 功能完善。 2026-01-10 02:02:12 +08:00
tianyongbao
621fee41a4 Merge branch 'dev' into test 2025-12-14 23:17:30 +08:00
tianyongbao
d3403d02f9 feat: 新功能开发,页面开发。 2025-11-05 00:45:11 +08:00
tianyongbao
6eefc67046 feat: 新功能开发,设备实时数据查看等。 2025-11-05 00:45:07 +08:00
tianyongbao
7e8ef7aa0f feat: 新功能开发,设备告警信息、设备实时数据查看等。 2025-10-30 11:22:19 +08:00
tianyongbao
6da46f87ad fix: 登录页,去掉租户选择。 2025-10-24 20:42:33 +08:00
tianyongbao
e9be8f13ed fix: 首页功能优化。 2025-10-24 20:42:13 +08:00
tianyongbao
3b39f9f3f3 feat:功能优化,设备报警信息、微信缓存用户,操作记录信息,代码提交。 2025-10-24 20:42:09 +08:00
4 changed files with 31 additions and 26 deletions

View File

@@ -19,8 +19,6 @@ declare module 'vue' {
ElButton: typeof import('element-plus/es')['ElButton']
ElButtonGroup: typeof import('element-plus/es')['ElButtonGroup']
ElCard: typeof import('element-plus/es')['ElCard']
ElCheckbox: typeof import('element-plus/es')['ElCheckbox']
ElCheckboxGroup: typeof import('element-plus/es')['ElCheckboxGroup']
ElCol: typeof import('element-plus/es')['ElCol']
ElColorPicker: typeof import('element-plus/es')['ElColorPicker']
ElConfigProvider: typeof import('element-plus/es')['ElConfigProvider']
@@ -37,17 +35,13 @@ declare module 'vue' {
ElForm: typeof import('element-plus/es')['ElForm']
ElFormItem: typeof import('element-plus/es')['ElFormItem']
ElIcon: typeof import('element-plus/es')['ElIcon']
ElImage: typeof import('element-plus/es')['ElImage']
ElInput: typeof import('element-plus/es')['ElInput']
ElInputNumber: typeof import('element-plus/es')['ElInputNumber']
ElLink: typeof import('element-plus/es')['ElLink']
ElMenu: typeof import('element-plus/es')['ElMenu']
ElMenuItem: typeof import('element-plus/es')['ElMenuItem']
ElOption: typeof import('element-plus/es')['ElOption']
ElPagination: typeof import('element-plus/es')['ElPagination']
ElPopover: typeof import('element-plus/es')['ElPopover']
ElRadio: typeof import('element-plus/es')['ElRadio']
ElRadioGroup: typeof import('element-plus/es')['ElRadioGroup']
ElRow: typeof import('element-plus/es')['ElRow']
ElScrollbar: typeof import('element-plus/es')['ElScrollbar']
ElSelect: typeof import('element-plus/es')['ElSelect']
@@ -58,19 +52,13 @@ declare module 'vue' {
ElTabPane: typeof import('element-plus/es')['ElTabPane']
ElTabs: typeof import('element-plus/es')['ElTabs']
ElTag: typeof import('element-plus/es')['ElTag']
ElText: typeof import('element-plus/es')['ElText']
ElTooltip: typeof import('element-plus/es')['ElTooltip']
ElTree: typeof import('element-plus/es')['ElTree']
ElTreeSelect: typeof import('element-plus/es')['ElTreeSelect']
ElUpload: typeof import('element-plus/es')['ElUpload']
FileUpload: typeof import('./../components/FileUpload/index.vue')['default']
FlowChart: typeof import('./../components/Process/flowChart.vue')['default']
FlowChartImg: typeof import('./../components/Process/flowChartImg.vue')['default']
Hamburger: typeof import('./../components/Hamburger/index.vue')['default']
IconSelect: typeof import('./../components/IconSelect/index.vue')['default']
IEpCaretBottom: typeof import('~icons/ep/caret-bottom')['default']
IEpCaretTop: typeof import('~icons/ep/caret-top')['default']
IEpUploadFilled: typeof import('~icons/ep/upload-filled')['default']
IFrame: typeof import('./../components/iFrame/index.vue')['default']
ImagePreview: typeof import('./../components/ImagePreview/index.vue')['default']
ImageUpload: typeof import('./../components/ImageUpload/index.vue')['default']

View File

@@ -404,7 +404,8 @@ const updateChart = () => {
const day = String(date.getDate()).padStart(2, '0');
const hours = String(date.getHours()).padStart(2, '0');
const minutes = String(date.getMinutes()).padStart(2, '0');
return `${month}-${day} ${hours}:${minutes}`;
const seconds = String(date.getSeconds()).padStart(2, '0');
return `${month}-${day} ${hours}:${minutes}:${seconds}`;
});
const yData = historyData.value.map(item => {
@@ -437,7 +438,8 @@ const updateChart = () => {
data: xData,
axisLabel: {
interval: Math.floor(xData.length / 20), // 控制显示密度
rotate: 0
rotate: 20, // 倾斜45度
fontSize: 11
}
},
yAxis: {
@@ -453,6 +455,8 @@ const updateChart = () => {
type: chartType.value,
data: yData,
smooth: chartType.value === 'line',
symbol: 'circle', // 使用圆形标记
symbolSize: chartType.value === 'line' ? 0 : 6, // 折线图默认不显示点,柱状图不受影响
itemStyle: {
color: config.color
},
@@ -461,6 +465,17 @@ const updateChart = () => {
} : undefined,
areaStyle: chartType.value === 'line' ? {
opacity: 0.1
} : undefined,
emphasis: chartType.value === 'line' ? {
symbol: 'circle',
symbolSize: 12,
itemStyle: {
color: config.color,
borderColor: '#fff',
borderWidth: 3,
shadowBlur: 8,
shadowColor: config.color
}
} : undefined
}
]
@@ -527,6 +542,8 @@ const handleDeviceSelect = (device: DeviceVO) => {
selectedDevice.value = device;
queryParams.value.serialNum = device.serialNum;
deviceSelectVisible.value = false;
// 选择设备后自动查询
getHistoryList();
};
/** 取消设备选择 */

View File

@@ -6,10 +6,10 @@
<lang-select />
</div> -->
<el-form-item v-if="tenantEnabled" prop="tenantId">
<el-select v-model="loginForm.tenantId" filterable :placeholder="proxy.$t('login.selectPlaceholder')" style="width: 100%">
<el-option v-for="item in tenantList" :key="item.tenantId" :label="item.companyName" :value="item.tenantId"></el-option>
<template #prefix><svg-icon icon-class="company" class="el-input__icon input-icon" /></template>
</el-select>
<!-- <el-select v-model="loginForm.tenantId" filterable :placeholder="proxy.$t('login.selectPlaceholder')" style="width: 100%">-->
<!-- <el-option v-for="item in tenantList" :key="item.tenantId" :label="item.companyName" :value="item.tenantId"></el-option>-->
<!-- <template #prefix><svg-icon icon-class="company" class="el-input__icon input-icon" /></template>-->
<!-- </el-select>-->
</el-form-item>
<el-form-item prop="username">
<el-input v-model="loginForm.username" type="text" size="large" auto-complete="off" :placeholder="proxy.$t('login.username')">
@@ -87,8 +87,8 @@ const { t } = useI18n();
const loginForm = ref<LoginData>({
tenantId: '111111',
username: 'admin',
password: 'admin123',
username: 'fishery',
password: 'fishery@123',
rememberMe: false,
code: '',
uuid: ''
@@ -216,7 +216,7 @@ const doSocialLogin = (type: string) => {
onMounted(() => {
getCode();
initTenantList();
// initTenantList();
getLoginData();
});
</script>

View File

@@ -24,8 +24,8 @@ export default defineConfig(({ mode, command }) => {
open: true,
proxy: {
[env.VITE_APP_BASE_API]: {
target: 'http://localhost:8080',
// target: 'https://www.qdintc.com/fishery-api/',
// target: 'http://localhost:8080',
target: 'https://www.qdintc.com/fishery-api/',
changeOrigin: true,
ws: true,
rewrite: (path) => path.replace(new RegExp('^' + env.VITE_APP_BASE_API), '')