Browse Source

添加文本翻译

yangg 11 months ago
parent
commit
240f79d2d1

+ 80 - 2
src/locales/en.json

@@ -39,6 +39,7 @@
     "edit": "Edit",
     "view": "View",
     "delete": "Delete",
+    "restore":"Restore",
     "review": "Review",
     "down": "Reject",
     "print": "Print",
@@ -79,7 +80,7 @@
     "warechouse_sn": "Warehouse Number",
     "warechouse_name": "Warehouse Name",
     "warechouse_user_name": "Person in Charge Name",
-    "warechouse_phone": "Person in Charge Phone Number",
+    "warechouse_phone": "Person in Charge Phone",
     "warechouse_address": "Warehouse Address",
     "warechouse_remark": "Warehouse Description",
     "warechouse_code": "Location Number",
@@ -106,7 +107,7 @@
     "end_time": "End Time",
     "storage_type": "Storage Type",
     "customer_name": "Customer Name",
-    "phone": "Phone Number",
+    "phone": "Phone",
     "warehousing_sn": "Warehousing Number",
     "warehousing_num": "Warehousing Quantity",
     "warehousing_in_num": "Warehoused Quantity",
@@ -143,6 +144,57 @@
     "goods_name": "Goods Name",
     "goods_unit": "Unit",
     "goods_inventory": "Goods Details",
+    "goods_brand": "Brand",
+    "goods_bar_code": "Barcode",
+    "goods_weight": "Weight",
+    "goods_image": "Product Image",
+
+    "user_name": "Login Name",
+    "user_name_length": "Length must be between 2 and 20 characters",
+    "user_name_bination": "Only supports combinations of Chinese characters, letters, numbers, '-', and '_'!",
+    "real_name": "Username",
+    "nick_name": "User Nickname",
+    "admin_sn": "User Code",
+    "dept_name": "Department",
+    "post_name": "Position",
+    "user_state": "Status",
+    "role_name": "Associated Role",
+    "admin_normal": "Normal",
+    "admin_password": "Password",
+    "pass_info": "Password must be 6-20 characters long, including numbers, letters, or special characters!",
+    "admin_not_pass": "Leave blank if not modifying",
+    "admin_info": "6-20 characters including numbers, letters, or special characters",
+    "role_name_info": "Super administrator does not need to select a role",
+    "role_name_sel": "Please select a role",
+    "admin_super": "Super User",
+    "restore_success": "Restore successful!",
+    "role_names": "Role Name",
+    "role_describe": "Role Description",
+    "role_permission": "Role Permissions",
+    "role_name_error": "Length must be between 1 and 10 characters",
+    "sel_all": "Select All",
+
+    "dept_names": "Department Name",
+    "dept_sn": "Department Code",
+    "dept_auth_regular": "Superior Department",
+    "dept_type": "Department Type",
+    "dept_sort": "Department Sort",
+    "dept_remark": "Department Description",
+
+    "MSG_info": "Message Configuration",
+    "set_save": "Save Settings",
+
+    "log_info": "Log Details",
+    "search_log": "Account/Operation Content/IP Address",
+    "operator_name": "Account",
+    "operate_detail": "Operation Description",
+    "request_method": "Request Method",
+    "request_parameters": "Request Parameters",
+    "operate_time": "Operation Time",
+    "operate_ip": "IP Address",
+    "operate_level": "Log Level",
+    "operate_import": "Important",
+    "operate_same": "General",
 
     "order_num": "Order Quantity",
     "return_num": "Return Quantity",
@@ -170,6 +222,32 @@
     "delivery_method": "Delivery Method",
     "transfer_order": "Transfer Order",
 
+    "express": "Logistics Company",
+    "companyDetails": "Company Information",
+    "currentPack": "Current Package",
+    "end_use_time": "Package Expiration Time",
+    "user_num": "Number of Bindable Accounts",
+    "companyName": "Company Name",
+    "credit_code": "Unified Social Credit Code",
+    "industry": "Industry",
+    "company_user_name": "Contact Person",
+    "companyPhone": "Contact Phone",
+    "companyEmail": "Email",
+    "postalCode": "Postal Code",
+    "website": "Official Website",
+    "companyAddress": "Address",
+    "companyLicense": "Business License",
+    "nickname": "Account Name",
+    "loginName": "Login Account",
+    "profile": "Profile Picture",
+    "bindWeChat": "Bind WeChat",
+    "bindWeChatError": "Failed to Get WeChat Binding Information",
+    "uploadPro": "Please Upload Profile Picture",
+    "uploadNewPro": "Please Upload a New Profile Picture",
+    "pay_success": "Payment Successful",
+    "pay_info": "Payment Canceled",
+    "pay_error": "Payment Failed",
+
     "brand": "Brand",
     "weight": "Weight",
     "consistent": "Cannot Be Consistent",

+ 104 - 0
src/locales/zh.json

@@ -39,6 +39,9 @@
     "edit": "编 辑",
     "view":"查 看",
     "delete":"删 除",
+    "restore":"恢复",
+    "renew":"续费",
+    "agree_with":"同意",
     "review":"审 核",
     "down":"驳 回",
     "print":"打 印",
@@ -66,6 +69,10 @@
     "set_success":"设置成功",
     "audit_success":"审核成功",
     "down_success":"驳回成功",
+    "created_success":"创建成功",
+    "renew_success":"续费成功!",
+    "renew_info":"付费后立即生效!",
+    "pass_error":"此为登录密码,请详细记录",
     "prompt":"提示",
     "rejected":"已拒绝!",
     "reject_reason":"请填写驳回原因!",
@@ -143,6 +150,58 @@
     "goods_name":"商品名称",
     "goods_unit":"单位",
     "goods_inventory":"商品明细",
+    "goods_brand":"品牌",
+    "goods_bar_code":"条码",
+    "goods_weight":"重量",
+    "goods_image":"商品图片",
+
+    "user_name":"登录名",
+    "user_name_length":"长度在 2 到 20 个字符",
+    "user_name_bination":"只支持汉字、字母、数字、“-”、“_”的组合!",
+    "real_name":"用户名",
+    "nick_name":"用户昵称",
+    "admin_sn":"用户编码",
+    "dept_name":"部门",
+    "post_name":"岗位",
+    "user_state":"状态",
+    "role_name":"所属角色",
+    "admin_normal":"正常",
+    "admin_password":"密码",
+    "pass_info":"密码应为6-20位数字、英文字母,或者特殊字符!",
+    "admin_not_pass":"不修改请留空",
+    "admin_info":"6-20位数字、英文字母,或者特殊字符",
+    "role_name_info":"超级管理员无须选择角色",
+    "role_name_sel":"请选择角色",
+    "admin_super":"超级人员",
+    "restore_success":"恢复成功!",
+    "role_names":"角色名称",
+    "role_describe":"角色描述",
+    "role_permission":"角色权限",
+    "role_name_error":"长度在 1 到 10 个字符",
+    "sel_all":"全部选择",
+
+    "dept_names":"部门名称",
+    "dept_sn":"部门编码",
+    "dept_auth_regular":"上级部门",
+    "dept_type":"部门类型",
+    "dept_sort":"部门排序",
+    "dept_remark":"部门说明",
+
+    "MSG_info":"消息配置",
+    "set_save":"保存设置",
+
+    "log_info":"日志详情",
+    "search_log":"账号/操作内容/IP地址",
+    "operator_name":"账号",
+    "operate_detail":"操作描述",
+    "request_method":"请求方法",
+    "request_parameters":"请求参数",
+    "operate_time":"操作时间",
+    "operate_ip":"IP地址",
+    "operate_level":"日志级别",
+    "operate_import":"重要",
+    "operate_same":"一般",
+    "legal_person":"法人",
 
     "order_num":"订单数量",
     "return_num":"退货数量",
@@ -211,6 +270,51 @@
     "logout_commit":"确定退出吗",
     "payment_success":"设置成功",
 
+    "company_package":"套餐",
+    "package_name":"套餐名称",
+    "package_money":"套餐金额",
+    "package_day":"天数",
+    "package_user_num":"可创建用户数",
+    "package_remark":"套餐说明",
+    "package_role":"权限",
+
+    "function_name":"功能名称",
+    "function_describe":"功能描述",
+    "function_permission":"功能权限",
+
+    "template_name":"模板名称",
+    "template_code":"模板code",
+    "template_remark":"模版说明",
+    "audit_status":"审核状态",
+    "superior_template":"上级模板",
+    "custom_template_code":"自定义模版code",
+    "enable_status":"是否启用",
+    "template_content":"模版内容",
+    "template_tips":"只能输入英文、数字和下划线,不能包含空格",
+    "template_add":"添加模版",
+    "template_view":"查看模版",
+    "template_edit":"编辑模版",
+    "template_type_success":"状态修改成功",
+    "front_id_card":"身份证正面",
+    "opposite_id_card":"身份证反面",
+    "corporate_phone":"法人电话",
+    "upload_id_card":"请上传法人身份证",
+    "valid_phone":"请输入有效的手机号",
+    "valid_email":"请输入有效的邮箱地址",
+    "valid_postal_code":"请输入有效的手机号",
+    "dic_class_list":"字典分类列表",
+    "dic_data_list":"字典数据列表",
+    "dic_sn":"字典编号",
+    "dic_id":"字典编码",
+    "dic_name":"字典名称",
+    "dic_type":"字典类型",
+    "dic_label":"字典标签",
+    "dic_value":"字典键值",
+    "dic_sort":"字典排序",
+    "default_flag":"是否默认选中",
+    "dic_class_info":"确定要删除这个字典分类吗?",
+    "dic_data_info":"确定要删除这个字典吗?",
+    
 
     "tabs": "标签",
     "error": "错误",

+ 53 - 50
src/views/companyMent/administratorManage.vue

@@ -5,11 +5,11 @@
         <div class="inner-toolbar w-11/12 flex justify-between">
           <div class="toolbar-btns">
             <el-button size="small" v-if="store.state.user.user.founder !== 1" type="primary" icon="el-icon-circle-plus-outline" @click="handleAddAdmin"
-              >添加</el-button
+              >{{$t('add')}}</el-button
             >
           </div>
           <div class="toolbar-search">
-            <en-table-search @search="searchEvent" placeholder="请输入关键字" @advancedSearch="advancedSearchEvent" advanced>
+            <en-table-search @search="searchEvent" :placeholder="$t('search_placeholde')" @advancedSearch="advancedSearchEvent" advanced>
               <!--  <template #advanced-content>v-if="checkPermission(['administratorManage:add'])"
                 <el-form ref="advancedForm" :model="advancedForm" label-width="90px">
                   <el-form-item label="状态">
@@ -26,28 +26,28 @@
       </template>
 
       <template #table-columns>
-        <el-table-column prop="username" label="登录名" />
-        <el-table-column prop="real_name" label="用户名" />
-        <el-table-column prop="nickname" label="用户昵称" />
-        <el-table-column prop="sn" label="用户编码" />
-        <el-table-column prop="dept_name" label="部门" />
-        <el-table-column prop="post_name" label="岗位" />
-        <el-table-column prop="user_state" label="状态">
+        <el-table-column prop="username" :label="$t('user_name')" />
+        <el-table-column prop="real_name" :label="$t('real_name')" />
+        <el-table-column prop="nickname" :label="$t('nick_name')" />
+        <el-table-column prop="sn" :label="$t('admin_sn')" />
+        <el-table-column prop="dept_name" :label="$t('dept_name')" />
+        <el-table-column prop="post_name" :label="$t('post_name')" />
+        <el-table-column prop="user_state" :label="$t('user_state')">
           <template #default="scope">
-            {{ scope.row.user_state === 0 ? '正常' : '删除' }}
+            {{ scope.row.user_state === 0 ? $t('admin_normal') : $t('delete') }}
           </template>
         </el-table-column>
-        <el-table-column prop="role_name" label="所属角色" />
-        <el-table-column label="操作" width="200px">
+        <el-table-column prop="role_name" :label="$t('role_name')"/>
+        <el-table-column :label="$t('operate')" width="200px">
           <template #default="scope">
-            <el-button size="small" type="primary" v-if="store.state.user.user.founder !== 1" @click="handleEditAdmin(scope.$index, scope.row)">编辑</el-button>
+            <el-button size="small" type="primary" v-if="store.state.user.user.founder !== 1" @click="handleEditAdmin(scope.$index, scope.row)">{{$t('edit')}}</el-button>
             <!-- v-if="checkPermission(['administratorManage:edit'])" -->
             <el-button
               size="small"
               type="danger"
               v-if="scope.row.user_state === 0 && store.state.user.user.founder !== 1"
               @click="handleDeleteAdmin(scope.$index, scope.row)"
-              >删除</el-button
+              >{{$t('delete')}}</el-button
             >
             <!-- && checkPermission(['administratorManage:del']) && checkPermission(['administratorManage:restore'])-->
             <el-button
@@ -55,7 +55,7 @@
               type="success"
               v-if="scope.row.user_state !== 0 && store.state.user.user.founder !== 1"
               @click="handleRestoreAdmin(scope.$index, scope.row)"
-              >恢复</el-button
+              >{{$t('restore')}}</el-button
             >
           </template>
         </el-table-column>
@@ -85,7 +85,7 @@
       </template>
     </en-table-layout>
     <el-dialog
-      :title="adminForm.id ? '编辑人员' : '添加人员'"
+      :title="adminForm.id ? $t('edit') : $t('add')"
       v-model="dialogVisible"
       width="500px"
       @open="handleDialogOpen"
@@ -94,39 +94,39 @@
       :close-on-press-escape="false"
     >
       <el-form :model="adminForm" :rules="adminRules" ref="adminFormRef" label-width="120px">
-        <el-form-item label="手机号" prop="phone">
-          <el-input v-model="adminForm.phone" :minlength="2" :maxlength="20" clearable placeholder="请输入手机号"></el-input>
+        <el-form-item :label="$t('phone')" prop="phone">
+          <el-input v-model="adminForm.phone" :minlength="2" :maxlength="20" clearable :placeholder="$t('place')+$t('phone')"></el-input>
         </el-form-item>
-        <el-form-item label="邮箱" prop="email">
-          <el-input v-model="adminForm.email" :maxlength="20" clearable placeholder="请输入邮箱"></el-input>
+        <el-form-item :label="$t('companyEmail')" prop="email">
+          <el-input v-model="adminForm.email" :maxlength="20" clearable :placeholder="$t('place')+$t('companyEmail')"></el-input>
         </el-form-item>
-        <el-form-item label="昵称" prop="nickname">
-          <el-input v-model="adminForm.nickname" :maxlength="20" clearable placeholder="请输入昵称"></el-input>
+        <el-form-item :label="$t('nick_name')" prop="nickname">
+          <el-input v-model="adminForm.nickname" :maxlength="20" clearable :placeholder="$t('place')+$t('nick_name')"></el-input>
         </el-form-item>
-        <el-form-item label="登录名" prop="username">
-          <el-input v-model="adminForm.username" :maxlength="20" clearable placeholder="请输入登录名"></el-input>
+        <el-form-item :label="$t('user_name')" prop="username">
+          <el-input v-model="adminForm.username" :maxlength="20" clearable :placeholder="$t('place')+$t('user_name')"></el-input>
         </el-form-item>
-        <el-form-item label="密码" prop="password">
+        <el-form-item :label="$t('admin_password')" prop="password">
           <el-input
             type="password"
             autocomplete="off"
             v-model="adminForm.password"
             :maxlength="20"
             clearable
-            :placeholder="adminForm.id ? '不修改请留空' : '6-20位数字、英文字母,或者特殊字符'"
+            :placeholder="adminForm.id ? $t('admin_not_pass') : $t('admin_info')"
           ></el-input>
         </el-form-item>
-        <el-form-item label="所属角色" prop="role_id">
+        <el-form-item :label="$t('role_name')" prop="role_id">
           <el-select
             v-model="adminForm.role_id"
             :disabled="adminForm.founder === 1"
-            :placeholder="adminForm.founder === 1 ? '超级管理员无须选择角色' : '请选择角色'"
+            :placeholder="adminForm.founder === 1 ? $t('role_name_info') : $t('role_name_sel')"
             clearable
           >
             <el-option v-for="item in rolesOptions" :key="item.role_id" :label="item.role_name" :value="item.role_id"> </el-option>
           </el-select>
         </el-form-item>
-        <el-form-item label="所属部门" prop="dept_id">
+        <el-form-item :label="$t('dept_name')" prop="dept_id">
           <el-cascader
             v-model="adminForm.dept_id"
             :options="deptList"
@@ -139,15 +139,15 @@
             clearable
           ></el-cascader>
         </el-form-item>
-        <el-form-item label="所属岗位" prop="post_id">
+        <el-form-item :label="$t('post_name')" prop="post_id">
           <el-select v-model="adminForm.post_id">
             <el-option v-for="item in postList" :key="item.id" :label="item.name" :value="item.id" />
           </el-select>
         </el-form-item>
       </el-form>
       <template #footer>
-        <el-button @click="dialogVisible = false">取 消</el-button>
-        <el-button type="primary" @click="submitAdminForm">确 定</el-button>
+        <el-button @click="dialogVisible = false">{{$t('cancel')}}</el-button>
+        <el-button type="primary" @click="submitAdminForm">{{$t('submit')}}</el-button>
       </template>
     </el-dialog>
   </div>
@@ -160,6 +160,9 @@ import * as API_Auth from '@/api/auth';
 import * as API_Setting from '@/api/setting';
 import md5 from 'js-md5';
 import { RegExp } from '../../composables/ui-utils/RegExp';
+import { useI18n } from 'vue-i18n';
+
+const { t } = useI18n();
 //, Foundation
 import { useStore } from 'vuex';
 const store = useStore();
