feat: add run.ps1 script to start projects easily

add a powershell script that supports starting MES, WMS, WMSClient, Workstation and Dashboard projects with one command, includes build and run logic for backend services and npm dev for dashboard
This commit is contained in:
SunYF
2026-08-28 17:03:03 +08:00
parent a9c3fbeb41
commit cbd55338f1
30 changed files with 592 additions and 61 deletions
@@ -14,6 +14,7 @@
<div @click="drawer=true" style="cursor:pointer"> 菜单</div>
<div>
<span style="margin-right:16px">{{ userName }}</span>
<el-button size="small" @click="router.push('/change-password')">修改密码</el-button>
<el-button size="small" @click="doLogout">退出</el-button>
</div>
</el-header>
@@ -0,0 +1,63 @@
<template>
<el-card style="max-width:480px;margin-top:20px">
<template #header><b>修改我的密码</b></template>
<el-alert type="warning" :closable="false" style="margin-bottom:16px"
title="密码修改成功后需重新登录" />
<el-form :model="form" label-width="100px" @submit.prevent>
<el-form-item label="旧密码">
<el-input v-model="form.oldPassword" type="password" show-password
placeholder="请输入当前密码" />
</el-form-item>
<el-form-item label="新密码">
<el-input v-model="form.newPassword" type="password" show-password
placeholder="至少 6 位" />
</el-form-item>
<el-form-item label="确认新密码">
<el-input v-model="form.confirmPassword" type="password" show-password
placeholder="请再次输入新密码" />
</el-form-item>
<el-form-item>
<el-button type="primary" :loading="loading" @click="submit">保存</el-button>
<el-button @click="reset">重置</el-button>
</el-form-item>
</el-form>
</el-card>
</template>
<script setup>
import { reactive, ref } from 'vue'
import { ElMessage } from 'element-plus'
import { useRouter } from 'vue-router'
import { logout } from '../utils/auth'
import request from '../utils/request'
const router = useRouter()
const loading = ref(false)
const form = reactive({ oldPassword: '', newPassword: '', confirmPassword: '' })
async function submit() {
if (!form.oldPassword || !form.newPassword) return ElMessage.warning('请填写旧密码和新密码')
if (form.newPassword !== form.confirmPassword) return ElMessage.warning('两次输入的新密码不一致')
if (form.newPassword.length < 6) return ElMessage.warning('新密码长度至少 6 位')
loading.value = true
try {
await request.post('/user/change-password', {
oldPassword: form.oldPassword,
newPassword: form.newPassword
})
ElMessage.success('密码修改成功,请重新登录')
logout()
router.replace('/login')
} catch (e) {
/* 错误已由请求拦截器提示 */
} finally {
loading.value = false
}
}
function reset() {
form.oldPassword = ''
form.newPassword = ''
form.confirmPassword = ''
}
</script>
@@ -17,6 +17,7 @@ const routes = [
{ path: 'trace', name: 'Trace', component: () => import('../pages/Trace.vue'), meta: { title: '工件追溯' } },
{ path: 'product-type', name: 'ProductType', component: () => import('../pages/ProductType.vue'), meta: { title: '产品类型' } },
{ path: 'event-log', name: 'EventLog', component: () => import('../pages/EventLog.vue'), meta: { title: '操作日志' } },
{ path: 'change-password', name: 'ChangePassword', component: () => import('../pages/ChangePassword.vue'), meta: { title: '修改密码' } },
{ path: 'rbac', name: 'Rbac', component: () => import('../pages/Rbac.vue'), meta: { title: '角色权限管理' } }
]
},