Procházet zdrojové kódy

feat: 物联网管理-组态管理-大屏设计:多语言完成

vera_min před 1 měsícem
rodič
revize
5f3858d95c

+ 16 - 1
src/i18n/pages/iotmanagerI18n/en.ts

@@ -2,7 +2,7 @@
  * @Author: vera_min vera_min@163.com
  * @Date: 2025-08-05 12:42:31
  * @LastEditors: vera_min vera_min@163.com
- * @LastEditTime: 2025-08-08 23:30:52
+ * @LastEditTime: 2025-08-30 12:46:22
  * @FilePath: /sagoo-admin-ui/src/i18n/pages/iotmanagerI18n/en.ts
  * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
  */
@@ -381,4 +381,19 @@ export default {
 		formI18nButton: {
 		}
 	},
+	// 组态管理
+	configuration: {
+		// 大屏设计
+		designScreen: {
+			addScreen: "Add Screen",
+			editScreen: "Edit Screen",
+			keywordPlaceholder: "Enter keyword",
+			screenName: "Screen Name",
+			previewBtn: "Preview",
+			designBtn: "Design",
+			remarks: "Remarks",
+			screenNamePlaceholder: "Enter screen name",
+			screenNameValidator: "Screen name cannot be empty",
+		}
+	}
 };

+ 16 - 2
src/i18n/pages/iotmanagerI18n/zh-cn.ts

@@ -2,7 +2,7 @@
  * @Author: vera_min vera_min@163.com
  * @Date: 2025-08-05 12:42:31
  * @LastEditors: vera_min vera_min@163.com
- * @LastEditTime: 2025-08-09 16:07:54
+ * @LastEditTime: 2025-08-30 12:46:44
  * @FilePath: /sagoo-admin-ui/src/i18n/pages/iotmanagerI18n/zh-cn.ts
  * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
  */
@@ -357,7 +357,6 @@ export default {
 			deviceType: "设备类型",
 			belongProduct: "所属产品",
 			lastOnlineTime: "最后上线时间"
-			
 		},
 		tableI18nStatus: {
 			online: "在线",
@@ -382,4 +381,19 @@ export default {
 		formI18nButton: {
 		}
 	},
+	// 组态管理
+	configuration: {
+		// 大屏设计
+		designScreen: {
+			addScreen: "新增大屏",
+			editScreen: "编辑大屏",
+			keywordPlaceholder: "请输入关键字",
+			screenName: "大屏名称",
+			previewBtn: "预览",
+			designBtn: "设计大屏",
+			remarks: "说明",
+			screenNamePlaceholder: "输入大屏名称",
+			screenNameValidator: "规则名称不能为空",
+		}
+	}
 };

+ 16 - 1
src/i18n/pages/iotmanagerI18n/zh-tw.ts

@@ -2,7 +2,7 @@
  * @Author: vera_min vera_min@163.com
  * @Date: 2025-08-05 12:42:31
  * @LastEditors: vera_min vera_min@163.com
- * @LastEditTime: 2025-08-08 23:14:56
+ * @LastEditTime: 2025-08-30 12:47:53
  * @FilePath: /sagoo-admin-ui/src/i18n/pages/iotmanager/zh-tw.ts
  * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
  */
@@ -381,4 +381,19 @@ export default {
 		formI18nButton: {
 		}
 	},
+		// 组态管理
+	configuration: {
+		// 大屏设计
+		designScreen: {
+			addScreen: "新增大屏",
+			editScreen: "編輯大屏",
+			keywordPlaceholder: "請輸入關鍵字",
+			screenName: "大屏名稱",
+			previewBtn: "預覽",
+			designBtn: "設計大屏",
+			remarks: "說明",
+			screenNamePlaceholder: "輸入大屏名稱",
+			screenNameValidator: "規則名稱不能為空",
+		}
+	}
 };

+ 33 - 11
src/views/iot/configuration/screen/edit.vue

@@ -1,27 +1,48 @@
+<!--
+ * @Author: vera_min vera_min@163.com
+ * @Date: 2025-08-28 16:18:16
+ * @LastEditors: vera_min vera_min@163.com
+ * @LastEditTime: 2025-08-30 12:44:29
+ * @FilePath: /sagoo-admin-ui-dev/src/views/iot/configuration/screen/edit.vue
+ * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
+-->
 <template>
