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", "name": "matrix-spray-web",
"type": "module", "type": "module",
"version": "0.0.20", "version": "0.0.20",
"device": "DT300W",
"description": "", "description": "",
"author": "", "author": "",
"license": "ISC", "license": "ISC",
@ -14,6 +15,11 @@
"pre": "vite --mode pre", "pre": "vite --mode pre",
"build": "vite build --mode dev", "build": "vite build --mode dev",
"build:test": "vite build --mode test", "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:patch": "node increment-version.js patch && vite build --mode prod",
"build:prod:minor": "node increment-version.js minor && 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", "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) const liquidData = await sendCmd(liquidParams)
liquidStore.updateLiquidState(liquidData) liquidStore.updateLiquidState(liquidData)
} }
console.log(__DEVICE_TYPE__)
</script> </script>
<template> <template>

4
src/components/home/HomeSetting.vue

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

1
src/env.d.ts

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

2
src/layouts/default.vue

@ -203,7 +203,7 @@ const statusMap = {
</div> </div>
</div> </div>
<div class="user"> <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-if="websocketConnected" width="20" :src="WifiConnSvg" alt="">
<img v-else :src="WifiUnconnSvg" width="20" alt=""> <img v-else :src="WifiUnconnSvg" width="20" alt="">
</span> </span>

12
src/router/routes.ts

@ -113,22 +113,26 @@ const authRoutes = ref<RouteRecordRaw[]>([
watchEffect(() => { watchEffect(() => {
const deviceStore = useDeviceStore(pinia) const deviceStore = useDeviceStore(pinia)
setTimeout(() => { setTimeout(() => {
if (deviceStore.deviceInfo.deviceType === deviceStore.deviceTypeMap.LargeSpaceDM_B) { // 大空间标准版
if (__DEVICE_TYPE__ === deviceStore.deviceTypeMap.LargeSpaceDM_B) {
// 大空间标准版
authRoutes.value = authRoutes.value.filter((item) => { authRoutes.value = authRoutes.value.filter((item) => {
return item.name !== 'seal' && item.name !== 'liquid' 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) => { authRoutes.value = authRoutes.value.filter((item) => {
return item.name !== 'seal' 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) => { authRoutes.value = authRoutes.value.filter((item) => {
return item.name !== 'seal' 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) => { authRoutes.value = authRoutes.value.filter((item) => {
return item.name !== 'liquid' return item.name !== 'liquid'
}) })

14
src/views/home/index.vue

@ -65,7 +65,7 @@ const styles = ref<any>({
const computedStyle = () => { const computedStyle = () => {
// console.log('homeStore.h2O2SensorData', homeStore.h2O2SensorData.length) // 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) { if (homeStore.h2O2SensorData.length === 1) {
return { return {
gridTemplateColumns: 'repeat(1, 1fr)', gridTemplateColumns: 'repeat(1, 1fr)',
@ -152,15 +152,13 @@ const computedStyle = () => {
<div v-if="route.path === '/home'" class="home-grid-container"> <div v-if="route.path === '/home'" class="home-grid-container">
<div class="home-left" :style="styles"> <div class="home-left" :style="styles">
<el-card <el-card
v-if="deviceStore.deviceInfo.deviceType !== deviceStore.deviceTypeMap.LargeSpaceDM_B"
v-if="__DEVICE_TYPE__ !== deviceStore.deviceTypeMap.LargeSpaceDM_B"
class="card" class="card"
:class="{ :class="{
'card-center-1': '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': '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> <template #default>
@ -185,11 +183,11 @@ const computedStyle = () => {
:class="{ :class="{
'card-center-1': 'card-center-1':
index === 0 index === 0
&& deviceStore.deviceInfo.deviceType === deviceStore.deviceTypeMap.LargeSpaceDM_B
&& __DEVICE_TYPE__ === deviceStore.deviceTypeMap.LargeSpaceDM_B
&& homeStore.h2O2SensorData.length === 3, && homeStore.h2O2SensorData.length === 3,
'card-center-2': 'card-center-2':
index === 0 index === 0
&& deviceStore.deviceInfo.deviceType !== deviceStore.deviceTypeMap.LargeSpaceDM_B
&& __DEVICE_TYPE__ !== deviceStore.deviceTypeMap.LargeSpaceDM_B
&& homeStore.h2O2SensorData.length === 5, && 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 { return {
define: { define: {
__APP_VERSION__: JSON.stringify(packageJson.version), __APP_VERSION__: JSON.stringify(packageJson.version),
__DEVICE_TYPE__: JSON.stringify(packageJson.device),
}, },
base: './', base: './',
envPrefix: 'FT_', envPrefix: 'FT_',
esbuild: { esbuild: {
// eslint-disable-next-line node/prefer-global/process
// eslint-disable-next-line node/prefer-global/process
drop: process.env.NODE_ENV === 'production' ? ['console'] : [], drop: process.env.NODE_ENV === 'production' ? ['console'] : [],
}, },
build: { build: {
@ -34,9 +35,7 @@ export default defineConfig(({ mode }) => {
} }
}, },
chunkFileNames: (chunkInfo) => { chunkFileNames: (chunkInfo) => {
const facadeModuleId = chunkInfo.facadeModuleId
? chunkInfo.facadeModuleId.split('/')
: []
const facadeModuleId = chunkInfo.facadeModuleId ? chunkInfo.facadeModuleId.split('/') : []
const fileName = facadeModuleId.slice(-2)[0] || '[name]' const fileName = facadeModuleId.slice(-2)[0] || '[name]'
return `js/${fileName}/[name].[hash].${Timestamp}.js` return `js/${fileName}/[name].[hash].${Timestamp}.js`
}, },

Loading…
Cancel
Save