Browse Source

fix: 项目配置解析优化

feature/three
guoapeng 3 months ago
parent
commit
816aa417b9
  1. 1
      .env.dev
  2. 1
      .env.pre
  3. 1
      .env.prod
  4. 1
      .env.test
  5. 9
      package.json
  6. 2
      src/libs/http.ts
  7. 306
      src/views/debug/index.vue
  8. 174
      vite.config.ts

1
.env.dev

@ -4,3 +4,4 @@ FT_NODE_ENV=dev
FT_WS_URL=ws://localhost:9527 FT_WS_URL=ws://localhost:9527
FT_PROXY=http://localhost:8080 FT_PROXY=http://localhost:8080
FT_API_BASE=/api

1
.env.pre

@ -4,3 +4,4 @@ FT_NODE_ENV=pre
FT_WS_URL=ws://192.168.1.140:8080/ws FT_WS_URL=ws://192.168.1.140:8080/ws
FT_PROXY=http://192.168.1.140 FT_PROXY=http://192.168.1.140
FT_API_BASE=/api

1
.env.prod

@ -4,3 +4,4 @@ FT_NODE_ENV=prod
FT_WS_URL=ws://192.168.100.168:8080/ws FT_WS_URL=ws://192.168.100.168:8080/ws
FT_PROXY=http://192.168.1.168 FT_PROXY=http://192.168.1.168
FT_API_BASE=/api

1
.env.test

@ -4,3 +4,4 @@ FT_NODE_ENV=test
FT_WS_URL=ws://192.168.1.121:8080/ws FT_WS_URL=ws://192.168.1.121:8080/ws
FT_PROXY=http://192.168.1.121:8080 FT_PROXY=http://192.168.1.121:8080
FT_API_BASE=/api

9
package.json