-	<el-dialog class="api-edit" v-model="showDialog" :title="`${formData.id ? '编辑大屏' : '新增大屏'}`" width="600px" :close-on-click-modal="false" :close-on-press-escape="false">
-		<el-form ref="formRef" :model="formData" :rules="ruleForm" label-width="80px">
-			<el-form-item label="大屏名称" prop="projectName">
-				<el-input v-model.trim="formData.projectName" placeholder="输入大屏名称" />
+	<!-- 编辑大屏/新增大屏 -->
+	<el-dialog class="api-edit" v-model="showDialog" :title="`${formData.id ? $t('message.configuration.designScreen.editScreen') : $t('message.configuration.designScreen.addScreen')}`" width="600px" :close-on-click-modal="false" :close-on-press-escape="false">
+		<el-form ref="formRef" :model="formData" :rules="ruleForm" :label-width="currentLocale == 'en' ? '120px' : '80px'">
+			<!-- 大屏名称 -->
+			<el-form-item :label="$t('message.configuration.designScreen.screenName')" prop="projectName">
+				<!-- 输入大屏名称 -->
+				<el-input v-model.trim="formData.projectName" :placeholder="$t('message.configuration.designScreen.screenNamePlaceholder')" />
 			</el-form-item>
-			<el-form-item label="说明" prop="remarks">
+			<!-- 说明 -->
+			<el-form-item :label="$t('message.configuration.designScreen.remarks')" prop="remarks">
 				<el-input v-model="formData.remarks" type="textarea" :rows="3" />
 			</el-form-item>
 		</el-form>
 		<template #footer>
 			<div class="dialog-footer">
-				<el-button @click="showDialog = false">取消</el-button>
-				<el-button type="primary" @click="onSubmit">确定</el-button>
+				<!-- 取消 -->
+				<el-button @click="showDialog = false">{{ $t('message.tableI18nAction.cancel') }}</el-button>
+				<!-- 编辑/新增 -->
+				<el-button type="primary" @click="onSubmit">{{ formData.id ? $t('message.tableI18nAction.edit') : $t('message.tableI18nAction.add') }}</el-button>
+				<!-- <el-button type="primary" @click="onSubmit">确定</el-button> -->
 			</div>
 		</template>
 	</el-dialog>
 </template>
 
 <script lang="ts" setup>
-import { ref, reactive, nextTick } from 'vue';
+import { ref, reactive, nextTick, computed } from 'vue';
 import api from '/@/api/screen';
 import { ruleRequired } from '/@/utils/validator';
 import { ElMessage } from 'element-plus';
+import { useI18n } from 'vue-i18n';
+
+// 国际化
+const { locale, t } = useI18n();
+
+const currentLocale = computed(() => locale.value);	
 
 const emit = defineEmits(['getList']);
 
