curry 3 месяцев назад
Родитель
Сommit
2d7465b003

+ 1 - 1
server/config.yaml

@@ -125,7 +125,7 @@ mysql:
     config: charset=utf8mb4&parseTime=True&loc=Local
     db-name: lc_garage
     username: root
-    password: 123456
+    password: Mysql123@
 
     path: 127.0.0.1
     engine: ""

+ 11 - 1
web/src/lang/en.js

@@ -98,5 +98,15 @@ export default {
   editSuccess: 'Edit successfully',
   editFailed: 'Edit failed',
   isVip: 'Become VIP',
-  noVip: 'Not VIP'
+  noVip: 'Not VIP',
+  carPlateInput: 'Please enter license plate number',
+  carTypeSelect: 'Please select vehicle type',
+  ownerSelect: 'Please select owner',
+  manageCarType: 'Manage Vehicle Types',
+  typeName: 'Type Name',
+  confirmDeleteCar: 'Are you sure you want to delete this vehicle?',
+  rfidLabel: 'RFID Tag (For UHF)',
+  placeholderPorsche: 'e.g. Porsche',
+  placeholderBlack: 'e.g. Black',
+  tempCarOptional: 'Optional for temporary vehicles'
 }

+ 11 - 1
web/src/lang/zh-CN.js

@@ -98,5 +98,15 @@ export default {
   editSuccess: '编辑成功',
   editFailed: '编辑失败',
   isVip: '已成为VIP',
-  noVip: '未成为VIP'
+  noVip: '未成为VIP',
+  carPlateInput: '请输入车牌号',
+  carTypeSelect: '请选择车辆类型',
+  ownerSelect: '请选择车主',
+  manageCarType: '管理车辆类型',
+  typeName: '类型名称',
+  confirmDeleteCar: '确定删除该车辆吗',
+  rfidLabel: 'RFID标签(UHF用)',
+  placeholderPorsche: '如:保时捷',
+  placeholderBlack: '如:黑色',
+  tempCarOptional: '临时车可不选',
 }

+ 11 - 1
web/src/lang/zh-HK.js

@@ -98,5 +98,15 @@ export default {
   editSuccess: '編輯成功',
   editFailed: '编辑失敗',
   isVip: '已成為VIP',
-  noVip: '未成為VIP'
+  noVip: '未成為VIP',
+  carPlateInput: '請輸入車牌號碼',
+  carTypeSelect: '請選擇車輛類型',
+  ownerSelect: '請選擇車主',
+  manageCarType: '管理車輛類型',
+  typeName: '類型名稱',
+  confirmDeleteCar: '確定刪除該車輛嗎',
+  rfidLabel: 'RFID標籤(UHF用)',
+  placeholderPorsche: '如:保時捷',
+  placeholderBlack: '如:黑色',
+  tempCarOptional: '臨時車可唔選擇'
 }

+ 11 - 1
web/src/lang/zh-TW.js

@@ -98,5 +98,15 @@ export default {
   editSuccess: '編輯成功',
   editFailed: '編輯失敗',
   isVip: '已成為VIP',
-  noVip: '未成為VIP'
+  noVip: '未成為VIP',
+  carPlateInput: '請輸入車牌號碼',
+  carTypeSelect: '請選擇車輛類別',
+  ownerSelect: '請選擇車主',
+  manageCarType: '管理車輛類別',
+  typeName: '類別名稱',
+  confirmDeleteCar: '確定刪除該車輛嗎',
+  rfidLabel: 'RFID標籤(UHF用)',
+  placeholderPorsche: '如:保時捷',
+  placeholderBlack: '如:黑色',
+  tempCarOptional: '臨時車可不選'
 }

+ 12 - 5
web/src/view/layout/search/search.vue

@@ -6,8 +6,16 @@
         @change="changeLanguageType"
       >
         <el-option
-          label="zh"
-          value="zh"
+          label="zh-CN"
+          value="zh-CN"
+        />
+        <el-option
+          label="zh-HK"
+          value="zh-HK"
+        />
+        <el-option
+          label="zh-TW"
+          value="zh-TW"
         />
         <el-option
           label="en"
@@ -32,6 +40,7 @@
 import Screenfull from '@/view/layout/screenfull/index.vue'
 import { emitter } from '@/utils/bus.js'
 import { ref } from 'vue'
