Browse Source

fix: 编写脚本控制设备版本

master
guoapeng 2 weeks ago
parent
commit
2afbd099fc
  1. 6
      package.json
  2. 1
      src/app.vue
  3. 4
      src/components/home/HomeSetting.vue
  4. 1
      src/env.d.ts
  5. 2
      src/layouts/default.vue
  6. 12
      src/router/routes.ts
  7. 14
      src/views/home/index.vue
  8. 17
      update-device.js
  9. 7
      vite.config.ts

6
package.json

@ -2,6 +2,7 @@
"name": "matrix-spray-web",
"type": "module",
"version": "0.0.20",
"device": "DT300W",
"description": "",
"author": "",
"license": "ISC",
@ -14,6 +15,11 @@
"pre": "vite --mode pre",
"build": "vite build --mode dev",
"build:test": "vite build --mode test",
"build:prod:patch:DT300W": "node increment-version.js patch && node update-device.js DT300W && vite build --mode prod",
"build:prod:patch:DT600N": "node increment-version.js patch && node update-device.js DT600N && vite build --mode prod",
"build:prod:patch:DT300N": "node increment-version.js patch && node update-device.js DT300N && vite build --mode prod",
"build:prod:patch:DT100N": "node increment-version.js patch && node update-device.js DT100N && vite build --mode prod",
"build:prod:patch:DT600B": "node increment-version.js patch && node update-device.js DT600B && vite build --mode prod",
"build:prod:patch": "node increment-version.js patch && vite build --mode prod",
"build:prod:minor": "node increment-version.js minor && vite build --mode prod",
"build:prod:major": "node increment-version.js major && vite build --mode prod",

1
src/app.vue

@ -144,6 +144,7 @@ const initLiquidConfig = async () => {
const liquidData = await sendCmd(liquidParams)
liquidStore.updateLiquidState(liquidData)
}
console.log(__DEVICE_TYPE__)
</script>
<template>

4
src/components/home/HomeSetting.vue