@@ -40,7 +61,8 @@ const formData = reactive({
 });
 
 const ruleForm = {
-	projectName: [ruleRequired('规则名称不能为空')],
+	// 规则名称不能为空
+	projectName: [ruleRequired(t('message.configuration.designScreen.screenNameValidator'))],
 };
 
 const onSubmit = async () => {
@@ -49,8 +71,8 @@ const onSubmit = async () => {
 	const theApi = formData.id ? api.edit : api.add;
 
 	await theApi(formData);
-
-	ElMessage.success('操作成功');
+	// editSuccess / addSuccess
+	ElMessage.success(formData.id ? t('message.tableI18nConfirm.editSuccess') : t('message.tableI18nConfirm.addSuccess'));
 	resetForm();
 	showDialog.value = false;
 	emit('getList');

+ 30 - 16
src/views/iot/configuration/screen/index.vue

@@ -3,38 +3,52 @@
     <el-card shadow="never">
       <div class="search">
         <el-form inline>
-          <el-form-item label="关键字">
-            <el-input v-model="searchParams.keyWord" style="width: 200px; margin-left: 20px" class="search-input" placeholder="请输入关键字" clearable @keyup.enter="handleSearch" />
+          <!-- 关键字 -->
+          <el-form-item :label="$t('message.device.formI18nLabel.keyword')">
+            <el-input v-model="searchParams.keyWord" style="width: 200px; margin-left: 20px" class="search-input" :placeholder="$t('message.configuration.designScreen.keywordPlaceholder')" clearable @keyup.enter="handleSearch" />
           </el-form-item>
           <el-form-item>
+            <!-- 查询 -->
             <el-button type="primary" @click="handleSearch">
               <el-icon><ele-Search /></el-icon>
-              搜索
+              {{ $t('message.formI18nButton.query') }}
             </el-button>
           </el-form-item>
           <el-form-item>
+            <!-- 新增大屏 -->
             <el-button type="primary" v-auth="'add'" @click="addOrEdit()">
               <el-icon>
                 <ele-FolderAdd />
               </el-icon>
-              新增大屏
+              {{ $t('message.configuration.designScreen.addScreen') }}
             </el-button>
           </el-form-item>
         </el-form>
       </div>
       <el-table :data="tableData" style="width: 100%" v-loading="loading">
-        <el-table-column type="index" label="序号" width="60" align="center" />
-        <el-table-column prop="id" label="ID" show-overflow-tooltip></el-table-column>
-        <el-table-column prop="projectName" label="大屏名称" show-overflow-tooltip></el-table-column>
-        <el-table-column prop="remarks" label="描述" show-overflow-tooltip></el-table-column>
-        <el-table-column prop="createdAt" label="创建时间" min-width="100" align="center"></el-table-column>
-        <el-table-column prop="updatedAt" label="更新时间" min-width="100" align="center"></el-table-column>
-        <el-table-column label="操作" width="200" align="center">
+        <!-- 序号 -->
+        <el-table-column type="index" :label="$t('message.tableI18nColumn.index')" width="70" align="center" />
+        <!-- ID -->
+        <el-table-column prop="id" :label="$t('message.tableI18nColumn.id')" show-overflow-tooltip></el-table-column>
+        <!-- 大屏名称 -->
+        <el-table-column prop="projectName" :label="$t('message.configuration.designScreen.screenName')" show-overflow-tooltip></el-table-column>
+        <!-- 描述 -->
+        <el-table-column prop="remarks" :label="$t('message.tableI18nColumn.des')" show-overflow-tooltip></el-table-column>
+        <!-- 创建时间 -->
+        <el-table-column prop="createdAt" :label="$t('message.tableI18nColumn.createdAt')" min-width="100" align="center"></el-table-column>
+        <!-- 更新时间 -->
+        <el-table-column prop="updatedAt" :label="$t('message.tableI18nColumn.updatedAt')" min-width="100" align="center"></el-table-column>
+        <!-- 操作 -->
+        <el-table-column :label="$t('message.tableI18nColumn.operation')" width="200" align="center">
           <template #default="scope">
-            <el-button size="small" text type="primary" @click="preview(scope.row)">预览</el-button>
-            <el-button size="small" text type="warning" v-auth="'edit'" @click="addOrEdit(scope.row)">编辑</el-button>
-            <el-button size="small" text type="warning" @click="edit(scope.row)">设计大屏</el-button>
-            <el-button size="small" text type="info" v-auth="'del'" @click="onDel(scope.row)">删除</el-button>
+            <!-- 预览 -->
+            <el-button size="small" text type="primary" @click="preview(scope.row)">{{ $t('message.configuration.designScreen.previewBtn') }}</el-button>
+            <!-- 编辑 -->
+            <el-button size="small" text type="warning" v-auth="'edit'" @click="addOrEdit(scope.row)">{{ $t('message.tableI18nAction.edit') }}</el-button>
+            <!-- 设计大屏 -->
+            <el-button size="small" text type="warning" @click="edit(scope.row)">{{ $t('message.configuration.designScreen.designBtn') }}</el-button>
+            <!-- 删除 -->
+            <el-button size="small" text type="info" v-auth="'del'" @click="onDel(scope.row)">{{ $t('message.tableI18nAction.delete') }}</el-button>
           </template>
         </el-table-column>
       </el-table>
@@ -58,7 +72,7 @@ const searchParams = reactive({
 });
 
 // 监听搜索参数变化,确保在API请求中正确传递搜索条件
-watch(searchParams, (newVal) => {
+watch(searchParams, (newVal:any) => {
   // 处理搜索参数的值
   for (const key in newVal) {
     if (newVal[key] === '' || newVal[key] === null) {