From 91f42f766a65a63c9de65fe4c17bf232aa063d1b Mon Sep 17 00:00:00 2001 From: hx <190679152@qq.com> Date: Mon, 23 Mar 2026 16:54:46 +0800 Subject: [PATCH] =?UTF-8?q?b=E7=AB=AF=E5=9B=BD=E9=99=85=E5=8C=96=20?= =?UTF-8?q?=E9=A6=96=E9=A1=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/api/device/device.js | 15 + src/components/device/TrajectoryDialog.vue | 24 +- src/lang/app-messages.js | 4 +- src/lang/dashboard-messages.js | 194 +++++ src/lang/device-flow-messages.js | 104 +-- src/lang/device-messages.js | 273 +++---- src/lang/index.js | 10 +- src/lang/system-messages.js | 4 +- src/layout/components/Sidebar/Logo.vue | 4 +- src/views/dashboard/index.vue | 706 +++++++++++++++++++ src/views/device/device/index.vue | 24 +- src/views/device/device/trajectory/index.vue | 472 +++++++++++++ 12 files changed, 1627 insertions(+), 207 deletions(-) create mode 100644 src/lang/dashboard-messages.js create mode 100644 src/views/dashboard/index.vue create mode 100644 src/views/device/device/trajectory/index.vue diff --git a/src/api/device/device.js b/src/api/device/device.js index 25f6f80..bf9aed6 100644 --- a/src/api/device/device.js +++ b/src/api/device/device.js @@ -23,6 +23,14 @@ export function getDeviceTrajectory(id, params) { }) } +export function listTrajectoryDevices(query) { + return request({ + url: '/device/device/trajectory/devices', + method: 'get', + params: query + }) +} + export function getDeviceTrajectoryMapConfig() { return request({ url: '/device/device/trajectory/map-config', @@ -30,6 +38,13 @@ export function getDeviceTrajectoryMapConfig() { }) } +export function getDashboardOverview() { + return request({ + url: '/device/device/dashboard/overview', + method: 'get' + }) +} + export function addDevice(data) { return request({ url: '/device/device', diff --git a/src/components/device/TrajectoryDialog.vue b/src/components/device/TrajectoryDialog.vue index 07be56d..7f74e23 100644 --- a/src/components/device/TrajectoryDialog.vue +++ b/src/components/device/TrajectoryDialog.vue @@ -54,15 +54,17 @@
{{ $t("device.trajectory.provider.label") }} - - {{ $t("device.trajectory.provider.maptiler") }} + + {{ $t("device.trajectory.provider.google") }} - + {{ $t("device.trajectory.provider.amap") }} - - {{ $t("device.trajectory.provider.google") }} + + {{ $t("device.trajectory.provider.maptiler") }} + +
@@ -238,15 +240,17 @@ export default { await this.renderCurrentProviderMap(); }, resolveDefaultProvider() { - if (this.hasMaptilerKey) { - return "maptiler"; + if (this.hasGoogleKey) { + return "google"; } - if (this.hasAmapKey) { + if (this.hasAmapKey) { return "amap"; } - if (this.hasGoogleKey) { - return "google"; + + if (this.hasMaptilerKey) { + return "maptiler"; } + return "amap"; }, diff --git a/src/lang/app-messages.js b/src/lang/app-messages.js index d6a683e..e760608 100644 --- a/src/lang/app-messages.js +++ b/src/lang/app-messages.js @@ -1,9 +1,9 @@ const appMessages = { "zh-CN": { app: { - sidebarTitle: "\u5ba2\u6237 GeoTag\u7ba1\u7406\u7cfb\u7edf", + sidebarTitle: "客户 GeoTag管理系统", headerSearch: { - placeholder: "\u83dc\u5355\u641c\u7d22\uff0c\u652f\u6301\u6807\u9898\u3001URL\u6a21\u7cca\u67e5\u8be2", + placeholder: "菜单搜索,支持标题、URL模糊查询", }, }, }, diff --git a/src/lang/dashboard-messages.js b/src/lang/dashboard-messages.js new file mode 100644 index 0000000..063afc4 --- /dev/null +++ b/src/lang/dashboard-messages.js @@ -0,0 +1,194 @@ +const dashboardMessages = { + "zh-CN": { + dashboard: { + overview: { + stats: { + total: "设备总数", + enabled: "启用数", + disabled: "禁用数", + claimed: "已认领数", + unclaimed: "未认领数", + }, + map: { + title: "设备轨迹点", + serviceLabel: "地图服务", + empty: "暂无设备坐标数据", + }, + provider: { + maptiler: "MapTiler", + amap: "高德地图", + google: "谷歌地图", + }, + popup: { + device: "设备", + time: "时间", + remark: "备注", + coordinates: "坐标", + }, + message: { + mapConfigLoadFailed: "地图配置加载失败", + dataLoadFailed: "设备概览数据加载失败", + mapLoadFailed: "地图加载失败", + amapLoadFailed: "高德地图加载失败", + missingMaptilerKey: "当前企业未配置 MapTiler Key", + missingGoogleKey: "当前企业未配置谷歌地图 Key", + missingAmapKey: "当前企业未配置高德地图 Key", + }, + }, + }, + }, + "en-US": { + dashboard: { + overview: { + stats: { + total: "Total Devices", + enabled: "Enabled", + disabled: "Disabled", + claimed: "Claimed", + unclaimed: "Unclaimed", + }, + map: { + title: "Device Track Points", + serviceLabel: "Map Service", + empty: "No device coordinate data", + }, + provider: { + maptiler: "MapTiler", + amap: "Amap", + google: "Google Maps", + }, + popup: { + device: "Device", + time: "Time", + remark: "Remark", + coordinates: "Coordinates", + }, + message: { + mapConfigLoadFailed: "Failed to load map configuration", + dataLoadFailed: "Failed to load dashboard overview data", + mapLoadFailed: "Failed to load map", + amapLoadFailed: "Failed to load Amap", + missingMaptilerKey: "MapTiler key is not configured for this business", + missingGoogleKey: "Google Maps key is not configured for this business", + missingAmapKey: "Amap key is not configured for this business", + }, + }, + }, + }, + "fr-FR": { + dashboard: { + overview: { + stats: { + total: "Total appareils", + enabled: "Actifs", + disabled: "Desactives", + claimed: "Reclames", + unclaimed: "Non reclames", + }, + map: { + title: "Points de trajectoire", + serviceLabel: "Service de carte", + empty: "Aucune coordonnee appareil", + }, + provider: { + maptiler: "MapTiler", + amap: "Amap", + google: "Google Maps", + }, + popup: { + device: "Appareil", + time: "Heure", + remark: "Remarque", + coordinates: "Coordonnees", + }, + message: { + mapConfigLoadFailed: "Echec du chargement de la configuration de carte", + dataLoadFailed: "Echec du chargement des donnees d'apercu", + mapLoadFailed: "Echec du chargement de la carte", + amapLoadFailed: "Echec du chargement d'Amap", + missingMaptilerKey: "La cle MapTiler n'est pas configuree", + missingGoogleKey: "La cle Google Maps n'est pas configuree", + missingAmapKey: "La cle Amap n'est pas configuree", + }, + }, + }, + }, + "es-ES": { + dashboard: { + overview: { + stats: { + total: "Total de dispositivos", + enabled: "Habilitados", + disabled: "Deshabilitados", + claimed: "Reclamados", + unclaimed: "No reclamados", + }, + map: { + title: "Puntos de trayectoria", + serviceLabel: "Servicio de mapa", + empty: "No hay coordenadas de dispositivos", + }, + provider: { + maptiler: "MapTiler", + amap: "Amap", + google: "Google Maps", + }, + popup: { + device: "Dispositivo", + time: "Hora", + remark: "Observacion", + coordinates: "Coordenadas", + }, + message: { + mapConfigLoadFailed: "No se pudo cargar la configuracion del mapa", + dataLoadFailed: "No se pudo cargar el resumen del panel", + mapLoadFailed: "No se pudo cargar el mapa", + amapLoadFailed: "No se pudo cargar Amap", + missingMaptilerKey: "MapTiler key no esta configurada", + missingGoogleKey: "Google Maps key no esta configurada", + missingAmapKey: "Amap key no esta configurada", + }, + }, + }, + }, + "pt-BR": { + dashboard: { + overview: { + stats: { + total: "Total de dispositivos", + enabled: "Ativos", + disabled: "Desativados", + claimed: "Reivindicados", + unclaimed: "Nao reivindicados", + }, + map: { + title: "Pontos de trajeto", + serviceLabel: "Servico de mapa", + empty: "Sem dados de coordenadas de dispositivo", + }, + provider: { + maptiler: "MapTiler", + amap: "Amap", + google: "Google Maps", + }, + popup: { + device: "Dispositivo", + time: "Hora", + remark: "Observacao", + coordinates: "Coordenadas", + }, + message: { + mapConfigLoadFailed: "Falha ao carregar configuracao do mapa", + dataLoadFailed: "Falha ao carregar dados de visao geral", + mapLoadFailed: "Falha ao carregar mapa", + amapLoadFailed: "Falha ao carregar Amap", + missingMaptilerKey: "MapTiler key nao configurada", + missingGoogleKey: "Google Maps key nao configurada", + missingAmapKey: "Amap key nao configurada", + }, + }, + }, + }, +}; + +export default dashboardMessages; diff --git a/src/lang/device-flow-messages.js b/src/lang/device-flow-messages.js index 7901659..aee2e27 100644 --- a/src/lang/device-flow-messages.js +++ b/src/lang/device-flow-messages.js @@ -2,88 +2,88 @@ const deviceFlowMessages = { "zh-CN": { device: { table: { - mac: "\u8bbe\u5907MAC", + mac: "设备MAC", }, dialog: { detail: { - id: "\u8bbe\u5907ID", + id: "设备ID", }, }, claim: { - dialogTitle: "\u8ba4\u9886\u8bbe\u5907", + dialogTitle: "认领设备", query: { - orderCode: "\u8ba2\u5355\u53f7", + orderCode: "订单号", }, placeholder: { - orderCode: "\u8bf7\u8f93\u5165\u8ba2\u5355\u53f7", + orderCode: "请输入订单号", }, - tip: "\u8bf7\u6839\u636e\u8ba2\u5355\u53f7\u67e5\u627e\u8bbe\u5907\u5e76\u9009\u62e9\u9700\u8981\u8ba4\u9886\u7684\u8bbe\u5907", - empty: "\u6682\u65e0\u5339\u914d\u7684\u8bbe\u5907\u6570\u636e", - selectedCount: "\u5df2\u9009\u62e9\u8bbe\u5907\uff1a{count} \u53f0", - confirmButton: "\u786e\u8ba4\u8ba4\u9886", - detailTitle: "\u8bbe\u5907\u8be6\u60c5", + tip: "请根据订单号查找设备并选择需要认领的设备", + empty: "暂无匹配的设备数据", + selectedCount: "已选择设备:{count} 台", + confirmButton: "确认认领", + detailTitle: "设备详情", detail: { - batchNo: "\u6279\u6b21\u53f7", + batchNo: "批次号", }, message: { - enterOrderCode: "\u8bf7\u5148\u8f93\u5165\u8ba2\u5355\u53f7", - queryFirst: "\u8bf7\u5148\u6839\u636e\u8ba2\u5355\u53f7\u67e5\u8be2\u8bbe\u5907", - selectAtLeastOne: "\u8bf7\u81f3\u5c11\u9009\u62e9\u4e00\u53f0\u8bbe\u5907", - confirmClaim: "\u786e\u8ba4\u8ba4\u9886\u5df2\u9009\u4e2d\u7684 {count} \u53f0\u8bbe\u5907\u5417\uff1f", - claimSuccess: "\u8ba4\u9886\u6210\u529f", + enterOrderCode: "请先输入订单号", + queryFirst: "请先根据订单号查询设备", + selectAtLeastOne: "请至少选择一台设备", + confirmClaim: "确认认领已选中的 {count} 台设备吗?", + claimSuccess: "认领成功", }, }, trajectory: { - dialogTitle: "\u8bbe\u5907\u8f68\u8ff9", - dialogTitleWithSn: "\u8bbe\u5907\u8f68\u8ff9 - {sn}", + dialogTitle: "设备轨迹", + dialogTitleWithSn: "设备轨迹 - {sn}", summary: { - id: "\u8bbe\u5907ID", - sn: "\u5e8f\u5217\u53f7", - alias: "\u540d\u79f0", - remark: "\u8bbe\u5907\u5907\u6ce8", - pointCount: "\u5df2\u5c55\u793a\u8f68\u8ff9\u70b9", - totalLimit: "\u5171 {total} \u6761\uff0c\u5f53\u524d\u4ec5\u5c55\u793a\u6700\u8fd1 {count} \u6761", + id: "设备ID", + sn: "序列号", + alias: "名称", + remark: "设备备注", + pointCount: "已展示轨迹点", + totalLimit: "共 {total} 条,当前仅展示最近 {count} 条", }, filter: { - locationTime: "\u4f4d\u7f6e\u65f6\u95f4", - startPlaceholder: "\u5f00\u59cb\u65f6\u95f4", - endPlaceholder: "\u7ed3\u675f\u65f6\u95f4", + locationTime: "位置时间", + startPlaceholder: "开始时间", + endPlaceholder: "结束时间", }, tabs: { - map: "\u5730\u56fe\u8f68\u8ff9", - table: "\u8f68\u8ff9\u660e\u7ec6", + map: "地图轨迹", + table: "轨迹明细", }, provider: { - label: "\u5730\u56fe\u670d\u52a1", + label: "地图服务", maptiler: "MapTiler", - amap: "\u9ad8\u5fb7\u5730\u56fe", - google: "\u8c37\u6b4c\u5730\u56fe", + amap: "高德地图", + google: "谷歌地图", }, - empty: "\u6682\u65e0\u8f68\u8ff9\u6570\u636e", + empty: "暂无轨迹数据", table: { - time: "\u4f4d\u7f6e\u65f6\u95f4", - coordinates: "\u7ecf\u7eac\u5ea6", - address: "\u5730\u5740", - battery: "\u7535\u91cf", + time: "位置时间", + coordinates: "经纬度", + address: "地址", + battery: "电量", }, marker: { - startShort: "\u8d77", - endShort: "\u7ec8", + startShort: "起", + endShort: "终", }, message: { - missingDevice: "\u672a\u83b7\u53d6\u5230\u8bbe\u5907\u4fe1\u606f\uff0c\u65e0\u6cd5\u67e5\u770b\u8f68\u8ff9", - missingMapKey: "\u5f53\u524d\u4f01\u4e1a\u672a\u914d\u7f6e\u5730\u56fe Key", - mapConfigLoadFailed: "\u5730\u56fe\u914d\u7f6e\u52a0\u8f7d\u5931\u8d25", - trajectoryLoadFailed: "\u8f68\u8ff9\u52a0\u8f7d\u5931\u8d25", - missingAmapKey: "\u5f53\u524d\u4f01\u4e1a\u672a\u914d\u7f6e\u9ad8\u5fb7\u5730\u56fe Key", - amapLoadFailed: "\u9ad8\u5fb7\u5730\u56fe\u52a0\u8f7d\u5931\u8d25", - missingGoogleKey: "\u5f53\u524d\u4f01\u4e1a\u672a\u914d\u7f6e\u8c37\u6b4c\u5730\u56fe Key", - googleLoadFailed: "\u8c37\u6b4c\u5730\u56fe\u52a0\u8f7d\u5931\u8d25", - missingMaptilerKey: "\u5f53\u524d\u4f01\u4e1a\u672a\u914d\u7f6e MapTiler Key", - maptilerLoadFailed: "MapTiler \u5730\u56fe\u52a0\u8f7d\u5931\u8d25", - amapConvertFailed: "\u9ad8\u5fb7\u5750\u6807\u8f6c\u6362\u5931\u8d25", - startTime: "\u5f00\u59cb\u65f6\u95f4", - endTime: "\u7ed3\u675f\u65f6\u95f4", + missingDevice: "未获取到设备信息,无法查看轨迹", + missingMapKey: "当前企业未配置地图 Key", + mapConfigLoadFailed: "地图配置加载失败", + trajectoryLoadFailed: "轨迹加载失败", + missingAmapKey: "当前企业未配置高德地图 Key", + amapLoadFailed: "高德地图加载失败", + missingGoogleKey: "当前企业未配置谷歌地图 Key", + googleLoadFailed: "谷歌地图加载失败", + missingMaptilerKey: "当前企业未配置 MapTiler Key", + maptilerLoadFailed: "MapTiler 地图加载失败", + amapConvertFailed: "高德坐标转换失败", + startTime: "开始时间", + endTime: "结束时间", }, }, }, diff --git a/src/lang/device-messages.js b/src/lang/device-messages.js index 500c6db..d0736fc 100644 --- a/src/lang/device-messages.js +++ b/src/lang/device-messages.js @@ -1,176 +1,177 @@ const deviceZh = { query: { - orderCode: "\u8ba2\u5355\u53f7", - model: "\u578b\u53f7", - sn: "\u5e8f\u5217\u53f7", - alias: "\u540d\u79f0", - lastAddress: "\u5730\u5740", - remark: "\u8bbe\u5907\u5907\u6ce8", - activationStatus: "\u662f\u5426\u542f\u7528", + orderCode: "订单号", + model: "型号", + sn: "序列号", + alias: "名称", + lastAddress: "地址", + remark: "设备备注", + activationStatus: "是否启用", }, placeholder: { - orderCode: "\u8bf7\u8f93\u5165\u8ba2\u5355\u53f7", - model: "\u8bf7\u8f93\u5165\u578b\u53f7", - sn: "\u8bf7\u8f93\u5165\u5e8f\u5217\u53f7", - alias: "\u8bf7\u8f93\u5165\u540d\u79f0", - lastAddress: "\u8bf7\u8f93\u5165\u5730\u5740", - remark: "\u8bf7\u8f93\u5165\u8bbe\u5907\u5907\u6ce8", - activationStatus: "\u8bf7\u9009\u62e9\u542f\u7528\u72b6\u6001", - macAddress: "\u8bf7\u8f93\u5165MAC\u5730\u5740", - privateKey: "\u8bf7\u8f93\u5165\u79c1\u94a5", - batchNo: "\u8bf7\u8f93\u5165\u6240\u5c5e\u6279\u6b21", - hashId: "\u8bf7\u8f93\u5165\u8bbe\u5907\u552f\u4e00\u54c8\u5e0c ID", - bindBusinessId: "\u8bf7\u8f93\u5165\u7ed1\u5b9a\u4f01\u4e1aID", - remarkSimple: "\u8bf7\u8f93\u5165\u5907\u6ce8", - locateUpdateTime: "\u9009\u62e9\u6700\u540e\u4f4d\u7f6e\u66f4\u65b0\u65f6\u95f4", - lastLat: "\u8bf7\u8f93\u5165\u6700\u540e\u7eac\u5ea6", - lastLng: "\u8bf7\u8f93\u5165\u6700\u540e\u7ecf\u5ea6", - battery: "\u8bf7\u8f93\u5165\u7535\u91cf", - lastReportedTime: "\u9009\u62e9\u6700\u540e\u4e0a\u62a5\u65f6\u95f4", - lastLocationTime: "\u9009\u62e9\u6700\u540e\u4f4d\u7f6e\u65f6\u95f4", - createTime: "\u9009\u62e9\u521b\u5efa\u65f6\u95f4", + orderCode: "请输入订单号", + model: "请输入型号", + sn: "请输入序列号", + alias: "请输入名称", + lastAddress: "请输入地址", + remark: "请输入设备备注", + activationStatus: "请选择启用状态", + macAddress: "请输入MAC地址", + privateKey: "请输入私钥", + batchNo: "请输入所属批次", + hashId: "请输入设备唯一哈希 ID", + bindBusinessId: "请输入绑定企业ID", + remarkSimple: "请输入备注", + locateUpdateTime: "选择最后位置更新时间", + lastLat: "请输入最后纬度", + lastLng: "请输入最后经度", + battery: "请输入电量", + lastReportedTime: "选择最后上报时间", + lastLocationTime: "选择最后位置时间", + createTime: "选择创建时间", }, status: { - enabled: "\u542f\u7528", - disabled: "\u7981\u7528", + all: "全部", + enabled: "启用", + disabled: "禁用", }, button: { - import: "\u5bfc\u5165", - claim: "\u8ba4\u9886\u8bbe\u5907", - batchEnable: "\u6279\u91cf\u542f\u7528", - batchDisable: "\u6279\u91cf\u7981\u7528", - assign: "\u5206\u914d\u8bbe\u5907", - export: "\u5bfc\u51fa", - detail: "\u8be6\u60c5", - trajectory: "\u8f68\u8ff9", - close: "\u5173\u95ed", + import: "导入", + claim: "认领设备", + batchEnable: "批量启用", + batchDisable: "批量禁用", + assign: "分配设备", + export: "导出", + detail: "详情", + trajectory: "轨迹", + close: "关闭", }, table: { - orderCode: "\u8ba2\u5355\u53f7", - deviceStatus: "\u8bbe\u5907\u72b6\u6001", - model: "\u578b\u53f7", - sn: "\u5e8f\u5217\u53f7", - alias: "\u540d\u79f0", - lastAddress: "\u5730\u5740", - updateTime: "\u66f4\u65b0\u65f6\u95f4", - coordinates: "\u7ecf\u7eac\u5ea6", - remark: "\u5907\u6ce8", - actions: "\u64cd\u4f5c", + orderCode: "订单号", + deviceStatus: "设备状态", + model: "型号", + sn: "序列号", + alias: "名称", + lastAddress: "地址", + updateTime: "更新时间", + coordinates: "经纬度", + remark: "备注", + actions: "操作", }, dialog: { import: { - title: "\u8bbe\u5907Excel\u5bfc\u5165", - fileLabel: "Excel\u6587\u4ef6", - dragText: "\u5c06Excel\u6587\u4ef6\u62d6\u5230\u6b64\u5904\uff0c\u6216", - clickUpload: "\u70b9\u51fb\u4e0a\u4f20", - tip: "\u4ec5\u652f\u6301 .xlsx / .xls \u683c\u5f0f\u6587\u4ef6\uff0c\u4e14\u53ea\u80fd\u4e0a\u4f201\u4e2a\u6587\u4ef6", - templateTitle: "\u5bfc\u5165\u6a21\u677f", - templateDesc: "\u8bf7\u5148\u4e0b\u8f7d\u6a21\u677f\uff0c\u6309\u6a21\u677f\u683c\u5f0f\u586b\u5199\u8bbe\u5907\u5e8f\u5217\u53f7\u540e\u518d\u5bfc\u5165", - downloadTemplate: "\u4e0b\u8f7d\u6a21\u677f", - fieldExample: "\u6a21\u677f\u5b57\u6bb5\uff1aserial_number", - sampleExample: "\u793a\u4f8b\u503c\uff1aSAMPLE_SN_001", + title: "设备Excel导入", + fileLabel: "Excel文件", + dragText: "将Excel文件拖到此处,或", + clickUpload: "点击上传", + tip: "仅支持 .xlsx / .xls 格式文件,且只能上传1个文件", + templateTitle: "导入模板", + templateDesc: "请先下载模板,按模板格式填写设备序列号后再导入", + downloadTemplate: "下载模板", + fieldExample: "模板字段:serial_number", + sampleExample: "示例值:SAMPLE_SN_001", }, importResult: { - title: "\u5bfc\u5165\u7ed3\u679c", - status: "\u72b6\u6001", - total: "\u603b\u6570", - successCount: "\u6210\u529f\u6570", - failCount: "\u5931\u8d25\u6570", - startTime: "\u5f00\u59cb\u65f6\u95f4", - finishTime: "\u7ed3\u675f\u65f6\u95f4", - requestErrors: "\u8bf7\u6c42\u9519\u8bef", - failDetails: "\u5931\u8d25\u660e\u7ec6", - rowIndex: "\u884c\u53f7", - errorMessage: "\u9519\u8bef\u4fe1\u606f", + title: "导入结果", + status: "状态", + total: "总数", + successCount: "成功数", + failCount: "失败数", + startTime: "开始时间", + finishTime: "结束时间", + requestErrors: "请求错误", + failDetails: "失败明细", + rowIndex: "行号", + errorMessage: "错误信息", }, assign: { - title: "\u5206\u914d\u8bbe\u5907", - selectedUsers: "\u5df2\u9009\u62e9\u5458\u5de5\uff1a{count} \u4eba", + title: "分配设备", + selectedUsers: "已选择员工:{count} 人", }, detail: { - title: "\u8bbe\u5907\u8be6\u60c5", - macAddress: "MAC\u5730\u5740", - business: "\u4f01\u4e1a", - lastAddressName: "\u6700\u540e\u5730\u5740\u540d\u79f0", - assignedUsers: "\u5206\u914d\u5458\u5de5", - locateUpdateTime: "\u6700\u540e\u4f4d\u7f6e\u66f4\u65b0\u65f6\u95f4", - lastCoordinates: "\u6700\u540e\u7ecf\u7eac\u5ea6", - battery: "\u7535\u91cf", - lastReportedTime: "\u6700\u540e\u4e0a\u62a5\u65f6\u95f4", - lastLocationTime: "\u6700\u540e\u4f4d\u7f6e\u65f6\u95f4", + title: "设备详情", + macAddress: "MAC地址", + business: "企业", + lastAddressName: "最后地址名称", + assignedUsers: "分配员工", + locateUpdateTime: "最后位置更新时间", + lastCoordinates: "最后经纬度", + battery: "电量", + lastReportedTime: "最后上报时间", + lastLocationTime: "最后位置时间", }, editInfo: { - title: "\u4fee\u6539\u8bbe\u5907\u4fe1\u606f", + title: "修改设备信息", }, form: { - addTitle: "\u6dfb\u52a0\u7cfb\u7edf\u8bbe\u5907", - editTitle: "\u4fee\u6539\u7cfb\u7edf\u8bbe\u5907", + addTitle: "添加系统设备", + editTitle: "修改系统设备", }, }, form: { - privateKey: "\u79c1\u94a5", - batchNo: "\u6240\u5c5e\u6279\u6b21", - hashId: "\u8bbe\u5907\u7684\u552f\u4e00\u54c8\u5e0c ID", - bindBusinessId: "\u7ed1\u5b9a\u4f01\u4e1aID", - locateUpdateTime: "\u6700\u540e\u4f4d\u7f6e\u66f4\u65b0\u65f6\u95f4", - lastLat: "\u6700\u540e\u7eac\u5ea6", - lastLng: "\u6700\u540e\u7ecf\u5ea6", + privateKey: "私钥", + batchNo: "所属批次", + hashId: "设备的唯一哈希 ID", + bindBusinessId: "绑定企业ID", + locateUpdateTime: "最后位置更新时间", + lastLat: "最后纬度", + lastLng: "最后经度", }, validation: { - aliasMax: "\u540d\u79f0\u957f\u5ea6\u4e0d\u80fd\u8d85\u8fc764\u4e2a\u5b57\u7b26", - remarkMax: "\u8bbe\u5907\u5907\u6ce8\u957f\u5ea6\u4e0d\u80fd\u8d85\u8fc7255\u4e2a\u5b57\u7b26", - fileRequired: "\u8bf7\u9009\u62e9\u8981\u4e0a\u4f20\u7684Excel\u6587\u4ef6", - snRequired: "\u5e8f\u5217\u53f7\u4e0d\u80fd\u4e3a\u7a7a", - macRequired: "MAC\u5730\u5740\u4e0d\u80fd\u4e3a\u7a7a", - orderCodeRequired: "\u8ba2\u5355\u53f7\u4e0d\u80fd\u4e3a\u7a7a", - privateKeyRequired: "\u79c1\u94a5\u4e0d\u80fd\u4e3a\u7a7a", - batchNoRequired: "\u6240\u5c5e\u6279\u6b21\u4e0d\u80fd\u4e3a\u7a7a", - hashIdRequired: "\u8bbe\u5907\u7684\u552f\u4e00\u54c8\u5e0c ID\u4e0d\u80fd\u4e3a\u7a7a", - remarkRequired: "\u5907\u6ce8\u4e0d\u80fd\u4e3a\u7a7a", + aliasMax: "名称长度不能超过64个字符", + remarkMax: "设备备注长度不能超过255个字符", + fileRequired: "请选择要上传的Excel文件", + snRequired: "序列号不能为空", + macRequired: "MAC地址不能为空", + orderCodeRequired: "订单号不能为空", + privateKeyRequired: "私钥不能为空", + batchNoRequired: "所属批次不能为空", + hashIdRequired: "设备的唯一哈希 ID不能为空", + remarkRequired: "备注不能为空", }, importStatus: { - SUCCESS: "\u5bfc\u5165\u6210\u529f", - PARTIAL_SUCCESS: "\u90e8\u5206\u6210\u529f", - FAILED: "\u5bfc\u5165\u5931\u8d25", - REQUEST_INVALID: "\u8bf7\u6c42\u6821\u9a8c\u5931\u8d25", - UNKNOWN: "\u672a\u77e5\u72b6\u6001", + SUCCESS: "导入成功", + PARTIAL_SUCCESS: "部分成功", + FAILED: "导入失败", + REQUEST_INVALID: "请求校验失败", + UNKNOWN: "未知状态", }, message: { - selectDeviceForAssign: "\u8bf7\u5148\u52fe\u9009\u9700\u8981\u5206\u914d\u7684\u8bbe\u5907", - selectUserForAssign: "\u8bf7\u9009\u62e9\u5458\u5de5\u8d26\u6237", - invalidUserSelection: "\u672a\u83b7\u53d6\u5230\u6709\u6548\u7684\u5458\u5de5\u8d26\u53f7", + selectDeviceForAssign: "请先勾选需要分配的设备", + selectUserForAssign: "请选择员工账户", + invalidUserSelection: "未获取到有效的员工账号", confirmAssign: - "\u786e\u8ba4\u5c06\u9009\u4e2d\u7684 {deviceCount} \u53f0\u8bbe\u5907\u5206\u914d\u7ed9 {userCount} \u540d\u5458\u5de5\u5417\uff1f", - assignSuccess: "\u5206\u914d\u6210\u529f", - selectDeviceForEnable: "\u8bf7\u5148\u52fe\u9009\u9700\u8981\u542f\u7528\u7684\u8bbe\u5907", - confirmBatchEnable: "\u786e\u8ba4\u542f\u7528\u9009\u4e2d\u7684 {count} \u53f0\u8bbe\u5907\u5417\uff1f", - batchEnableSuccess: "\u6279\u91cf\u542f\u7528\u6210\u529f", - selectDeviceForDisable: "\u8bf7\u5148\u52fe\u9009\u9700\u8981\u7981\u7528\u7684\u8bbe\u5907", - confirmBatchDisable: "\u786e\u8ba4\u7981\u7528\u9009\u4e2d\u7684 {count} \u53f0\u8bbe\u5907\u5417\uff1f", - batchDisableSuccess: "\u6279\u91cf\u7981\u7528\u6210\u529f", - deviceInfoMissing: "\u672a\u83b7\u53d6\u5230\u8bbe\u5907\u4fe1\u606f", - updateSuccess: "\u4fee\u6539\u6210\u529f", - addSuccess: "\u65b0\u589e\u6210\u529f", - warning: "\u8b66\u544a", + "确认将选中的 {deviceCount} 台设备分配给 {userCount} 名员工吗?", + assignSuccess: "分配成功", + selectDeviceForEnable: "请先勾选需要启用的设备", + confirmBatchEnable: "确认启用选中的 {count} 台设备吗?", + batchEnableSuccess: "批量启用成功", + selectDeviceForDisable: "请先勾选需要禁用的设备", + confirmBatchDisable: "确认禁用选中的 {count} 台设备吗?", + batchDisableSuccess: "批量禁用成功", + deviceInfoMissing: "未获取到设备信息", + updateSuccess: "修改成功", + addSuccess: "新增成功", + warning: "警告", confirmDelete: - "\u662f\u5426\u786e\u8ba4\u5220\u9664\u7cfb\u7edf\u8bbe\u5907\u4e3b\u7f16\u53f7\u4e3a\"{ids}\"\u7684\u6570\u636e\u9879?", - deleteSuccess: "\u5220\u9664\u6210\u529f", - confirmExport: "\u662f\u5426\u786e\u8ba4\u5bfc\u51fa\u6240\u6709\u7cfb\u7edf\u8bbe\u5907\u4e3b\u6570\u636e\u9879?", - fetchBatchNoFailed: "\u83b7\u53d6\u6279\u6b21\u53f7\u5931\u8d25\uff1a", - apiException: "\u63a5\u53e3\u5f02\u5e38", + "是否确认删除系统设备主编号为\"{ids}\"的数据项?", + deleteSuccess: "删除成功", + confirmExport: "是否确认导出所有系统设备主数据项?", + fetchBatchNoFailed: "获取批次号失败:", + apiException: "接口异常", exceedFileLimit: - "\u6700\u591a\u53ea\u80fd\u4e0a\u4f201\u4e2aExcel\u6587\u4ef6\uff0c\u5f53\u524d\u5df2\u9009\u62e9 {count} \u4e2a", + "最多只能上传1个Excel文件,当前已选择 {count} 个", invalidFileType: - "\u53ea\u80fd\u4e0a\u4f20 .xlsx \u6216 .xls \u683c\u5f0f\u7684Excel\u6587\u4ef6\uff01", + "只能上传 .xlsx 或 .xls 格式的Excel文件!", selectOneExcel: - "\u8bf7\u9009\u62e9\u8981\u4e0a\u4f20\u7684Excel\u6587\u4ef6\uff08\u4ec5\u652f\u63011\u4e2a\u6587\u4ef6\uff09\uff01", + "请选择要上传的Excel文件(仅支持1个文件)!", removeExtraFiles: - "\u6700\u591a\u53ea\u80fd\u4e0a\u4f201\u4e2aExcel\u6587\u4ef6\uff0c\u8bf7\u5220\u9664\u591a\u4f59\u6587\u4ef6\uff01", - importSuccess: "\u5bfc\u5165\u6210\u529f\uff01", - importFailed: "\u5bfc\u5165\u5931\u8d25\uff1a", - serverException: "\u670d\u52a1\u5668\u5f02\u5e38", + "最多只能上传1个Excel文件,请删除多余文件!", + importSuccess: "导入成功!", + importFailed: "导入失败:", + serverException: "服务器异常", importStatusSummary: - "{status}\uff0c\u6210\u529f {successCount} \u6761\uff0c\u5931\u8d25 {failCount} \u6761", + "{status},成功 {successCount} 条,失败 {failCount} 条", }, }; @@ -207,6 +208,7 @@ const deviceEn = { createTime: "Select create time", }, status: { + all: "All", enabled: "Enabled", disabled: "Disabled", }, @@ -376,6 +378,7 @@ const deviceFr = { createTime: "Selectionner l'heure de creation", }, status: { + all: "Tous", enabled: "Active", disabled: "Desactive", }, @@ -545,6 +548,7 @@ const deviceEs = { createTime: "Seleccione hora de creacion", }, status: { + all: "Todos", enabled: "Habilitado", disabled: "Deshabilitado", }, @@ -714,6 +718,7 @@ const devicePt = { createTime: "Selecione a hora de criacao", }, status: { + all: "Todos", enabled: "Ativado", disabled: "Desativado", }, diff --git a/src/lang/index.js b/src/lang/index.js index 134132b..c92dc3f 100644 --- a/src/lang/index.js +++ b/src/lang/index.js @@ -2,6 +2,7 @@ import messages from "./messages"; import deviceMessages from "./device-messages"; import deviceFlowMessages from "./device-flow-messages"; import appMessages from "./app-messages"; +import dashboardMessages from "./dashboard-messages"; import systemMessages from "./system-messages"; import systemUserDeviceMessages from "./system-user-device-messages"; import profileMessages from "./profile-messages"; @@ -52,6 +53,11 @@ const mergedMessages = mergeLocaleMessages( profileMessages ); +const mergedMessagesWithDashboard = mergeLocaleMessages( + mergedMessages, + dashboardMessages +); + function getByPath(obj, path) { if (!obj || !path) { return undefined; @@ -73,8 +79,8 @@ function formatTemplate(text, params = {}) { export function t(key, params = {}) { const currentLanguage = getLanguage() || DEFAULT_LANGUAGE; - const currentMessages = mergedMessages[currentLanguage] || {}; - const defaultMessages = mergedMessages[DEFAULT_LANGUAGE] || {}; + const currentMessages = mergedMessagesWithDashboard[currentLanguage] || {}; + const defaultMessages = mergedMessagesWithDashboard[DEFAULT_LANGUAGE] || {}; const fromCurrent = getByPath(currentMessages, key); if (fromCurrent !== undefined) { diff --git a/src/lang/system-messages.js b/src/lang/system-messages.js index ff64984..9571a0a 100644 --- a/src/lang/system-messages.js +++ b/src/lang/system-messages.js @@ -1,5 +1,5 @@ -const systemMessages={ -"zh-CN":{systemUser:{query:{account:"\u7528\u6237\u540d\u79f0",nickName:"\u6635\u79f0",status:"\u72b6\u6001"},placeholder:{account:"\u8bf7\u8f93\u5165\u7528\u6237\u540d\u79f0",nickName:"\u8bf7\u8f93\u5165\u6635\u79f0",status:"\u7528\u6237\u72b6\u6001",password:"\u8bf7\u8f93\u5165\u7528\u6237\u5bc6\u7801",userNickName:"\u8bf7\u8f93\u5165\u7528\u6237\u6635\u79f0",remark:"\u8bf7\u8f93\u5165\u5185\u5bb9",loginAccount:"\u8bf7\u8f93\u5165\u767b\u5f55\u8d26\u6237",employeePassword:"\u8bf7\u8f93\u5165\u5bc6\u7801",roleAll:"\u8bf7\u9009\u62e9\u89d2\u8272\uff08\u5168\u90e8\u89d2\u8272\uff09",role:"\u8bf7\u9009\u62e9\u89d2\u8272"},status:{enabled:"\u542f\u7528",disabled:"\u7981\u7528"},button:{addEmployee:"\u65b0\u589e\u5458\u5de5",export:"\u5bfc\u51fa",resetPassword:"\u91cd\u7f6e"},table:{id:"\u7528\u6237ID",account:"\u7528\u6237\u540d\u79f0",nickName:"\u7528\u6237\u6635\u79f0",dept:"\u90e8\u95e8",phone:"\u624b\u673a\u53f7\u7801",status:"\u72b6\u6001",googleAuthSecret:"\u8c37\u6b4c\u4ee4\u724c",createTime:"\u521b\u5efa\u65f6\u95f4",actions:"\u64cd\u4f5c"},dialog:{addTitle:"\u6dfb\u52a0\u7528\u6237",editTitle:"\u4fee\u6539\u7528\u6237",addEmployeeTitle:"\u65b0\u589e\u5458\u5de5",importTitle:"\u7528\u6237\u5bfc\u5165",importResultTitle:"\u5bfc\u5165\u7ed3\u679c"},form:{account:"\u7528\u6237\u540d\u79f0",password:"\u7528\u6237\u5bc6\u7801",nickName:"\u7528\u6237\u6635\u79f0",role:"\u89d2\u8272",status:"\u72b6\u6001",remark:"\u5907\u6ce8",loginAccount:"\u767b\u5f55\u8d26\u6237",employeeNickName:"\u6635\u79f0",employeePassword:"\u5bc6\u7801"},upload:{dragText:"\u5c06\u6587\u4ef6\u62d6\u5230\u6b64\u5904\uff0c\u6216",clickUpload:"\u70b9\u51fb\u4e0a\u4f20",updateSupport:"\u662f\u5426\u66f4\u65b0\u5df2\u7ecf\u5b58\u5728\u7684\u7528\u6237\u6570\u636e",downloadTemplate:"\u4e0b\u8f7d\u6a21\u677f",fileTip:"\u63d0\u793a\uff1a\u4ec5\u5141\u8bb8\u5bfc\u5165\u201cxls\u201d\u6216\u201cxlsx\u201d\u683c\u5f0f\u6587\u4ef6\uff01"},message:{warningTitle:"\u8b66\u544a",confirmStatusChange:"\u786e\u8ba4\u8981\u5c06\u7528\u6237\u201c{account}\u201d\u8bbe\u4e3a{action}\u5417\uff1f",statusChangeSuccess:"{action}\u6210\u529f",resetPwdPrompt:"\u8bf7\u8f93\u5165\u201c{account}\u201d\u7684\u65b0\u5bc6\u7801",resetPwdSuccess:"\u4fee\u6539\u6210\u529f\uff0c\u65b0\u5bc6\u7801\u662f\uff1a{password}",selectRoleFirst:"\u8bf7\u5148\u9009\u62e9\u89d2\u8272",editSuccess:"\u4fee\u6539\u6210\u529f",addSuccess:"\u65b0\u589e\u6210\u529f",addEmployeeSuccess:"\u65b0\u589e\u5458\u5de5\u6210\u529f",confirmDelete:"\u662f\u5426\u786e\u8ba4\u5220\u9664\u7528\u6237\u7f16\u53f7\u4e3a\u201c{ids}\u201d\u7684\u6570\u636e\u9879\uff1f",deleteSuccess:"\u5220\u9664\u6210\u529f",confirmExport:"\u662f\u5426\u786e\u8ba4\u5bfc\u51fa\u6240\u6709\u7528\u6237\u6570\u636e\u9879\uff1f"},validation:{accountRequired:"\u7528\u6237\u540d\u79f0\u4e0d\u80fd\u4e3a\u7a7a",nickNameRequired:"\u7528\u6237\u6635\u79f0\u4e0d\u80fd\u4e3a\u7a7a",roleRequired:"\u8bf7\u9009\u62e9\u89d2\u8272",passwordRequired:"\u7528\u6237\u5bc6\u7801\u4e0d\u80fd\u4e3a\u7a7a",emailInvalid:"\u8bf7\u8f93\u5165\u6b63\u786e\u7684\u90ae\u7bb1\u5730\u5740",phoneInvalid:"\u8bf7\u8f93\u5165\u6b63\u786e\u7684\u624b\u673a\u53f7\u7801",employeeNickNameRequired:"\u6635\u79f0\u4e0d\u80fd\u4e3a\u7a7a",loginAccountRequired:"\u767b\u5f55\u8d26\u6237\u4e0d\u80fd\u4e3a\u7a7a",employeePasswordRequired:"\u5bc6\u7801\u4e0d\u80fd\u4e3a\u7a7a"},roleOptionPrefix:"\u89d2\u8272"},systemRole:{query:{roleName:"\u89d2\u8272\u540d\u79f0",roleKey:"\u6743\u9650\u5b57\u7b26",status:"\u72b6\u6001"},placeholder:{roleName:"\u8bf7\u8f93\u5165\u89d2\u8272\u540d\u79f0",roleKey:"\u8bf7\u8f93\u5165\u6743\u9650\u5b57\u7b26",status:"\u89d2\u8272\u72b6\u6001",permissionKey:"\u8bf7\u8f93\u5165\u6743\u9650\u5b57\u7b26",remark:"\u8bf7\u8f93\u5165\u5185\u5bb9"},status:{normal:"\u6b63\u5e38",disabled:"\u505c\u7528"},button:{export:"\u5bfc\u51fa"},table:{roleId:"\u89d2\u8272\u7f16\u53f7",roleName:"\u89d2\u8272\u540d\u79f0",roleKey:"\u6743\u9650\u5b57\u7b26",roleSort:"\u663e\u793a\u987a\u5e8f",status:"\u72b6\u6001",createTime:"\u521b\u5efa\u65f6\u95f4",actions:"\u64cd\u4f5c"},dialog:{addTitle:"\u6dfb\u52a0\u89d2\u8272",editTitle:"\u4fee\u6539\u89d2\u8272",dataScopeTitle:"\u5206\u914d\u6570\u636e\u6743\u9650"},form:{roleName:"\u89d2\u8272\u540d\u79f0",roleKey:"\u6743\u9650\u5b57\u7b26",roleSort:"\u89d2\u8272\u987a\u5e8f",status:"\u72b6\u6001",menuPermission:"\u83dc\u5355\u6743\u9650",remark:"\u5907\u6ce8",scopeRoleName:"\u89d2\u8272\u540d\u79f0",scopeRoleKey:"\u6743\u9650\u5b57\u7b26",permissionRange:"\u6743\u9650\u8303\u56f4",dataPermission:"\u6570\u636e\u6743\u9650"},tree:{expandCollapse:"\u5c55\u5f00/\u6298\u53e0",selectAll:"\u5168\u9009/\u5168\u4e0d\u9009",parentChildLinkage:"\u7236\u5b50\u8054\u52a8",loading:"\u52a0\u8f7d\u4e2d\uff0c\u8bf7\u7a0d\u5019"},dataScope:{all:"\u5168\u90e8\u6570\u636e\u6743\u9650",custom:"\u81ea\u5b9a\u6570\u636e\u6743\u9650",dept:"\u672c\u90e8\u95e8\u6570\u636e\u6743\u9650",deptAndChild:"\u672c\u90e8\u95e8\u53ca\u4ee5\u4e0b\u6570\u636e\u6743\u9650",self:"\u4ec5\u672c\u4eba\u6570\u636e\u6743\u9650"},dropdown:{dataScope:"\u6570\u636e\u6743\u9650",assignUser:"\u5206\u914d\u7528\u6237"},tooltip:{roleKey:"\u63a7\u5236\u5668\u4e2d\u5b9a\u4e49\u7684\u6743\u9650\u5b57\u7b26\uff0c\u5982\uff1a@PreAuthorize(`@ss.hasRole('admin')`)"},message:{confirmStatusChange:"\u786e\u8ba4\u8981\u5c06\u89d2\u8272\u201c{roleName}\u201d\u8bbe\u4e3a{action}\u5417\uff1f",statusChangeSuccess:"{action}\u6210\u529f",editSuccess:"\u4fee\u6539\u6210\u529f",addSuccess:"\u65b0\u589e\u6210\u529f",confirmDelete:"\u662f\u5426\u786e\u8ba4\u5220\u9664\u89d2\u8272\u7f16\u53f7\u4e3a\u201c{roleIds}\u201d\u7684\u6570\u636e\u9879\uff1f",deleteSuccess:"\u5220\u9664\u6210\u529f"},validation:{roleNameRequired:"\u89d2\u8272\u540d\u79f0\u4e0d\u80fd\u4e3a\u7a7a",roleKeyRequired:"\u6743\u9650\u5b57\u7b26\u4e0d\u80fd\u4e3a\u7a7a",roleSortRequired:"\u89d2\u8272\u987a\u5e8f\u4e0d\u80fd\u4e3a\u7a7a"}}}, +const systemMessages={ +"zh-CN":{systemUser:{query:{account:"用户名称",nickName:"昵称",status:"状态"},placeholder:{account:"请输入用户名称",nickName:"请输入昵称",status:"用户状态",password:"请输入用户密码",userNickName:"请输入用户昵称",remark:"请输入内容",loginAccount:"请输入登录账户",employeePassword:"请输入密码",roleAll:"请选择角色(全部角色)",role:"请选择角色"},status:{enabled:"启用",disabled:"禁用"},button:{addEmployee:"新增员工",export:"导出",resetPassword:"重置"},table:{id:"用户ID",account:"用户名称",nickName:"用户昵称",dept:"部门",phone:"手机号码",status:"状态",googleAuthSecret:"谷歌令牌",createTime:"创建时间",actions:"操作"},dialog:{addTitle:"添加用户",editTitle:"修改用户",addEmployeeTitle:"新增员工",importTitle:"用户导入",importResultTitle:"导入结果"},form:{account:"用户名称",password:"用户密码",nickName:"用户昵称",role:"角色",status:"状态",remark:"备注",loginAccount:"登录账户",employeeNickName:"昵称",employeePassword:"密码"},upload:{dragText:"将文件拖到此处,或",clickUpload:"点击上传",updateSupport:"是否更新已经存在的用户数据",downloadTemplate:"下载模板",fileTip:"提示:仅允许导入“xls”或“xlsx”格式文件!"},message:{warningTitle:"警告",confirmStatusChange:"确认要将用户“{account}”设为{action}吗?",statusChangeSuccess:"{action}成功",resetPwdPrompt:"请输入“{account}”的新密码",resetPwdSuccess:"修改成功,新密码是:{password}",selectRoleFirst:"请先选择角色",editSuccess:"修改成功",addSuccess:"新增成功",addEmployeeSuccess:"新增员工成功",confirmDelete:"是否确认删除用户编号为“{ids}”的数据项?",deleteSuccess:"删除成功",confirmExport:"是否确认导出所有用户数据项?"},validation:{accountRequired:"用户名称不能为空",nickNameRequired:"用户昵称不能为空",roleRequired:"请选择角色",passwordRequired:"用户密码不能为空",emailInvalid:"请输入正确的邮箱地址",phoneInvalid:"请输入正确的手机号码",employeeNickNameRequired:"昵称不能为空",loginAccountRequired:"登录账户不能为空",employeePasswordRequired:"密码不能为空"},roleOptionPrefix:"角色"},systemRole:{query:{roleName:"角色名称",roleKey:"权限字符",status:"状态"},placeholder:{roleName:"请输入角色名称",roleKey:"请输入权限字符",status:"角色状态",permissionKey:"请输入权限字符",remark:"请输入内容"},status:{normal:"正常",disabled:"停用"},button:{export:"导出"},table:{roleId:"角色编号",roleName:"角色名称",roleKey:"权限字符",roleSort:"显示顺序",status:"状态",createTime:"创建时间",actions:"操作"},dialog:{addTitle:"添加角色",editTitle:"修改角色",dataScopeTitle:"分配数据权限"},form:{roleName:"角色名称",roleKey:"权限字符",roleSort:"角色顺序",status:"状态",menuPermission:"菜单权限",remark:"备注",scopeRoleName:"角色名称",scopeRoleKey:"权限字符",permissionRange:"权限范围",dataPermission:"数据权限"},tree:{expandCollapse:"展开/折叠",selectAll:"全选/全不选",parentChildLinkage:"父子联动",loading:"加载中,请稍候"},dataScope:{all:"全部数据权限",custom:"自定数据权限",dept:"本部门数据权限",deptAndChild:"本部门及以下数据权限",self:"仅本人数据权限"},dropdown:{dataScope:"数据权限",assignUser:"分配用户"},tooltip:{roleKey:"控制器中定义的权限字符,如:@PreAuthorize(`@ss.hasRole('admin')`)"},message:{confirmStatusChange:"确认要将角色“{roleName}”设为{action}吗?",statusChangeSuccess:"{action}成功",editSuccess:"修改成功",addSuccess:"新增成功",confirmDelete:"是否确认删除角色编号为“{roleIds}”的数据项?",deleteSuccess:"删除成功"},validation:{roleNameRequired:"角色名称不能为空",roleKeyRequired:"权限字符不能为空",roleSortRequired:"角色顺序不能为空"}}}, "en-US":{systemUser:{query:{account:"User Name",nickName:"Nickname",status:"Status"},placeholder:{account:"Enter user name",nickName:"Enter nickname",status:"Select user status",password:"Enter user password",userNickName:"Enter user nickname",remark:"Enter remark",loginAccount:"Enter login account",employeePassword:"Enter password",roleAll:"Select role (all roles)",role:"Select role"},status:{enabled:"Enabled",disabled:"Disabled"},button:{addEmployee:"Add Employee",export:"Export",resetPassword:"Reset"},table:{id:"User ID",account:"User Name",nickName:"User Nickname",dept:"Department",phone:"Phone Number",status:"Status",googleAuthSecret:"Google Token",createTime:"Created Time",actions:"Actions"},dialog:{addTitle:"Add User",editTitle:"Edit User",addEmployeeTitle:"Add Employee",importTitle:"Import Users",importResultTitle:"Import Result"},form:{account:"User Name",password:"User Password",nickName:"User Nickname",role:"Role",status:"Status",remark:"Remark",loginAccount:"Login Account",employeeNickName:"Nickname",employeePassword:"Password"},upload:{dragText:"Drop the file here, or",clickUpload:"click to upload",updateSupport:"Update existing user data",downloadTemplate:"Download Template",fileTip:"Tip: only xls or xlsx files are allowed."},message:{warningTitle:"Warning",confirmStatusChange:"Confirm setting user \"{account}\" to {action}?",statusChangeSuccess:"{action} successfully",resetPwdPrompt:"Enter a new password for \"{account}\"",resetPwdSuccess:"Updated successfully. New password: {password}",selectRoleFirst:"Please select at least one role",editSuccess:"Updated successfully",addSuccess:"Added successfully",addEmployeeSuccess:"Employee added successfully",confirmDelete:"Delete the user item with ID \"{ids}\"?",deleteSuccess:"Deleted successfully",confirmExport:"Export all user data items?"},validation:{accountRequired:"User name is required",nickNameRequired:"User nickname is required",roleRequired:"Please select at least one role",passwordRequired:"User password is required",emailInvalid:"Enter a valid email address",phoneInvalid:"Enter a valid phone number",employeeNickNameRequired:"Nickname is required",loginAccountRequired:"Login account is required",employeePasswordRequired:"Password is required"},roleOptionPrefix:"Role "},systemRole:{query:{roleName:"Role Name",roleKey:"Permission Key",status:"Status"},placeholder:{roleName:"Enter role name",roleKey:"Enter permission key",status:"Select role status",permissionKey:"Enter permission key",remark:"Enter remark"},status:{normal:"Normal",disabled:"Disabled"},button:{export:"Export"},table:{roleId:"Role ID",roleName:"Role Name",roleKey:"Permission Key",roleSort:"Display Order",status:"Status",createTime:"Created Time",actions:"Actions"},dialog:{addTitle:"Add Role",editTitle:"Edit Role",dataScopeTitle:"Assign Data Scope"},form:{roleName:"Role Name",roleKey:"Permission Key",roleSort:"Role Order",status:"Status",menuPermission:"Menu Permission",remark:"Remark",scopeRoleName:"Role Name",scopeRoleKey:"Permission Key",permissionRange:"Permission Scope",dataPermission:"Data Permission"},tree:{expandCollapse:"Expand/Collapse",selectAll:"Select All/Clear",parentChildLinkage:"Parent-Child Linkage",loading:"Loading, please wait"},dataScope:{all:"All Data Scope",custom:"Custom Data Scope",dept:"Department Data Scope",deptAndChild:"Department and Children Data Scope",self:"Personal Data Scope"},dropdown:{dataScope:"Data Scope",assignUser:"Assign User"},tooltip:{roleKey:"Permission key defined in the controller, for example: @PreAuthorize(`@ss.hasRole('admin')`)"},message:{confirmStatusChange:"Confirm setting role \"{roleName}\" to {action}?",statusChangeSuccess:"{action} successfully",editSuccess:"Updated successfully",addSuccess:"Added successfully",confirmDelete:"Delete the role item with ID \"{roleIds}\"?",deleteSuccess:"Deleted successfully"},validation:{roleNameRequired:"Role name is required",roleKeyRequired:"Permission key is required",roleSortRequired:"Role order is required"}}}, "fr-FR":{systemUser:{query:{account:"Nom d'utilisateur",nickName:"Surnom",status:"Statut"},placeholder:{account:"Saisissez le nom d'utilisateur",nickName:"Saisissez le surnom",status:"Selectionnez le statut utilisateur",password:"Saisissez le mot de passe utilisateur",userNickName:"Saisissez le surnom utilisateur",remark:"Saisissez une remarque",loginAccount:"Saisissez le compte de connexion",employeePassword:"Saisissez le mot de passe",roleAll:"Selectionnez le role (tous les roles)",role:"Selectionnez le role"},status:{enabled:"Active",disabled:"Desactive"},button:{addEmployee:"Ajouter employe",export:"Exporter",resetPassword:"Reinitialiser"},table:{id:"ID utilisateur",account:"Nom d'utilisateur",nickName:"Surnom utilisateur",dept:"Departement",phone:"Numero de telephone",status:"Statut",googleAuthSecret:"Jeton Google",createTime:"Date de creation",actions:"Actions"},dialog:{addTitle:"Ajouter utilisateur",editTitle:"Modifier utilisateur",addEmployeeTitle:"Ajouter employe",importTitle:"Importer des utilisateurs",importResultTitle:"Resultat d'import"},form:{account:"Nom d'utilisateur",password:"Mot de passe utilisateur",nickName:"Surnom utilisateur",role:"Role",status:"Statut",remark:"Remarque",loginAccount:"Compte de connexion",employeeNickName:"Surnom",employeePassword:"Mot de passe"},upload:{dragText:"Deposez le fichier ici, ou",clickUpload:"cliquez pour televerser",updateSupport:"Mettre a jour les donnees utilisateur existantes",downloadTemplate:"Telecharger le modele",fileTip:"Astuce : seuls les fichiers xls ou xlsx sont autorises."},message:{warningTitle:"Avertissement",confirmStatusChange:"Confirmer le passage de l'utilisateur \"{account}\" a l'etat {action} ?",statusChangeSuccess:"Operation {action} reussie",resetPwdPrompt:"Saisissez un nouveau mot de passe pour \"{account}\"",resetPwdSuccess:"Modification reussie. Nouveau mot de passe : {password}",selectRoleFirst:"Veuillez selectionner au moins un role",editSuccess:"Modification reussie",addSuccess:"Ajout reussi",addEmployeeSuccess:"Employe ajoute avec succes",confirmDelete:"Supprimer l'element utilisateur avec l'ID \"{ids}\" ?",deleteSuccess:"Suppression reussie",confirmExport:"Exporter toutes les donnees utilisateur ?"},validation:{accountRequired:"Le nom d'utilisateur est requis",nickNameRequired:"Le surnom utilisateur est requis",roleRequired:"Veuillez selectionner au moins un role",passwordRequired:"Le mot de passe utilisateur est requis",emailInvalid:"Saisissez une adresse e-mail valide",phoneInvalid:"Saisissez un numero de telephone valide",employeeNickNameRequired:"Le surnom est requis",loginAccountRequired:"Le compte de connexion est requis",employeePasswordRequired:"Le mot de passe est requis"},roleOptionPrefix:"Role "},systemRole:{query:{roleName:"Nom du role",roleKey:"Cle de permission",status:"Statut"},placeholder:{roleName:"Saisissez le nom du role",roleKey:"Saisissez la cle de permission",status:"Selectionnez le statut du role",permissionKey:"Saisissez la cle de permission",remark:"Saisissez une remarque"},status:{normal:"Normal",disabled:"Desactive"},button:{export:"Exporter"},table:{roleId:"ID role",roleName:"Nom du role",roleKey:"Cle de permission",roleSort:"Ordre d'affichage",status:"Statut",createTime:"Date de creation",actions:"Actions"},dialog:{addTitle:"Ajouter role",editTitle:"Modifier role",dataScopeTitle:"Affecter la portee des donnees"},form:{roleName:"Nom du role",roleKey:"Cle de permission",roleSort:"Ordre du role",status:"Statut",menuPermission:"Permission du menu",remark:"Remarque",scopeRoleName:"Nom du role",scopeRoleKey:"Cle de permission",permissionRange:"Portee de permission",dataPermission:"Permission des donnees"},tree:{expandCollapse:"Developper/Replier",selectAll:"Tout selectionner/Tout annuler",parentChildLinkage:"Liaison parent-enfant",loading:"Chargement en cours, veuillez patienter"},dataScope:{all:"Toutes les donnees",custom:"Portee personnalisee",dept:"Donnees du departement",deptAndChild:"Donnees du departement et sous-departements",self:"Donnees personnelles uniquement"},dropdown:{dataScope:"Permission des donnees",assignUser:"Affecter utilisateur"},tooltip:{roleKey:"Cle de permission definie dans le controleur, par exemple : @PreAuthorize(`@ss.hasRole('admin')`)"},message:{confirmStatusChange:"Confirmer le passage du role \"{roleName}\" a l'etat {action} ?",statusChangeSuccess:"Operation {action} reussie",editSuccess:"Modification reussie",addSuccess:"Ajout reussi",confirmDelete:"Supprimer l'element role avec l'ID \"{roleIds}\" ?",deleteSuccess:"Suppression reussie"},validation:{roleNameRequired:"Le nom du role est requis",roleKeyRequired:"La cle de permission est requise",roleSortRequired:"L'ordre du role est requis"}}}, "es-ES":{systemUser:{query:{account:"Nombre de usuario",nickName:"Apodo",status:"Estado"},placeholder:{account:"Ingrese el nombre de usuario",nickName:"Ingrese el apodo",status:"Seleccione el estado del usuario",password:"Ingrese la contrasena del usuario",userNickName:"Ingrese el apodo del usuario",remark:"Ingrese una observacion",loginAccount:"Ingrese la cuenta de acceso",employeePassword:"Ingrese la contrasena",roleAll:"Seleccione el rol (todos los roles)",role:"Seleccione el rol"},status:{enabled:"Activo",disabled:"Inactivo"},button:{addEmployee:"Agregar empleado",export:"Exportar",resetPassword:"Restablecer"},table:{id:"ID de usuario",account:"Nombre de usuario",nickName:"Apodo del usuario",dept:"Departamento",phone:"Numero de telefono",status:"Estado",googleAuthSecret:"Token de Google",createTime:"Fecha de creacion",actions:"Acciones"},dialog:{addTitle:"Agregar usuario",editTitle:"Editar usuario",addEmployeeTitle:"Agregar empleado",importTitle:"Importar usuarios",importResultTitle:"Resultado de importacion"},form:{account:"Nombre de usuario",password:"Contrasena del usuario",nickName:"Apodo del usuario",role:"Rol",status:"Estado",remark:"Observacion",loginAccount:"Cuenta de acceso",employeeNickName:"Apodo",employeePassword:"Contrasena"},upload:{dragText:"Suelte el archivo aqui, o",clickUpload:"haga clic para cargarlo",updateSupport:"Actualizar los datos de usuario existentes",downloadTemplate:"Descargar plantilla",fileTip:"Consejo: solo se permiten archivos xls o xlsx."},message:{warningTitle:"Advertencia",confirmStatusChange:"Confirme cambiar el usuario \"{account}\" a {action}.",statusChangeSuccess:"Cambio a {action} realizado correctamente",resetPwdPrompt:"Ingrese una nueva contrasena para \"{account}\"",resetPwdSuccess:"Modificacion correcta. Nueva contrasena: {password}",selectRoleFirst:"Seleccione al menos un rol",editSuccess:"Modificacion correcta",addSuccess:"Agregado correctamente",addEmployeeSuccess:"Empleado agregado correctamente",confirmDelete:"Eliminar el elemento de usuario con ID \"{ids}\"?",deleteSuccess:"Eliminado correctamente",confirmExport:"Exportar todos los datos de usuario?"},validation:{accountRequired:"El nombre de usuario es obligatorio",nickNameRequired:"El apodo del usuario es obligatorio",roleRequired:"Seleccione al menos un rol",passwordRequired:"La contrasena del usuario es obligatoria",emailInvalid:"Ingrese un correo electronico valido",phoneInvalid:"Ingrese un numero de telefono valido",employeeNickNameRequired:"El apodo es obligatorio",loginAccountRequired:"La cuenta de acceso es obligatoria",employeePasswordRequired:"La contrasena es obligatoria"},roleOptionPrefix:"Rol "},systemRole:{query:{roleName:"Nombre del rol",roleKey:"Clave de permiso",status:"Estado"},placeholder:{roleName:"Ingrese el nombre del rol",roleKey:"Ingrese la clave de permiso",status:"Seleccione el estado del rol",permissionKey:"Ingrese la clave de permiso",remark:"Ingrese una observacion"},status:{normal:"Normal",disabled:"Inactivo"},button:{export:"Exportar"},table:{roleId:"ID del rol",roleName:"Nombre del rol",roleKey:"Clave de permiso",roleSort:"Orden de visualizacion",status:"Estado",createTime:"Fecha de creacion",actions:"Acciones"},dialog:{addTitle:"Agregar rol",editTitle:"Editar rol",dataScopeTitle:"Asignar alcance de datos"},form:{roleName:"Nombre del rol",roleKey:"Clave de permiso",roleSort:"Orden del rol",status:"Estado",menuPermission:"Permiso del menu",remark:"Observacion",scopeRoleName:"Nombre del rol",scopeRoleKey:"Clave de permiso",permissionRange:"Rango de permiso",dataPermission:"Permiso de datos"},tree:{expandCollapse:"Expandir/Contraer",selectAll:"Seleccionar todo/Limpiar",parentChildLinkage:"Vinculacion padre-hijo",loading:"Cargando, por favor espere"},dataScope:{all:"Alcance total de datos",custom:"Alcance personalizado",dept:"Datos del departamento",deptAndChild:"Datos del departamento y subordinados",self:"Solo datos personales"},dropdown:{dataScope:"Permiso de datos",assignUser:"Asignar usuario"},tooltip:{roleKey:"Clave de permiso definida en el controlador, por ejemplo: @PreAuthorize(`@ss.hasRole('admin')`)"},message:{confirmStatusChange:"Confirme cambiar el rol \"{roleName}\" a {action}.",statusChangeSuccess:"Cambio a {action} realizado correctamente",editSuccess:"Modificacion correcta",addSuccess:"Agregado correctamente",confirmDelete:"Eliminar el elemento de rol con ID \"{roleIds}\"?",deleteSuccess:"Eliminado correctamente"},validation:{roleNameRequired:"El nombre del rol es obligatorio",roleKeyRequired:"La clave de permiso es obligatoria",roleSortRequired:"El orden del rol es obligatorio"}}}, diff --git a/src/layout/components/Sidebar/Logo.vue b/src/layout/components/Sidebar/Logo.vue index e2a3dda..17e2f48 100644 --- a/src/layout/components/Sidebar/Logo.vue +++ b/src/layout/components/Sidebar/Logo.vue @@ -1,4 +1,4 @@ -