@@ -208,12 +211,12 @@ const advancedForm = ref<any>({
 });
 const adminRules = reactive({
   username: [
-    { required: true, message: '请输入人员名称!' },
-    { min: 2, max: 20, message: '长度在 2 到 20 个字符' },
+    { required: true, message:t('place') + t('user_name')+'!' },
+    { min: 2, max: 20, message: t('user_name_length') },
     {
       validator: (rule, value, callback) => {
         if (value && !RegExp.userName.test(value)) {
-          callback(new Error('只支持汉字、字母、数字、“-”、“_”的组合!'));
+          callback(new Error(t('user_name_bination')));
         } else {
           callback();
         }
@@ -221,22 +224,22 @@ const adminRules = reactive({
     },
   ],
   password: [
-    { required: true, message: '请输入人员密码!', trigger: 'blur' },
+    { required: true, message: t('place') + t('admin_password')+'!', trigger: 'blur' },
     {
       validator: (rule, value, callback) => {
         if (value && !RegExp.password.test(value)) {
-          callback(new Error('密码应为6-20位数字、英文字母,或者特殊字符!'));
+          callback(new Error(t('pass_info')));
         } else {
           callback();
         }
       },
     },
   ],
-  department: [{ required: true, message: '请输入所属部门!' }],
-  role_id: [{ required: true, message: '请选择所属角色!', trigger: 'change' }],
+  department: [{ required: true, message: t('change') + t('dept_name')+'!' , trigger: 'change'}],
+  role_id: [{ required: true, message: t('change') + t('role_name')+'!', trigger: 'change' }],
   face: [{ required: true, message: '请上传人员头像!' }],
-  phone: [{ required: true, message: '请输入手机号!' }],
-  email: [{ required: true, message: '请输入邮箱!' }],
+  phone: [{ required: true, message: t('place') + t('phone')+'!' }],
+  email: [{ required: true, message: t('place') + t('companyEmail')+'!' }],
 });
 const dialogVisible = ref(false);
 const rolesOptions = ref<any>([]);
@@ -254,7 +257,7 @@ watch(
   () => adminForm.value.founder,
   (newValue) => {
     adminRules.role_id[0].required = newValue === 0;
-    if (newValue === 1) adminForm.value.role_id = '超级人员';
+    if (newValue === 1) adminForm.value.role_id = t('admin_super');
   }
 );
 
@@ -355,23 +358,23 @@ const handleEditAdmin = (index, row) => {
   console.log(row);
   adminForm.value=row
  /*  Object.assign(adminForm, row); */
-  adminForm.value.role_id = parseInt(adminForm.value.role_id) === 0 ? '超级人员' : adminForm.value.role_id;
+  adminForm.value.role_id = parseInt(adminForm.value.role_id) === 0 ? t('admin_super') : adminForm.value.role_id;
   fileList.value = adminForm.value.face ? [{ name: 'face', url: adminForm.value.face }] : [];
   dialogVisible.value = true;
 };
 
 const handleRestoreAdmin = (index, row) => {
   API_Auth.restoreAdministrator(row.id).then(() => {
-    ElMessage.success('恢复成功!');
+    ElMessage.success(t('restore_success'));
     GET_AdministratorList();
   });
 };
 
 const handleDeleteAdmin = (index, row) => {
-  ElMessageBox.confirm('确定要删除这个人员吗?', '提示', { type: 'warning' })
+  ElMessageBox.confirm(t('del_info'), t('prompt'), { type: 'warning' })
     .then(() => {
       API_Auth.deleteAdministrator(row.id).then(() => {
-        ElMessage.success('删除成功!');
+        ElMessage.success(t('del_success'));
         GET_AdministratorList();
       });
     })
@@ -391,22 +394,22 @@ const submitAdminForm = () => {
       const params = { ...adminForm.value };
       if (params.password) params.password = params.password; //md5();
       if (!params.real_name) delete params.real_name;
-      params.role_id === '超级人员' ? (params.role_id = 0) : null;
+      params.role_id === t('admin_super') ? (params.role_id = 0) : null;
       if (id) {
         API_Auth.editAdministrator(id, params).then(() => {
           dialogVisible.value = false;
-          ElMessage.success('修改成功!');
+          ElMessage.success(t('edit_success'));
           GET_AdministratorList();
         });
       } else {
         API_Auth.addAdministrator(params).then(() => {
           dialogVisible.value = false;
-          ElMessage.success('添加成功!');
+          ElMessage.success(t('add_success'));
           GET_AdministratorList();
         });
       }
     } else {
-      ElMessage.error('表单填写有误,请核对!');
+      ElMessage.error(t('form_erroe'));
       return false;
     }
   });

+ 27 - 24
src/views/companyMent/branch.vue

@@ -4,7 +4,7 @@
       <div class="toolbar">
         <div class="inner-toolbar">
           <div class="toolbar-btns">
-            <el-button size="small" v-if="checkPermission(['branch:add'])&& store.state.user.user.founder!==1" type="primary" @click="handleAddBranch">新增</el-button>
+            <el-button size="small" v-if="checkPermission(['branch:add'])&& store.state.user.user.founder!==1" type="primary" @click="handleAddBranch">{{$t('add')}}</el-button>
           </div>
         </div>
       </div>
@@ -17,15 +17,15 @@
           </template>
         </el-tree>
       </div>
-      <el-dialog title="添加部门" v-model="dialogVisible" width="500px" :close-on-click-modal="false" :close-on-press-escape="false">
+      <el-dialog :title="$t('add')" v-model="dialogVisible" width="500px" :close-on-click-modal="false" :close-on-press-escape="false">
         <el-form :model="deptForm" ref="deptFormRef" label-width="130px">
-          <el-form-item label="部门名称" prop="name">
+          <el-form-item :label="$t('dept_names')" prop="name">
             <el-input v-model="deptForm.name" :maxlength="6"></el-input>
           </el-form-item>
-          <el-form-item label="部门编码" prop="sn">
+          <el-form-item :label="$t('dept_sn')" prop="sn">
             <el-input v-model="deptForm.sn" :maxlength="50"></el-input>
           </el-form-item>
-          <el-form-item label="上级部门" prop="auth_regular">
+          <el-form-item :label="$t('dept_auth_regular')" prop="auth_regular">
             <el-cascader
               v-model="deptForm.parent_id"
               :options="deptList"
@@ -42,33 +42,33 @@
               <en-region-picker :api="MixinRegionApi" :default="defaultRegions"
                 @changed="(object) => { deptForm.region = object.last_id }" />
             </el-form-item> -->
-          <el-form-item label="部门类型" prop="auth_regular">
-            <el-select v-model="deptForm.type" placeholder="请选择部门类型" size="small">
+          <el-form-item :label="$t('dept_type')" prop="auth_regular">
+            <el-select v-model="deptForm.type" :placeholder="$t('change')+$t('dept_type')" size="small">
               <el-option v-for="item in deptType" :key="item.value" :label="item.label" :value="item.value" />
             </el-select>
           </el-form-item>
-          <el-form-item label="显示顺序" prop="sort">
+          <el-form-item :label="$t('dept_sort')" prop="sort">
             <el-input v-model="deptForm.sort" :maxlength="2"></el-input>
           </el-form-item>
-          <el-form-item label="部门说明" prop="remark">
-            <el-input v-model="deptForm.remark" type="textarea" :autosize="{ minRows: 3, maxRows: 4 }" placeholder="请输入部门说明"></el-input>
+          <el-form-item :label="$t('dept_remark')" prop="remark">
+            <el-input v-model="deptForm.remark" type="textarea" :autosize="{ minRows: 3, maxRows: 4 }" :placeholder="$t('change')+$t('dept_remark')"></el-input>
           </el-form-item>
         </el-form>
         <template #footer>
-          <el-button @click="dialogVisible = false">取 消</el-button>
-          <el-button type="primary" @click="submitBranchForm">确 定</el-button>
+          <el-button @click="dialogVisible = false">{{$t('cancel')}}</el-button>
+          <el-button type="primary" @click="submitBranchForm">{{$t('submit')}}</el-button>
         </template>
       </el-dialog>
     </div>
     <div class="basicsetting-container">
       <el-form class="form" :model="deptForm" ref="deptFormRef" label-width="120px" v-if="dialogEditVisible">
-        <el-form-item label="部门名称" prop="name">
+        <el-form-item :label="$t('dept_names')" prop="name">
           <el-input v-model="deptForm.name" :maxlength="6"></el-input>
         </el-form-item>
-        <el-form-item label="部门编码" prop="sn">
+        <el-form-item :label="$t('dept_sn')" prop="sn">
           <el-input v-model="deptForm.sn" :maxlength="50"></el-input>
         </el-form-item>
-          <el-form-item label="上级部门" prop="parent_id">
+          <el-form-item :label="$t('dept_auth_regular')" prop="parent_id">
           <el-cascader
           disabled
             v-model="deptForm.parent_id"
@@ -91,15 +91,15 @@
             <el-option v-for="item in deptType" :key="item.value" :label="item.label" :value="item.value" />
           </el-select>
         </el-form-item> -->
-        <el-form-item label="显示顺序" prop="sort">
+        <el-form-item :label="$t('dept_sort')" prop="sort">
           <el-input v-model="deptForm.sort" :maxlength="2"></el-input>
         </el-form-item>
-        <el-form-item label="部门说明" prop="remark">
-          <el-input v-model="deptForm.remark" type="textarea" :autosize="{ minRows: 3, maxRows: 4 }" placeholder="请输入部门说明"></el-input>
+        <el-form-item :label="$t('dept_remark')" prop="remark">
+          <el-input v-model="deptForm.remark" type="textarea" :autosize="{ minRows: 3, maxRows: 4 }" :placeholder="$t('place')+$t('dept_remark')"></el-input>
         </el-form-item>
         <el-form-item>
-          <el-button type="primary" @click="submitBranchForm" v-if="checkPermission(['branch:edit']) && store.state.user.user.founder!==1">保 存</el-button>
-          <el-button type="danger" @click="handleDeleteBranch" v-if="checkPermission(['branch:del']) && store.state.user.user.founder!==1">删 除</el-button>
+          <el-button type="primary" @click="submitBranchForm" v-if="checkPermission(['branch:edit']) && store.state.user.user.founder!==1">{{$t('save')}}</el-button>
+          <el-button type="danger" @click="handleDeleteBranch" v-if="checkPermission(['branch:del']) && store.state.user.user.founder!==1">{{$t('delete')}}</el-button>
         </el-form-item>
       </el-form>
     </div>
@@ -111,6 +111,9 @@ import { ref, onMounted } from 'vue';
 import { ElMessage, ElMessageBox } from 'element-plus';
 import * as API_Setting from '@/api/setting';
 import { useStore } from 'vuex';
+import { useI18n } from 'vue-i18n';
+
+const { t } = useI18n();
 const store = useStore();
 const defaultRegions = ref<any>(null);
 const deptList = ref([]);
@@ -192,11 +195,11 @@ const handleEditBranch = (row: any) => {
 };
 
 const handleDeleteBranch = () => {
-  ElMessageBox.confirm('确定要删除这个部门吗?', '提示', { type: 'warning' })
+  ElMessageBox.confirm(t('del_info')+'?', t('prompt'), { type: 'warning' })
     .then(() => {
       const { id } = deptForm.value;
       API_Setting.deleteDept({ id }).then(() => {
-        ElMessage.success('删除成功!');
+        ElMessage.success(t('del_success'));
         dialogEditVisible.value = false;
         GET_DeptList();
       });
@@ -214,13 +217,13 @@ const submitBranchForm = () => {
   if (id) {
     API_Setting.editDept(params).then(() => {
       dialogVisible.value = false;
-      ElMessage.success('修改成功!');
+      ElMessage.success(t('edit_success')+'!');
       GET_DeptList();
     });
   } else {
     API_Setting.addDept(params).then(() => {
       dialogVisible.value = false;
-      ElMessage.success('添加成功!');
+      ElMessage.success(t('add_success')+'!');
       GET_DeptList();
     });
   }

+ 2 - 2
src/views/companyMent/companyInfo.vue

@@ -2,7 +2,7 @@
   <div class="bg-white dark:!bg-[#060818]">
     <el-tabs type="border-card" class="bg-gray-100 dark:bg-[#060818]">
       <el-tab-pane :label="$t('companyDetails')" class="custom-tab-pane">
-        <el-form :model="companyForm" :rules="stockRules" ref="companyFormRef" label-width="140px">
+        <el-form :model="companyForm" :rules="stockRules" ref="companyFormRef" label-width="210px">
           <el-row>
             <el-col :span="24" :md="6">
               <el-form-item :label="$t('currentPack')+':'" prop="company_package_id">
@@ -89,7 +89,7 @@
         <div class="flex justify-center"><el-button type="primary" @click="submitWarehouseForm">{{$t('save')}}</el-button></div>
       </el-tab-pane>
       <el-tab-pane :label="$t('info')" class="custom-tab-pane">
-        <el-form :model="infoForm" :rules="stockRules" ref="infoFormRef" label-width="100px">
+        <el-form :model="infoForm" :rules="stockRules" ref="infoFormRef" label-width="140px">
           <el-row>
             <el-col :span="24" :md="12" :lg="8">
               <el-form-item :label="$t('nickname')+':'" prop="nickname">

+ 10 - 6
src/views/companyMent/configMsg.vue

@@ -1,7 +1,7 @@
 <template>
   <div class="permission-container">
     <el-form :model="configMsgForm" :rules="permissionRules" ref="configMsgFormRef" label-width="200px" class="demo-ruleForm">
-      <el-form-item label="消息配置" prop="permission">
+      <el-form-item :label="$t('MSG_info')" prop="permission">
         <!-- <el-checkbox :indeterminate="allIndeterminate" v-model="allCheck" @change="handleCheckAll">全部选择</el-checkbox> -->
         <div v-for="item in permissions" :key="item.identifier" class="level_1">
           <el-row :gutter="20">
@@ -74,7 +74,7 @@
         </div>
       </el-form-item>
       <el-form-item label="">
-        <el-button type="primary" size="small" v-if="store.state.user.user.founder!==1" style="margin-top: 15px" @click="saveRolePermission">保存设置</el-button>
+        <el-button type="primary" size="small" v-if="store.state.user.user.founder!==1" style="margin-top: 15px" @click="saveRolePermission">{{$t('set_save')}}</el-button>
       </el-form-item>
     </el-form>
   </div>
@@ -89,6 +89,10 @@ import * as API_Menus from '@/api/menus';
 import * as API_Setting from '@/api/setting';
 import * as API_Company from '@/api/company';
 import { useStore } from 'vuex';
+import { useI18n } from 'vue-i18n';
+
+const { t } = useI18n();
+
 const store = useStore();
 /*   import { Foundation } from '../../composables/ui-utils'; */
 
@@ -123,8 +127,8 @@ const configMsgForm = reactive<{
 /** 权限 表单规则 */
 const permissionRules = reactive({
   role_name: [
-    { required: true, message: '请输入角色名称!', trigger: 'blur' },
-    { min: 1, max: 10, message: '长度在 1 到 10 个字符', trigger: 'blur' },
+    { required: true, message: t('place')+t('role_names')+'!', trigger: 'blur' },
+    { min: 1, max: 10, message: t('role_name_error')+'!', trigger: 'blur' },
   ],
 });
 
@@ -334,7 +338,7 @@ const saveRolePermission = () => {
         }
       } */
       API_Company.updateSelectMsg(params).then((res) => {
-        ElMessage.success('保存成功!');
+        ElMessage.success(t('sub_success')+'!');
         GET_RolePermission();
       });
       /* const saveSuccess = () => {
@@ -343,7 +347,7 @@ const saveRolePermission = () => {
       };*/
       /*  role_id.value === '0' ? API_Auth.addRole(params).then(() => saveSuccess()) : API_Auth.editRole(role_id.value, params).then(() => saveSuccess()); */
     } else {
-      ElMessage.error('表单填写有误,请检查!');
+      ElMessage.error(t('form_erroe'));
       return false;
     }
   });

+ 42 - 39
src/views/goods/SKUList.vue

@@ -4,32 +4,32 @@
       <template #toolbar>
         <div class="inner-toolbar w-11/12 flex justify-between">
           <div class="toolbar-btns">
-            <el-button size="small" v-if="checkPermission(['warehouse:add'])&& store.state.user.user.founder!==1" type="primary" @click="handleAddWarehouse">新增</el-button>
+            <el-button size="small" v-if="checkPermission(['warehouse:add'])&& store.state.user.user.founder!==1" type="primary" @click="handleAddWarehouse">{{$t('add')}}</el-button>
           </div>
           <div class="toolbar-search">
-            <en-table-search @search="searchEvent" placeholder="请输入关键字搜索" />
+            <en-table-search @search="searchEvent" :placeholder="$t('search_placeholde')" />
           </div>
         </div>
       </template>
 
       <template #table-columns>
-        <el-table-column prop="name" label="产品名称" />
-        <el-table-column prop="brand" label="品牌" />
-        <el-table-column prop="bar_code" label="条码" />
+        <el-table-column prop="name" :label="$t('goods_name')" />
+        <el-table-column prop="brand" :label="$t('goods_brand')" />
+        <el-table-column prop="bar_code" :label="$t('goods_bar_code')" />
         <el-table-column prop="sku" label="sku" />
-        <el-table-column prop="weight" label="重量" />
-        <el-table-column prop="unit" label="单位" />
-        <el-table-column prop="image" label="产品图片">
+        <el-table-column prop="weight" :label="$t('goods_weight')" />
+        <el-table-column prop="unit" :label="$t('goods_unit')" />
+        <el-table-column prop="image" :label="$t('goods_image')">
           <template #default="scope">
             <img :src="scope.row.image" alt="" />
           </template>
         </el-table-column>
 
-        <el-table-column label="操作">
+        <el-table-column :label="$t('operate')">
           <template #default="scope">
-            <el-button size="small" v-if="checkPermission(['warehouse:update'])" @click="handleView(scope.row)">查看</el-button>
-            <el-button size="small" v-if="checkPermission(['warehouse:update'])&& store.state.user.user.founder!==1" @click="handleEditWarehouse(scope.$index, scope.row)">编辑</el-button>
-            <el-button type="success" size="small" v-if="checkPermission(['removeAreaType:delete'])&& store.state.user.user.founder!==1" @click="handleDelGoods(scope.row)">删除</el-button>
+            <el-button size="small" v-if="checkPermission(['warehouse:update'])" @click="handleView(scope.row)">{{$t('view')}}</el-button>
+            <el-button size="small" v-if="checkPermission(['warehouse:update'])&& store.state.user.user.founder!==1" @click="handleEditWarehouse(scope.$index, scope.row)">{{$t('edit')}}</el-button>
+            <el-button type="success" size="small" v-if="checkPermission(['removeAreaType:delete'])&& store.state.user.user.founder!==1" @click="handleDelGoods(scope.row)">{{$t('delete')}}</el-button>
             <!--<el-button size="mini" v-if="checkPermission(['warehouse:update'])" @click="handleRenew(scope.$index, scope.row)">续费</el-button> -->
           </template>
         </el-table-column>
@@ -50,7 +50,7 @@
     </en-table-layout>
 
     <el-dialog
-      :title="skuForm.id ? '编辑商品' : '新建商品'"
+      :title="skuForm.id ? $t('edit') : $t('add')"
       v-model="dialogVisible"
       @open="handleDialogOpen"
       :modal-append-to-body="false"
@@ -67,37 +67,37 @@
               </el-form-item>
             </el-col> -->
           <el-col :span="10">
-            <el-form-item label="产品名称:" prop="name">
-              <el-input v-model="skuForm.name" :minlength="2" :maxlength="20" :disabled="disabled" clearable placeholder="请输入产品名称"></el-input>
+            <el-form-item :label="$t('goods_name')+':'" prop="name">
+              <el-input v-model="skuForm.name" :minlength="2" :maxlength="20" :disabled="disabled" clearable :placeholder="$t('place')+$t('goods_name')"></el-input>
             </el-form-item>
           </el-col>
           <el-col :span="10">
-            <el-form-item label="品牌:" prop="brand">
-              <el-input v-model="skuForm.brand" :minlength="2" :maxlength="20" :disabled="disabled" clearable placeholder="请输入品牌"></el-input>
+            <el-form-item :label="$t('goods_brand')+':'" prop="brand">
+              <el-input v-model="skuForm.brand" :minlength="2" :maxlength="20" :disabled="disabled" clearable :placeholder="$t('place')+$t('goods_brand')"></el-input>
             </el-form-item>
           </el-col>
           <el-col :span="10">
-            <el-form-item label="条码:" prop="bar_code">
-              <el-input v-model="skuForm.bar_code" :minlength="2" :maxlength="20" :disabled="disabled" clearable placeholder="请输入条码"></el-input>
+            <el-form-item :label="$t('goods_bar_code')+':'" prop="bar_code">
+              <el-input v-model="skuForm.bar_code" :minlength="2" :maxlength="20" :disabled="disabled" clearable :placeholder="$t('place')+$t('goods_bar_code')"></el-input>
             </el-form-item>
           </el-col>
           <el-col :span="10">
             <el-form-item label="sku:" prop="sku">
-              <el-input v-model="skuForm.sku" :minlength="2" :maxlength="20" :disabled="disabled" clearable placeholder="请输入sku"></el-input>
+              <el-input v-model="skuForm.sku" :minlength="2" :maxlength="20" :disabled="disabled" clearable :placeholder="$t('place')+'sku'"></el-input>
             </el-form-item>
           </el-col>
           <el-col :span="10">
-            <el-form-item label="重量:" prop="weight">
-              <el-input v-model="skuForm.weight" :minlength="2" :maxlength="20" :disabled="disabled" clearable placeholder="请输入重量"></el-input>
+            <el-form-item :label="$t('goods_weight')+':'" prop="weight">
+              <el-input v-model="skuForm.weight" :minlength="2" :maxlength="20" :disabled="disabled" clearable :placeholder="$t('place')+$t('goods_weight')"></el-input>
             </el-form-item>
           </el-col>
           <el-col :span="10">
-            <el-form-item label="单位:" prop="unit">
-              <el-input v-model="skuForm.unit" :minlength="2" :maxlength="20" :disabled="disabled" clearable placeholder="请输入单位"></el-input>
+            <el-form-item :label="$t('goods_unit')+':'" prop="unit">
+              <el-input v-model="skuForm.unit" :minlength="2" :maxlength="20" :disabled="disabled" clearable :placeholder="$t('place')+$t('goods_unit')"></el-input>
             </el-form-item>
           </el-col>
           <el-col :span="10">
-            <el-form-item label="产品图片:" prop="image">
+            <el-form-item :label="$t('goods_image')+':'" prop="image">
               <el-upload
                 class="avatar-uploader"
                 :action=uploadUrl
@@ -115,8 +115,8 @@
       </el-form>
       <template #footer>
         <div class="dialog-footer">
-          <el-button @click="dialogVisible = false">取 消</el-button>
-          <el-button type="primary" @click="submitWarehouseForm">确 定</el-button>
+          <el-button @click="dialogVisible = false">{{$t('cancel')}}</el-button>
+          <el-button type="primary" @click="submitWarehouseForm">{{$t('submit')}}</el-button>
         </div>
       </template>
     </el-dialog>
@@ -151,6 +151,9 @@ import router from '@/router';
 import { provinceAndCityData, pcTextArr, regionData, pcaTextArr, codeToText } from 'element-china-area-data';
 import { Plus } from '@element-plus/icons-vue';
 import type { UploadProps } from 'element-plus';
+import { useI18n } from 'vue-i18n';
+
+const { t } = useI18n();
 
 const handleAvatarSuccess: UploadProps['onSuccess'] = (response, uploadFile) => {
   console.log(response, uploadFile);
@@ -181,14 +184,14 @@ const skuForm = ref<any>({
   unit: '',
 });
 const stockRules = ref<any>({
-  name: [{ required: true, message: '请输入产品名称!', trigger: 'blur' }],
-  brand: [{ required: true, message: '请输入品牌!', trigger: 'blur' }],
+  name: [{ required: true, message:t('place') + t('goods_name')+'!', trigger: 'blur' }],
+  brand: [{ required: true, message: t('place') + t('goods_brand')+'!', trigger: 'blur' }],
   snCode: [{ required: true, message: '请输入商品序列号!', trigger: 'blur' }],
-  bar_code: [{ required: true, message: '请输入条码!', trigger: 'blur' }],
-  sku: [{ required: true, message: '请输入sku!', trigger: 'blur' }],
-  weight: [{ required: true, message: '请输入重量!', trigger: 'blur' }],
-  postal_code: [{ required: true, message: '请输入单位!', trigger: 'blur' }],
-  image: [{ required: true, message: '请输入上传产品图片!', trigger: 'blur' }],
+  bar_code: [{ required: true, message:  t('place') + t('goods_bar_code')+'!', trigger: 'blur' }],
+  sku: [{ required: true, message:  t('place') +'sku!', trigger: 'blur' }],
+  weight: [{ required: true, message: t('place') + t('goods_weight')+'!', trigger: 'blur' }],
+  postal_code: [{ required: true, message: t('place') + t('goods_unit')+'!', trigger: 'blur' }],
+  image: [{ required: true, message: t('place') + t('goods_image')+'!', trigger: 'blur' }],
 });
 const selectedOptions = ref<any[]>([]);
 const marketingList = ref<any[]>([]);
@@ -280,18 +283,18 @@ const submitWarehouseForm = () => {
       if (id) {
         API_Goods.editProduct(id, params).then(() => {
           dialogVisible.value = false;
-          ElMessage.success('修改成功!');
+          ElMessage.success(t('edit_success')+'!');
           GET_GoodsList();
         });
       } else {
         API_Goods.addProduct(params).then(() => {
           dialogVisible.value = false;
-          ElMessage.success('添加成功!');
+          ElMessage.success(t('add_success')+'!');
           GET_GoodsList();
         });
       }
     } else {
-      ElMessage.error('表单填写有误,请核对!');
+      ElMessage.error(t('form_erroe')+'!');
       /*    store.dispatch('showMessage', { message: '表单填写有误,请核对!', type: 'error' }); */
       return false;
     }
@@ -312,10 +315,10 @@ const GET_GoodsList = () => {
 
 /* 删除 */
 const handleDelGoods = (row) => {
-  ElMessageBox.confirm('确定要删除吗?', '提示', { type: 'warning' })
+  ElMessageBox.confirm(t('del_info'), t('prompt'), { type: 'warning' })
     .then(() => {
       API_Goods.delProduct(row.id).then(() => {
-        ElMessage.success('删除成功!');
+        ElMessage.success(t('del_success')+'!');
         GET_GoodsList();
       });
     })

+ 11 - 9
src/views/package/packageAdd.vue

@@ -1,7 +1,7 @@
 <template>
   <div class="permission-container">
     <el-form :model="permissionForm" :rules="permissionRules" ref="permissionFormRef" label-width="200px" class="demo-ruleForm">
-      <el-form-item label="功能名称" prop="role_name">
+      <el-form-item :label="$t('function_name')" prop="role_name">
         <el-input v-model="permissionForm.role_name"></el-input>
       </el-form-item>
       <!-- <el-form-item label="数据范围" prop="dept_ids">
@@ -15,11 +15,11 @@
           :props="props"
         ></el-cascader>
       </el-form-item> -->
-      <el-form-item label="功能描述" prop="role_describe">
+      <el-form-item :label="$t('function_describe')" prop="role_describe">
         <el-input v-model="permissionForm.role_describe"></el-input>
       </el-form-item>
-      <el-form-item label="功能权限" prop="permission">
-        <el-checkbox :indeterminate="allIndeterminate" v-model="allCheck" @change="handleCheckAll">全部选择</el-checkbox>
+      <el-form-item :label="$t('function_permission')" prop="permission">
+        <el-checkbox :indeterminate="allIndeterminate" v-model="allCheck" @change="handleCheckAll">{{$t('sel_all')}}</el-checkbox>
         <div v-for="(item) in permissions" :key="item.identifier" class="level_1">
           <el-row :gutter="20">
             <el-col :span="4">
@@ -91,7 +91,7 @@
         </div>
       </el-form-item>
       <el-form-item label="">
-        <el-button type="primary" size="small" style="margin-top: 15px" @click="saveRolePermission">保存设置</el-button>
+        <el-button type="primary" size="small" style="margin-top: 15px" @click="saveRolePermission">{{$t('set_save')}}</el-button>
       </el-form-item>
     </el-form>
   </div>
@@ -105,7 +105,9 @@ import * as API_Auth from '@/api/auth';
 import * as API_Menus from '@/api/menus';
 import * as API_Setting from '@/api/setting';
 /*   import { Foundation } from '../../composables/ui-utils'; */
+import { useI18n } from 'vue-i18n';
 
+const { t } = useI18n();
 const route = useRoute();
 const router = useRouter();
 
@@ -137,8 +139,8 @@ const permissionForm = reactive<{
 /** 权限 表单规则 */
 const permissionRules = reactive({
   role_name: [
-    { required: true, message: '请输入角色名称!', trigger: 'blur' },
-    { min: 1, max: 10, message: '长度在 1 到 10 个字符', trigger: 'blur' },
+    { required: true, message:t('place')+t('function_name')+'!', trigger: 'blur' },
+    { min: 1, max: 10, message: t('role_name_error')+'!', trigger: 'blur' },
   ],
 });
 
@@ -352,12 +354,12 @@ const saveRolePermission = () => {
         }
       } */
       const saveSuccess = () => {
-        ElMessage.success('保存成功!');
+        ElMessage.success(t('sub_success')+'!');
         router.push({ name: 'packageList' });
       };
       role_id.value === '0' ? API_Auth.addRole(params).then(() => saveSuccess()) : API_Auth.editRole(role_id.value, params).then(() => saveSuccess());
     } else {
-      ElMessage.error('表单填写有误,请检查!');
+      ElMessage.error(t('form_erroe'));
       return false;
     }
   });

+ 41 - 38
src/views/package/packageList.vue

@@ -4,7 +4,7 @@
       <el-form :model="searchForm" label-width="100px">
         <el-row>
           <el-col :span="5">
-            <el-form-item label="状态">
+            <el-form-item :label="$t('warehousing_state')">
               <el-select v-model="searchForm.use_able" clearable>
                 <el-option label="启用" :value="true" />
                 <el-option label="禁用" :value="false" />
@@ -12,21 +12,21 @@
             </el-form-item>
           </el-col>
           <el-col :span="5">
-            <el-form-item label="套餐名称">
-              <el-input v-model="searchForm.name" clearable placeholder="请输入套餐名称"></el-input>
+            <el-form-item :label="$t('package_name')">
+              <el-input v-model="searchForm.name" clearable :placeholder="$t('place')+$t('package_name')"></el-input>
             </el-form-item>
           </el-col>
         </el-row>
       </el-form>
       <div class="flex justify-end">
-        <el-button class="mr-3" @click="searchEvent"> 搜索 </el-button>
+        <el-button class="mr-3" @click="searchEvent">{{$t('search')}}</el-button>
       </div>
     </div>
     <en-table-layout :tableData="tableData.records" :loading="loading">
       <template #toolbar>
         <div class="inner-toolbar w-11/12 flex justify-between">
           <div class="toolbar-btns">
-            <el-button size="default" v-if="checkPermission(['warehouse:add'])" type="primary" @click="handleAddWarehouse">新增</el-button>
+            <el-button size="default" v-if="checkPermission(['warehouse:add'])" type="primary" @click="handleAddWarehouse">{{$t('add')}}</el-button>
           </div>
           <!-- <div class="toolbar-search">
             <en-table-search @search="searchEvent" placeholder="请输入关键字搜索" />
@@ -35,19 +35,19 @@
       </template>
 
       <template #table-columns>
-        <el-table-column prop="name" label="套餐名称" />
-        <el-table-column prop="money" label="套餐金额" />
-        <el-table-column prop="day" label="天数" />
-        <el-table-column prop="user_num" label="可创建用户数" />
-        <el-table-column prop="use_able" label="状态">
+        <el-table-column prop="name" :label="$t('package_name')" />
+        <el-table-column prop="money" :label="$t('package_money')" />
+        <el-table-column prop="day" :label="$t('package_day')" />
+        <el-table-column prop="user_num" :label="$t('package_user_num')" />
+        <el-table-column prop="use_able" :label="$t('warehousing_state')">
           <template #default="scope">
             <el-switch v-model="scope.row.use_able" inline-prompt active-text="启用" inactive-text="禁用" @change="switchUseAble($event, scope.row)" />
           </template>
         </el-table-column>
-        <el-table-column prop="remark" label="套餐说明" />
-        <el-table-column label="操作">
+        <el-table-column prop="remark" :label="$t('package_remark')" />
+        <el-table-column :label="$t('operate')">
           <template #default="scope">
-            <el-button size="default" v-if="checkPermission(['warehouse:update'])" @click="handleEditWarehouse(scope.$index, scope.row)">编辑</el-button>
+            <el-button size="default" v-if="checkPermission(['warehouse:update'])" @click="handleEditWarehouse(scope.$index, scope.row)">{{$t('edit')}}</el-button>
           </template>
         </el-table-column>
       </template>
@@ -67,7 +67,7 @@
     </en-table-layout>
 
     <el-dialog
-      :title="packageForm.id ? '编辑套餐' : '添加套餐'"
+      :title="packageForm.id ? $t('edit') : $t('add')"
       v-model="dialogVisible"
       width="500px"
       @open="handleDialogOpen"
@@ -76,34 +76,34 @@
       :close-on-press-escape="false"
     >
       <el-form :model="packageForm" :rules="stockRules" ref="packageFormRef" label-width="120px">
-        <el-form-item label="权限:" prop="role_id">
-          <el-select v-model="packageForm.role_id" clearable placeholder="请选择权限">
+        <el-form-item :label="$t('package_role')+':'" prop="role_id">
+          <el-select v-model="packageForm.role_id" clearable :placeholder="$t('place')+$t('package_role')">
             <el-option v-for="item in roleArray" :key="item.role_id" :label="item.role_name" :value="item.role_id" />
           </el-select>
         </el-form-item>
-        <el-form-item label="套餐名称:" prop="name">
-          <el-input v-model="packageForm.name" :minlength="2" :maxlength="20" clearable placeholder="请输入套餐名称"></el-input>
+        <el-form-item :label="$t('package_name')+':'" prop="name">
+          <el-input v-model="packageForm.name" :minlength="2" :maxlength="20" clearable :placeholder="$t('place')+$t('package_name')"></el-input>
         </el-form-item>
-        <el-form-item label="套餐金额:" prop="money">
-          <el-input v-model="packageForm.money" :minlength="2" :maxlength="20" clearable placeholder="请输入套餐金额"></el-input>
+        <el-form-item :label="$t('package_money')+':'" prop="money">
+          <el-input v-model="packageForm.money" :minlength="2" :maxlength="20" clearable :placeholder="$t('place')+$t('package_money')"></el-input>
         </el-form-item>
-        <el-form-item label="购买天数:" prop="day">
-          <el-input v-model="packageForm.day" :minlength="2" :maxlength="20" clearable placeholder="请输入套餐天数"></el-input>
+        <el-form-item :label="$t('package_day')+':'" prop="day">
+          <el-input v-model="packageForm.day" :minlength="2" :maxlength="20" clearable :placeholder="$t('place')+$t('package_day')"></el-input>
         </el-form-item>
-        <el-form-item label="可创建用户数:" prop="user_num">
-          <el-input v-model="packageForm.user_num" :minlength="2" :maxlength="20" clearable placeholder="请输入可创建用户数"></el-input>
+        <el-form-item :label="$t('package_user_num')+':'" prop="user_num">
+          <el-input v-model="packageForm.user_num" :minlength="2" :maxlength="20" clearable :placeholder="$t('place')+$t('package_user_num')"></el-input>
         </el-form-item>
-        <el-form-item label="状态:" prop="use_able">
+        <el-form-item :label="$t('warehousing_state')+':'" prop="use_able">
           <el-switch v-model="packageForm.use_able" inline-prompt active-text="启用" inactive-text="禁用" />
         </el-form-item>
-        <el-form-item label="套餐说明:" prop="remark">
-          <el-input v-model="packageForm.remark" type="textarea" :autosize="{ minRows: 3, maxRows: 4 }" placeholder="请输入"></el-input>
+        <el-form-item :label="$t('package_remark')+':'" prop="remark">
+          <el-input v-model="packageForm.remark" type="textarea" :autosize="{ minRows: 3, maxRows: 4 }" :placeholder="$t('place')+$t('package_remark')"></el-input>
         </el-form-item>
       </el-form>
       <template #footer>
         <div class="dialog-footer">
-          <el-button @click="dialogVisible = false">取 消</el-button>
-          <el-button type="primary" @click="submitPackageForm">确 定</el-button>
+          <el-button @click="dialogVisible = false">{{$t('cancel')}}</el-button>
+          <el-button type="primary" @click="submitPackageForm">{{$t('submit')}}</el-button>
         </div>
       </template>
     </el-dialog>
@@ -119,6 +119,9 @@ import * as API_Auth from '@/api/auth';
 import * as API_Package from '@/api/package';
 import Storage from '@/utils/storage';
 import router from '@/router';
+import { useI18n } from 'vue-i18n';
+
+const { t } = useI18n();
 
 const store = useStore();
 const tableData = ref<any>({});
@@ -133,12 +136,12 @@ const packageForm = ref<any>({
   remark: '',
 });
 const stockRules = ref<any>({
-  role_id: [{ required: true, message: '请选择权限!', trigger: 'change' }],
-  name: [{ required: true, message: '请输入套餐名称', trigger: 'blur' }],
-  money: [{ required: true, message: '请输入套餐金额', trigger: 'blur' }],
-  day: [{ required: true, message: '请输入套餐天数', trigger: 'blur' }],
-  use_able: [{ required: true, message: '请选择状态', trigger: 'change' }],
-  user_num: [{ required: true, message: '请输入可创建用户数', trigger: 'blur' }],
+  role_id: [{ required: true, message:t('change')+t('package_role')+'!', trigger: 'change' }],
+  name: [{ required: true, message: t('place')+t('package_name')+'!', trigger: 'blur' }],
+  money: [{ required: true, message: t('place')+t('package_money')+'!', trigger: 'blur' }],
+  day: [{ required: true, message: t('place')+t('package_day')+'!', trigger: 'blur' }],
+  use_able: [{ required: true, message:t('change')+t('warehousing_state')+'!', trigger: 'change' }],
+  user_num: [{ required: true, message: t('place')+t('package_user_num')+'!', trigger: 'blur' }],
 });
 const marketingList = ref<any[]>([]);
 
@@ -206,18 +209,18 @@ const submitPackageForm = () => {
       if (id) {
         API_Package.editPackage(id, params).then(() => {
           dialogVisible.value = false;
-          ElMessage.success('修改成功!');
+          ElMessage.success(t('edit_success')+'!');
           GET_PackageList();
         });
       } else {
         API_Package.submitPackage(params).then(() => {
           dialogVisible.value = false;
-          ElMessage.success('添加成功!');
+          ElMessage.success(t('add_success')+'!');
           GET_PackageList();
         });
       }
     } else {
-      ElMessage.error('表单填写有误,请核对!');
+      ElMessage.error(t('form_erroe'));
       /*    store.dispatch('showMessage', { message: '表单填写有误,请核对!', type: 'error' }); */
       return false;
     }

+ 12 - 9
src/views/package/packagePermissions.vue

@@ -4,22 +4,22 @@
         <div class="inner-toolbar w-11/12 flex justify-between">
           <div class="toolbar-btns">
             <el-button size="small" type="primary" icon="el-icon-circle-plus-outline" v-if="checkPermission(['roleManage:add'])" @click="handleAddRole"
-              >添加</el-button
+              >{{$t('add')}}</el-button
             >
           </div>
           <div class="toolbar-search">
-            <en-table-search @search="searchEvent" placeholder="请输入关键字" />
+            <en-table-search @search="searchEvent" :placeholder="$t('search_placeholde')" />
           </div>
         </div>
       </template>
   
       <template #table-columns>
-        <el-table-column prop="role_name" label="角色名称" />
-        <el-table-column prop="role_describe" label="角色描述" />
-        <el-table-column label="操作">
+        <el-table-column prop="role_name" :label="$t('role_names')" />
+        <el-table-column prop="role_describe" :label="$t('role_describe')" />
+        <el-table-column :label="$t('operate')">
           <template #default="scope">
-            <el-button size="small" type="primary" @click="handleEditRole(scope.row)" v-if="checkPermission(['roleManage:edit'])">编辑</el-button>
-            <el-button size="small" type="danger" @click="handleDeleteRole(scope.row)" v-if="checkPermission(['roleManage:del'])">删除</el-button>
+            <el-button size="small" type="primary" @click="handleEditRole(scope.row)" v-if="checkPermission(['roleManage:edit'])">{{$t('edit')}}</el-button>
+            <el-button size="small" type="danger" @click="handleDeleteRole(scope.row)" v-if="checkPermission(['roleManage:del'])">{{$t('delete')}}</el-button>
           </template>
         </el-table-column>
       </template>
@@ -45,6 +45,9 @@
   import { useRouter } from 'vue-router';
   import { ElMessage, ElMessageBox } from 'element-plus';
   import * as API_Auth from '@/api/auth';
+  import { useI18n } from 'vue-i18n';
+
+const { t } = useI18n();
   
   const router = useRouter();
   const loading = ref(false);
@@ -78,10 +81,10 @@
   };
   
   const handleDeleteRole = (row: any) => {
-    ElMessageBox.confirm('确定要删除这个角色吗?', '提示', { type: 'warning' })
+    ElMessageBox.confirm(t('del_info'), t('prompt'), { type: 'warning' })
       .then(() => {
         API_Auth.deleteRole(row.role_id).then(() => {
-          ElMessage.success('删除成功!');
+          ElMessage.success(t('del_success')+'!');
           GET_RoleList();
         });
       })

+ 74 - 71
src/views/setting/companyList.vue

@@ -4,43 +4,43 @@
       <template #toolbar>
         <div class="inner-toolbar w-11/12 flex justify-between">
           <div class="toolbar-btns">
-            <el-button size="small" v-if="checkPermission(['warehouse:add'])" type="primary" @click="handleAddWarehouse">新增</el-button>
+            <el-button size="small" v-if="checkPermission(['warehouse:add'])" type="primary" @click="handleAddWarehouse">{{$t('add')}}</el-button>
           </div>
           <div class="toolbar-search">
-            <en-table-search @search="searchEvent" placeholder="请输入关键字搜索" />
+            <en-table-search @search="searchEvent" :placeholder="$t('search_placeholde')" />
           </div>
         </div>
       </template>
 
       <template #table-columns>
-        <el-table-column prop="name" label="公司名称" width="200" />
-        <el-table-column prop="industry" label="行业" width="200" />
-        <el-table-column prop="user_name" label="法人" width="200" />
-        <el-table-column prop="phone" label="电话" width="200" />
-        <el-table-column prop="email" label="邮箱" width="200" />
-        <el-table-column prop="company_package_id" label="套餐" width="200">
+        <el-table-column prop="name" :label="$t('companyName')" width="200" />
+        <el-table-column prop="industry" :label="$t('industry')" width="200" />
+        <el-table-column prop="user_name" :label="$t('legal_person')" width="200" />
+        <el-table-column prop="phone" :label="$t('phone')" width="200" />
+        <el-table-column prop="email" :label="$t('companyEmail')" width="200" />
+        <el-table-column prop="company_package_id" :label="$t('company_package')" width="200">
           <template #default="scope">
             {{ packageName(scope.row.company_package_id) }}
           </template>
         </el-table-column>
-        <el-table-column prop="end_use_time" label="套餐到期时间" width="200" />
-        <el-table-column prop="status" label="状态" width="200">
+        <el-table-column prop="end_use_time" :label="$t('end_use_time')" width="200" />
+        <el-table-column prop="status" :label="$t('user_state')" width="200">
           <template #default="scope">
             {{ typeName(scope.row.status) }}
           </template>
         </el-table-column>
-        <el-table-column label="地址" width="200">
+        <el-table-column :label="$t('companyAddress')" width="200">
           <template #default="scope">
             {{ adminName(scope.row.province) + scope.row.address }}
           </template>
         </el-table-column>
 
-        <el-table-column label="操作" width="300">
+        <el-table-column :label="$t('operate')" width="300">
           <template #default="scope">
-            <el-button size="small" v-if="checkPermission(['warehouse:update'])" @click="getBranch('compan', scope.row)">查看</el-button>
-            <el-button size="small" v-if="checkPermission(['warehouse:update'])" @click="handleEditWarehouse(scope.$index, scope.row)">编辑</el-button>
-            <el-button size="small" v-if="checkPermission(['warehouse:update'])" @click="handleRenew(scope.$index, scope.row)">续费</el-button>
-            <el-button size="small" class="mt-1" v-if="scope.row.status !== 1" @click="handleBranch(scope.$index, scope.row)">审核</el-button>
+            <el-button size="small" v-if="checkPermission(['warehouse:update'])" @click="getBranch('compan', scope.row)">{{$t('view')}}</el-button>
+            <el-button size="small" v-if="checkPermission(['warehouse:update'])" @click="handleEditWarehouse(scope.$index, scope.row)">{{$t('edit')}}</el-button>
+            <el-button size="small" v-if="checkPermission(['warehouse:update'])" @click="handleRenew(scope.$index, scope.row)">{{$t('renew')}}</el-button>
+            <el-button size="small" class="mt-1" v-if="scope.row.status !== 1" @click="handleBranch(scope.$index, scope.row)">{{$t('review')}}</el-button>
           </template>
         </el-table-column>
       </template>
@@ -60,7 +60,7 @@
     </en-table-layout>
 
     <el-dialog
-      :title="companyForm.id ? '编辑公司' : '新建公司'"
+      :title="companyForm.id ? $t('edit') : $t('add')"
       v-model="dialogVisible"
       @open="handleDialogOpen"
       :modal-append-to-body="false"
@@ -70,7 +70,7 @@
       <el-form :model="companyForm" :rules="stockRules" ref="companyFormRef" label-width="140px">
         <el-row>
           <el-col :span="16">
-            <el-form-item label="营业执照:" prop="license">
+            <el-form-item :label="$t('companyLicense')+':'" prop="license">
               <el-upload
                 :disabled="disabled"
                 class="avatar-uploader"
@@ -85,7 +85,7 @@
             </el-form-item>
           </el-col>
           <el-col :span="10">
-            <el-form-item label="身份证正面:" prop="id_card_front">
+            <el-form-item :label="$t('front_id_card')+':'" prop="id_card_front">
               <el-upload
                 :disabled="disabled"
                 class="avatar-uploader"
@@ -102,7 +102,7 @@
             </el-form-item>
           </el-col>
           <el-col :span="10">
-            <el-form-item label="身份证反面:" prop="id_card_opposite">
+            <el-form-item :label="$t('opposite_id_card')+':'" prop="id_card_opposite">
               <el-upload
                 :disabled="disabled"
                 class="avatar-uploader"
@@ -117,92 +117,92 @@
             </el-form-item>
           </el-col>
           <el-col :span="10" v-if="!companyForm.id">
-            <el-form-item label="套餐:" prop="company_package_id">
-              <el-select v-model="companyForm.company_package_id" :disabled="disabled" clearable placeholder="请选择套餐">
+            <el-form-item :label="$t('company_package')+':'" prop="company_package_id">
+              <el-select v-model="companyForm.company_package_id" :disabled="disabled" clearable :placeholder="$t('change')+$t('company_package')">
                 <el-option v-for="item in packageList" :key="item.id" :label="item.name" :value="item.id" />
               </el-select>
             </el-form-item>
           </el-col>
           <el-col :span="10">
-            <el-form-item label="公司名称:" prop="name">
-              <el-input v-model="companyForm.name" clearable disabled placeholder="请输入公司名称"></el-input>
+            <el-form-item :label="$t('companyName')+':'" prop="name">
+              <el-input v-model="companyForm.name" clearable disabled :placeholder="$t('company_name')"></el-input>
             </el-form-item>
           </el-col>
           <el-col :span="10">
-            <el-form-item label="统一社会信用代码:" prop="credit_code">
-              <el-input v-model="companyForm.credit_code" clearable disabled placeholder="请输入统一社会信用代码"></el-input>
+            <el-form-item :label="$t('credit_code')+':'" prop="credit_code">
+              <el-input v-model="companyForm.credit_code" clearable disabled :placeholder="$t('place')+$t('credit_code')"></el-input>
             </el-form-item>
           </el-col>
           <el-col :span="10">
-            <el-form-item label="行业:" prop="industry">
-              <el-input v-model="companyForm.industry" :disabled="disabled" clearable placeholder="请输入行业"></el-input>
+            <el-form-item :label="$t('industry')+':'" prop="industry">
+              <el-input v-model="companyForm.industry" :disabled="disabled" clearable :placeholder="$t('place')+$t('industry')"></el-input>
             </el-form-item>
           </el-col>
           <el-col :span="10">
-            <el-form-item label="法人:" prop="user_name">
-              <el-input v-model="companyForm.user_name" disabled clearable placeholder="请输入联系人"></el-input>
+            <el-form-item :label="$t('legal_person')+':'" prop="user_name">
+              <el-input v-model="companyForm.user_name" disabled clearable :placeholder="$t('place')+$t('legal_person')"></el-input>
             </el-form-item>
           </el-col>
           <el-col :span="10">
-            <el-form-item label="法人电话:" prop="phone">
-              <el-input v-model="companyForm.phone" :disabled="disabled" clearable placeholder="请输入联系人电话"></el-input>
+            <el-form-item :label="$t('corporate_phone')+':'" prop="phone">
+              <el-input v-model="companyForm.phone" :disabled="disabled" clearable :placeholder="$t('place')+$t('corporate_phone')"></el-input>
             </el-form-item>
           </el-col>
           <el-col :span="10">
-            <el-form-item label="邮箱:" prop="email">
-              <el-input v-model="companyForm.email" :disabled="disabled" clearable placeholder="请输入邮箱"></el-input>
+            <el-form-item :label="$t('companyEmail')+':'" prop="email">
+              <el-input v-model="companyForm.email" :disabled="disabled" clearable :placeholder="$t('place')+$t('companyEmail')"></el-input>
             </el-form-item>
           </el-col>
           <el-col :span="10">
-            <el-form-item label="邮编:" prop="postal_code">
-              <el-input v-model="companyForm.postal_code" :disabled="disabled" clearable placeholder="请输入邮箱"></el-input>
+            <el-form-item :label="$t('postalCode')+':'" prop="postal_code">
+              <el-input v-model="companyForm.postal_code" :disabled="disabled" clearable :placeholder="$t('place')+$t('postalCode')"></el-input>
             </el-form-item>
           </el-col>
 
           <el-col :span="10">
-            <el-form-item label="官网:" prop="website">
-              <el-input v-model="companyForm.website" :disabled="disabled" clearable placeholder="请输入官网地址"></el-input>
+            <el-form-item :label="$t('website')+':'" prop="website">
+              <el-input v-model="companyForm.website" :disabled="disabled" clearable :placeholder="$t('place')+$t('website')"></el-input>
             </el-form-item>
           </el-col>
           <el-col :span="10">
-            <el-form-item label="地址:" prop="">
+            <el-form-item :label="$t('companyAddress')+':'" prop="">
               <el-cascader class="w-full" size="default" :disabled="disabled" :options="options" clearable v-model="selectedOptions"> </el-cascader>
               <span>
-                <el-input class="!w-full mt-3" v-model="companyForm.address" :disabled="disabled" placeholder="请输入"></el-input>
+                <el-input class="!w-full mt-3" v-model="companyForm.address" :disabled="disabled" :placeholder="$t('place')"></el-input>
               </span>
             </el-form-item>
           </el-col>
           <el-col :span="20" v-if="type == 'examine'">
-            <el-form-item label="驳回原因:" prop="">
-              <el-input v-model="companyForm.fail_reason" clearable placeholder="请输入官网地址"></el-input>
+            <el-form-item :label="$t('reject')+':'" prop="">
+              <el-input v-model="companyForm.fail_reason" clearable :placeholder="$t('reject_reason')"></el-input>
             </el-form-item>
           </el-col>
         </el-row>
       </el-form>
       <template #footer>
         <div class="dialog-footer" v-if="type !== 'examine'">
-          <el-button @click="dialogVisible = false">取 消</el-button>
-          <el-button type="primary" @click="submitWarehouseForm">确 定</el-button>
+          <el-button @click="dialogVisible = false">{{$t('cancel')}}</el-button>
+          <el-button type="primary" @click="submitWarehouseForm">{{$t('submit')}}</el-button>
         </div>
         <div class="dialog-footer" v-else>
-          <el-button @click="submitExamine(2)">驳 回</el-button>
+          <el-button @click="submitExamine(2)">{{$t('down')}}</el-button>
           <!-- superUpdateStatus -->
-          <el-button type="primary" @click="submitExamine(1)">同 意</el-button>
+          <el-button type="primary" @click="submitExamine(1)">{{$t('agree_with')}}</el-button>
         </div>
       </template>
     </el-dialog>
-    <el-dialog title="续费" v-model="renewVisible" :modal-append-to-body="false" width="450px" :close-on-click-modal="false" :close-on-press-escape="false">
+    <el-dialog :title="$t('renew')" v-model="renewVisible" :modal-append-to-body="false" width="450px" :close-on-click-modal="false" :close-on-press-escape="false">
       <el-form :model="packageForm" :rules="stockRules" ref="packageFormRef" label-width="140px">
-        <el-form-item label="套餐:" prop="company_package_id">
-          <el-select v-model="packageForm.company_package_id" clearable placeholder="请选择套餐">
+        <el-form-item :label="$t('company_package')+':'" prop="company_package_id">
+          <el-select v-model="packageForm.company_package_id" clearable :placeholder="$t('change')+$t('company_package')">
             <el-option v-for="item in packageList" :key="item.id" :label="item.name" :value="item.id" />
           </el-select>
         </el-form-item>
       </el-form>
       <template #footer>
         <div class="dialog-footer">
-          <el-button @click="renewVisible = false">取 消</el-button>
-          <el-button type="primary" @click="submitPackageForm">确 定</el-button>
+          <el-button @click="renewVisible = false">{{$t('cancel')}}</el-button>
+          <el-button type="primary" @click="submitPackageForm">{{$t('submit')}}</el-button>
         </div>
       </template>
     </el-dialog>
@@ -223,6 +223,9 @@ import { provinceAndCityData, pcTextArr, regionData, pcaTextArr, codeToText } fr
 import { Plus } from '@element-plus/icons-vue';
 import type { UploadProps } from 'element-plus';
 
+import { useI18n } from 'vue-i18n';
+const { t } = useI18n();
+
 const route = useRoute();
 const router = useRouter();
 /* 营业执照 */
@@ -246,7 +249,7 @@ const beforeAvatarUpload: UploadProps['beforeUpload'] = (rawFile) => {
 const handleFrontSuccess: UploadProps['onSuccess'] = (response, uploadFile) => {
   API_Company.checkIdCardOpposite({ image_url: response.url }, 'front').then((res) => {
     if (res.name !== companyForm.value.name) {
-      ElMessage.error('请上传法人身份证!');
+      ElMessage.error(t('upload_id_card')+'!');
       return;
     }
     companyForm.value.user_name = res.name;
@@ -301,22 +304,22 @@ const companyForm = ref<any>({
   id_card_msg_opposite: {},
 });
 const stockRules = ref<any>({
-  role_id: [{ required: true, message: '请选择权限!', trigger: 'change' }],
-  name: [{ required: true, message: '请输入公司名称!', trigger: 'blur' }],
-  credit_code: [{ required: true, message: '请输入统一社会信用代码!', trigger: 'blur' }],
-  industry: [{ required: true, message: '请输入行业!', trigger: 'blur' }],
-  user_name: [{ required: true, message: '请输入联系人姓名!', trigger: 'blur' }],
+  role_id: [{ required: true, message: t('change')+t('package_role')+'!', trigger: 'change' }],
+  name: [{ required: true, message:t('place')+t('companyName')+'!', trigger: 'blur' }],
+  credit_code: [{ required: true, message:t('place')+t('credit_code')+'!', trigger: 'blur' }],
+  industry: [{ required: true, message:t('place')+t('industry')+'!', trigger: 'blur' }],
+  user_name: [{ required: true, message:t('place')+t('legal_person')+'!', trigger: 'blur' }],
   phone: [
-    { required: true, message: '请输入联系人电话!', trigger: 'blur' },
-    { pattern: /^1[3-9]\d{9}$/, message: '请输入有效的手机号', trigger: 'blur' },
+    { required: true, message: t('place')+t('corporate_phone')+'!', trigger: 'blur' },
+    { pattern: /^1[3-9]\d{9}$/, message: t('valid_phone'), trigger: 'blur' },
   ],
   email: [
-    { required: true, message: '请输入邮箱!', trigger: 'blur' },
-    { type: 'email', message: '请输入有效的邮箱地址', trigger: ['blur', 'change'] },
+    { required: true, message:t('place')+t('companyEmail')+'!', trigger: 'blur' },
+    { type: 'email', message:t('valid_email'), trigger: ['blur', 'change'] },
   ],
   postal_code: [
-    { required: true, message: '请输入邮编!', trigger: 'blur' },
-    { pattern: /^[1-9]\d{5}$/, message: '请输入有效的邮政编码', trigger: 'blur' },
+    { required: true, message:t('place')+t('postalCode')+'!', trigger: 'blur' },
+    { pattern: /^[1-9]\d{5}$/, message: t('valid_postal_code'), trigger: 'blur' },
   ],
 });
 const selectedOptions = ref<any[]>([]);
@@ -334,7 +337,7 @@ const submitExamine = (value) => {
   companyForm.value.status = value;
   API_Company.superUpdateStatus(companyForm.value, companyForm.value.id).then((res) => {
     dialogVisible.value = false;
-    ElMessage.success('审核成功!');
+    ElMessage.success(t('audit_success')+'!');
     GET_CompanyList();
   });
 };
@@ -377,9 +380,9 @@ const submitPackageForm = () => {
           packageForm.value = {};
           packageId.value = '';
           if (packageId.value == packageForm.value.company_package_id) {
-            ElMessage.success('续费成功!');
+            ElMessage.success(t('renew_success'));
           } else {
-            ElMessage.success('付费后立即生效!');
+            ElMessage.success(t('renew_info'));
           }
           renewVisible.value = false;
         });
@@ -444,15 +447,15 @@ const submitWarehouseForm = () => {
       if (id) {
         API_Company.editCompany(id, params).then(() => {
           dialogVisible.value = false;
-          ElMessage.success('修改成功!');
+          ElMessage.success(t('edit_success')+'!');
           GET_CompanyList();
         });
       } else {
         API_Company.addCompany(params).then((res) => {
           dialogVisible.value = false;
-          ElMessageBox.confirm(`此为登录密码,请详细记录:${res}`, '提示', {
-            confirmButtonText: '确定',
-            cancelButtonText: '取消',
+          ElMessageBox.confirm(t('pass_error')+`:${res}`, t('prompt'), {
+            confirmButtonText:  t('submit'),
+            cancelButtonText:  t('cancel'),
             type: 'warning',
           })
             .then(() => {
@@ -465,7 +468,7 @@ const submitWarehouseForm = () => {
         });
       }
     } else {
-      ElMessage.error('表单填写有误,请核对!');
+      ElMessage.error(t('form_erroe'));
       /*    store.dispatch('showMessage', { message: '表单填写有误,请核对!', type: 'error' }); */
       return false;
     }

+ 60 - 57
src/views/setting/dicData.vue

@@ -6,21 +6,21 @@
           <template #toolbar>
             <div class="inner-toolbar">
               <div class="toolbar-btns">
-                <span style="font-size: 15px; padding-right: 10px">字典分类列表</span>
-                <el-button size="small" v-if="checkPermission(['dictDataType:add'])" type="primary" @click="handleAddType">新增</el-button>
+                <span style="font-size: 15px; padding-right: 10px">{{$t('dic_class_list')}}</span>
+                <el-button size="small" v-if="checkPermission(['dictDataType:add'])" type="primary" @click="handleAddType">{{$t('add')}}</el-button>
               </div>
               <div class="toolbar-search"></div>
             </div>
           </template>
           <template #table-columns>
-            <el-table-column prop="id" label="字典编号" />
-            <el-table-column prop="name" label="字典名称" />
-            <el-table-column prop="type" label="字典类型" />
-            <el-table-column label="操作" width="150px">
+            <el-table-column prop="id" :label="$t('dic_sn')" />
+            <el-table-column prop="name" :label="$t('dic_name')" />
+            <el-table-column prop="type" :label="$t('dic_type')" />
+            <el-table-column :label="$t('operate')" width="150px">
               <template #default="scope">
-                <el-button size="small" v-if="checkPermission(['dictDataType:edit'])" @click="handleEditType(scope.$index, scope.row)">编辑</el-button>
+                <el-button size="small" v-if="checkPermission(['dictDataType:edit'])" @click="handleEditType(scope.$index, scope.row)">{{$t('edit')}}</el-button>
                 <el-button size="small" v-if="checkPermission(['dictDataType:del'])" type="danger" @click="handleDeleteType(scope.$index, scope.row)"
-                  >删除</el-button
+                  >{{$t('delete')}}</el-button
                 >
               </template>
             </el-table-column>
@@ -46,26 +46,26 @@
           <template #toolbar>
             <div class="inner-toolbar">
               <div class="toolbar-btns">
-                <span style="font-size: 15px; padding-right: 10px">字典数据列表</span>
-                <el-button size="small" v-if="checkPermission(['dictData:add']) && params.dict_type" type="primary" @click="handleAddData">新增</el-button>
+                <span style="font-size: 15px; padding-right: 10px">{{$t('dic_data_list')}}</span>
+                <el-button size="small" v-if="checkPermission(['dictData:add']) && params.dict_type" type="primary" @click="handleAddData">{{$t('add')}}</el-button>
               </div>
               <div class="toolbar-search"></div>
             </div>
           </template>
 
           <template #table-columns>
-            <el-table-column prop="id" label="字典编码" />
-            <el-table-column prop="label" label="字典标签" />
-            <el-table-column prop="value" label="字典键值" />
-            <el-table-column prop="sort" label="字典排序" />
-            <el-table-column label="是否默认选中">
+            <el-table-column prop="id" :label="$t('dic_id')" />
+            <el-table-column prop="label" :label="$t('dic_label')" />
+            <el-table-column prop="value" :label="$t('dic_value')"/>
+            <el-table-column prop="sort" :label="$t('dic_sort')" />
+            <el-table-column :label="$t('default_flag')">
               <template #default="{ row }">{{ row.default_flag === true ? '是' : '否' }}</template>
             </el-table-column>
-            <el-table-column label="操作" width="150px">
+            <el-table-column :label="$t('operate')" width="150px">
               <template #default="scope">
-                <el-button size="small" v-if="checkPermission(['dictData:edit'])" @click="handleEditData(scope.$index, scope.row)">编辑</el-button>
+                <el-button size="small" v-if="checkPermission(['dictData:edit'])" @click="handleEditData(scope.$index, scope.row)">{{$t('edit')}}</el-button>
                 <el-button size="small" v-if="checkPermission(['dictData:del'])" type="danger" @click="handleDeleteData(scope.$index, scope.row)"
-                  >删除</el-button
+                  >{{$t('delete')}}</el-button
                 >
               </template>
             </el-table-column>
@@ -87,53 +87,53 @@
         </en-table-layout>
       </div>
     </div>
-    <el-dialog :title="dictTypeForm.id ? '编辑' : '添加'" v-model="dialogTypeVisible" width="500px">
+    <el-dialog :title="dictTypeForm.id ? $t('edit') : $t('add')" v-model="dialogTypeVisible" width="500px">
       <el-form :model="dictTypeForm" :rules="dictTypeRules" ref="dictTypeFormRef" label-width="120px">
-        <el-form-item label="字典名称" prop="name">
-          <el-input v-model="dictTypeForm.name" :minlength="2" :maxlength="20" clearable placeholder="请输入字典名称"></el-input>
+        <el-form-item :label="$t('dic_name')" prop="name">
+          <el-input v-model="dictTypeForm.name" :minlength="2" :maxlength="20" clearable :placeholder="$t('place')+$t('dic_name')"></el-input>
         </el-form-item>
-        <el-form-item label="字典类型" prop="type">
-          <el-input v-model="dictTypeForm.type" :minlength="2" :maxlength="50" clearable placeholder="请输入字典类型"></el-input>
+        <el-form-item :label="$t('dic_type')" prop="type">
+          <el-input v-model="dictTypeForm.type" :minlength="2" :maxlength="50" clearable :placeholder="$t('place')+$t('dic_type')"></el-input>
         </el-form-item>
-        <el-form-item label="备注" prop="remark">
-          <el-input v-model="dictTypeForm.remark" type="textarea" :autosize="{ minRows: 3, maxRows: 4 }" placeholder="请输入备注"></el-input>
+        <el-form-item :label="$t('notes')" prop="remark">
+          <el-input v-model="dictTypeForm.remark" type="textarea" :autosize="{ minRows: 3, maxRows: 4 }" :placeholder="$t('place')+$t('notes')"></el-input>
         </el-form-item>
       </el-form>
       <template #footer>
         <span class="dialog-footer">
-          <el-button @click="dialogTypeVisible = false">取 消</el-button>
-          <el-button type="primary" @click="submitTypeForm">确 定</el-button>
+          <el-button @click="dialogTypeVisible = false">{{$t('cancel')}}</el-button>
+          <el-button type="primary" @click="submitTypeForm">{{$t('submit')}}</el-button>
         </span>
       </template>
     </el-dialog>
-    <el-dialog :title="dictDataForm.id ? '编辑' : '添加'" v-model="dialogVisible" width="500px">
+    <el-dialog :title="dictDataForm.id ?  $t('edit') : $t('add')" v-model="dialogVisible" width="500px">
       <el-form :model="dictDataForm" :rules="dictDataRules" ref="dictDataFormRef" label-width="120px">
-        <el-form-item label="字典类型" prop="dict_type">
-          <el-input v-model="dictDataForm.dict_type" :disabled="true" placeholder="请输入字典类型"></el-input>
+        <el-form-item :label="$t('dic_type')" prop="dict_type">
+          <el-input v-model="dictDataForm.dict_type" :disabled="true" :placeholder="$t('place')+$t('dic_type')"></el-input>
         </el-form-item>
-        <el-form-item label="是否默认选中" prop="是否默认选中">
+        <el-form-item :label="$t('default_flag')" prop="是否默认选中">
           <el-radio-group v-model="dictDataForm.default_flag">
             <el-radio :label="true">是</el-radio>
             <el-radio :label="false">否</el-radio>
           </el-radio-group>
         </el-form-item>
-        <el-form-item label="字典标签" prop="label">
-          <el-input v-model="dictDataForm.label" :minlength="1" :maxlength="20" clearable placeholder="请输入字典标签"></el-input>
+        <el-form-item :label="$t('dic_label')" prop="label">
+          <el-input v-model="dictDataForm.label" :minlength="1" :maxlength="20" clearable :placeholder="$t('place')+$t('dic_label')"></el-input>
         </el-form-item>
-        <el-form-item label="字典值" prop="value">
-          <el-input v-model="dictDataForm.value" :minlength="2" :maxlength="20" clearable placeholder="请输入字典值"></el-input>
+        <el-form-item :label="$t('dic_value')" prop="value">
+          <el-input v-model="dictDataForm.value" :minlength="2" :maxlength="20" clearable :placeholder="$t('place')+$t('dic_value')"></el-input>
         </el-form-item>
-        <el-form-item label="顺序号" prop="sort">
-          <el-input v-model="dictDataForm.sort" :minlength="2" :maxlength="20" clearable placeholder="请输入顺序号"></el-input>
+        <el-form-item :label="$t('dic_sort')" prop="sort">
+          <el-input v-model="dictDataForm.sort" :minlength="2" :maxlength="20" clearable :placeholder="$t('place')+$t('dic_sort')"></el-input>
         </el-form-item>
-        <el-form-item label="备注" prop="remark">
-          <el-input v-model="dictDataForm.remark" type="textarea" :autosize="{ minRows: 3, maxRows: 4 }" placeholder="请输入备注"></el-input>
+        <el-form-item :label="$t('notes')" prop="remark">
+          <el-input v-model="dictDataForm.remark" type="textarea" :autosize="{ minRows: 3, maxRows: 4 }" :placeholder="$t('place')+$t('notes')"></el-input>
         </el-form-item>
       </el-form>
       <template #footer>
         <span class="dialog-footer">
-          <el-button @click="dialogVisible = false">取 消</el-button>
-          <el-button type="primary" @click="submitDataForm">确 定</el-button>
+          <el-button @click="dialogVisible = false">{{$t('cancel')}}</el-button>
+          <el-button type="primary" @click="submitDataForm">{{$t('submit')}}</el-button>
         </span>
       </template>
     </el-dialog>
@@ -146,6 +146,9 @@ import { ElMessage, ElMessageBox } from 'element-plus';
 import * as API_Setting from '@/api/setting';
 import { RegExp } from '../../composables/ui-utils/RegExp';
 
+import { useI18n } from 'vue-i18n';
+const { t } = useI18n();
+
 // 列表loading状态
 const loading = ref(false);
 
@@ -172,7 +175,7 @@ const dictTypeForm = ref<any>({});
 // 字典表单 规则
 const dictTypeRules = {
   name: [
-    { required: true, message: '请输入字典名称!', trigger: 'blur' },
+    { required: true, message: t('place')+t('dic_name')+'!', trigger: 'blur' },
     { min: 2, max: 20, message: '长度在 2 到 20 个字符', trigger: 'blur' },
     {
       validator: (rule, value, callback) => {
@@ -186,7 +189,7 @@ const dictTypeRules = {
     },
   ],
   type: [
-    { required: true, message: '请输入字典类型!', trigger: 'blur' },
+    { required: true, message:t('place')+t('dic_type')+'!', trigger: 'blur' },
     { min: 2, max: 50, message: '长度在 2 到 50 个字符', trigger: 'blur' },
     {
       validator: (rule, value, callback) => {
@@ -203,7 +206,7 @@ const dictTypeRules = {
 
 const dictDataRules = {
   dict_type: [
-    { required: true, message: '请输入字典类型!', trigger: 'blur' },
+    { required: true, message:t('place')+t('dic_type')+'!', trigger: 'blur' },
     { min: 2, max: 50, message: '长度在 2 到 50 个字符', trigger: 'blur' },
     {
       validator: (rule, value, callback) => {
@@ -217,11 +220,11 @@ const dictDataRules = {
     },
   ],
   label: [
-    { required: true, message: '请输入字典标签!', trigger: 'blur' },
+    { required: true, message:t('place')+t('dic_label')+'!', trigger: 'blur' },
     { min: 1, max: 20, message: '长度在 1 到 20 个字符', trigger: 'blur' },
   ],
-  value: [{ required: true, message: '请输入字典值!', trigger: 'blur' }],
-  sort: [{ required: true, message: '显示顺序不能为空!', trigger: 'blur' }],
+  value: [{ required: true, message:t('place')+t('dic_value')+'!', trigger: 'blur' }],
+  sort: [{ required: true, message:t('place')+t('dic_sort')+'!', trigger: 'blur' }],
 };
 
 // 字典表单 dialog
@@ -285,10 +288,10 @@ const handleEditData = (index, row) => {
 };
 
 const handleDeleteType = (index, row) => {
-  ElMessageBox.confirm('确定要删除这个字典分类吗?', '提示', { type: 'warning' })
+  ElMessageBox.confirm(t('dic_class_info'), t('prompt'), { type: 'warning' })
     .then(() => {
       API_Setting.deleteDictType({ id: row.id }).then(() => {
-        ElMessage.success('删除成功!');
+        ElMessage.success(t('del_success'));
         GET_DictTypeList();
       });
     })
@@ -296,10 +299,10 @@ const handleDeleteType = (index, row) => {
 };
 
 const handleDeleteData = (index, row) => {
-  ElMessageBox.confirm('确定要删除这个字典吗?', '提示', { type: 'warning' })
+  ElMessageBox.confirm(t('dic_data_info'),  t('prompt'), { type: 'warning' })
     .then(() => {
       API_Setting.deleteDictData({ id: row.id }).then(() => {
-        ElMessage.success('删除成功!');
+        ElMessage.success(t('del_success'));
         GET_DictDataList();
       });
     })
@@ -314,18 +317,18 @@ const submitTypeForm = () => {
       if (id) {
         API_Setting.editDictType(params).then((response) => {
           dialogTypeVisible.value = false;
-          ElMessage.success('修改成功!');
+          ElMessage.success( t('edit_success'));
           GET_DictTypeList();
         });
       } else {
         API_Setting.addDictType(params).then(() => {
           dialogTypeVisible.value = false;
-          ElMessage.success('添加成功!');
+          ElMessage.success( t('add_success'));
           GET_DictTypeList();
         });
       }
     } else {
-      ElMessage.error('表单填写有误,请核对!');
+      ElMessage.error(t('form_erroe'));
       return false;
     }
   });
@@ -340,18 +343,18 @@ const submitDataForm = () => {
       if (id) {
         API_Setting.editDictData(params).then((response) => {
           dialogVisible.value = false;
-          ElMessage.success('修改成功!');
+          ElMessage.success(t('edit_success'));
           GET_DictDataList();
         });
       } else {
         API_Setting.addDictData(params).then(() => {
           dialogVisible.value = false;
-          ElMessage.success('添加成功!');
+          ElMessage.success(t('add_success'));
           GET_DictDataList();
         });
       }
     } else {
-      ElMessage.error('表单填写有误,请核对!');
+      ElMessage.error(t('form_erroe'));
       return false;
     }
   });

+ 12 - 9
src/views/setting/roleManage.vue

@@ -4,22 +4,22 @@
       <div class="inner-toolbar w-11/12 flex justify-between">
         <div class="toolbar-btns">
           <el-button size="small" type="primary" :icon="CirclePlus" v-if="checkPermission(['roleManage:add'])&& store.state.user.user.founder!==1" @click="handleAddRole"
-            >添加</el-button
+            >{{$t('add')}}</el-button
           >
         </div>
         <div class="toolbar-search">
-          <en-table-search @search="searchEvent" placeholder="请输入关键字" />
+          <en-table-search @search="searchEvent" :placeholder="$t('search_placeholde')" />
         </div>
       </div>
     </template>
 
     <template #table-columns>
-      <el-table-column prop="role_name" label="角色名称" />
-      <el-table-column prop="role_describe" label="角色描述" />
-      <el-table-column label="操作">
+      <el-table-column prop="role_name" :label="$t('role_names')" />
+      <el-table-column prop="role_describe" :label="$t('role_describe')" />
+      <el-table-column :label="$t('operate')">
         <template #default="scope">
-          <el-button size="small" type="primary" @click="handleEditRole(scope.row)" v-if="checkPermission(['roleManage:edit'])&& store.state.user.user.founder!==1">编辑</el-button>
-          <el-button size="small" type="danger" @click="handleDeleteRole(scope.row)" v-if="checkPermission(['roleManage:del'])&& store.state.user.user.founder!==1">删除</el-button>
+          <el-button size="small" type="primary" @click="handleEditRole(scope.row)" v-if="checkPermission(['roleManage:edit'])&& store.state.user.user.founder!==1">{{$t('edit')}}</el-button>
+          <el-button size="small" type="danger" @click="handleDeleteRole(scope.row)" v-if="checkPermission(['roleManage:del'])&& store.state.user.user.founder!==1">{{$t('delete')}}</el-button>
         </template>
       </el-table-column>
     </template>
@@ -47,6 +47,9 @@ import { ElMessage, ElMessageBox } from 'element-plus';
 import { Delete, Edit, Search, Share, Upload, CirclePlus } from '@element-plus/icons-vue';
 import * as API_Auth from '@/api/auth';
 import { useStore } from 'vuex';
+import { useI18n } from 'vue-i18n';
+const { t } = useI18n();
+
 const store = useStore();
 const router = useRouter();
 const loading = ref(false);
@@ -81,10 +84,10 @@ const handleEditRole = (row: any) => {
 };
 
 const handleDeleteRole = (row: any) => {
-  ElMessageBox.confirm('确定要删除这个角色吗?', '提示', { type: 'warning' })
+  ElMessageBox.confirm(t('del_info'), t('prompt'), { type: 'warning' })
     .then(() => {
       API_Auth.deleteRole(row.role_id).then(() => {
-        ElMessage.success('删除成功!');
+        ElMessage.success(t('del_success'));
         GET_RoleList();
       });
     })

+ 11 - 8
src/views/setting/roleManageAdd.vue

@@ -1,7 +1,7 @@
 <template>
   <div class="permission-container">
     <el-form :model="permissionForm" :rules="permissionRules" ref="permissionFormRef" label-width="200px" class="demo-ruleForm">
-      <el-form-item label="角色名称" prop="role_name">
+      <el-form-item :label="$t('role_names')" prop="role_name">
         <el-input v-model="permissionForm.role_name"></el-input>
       </el-form-item>
     <!--   <el-form-item label="数据范围" prop="dept_ids">
@@ -15,11 +15,11 @@
           :props="props"
         ></el-cascader>
       </el-form-item> -->
-      <el-form-item label="角色描述" prop="role_describe">
+      <el-form-item :label="$t('role_describe')" prop="role_describe">
         <el-input v-model="permissionForm.role_describe"></el-input>
       </el-form-item>
-      <el-form-item label="角色权限" prop="permission">
-        <el-checkbox :indeterminate="allIndeterminate" v-model="allCheck" @change="handleCheckAll">全部选择</el-checkbox>
+      <el-form-item :label="$t('role_permission')" prop="permission">
+        <el-checkbox :indeterminate="allIndeterminate" v-model="allCheck" @change="handleCheckAll">{{$t('sel_all')}}</el-checkbox>
         <div v-for="(item) in permissions" :key="item.identifier" class="level_1">
           <el-row :gutter="20">
             <el-col :span="4">
@@ -105,6 +105,9 @@ import * as API_Auth from '@/api/auth';
 import * as API_Menus from '@/api/menus';
 import * as API_Setting from '@/api/setting';
 /*   import { Foundation } from '../../composables/ui-utils'; */
+import { useI18n } from 'vue-i18n';
+
+const { t } = useI18n();
 
 const route = useRoute();
 const router = useRouter();
@@ -137,8 +140,8 @@ const permissionForm = reactive<{
 /** 权限 表单规则 */
 const permissionRules = reactive({
   role_name: [
-    { required: true, message: '请输入角色名称!', trigger: 'blur' },
-    { min: 1, max: 10, message: '长度在 1 到 10 个字符', trigger: 'blur' },
+    { required: true, message: t('place')+t('role_names')+'!', trigger: 'blur' },
+    { min: 1, max: 10, message: t('role_name_error'), trigger: 'blur' },
   ],
 });
 
@@ -352,12 +355,12 @@ const saveRolePermission = () => {
         }
       } */
       const saveSuccess = () => {
-        ElMessage.success('保存成功!');
+        ElMessage.success(t('sub_success'));
         router.push({ name: 'roleManage' });
       };
       role_id.value === '0' ? API_Auth.addRole(params).then(() => saveSuccess()) : API_Auth.editRole(role_id.value, params).then(() => saveSuccess());
     } else {
-      ElMessage.error('表单填写有误,请检查!');
+      ElMessage.error(t('form_erroe'));
       return false;
     }
   });

+ 17 - 17
src/views/setting/systemLog.vue

@@ -4,7 +4,7 @@
       <template #toolbar>
         <div class="inner-toolbar inner-toolbar2">
           <div class="toolbar-btns"></div>
-          <en-table-search @search="searchEvent" @advancedSearch="advancedSearchEvent" advanced advancedWidth="465" placeholder="账号/操作内容/IP地址">
+          <en-table-search @search="searchEvent" @advancedSearch="advancedSearchEvent" advanced advancedWidth="465" :placeholder="$t('search_log')">
             <!-- <template #advanced-content>
               <el-form ref="advancedFormRef" :model="advancedForm" label-width="80px">
                 <el-form-item label="日志级别">
@@ -36,18 +36,18 @@
       </template>
 
       <template #table-columns>
-        <el-table-column prop="operator_name" label="账号" />
-        <el-table-column prop="operate_detail" label="操作描述" />
-        <el-table-column label="操作时间" align="center">
+        <el-table-column prop="operator_name" :label="$t('operator_name')" />
+        <el-table-column prop="operate_detail" :label="$t('operate_detail')" />
+        <el-table-column :label="$t('operate_time')" align="center">
           <template #default="scope">{{ unixToDate(scope.row.operate_time) }}</template>
         </el-table-column>
-        <el-table-column prop="operate_ip" label="IP地址" />
-        <el-table-column label="日志级别" align="center">
-          <template #default="scope">{{ scope.row.level === 'important' ? '重要' : '一般' }}</template>
+        <el-table-column prop="operate_ip" :label="$t('operate_ip')" />
+        <el-table-column :label="$t('operate_level')" align="center">
+          <template #default="scope">{{ scope.row.level === 'important' ? $t('operate_import') : $t('operate_same') }}</template>
         </el-table-column>
-        <el-table-column label="操作">
+        <el-table-column :label="$t('operate')">
           <template #default="scope">
-            <el-button size="small" type="primary" @click="handleShowDetail(scope.row)" v-if="checkPermission(['systemLogs:detail'])">查看</el-button>
+            <el-button size="small" type="primary" @click="handleShowDetail(scope.row)" v-if="checkPermission(['systemLogs:detail'])">{{$t('view')}}</el-button>
           </template>
         </el-table-column>
       </template>
@@ -66,14 +66,14 @@
       </template>
     </en-table-layout>
 
-    <el-dialog title="日志详情" v-model="showLogDetail" width="40%">
-      <div class="logInfo">账号:{{ currDetailLog.operator_name }}</div>
-      <div class="logInfo">操作描述:{{ currDetailLog.operate_detail }}</div>
-      <div class="logInfo">请求方法:{{ currDetailLog.method }}</div>
-      <div class="logInfo">请求参数:{{ currDetailLog.params }}</div>
-      <div class="logInfo">ip地址:{{ currDetailLog.operate_ip }}</div>
-      <div class="logInfo">日志级别:{{ currDetailLog.level === 'important' ? '重要' : '一般' }}</div>
-      <div class="logInfo">操作时间:{{ unixToDate(currDetailLog.operate_time) }}</div>
+    <el-dialog :title="$t('log_info')" v-model="showLogDetail" width="40%">
+      <div class="logInfo">{{$t('operator_name')}}:{{ currDetailLog.operator_name }}</div>
+      <div class="logInfo">{{$t('operate_detail')}}:{{ currDetailLog.operate_detail }}</div>
+      <div class="logInfo">{{$t('request_method')}}:{{ currDetailLog.method }}</div>
+      <div class="logInfo">{{$t('request_parameters')}}:{{ currDetailLog.params }}</div>
+      <div class="logInfo">{{$t('operate_ip')}}:{{ currDetailLog.operate_ip }}</div>
+      <div class="logInfo">{{$t('operate_level')}}:{{ currDetailLog.level === 'important' ? $t('operate_import') : $t('operate_same') }}</div>
+      <div class="logInfo">{{$t('operate_time')}}:{{ unixToDate(currDetailLog.operate_time) }}</div>
     </el-dialog>
   </div>
 </template>

+ 2 - 2
src/views/stock/warehouseList.vue

@@ -58,13 +58,13 @@
     <el-dialog
       :title="stockForm.id ? $t('edit') : $t('add')"
       v-model="dialogVisible"
-      width="500px"
+      width="600px"
       @open="handleDialogOpen"
       :modal-append-to-body="false"
       :close-on-click-modal="false"
       :close-on-press-escape="false"
     >
-      <el-form :model="stockForm" :rules="stockRules" ref="stockFormRef" label-width="160px">
+      <el-form :model="stockForm" :rules="stockRules" ref="stockFormRef" label-width="180px">
         <el-form-item :label="$t('warechouse_sn')" prop="sn">
           <el-input v-model="stockForm.sn" :minlength="2" :maxlength="4" clearable :placeholder="$t('place') + $t('warechouse_sn')"></el-input>
         </el-form-item>

+ 1 - 1
src/views/stock/warehouseLocation.vue

@@ -29,7 +29,7 @@
       </template>
     </en-table-layout>
     <el-dialog :title="title" v-model="dialogVisibleForm" width="30%" center @close="addHandleCancle">
-      <el-form ref="addLendFormRef" :model="addLendForm" :rules="rules" label-width="90px">
+      <el-form ref="addLendFormRef" :model="addLendForm" :rules="rules" label-width="120px">
         <el-form-item :label="$t('location_code')" prop="code">
           <el-input :placeholder="$t('place') + $t('location_code')" v-model="addLendForm.code" />
         </el-form-item>

+ 46 - 44
src/views/templateManage/accountTemplate.vue

@@ -3,34 +3,34 @@
     <el-form :model="searchForm" label-width="100px">
       <el-row>
         <el-col :span="5">
-          <el-form-item label="状态">
-            <el-select v-model="searchForm.enable_status" clearable placeholder="请选择模板状态">
+          <el-form-item :label="$t('warehousing_state')">
+            <el-select v-model="searchForm.enable_status" clearable :placeholder="$t('place')+$t('warehousing_state')">
               <el-option label="启用" :value="true" />
               <el-option label="禁用" :value="false" />
             </el-select>
           </el-form-item>
         </el-col>
         <el-col :span="5">
-          <el-form-item label="模板名称">
-            <el-input v-model="searchForm.name" clearable placeholder="请输入模板名称"></el-input>
+          <el-form-item :label="$t('template_name')">
+            <el-input v-model="searchForm.name" clearable :placeholder="$t('place')+$t('template_name')"></el-input>
           </el-form-item>
         </el-col>
         <el-col :span="5">
-          <el-form-item label="模板code">
-            <el-input v-model="searchForm.code" clearable placeholder="请输入模板code"></el-input>
+          <el-form-item :label="$t('template_code')">
+            <el-input v-model="searchForm.code" clearable :placeholder="$t('place')+$t('template_code')"></el-input>
           </el-form-item>
         </el-col>
       </el-row>
     </el-form>
     <div class="flex justify-end">
-      <el-button class="mr-3" @click="searchEvent"> 搜索 </el-button>
+      <el-button class="mr-3" @click="searchEvent"> {{$t('search')}} </el-button>
     </div>
   </div>
   <en-table-layout :tableData="tableData.records" :loading="loading">
     <template #toolbar>
       <div class="inner-toolbar w-11/12 flex justify-between">
         <div class="toolbar-btns">
-          <el-button size="small" type="primary" :icon="CirclePlus" v-if="checkPermission([''])" @click="handleAddRole">添加</el-button>
+          <el-button size="small" type="primary" :icon="CirclePlus" v-if="checkPermission([''])" @click="handleAddRole">{{$t('add')}}</el-button>
         </div>
         <!-- <div class="toolbar-search">
                 <en-table-search @search="searchEvent" placeholder="请输入关键字" />
@@ -39,20 +39,20 @@
     </template>
 
     <template #table-columns>
-      <el-table-column prop="name" label="模版名称" />
+      <el-table-column prop="name" :label="$t('template_name')"/>
       <!-- <el-table-column prop="template_type" label="短信类型" /> -->
-      <el-table-column prop="remark" label="模版说明" />
+      <el-table-column prop="remark" :label="$t('template_remark')"/>
       <!--  <el-table-column prop="audit_status" label="审核状态" /> -->
-      <el-table-column prop="enable_status" label="状态">
+      <el-table-column prop="enable_status" :label="$t('user_state')">
         <template #default="scope">
           <el-switch v-model="scope.row.enable_status" inline-prompt active-text="启用" inactive-text="禁用" @change="switchEnableStatus($event, scope.row)" />
         </template>
       </el-table-column>
-      <el-table-column label="操作">
+      <el-table-column :label="$t('operate')">
         <template #default="scope">
-          <el-button size="small" @click="handleView(scope.row)" v-if="checkPermission([''])">查看</el-button>
-          <el-button size="small" type="primary" @click="handleEditRole(scope.row)" v-if="checkPermission([''])">编辑</el-button>
-          <el-button size="small" type="danger" @click="handleDeleteRole(scope.row)" v-if="checkPermission([''])">删除</el-button>
+          <el-button size="small" @click="handleView(scope.row)" v-if="checkPermission([''])">{{$t('view')}}</el-button>
+          <el-button size="small" type="primary" @click="handleEditRole(scope.row)" v-if="checkPermission([''])">{{$t('edit')}}</el-button>
+          <el-button size="small" type="danger" @click="handleDeleteRole(scope.row)" v-if="checkPermission([''])">{{$t('delete')}}</el-button>
         </template>
       </el-table-column>
     </template>
@@ -75,15 +75,15 @@
     <el-form :model="accountForm" :rules="accountFormRules" ref="accountFormRef" label-width="120px">
       <el-row>
         <el-col :span="12">
-          <el-form-item label="上级模板:" prop="pid">
-            <el-select v-model="accountForm.pid" clearable placeholder="请选择上级模板" :disabled="disabled">
+          <el-form-item :label="$t('superior_template')+':'" prop="pid">
+            <el-select v-model="accountForm.pid" clearable :placeholder="$t('place')+$t('superior_template')" :disabled="disabled">
               <el-option v-for="item in pidList" :key="item.id" :label="item.name" :value="item.id" />
             </el-select>
           </el-form-item>
         </el-col>
         <el-col :span="12">
-          <el-form-item label="模版名称:" prop="name">
-            <el-input v-model="accountForm.name"  :disabled="disabled" clearable placeholder="请输入模版名称"></el-input>
+          <el-form-item :label="$t('template_name')+':'" prop="name">
+            <el-input v-model="accountForm.name"  :disabled="disabled" clearable :placeholder="$t('place')+$t('template_name')"></el-input>
           </el-form-item>
         </el-col>
         <!-- <el-form-item label="短信类型:" prop="template_type">
@@ -94,17 +94,17 @@
             </el-select>
           </el-form-item> -->
         <el-col :span="12">
-          <el-form-item label="模版code:" prop="code">
-            <el-input v-model="accountForm.code"  :disabled="disabled" clearable placeholder="请输入模版code"></el-input>
+          <el-form-item :label="$t('template_code')+':'" prop="code">
+            <el-input v-model="accountForm.code"  :disabled="disabled" clearable :placeholder="$t('place')+$t('template_code')"></el-input>
           </el-form-item>
         </el-col>
         <el-col :span="12">
-          <el-form-item label="是否启用:" prop="enable_status">
+          <el-form-item :label="$t('enable_status')+':'" prop="enable_status">
             <el-switch v-model="accountForm.enable_status" inline-prompt :disabled="disabled" active-text="启用" inactive-text="禁用" />
           </el-form-item>
         </el-col>
         <el-col :span="24">
-        <el-form-item label="模版内容:" prop="content">
+        <el-form-item :label="$t('template_content')+':'" prop="content">
           <!--   <div style="border: 1px solid #ccc">
               <Toolbar style="border-bottom: 1px solid #ccc" :editor="editorRef" :defaultConfig="toolbarConfig" :mode="mode" />
               <Editor
@@ -116,17 +116,17 @@
                 @onCreated="handleCreated"
               />
             </div> -->
-          <el-input v-model="accountForm.content"  type="textarea" :autosize="{ minRows: 3, maxRows: 6 }" :disabled="disabled" clearable placeholder="请输入模版内容"></el-input>
+          <el-input v-model="accountForm.content"  type="textarea" :autosize="{ minRows: 3, maxRows: 6 }" :disabled="disabled" clearable :placeholder="$t('place')+$t('template_content')"></el-input>
         </el-form-item>
     </el-col>
         <el-col :span="24">
-          <el-form-item label="模版说明:" prop="remark">
+          <el-form-item :label="$t('template_remark')+':'" prop="remark">
             <el-input
               v-model="accountForm.remark"
               type="textarea"
               :disabled="disabled"
               :autosize="{ minRows: 3, maxRows: 4 }"
-              placeholder="请输入模版说明"
+              :placeholder="$t('place')+$t('template_remark')"
             ></el-input>
           </el-form-item>
         </el-col>
@@ -134,8 +134,8 @@
     </el-form>
     <template #footer>
       <div class="dialog-footer">
-        <el-button @click="systemVisible = false">取 消</el-button>
-        <el-button type="primary" @click="submitaccountForm" :disabled="disabled">确 定</el-button>
+        <el-button @click="systemVisible = false">{{$t('cancel')}}</el-button>
+        <el-button type="primary" @click="submitaccountForm" :disabled="disabled">{{$t('submit')}}</el-button>
       </div>
     </template>
   </el-dialog>
@@ -147,6 +147,8 @@ import { useRouter } from 'vue-router';
 import { ElMessage, ElMessageBox } from 'element-plus';
 import { Delete, Edit, Search, Share, Upload, CirclePlus } from '@element-plus/icons-vue';
 import * as API_Template from '@/api/templateManage';
+import { useI18n } from 'vue-i18n';
+const { t } = useI18n();
 
 const disabled = ref(false);
 
@@ -165,19 +167,19 @@ const accountForm = ref<any>({
   type: 'OFFICIAL',
 });
 const accountFormRules = ref<any>({
-  pid: [{ required: true, message: '请选择上级模板', trigger: 'change' }],
-  name: [{ required: true, message: '请输入模版名称', trigger: 'blur' }],
-  content: [{ required: true, message: '请输入模版内容', trigger: 'blur' }],
+  pid: [{ required: true, message: t('change')+t('superior_template')+'!', trigger: 'change' }],
+  name: [{ required: true, message:t('place')+t('template_name')+'!', trigger: 'blur' }],
+  content: [{ required: true, message: t('place')+t('template_content')+'!', trigger: 'blur' }],
   code: [
-    { required: true, message: '请输入模版code', trigger: 'blur' },
-    { pattern: /^[a-zA-Z0-9_]+$/, message: '只能输入英文、数字和下划线,不能包含空格', trigger: 'blur' },
+    { required: true, message:t('place')+t('template_code')+'!', trigger: 'blur' },
+    { pattern: /^[a-zA-Z0-9_]+$/, message:t('template_tips')+'!', trigger: 'blur' },
   ],
-  template_type: [{ required: true, message: '请选择短信类型', trigger: 'change' }],
-  /*  user_num: [{ required: true, message: '请输入可创建用户数', trigger: 'blur' }], */
+  /*template_type: [{ required: true, message: '请选择短信类型', trigger: 'change' }],
+    user_num: [{ required: true, message: '请输入可创建用户数', trigger: 'blur' }], */
 });
 /* 新增 */
 const handleAddRole = () => {
-  templateTitle.value = '添加模版';
+  templateTitle.value = t('template_add');
   disabled.value = false;
   accountForm.value = {};
   accountForm.value.type = 'OFFICIAL';
@@ -193,18 +195,18 @@ const submitaccountForm = () => {
       if (id) {
         API_Template.editTemplate(id, params).then(() => {
           systemVisible.value = false;
-          ElMessage.success('修改成功!');
+          ElMessage.success(t('edit_success')+'!');
           GET_AccountList();
         });
       } else {
         API_Template.addTemplate(params).then(() => {
           systemVisible.value = false;
-          ElMessage.success('创建成功!');
+          ElMessage.success(t('created_success')+'!');
           GET_AccountList();
         });
       }
     } else {
-      ElMessage.error('表单填写有误,请核对!');
+      ElMessage.error(t('form_erroe'));
       /*    store.dispatch('showMessage', { message: '表单填写有误,请核对!', type: 'error' }); */
       return false;
     }
@@ -213,20 +215,20 @@ const submitaccountForm = () => {
 /* 修改状态 */
 const switchEnableStatus = (event, row) => {
   API_Template.editStatus(row.id).then((res) => {
-    ElMessage.success('状态修改成功!');
+    ElMessage.success(t('template_type_success')+'!');
     GET_AccountList();
   });
 };
 /* 查看模版 */
 const handleView = (row) => {
-  templateTitle.value = '查看模版';
+  templateTitle.value =  t('template_view');
   accountForm.value = { ...row };
   disabled.value = true;
   systemVisible.value = true;
 };
 /* 编辑模版 */
 const handleEditRole = (row: any) => {
-  templateTitle.value = '编辑模版';
+  templateTitle.value = t('template_edit');
   disabled.value = false;
   accountForm.value = { ...row };
   accountForm.value.type = 'OFFICIAL';
@@ -234,10 +236,10 @@ const handleEditRole = (row: any) => {
 };
 /* 删除模版 */
 const handleDeleteRole = (row: any) => {
-  ElMessageBox.confirm('确定要删除这个模版吗?', '提示', { type: 'warning' })
+  ElMessageBox.confirm(t('del_info'), t('prompt'), { type: 'warning' })
     .then(() => {
       API_Template.delTemplate(row.id).then(() => {
-        ElMessage.success('删除成功!');
+        ElMessage.success(t('del_success'));
         GET_AccountList();
       });
     })

+ 46 - 44
src/views/templateManage/emailtemplate.vue

@@ -3,34 +3,34 @@
     <el-form :model="searchForm" label-width="100px">
       <el-row>
         <el-col :span="5">
-          <el-form-item label="状态">
-            <el-select v-model="searchForm.enable_status" clearable placeholder="请选择模板状态">
+          <el-form-item :label="$t('warehousing_state')">
+            <el-select v-model="searchForm.enable_status" clearable :placeholder="$t('place')+$t('warehousing_state')">
               <el-option label="启用" :value="true" />
               <el-option label="禁用" :value="false" />
             </el-select>
           </el-form-item>
         </el-col>
         <el-col :span="5">
-          <el-form-item label="模板名称">
-            <el-input v-model="searchForm.name" clearable placeholder="请输入模板名称"></el-input>
+          <el-form-item :label="$t('template_name')">
+            <el-input v-model="searchForm.name" clearable :placeholder="$t('place')+$t('template_name')"></el-input>
           </el-form-item>
         </el-col>
         <el-col :span="5">
-          <el-form-item label="模板code">
-            <el-input v-model="searchForm.code" clearable placeholder="请输入模板code"></el-input>
+          <el-form-item :label="$t('template_code')">
+            <el-input v-model="searchForm.code" clearable :placeholder="$t('place')+$t('template_code')"></el-input>
           </el-form-item>
         </el-col>
       </el-row>
     </el-form>
     <div class="flex justify-end">
-      <el-button class="mr-3" @click="searchEvent"> 搜索 </el-button>
+      <el-button class="mr-3" @click="searchEvent"> {{$t('search')}} </el-button>
     </div>
   </div>
   <en-table-layout :tableData="tableData.records" :loading="loading">
     <template #toolbar>
       <div class="inner-toolbar w-11/12 flex justify-between">
         <div class="toolbar-btns">
-          <el-button size="small" type="primary" :icon="CirclePlus" v-if="checkPermission([''])" @click="handleAddRole">添加</el-button>
+          <el-button size="small" type="primary" :icon="CirclePlus" v-if="checkPermission([''])" @click="handleAddRole">{{$t('add')}}</el-button>
         </div>
         <!-- <div class="toolbar-search">
               <en-table-search @search="searchEvent" placeholder="请输入关键字" />
@@ -39,20 +39,20 @@
     </template>
 
     <template #table-columns>
-      <el-table-column prop="name" label="模版名称" />
+      <el-table-column prop="name" :label="$t('template_name')" />
       <!-- <el-table-column prop="template_type" label="短信类型" /> -->
-      <el-table-column prop="remark" label="模版说明" />
+      <el-table-column prop="remark" :label="$t('template_remark')"/>
       <!--  <el-table-column prop="audit_status" label="审核状态" /> -->
-      <el-table-column prop="enable_status" label="状态">
+      <el-table-column prop="enable_status" :label="$t('user_state')">
         <template #default="scope">
           <el-switch v-model="scope.row.enable_status" inline-prompt active-text="启用" inactive-text="禁用" @change="switchEnableStatus($event, scope.row)" />
         </template>
       </el-table-column>
-      <el-table-column label="操作">
+      <el-table-column :label="$t('operate')">
         <template #default="scope">
-          <el-button size="small" @click="handleView(scope.row)" v-if="checkPermission([''])">查看</el-button>
-          <el-button size="small" type="primary" @click="handleEditRole(scope.row)" v-if="checkPermission([''])">编辑</el-button>
-          <el-button size="small" type="danger" @click="handleDeleteRole(scope.row)" v-if="checkPermission([''])">删除</el-button>
+          <el-button size="small" @click="handleView(scope.row)" v-if="checkPermission([''])">{{$t('view')}}</el-button>
+          <el-button size="small" type="primary" @click="handleEditRole(scope.row)" v-if="checkPermission([''])">{{$t('edit')}}</el-button>
+          <el-button size="small" type="danger" @click="handleDeleteRole(scope.row)" v-if="checkPermission([''])">{{$t('delete')}}</el-button>
         </template>
       </el-table-column>
     </template>
@@ -75,15 +75,15 @@
     <el-form :model="EmailForm" :rules="EmailFormRules" ref="EmailFormRef" label-width="120px">
       <el-row>
         <el-col :span="12">
-          <el-form-item label="上级模板:" prop="pid">
-            <el-select v-model="EmailForm.pid" clearable placeholder="请选择上级模板" :disabled="disabled">
+          <el-form-item :label="$t('superior_template')+':'" prop="pid">
+            <el-select v-model="EmailForm.pid" clearable :placeholder="$t('place')+$t('superior_template')" :disabled="disabled">
               <el-option v-for="item in pidList" :key="item.id" :label="item.name" :value="item.id" />
             </el-select>
           </el-form-item>
         </el-col>
         <el-col :span="12">
-          <el-form-item label="模版名称:" prop="name">
-            <el-input v-model="EmailForm.name" :disabled="disabled" clearable placeholder="请输入模版名称"></el-input>
+          <el-form-item :label="$t('template_name')+':'" prop="name">
+            <el-input v-model="EmailForm.name" :disabled="disabled" clearable :placeholder="$t('place')+$t('template_name')"></el-input>
           </el-form-item>
         </el-col>
         <!-- <el-form-item label="短信类型:" prop="template_type">
@@ -94,16 +94,16 @@
           </el-select>
         </el-form-item> -->
         <el-col :span="12">
-          <el-form-item label="模版code:" prop="code">
-            <el-input v-model="EmailForm.code" :disabled="disabled" clearable placeholder="请输入模版code"></el-input>
+          <el-form-item :label="$t('template_code')+':'" prop="code">
+            <el-input v-model="EmailForm.code" :disabled="disabled" clearable :placeholder="$t('place')+$t('template_code')"></el-input>
           </el-form-item>
         </el-col>
         <el-col :span="12">
-          <el-form-item label="是否启用:" prop="enable_status">
+          <el-form-item :label="$t('enable_status')+':'" prop="enable_status">
             <el-switch v-model="EmailForm.enable_status" inline-prompt :disabled="disabled" active-text="启用" inactive-text="禁用" />
           </el-form-item>
         </el-col>
-        <el-form-item label="模版内容:" prop="content">
+        <el-form-item :label="$t('template_content')+':'" prop="content">
           <div style="border: 1px solid #ccc">
             <Toolbar style="border-bottom: 1px solid #ccc" :editor="editorRef" :defaultConfig="toolbarConfig" :mode="mode" />
             <Editor
@@ -118,13 +118,13 @@
           <!-- <el-input v-model="EmailForm.content" :disabled="disabled" clearable placeholder="请输入模版内容"></el-input> -->
         </el-form-item>
         <el-col :span="24">
-          <el-form-item label="模版说明:" prop="remark">
+          <el-form-item :label="$t('template_remark')+':'" prop="remark">
             <el-input
               v-model="EmailForm.remark"
               type="textarea"
               :disabled="disabled"
               :autosize="{ minRows: 3, maxRows: 4 }"
-              placeholder="请输入模版说明"
+              :placeholder="$t('place')+$t('template_remark')"
             ></el-input>
           </el-form-item>
         </el-col>
@@ -132,8 +132,8 @@
     </el-form>
     <template #footer>
       <div class="dialog-footer">
-        <el-button @click="systemVisible = false">取 消</el-button>
-        <el-button type="primary" @click="submitEmailForm" :disabled="disabled">确 定</el-button>
+        <el-button @click="systemVisible = false">{{$t('cancel')}}</el-button>
+        <el-button type="primary" @click="submitEmailForm" :disabled="disabled">{{$t('submit')}}</el-button>
       </div>
     </template>
   </el-dialog>
@@ -148,6 +148,8 @@ import * as API_Template from '@/api/templateManage';
 import { createEditor, createToolbar, IEditorConfig, IDomEditor } from '@wangeditor/editor';
 import { Editor, Toolbar } from '@wangeditor/editor-for-vue';
 import '@wangeditor/editor/dist/css/style.css';
+import { useI18n } from 'vue-i18n';
+const { t } = useI18n();
 
 const editorReadonly = ref(false);
 const disabled = ref(false);
@@ -155,7 +157,7 @@ const editorRef = shallowRef();
 const mode = ref('default');
 const toolbarConfig = {};
 const editorConfig = {
-  placeholder: '请输入内容...',
+  placeholder: t('place')+'...',
   readOnly: editorReadonly.value || disabled.value,
 };
 
@@ -189,19 +191,19 @@ const EmailForm = ref<any>({
   type: 'MAIL',
 });
 const EmailFormRules = ref<any>({
-  pid: [{ required: true, message: '请选择上级模板', trigger: 'change' }],
-  name: [{ required: true, message: '请输入模版名称', trigger: 'blur' }],
-  content: [{ required: true, message: '请输入模版内容', trigger: 'blur' }],
+  pid: [{ required: true, message: t('change')+t('superior_template')+'!', trigger: 'change' }],
+  name: [{ required: true, message: t('place')+t('template_name')+'!', trigger: 'blur' }],
+  content: [{ required: true, message: t('place')+t('template_content')+'!', trigger: 'blur' }],
   code: [
-    { required: true, message: '请输入模版code', trigger: 'blur' },
-    { pattern: /^[a-zA-Z0-9_]+$/, message: '只能输入英文、数字和下划线,不能包含空格', trigger: 'blur' },
+    { required: true, message:t('place')+t('template_code')+'!', trigger: 'blur' },
+    { pattern: /^[a-zA-Z0-9_]+$/, message:t('template_tips')+'!', trigger: 'blur' },
   ],
-  template_type: [{ required: true, message: '请选择短信类型', trigger: 'change' }],
-  /*  user_num: [{ required: true, message: '请输入可创建用户数', trigger: 'blur' }], */
+  /* template_type: [{ required: true, message: '请选择短信类型', trigger: 'change' }],
+   user_num: [{ required: true, message: '请输入可创建用户数', trigger: 'blur' }], */
 });
 /* 新增 */
 const handleAddRole = () => {
-  templateTitle.value = '添加模版';
+  templateTitle.value = t('template_add');
   disabled.value = false;
   editorReadonly.value = false; // 允许编辑
   EmailForm.value = {};
@@ -228,18 +230,18 @@ const submitEmailForm = () => {
       if (id) {
         API_Template.editTemplate(id, params).then(() => {
           systemVisible.value = false;
-          ElMessage.success('修改成功!');
+          ElMessage.success(t('edit_success')+'!');
           GET_EmailList();
         });
       } else {
         API_Template.addTemplate(params).then(() => {
           systemVisible.value = false;
-          ElMessage.success('创建成功!');
+          ElMessage.success(t('created_success')+'!');
           GET_EmailList();
         });
       }
     } else {
-      ElMessage.error('表单填写有误,请核对!');
+      ElMessage.error(t('form_erroe'));
       /*    store.dispatch('showMessage', { message: '表单填写有误,请核对!', type: 'error' }); */
       return false;
     }
@@ -248,13 +250,13 @@ const submitEmailForm = () => {
 /* 修改状态 */
 const switchEnableStatus = (event, row) => {
   API_Template.editStatus(row.id).then((res) => {
-    ElMessage.success('状态修改成功!');
+    ElMessage.success(t('template_type_success')+'!');
     GET_EmailList();
   });
 };
 /* 查看模版 */
 const handleView = (row) => {
-  templateTitle.value = '查看模版';
+  templateTitle.value = t('template_view');
   EmailForm.value = { ...row };
   disabled.value = true;
   editorReadonly.value = true; // 设置编辑器为只读
@@ -268,7 +270,7 @@ const handleView = (row) => {
 };
 /* 编辑模版 */
 const handleEditRole = (row: any) => {
-  templateTitle.value = '编辑模版';
+  templateTitle.value = t('template_edit');
   disabled.value = false;
   editorReadonly.value = false; // 允许编辑
   EmailForm.value = { ...row };
@@ -283,10 +285,10 @@ const handleEditRole = (row: any) => {
 };
 /* 删除模版 */
 const handleDeleteRole = (row: any) => {
-  ElMessageBox.confirm('确定要删除这个模版吗?', '提示', { type: 'warning' })
+  ElMessageBox.confirm(t('del_info'), t('prompt'), { type: 'warning' })
     .then(() => {
       API_Template.delTemplate(row.id).then(() => {
-        ElMessage.success('删除成功!');
+        ElMessage.success(t('del_success'));
         GET_EmailList();
       });
     })

+ 48 - 46
src/views/templateManage/smsTemplate.vue

@@ -3,34 +3,34 @@
     <el-form :model="searchForm" label-width="100px">
       <el-row>
         <el-col :span="5">
-          <el-form-item label="状态">
-            <el-select v-model="searchForm.enable_status" clearable placeholder="请选择模板状态">
+          <el-form-item :label="$t('warehousing_state')">
+            <el-select v-model="searchForm.enable_status" clearable :placeholder="$t('place')+$t('warehousing_state')">
               <el-option label="启用" :value="true" />
               <el-option label="禁用" :value="false" />
             </el-select>
           </el-form-item>
         </el-col>
         <el-col :span="5">
-          <el-form-item label="模板名称">
-            <el-input v-model="searchForm.name" clearable placeholder="请输入模板名称"></el-input>
+          <el-form-item :label="$t('template_name')">
+            <el-input v-model="searchForm.name" clearable :placeholder="$t('place')+$t('template_name')"></el-input>
           </el-form-item>
         </el-col>
         <el-col :span="5">
-          <el-form-item label="模板code">
-            <el-input v-model="searchForm.code" clearable placeholder="请输入模板code"></el-input>
+          <el-form-item :label="$t('template_code')">
+            <el-input v-model="searchForm.code" clearable :placeholder="$t('place')+$t('template_code')"></el-input>
           </el-form-item>
         </el-col>
       </el-row>
     </el-form>
     <div class="flex justify-end">
-      <el-button class="mr-3" @click="searchEvent"> 搜索 </el-button>
+      <el-button class="mr-3" @click="searchEvent"> {{$t('search')}} </el-button>
     </div>
   </div>
   <en-table-layout :tableData="tableData.records" :loading="loading">
     <template #toolbar>
       <div class="inner-toolbar w-11/12 flex justify-between">
         <div class="toolbar-btns">
-          <el-button size="small" type="primary" :icon="CirclePlus" v-if="checkPermission([''])" @click="handleAddRole">添加</el-button>
+          <el-button size="small" type="primary" :icon="CirclePlus" v-if="checkPermission([''])" @click="handleAddRole">{{$t('add')}}</el-button>
         </div>
         <!-- <div class="toolbar-search">
             <en-table-search @search="searchEvent" placeholder="请输入关键字" />
@@ -39,20 +39,20 @@
     </template>
 
     <template #table-columns>
-      <el-table-column prop="name" label="模版名称" />
+      <el-table-column prop="name" :label="$t('template_name')" />
       <!-- <el-table-column prop="template_type" label="短信类型" /> -->
-      <el-table-column prop="remark" label="模版说明" />
-      <el-table-column prop="audit_status" label="审核状态" />
-      <el-table-column prop="enable_status" label="状态">
+      <el-table-column prop="remark" :label="$t('template_remark')" />
+      <el-table-column prop="audit_status" :label="$t('audit_status')" />
+      <el-table-column prop="enable_status" :label="$t('user_state')">
         <template #default="scope">
           <el-switch v-model="scope.row.enable_status" inline-prompt active-text="启用" inactive-text="禁用" @change="switchEnableStatus($event, scope.row)" />
         </template>
       </el-table-column>
-      <el-table-column label="操作">
+      <el-table-column :label="$t('operate')">
         <template #default="scope">
-          <el-button size="small" @click="handleView(scope.row)" v-if="checkPermission([''])">查看</el-button>
-          <el-button size="small" type="primary" @click="handleEditRole(scope.row)" v-if="checkPermission([''])">编辑</el-button>
-          <el-button size="small" type="danger" @click="handleDeleteRole(scope.row)" v-if="checkPermission([''])">删除</el-button>
+          <el-button size="small" @click="handleView(scope.row)" v-if="checkPermission([''])">{{$t('view')}}</el-button>
+          <el-button size="small" type="primary" @click="handleEditRole(scope.row)" v-if="checkPermission([''])">{{$t('edit')}}</el-button>
+          <el-button size="small" type="danger" @click="handleDeleteRole(scope.row)" v-if="checkPermission([''])">{{$t('delete')}}</el-button>
         </template>
       </el-table-column>
     </template>
@@ -80,16 +80,16 @@
     :close-on-press-escape="false"
   >
     <el-form :model="SMSForm" :rules="SMSFormRules" ref="SMSFormRef" label-width="120px">
-      <el-form-item label="上级模板:" prop="pid">
-        <el-select v-model="SMSForm.pid" clearable placeholder="请选择上级模板" :disabled="disabled">
+      <el-form-item :label="$t('superior_template')+':'" prop="pid">
+        <el-select v-model="SMSForm.pid" clearable :placeholder="$t('place')+$t('superior_template')" :disabled="disabled">
           <el-option v-for="item in pidList" :key="item.id" :label="item.name" :value="item.id" />
         </el-select>
       </el-form-item>
-      <el-form-item label="模版名称:" prop="name">
-        <el-input v-model="SMSForm.name" :minlength="2" :maxlength="20" :disabled="disabled" clearable placeholder="请输入模版名称"></el-input>
+      <el-form-item :label="$t('template_name')+':'" prop="name">
+        <el-input v-model="SMSForm.name" :minlength="2" :maxlength="20" :disabled="disabled" clearable :placeholder="$t('place')+$t('template_name')"></el-input>
       </el-form-item>
-      <el-form-item label="平台模版code:" prop="template_code">
-        <el-input v-model="SMSForm.template_code" :minlength="2" :maxlength="20" :disabled="disabled" clearable placeholder="请输入平台模版code"></el-input>
+      <el-form-item :label="$t('template_code')+':'" prop="template_code">
+        <el-input v-model="SMSForm.template_code" :minlength="2" :maxlength="20" :disabled="disabled" clearable :placeholder="$t('place')+$t('template_code')"></el-input>
       </el-form-item>
      <!--  <el-form-item label="短信类型:" prop="template_type">
         <el-select v-model="SMSForm.template_type" clearable :disabled="disabled" placeholder="请选择短信类型">
@@ -98,23 +98,23 @@
           <el-option label="推广短信" value="2" />
         </el-select>
       </el-form-item> -->
-      <el-form-item label="自定义模版code:" prop="code">
-        <el-input v-model="SMSForm.code" :disabled="disabled" clearable placeholder="请输入模版code"></el-input>
+      <el-form-item :label="$t('custom_template_code')+':'" prop="code">
+        <el-input v-model="SMSForm.code" :disabled="disabled" clearable :placeholder="$t('place')+$t('custom_template_code')"></el-input>
       </el-form-item>
-      <el-form-item label="是否启用:" prop="enable_status">
+      <el-form-item :label="$t('enable_status')+':'" prop="enable_status">
         <el-switch v-model="SMSForm.enable_status" inline-prompt :disabled="disabled" active-text="启用" inactive-text="禁用" />
       </el-form-item>
-       <el-form-item label="模版内容:" prop="content">
-        <el-input v-model="SMSForm.content"  :disabled="disabled" type="textarea" :autosize="{ minRows: 3, maxRows: 6 }" clearable placeholder="请输入模版内容"></el-input>
+       <el-form-item :label="$t('template_content')+':'" prop="content">
+        <el-input v-model="SMSForm.content"  :disabled="disabled" type="textarea" :autosize="{ minRows: 3, maxRows: 6 }" clearable :placeholder="$t('place')+$t('template_content')"></el-input>
       </el-form-item>
-      <el-form-item label="模版说明:" prop="remark">
-        <el-input v-model="SMSForm.remark" type="textarea" :disabled="disabled" :autosize="{ minRows: 3, maxRows: 4 }" placeholder="请输入模版说明"></el-input>
+      <el-form-item :label="$t('template_remark')+':'" prop="remark">
+        <el-input v-model="SMSForm.remark" type="textarea" :disabled="disabled" :autosize="{ minRows: 3, maxRows: 4 }" :placeholder="$t('place')+$t('template_remark')"></el-input>
       </el-form-item>
     </el-form>
     <template #footer>
       <div class="dialog-footer">
-        <el-button @click="systemVisible = false">取 消</el-button>
-        <el-button type="primary" @click="submitSMSForm" :disabled="disabled">确 定</el-button>
+        <el-button @click="systemVisible = false">{{$t('cancel')}}</el-button>
+        <el-button type="primary" @click="submitSMSForm" :disabled="disabled">{{$t('submit')}}</el-button>
       </div>
     </template>
   </el-dialog>
@@ -126,6 +126,8 @@ import { useRouter } from 'vue-router';
 import { ElMessage, ElMessageBox } from 'element-plus';
 import { Delete, Edit, Search, Share, Upload, CirclePlus } from '@element-plus/icons-vue';
 import * as API_Template from '@/api/templateManage';
+import { useI18n } from 'vue-i18n';
+const { t } = useI18n();
 
 const router = useRouter();
 /* 模版表单 */
@@ -144,20 +146,20 @@ const SMSForm = ref<any>({
   template_code:''
 });
 const SMSFormRules = ref<any>({
-  pid: [{ required: true, message: '请选择上级模板', trigger: 'change' }],
-  name: [{ required: true, message: '请输入模版名称', trigger: 'blur' }],
-  template_code: [{ required: true, message: '请输入平台模版code', trigger: 'blur' }],
-  content: [{ required: true, message: '请输入模版内容', trigger: 'blur' }],
+  pid: [{ required: true, message: t('change')+t('superior_template')+'!', trigger: 'change' }],
+  name: [{ required: true, message: t('place')+t('template_name')+'!', trigger: 'blur' }],
+  template_code: [{ required: true, message: t('place')+t('template_code')+'!', trigger: 'blur' }],
+  content: [{ required: true, message:  t('place')+t('template_content')+'!', trigger: 'blur' }],
   code: [
-    { required: true, message: '请输入模版code', trigger: 'blur' },
-    { pattern: /^[a-zA-Z0-9_]+$/, message: '只能输入英文、数字和下划线,不能包含空格', trigger: 'blur' },
+    { required: true, message: t('place')+t('custom_template_code')+'!', trigger: 'blur' },
+    { pattern: /^[a-zA-Z0-9_]+$/, message:t('template_tips'), trigger: 'blur' },
   ],
   /*template_type: [{ required: true, message: '请选择短信类型', trigger: 'change' }],
     user_num: [{ required: true, message: '请输入可创建用户数', trigger: 'blur' }], */
 });
 /* 新增 */
 const handleAddRole = () => {
-  templateTitle.value = '添加模版';
+  templateTitle.value = t('template_add');
   disabled.value = false;
   SMSForm.value = {};
   SMSForm.value.type = 'SMS';
@@ -172,18 +174,18 @@ const submitSMSForm = () => {
       if (id) {
         API_Template.editTemplate(id, params).then(() => {
           systemVisible.value = false;
-          ElMessage.success('修改成功!');
+          ElMessage.success(t('edit_success'));
           GET_SMSList();
         });
       } else {
         API_Template.addTemplate(params).then(() => {
           systemVisible.value = false;
-          ElMessage.success('创建成功!');
+          ElMessage.success(t('add_success'));
           GET_SMSList();
         });
       }
     } else {
-      ElMessage.error('表单填写有误,请核对!');
+      ElMessage.error(t('form_erroe'));
       /*    store.dispatch('showMessage', { message: '表单填写有误,请核对!', type: 'error' }); */
       return false;
     }
@@ -192,20 +194,20 @@ const submitSMSForm = () => {
 /* 修改状态 */
 const switchEnableStatus = (event, row) => {
   API_Template.editStatus(row.id).then((res) => {
-    ElMessage.success('状态修改成功!');
+    ElMessage.success(t('template_type_success')+'!');
     GET_SMSList();
   });
 };
 /* 查看模版 */
 const handleView = (row) => {
-  templateTitle.value = '查看模版';
+  templateTitle.value = t('template_view');
   SMSForm.value = { ...row };
   disabled.value = true;
   systemVisible.value = true;
 };
 /* 编辑模版 */
 const handleEditRole = (row: any) => {
-  templateTitle.value = '编辑模版';
+  templateTitle.value = t('template_edit');
   disabled.value = false;
   SMSForm.value = { ...row };
   SMSForm.value.type = 'SMS';
@@ -213,10 +215,10 @@ const handleEditRole = (row: any) => {
 };
 /* 删除模版 */
 const handleDeleteRole = (row: any) => {
-  ElMessageBox.confirm('确定要删除这个模版吗?', '提示', { type: 'warning' })
+  ElMessageBox.confirm(t('del_info'), t('prompt'), { type: 'warning' })
     .then(() => {
       API_Template.delTemplate(row.id).then(() => {
-        ElMessage.success('删除成功!');
+        ElMessage.success(t('del_success')+'!');
         GET_SMSList();
       });
     })

+ 42 - 39
src/views/templateManage/systemMessage.vue

@@ -3,34 +3,34 @@
     <el-form :model="searchForm" label-width="100px">
       <el-row>
         <el-col :span="5">
-          <el-form-item label="状态">
-            <el-select v-model="searchForm.enable_status" clearable placeholder="请选择模板状态">
+          <el-form-item :label="$t('warehousing_state')">
+            <el-select v-model="searchForm.enable_status" clearable :placeholder="$t('place')+$t('warehousing_state')">
               <el-option label="启用" :value="true" />
               <el-option label="禁用" :value="false" />
             </el-select>
           </el-form-item>
         </el-col>
         <el-col :span="5">
-          <el-form-item label="模板名称">
-            <el-input v-model="searchForm.name" clearable placeholder="请输入模板名称"></el-input>
+          <el-form-item :label="$t('template_name')">
+            <el-input v-model="searchForm.name" clearable :placeholder="$t('place')+$t('template_name')"></el-input>
           </el-form-item>
         </el-col>
         <el-col :span="5">
-          <el-form-item label="模板code">
-            <el-input v-model="searchForm.code" clearable placeholder="请输入模板code"></el-input>
+          <el-form-item :label="$t('template_code')">
+            <el-input v-model="searchForm.code" clearable :placeholder="$t('place')+$t('template_code')"></el-input>
           </el-form-item>
         </el-col>
       </el-row>
     </el-form>
     <div class="flex justify-end">
-      <el-button class="mr-3" @click="searchEvent"> 搜索 </el-button>
+      <el-button class="mr-3" @click="searchEvent"> {{$t('search')}} </el-button>
     </div>
   </div>
   <en-table-layout :tableData="tableData.records" :loading="loading">
     <template #toolbar>
       <div class="inner-toolbar w-11/12 flex justify-between">
         <div class="toolbar-btns">
-          <el-button size="small" type="primary" :icon="CirclePlus" v-if="checkPermission([''])" @click="handleAddRole">添加</el-button>
+          <el-button size="small" type="primary" :icon="CirclePlus" v-if="checkPermission([''])" @click="handleAddRole">{{$t('add')}}</el-button>
         </div>
         <!-- <div class="toolbar-search">
           <en-table-search @search="searchEvent" placeholder="请输入关键字" />
@@ -39,20 +39,20 @@
     </template>
 
     <template #table-columns>
-      <el-table-column prop="name" label="模版名称" />
+      <el-table-column prop="name" :label="$t('template_name')" />
       <!-- <el-table-column prop="template_type" label="短信类型" /> -->
-      <el-table-column prop="remark" label="模版说明" />
+      <el-table-column prop="remark" :label="$t('template_remark')"/>
       <!--  <el-table-column prop="audit_status" label="审核状态" /> -->
-      <el-table-column prop="enable_status" label="状态">
+      <el-table-column prop="enable_status"  :label="$t('user_state')">
         <template #default="scope">
           <el-switch v-model="scope.row.enable_status" inline-prompt active-text="启用" inactive-text="禁用" @change="switchEnableStatus($event, scope.row)" />
         </template>
       </el-table-column>
-      <el-table-column label="操作">
+      <el-table-column :label="$t('operate')">
         <template #default="scope">
-          <el-button size="small" @click="handleView(scope.row)" v-if="checkPermission([''])">查看</el-button>
-          <el-button size="small" type="primary" @click="handleEditRole(scope.row)" v-if="checkPermission([''])">编辑</el-button>
-          <el-button size="small" type="danger" @click="handleDeleteRole(scope.row)" v-if="checkPermission([''])">删除</el-button>
+          <el-button size="small" @click="handleView(scope.row)" v-if="checkPermission([''])">{{$t('view')}}</el-button>
+          <el-button size="small" type="primary" @click="handleEditRole(scope.row)" v-if="checkPermission([''])">{{$t('edit')}}</el-button>
+          <el-button size="small" type="danger" @click="handleDeleteRole(scope.row)" v-if="checkPermission([''])">{{$t('delete')}}</el-button>
         </template>
       </el-table-column>
     </template>
@@ -80,32 +80,32 @@
     :close-on-press-escape="false"
   >
     <el-form :model="systemForm" :rules="systemFormRules" ref="systemFormRef" label-width="120px">
-      <el-form-item label="模版名称:" prop="name">
-        <el-input v-model="systemForm.name"  :disabled="disabled" clearable placeholder="请输入模版名称"></el-input>
+      <el-form-item :label="$t('template_name')+':'" prop="name">
+        <el-input v-model="systemForm.name"  :disabled="disabled" clearable :placeholder="$t('place')+$t('template_name')"></el-input>
       </el-form-item>
-      <el-form-item label="模版内容:" prop="content">
-        <el-input v-model="systemForm.content"  type="textarea" :autosize="{ minRows: 3, maxRows: 6 }" :disabled="disabled" clearable placeholder="请输入模版内容"></el-input>
+      <el-form-item :label="$t('template_content')+':'" prop="content">
+        <el-input v-model="systemForm.content"  type="textarea" :autosize="{ minRows: 3, maxRows: 6 }" :disabled="disabled" clearable :placeholder="$t('place')+$t('template_content')"></el-input>
       </el-form-item>
-      <el-form-item label="模版code:" prop="code">
-        <el-input v-model="systemForm.code"  :disabled="disabled" clearable placeholder="请输入模版code"></el-input>
+      <el-form-item :label="$t('template_code')+':'" prop="code">
+        <el-input v-model="systemForm.code"  :disabled="disabled" clearable :placeholder="$t('place')+$t('template_code')"></el-input>
       </el-form-item>
-      <el-form-item label="是否启用:" prop="enable_status">
+      <el-form-item :label="$t('enable_status')+':'" prop="enable_status">
         <el-switch v-model="systemForm.enable_status" inline-prompt :disabled="disabled" active-text="启用" inactive-text="禁用" />
       </el-form-item>
-      <el-form-item label="模版说明:" prop="remark">
+      <el-form-item :label="$t('template_remark')+':'" prop="remark">
         <el-input
           v-model="systemForm.remark"
           type="textarea"
           :disabled="disabled"
           :autosize="{ minRows: 3, maxRows: 4 }"
-          placeholder="请输入模版说明"
+          :placeholder="$t('place')+$t('template_remark')"
         ></el-input>
       </el-form-item>
     </el-form>
     <template #footer>
       <div class="dialog-footer">
-        <el-button @click="systemVisible = false">取 消</el-button>
-        <el-button type="primary" @click="submitsystemForm" :disabled="disabled">确 定</el-button>
+        <el-button @click="systemVisible = false">{{$t('cancel')}}</el-button>
+        <el-button type="primary" @click="submitsystemForm" :disabled="disabled">{{$t('submit')}}</el-button>
       </div>
     </template>
   </el-dialog>
@@ -118,6 +118,9 @@ import { ElMessage, ElMessageBox } from 'element-plus';
 import { Delete, Edit, Search, Share, Upload, CirclePlus } from '@element-plus/icons-vue';
 import * as API_Template from '@/api/templateManage';
 
+import { useI18n } from 'vue-i18n';
+const { t } = useI18n();
+
 const router = useRouter();
 /* 模版表单 */
 const disabled = ref(false);
@@ -133,18 +136,18 @@ const systemForm = ref<any>({
   type: 'SYSTEM',
 });
 const systemFormRules = ref<any>({
-  name: [{ required: true, message: '请输入模版名称', trigger: 'blur' }],
-  content: [{ required: true, message: '请输入模版内容', trigger: 'blur' }],
+  name: [{ required: true, message:t('place')+t('template_name')+'!', trigger: 'blur' }],
+  content: [{ required: true, message: t('place')+t('template_content')+'!', trigger: 'blur' }],
   code: [
-    { required: true, message: '请输入模版code', trigger: 'blur' },
-    { pattern: /^[a-zA-Z0-9_]+$/, message: '只能输入英文、数字和下划线,不能包含空格', trigger: 'blur' },
+    { required: true, message:t('place')+t('template_code')+'!', trigger: 'blur' },
+    { pattern: /^[a-zA-Z0-9_]+$/, message:t('template_tips')+'!', trigger: 'blur' },
   ],
   /* enable_status: [{ required: true, message: '请选择状态', trigger: 'change' }],
     user_num: [{ required: true, message: '请输入可创建用户数', trigger: 'blur' }], */
 });
 /* 新增 */
 const handleAddRole = () => {
-  templateTitle.value = '添加模版';
+  templateTitle.value = t('template_add');
   disabled.value = false;
   systemForm.value = {};
   systemForm.value.type = 'SYSTEM';
@@ -159,18 +162,18 @@ const submitsystemForm = () => {
       if (id) {
         API_Template.editTemplate(id, params).then(() => {
           systemVisible.value = false;
-          ElMessage.success('修改成功!');
+          ElMessage.success(t('edit_success')+'!');
           GET_systemList();
         });
       } else {
         API_Template.addTemplate(params).then(() => {
           systemVisible.value = false;
-          ElMessage.success('创建成功!');
+          ElMessage.success(t('created_success')+'!');
           GET_systemList();
         });
       }
     } else {
-      ElMessage.error('表单填写有误,请核对!');
+      ElMessage.error(t('form_erroe'));
       /*    store.dispatch('showMessage', { message: '表单填写有误,请核对!', type: 'error' }); */
       return false;
     }
@@ -179,20 +182,20 @@ const submitsystemForm = () => {
 /* 修改状态 */
 const switchEnableStatus = (event, row) => {
   API_Template.editStatus(row.id).then((res) => {
-    ElMessage.success('状态修改成功!');
+    ElMessage.success(t('template_type_success')+'!');
     GET_systemList();
   });
 };
 /* 查看模版 */
 const handleView = (row) => {
-  templateTitle.value = '查看模版';
+  templateTitle.value = t('template_view');
   systemForm.value = { ...row };
   disabled.value = true;
   systemVisible.value = true;
 };
 /* 编辑模版 */
 const handleEditRole = (row: any) => {
-  templateTitle.value = '编辑模版';
+  templateTitle.value = t('template_edit');
   disabled.value = false;
   systemForm.value = { ...row };
   systemForm.value.type = 'SYSTEM';
@@ -200,10 +203,10 @@ const handleEditRole = (row: any) => {
 };
 /* 删除模版 */
 const handleDeleteRole = (row: any) => {
-  ElMessageBox.confirm('确定要删除这个模版吗?', '提示', { type: 'warning' })
+  ElMessageBox.confirm(t('del_info'), t('prompt'), { type: 'warning' })
     .then(() => {
       API_Template.delTemplate(row.id).then(() => {
-        ElMessage.success('删除成功!');
+        ElMessage.success(t('del_success'));
         GET_systemList();
       });
     })