Compare commits

..

4 Commits

Author SHA1 Message Date
tianyongbao
1fdbc95b49 fix: 监测曲线功能优化。 2026-01-11 16:22:55 +08:00
tianyongbao
e0a52e4430 fix:功能进一步优化-1。 2026-01-10 02:01:09 +08:00
tianyongbao
48981e0cca fix:功能进一步优化。 2026-01-10 01:59:53 +08:00
tianyongbao
6b878e49ff fix: 功能完善。 2026-01-10 01:42:39 +08:00
4 changed files with 31 additions and 27 deletions

View File

@@ -19,14 +19,10 @@ declare module 'vue' {
ElButton: typeof import('element-plus/es')['ElButton'] ElButton: typeof import('element-plus/es')['ElButton']
ElButtonGroup: typeof import('element-plus/es')['ElButtonGroup'] ElButtonGroup: typeof import('element-plus/es')['ElButtonGroup']
ElCard: typeof import('element-plus/es')['ElCard'] 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'] ElCol: typeof import('element-plus/es')['ElCol']
ElColorPicker: typeof import('element-plus/es')['ElColorPicker'] ElColorPicker: typeof import('element-plus/es')['ElColorPicker']
ElConfigProvider: typeof import('element-plus/es')['ElConfigProvider'] ElConfigProvider: typeof import('element-plus/es')['ElConfigProvider']
ElDatePicker: typeof import('element-plus/es')['ElDatePicker'] ElDatePicker: typeof import('element-plus/es')['ElDatePicker']
ElDescriptions: typeof import('element-plus/es')['ElDescriptions']
ElDescriptionsItem: typeof import('element-plus/es')['ElDescriptionsItem']
ElDialog: typeof import('element-plus/es')['ElDialog'] ElDialog: typeof import('element-plus/es')['ElDialog']
ElDivider: typeof import('element-plus/es')['ElDivider'] ElDivider: typeof import('element-plus/es')['ElDivider']
ElDrawer: typeof import('element-plus/es')['ElDrawer'] ElDrawer: typeof import('element-plus/es')['ElDrawer']
@@ -37,7 +33,6 @@ declare module 'vue' {
ElForm: typeof import('element-plus/es')['ElForm'] ElForm: typeof import('element-plus/es')['ElForm']
ElFormItem: typeof import('element-plus/es')['ElFormItem'] ElFormItem: typeof import('element-plus/es')['ElFormItem']
ElIcon: typeof import('element-plus/es')['ElIcon'] ElIcon: typeof import('element-plus/es')['ElIcon']
ElImage: typeof import('element-plus/es')['ElImage']
ElInput: typeof import('element-plus/es')['ElInput'] ElInput: typeof import('element-plus/es')['ElInput']
ElInputNumber: typeof import('element-plus/es')['ElInputNumber'] ElInputNumber: typeof import('element-plus/es')['ElInputNumber']
ElMenu: typeof import('element-plus/es')['ElMenu'] ElMenu: typeof import('element-plus/es')['ElMenu']
@@ -45,9 +40,6 @@ declare module 'vue' {
ElOption: typeof import('element-plus/es')['ElOption'] ElOption: typeof import('element-plus/es')['ElOption']
ElPagination: typeof import('element-plus/es')['ElPagination'] ElPagination: typeof import('element-plus/es')['ElPagination']
ElPopover: typeof import('element-plus/es')['ElPopover'] ElPopover: typeof import('element-plus/es')['ElPopover']
ElRadio: typeof import('element-plus/es')['ElRadio']
ElRadioButton: typeof import('element-plus/es')['ElRadioButton']
ElRadioGroup: typeof import('element-plus/es')['ElRadioGroup']
ElRow: typeof import('element-plus/es')['ElRow'] ElRow: typeof import('element-plus/es')['ElRow']
ElScrollbar: typeof import('element-plus/es')['ElScrollbar'] ElScrollbar: typeof import('element-plus/es')['ElScrollbar']
ElSelect: typeof import('element-plus/es')['ElSelect'] ElSelect: typeof import('element-plus/es')['ElSelect']
@@ -58,18 +50,13 @@ declare module 'vue' {
ElTabPane: typeof import('element-plus/es')['ElTabPane'] ElTabPane: typeof import('element-plus/es')['ElTabPane']
ElTabs: typeof import('element-plus/es')['ElTabs'] ElTabs: typeof import('element-plus/es')['ElTabs']
ElTag: typeof import('element-plus/es')['ElTag'] ElTag: typeof import('element-plus/es')['ElTag']
ElText: typeof import('element-plus/es')['ElText']
ElTooltip: typeof import('element-plus/es')['ElTooltip'] ElTooltip: typeof import('element-plus/es')['ElTooltip']
ElTree: typeof import('element-plus/es')['ElTree'] 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'] FileUpload: typeof import('./../components/FileUpload/index.vue')['default']
FlowChart: typeof import('./../components/Process/flowChart.vue')['default'] FlowChart: typeof import('./../components/Process/flowChart.vue')['default']
FlowChartImg: typeof import('./../components/Process/flowChartImg.vue')['default'] FlowChartImg: typeof import('./../components/Process/flowChartImg.vue')['default']
Hamburger: typeof import('./../components/Hamburger/index.vue')['default'] Hamburger: typeof import('./../components/Hamburger/index.vue')['default']
IconSelect: typeof import('./../components/IconSelect/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']
IFrame: typeof import('./../components/iFrame/index.vue')['default'] IFrame: typeof import('./../components/iFrame/index.vue')['default']
ImagePreview: typeof import('./../components/ImagePreview/index.vue')['default'] ImagePreview: typeof import('./../components/ImagePreview/index.vue')['default']
ImageUpload: typeof import('./../components/ImageUpload/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 day = String(date.getDate()).padStart(2, '0');
const hours = String(date.getHours()).padStart(2, '0'); const hours = String(date.getHours()).padStart(2, '0');
const minutes = String(date.getMinutes()).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 => { const yData = historyData.value.map(item => {
@@ -437,7 +438,8 @@ const updateChart = () => {
data: xData, data: xData,
axisLabel: { axisLabel: {
interval: Math.floor(xData.length / 20), // 控制显示密度 interval: Math.floor(xData.length / 20), // 控制显示密度
rotate: 0 rotate: 20, // 倾斜45度
fontSize: 11
} }
}, },
yAxis: { yAxis: {
@@ -453,6 +455,8 @@ const updateChart = () => {
type: chartType.value, type: chartType.value,
data: yData, data: yData,
smooth: chartType.value === 'line', smooth: chartType.value === 'line',
symbol: 'circle', // 使用圆形标记
symbolSize: chartType.value === 'line' ? 0 : 6, // 折线图默认不显示点,柱状图不受影响
itemStyle: { itemStyle: {
color: config.color color: config.color
}, },
@@ -461,6 +465,17 @@ const updateChart = () => {
} : undefined, } : undefined,
areaStyle: chartType.value === 'line' ? { areaStyle: chartType.value === 'line' ? {
opacity: 0.1 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 } : undefined
} }
] ]
@@ -527,6 +542,8 @@ const handleDeviceSelect = (device: DeviceVO) => {
selectedDevice.value = device; selectedDevice.value = device;
queryParams.value.serialNum = device.serialNum; queryParams.value.serialNum = device.serialNum;
deviceSelectVisible.value = false; deviceSelectVisible.value = false;
// 选择设备后自动查询
getHistoryList();
}; };
/** 取消设备选择 */ /** 取消设备选择 */

View File

@@ -6,10 +6,10 @@
<lang-select /> <lang-select />
</div> --> </div> -->
<el-form-item v-if="tenantEnabled" prop="tenantId"> <el-form-item v-if="tenantEnabled" prop="tenantId">
<!-- <el-select v-model="loginForm.tenantId" filterable :placeholder="proxy.$t('login.selectPlaceholder')" style="width: 100%">--> <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>--> <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>--> <template #prefix><svg-icon icon-class="company" class="el-input__icon input-icon" /></template>
<!-- </el-select>--> </el-select>
</el-form-item> </el-form-item>
<el-form-item prop="username"> <el-form-item prop="username">
<el-input v-model="loginForm.username" type="text" size="large" auto-complete="off" :placeholder="proxy.$t('login.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>({ const loginForm = ref<LoginData>({
tenantId: '111111', tenantId: '111111',
username: 'fishery', username: 'admin',
password: 'fishery@123', password: 'admin123',
rememberMe: false, rememberMe: false,
code: '', code: '',
uuid: '' uuid: ''
@@ -216,7 +216,7 @@ const doSocialLogin = (type: string) => {
onMounted(() => { onMounted(() => {
getCode(); getCode();
// initTenantList(); initTenantList();
getLoginData(); getLoginData();
}); });
</script> </script>
@@ -301,7 +301,7 @@ onMounted(() => {
backdrop-filter: blur(2px); backdrop-filter: blur(2px);
text-shadow: 1px 1px 3px rgba(0, 0, 0, 0.8); text-shadow: 1px 1px 3px rgba(0, 0, 0, 0.8);
z-index: 2; z-index: 2;
span { span {
padding: 5px 15px; padding: 5px 15px;
border-radius: 15px; border-radius: 15px;
@@ -309,12 +309,12 @@ onMounted(() => {
backdrop-filter: blur(5px); backdrop-filter: blur(5px);
border: 1px solid rgba(255, 255, 255, 0.1); border: 1px solid rgba(255, 255, 255, 0.1);
} }
a { a {
color:rgb(255, 255, 255) !important; color:rgb(255, 255, 255) !important;
text-decoration: none; text-decoration: none;
transition: color 0.3s ease; transition: color 0.3s ease;
&:hover { &:hover {
color: #66b1ff !important; color: #66b1ff !important;
text-shadow: 0 0 5px rgba(64, 158, 255, 0.5); text-shadow: 0 0 5px rgba(64, 158, 255, 0.5);

View File

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