feat: 引入elementui部分组件

This commit is contained in:
Zhao Zhao Shen 2025-03-07 16:44:10 +08:00
parent cd08c70068
commit c85995c024
7 changed files with 1093 additions and 41 deletions

1055
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@ -14,6 +14,7 @@
"axios": "^1.7.9", "axios": "^1.7.9",
"core-js": "^3.8.3", "core-js": "^3.8.3",
"echarts": "^5.6.0", "echarts": "^5.6.0",
"element-plus": "^2.9.5",
"moment": "^2.30.1", "moment": "^2.30.1",
"moment-timezone": "^0.5.47", "moment-timezone": "^0.5.47",
"pinia": "^2.2.2", "pinia": "^2.2.2",
@ -27,7 +28,8 @@
"@vue/cli-plugin-eslint": "~5.0.0", "@vue/cli-plugin-eslint": "~5.0.0",
"@vue/cli-service": "~5.0.0", "@vue/cli-service": "~5.0.0",
"eslint": "^7.32.0", "eslint": "^7.32.0",
"eslint-plugin-vue": "^8.0.3" "eslint-plugin-vue": "^8.0.3",
"vite": "^6.2.1"
}, },
"eslintConfig": { "eslintConfig": {
"root": true, "root": true,

View File

@ -17,6 +17,10 @@ import pinia from './store';
import * as echarts from 'echarts'; import * as echarts from 'echarts';
import MessagePlugin from './plugins/message'; import MessagePlugin from './plugins/message';
// element-plus
import ElementPlus from 'element-plus'
import 'element-plus/dist/index.css'
// ix-siemens // ix-siemens
import '@siemens/ix/dist/siemens-ix/siemens-ix.css'; import '@siemens/ix/dist/siemens-ix/siemens-ix.css';
import { ixPlugin } from '@siemens/ix-vue'; import { ixPlugin } from '@siemens/ix-vue';
@ -27,4 +31,4 @@ const app = createApp(App);
app.config.globalProperties.$echarts = echarts; app.config.globalProperties.$echarts = echarts;
// 使用use将文件挂载上去 // 使用use将文件挂载上去
app.use(router).use(pinia).use(ixPlugin).use(MessagePlugin).mount('#app'); app.use(router).use(pinia).use(ixPlugin).use(ElementPlus).use(MessagePlugin).mount('#app');

15
src/stores/alarmStore.js Normal file
View File

@ -0,0 +1,15 @@
import { defineStore } from 'pinia';
import { ref } from 'vue';
export const useAlarmStore = defineStore('alarm', () => {
const alarmCount = ref(0);
const setAlarmCount = (count) => {
alarmCount.value = count;
};
return {
alarmCount,
setAlarmCount
};
});

View File

@ -322,6 +322,7 @@ import { ref, onMounted, getCurrentInstance, onUnmounted, defineEmits } from 'vu
import { IxChip, IxButton, IxDropdown, IxDropdownItem, IxDropdownHeader, IxDivider, IxTabItem, IxTabs } from '@siemens/ix-vue'; // Chip import { IxChip, IxButton, IxDropdown, IxDropdownItem, IxDropdownHeader, IxDivider, IxTabItem, IxTabs } from '@siemens/ix-vue'; // Chip
import { getCurrentReport, getHistoryReport, getGanttData, getStopReason, setStopReason } from '@/api/dashboard.js'; import { getCurrentReport, getHistoryReport, getGanttData, getStopReason, setStopReason } from '@/api/dashboard.js';
import ProcessGanttChart from '@/components/ProcessGanttChart.vue' import ProcessGanttChart from '@/components/ProcessGanttChart.vue'
import { useAlarmStore } from '@/stores/alarmStore'; // alarmStore
const emit = defineEmits(['send-data']); const emit = defineEmits(['send-data']);
@ -409,6 +410,17 @@ const showOtherReasonInput = ref(false);
const otherReason = ref(''); const otherReason = ref('');
const stopReasons = ref([]); // const stopReasons = ref([]); //
const alarmStore = useAlarmStore(); // 使 alarmStore
const alarmCount = ref(0); //
//
const updateAlarmCount = () => {
alarmCount.value = progressList.value.filter(item => item.rate < 10).length +
innerProgressList.value.filter(item => item.rate > 90).length;
alarmStore.setAlarmCount(alarmCount.value); // alarmStore
};
// //
const removeStatus = (id) => { const removeStatus = (id) => {
statuses.value = statuses.value.filter(status => status.id !== id); statuses.value = statuses.value.filter(status => status.id !== id);
@ -612,6 +624,7 @@ const updateData = (processedData) => {
}; };
} }
if (processedData === undefined) showWarningMessage("未查询到主数据!"); if (processedData === undefined) showWarningMessage("未查询到主数据!");
updateAlarmCount(); //
}; };
// //

