Ver código fonte

feat: 添加多语言支持,更新店铺预警相关的文本内容

Mcal 2 dias atrás
pai
commit
6f47bdc4cb
5 arquivos alterados com 197 adições e 49 exclusões
  1. 38 0
      src/locales/en.json
  2. 37 0
      src/locales/ru.json
  3. 36 0
      src/locales/sr.json
  4. 38 1
      src/locales/zh.json
  5. 48 48
      src/views/store/alerts/list.vue

+ 38 - 0
src/locales/en.json

@@ -1,4 +1,42 @@
 {
+  "storeAlerts":{
+
+      "inputShopName": "Please enter the shop name",
+      "selectDate": "Select a date",
+      "search": "Search",
+      "reset": "Reset",
+      "addWarning": "Add a warning",
+      "shopId": "Shop ID",
+      "shopName": "Shop Name",
+      "shopContact": "Shop Contact Person",
+      "contactPhone": "Contact Phone",
+      "receivingEmail": "Receiving Email",
+      "warningThreshold": "Warning Threshold",
+      "warningTime": "Warning Time",
+      "operations": "Operations",
+      "detail": "Details",
+      "edit": "Edit",
+      "delete": "Delete",
+      "warningInfo": "Warning Information",
+      "selectWarningShop": "Select a warning shop",
+      "setWarningValue": "Set the warning value",
+      "setWarningInterval": "Set the warning interval",
+      "inputInitialWarningValue": "Please enter the initial warning value",
+      "inputReceivingEmail": "Please enter the receiving email for warning information",
+      "cancelSettings": "Cancel settings",
+      "saveSettings": "Save settings",
+      "shopDetail": "Shop Details",
+      "updateTime": "Update Time",
+      "selectWarningShopRequired": "Please select a warning shop",
+      "inputInitialWarningValueRequired": "Please enter the initial warning value",
+      "selectWarningIntervalRequired": "Please select a warning interval",
+      "inputReceivingEmailRequired": "Please enter the receiving email for warning information",
+      "confirmDelete": "Are you sure you want to delete {name}?",
+      "deleteSuccess": "Delete successful",
+      "warningValueMustBePositive": "The warning value must be a number greater than 0",
+      "invalidEmailAddress": "Please enter a valid email address"
+  
+  },
   "lang": "English",
   "curency": "Dollar",
   "search": "Search",

+ 37 - 0
src/locales/ru.json

@@ -1,4 +1,41 @@
 {
+  "storeAlerts":{
+      "inputShopName": "Пожалуйста, введите название магазина",
+      "selectDate": "Выберите дату",
+      "search": "Поиск",
+      "reset": "Сбросить",
+      "addWarning": "Добавить предупреждение",
+      "shopId": "ID магазина",
+      "shopName": "Название магазина",
+      "shopContact": "Ответственное лицо магазина",
+      "contactPhone": "Контактный телефон",
+      "receivingEmail": "Электронная почта для получения уведомлений",
+      "warningThreshold": "Порог предупреждения",
+      "warningTime": "Время предупреждения",
+      "operations": "Операции",
+      "detail": "Подробности",
+      "edit": "Редактировать",
+      "delete": "Удалить",
+      "warningInfo": "Информация о предупреждении",
+      "selectWarningShop": "Выберите магазин для предупреждения",
+      "setWarningValue": "Установить значение предупреждения",
+      "setWarningInterval": "Установить интервал предупреждения",
+      "inputInitialWarningValue": "Пожалуйста, введите начальное значение предупреждения",
+      "inputReceivingEmail": "Пожалуйста, введите электронную почту для получения уведомлений о предупреждении",
+      "cancelSettings": "Отменить настройки",
+      "saveSettings": "Сохранить настройки",
+      "shopDetail": "Подробности о магазине",
+      "updateTime": "Время обновления",
+      "selectWarningShopRequired": "Пожалуйста, выберите магазин для предупреждения",
+      "inputInitialWarningValueRequired": "Пожалуйста, введите начальное значение предупреждения",
+      "selectWarningIntervalRequired": "Пожалуйста, выберите интервал предупреждения",
+      "inputReceivingEmailRequired": "Пожалуйста, введите электронную почту для получения уведомлений о предупреждении",
+      "confirmDelete": "Вы уверены, что хотите удалить {name}?",
+      "deleteSuccess": "Удаление успешно",
+      "warningValueMustBePositive": "Значение предупреждения должно быть числом больше 0",
+      "invalidEmailAddress": "Пожалуйста, введите действительный адрес электронной почты"
+  
+  },
     "lang":"русский язык",
     "nav.setLayout": "Set Layout",
     "nav.logout": "Logout",

+ 36 - 0
src/locales/sr.json

@@ -1,4 +1,40 @@
 {
+  "storeAlerts":{
+    "inputShopName": "Molimo Vas, unesite naziv trgovine",
+    "selectDate": "Odaberite datum",
+    "search": "Traži",
+    "reset": "Poništi",
+    "addWarning": "Dodaj upozorenje",
+    "shopId": "ID trgovine",
+    "shopName": "Naziv trgovine",
+    "shopContact": "Kontakt osoba u trgovini",
+    "contactPhone": "Kontakt telefon",
+    "receivingEmail": "Email za primanje upozorenja",
+    "warningThreshold": "Prag upozorenja",
+    "warningTime": "Vreme upozorenja",
+    "operations": "Operacije",
+    "detail": "Detalji",
+    "edit": "Izmeni",
+    "delete": "Obriši",
+    "warningInfo": "Informacije o upozorenju",
+    "selectWarningShop": "Odaberite trgovinu za upozorenje",
+    "setWarningValue": "Postavi vrednost upozorenja",
+    "setWarningInterval": "Postavi interval upozorenja",
+    "inputInitialWarningValue": "Molimo Vas, unesite početnu vrednost upozorenja",
+    "inputReceivingEmail": "Molimo Vas, unesite email za primanje upozorenja",
+    "cancelSettings": "Poništi podešavanja",
+    "saveSettings": "Sačuvaj podešavanja",
+    "shopDetail": "Detalji trgovine",
+    "updateTime": "Vreme ažuriranja",
+    "selectWarningShopRequired": "Molimo Vas, odaberite trgovinu za upozorenje",
+    "inputInitialWarningValueRequired": "Molimo Vas, unesite početnu vrednost upozorenja",
+    "selectWarningIntervalRequired": "Molimo Vas, odaberite interval upozorenja",
+    "inputReceivingEmailRequired": "Molimo Vas, unesite email za primanje upozorenja",
+    "confirmDelete": "Da li ste sigurni da želite da obrišete {name}?",
+    "deleteSuccess": "Uspesno obrisano",
+    "warningValueMustBePositive": "Vrednost upozorenja mora biti pozitivan broj",
+    "invalidEmailAddress": "Molimo Vas, unesite ispravnu email adresu"
+},
   "lang": "Кинези",
   "盼达点餐管理系统": "Система управљања нараштанима Panda",
   "Dashboard":"Дашборд ",

+ 38 - 1
src/locales/zh.json

@@ -1,4 +1,41 @@
-{
+{ 
+  "storeAlerts":{
+      "inputShopName": "请输入店铺名称",
+      "selectDate": "选择日期",
+      "search": "搜索",
+      "reset": "重置",
+      "addWarning": "新增预警",
+      "shopId": "店铺ID",
+      "shopName": "店铺名称",
+      "shopContact": "店铺负责人",
+      "contactPhone": "联系电话",
+      "receivingEmail": "收件邮箱",
+      "warningThreshold": "预警阈值",
+      "warningTime": "预警时间",
+      "operations": "操作",
+      "detail": "详情",
+      "edit": "修改",
+      "delete": "删除",
+      "warningInfo": "预警信息",
+      "selectWarningShop": "选择预警店铺",
+      "setWarningValue": "设置预警值",
+      "setWarningInterval": "设置预警区间",
+      "inputInitialWarningValue": "请输入初始预警值",
+      "inputReceivingEmail": "请输入收件预警信息邮箱",
+      "cancelSettings": "取消设置",
+      "saveSettings": "保存设置",
+      "shopDetail": "店铺详情",
+      "updateTime": "更新时间",
+      "selectWarningShopRequired": "请选择预警店铺",
+      "inputInitialWarningValueRequired": "请输入初始预警值",
+      "selectWarningIntervalRequired": "请选择预警区间",
+      "inputReceivingEmailRequired": "请输入收件预警信息邮箱",
+      "confirmDelete": "是否确认删除 {name} 吗?",
+      "deleteSuccess": "删除成功",
+      "warningValueMustBePositive": "预警值必须是大于0的数字",
+      "invalidEmailAddress": "请输入有效的邮箱地址"
+  
+  },
   "lang": "中文",
   "curency": "人民币",
   "home":"首页",

+ 48 - 48
src/views/store/alerts/list.vue

@@ -2,92 +2,92 @@
     <div style="height: 100%; padding: 20px;">
         <el-row>
             <el-col :span="6">
-                <el-input placeholder="请输入店铺名称" v-model="shopName"></el-input>
+                <el-input :placeholder="$t('storeAlerts.inputShopName')" v-model="shopName"></el-input>
             </el-col>
             <el-col :span="6">
-                <el-date-picker v-model="date" type="date" value-format="yyyy-MM-dd" placeholder="选择日期"></el-date-picker>
+                <el-date-picker v-model="date" type="date" value-format="yyyy-MM-dd" :placeholder="$t('storeAlerts.selectDate')"></el-date-picker>
             </el-col>
             <el-col :span="6">
-                <el-button @click="getList">搜索</el-button>
-                <el-button @click="reset">重置</el-button>
+                <el-button @click="getList">{{ $t('storeAlerts.search') }}</el-button>
+                <el-button @click="reset">{{ $t('storeAlerts.reset') }}</el-button>
             </el-col>
             <el-col :span="6">
-                <el-button type="primary" @click="addWarning">新增预警</el-button>
+                <el-button type="primary" @click="addWarning">{{ $t('storeAlerts.addWarning') }}</el-button>
             </el-col>
         </el-row>
         <el-table :data="tableData" height="400" style="margin-top:30px; ">
-            <el-table-column prop="id" label="店铺ID"></el-table-column>
-            <el-table-column prop="name" label="店铺名称"></el-table-column>
-            <el-table-column prop="contact" label="店铺负责人"></el-table-column>
-            <el-table-column prop="phone" label="联系电话"></el-table-column>
-            <el-table-column prop="mail" label="收件邮箱"></el-table-column>
-            <el-table-column prop="threshold" label="预警阈值"></el-table-column>
-            <el-table-column prop="nextReminderDay" label="预警时间"></el-table-column>
-            <el-table-column label="操作" width="250">
+            <el-table-column prop="id" :label="$t('storeAlerts.shopId')"></el-table-column>
+            <el-table-column prop="name" :label="$t('storeAlerts.shopName')"></el-table-column>
+            <el-table-column prop="contact" :label="$t('storeAlerts.shopContact')"></el-table-column>
+            <el-table-column prop="phone" :label="$t('storeAlerts.contactPhone')"></el-table-column>
+            <el-table-column prop="mail" :label="$t('storeAlerts.receivingEmail')"></el-table-column>
+            <el-table-column prop="threshold" :label="$t('storeAlerts.warningThreshold')"></el-table-column>
+            <el-table-column prop="nextReminderDay" :label="$t('storeAlerts.warningTime')"></el-table-column>
+            <el-table-column :label="$t('storeAlerts.operations')" width="250">
                 <template slot-scope="scope">
-                    <el-button size="mini" @click="viewDetail(scope.row)">详情</el-button>
-                    <el-button size="mini" type="primary" @click="edit(scope.row)">修改</el-button>
-                    <el-button size="mini" type="danger" @click="del(scope.row)">删除</el-button>
+                    <el-button size="mini" @click="viewDetail(scope.row)">{{ $t('storeAlerts.detail') }}</el-button>
+                    <el-button size="mini" type="primary" @click="edit(scope.row)">{{ $t('storeAlerts.edit') }}</el-button>
+                    <el-button size="mini" type="danger" @click="del(scope.row)">{{ $t('storeAlerts.delete') }}</el-button>
                 </template>
             </el-table-column>
         </el-table>
         <el-pagination @current-change="handleCurrentChange" style="margin-top: 20px;" :page-size="pageSize"
             :current-page="currentPage" :total="total"></el-pagination>
-        <el-dialog title="预警信息" :visible.sync="dialogVisible">
+        <el-dialog :title="$t('storeAlerts.warningInfo')" :visible.sync="dialogVisible">
             <el-form label-width="120px" :model="form" :rules="rules" ref="form">
-                <el-form-item label="选择预警店铺" prop="id" required>
+                <el-form-item :label="$t('storeAlerts.selectWarningShop')" prop="id" required>
                     <el-select v-model="form.id">
                         <template v-for="(item, index) in tableData">
                             <el-option :label="item.name" :value="item.id"></el-option>
                         </template>
                     </el-select>
                 </el-form-item>
-                <el-form-item label="设置预警值" prop="threshold" required>
-                    <el-input v-model="form.threshold" placeholder="请输入初始预警值"></el-input>
+                <el-form-item :label="$t('storeAlerts.setWarningValue')" prop="threshold" required>
+                    <el-input v-model="form.threshold" :placeholder="$t('storeAlerts.inputInitialWarningValue')"></el-input>
                 </el-form-item>
-                <el-form-item label="设置预警区间" prop="alertId" required>
+                <el-form-item :label="$t('storeAlerts.setWarningInterval')" prop="alertId" required>
                     <el-select v-model="form.alertId">
                         <template v-for="(item, index) in interValList">
                             <el-option :label="item.desc" :value="item.alertId" />
                         </template>
                     </el-select>
                 </el-form-item>
-                <el-form-item label="收件邮箱" prop="mail" required>
-                    <el-input v-model="form.mail" placeholder="请输入收件预警信息邮箱"></el-input>
+                <el-form-item :label="$t('storeAlerts.receivingEmail')" prop="mail" required>
+                    <el-input v-model="form.mail" :placeholder="$t('storeAlerts.inputReceivingEmail')"></el-input>
                 </el-form-item>
             </el-form>
             <div slot="footer" class="dialog-footer">
-                <el-button @click="dialogVisible = false">取消设置</el-button>
-                <el-button type="primary" @click="saveSettings">保存设置</el-button>
+                <el-button @click="dialogVisible = false">{{ $t('storeAlerts.cancelSettings') }}</el-button>
+                <el-button type="primary" @click="saveSettings">{{ $t('storeAlerts.saveSettings') }}</el-button>
             </div>
         </el-dialog>
         <!-- 详情查看弹窗 -->
-        <el-dialog title="店铺详情" :visible.sync="detailDialogVisible">
+        <el-dialog :title="$t('storeAlerts.shopDetail')" :visible.sync="detailDialogVisible">
             <el-form label-width="120px">
-                <el-form-item label="店铺ID">
+                <el-form-item :label="$t('storeAlerts.shopId')">
                     <span>{{ detailData.id }}</span>
                 </el-form-item>
-                <el-form-item label="店铺名称">
+                <el-form-item :label="$t('storeAlerts.shopName')">
                     <span>{{ detailData.name }}</span>
                 </el-form-item>
-                <el-form-item label="店铺负责人">
+                <el-form-item :label="$t('storeAlerts.shopContact')">
                     <span>{{ detailData.contact }}</span>
                 </el-form-item>
-                <el-form-item label="联系电话">
+                <el-form-item :label="$t('storeAlerts.contactPhone')">
                     <span>{{ detailData.phone }}</span>
                 </el-form-item>
-                <el-form-item label="收件邮箱">
+                <el-form-item :label="$t('storeAlerts.receivingEmail')">
                     <span>{{ detailData.mail }}</span>
                 </el-form-item>
-                <el-form-item label="预警阈值">
+                <el-form-item :label="$t('storeAlerts.warningThreshold')">
                     <span>{{ detailData.threshold }}</span>
                 </el-form-item>
-                <el-form-item label="更新时间">
+                <el-form-item :label="$t('storeAlerts.updateTime')">
                     <span>{{ detailData.updateTime }}</span>
                 </el-form-item>
             </el-form>
             <div slot="footer" class="dialog-footer">
-                <el-button @click="detailDialogVisible = false">关闭</el-button>
+                <el-button @click="detailDialogVisible = false">{{ $t('storeAlerts.close') }}</el-button>
             </div>
         </el-dialog>
     </div>
@@ -108,24 +108,24 @@ export default {
             form: {},
             rules: {
                 id: [
-                    { required: true, message: '请选择预警店铺', trigger: 'change' }
+                    { required: true, message: this.$t('storeAlerts.selectWarningShopRequired'), trigger: 'change' }
                 ],
                 threshold: [
-                    { required: true, message: '请输入初始预警值', trigger: 'blur' },
+                    { required: true, message: this.$t('storeAlerts.inputInitialWarningValueRequired'), trigger: 'blur' },
                     { validator: this.validateThreshold, trigger: 'blur' }
                 ],
                 warningInterval: [
-                    { required: true, message: '请选择预警区间', trigger: 'change' }
+                    { required: true, message: this.$t('storeAlerts.selectWarningIntervalRequired'), trigger: 'change' }
                 ],
                 email: [
-                    { required: true, message: '请输入收件预警信息邮箱', trigger: 'blur' },
+                    { required: true, message: this.$t('storeAlerts.inputReceivingEmailRequired'), trigger: 'blur' },
                     { validator: this.validateEmail, trigger: 'blur' }
                 ]
             },
             detailDialogVisible: false, // 详情弹窗显示状态
             detailData: {}, // 存储详情信息
             interValList: [],
-            actions:'',
+            actions: '',
         };
     },
     mounted() {
@@ -147,7 +147,7 @@ export default {
                 page: this.currentPage,
                 size: this.pageSize,
                 name: this.shopName,
-                nextReminderDay:this.date
+                nextReminderDay: this.date
             }
             const { total, records } = await getStoreAlertsList(query);
             console.log(records);
@@ -171,8 +171,8 @@ export default {
         saveSettings() {
             this.$refs.form.validate((valid) => {
                 if (valid) {
-                    if(this.actions=='edit'){
-                        updateStoreAlerts(this.form.id,this.form).then(res=>{
+                    if (this.actions == 'edit') {
+                        updateStoreAlerts(this.form.id, this.form).then(res => {
                             this.getList();
                             this.dialogVisible = false;
                         })
@@ -198,16 +198,16 @@ export default {
                 threshold: row.threshold,
                 warningInterval: row.warningInterval,
                 mail: row.mail,
-                alertId:row.alertId,
+                alertId: row.alertId,
             };
             this.actions = 'edit'
             this.dialogVisible = true;
         },
         del(row) {
-            //弹窗确认
-            this.$modal.confirm('是否确认删除' + row.name + '"吗?').then( ()=>{
+            // 弹窗确认
+            this.$modal.confirm(this.$t('storeAlerts.confirmDelete', { name: row.name })).then(() => {
                 clearStoreAlerts(row.id).then(res => {
-                    this.$modal.msgSuccess("删除成功");
+                    this.$modal.msgSuccess(this.$t('storeAlerts.deleteSuccess'));
                     this.getList();
                 });
             }).catch(function (e) {
@@ -224,7 +224,7 @@ export default {
         },
         validateThreshold(rule, value, callback) {
             if (isNaN(parseFloat(value)) || parseFloat(value) <= 0) {
-                callback(new Error('预警值必须是大于0的数字'));
+                callback(new Error(this.$t('storeAlerts.warningValueMustBePositive')));
             } else {
                 callback();
             }
@@ -232,7 +232,7 @@ export default {
         validateEmail(rule, value, callback) {
             const emailReg = /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/;
             if (!emailReg.test(value)) {
-                callback(new Error('请输入有效的邮箱地址'));
+                callback(new Error(this.$t('storeAlerts.invalidEmailAddress')));
             } else {
                 callback();
             }