@ -233,7 +233,7 @@ const onClose = () => {
}
const settingWidth = computed(() => {
if (deviceStore.deviceInfo.deviceType === deviceStore.deviceTypeMap.LargeSpaceDM_B) {
if (__DEVICE_TYPE__ === deviceStore.deviceTypeMap.LargeSpaceDM_B) {
return '12rem'
}
return '7.5rem'
@ -243,7 +243,7 @@ const settingWidth = computed(() => {
<template>
<div class="home-start-opt">
<div class="home-opt-flex">
<div v-if="deviceStore.deviceInfo.deviceType === deviceStore.deviceTypeMap.PipeDM">
<div v-if="__DEVICE_TYPE__ === deviceStore.deviceTypeMap.PipeDM">
<BtButton
button-text="压力控制"
text-size="1.3rem"

1
src/env.d.ts

@ -11,6 +11,7 @@ interface ImportMeta {
}
declare const __APP_VERSION__: string
declare const __DEVICE_TYPE__: string
declare module '*.vue' {
import type { DefineComponent } from 'vue'

2
src/layouts/default.vue

@ -203,7 +203,7 @@ const statusMap = {
</div>
</div>
<div class="user">
<span v-if="deviceStore.deviceInfo.deviceType === deviceStore.deviceTypeMap.LargeSpaceDM_B">
<span v-if="__DEVICE_TYPE__ === deviceStore.deviceTypeMap.LargeSpaceDM_B">
<img v-if="websocketConnected" width="20" :src="WifiConnSvg" alt="">
<img v-else :src="WifiUnconnSvg" width="20" alt="">
</span>

12
src/router/routes.ts

@ -113,22 +113,26 @@ const authRoutes = ref<RouteRecordRaw[]>([
watchEffect(() => {
const deviceStore = useDeviceStore(pinia)
setTimeout(() => {
if (deviceStore.deviceInfo.deviceType === deviceStore.deviceTypeMap.LargeSpaceDM_B) { // 大空间标准版
if (__DEVICE_TYPE__ === deviceStore.deviceTypeMap.LargeSpaceDM_B) {
// 大空间标准版
authRoutes.value = authRoutes.value.filter((item) => {
return item.name !== 'seal' && item.name !== 'liquid'
})
}
else if (deviceStore.deviceInfo.deviceType === deviceStore.deviceTypeMap.LargeSpaceDM) { // 大空间
else if (__DEVICE_TYPE__ === deviceStore.deviceTypeMap.LargeSpaceDM) {
// 大空间
authRoutes.value = authRoutes.value.filter((item) => {
return item.name !== 'seal'
})
}
else if (deviceStore.deviceInfo.deviceType === deviceStore.deviceTypeMap.SmallSpaceDM) { // 小空间
else if (__DEVICE_TYPE__ === deviceStore.deviceTypeMap.SmallSpaceDM) {
// 小空间
authRoutes.value = authRoutes.value.filter((item) => {
return item.name !== 'seal'
})
}
else if (deviceStore.deviceInfo.deviceType === deviceStore.deviceTypeMap.DrawBarDM) { // 拉杆箱
else if (__DEVICE_TYPE__ === deviceStore.deviceTypeMap.DrawBarDM) {
// 拉杆箱
authRoutes.value = authRoutes.value.filter((item) => {
return item.name !== 'liquid'
})

14
src/views/home/index.vue

@ -65,7 +65,7 @@ const styles = ref<any>({
const computedStyle = () => {
// console.log('homeStore.h2O2SensorData', homeStore.h2O2SensorData.length)
if (deviceStore.deviceInfo.deviceType === deviceStore.deviceTypeMap.LargeSpaceDM_B) {
if (__DEVICE_TYPE__ === deviceStore.deviceTypeMap.LargeSpaceDM_B) {
if (homeStore.h2O2SensorData.length === 1) {
return {
gridTemplateColumns: 'repeat(1, 1fr)',
@ -152,15 +152,13 @@ const computedStyle = () => {
<div v-if="route.path === '/home'" class="home-grid-container">
<div class="home-left" :style="styles">
<el-card
v-if="deviceStore.deviceInfo.deviceType !== deviceStore.deviceTypeMap.LargeSpaceDM_B"
v-if="__DEVICE_TYPE__ !== deviceStore.deviceTypeMap.LargeSpaceDM_B"
class="card"
:class="{
'card-center-1':
deviceStore.deviceInfo.deviceType !== deviceStore.deviceTypeMap.LargeSpaceDM_B
&& homeStore.h2O2SensorData.length === 2,
__DEVICE_TYPE__ !== deviceStore.deviceTypeMap.LargeSpaceDM_B && homeStore.h2O2SensorData.length === 2,
'card-center-2':
deviceStore.deviceInfo.deviceType !== deviceStore.deviceTypeMap.LargeSpaceDM_B
&& homeStore.h2O2SensorData.length === 4,
__DEVICE_TYPE__ !== deviceStore.deviceTypeMap.LargeSpaceDM_B && homeStore.h2O2SensorData.length === 4,
}"
>
<template #default>
@ -185,11 +183,11 @@ const computedStyle = () => {
:class="{
'card-center-1':
index === 0
&& deviceStore.deviceInfo.deviceType === deviceStore.deviceTypeMap.LargeSpaceDM_B
&& __DEVICE_TYPE__ === deviceStore.deviceTypeMap.LargeSpaceDM_B
&& homeStore.h2O2SensorData.length === 3,
'card-center-2':
index === 0
&& deviceStore.deviceInfo.deviceType !== deviceStore.deviceTypeMap.LargeSpaceDM_B
&& __DEVICE_TYPE__ !== deviceStore.deviceTypeMap.LargeSpaceDM_B
&& homeStore.h2O2SensorData.length === 5,
}"
>

17
update-device.js

@ -0,0 +1,17 @@
import fs from 'node:fs'
import path, { dirname } from 'node:path'
import { fileURLToPath } from 'node:url'
const __filename = fileURLToPath(import.meta.url)
const __dirname = dirname(__filename)
const packagePath = path.resolve(__dirname, 'package.json')
const packageJson = JSON.parse(fs.readFileSync(packagePath, 'utf-8'))
// 读取命令行参数(默认使用 'DT300W')
// eslint-disable-next-line node/prefer-global/process
const deviceType = process.argv[2] || 'DT300W'
packageJson.device = deviceType
fs.writeFileSync(packagePath, JSON.stringify(packageJson, null, 2))
console.log(`Version updated to: ${deviceType}`)

7
vite.config.ts

@ -16,11 +16,12 @@ export default defineConfig(({ mode }) => {
return {
define: {
__APP_VERSION__: JSON.stringify(packageJson.version),
__DEVICE_TYPE__: JSON.stringify(packageJson.device),
},
base: './',
envPrefix: 'FT_',
esbuild: {
// eslint-disable-next-line node/prefer-global/process
// eslint-disable-next-line node/prefer-global/process
drop: process.env.NODE_ENV === 'production' ? ['console'] : [],
},
build: {
@ -34,9 +35,7 @@ export default defineConfig(({ mode }) => {
}
},
chunkFileNames: (chunkInfo) => {
const facadeModuleId = chunkInfo.facadeModuleId
? chunkInfo.facadeModuleId.split('/')
: []
const facadeModuleId = chunkInfo.facadeModuleId ? chunkInfo.facadeModuleId.split('/') : []
const fileName = facadeModuleId.slice(-2)[0] || '[name]'
return `js/${fileName}/[name].[hash].${Timestamp}.js`
},

Loading…
Cancel
Save