View File

@ -5,7 +5,9 @@
<div v-if="appSwitchConfig.currentAppId === 'mis-app'" class="time-display">{{ currentTime }}</div> <div v-if="appSwitchConfig.currentAppId === 'mis-app'" class="time-display">{{ currentTime }}</div>
<!-- 确保图标按钮正确显示 --> <!-- 确保图标按钮正确显示 -->
<IxIconButton v-if="appSwitchConfig.currentAppId === 'mis-app'" icon="alarm-bell-filled" variant="secondary" ghost></IxIconButton> <el-badge v-if="appSwitchConfig.currentAppId === 'mis-app'" :value="alarmCount" class="item">
<IxIconButton icon="alarm-bell-filled" variant="secondary" ghost></IxIconButton>
</el-badge>
<IxIconButton v-if="appSwitchConfig.currentAppId === 'mis-app'" icon="calendar-filled" variant="secondary" ghost @click="toggleDatetimePicker"></IxIconButton> <IxIconButton v-if="appSwitchConfig.currentAppId === 'mis-app'" icon="calendar-filled" variant="secondary" ghost @click="toggleDatetimePicker"></IxIconButton>
<IxIconButton v-if="appSwitchConfig.currentAppId === 'mis-app'" icon="alarm-clock-filled" variant="secondary" ghost @click="handleReset"></IxIconButton> <IxIconButton v-if="appSwitchConfig.currentAppId === 'mis-app'" icon="alarm-clock-filled" variant="secondary" ghost @click="handleReset"></IxIconButton>
</IxApplicationHeader> </IxApplicationHeader>
@ -36,9 +38,12 @@ import {
IxDatetimePicker, IxDatetimePicker,
IxDatePicker, IxDatePicker,
} from '@siemens/ix-vue'; } from '@siemens/ix-vue';
import { ref, onMounted, onUnmounted, watch } from 'vue'; import { ref, onMounted, onUnmounted, watch, computed } from 'vue';
import { useRoute } from 'vue-router'; import { useAlarmStore } from '@/stores/alarmStore'; // alarmStore
//
const alarmStore = useAlarmStore(); // 使 alarmStore
const alarmCount = computed(() => alarmStore.alarmCount); // alarmStore
let appSwitchConfig = { let appSwitchConfig = {
i18nAppSwitch: '切换应用', i18nAppSwitch: '切换应用',
i18nLoadingApps: '加载应用中...', i18nLoadingApps: '加载应用中...',
@ -312,9 +317,13 @@ ix-application {
/* --theme-color-ghost--selected:#23233C !重要; */ /* --theme-color-ghost--selected:#23233C !重要; */
} }
.debug-info { .item {
margin-right: 0.5rem;
}
.alarm-count {
color: red; color: red;
font-size: 1rem; font-size: 1.2rem;
margin: 0.5rem 1rem; margin-right: 1rem;
} }
</style> </style>

14
vite.config.js Normal file
View File

@ -0,0 +1,14 @@
import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
export default defineConfig({
plugins: [vue()], // 移除 ElementPlus 和 Components 插件
css: {
preprocessorOptions: {
scss: {
// 保留 SCSS 配置(如果使用了自定义主题)
additionalData: `@use "element-plus/theme-chalk/src/index.scss" as *;`
}
}
}
})