+import { setLang } from '@/lang'
 // 导入 i18n 实例
 defineOptions({
   name: 'BtnBox',
@@ -40,9 +49,7 @@ defineOptions({
 const languageType = ref('zh')
 
 const changeLanguageType = (val) => {
-  languageType.value = val
-  localStorage.setItem('lang', val) // 持久化
-
+  setLang(val)
 }
 
 const reload = ref(false)

+ 54 - 51
web/src/view/parking/carInfo.vue

@@ -2,17 +2,17 @@
   <div>
     <!-- 搜索表单 -->
     <el-form inline>
-      <el-form-item label="车牌号">
+      <el-form-item :label="$t.value.LicensePlateNo">
         <el-input
           v-model="queryForm.plate_number"
-          placeholder="请输入车牌号"
+          :placeholder="$t.value.carPlateInput"
           clearable
         />
       </el-form-item>
-      <el-form-item label="车辆类型">
+      <el-form-item :label="$t.value.VehicleType">
         <el-select
           v-model="queryForm.vehicle_type_id"
-          placeholder="全部"
+          :placeholder="$t.value.carTypeSelect"
           clearable
           style="width:160px"
         >
@@ -24,11 +24,11 @@
           />
         </el-select>
       </el-form-item>
-      <el-form-item label="车主">
+      <el-form-item :label="$t.value.CarOwner">
         <el-select
           v-model="queryForm.owner_id"
           clearable
-          placeholder="请选择车主"
+          :placeholder="$t.value.ownerSelect"
           style="width: 180px"
         >
           <el-option
@@ -45,22 +45,22 @@
           icon="Search"
           type="primary"
           @click="getVehicleList"
-        >搜索</el-button>
+        >{{ $t.value.Search }}</el-button>
         <el-button
           icon="Refresh"
           @click="resetQuery"
-        >重置</el-button>
+        >{{ $t.value.Reset }}</el-button>
       </el-form-item>
       <el-form-item>
         <el-button
           icon="Plus"
           type="primary"
           @click="openDialog('新增车辆', null)"
-        >新增</el-button>
+        >{{ $t.value.new }}</el-button>
         <el-button
           type="warning"
           @click="openTypeDrawer"
-        >管理车辆类型</el-button>
+        >{{ $t.value.manageCarType }}</el-button>
       </el-form-item>
     </el-form>
 
@@ -77,17 +77,17 @@
         width="80"
       />
       <el-table-column
-        label="车牌号"
+        :label="$t.value.LicensePlateNo"
         align="center"
         prop="plate_number"
       />
       <el-table-column
-        label="电子标签"
+        :label="$t.value.ElectronicTag"
         align="center"
         prop="rfid_tag"
       />
       <el-table-column
-        label="车辆类型"
+        :label="$t.value.VehicleType"
         align="center"
       >
         <template #default="scope">
@@ -97,17 +97,17 @@
         </template>
       </el-table-column>
       <el-table-column
-        label="品牌"
+        :label="$t.value.VehicleBrand"
         align="center"
         prop="vehicle_brand"
       />
       <el-table-column
-        label="颜色"
+        :label="$t.value.VehicleColor"
         align="center"
         prop="vehicle_color"
       />
       <el-table-column
-        label="车主"
+        :label="$t.value.CarOwner"
         align="center"
       >
         <template #default="scope">
@@ -115,7 +115,7 @@
         </template>
       </el-table-column>
       <el-table-column
-        label="操作"
+        :label="$t.value.Action"
         align="center"
         width="180"
       >
@@ -125,13 +125,13 @@
             type="primary"
             text
             @click="openDialog('编辑车辆', scope.row)"
-          >编辑</el-button>
+          >{{ $t.value.modify }}</el-button>
           <el-button
             icon="Delete"
             type="danger"
             text
             @click="deleteVehicle(scope.row.ID)"
-          >删除</el-button>
+          >{{ $t.value.remove }}</el-button>
         </template>
       </el-table-column>
     </el-table>
@@ -156,22 +156,22 @@
       width="520px"
     >
       <el-form
-        label-width="100px"
+        label-width="120px"
         :model="formData"
       >
-        <el-form-item label="车牌号:">
+        <el-form-item :label="$t.value.LicensePlateNo">
           <el-input
             v-model="formData.plate_number"
-            placeholder="请输入车牌号"
+            :placeholder="$t.value.carPlateInput"
           />
         </el-form-item>
-        <el-form-item label="电子标签:">
+        <el-form-item :label="$t.value.ElectronicTag">
           <el-input
             v-model="formData.rfid_tag"
             placeholder="RFID标签(UHF用)"
           />
         </el-form-item>
-        <el-form-item label="车辆类型:">
+        <el-form-item :label="$t.value.VehicleType">
           <el-select
             v-model="formData.vehicle_type_id"
             placeholder="请选择"
@@ -185,19 +185,19 @@
             />
           </el-select>
         </el-form-item>
-        <el-form-item label="车辆品牌:">
+        <el-form-item :label="$t.value.VehicleBrand">
           <el-input
             v-model="formData.vehicle_brand"
             placeholder="如:保时捷"
           />
         </el-form-item>
-        <el-form-item label="车辆颜色">
+        <el-form-item :label="$t.value.VehicleColor">
           <el-input
             v-model="formData.vehicle_color"
             placeholder="如:黑色"
           />
         </el-form-item>
-        <el-form-item label="绑定车主:">
+        <el-form-item :label="$t.value.BindOwner">
           <el-select
             v-model="formData.owner_id"
             placeholder="临时车可不选"
@@ -214,33 +214,35 @@
         </el-form-item>
       </el-form>
       <template #footer>
-        <el-button @click="dialogVisible = false">取消</el-button>
+        <el-button @click="dialogVisible = false">{{ $t.value.Cancel }}</el-button>
         <el-button
           type="primary"
           @click="submitForm"
-        >确认保存</el-button>
+        >{{ $t.value.Confirm }}</el-button>
       </template>
     </el-dialog>
 
     <!-- ===================== 车辆类型抽屉(Drawer)===================== -->
     <el-drawer
       v-model="typeDrawerVisible"
-      title="车辆类型管理"
+      :title="$t.value.manageCarType"
       size="700px"
     >
       <div style="display:flex; justify-content:space-between; margin-bottom:10px">
-        <el-input
-          v-model="typeQuery.name"
-          placeholder="搜索类型名称"
-          clearable
-          style="width:200px"
-          @input="getTypeList"
-        />
+        <el-form-item :label="$t.value.typeName">
+          <el-input
+            v-model="typeQuery.name"
+            placeholder=""
+            clearable
+            style="width:200px"
+            @input="getTypeList"
+          />
+        </el-form-item>
         <el-button
           type="primary"
           icon="Plus"
           @click="openTypeForm('新增')"
-        >新增类型</el-button>
+        >{{ $t.value.AddNewType }}</el-button>
       </div>
 
       <el-table
@@ -252,25 +254,25 @@
           prop="ID"
         />
         <el-table-column
-          label="类型名称"
+          :label="$t.value.typeName"
           prop="name"
         />
         <el-table-column
-          label="备注"
+          :label="$t.value.Remarks"
           prop="remarks"
         />
-        <el-table-column label="操作">
+        <el-table-column :label="$t.value.Action">
           <template #default="scope">
             <el-button
               text
               type="primary"
               @click="openTypeForm('编辑', scope.row)"
-            >编辑</el-button>
+            >{{ $t.value.modify }}</el-button>
             <el-button
               text
               type="danger"
               @click="deleteType(scope.row.ID)"
-            >删除</el-button>
+            >{{ $t.value.remove }}</el-button>
           </template>
         </el-table-column>
       </el-table>
@@ -292,16 +294,16 @@
       width="450px"
     >
       <el-form
-        label-width="80px"
+        label-width="100px"
         :model="typeForm"
       >
-        <el-form-item label="类型名称">
+        <el-form-item :label="$t.value.typeName">
           <el-input
             v-model="typeForm.name"
             placeholder="如:月租车、VIP车"
           />
         </el-form-item>
-        <el-form-item label="备注">
+        <el-form-item :label="$t.value.Remarks">
           <el-input
             v-model="typeForm.remarks"
             type="textarea"
@@ -310,11 +312,11 @@
         </el-form-item>
       </el-form>
       <template #footer>
-        <el-button @click="typeDialogVisible = false">取消</el-button>
+        <el-button @click="typeDialogVisible = false">{{ $t.value.Cancel }}</el-button>
         <el-button
           type="primary"
           @click="saveType"
-        >保存</el-button>
+        >{{ $t.value.Confirm }}</el-button>
       </template>
     </el-dialog>
   </div>
@@ -323,6 +325,7 @@
 <script setup>
 import { ref, reactive, onMounted } from 'vue'
 import { ElMessage, ElMessageBox } from 'element-plus'
+import { t } from '@/lang/index.js'
 
 import {
   obtainVehicleList,
@@ -421,13 +424,13 @@ const submitForm = async() => {
 }
 
 const deleteVehicle = async(id) => {
-  await ElMessageBox.confirm('确定删除该车辆?', '提示', { type: 'warning' })
+  await ElMessageBox.confirm(t.value.confirmDeleteCar, t.value.tip, { type: 'warning' })
   try {
     await removeVehicleList({ id })
-    ElMessage.success('删除成功')
+    ElMessage.success(t.value.deleteSuccess)
     getVehicleList()
   } catch (err) {
-    ElMessage.error('删除失败')
+    ElMessage.error(t.value.deleteFailed)
   }
 }
 

+ 0 - 6
web/src/view/parking/carOwner.vue

@@ -43,12 +43,6 @@
           @click="openCarOwner('新增车主','')"
         >{{ $t.value.new }}</el-button>
       </el-form-item>
-      <el-form-item>
-        <el-button @click="$setLang('en')">English</el-button>
-      </el-form-item>
-      <el-form-item>
-        <el-button @click="$setLang('zh-CN')">简体中文</el-button>
-      </el-form-item>
     </el-form>
     <el-table
       :data="carOwnerList"