@ -8,10 +8,10 @@
"keywords": [], "keywords": [],
"main": "index.js", "main": "index.js",
"scripts": { "scripts": {
"dev:server": "node server/index.js",
"dev": "vite --mode dev",
"dev:test": "vite --mode test",
"dev:prod": "vite --mode prod",
"dev": "concurrently -n server,client -c green,blue \"node server/index.js\" \"vite --mode dev\"",
"test": "vite --mode test",
"prod": "vite --mode prod",
"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": "node increment-version.js patch && vite build --mode prod", "build:prod:patch": "node increment-version.js patch && vite build --mode prod",
@ -57,6 +57,7 @@
"@typescript-eslint/parser": "^8.25.0", "@typescript-eslint/parser": "^8.25.0",
"@vitejs/plugin-vue": "^5.2.1", "@vitejs/plugin-vue": "^5.2.1",
"@vue/eslint-config-prettier": "^10.2.0", "@vue/eslint-config-prettier": "^10.2.0",
"concurrently": "^9.1.2",
"eslint": "^9.21.0", "eslint": "^9.21.0",
"eslint-config-prettier": "^10.0.2", "eslint-config-prettier": "^10.0.2",
"eslint-plugin-prettier": "^5.2.3", "eslint-plugin-prettier": "^5.2.3",

2
src/libs/http.ts

@ -4,7 +4,7 @@ import { FtMessage } from 'libs/message'
import { getToken } from 'libs/token' import { getToken } from 'libs/token'
const http = axios.create({ const http = axios.create({
baseURL: `/api`,
baseURL: import.meta.env.FT_API_BASE,
timeout: 1000 * 60, timeout: 1000 * 60,
}) })

306
src/views/debug/index.vue

@ -328,130 +328,141 @@ const door_stop = async () => {
<el-card> <el-card>
<template #header> <template #header>
<div class="card-header"> <div class="card-header">
<span>加热模组</span>
<div>
<el-select v-model="debugStore.formData.heatArea.index" style="width: 150px" placeholder="请选择区域">
<el-option v-for="item in 6" :key="item" :label="`A${item}`" :value="item" />
</el-select>
</div>
<span>转运模组</span>
</div> </div>
</template> </template>
<el-divider>升降电机</el-divider>
<el-divider>X轴电机</el-divider>
<div class="card-box"> <div class="card-box">
<el-form> <el-form>
<el-form-item label="距离"> <el-form-item label="距离">
<el-input v-model.number="debugStore.formData.heatArea.heatMotorData.distance" type="number" placeholder="请输入距离">
<el-input v-model.number="debugStore.formData.transferModule.xMotorData.xDimDistance" type="number" placeholder="请输入距离">
<template #append> <template #append>
mm mm
</template> </template>
</el-input> </el-input>
</el-form-item> </el-form-item>
<el-form-item label="速度"> <el-form-item label="速度">
<el-input v-model.number="debugStore.formData.heatArea.heatMotorData.rate" type="number" placeholder="请输入速度">
<el-input v-model.number="debugStore.formData.transferModule.xMotorData.xDimRate" type="number" placeholder="请输入速度">
<template #append> <template #append>
mm/s mm/s
</template> </template>
</el-input> </el-input>
</el-form-item> </el-form-item>
<el-form-item>
<ft-button type="primary" :click-handle="() => debug_transportation_arm_reset('x')">
回原点
</ft-button>
<ft-button type="primary" :click-handle="() => debug_transportation_arm_move('x')">
开始
</ft-button>
<ft-button :click-handle="() => debug_transportation_arm_stop('x')">
停止
</ft-button>
</el-form-item>
</el-form> </el-form>
<ft-button type="primary" :click-handle="pallet_elevator_lift_up">
上升
</ft-button>
<ft-button type="primary" :click-handle="pallet_elevator_lift_down">
下降
</ft-button>
<ft-button :click-handle="pallet_elevator_stop">
停止
</ft-button>
</div> </div>
<el-divider>加热棒</el-divider>
<el-divider>Y轴电机</el-divider>
<div class="card-box"> <div class="card-box">
<el-form> <el-form>
<el-form-item label="温度">
<el-input v-model.number="debugStore.formData.heatArea.heatTemperature.temperature" type="number" placeholder="请输入温度">
<el-form-item label="距离">
<el-input v-model.number="debugStore.formData.transferModule.yMotorData.yDimDistance" type="number" placeholder="请输入距离">
<template #append> <template #append>
mm
</template> </template>
</el-input> </el-input>
</el-form-item> </el-form-item>
<el-form-item>
<ft-button type="primary" :click-handle="heater_start">
开始加热
</ft-button>
<ft-button :click-handle="heater_stop">
停止加热
</ft-button>
<el-form-item label="速度">
<el-input v-model.number="debugStore.formData.transferModule.yMotorData.yDimRate" type="number" placeholder="请输入速度">
<template #append>
mm/s
</template>
</el-input>
</el-form-item> </el-form-item>
<el-form-item> <el-form-item>
<ft-button type="primary" :click-handle="debug_heater_start_heat_maintaining">
开始恒温
<ft-button type="primary" :click-handle="() => debug_transportation_arm_reset('y')">
回原点
</ft-button> </ft-button>
<ft-button :click-handle="debug_heater_stop_heat_maintaining">
停止恒温
<ft-button type="primary" :click-handle="() => debug_transportation_arm_move('y')">
开始
</ft-button>
<ft-button :click-handle="() => debug_transportation_arm_stop('y')">
停止
</ft-button> </ft-button>
</el-form-item> </el-form-item>
</el-form> </el-form>
</div> </div>
<el-divider>拍子</el-divider>
<div class="card-box">
<ft-button type="primary">
启动吸附
</ft-button>
<ft-button>
停止吸附
</ft-button>
</div>
<el-divider>风扇</el-divider>
<div class="card-box">
<ft-button type="primary" :click-handle="debug_fan_start">
打开风扇
</ft-button>
<ft-button :click-handle="debug_fan_stop">
关闭风扇
</ft-button>
</div>
</el-card>
<el-card>
<template #header>
<div class="card-header">
<span>拍子存放模组</span>
</div>
</template>
<el-divider>Z轴电机</el-divider>
<div class="card-box"> <div class="card-box">
<el-form> <el-form>
<el-form-item label="速度">
<el-input v-model.number="debugStore.formData.lidData.rate" type="number" placeholder="请输入速度">
<el-form-item label="距离">
<el-input v-model.number="debugStore.formData.transferModule.zMotorData.zDimDistance" type="number" placeholder="请输入距离">
<template #append> <template #append>
mm/s
mm
</template> </template>
</el-input> </el-input>
</el-form-item> </el-form-item>
<el-form-item label="距离">
<el-input v-model.number="debugStore.formData.lidData.distance" type="number" placeholder="请输入距离">
<el-form-item label="速度">
<el-input v-model.number="debugStore.formData.transferModule.zMotorData.zDimRate" type="number" placeholder="请输入速度">
<template #append> <template #append>
mm
mm/s
</template> </template>
</el-input> </el-input>
</el-form-item> </el-form-item>
<el-form-item> <el-form-item>
<ft-button type="primary" :click-handle="debug_cover_elvator_lift_up">
抬升
<ft-button type="primary" :click-handle="() => debug_transportation_arm_reset('z')">
回原点
</ft-button> </ft-button>
<ft-button type="primary" :click-handle="debug_cover_elvator_lift_down">
下降
<ft-button type="primary" :click-handle="() => debug_transportation_arm_move('z')">
开始
</ft-button> </ft-button>
<ft-button :click-handle="() => debug_transportation_arm_stop('z')">
停止
</ft-button>
</el-form-item>
</el-form>
</div>
<el-divider>夹爪舵机</el-divider>
<div class="card-box">
<el-form>
<el-form-item label="速度">
<el-input v-model.number="debugStore.formData.transferModule.JawData.rate" type="number" placeholder="请输入速度">
<template #append>
mm/s
</template>
</el-input>
</el-form-item> </el-form-item>
<el-form-item> <el-form-item>
<ft-button type="primary" :click-handle="debug_cover_elvator_reset">
复位
<ft-button type="primary" :click-handle="debug_holding_jaw_open">
打开
</ft-button> </ft-button>
<ft-button :click-handle="debug_cover_elvator_stop">
<ft-button type="primary" :click-handle="debug_holding_jaw_close">
闭合
</ft-button>
<ft-button :click-handle="debug_holding_jaw_pause">
停止 停止
</ft-button> </ft-button>
</el-form-item> </el-form-item>
</el-form> </el-form>
</div> </div>
</el-card> </el-card>
<el-card>
<template #header>
<div class="card-header">
<span></span>
</div>
</template>
<div class="card-box">
<ft-button type="primary" :click-handle="door_open">
开门
</ft-button>
<ft-button type="primary" :click-handle="door_close">
关门
</ft-button>
<ft-button :click-handle="door_stop">
停止
</ft-button>
</div>
</el-card>
</el-col> </el-col>
<el-col :span="8"> <el-col :span="8">
<el-card> <el-card>
@ -601,141 +612,130 @@ const door_stop = async () => {
<el-card> <el-card>
<template #header> <template #header>
<div class="card-header"> <div class="card-header">
<span>转运模组</span>
<span>加热模组</span>
<div>
<el-select v-model="debugStore.formData.heatArea.index" style="width: 150px" placeholder="请选择区域">
<el-option v-for="item in 6" :key="item" :label="`A${item}`" :value="item" />
</el-select>
</div>
</div> </div>
</template> </template>
<el-divider>X轴电机</el-divider>
<el-divider>升降电机</el-divider>
<div class="card-box"> <div class="card-box">
<el-form> <el-form>
<el-form-item label="距离"> <el-form-item label="距离">
<el-input v-model.number="debugStore.formData.transferModule.xMotorData.xDimDistance" type="number" placeholder="请输入距离">
<el-input v-model.number="debugStore.formData.heatArea.heatMotorData.distance" type="number" placeholder="请输入距离">
<template #append> <template #append>
mm mm
</template> </template>
</el-input> </el-input>
</el-form-item> </el-form-item>
<el-form-item label="速度"> <el-form-item label="速度">
<el-input v-model.number="debugStore.formData.transferModule.xMotorData.xDimRate" type="number" placeholder="请输入速度">
<el-input v-model.number="debugStore.formData.heatArea.heatMotorData.rate" type="number" placeholder="请输入速度">
<template #append> <template #append>
mm/s mm/s
</template> </template>
</el-input> </el-input>
</el-form-item> </el-form-item>
<el-form-item>
<ft-button type="primary" :click-handle="() => debug_transportation_arm_reset('x')">
回原点
</ft-button>
<ft-button type="primary" :click-handle="() => debug_transportation_arm_move('x')">
开始
</ft-button>
<ft-button :click-handle="() => debug_transportation_arm_stop('x')">
停止
</ft-button>
</el-form-item>
</el-form> </el-form>
<ft-button type="primary" :click-handle="pallet_elevator_lift_up">
上升
</ft-button>
<ft-button type="primary" :click-handle="pallet_elevator_lift_down">
下降
</ft-button>
<ft-button :click-handle="pallet_elevator_stop">
停止
</ft-button>
</div> </div>
<el-divider>Y轴电机</el-divider>
<el-divider>加热棒</el-divider>
<div class="card-box"> <div class="card-box">
<el-form> <el-form>
<el-form-item label="距离">
<el-input v-model.number="debugStore.formData.transferModule.yMotorData.yDimDistance" type="number" placeholder="请输入距离">
<template #append>
mm
</template>
</el-input>
</el-form-item>
<el-form-item label="速度">
<el-input v-model.number="debugStore.formData.transferModule.yMotorData.yDimRate" type="number" placeholder="请输入速度">
<el-form-item label="温度">
<el-input v-model.number="debugStore.formData.heatArea.heatTemperature.temperature" type="number" placeholder="请输入温度">
<template #append> <template #append>
mm/s
</template> </template>
</el-input> </el-input>
</el-form-item> </el-form-item>
<el-form-item> <el-form-item>
<ft-button type="primary" :click-handle="() => debug_transportation_arm_reset('y')">
回原点
<ft-button type="primary" :click-handle="heater_start">
开始加热
</ft-button> </ft-button>
<ft-button type="primary" :click-handle="() => debug_transportation_arm_move('y')">
开始
<ft-button :click-handle="heater_stop">
停止加热
</ft-button> </ft-button>
<ft-button :click-handle="() => debug_transportation_arm_stop('y')">
停止
</el-form-item>
<el-form-item>
<ft-button type="primary" :click-handle="debug_heater_start_heat_maintaining">
开始恒温
</ft-button>
<ft-button :click-handle="debug_heater_stop_heat_maintaining">
停止恒温
</ft-button> </ft-button>
</el-form-item> </el-form-item>
</el-form> </el-form>
</div> </div>
<el-divider>Z轴电机</el-divider>
<el-divider>拍子</el-divider>
<div class="card-box">
<ft-button type="primary">
启动吸附
</ft-button>
<ft-button>
停止吸附
</ft-button>
</div>
<el-divider>风扇</el-divider>
<div class="card-box">
<ft-button type="primary" :click-handle="debug_fan_start">
打开风扇
</ft-button>
<ft-button :click-handle="debug_fan_stop">
关闭风扇
</ft-button>
</div>
</el-card>
<el-card>
<template #header>
<div class="card-header">
<span>拍子存放模组</span>
</div>
</template>
<div class="card-box"> <div class="card-box">
<el-form> <el-form>
<el-form-item label="距离">
<el-input v-model.number="debugStore.formData.transferModule.zMotorData.zDimDistance" type="number" placeholder="请输入距离">
<el-form-item label="速度">
<el-input v-model.number="debugStore.formData.lidData.rate" type="number" placeholder="请输入速度">
<template #append> <template #append>
mm
mm/s
</template> </template>
</el-input> </el-input>
</el-form-item> </el-form-item>
<el-form-item label="速度">
<el-input v-model.number="debugStore.formData.transferModule.zMotorData.zDimRate" type="number" placeholder="请输入速度">
<el-form-item label="距离">
<el-input v-model.number="debugStore.formData.lidData.distance" type="number" placeholder="请输入距离">
<template #append> <template #append>
mm/s
mm
</template> </template>
</el-input> </el-input>
</el-form-item> </el-form-item>
<el-form-item> <el-form-item>
<ft-button type="primary" :click-handle="() => debug_transportation_arm_reset('z')">
回原点
</ft-button>
<ft-button type="primary" :click-handle="() => debug_transportation_arm_move('z')">
开始
<ft-button type="primary" :click-handle="debug_cover_elvator_lift_up">
抬升
</ft-button> </ft-button>
<ft-button :click-handle="() => debug_transportation_arm_stop('z')">
停止
<ft-button type="primary" :click-handle="debug_cover_elvator_lift_down">
下降
</ft-button> </ft-button>
</el-form-item> </el-form-item>
</el-form>
</div>
<el-divider>夹爪舵机</el-divider>
<div class="card-box">
<el-form>
<el-form-item label="速度">
<el-input v-model.number="debugStore.formData.transferModule.JawData.rate" type="number" placeholder="请输入速度">
<template #append>
mm/s
</template>
</el-input>
</el-form-item>
<el-form-item> <el-form-item>
<ft-button type="primary" :click-handle="debug_holding_jaw_open">
打开
</ft-button>
<ft-button type="primary" :click-handle="debug_holding_jaw_close">
闭合
<ft-button type="primary" :click-handle="debug_cover_elvator_reset">
复位
</ft-button> </ft-button>
<ft-button :click-handle="debug_holding_jaw_pause">
<ft-button :click-handle="debug_cover_elvator_stop">
停止 停止
</ft-button> </ft-button>
</el-form-item> </el-form-item>
</el-form> </el-form>
</div> </div>
</el-card> </el-card>
<el-card>
<template #header>
<div class="card-header">
<span></span>
</div>
</template>
<div class="card-box">
<ft-button type="primary" :click-handle="door_open">
开门
</ft-button>
<ft-button type="primary" :click-handle="door_close">
关门
</ft-button>
<ft-button :click-handle="door_stop">
停止
</ft-button>
</div>
</el-card>
</el-col> </el-col>
</el-row> </el-row>
</div> </div>

174
vite.config.ts

@ -2,105 +2,109 @@ import { resolve } from 'node:path'
import vue from '@vitejs/plugin-vue' import vue from '@vitejs/plugin-vue'
import AutoImport from 'unplugin-auto-import/vite' import AutoImport from 'unplugin-auto-import/vite'
import { ElementPlusResolver } from 'unplugin-vue-components/resolvers' import { ElementPlusResolver } from 'unplugin-vue-components/resolvers'
import { defineConfig } from 'vite'
import { defineConfig, loadEnv } from 'vite'
import viteCompression from 'vite-plugin-compression' import viteCompression from 'vite-plugin-compression'
import eslintPlugin from 'vite-plugin-eslint' import eslintPlugin from 'vite-plugin-eslint'
import packageJson from './package.json' import packageJson from './package.json'
const Timestamp = new Date().getTime() const Timestamp = new Date().getTime()
export default defineConfig({
define: {
__APP_VERSION__: JSON.stringify(packageJson.version),
},
base: './',
envPrefix: 'FT_',
esbuild: {
export default defineConfig(({ mode }) => {
// eslint-disable-next-line node/prefer-global/process
const env = loadEnv(mode, process.cwd(), 'FT_')
return {
define: {
__APP_VERSION__: JSON.stringify(packageJson.version),
},
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: {
sourcemap: false,
outDir: `dist-v${packageJson.version}`,
rollupOptions: {
output: {
manualChunks(id) {
if (id.includes('node_modules')) {
return id.toString().split('node_modules/')[1].split('/')[0].toString()
}
},
chunkFileNames: (chunkInfo) => {
const facadeModuleId = chunkInfo.facadeModuleId
? chunkInfo.facadeModuleId.split('/')
: []
const fileName = facadeModuleId.slice(-2)[0] || '[name]'
return `js/${fileName}/[name].[hash].${Timestamp}.js`
drop: process.env.NODE_ENV === 'production' ? ['console'] : [],
},
build: {
sourcemap: false,
outDir: `dist-v${packageJson.version}`,
rollupOptions: {
output: {
manualChunks(id) {
if (id.includes('node_modules')) {
return id.toString().split('node_modules/')[1].split('/')[0].toString()
}
},
chunkFileNames: (chunkInfo) => {
const facadeModuleId = chunkInfo.facadeModuleId
? chunkInfo.facadeModuleId.split('/')
: []
const fileName = facadeModuleId.slice(-2)[0] || '[name]'
return `js/${fileName}/[name].[hash].${Timestamp}.js`
},
}, },
}, },
}, },
},
plugins: [
vue(),
AutoImport({
imports: [
'vue',
'vue-router',
{ vue: ['withModifiers'] },
{
from: 'element-plus/es',
imports: ['TabPaneName'],
type: true,
plugins: [
vue(),
AutoImport({
imports: [
'vue',
'vue-router',
{ vue: ['withModifiers'] },
{
from: 'element-plus/es',
imports: ['TabPaneName'],
type: true,
},
],
dts: true,
eslintrc: {
enabled: true,
}, },
],
dts: true,
eslintrc: {
enabled: true,
resolvers: [ElementPlusResolver({ importStyle: 'sass' })],
}),
eslintPlugin({
cache: false, // 禁用缓存,以确保每次修改后都能及时生效
}),
viteCompression({
verbose: true,
disable: false,
threshold: 10240,
algorithm: 'gzip',
ext: '.gz',
}),
],
resolve: {
alias: {
'@': resolve(__dirname, './src'),
'apis': resolve(__dirname, 'src/apis'),
'assets': resolve(__dirname, 'src/assets'),
'components': resolve(__dirname, 'src/components'),
'hooks': resolve(__dirname, 'src/hooks'),
'libs': resolve(__dirname, 'src/libs'),
'stores': resolve(__dirname, 'src/stores'),
'views': resolve(__dirname, 'src/views'),
'router': resolve(__dirname, 'src/router'),
}, },
resolvers: [ElementPlusResolver({ importStyle: 'sass' })],
}),
eslintPlugin({
cache: false, // 禁用缓存,以确保每次修改后都能及时生效
}),
viteCompression({
verbose: true,
disable: false,
threshold: 10240,
algorithm: 'gzip',
ext: '.gz',
}),
],
resolve: {
alias: {
'@': resolve(__dirname, './src'),
'apis': resolve(__dirname, 'src/apis'),
'assets': resolve(__dirname, 'src/assets'),
'components': resolve(__dirname, 'src/components'),
'hooks': resolve(__dirname, 'src/hooks'),
'libs': resolve(__dirname, 'src/libs'),
'stores': resolve(__dirname, 'src/stores'),
'views': resolve(__dirname, 'src/views'),
'router': resolve(__dirname, 'src/router'),
}, },
},
css: {
preprocessorOptions: {
scss: {
additionalData: '@use "@/assets/styles/main.scss" as *;',
css: {
preprocessorOptions: {
scss: {
additionalData: '@use "@/assets/styles/main.scss" as *;',
},
}, },
}, },
},
// 本地化配置
server: {
open: true,
hmr: true,
port: 3010,
host: '0.0.0.0',
proxy: {
'/api': {
target: 'http://192.168.1.199:8080',
// secure: false,
changeOrigin: true, // 是否跨域
rewrite: path => path.replace(/^\/api/, 'api'),
// 本地化配置
server: {
open: false,
hmr: true,
port: 3010,
host: '0.0.0.0',
proxy: {
[env.FT_API_BASE]: {
target: env.FT_PROXY,
// secure: false,
changeOrigin: true, // 是否跨域
rewrite: path => path.replace(new RegExp(`^${env.FT_API_BASE}`), 'api'),
},
}, },
}, },
},
}
}) })
Loading…
Cancel
Save