diff --git a/android/app/src/dev/res/values-en-rUS/string.xml b/android/app/src/dev/res/values-en-rUS/string.xml
new file mode 100644
index 00000000..7c497348
--- /dev/null
+++ b/android/app/src/dev/res/values-en-rUS/string.xml
@@ -0,0 +1,4 @@
+
+
+ Star Lock
+
\ No newline at end of file
diff --git a/android/app/src/dev/res/values-zh-rCN/string.xml b/android/app/src/dev/res/values-zh-rCN/string.xml
new file mode 100644
index 00000000..e55b995c
--- /dev/null
+++ b/android/app/src/dev/res/values-zh-rCN/string.xml
@@ -0,0 +1,4 @@
+
+
+ 星锁
+
\ No newline at end of file
diff --git a/android/app/src/local/res/values-en-rUS/string.xml b/android/app/src/local/res/values-en-rUS/string.xml
new file mode 100644
index 00000000..7c497348
--- /dev/null
+++ b/android/app/src/local/res/values-en-rUS/string.xml
@@ -0,0 +1,4 @@
+
+
+ Star Lock
+
\ No newline at end of file
diff --git a/android/app/src/local/res/values-zh-rCN/string.xml b/android/app/src/local/res/values-zh-rCN/string.xml
new file mode 100644
index 00000000..e55b995c
--- /dev/null
+++ b/android/app/src/local/res/values-zh-rCN/string.xml
@@ -0,0 +1,4 @@
+
+
+ 星锁
+
\ No newline at end of file
diff --git a/android/app/src/main/res/values/values-en-rUS/string.xml b/android/app/src/main/res/values/values-en-rUS/string.xml
new file mode 100644
index 00000000..7c497348
--- /dev/null
+++ b/android/app/src/main/res/values/values-en-rUS/string.xml
@@ -0,0 +1,4 @@
+
+
+ Star Lock
+
\ No newline at end of file
diff --git a/android/app/src/main/res/values/values-zh-rCN/string.xml b/android/app/src/main/res/values/values-zh-rCN/string.xml
new file mode 100644
index 00000000..e55b995c
--- /dev/null
+++ b/android/app/src/main/res/values/values-zh-rCN/string.xml
@@ -0,0 +1,4 @@
+
+
+ 星锁
+
\ No newline at end of file
diff --git a/android/app/src/pre/res/values-en-rUS/string.xml b/android/app/src/pre/res/values-en-rUS/string.xml
new file mode 100644
index 00000000..7c497348
--- /dev/null
+++ b/android/app/src/pre/res/values-en-rUS/string.xml
@@ -0,0 +1,4 @@
+
+
+ Star Lock
+
\ No newline at end of file
diff --git a/android/app/src/pre/res/values-zh-rCN/string.xml b/android/app/src/pre/res/values-zh-rCN/string.xml
new file mode 100644
index 00000000..e55b995c
--- /dev/null
+++ b/android/app/src/pre/res/values-zh-rCN/string.xml
@@ -0,0 +1,4 @@
+
+
+ 星锁
+
\ No newline at end of file
diff --git a/android/app/src/sky/res/values-en-rUS/string.xml b/android/app/src/sky/res/values-en-rUS/string.xml
new file mode 100644
index 00000000..7c497348
--- /dev/null
+++ b/android/app/src/sky/res/values-en-rUS/string.xml
@@ -0,0 +1,4 @@
+
+
+ Star Lock
+
\ No newline at end of file
diff --git a/android/app/src/sky/res/values-zh-rCN/string.xml b/android/app/src/sky/res/values-zh-rCN/string.xml
new file mode 100644
index 00000000..e55b995c
--- /dev/null
+++ b/android/app/src/sky/res/values-zh-rCN/string.xml
@@ -0,0 +1,4 @@
+
+
+ 星锁
+
\ No newline at end of file
diff --git a/android/app/src/xhj/res/values-en-rUS/string.xml b/android/app/src/xhj/res/values-en-rUS/string.xml
new file mode 100644
index 00000000..7c497348
--- /dev/null
+++ b/android/app/src/xhj/res/values-en-rUS/string.xml
@@ -0,0 +1,4 @@
+
+
+ Star Lock
+
\ No newline at end of file
diff --git a/android/app/src/xhj/res/values-zh-rCN/string.xml b/android/app/src/xhj/res/values-zh-rCN/string.xml
new file mode 100644
index 00000000..e55b995c
--- /dev/null
+++ b/android/app/src/xhj/res/values-zh-rCN/string.xml
@@ -0,0 +1,4 @@
+
+
+ 星锁
+
\ No newline at end of file
diff --git a/ios/Runner/InfoPlist.xcstrings b/ios/Runner/InfoPlist.xcstrings
new file mode 100644
index 00000000..449697b7
--- /dev/null
+++ b/ios/Runner/InfoPlist.xcstrings
@@ -0,0 +1,23 @@
+{
+ "sourceLanguage" : "zh-Hans",
+ "strings" : {
+ "CFBundleDisplayName" : {
+ "extractionState" : "manual",
+ "localizations" : {
+ "en" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Star Lock"
+ }
+ },
+ "zh-Hans" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "星锁"
+ }
+ }
+ }
+ }
+ },
+ "version" : "1.0"
+}
\ No newline at end of file
diff --git a/ios/Runner/en.lproj/InfoPlist.strings b/ios/Runner/en.lproj/InfoPlist.strings
new file mode 100644
index 00000000..42bf8e95
--- /dev/null
+++ b/ios/Runner/en.lproj/InfoPlist.strings
@@ -0,0 +1,8 @@
+/*
+ InfoPlist.strings
+ Runner
+
+ Created by mac on 2024/11/21.
+
+*/
+"AppName"="Star Lock";
diff --git a/ios/Runner/zh-Hans.lproj/InfoPlist.strings b/ios/Runner/zh-Hans.lproj/InfoPlist.strings
new file mode 100644
index 00000000..5b0ee9b4
--- /dev/null
+++ b/ios/Runner/zh-Hans.lproj/InfoPlist.strings
@@ -0,0 +1,8 @@
+/*
+ InfoPlist.strings
+ Runner
+
+ Created by mac on 2024/11/21.
+
+*/
+"AppName"="星锁";
diff --git a/lan/lan_keys.json b/lan/lan_keys.json
index 1c0b0d7e..c796ec3c 100755
--- a/lan/lan_keys.json
+++ b/lan/lan_keys.json
@@ -1,22 +1,22 @@
{
- "星锁":"星锁",
- "锁通通":"锁通通",
- "点击开锁,长按闭锁":"点击开锁,长按闭锁",
- "考勤":"考勤",
+ "星锁": "星锁",
+ "锁通通": "锁通通",
+ "点击开锁,长按闭锁": "点击开锁,长按闭锁",
+ "考勤": "考勤",
"考勤设置": "考勤设置",
- "电子钥匙":"电子钥匙",
+ "电子钥匙": "电子钥匙",
"添加卡": "添加卡",
"卡号": "卡号",
"添加指纹": "添加指纹",
"指纹号": "指纹号",
"遥控": "遥控",
"添加人脸": "添加人脸",
- "门锁日志":"门锁日志",
+ "门锁日志": "门锁日志",
"密码号": "密码号",
- "添加者":"添加者",
- "添加时间":"添加时间",
- "重置":"重置",
- "请输入手机号或者邮箱":"请输入手机号或者邮箱",
+ "添加者": "添加者",
+ "添加时间": "添加时间",
+ "重置": "重置",
+ "请输入手机号或者邮箱": "请输入手机号或者邮箱",
"工作时间": "工作时间",
"工作日设置": "工作日设置",
"星期一": "星期一",
@@ -40,17 +40,17 @@
"周五": "周五",
"周六": "周六",
"周日": "周日",
- "群发钥匙":"群发钥匙",
+ "群发钥匙": "群发钥匙",
"锁": "锁",
- "请添加":"请添加",
- "允许远程开锁":"允许远程开锁",
+ "请添加": "请添加",
+ "允许远程开锁": "允许远程开锁",
"请输入验证码": "请输入验证码",
"获取密码": "获取密码",
- "请给密码命名":"请给密码命名",
- "密码有限期为6个小时,只能使用一次":"密码有限期为6个小时,只能使用一次",
- "手动输入6-9位数字作为密码。可在锁旁边通过手机蓝牙添加,也可以通过网关远程添加":"手动输入6-9位数字作为密码。可在锁旁边通过手机蓝牙添加,也可以通过网关远程添加",
+ "请给密码命名": "请给密码命名",
+ "密码有限期为6个小时,只能使用一次": "密码有限期为6个小时,只能使用一次",
+ "手动输入6-9位数字作为密码。可在锁旁边通过手机蓝牙添加,也可以通过网关远程添加": "手动输入6-9位数字作为密码。可在锁旁边通过手机蓝牙添加,也可以通过网关远程添加",
"获取": "获取",
- "添加":"添加",
+ "添加": "添加",
"删除公司": "删除公司",
"密码详情": "密码详情",
"修改密码": "修改密码",
@@ -60,155 +60,155 @@
"添加手掌": "添加手掌",
"请输入员工账号": "请输入员工账号",
"批量授权锁": "批量授权锁",
- "授权管理员拥有操作这把锁的重要权限,请确保只发给我你信任的人":"授权管理员拥有操作这把锁的重要权限,请确保只发给我你信任的人",
- "功能开启后,你将可以通过网关远程开锁。此功能的开启和关闭只能在锁附近通过手机蓝牙进行。":"功能开启后,你将可以通过网关远程开锁。此功能的开启和关闭只能在锁附近通过手机蓝牙进行。",
+ "授权管理员拥有操作这把锁的重要权限,请确保只发给我你信任的人": "授权管理员拥有操作这把锁的重要权限,请确保只发给我你信任的人",
+ "功能开启后,你将可以通过网关远程开锁。此功能的开启和关闭只能在锁附近通过手机蓝牙进行。": "功能开启后,你将可以通过网关远程开锁。此功能的开启和关闭只能在锁附近通过手机蓝牙进行。",
"排列方式": "排列方式",
"早到榜": "早到榜",
"迟到榜": "迟到榜",
"当前模式": "当前模式",
- "勤奋榜":"勤奋榜",
+ "勤奋榜": "勤奋榜",
"延迟时间": "延迟时间",
"经过以上设定的时间,锁会自动关闭。开启或修改设置后,请先开一次锁,使时间生效。": "经过以上设定的时间,锁会自动关闭。开启或修改设置后,请先开一次锁,使时间生效。",
"时间": "时间",
"开始时间": "开始时间",
"结束时间": "结束时间",
"工作时间设置": "工作时间设置",
- "常开模式":"常开模式",
+ "常开模式": "常开模式",
"常开时间": "常开时间",
"常开日期": "常开日期",
"添加员工": "添加员工",
"编辑员工": "编辑员工",
- "节假日":"节假日",
- "打卡方式":"打卡方式",
- "员工是否有钥匙":"员工是否有钥匙",
- "上班时间":"上班时间",
- "下班时间":"下班时间",
+ "节假日": "节假日",
+ "打卡方式": "打卡方式",
+ "员工是否有钥匙": "员工是否有钥匙",
+ "上班时间": "上班时间",
+ "下班时间": "下班时间",
"本周": "本周",
- "单休":"单休",
- "双休":"双休",
- "单双休":"单双休",
- "年":"年",
- "月":"月",
- "放假日期":"放假日期",
- "补班日期":"补班日期",
- "添加假日":"添加假日",
- "开始日期":"开始日期",
- "必填":"必填",
- "结束日期":"结束日期",
- "日榜":"日榜",
- "月榜":"月榜",
- "考勤记录":"考勤记录",
- "假日信息":"假日信息",
- "基本信息":"基本信息",
- "无线键盘":"无线键盘",
+ "单休": "单休",
+ "双休": "双休",
+ "单双休": "单双休",
+ "年": "年",
+ "月": "月",
+ "放假日期": "放假日期",
+ "补班日期": "补班日期",
+ "添加假日": "添加假日",
+ "开始日期": "开始日期",
+ "必填": "必填",
+ "结束日期": "结束日期",
+ "日榜": "日榜",
+ "月榜": "月榜",
+ "考勤记录": "考勤记录",
+ "假日信息": "假日信息",
+ "基本信息": "基本信息",
+ "无线键盘": "无线键盘",
"选择无线键盘": "选择无线键盘",
- "门磁":"门磁",
- "自动闭锁":"自动闭锁",
- "锁声音":"锁声音",
- "防撬报警":"防撬报警",
- "重置键":"重置键",
- "锁时间":"锁时间",
- "诊断":"诊断",
- "上传数据":"上传数据",
- "导入其他锁数据":"导入其他锁数据",
- "锁升级":"锁升级",
- "标记房态":"标记房态",
- "开锁提醒":"开锁提醒",
- "微信二维码":"微信二维码",
+ "门磁": "门磁",
+ "自动闭锁": "自动闭锁",
+ "锁声音": "锁声音",
+ "防撬报警": "防撬报警",
+ "重置键": "重置键",
+ "锁时间": "锁时间",
+ "诊断": "诊断",
+ "上传数据": "上传数据",
+ "导入其他锁数据": "导入其他锁数据",
+ "锁升级": "锁升级",
+ "标记房态": "标记房态",
+ "开锁提醒": "开锁提醒",
+ "微信二维码": "微信二维码",
"拥有电子钥匙的人,通过微信扫一扫这个二维码,即可开门。每把锁的二维码都不相同,你可以将其打印出来贴在对应的锁旁边": "拥有电子钥匙的人,通过微信扫一扫这个二维码,即可开门。每把锁的二维码都不相同,你可以将其打印出来贴在对应的锁旁边",
- "锁编号":"锁编号",
- "电量":"电量",
- "锁分组":"锁分组",
- "选择分组":"选择分组",
- "创建新分组":"创建新分组",
- "管理员开锁密码":"管理员开锁密码",
- "更新":"更新",
- "电量信息可以通过网关远程更新,或通过手机蓝牙在锁旁边更新":"电量信息可以通过网关远程更新,或通过手机蓝牙在锁旁边更新",
- "当屏幕闪烁时,点击下一步":"当屏幕闪烁时,点击下一步",
- "输入*529#或按设置键":"输入*529#或按设置键",
- "长按重置键2秒":"长按重置键2秒",
- "附近的设备":"附近的设备",
- "暂无数据":"暂无数据",
- "通过门磁可查询门的开、关状态。每把锁咳添加一个门磁":"通过门磁可查询门的开、关状态。每把锁咳添加一个门磁",
- "开始":"开始",
- "全天":"全天",
- "你可以设置多个常开时间段,在设置的时间段内,锁被打开后一直处于打开的状态。":"你可以设置多个常开时间段,在设置的时间段内,锁被打开后一直处于打开的状态。",
- "请选择锁音量":"请选择锁音量",
- "功能开启后,你将可以听到智能锁的提示音。包括电量过低,密码错误等提示。":"功能开启后,你将可以听到智能锁的提示音。包括电量过低,密码错误等提示。",
- "低":"低",
- "较低":"较低",
- "中":"中",
- "较高":"较高",
- "高":"高",
- "开启后,锁被撬动时,会发出报警声":"开启后,锁被撬动时,会发出报警声",
- "关闭后,重置键无效,锁要通过app删除后才能重新添加":"关闭后,重置键无效,锁要通过app删除后才能重新添加",
- "校准时间":"校准时间",
- "诊断是读取锁内的配置信息并上传,以便工作人员分析故障的原因":"诊断是读取锁内的配置信息并上传,以便工作人员分析故障的原因",
- "上传":"上传",
- "本操作将上传锁内数据到服务器,过程可能需要几分钟,请耐心等待":"本操作将上传锁内数据到服务器,过程可能需要几分钟,请耐心等待",
- "请选择要从哪把锁导入":"请选择要从哪把锁导入",
- "有新版本":"有新版本",
- "当前版本":"当前版本",
- "升级":"升级",
- "空闲":"空闲",
- "已入住":"已入住",
- "英文":"英文",
- "简体中文":"简体中文",
- "多语言":"多语言",
- "添加锁":"添加锁",
- "锁地址":"锁地址",
- "选择锁类型":"选择锁类型",
- "NFC无源锁":"NFC无源锁",
- "添加设备":"添加设备",
- "网关":"网关",
- "客服":"客服",
- "设置":"设置",
- "更多设置":"更多设置",
- "消息推送":"消息推送",
- "锁用户管理":"锁用户管理",
- "拥有的钥匙":"拥有的钥匙",
- "批量授权":"批量授权",
- "关联设备":"关联设备",
- "关联姓名":"关联姓名",
- "转移智能锁":"转移智能锁",
- "选择锁":"选择锁",
- "接收人信息":"接收人信息",
- "转移网关":"转移网关",
- "锁屏":"锁屏",
- "已关闭":"已关闭",
- "已开启":"已开启",
- "开启":"开启",
+ "锁编号": "锁编号",
+ "电量": "电量",
+ "锁分组": "锁分组",
+ "选择分组": "选择分组",
+ "创建新分组": "创建新分组",
+ "管理员开锁密码": "管理员开锁密码",
+ "更新": "更新",
+ "电量信息可以通过网关远程更新,或通过手机蓝牙在锁旁边更新": "电量信息可以通过网关远程更新,或通过手机蓝牙在锁旁边更新",
+ "当屏幕闪烁时,点击下一步": "当屏幕闪烁时,点击下一步",
+ "输入*529#或按设置键": "输入*529#或按设置键",
+ "长按重置键2秒": "长按重置键2秒",
+ "附近的设备": "附近的设备",
+ "暂无数据": "暂无数据",
+ "通过门磁可查询门的开、关状态。每把锁咳添加一个门磁": "通过门磁可查询门的开、关状态。每把锁咳添加一个门磁",
+ "开始": "开始",
+ "全天": "全天",
+ "你可以设置多个常开时间段,在设置的时间段内,锁被打开后一直处于打开的状态。": "你可以设置多个常开时间段,在设置的时间段内,锁被打开后一直处于打开的状态。",
+ "请选择锁音量": "请选择锁音量",
+ "功能开启后,你将可以听到智能锁的提示音。包括电量过低,密码错误等提示。": "功能开启后,你将可以听到智能锁的提示音。包括电量过低,密码错误等提示。",
+ "低": "低",
+ "较低": "较低",
+ "中": "中",
+ "较高": "较高",
+ "高": "高",
+ "开启后,锁被撬动时,会发出报警声": "开启后,锁被撬动时,会发出报警声",
+ "关闭后,重置键无效,锁要通过app删除后才能重新添加": "关闭后,重置键无效,锁要通过app删除后才能重新添加",
+ "校准时间": "校准时间",
+ "诊断是读取锁内的配置信息并上传,以便工作人员分析故障的原因": "诊断是读取锁内的配置信息并上传,以便工作人员分析故障的原因",
+ "上传": "上传",
+ "本操作将上传锁内数据到服务器,过程可能需要几分钟,请耐心等待": "本操作将上传锁内数据到服务器,过程可能需要几分钟,请耐心等待",
+ "请选择要从哪把锁导入": "请选择要从哪把锁导入",
+ "有新版本": "有新版本",
+ "当前版本": "当前版本",
+ "升级": "升级",
+ "空闲": "空闲",
+ "已入住": "已入住",
+ "英文": "英文",
+ "简体中文": "简体中文",
+ "多语言": "多语言",
+ "添加锁": "添加锁",
+ "锁地址": "锁地址",
+ "选择锁类型": "选择锁类型",
+ "NFC无源锁": "NFC无源锁",
+ "添加设备": "添加设备",
+ "网关": "网关",
+ "客服": "客服",
+ "设置": "设置",
+ "更多设置": "更多设置",
+ "消息推送": "消息推送",
+ "锁用户管理": "锁用户管理",
+ "拥有的钥匙": "拥有的钥匙",
+ "批量授权": "批量授权",
+ "关联设备": "关联设备",
+ "关联姓名": "关联姓名",
+ "转移智能锁": "转移智能锁",
+ "选择锁": "选择锁",
+ "接收人信息": "接收人信息",
+ "转移网关": "转移网关",
+ "锁屏": "锁屏",
+ "已关闭": "已关闭",
+ "已开启": "已开启",
+ "开启": "开启",
"确定要开启重置键?": "确定要开启重置键?",
"确定要关闭重置键?": "确定要关闭重置键?",
- "隐藏无效开锁权限":"隐藏无效开锁权限",
- "APP开锁时需手机连网的锁":"APP开锁时需手机连网的锁",
- "增值服务":"增值服务",
- "关于":"关于",
- "退出":"退出",
- "删除账号":"删除账号",
- "个人信息":"个人信息",
- "头像":"头像",
- "昵称":"昵称",
+ "隐藏无效开锁权限": "隐藏无效开锁权限",
+ "APP开锁时需手机连网的锁": "APP开锁时需手机连网的锁",
+ "增值服务": "增值服务",
+ "关于": "关于",
+ "退出": "退出",
+ "删除账号": "删除账号",
+ "个人信息": "个人信息",
+ "头像": "头像",
+ "昵称": "昵称",
"请输入昵称": "请输入昵称",
- "修改昵称":"修改昵称",
- "修改账号":"修改账号",
- "重置密码":"重置密码",
- "安全问题":"安全问题",
- "为了你的账号安全,修改账号前请先使用验证码验证":"为了你的账号安全,修改账号前请先使用验证码验证",
- "请输入新账号":"请输入新账号",
- "找回密码和登录新设备时,可通过绑定的手机验证":"找回密码和登录新设备时,可通过绑定的手机验证",
- "找回密码和登录新设备时,可通过绑定的邮箱验证":"找回密码和登录新设备时,可通过绑定的邮箱验证",
- "原密码":"原密码",
- "新密码":"新密码",
- "确认密码":"确认密码",
- "当你手机丢了,可以通过回答设置的安全问题来登录新设备":"当你手机丢了,可以通过回答设置的安全问题来登录新设备",
- "问题一":"问题一",
- "问题二":"问题二",
- "问题三":"问题三",
- "请输入你的答案":"请输入你的答案",
- "即将到期":"即将到期",
- "去授权":"去授权",
- "修改名称":"修改名称",
+ "修改昵称": "修改昵称",
+ "修改账号": "修改账号",
+ "重置密码": "重置密码",
+ "安全问题": "安全问题",
+ "为了你的账号安全,修改账号前请先使用验证码验证": "为了你的账号安全,修改账号前请先使用验证码验证",
+ "请输入新账号": "请输入新账号",
+ "找回密码和登录新设备时,可通过绑定的手机验证": "找回密码和登录新设备时,可通过绑定的手机验证",
+ "找回密码和登录新设备时,可通过绑定的邮箱验证": "找回密码和登录新设备时,可通过绑定的邮箱验证",
+ "原密码": "原密码",
+ "新密码": "新密码",
+ "确认密码": "确认密码",
+ "当你手机丢了,可以通过回答设置的安全问题来登录新设备": "当你手机丢了,可以通过回答设置的安全问题来登录新设备",
+ "问题一": "问题一",
+ "问题二": "问题二",
+ "问题三": "问题三",
+ "请输入你的答案": "请输入你的答案",
+ "即将到期": "即将到期",
+ "去授权": "去授权",
+ "修改名称": "修改名称",
"状态": "状态",
"WiFi名称": "WiFi名称",
"网络MAC": "网络MAC",
@@ -237,101 +237,101 @@
"请输入IP地址": "请输入IP地址",
"请输入子网掩码": "请输入子网掩码",
"请输入默认网关": "请输入默认网关",
- "所有锁":"所有锁",
- "搜索所有类型的锁":"搜索所有类型的锁",
- "门锁":"门锁",
- "挂锁":"挂锁",
- "保险箱锁":"保险箱锁",
- "智能门禁":"智能门禁",
- "车位锁":"车位锁",
- "摸亮触摸屏":"摸亮触摸屏",
- "摸亮触摸屏,锁进入可添加状态,点击下一步":"摸亮触摸屏,锁进入可添加状态,点击下一步",
- "附近的锁":"附近的锁",
- "如需修改名字请重新命名,点击确定添加锁":"如需修改名字请重新命名,点击确定添加锁",
- "添加锁时,手机必须在锁旁边":"添加锁时,手机必须在锁旁边",
- "登录":"登录",
- "注册":"注册",
- "我已阅读并同意":"我已阅读并同意",
- "验证码":"验证码",
- "密码必须是8-20位,至少包括数字/字母/符号中的2种":"密码必须是8-20位,至少包括数字/字母/符号中的2种",
- "手机":"手机",
- "邮箱":"邮箱",
+ "所有锁": "所有锁",
+ "搜索所有类型的锁": "搜索所有类型的锁",
+ "门锁": "门锁",
+ "挂锁": "挂锁",
+ "保险箱锁": "保险箱锁",
+ "智能门禁": "智能门禁",
+ "车位锁": "车位锁",
+ "摸亮触摸屏": "摸亮触摸屏",
+ "摸亮触摸屏,锁进入可添加状态,点击下一步": "摸亮触摸屏,锁进入可添加状态,点击下一步",
+ "附近的锁": "附近的锁",
+ "如需修改名字请重新命名,点击确定添加锁": "如需修改名字请重新命名,点击确定添加锁",
+ "添加锁时,手机必须在锁旁边": "添加锁时,手机必须在锁旁边",
+ "登录": "登录",
+ "注册": "注册",
+ "我已阅读并同意": "我已阅读并同意",
+ "验证码": "验证码",
+ "密码必须是8-20位,至少包括数字/字母/符号中的2种": "密码必须是8-20位,至少包括数字/字母/符号中的2种",
+ "手机": "手机",
+ "邮箱": "邮箱",
"请输入邮箱": "请输入邮箱",
- "国家/地区":"国家/地区",
+ "国家/地区": "国家/地区",
"你所在的国家/地区": "你所在的国家/地区",
"选择国家/地区": "你所在的国家/地区",
- "获取验证码":"获取验证码",
- "商务合作":"商务合作",
- "电脑网页版":"电脑网页版",
- "酒店系统":"酒店系统",
- "说明书网页版":"说明书网页版",
- "高级功能":"高级功能",
- "记录保存":"记录保存",
- "您可通过短信将密码、电子钥匙信息发给接收人。":"您可通过短信将密码、电子钥匙信息发给接收人。",
- "您可通过邮件将密码、电子钥匙信息发给接收人。":"您可通过邮件将密码、电子钥匙信息发给接收人。",
- "购买实名认证提示":"购买实名认证提示",
- "请选择你希望的实名认证频次":"请选择你希望的实名认证频次",
- "仅首次":"仅首次",
- "每日一次":"每日一次",
- "每周一次":"每周一次",
- "每月一次":"每月一次",
- "当前状态":"当前状态",
- "试用中":"试用中",
- "高级功能权益内容":"高级功能权益内容",
- "短信模板":"短信模板",
- "邮件模板":"邮件模板",
- "发卡工具":"发卡工具",
- "购买高级功能须知":"购买高级功能须知",
- "购买高级功能提示":"购买高级功能提示",
- "免费体验":"免费体验",
- "立即开通":"立即开通",
- "购买短信":"购买短信",
- "购买邮件":"购买邮件",
- "购买实名认证次数":"购买实名认证次数",
- "开通高级功能":"开通高级功能",
- "选择套餐":"选择套餐",
- "支付方式":"支付方式",
- "支付宝":"支付宝",
- "去支付":"去支付",
- "你可以自己定义模版的内容,用于发送密码或电子钥匙信息给他人":"你可以自己定义模版的内容,用于发送密码或电子钥匙信息给他人",
- "高级功能仅能用于你自己的锁":"高级功能仅能用于你自己的锁",
- "新建模板":"新建模板",
- "类型":"类型",
- "模版内容":"模版内容",
- "预览":"预览",
- "房间名":"房间名",
- "预计产生短信条数":"预计产生短信条数",
- "功能开启后,已失效较长时间的密码、电子钥匙、卡、指纹等开锁权限将被隐藏,不在列表里显示。":"功能开启后,已失效较长时间的密码、电子钥匙、卡、指纹等开锁权限将被隐藏,不在列表里显示。",
- "对于选中的这些锁,当用户用APP开锁时,他的手机需要是连网的,否则无法开锁":"对于选中的这些锁,当用户用APP开锁时,他的手机需要是连网的,否则无法开锁",
- "配置WiFi":"配置WiFi",
- "请输入WiFi名字":"请输入WiFi名字",
- "WiFi配网":"WiFi配网",
- "胁迫卡":"胁迫卡",
- "员工是否有密码":"员工是否有密码",
- "员工是否有卡":"员工是否有卡",
- "员工是否有指纹":"员工是否有指纹",
- "获取钥匙":"获取钥匙",
- "获取卡":"获取卡",
- "获取指纹":"获取指纹",
- "安全验证":"安全验证",
- "删除账号后,你的所有信息及相关记录都会从平台彻底删除,且不可恢复,是否删除?":"删除账号后,你的所有信息及相关记录都会从平台彻底删除,且不可恢复,是否删除?",
- "监控":"监控",
- "视频日志":"视频日志",
- "网关设备":"网关设备",
- "开门器":"开门器",
- "面容开锁":"面容开锁",
- "开门方向设置":"开门方向设置",
- "电机功率设置":"电机功率设置",
- "开锁时是否需联网":"开锁时是否需联网",
- "选择要加入分组的锁":"选择要加入分组的锁",
- "锁数量":"锁数量",
- "小米IOT平台":"小米IOT平台",
+ "获取验证码": "获取验证码",
+ "商务合作": "商务合作",
+ "电脑网页版": "电脑网页版",
+ "酒店系统": "酒店系统",
+ "说明书网页版": "说明书网页版",
+ "高级功能": "高级功能",
+ "记录保存": "记录保存",
+ "您可通过短信将密码、电子钥匙信息发给接收人。": "您可通过短信将密码、电子钥匙信息发给接收人。",
+ "您可通过邮件将密码、电子钥匙信息发给接收人。": "您可通过邮件将密码、电子钥匙信息发给接收人。",
+ "购买实名认证提示": "购买实名认证提示",
+ "请选择你希望的实名认证频次": "请选择你希望的实名认证频次",
+ "仅首次": "仅首次",
+ "每日一次": "每日一次",
+ "每周一次": "每周一次",
+ "每月一次": "每月一次",
+ "当前状态": "当前状态",
+ "试用中": "试用中",
+ "高级功能权益内容": "高级功能权益内容",
+ "短信模板": "短信模板",
+ "邮件模板": "邮件模板",
+ "发卡工具": "发卡工具",
+ "购买高级功能须知": "购买高级功能须知",
+ "购买高级功能提示": "购买高级功能提示",
+ "免费体验": "免费体验",
+ "立即开通": "立即开通",
+ "购买短信": "购买短信",
+ "购买邮件": "购买邮件",
+ "购买实名认证次数": "购买实名认证次数",
+ "开通高级功能": "开通高级功能",
+ "选择套餐": "选择套餐",
+ "支付方式": "支付方式",
+ "支付宝": "支付宝",
+ "去支付": "去支付",
+ "你可以自己定义模版的内容,用于发送密码或电子钥匙信息给他人": "你可以自己定义模版的内容,用于发送密码或电子钥匙信息给他人",
+ "高级功能仅能用于你自己的锁": "高级功能仅能用于你自己的锁",
+ "新建模板": "新建模板",
+ "类型": "类型",
+ "模版内容": "模版内容",
+ "预览": "预览",
+ "房间名": "房间名",
+ "预计产生短信条数": "预计产生短信条数",
+ "功能开启后,已失效较长时间的密码、电子钥匙、卡、指纹等开锁权限将被隐藏,不在列表里显示。": "功能开启后,已失效较长时间的密码、电子钥匙、卡、指纹等开锁权限将被隐藏,不在列表里显示。",
+ "对于选中的这些锁,当用户用APP开锁时,他的手机需要是连网的,否则无法开锁": "对于选中的这些锁,当用户用APP开锁时,他的手机需要是连网的,否则无法开锁",
+ "配置WiFi": "配置WiFi",
+ "请输入WiFi名字": "请输入WiFi名字",
+ "WiFi配网": "WiFi配网",
+ "胁迫卡": "胁迫卡",
+ "员工是否有密码": "员工是否有密码",
+ "员工是否有卡": "员工是否有卡",
+ "员工是否有指纹": "员工是否有指纹",
+ "获取钥匙": "获取钥匙",
+ "获取卡": "获取卡",
+ "获取指纹": "获取指纹",
+ "安全验证": "安全验证",
+ "删除账号后,你的所有信息及相关记录都会从平台彻底删除,且不可恢复,是否删除?": "删除账号后,你的所有信息及相关记录都会从平台彻底删除,且不可恢复,是否删除?",
+ "监控": "监控",
+ "视频日志": "视频日志",
+ "网关设备": "网关设备",
+ "开门器": "开门器",
+ "面容开锁": "面容开锁",
+ "开门方向设置": "开门方向设置",
+ "电机功率设置": "电机功率设置",
+ "开锁时是否需联网": "开锁时是否需联网",
+ "选择要加入分组的锁": "选择要加入分组的锁",
+ "锁数量": "锁数量",
+ "小米IOT平台": "小米IOT平台",
"面容开锁设置": "面容开锁设置",
"感应距离": "感应距离",
"防误开": "防误开",
"防误开已关闭,关门后仍可使用面容开锁": "防误开已关闭,关门后仍可使用面容开锁",
"添加和使用面容开锁时": "添加和使用面容开锁时",
- "添加和使用面容开锁时提示":"添加和使用面容开锁时提示",
+ "添加和使用面容开锁时提示": "添加和使用面容开锁时提示",
"秒": "秒",
"请根据门锁实际情况,请谨慎选择电机功率:": "请根据门锁实际情况,请谨慎选择电机功率:",
"小功率:": "小功率:",
@@ -344,43 +344,43 @@
"判断方法:": "判断方法:",
"判断方法内容": "判断方法内容",
"录像时段": "录像时段",
- "密码":"密码",
- "卡":"卡",
- "指纹":"指纹",
- "人脸":"人脸",
- "配件商城":"配件商城",
- "公司名称":"公司名称",
- "请输入公司名字":"请输入公司名字",
- "提示":"提示",
- "是否删除?":"是否删除?",
- "员工信息":"员工信息",
- "员工":"员工",
- "打卡方式无效":"打卡方式无效",
- "中国":"中国",
- "选择钥匙":"选择钥匙",
- "编辑":"编辑",
- "无":"无",
- "有":"有",
- "请输入姓名":"请输入姓名",
- "获取人脸":"获取人脸",
- "选择密码":"选择密码",
- "选择卡":"选择卡",
- "选择指纹":"选择指纹",
- "选择人脸":"选择人脸",
- "员工是否有人脸":"员工是否有人脸",
- "同时删除员工钥匙":"同时删除员工钥匙",
- "删除":"删除",
- "确定要删除员工吗?":"确定要删除员工吗?",
- "月统计":"月统计",
- "迟到":"迟到",
- "早退":"早退",
- "未打卡":"未打卡",
- "钥匙将在":"钥匙将在",
- "天后失效":"天后失效",
- "电量更新时间:":"电量更新时间:",
- "新增配件":"新增配件",
- "钥匙不可用":"钥匙不可用",
- "正在开锁中...":"正在开锁中...",
+ "密码": "密码",
+ "卡": "卡",
+ "指纹": "指纹",
+ "人脸": "人脸",
+ "配件商城": "配件商城",
+ "公司名称": "公司名称",
+ "请输入公司名字": "请输入公司名字",
+ "提示": "提示",
+ "是否删除?": "是否删除?",
+ "员工信息": "员工信息",
+ "员工": "员工",
+ "打卡方式无效": "打卡方式无效",
+ "中国": "中国",
+ "选择钥匙": "选择钥匙",
+ "编辑": "编辑",
+ "无": "无",
+ "有": "有",
+ "请输入姓名": "请输入姓名",
+ "获取人脸": "获取人脸",
+ "选择密码": "选择密码",
+ "选择卡": "选择卡",
+ "选择指纹": "选择指纹",
+ "选择人脸": "选择人脸",
+ "员工是否有人脸": "员工是否有人脸",
+ "同时删除员工钥匙": "同时删除员工钥匙",
+ "删除": "删除",
+ "确定要删除员工吗?": "确定要删除员工吗?",
+ "月统计": "月统计",
+ "迟到": "迟到",
+ "早退": "早退",
+ "未打卡": "未打卡",
+ "钥匙将在": "钥匙将在",
+ "天后失效": "天后失效",
+ "电量更新时间:": "电量更新时间:",
+ "新增配件": "新增配件",
+ "钥匙不可用": "钥匙不可用",
+ "正在开锁中...": "正在开锁中...",
"你的钥匙": "你的钥匙",
"常开模式启动!长按闭锁": "常开模式启动!长按闭锁",
"演示模式": "演示模式",
@@ -563,10 +563,10 @@
"厂商": "厂商",
"型号": "型号",
"密码生成后,请在当日23:59前使用一次进行激活,否则过0点后未激活则失效。密码激活后,有效期内不限次数使用。": "密码生成后,请在当日23:59前使用一次进行激活,否则过0点后未激活则失效。密码激活后,有效期内不限次数使用。",
- "密码生成后,请在当日23:59前使用,否则过0点后失效。清空码用于清空今天0点之前生成的所有密码。":"密码生成后,请在当日23:59前使用,否则过0点后失效。清空码用于清空今天0点之前生成的所有密码。",
+ "密码生成后,请在当日23:59前使用,否则过0点后失效。清空码用于清空今天0点之前生成的所有密码。": "密码生成后,请在当日23:59前使用,否则过0点后失效。清空码用于清空今天0点之前生成的所有密码。",
"密码生成后,请在当日23:59前使用,否则过0点后失效。": "密码生成后,请在当日23:59前使用,否则过0点后失效。",
"清空密码底部提示": "清空密码底部提示",
- "密码不一致哦":"密码不一致哦",
+ "密码不一致哦": "密码不一致哦",
"相机": "相机",
"相册": "相册",
"读写": "读写",
@@ -583,137 +583,137 @@
"请手动在系统设置中开启": "请手动在系统设置中开启",
"权限以继续使用应用": "权限以继续使用应用。",
"去设置": "去设置",
- "虹膜":"虹膜",
- "手掌":"手掌",
- "商城":"mall",
- "我的":"my",
- "微信公众号推送":"微信公众号推送",
- "开启微信接收报警消息需要先关注斯凯智能锁微信公众号,请保存二维码并使用微信扫一扫设置":"开启微信接收报警消息需要先关注斯凯智能锁微信公众号,请保存二维码并使用微信扫一扫设置",
- "蓝牙":"蓝牙",
- "需要访问蓝牙权限才能使用添加钥匙功能的位置信息":"需要访问蓝牙权限才能使用添加钥匙功能的位置信息",
- "请输入Email":"请输入Email",
- "请输入手机号":"请输入手机号",
- "家人到家":"家人到家",
- "添加家人":"添加家人",
- "若锁没有联网,除电子钥匙外,密码、卡、指纹等开门提醒无法及时发送,请根据你的实际情况选择。":"若锁没有联网,除电子钥匙外,密码、卡、指纹等开门提醒无法及时发送,请根据你的实际情况选择。",
- "消息提醒":"消息提醒",
- "开门通知":"开门通知",
- "N天未开门":"N天未开门",
- "门未关好":"门未关好",
- "防拆报警":"防拆报警",
- "低电量提醒":"低电量提醒",
- "胁迫开门":"胁迫开门",
- "有人按门铃":"有人按门铃",
- "有人出现在门口":"有人出现在门口",
- "提醒方式":"提醒方式",
- "开门方式":"开门方式",
- "请选择":"请选择",
- "家人":"家人",
- "保存":"保存",
- "APP推送":"APP推送",
- "管理员":"管理员",
- "未启用":"未启用",
- "已启用":"已启用",
- "省电模式":"省电模式",
- "逗留抓拍模式":"逗留抓拍模式",
- "实时监控模式":"实时监控模式",
- "自定义模式":"自定义模式",
- "猫眼设置":"猫眼设置",
- "猫眼工作模式":"猫眼工作模式",
- "自动亮屏":"自动亮屏",
- "亮屏持续时间":"亮屏持续时间",
- "逗留警告":"逗留警告",
- "异常警告":"异常警告",
- "短信提醒":"短信提醒",
- "邮件提醒":"邮件提醒",
- "关锁":"Close Lock",
- "功能":"Function",
- "配件":"Parts",
- "N天未开门提醒":"N天未开门提醒",
- "当被胁迫要求强行开锁时,使用胁迫指纹会触发报警,报警消息会推送给管理员,该功能需要锁联网":"当被胁迫要求强行开锁时,使用胁迫指纹会触发报警,报警消息会推送给管理员,该功能需要锁联网",
- "胁迫指纹":"胁迫指纹",
- "指纹列表":"指纹列表",
- "经过以上设定的时间,锁没有被开启,系统会给指定对象发送提醒消息,该功能需要锁联网":"经过以上设定的时间,锁没有被开启,系统会给指定对象发送提醒消息,该功能需要锁联网",
- "打开提醒后,当锁电量低于20%、10%和5%,系统会给指定对象发送提醒消息。电量读取方式:网关读取或APP读取。":"打开提醒后,当锁电量低于20%、10%和5%,系统会给指定对象发送提醒消息。电量读取方式:网关读取或APP读取。",
- "未开门时间":"未开门时间",
- "添加和使用面容开锁时:":"添加和使用面容开锁时:",
- "云存":"云存",
- "本地":"本地",
- "3天滚动储存":"3天滚动储存",
- "去升级":"去升级",
- "下载列表":"下载列表",
- "已下载":"已下载",
- "全部视频":"全部视频",
- "已为本设备免费提供3大滚动视频储存服务":"已为本设备免费提供3大滚动视频储存服务",
- "视频播放":"视频播放",
- "全选":"全选",
- "请选择要删除的视频":"请选择要删除的视频",
- "请选择要下载的视频":"请选择要下载的视频",
- "欢迎使用":"欢迎使用",
+ "虹膜": "虹膜",
+ "手掌": "手掌",
+ "商城": "mall",
+ "我的": "my",
+ "微信公众号推送": "微信公众号推送",
+ "开启微信接收报警消息需要先关注斯凯智能锁微信公众号,请保存二维码并使用微信扫一扫设置": "开启微信接收报警消息需要先关注斯凯智能锁微信公众号,请保存二维码并使用微信扫一扫设置",
+ "蓝牙": "蓝牙",
+ "需要访问蓝牙权限才能使用添加钥匙功能的位置信息": "需要访问蓝牙权限才能使用添加钥匙功能的位置信息",
+ "请输入Email": "请输入Email",
+ "请输入手机号": "请输入手机号",
+ "家人到家": "家人到家",
+ "添加家人": "添加家人",
+ "若锁没有联网,除电子钥匙外,密码、卡、指纹等开门提醒无法及时发送,请根据你的实际情况选择。": "若锁没有联网,除电子钥匙外,密码、卡、指纹等开门提醒无法及时发送,请根据你的实际情况选择。",
+ "消息提醒": "消息提醒",
+ "开门通知": "开门通知",
+ "N天未开门": "N天未开门",
+ "门未关好": "门未关好",
+ "防拆报警": "防拆报警",
+ "低电量提醒": "低电量提醒",
+ "胁迫开门": "胁迫开门",
+ "有人按门铃": "有人按门铃",
+ "有人出现在门口": "有人出现在门口",
+ "提醒方式": "提醒方式",
+ "开门方式": "开门方式",
+ "请选择": "请选择",
+ "家人": "家人",
+ "保存": "保存",
+ "APP推送": "APP推送",
+ "管理员": "管理员",
+ "未启用": "未启用",
+ "已启用": "已启用",
+ "省电模式": "省电模式",
+ "逗留抓拍模式": "逗留抓拍模式",
+ "实时监控模式": "实时监控模式",
+ "自定义模式": "自定义模式",
+ "猫眼设置": "猫眼设置",
+ "猫眼工作模式": "猫眼工作模式",
+ "自动亮屏": "自动亮屏",
+ "亮屏持续时间": "亮屏持续时间",
+ "逗留警告": "逗留警告",
+ "异常警告": "异常警告",
+ "短信提醒": "短信提醒",
+ "邮件提醒": "邮件提醒",
+ "关锁": "Close Lock",
+ "功能": "Function",
+ "配件": "Parts",
+ "N天未开门提醒": "N天未开门提醒",
+ "当被胁迫要求强行开锁时,使用胁迫指纹会触发报警,报警消息会推送给管理员,该功能需要锁联网": "当被胁迫要求强行开锁时,使用胁迫指纹会触发报警,报警消息会推送给管理员,该功能需要锁联网",
+ "胁迫指纹": "胁迫指纹",
+ "指纹列表": "指纹列表",
+ "经过以上设定的时间,锁没有被开启,系统会给指定对象发送提醒消息,该功能需要锁联网": "经过以上设定的时间,锁没有被开启,系统会给指定对象发送提醒消息,该功能需要锁联网",
+ "打开提醒后,当锁电量低于20%、10%和5%,系统会给指定对象发送提醒消息。电量读取方式:网关读取或APP读取。": "打开提醒后,当锁电量低于20%、10%和5%,系统会给指定对象发送提醒消息。电量读取方式:网关读取或APP读取。",
+ "未开门时间": "未开门时间",
+ "添加和使用面容开锁时:": "添加和使用面容开锁时:",
+ "云存": "云存",
+ "本地": "本地",
+ "3天滚动储存": "3天滚动储存",
+ "去升级": "去升级",
+ "下载列表": "下载列表",
+ "已下载": "已下载",
+ "全部视频": "全部视频",
+ "已为本设备免费提供3大滚动视频储存服务": "已为本设备免费提供3大滚动视频储存服务",
+ "视频播放": "视频播放",
+ "全选": "全选",
+ "请选择要删除的视频": "请选择要删除的视频",
+ "请选择要下载的视频": "请选择要下载的视频",
+ "欢迎使用": "欢迎使用",
"用户协议和隐私政策概要": "用户协议和隐私政策概要",
"协议概要": "协议概要",
- "感谢您使用本应用。我们非常重视您的个人信息和隐私保护,在使用本产品之前,请认真阅读":"感谢您使用本应用。我们非常重视您的个人信息和隐私保护,在使用本产品之前,请认真阅读",
- "《用户协议》":"《用户协议》",
- "和":"和",
+ "感谢您使用本应用。我们非常重视您的个人信息和隐私保护,在使用本产品之前,请认真阅读": "感谢您使用本应用。我们非常重视您的个人信息和隐私保护,在使用本产品之前,请认真阅读",
+ "《用户协议》": "《用户协议》",
+ "和": "和",
"《隐私政策》": "《隐私政策》",
"的全部内容。点击“同意”即表示您同意并接受全部条款。若选择不同意,将无法使用我们的产品和服务,并会退出应用。": "的全部内容。点击“同意”即表示您同意并接受全部条款。若选择不同意,将无法使用我们的产品和服务,并会退出应用。",
- "不同意":"不同意",
- "同意":"同意",
- "该功能是高级功能,请开通后再使用":"该功能是高级功能,请开通后再使用",
- "常用程序":"常用程序",
- "该锁已被重置":"该锁已被重置",
- "需要访问读写权限才能使用手动升级固件":"需要访问读写权限才能使用手动升级固件",
- "错误D固件,请选择正确的文件":"错误固件,请选择正确的文件",
- "非SYD固件,请选择正确的文件":"非SYD固件,请选择正确的文件",
- "文件校验失败 0x01":"文件校验失败 0x01",
- "解析元数据失败,请选择正确的文件":"解析元数据失败,请选择正确的文件",
- "文件校验失败 0x02":"文件校验失败 0x02",
- "文件校验失败 0x03":"文件校验失败 0x03",
- "固件升级完成":"固件升级完成",
- "记录":"记录",
- "开通高级功能后才可以对锁进行管理":"开通高级功能后才可以对锁进行管理",
- "去开通":"去开通",
- "实名认证":"实名认证",
- "当前剩余数量":"当前剩余数量",
- "购买":"购买",
- "实名认证为付费功能,请购买后再使用":"实名认证为付费功能,请购买后再使用",
- "退出添加":"退出添加",
- "管理员已满":"管理员已满",
+ "不同意": "不同意",
+ "同意": "同意",
+ "该功能是高级功能,请开通后再使用": "该功能是高级功能,请开通后再使用",
+ "常用程序": "常用程序",
+ "该锁已被重置": "该锁已被重置",
+ "需要访问读写权限才能使用手动升级固件": "需要访问读写权限才能使用手动升级固件",
+ "错误D固件,请选择正确的文件": "错误固件,请选择正确的文件",
+ "非SYD固件,请选择正确的文件": "非SYD固件,请选择正确的文件",
+ "文件校验失败 0x01": "文件校验失败 0x01",
+ "解析元数据失败,请选择正确的文件": "解析元数据失败,请选择正确的文件",
+ "文件校验失败 0x02": "文件校验失败 0x02",
+ "文件校验失败 0x03": "文件校验失败 0x03",
+ "固件升级完成": "固件升级完成",
+ "记录": "记录",
+ "开通高级功能后才可以对锁进行管理": "开通高级功能后才可以对锁进行管理",
+ "去开通": "去开通",
+ "实名认证": "实名认证",
+ "当前剩余数量": "当前剩余数量",
+ "购买": "购买",
+ "实名认证为付费功能,请购买后再使用": "实名认证为付费功能,请购买后再使用",
+ "退出添加": "退出添加",
+ "管理员已满": "管理员已满",
"用户已满": "用户已满",
"锁上面添加指纹已满": "锁上面添加指纹已满",
"指纹已存在": "指纹已存在",
"锁上面添加人脸已满": "锁上面添加人脸已满",
"人脸已存在": "人脸已存在",
- "锁上面添加卡已满":"锁上面添加卡已满",
+ "锁上面添加卡已满": "锁上面添加卡已满",
"卡已存在": "卡已存在",
"锁上面添加密码已满": "锁上面添加密码已满",
"密码已存在": "密码已存在",
"请输入密码": "请输入密码",
"暂无密码,无需重置": "暂无密码,无需重置",
- "真实姓名":"真实姓名",
- "身份证号":"身份证号",
- "请输入真实姓名":"请输入真实姓名",
- "请输入身份证号":"请输入身份证号",
- "请输入身份证号和真实姓名":"请输入身份证号和真实姓名",
- "点击返回设备配对":"点击返回设备配对",
- "无法连接?尝试升级":"无法连接?尝试升级",
- "固件升级提示":"固件升级提示",
- "请先获取固件文件到手机本地,再选择升级":"请先获取固件文件到手机本地,再选择升级",
- "固件升级中":"固件升级中",
- "取消升级":"取消升级",
- "固件传输中":"固件传输中",
- "关闭":"关闭",
- "传输中'":"传输中",
- "操作记录":"操作记录",
- "修改姓名":"修改姓名",
- "传输中":"传输中",
- "发送人":"发送人",
- "发送时间":"发送时间",
- "钥匙详情":"钥匙详情",
- "姓名":"姓名",
- "发送":"发送",
- "请确认姓名全名和身份证号码是否正确":"请确认姓名全名和身份证号码是否正确",
- "传输期间请勿离开当前页面":"传输期间请勿离开当前页面",
+ "真实姓名": "真实姓名",
+ "身份证号": "身份证号",
+ "请输入真实姓名": "请输入真实姓名",
+ "请输入身份证号": "请输入身份证号",
+ "请输入身份证号和真实姓名": "请输入身份证号和真实姓名",
+ "点击返回设备配对": "点击返回设备配对",
+ "无法连接?尝试升级": "无法连接?尝试升级",
+ "固件升级提示": "固件升级提示",
+ "请先获取固件文件到手机本地,再选择升级": "请先获取固件文件到手机本地,再选择升级",
+ "固件升级中": "固件升级中",
+ "取消升级": "取消升级",
+ "固件传输中": "固件传输中",
+ "关闭": "关闭",
+ "传输中'": "传输中",
+ "操作记录": "操作记录",
+ "修改姓名": "修改姓名",
+ "传输中": "传输中",
+ "发送人": "发送人",
+ "发送时间": "发送时间",
+ "钥匙详情": "钥匙详情",
+ "姓名": "姓名",
+ "发送": "发送",
+ "请确认姓名全名和身份证号码是否正确": "请确认姓名全名和身份证号码是否正确",
+ "传输期间请勿离开当前页面": "传输期间请勿离开当前页面",
"机型": "机型",
"硬件版本": "硬件版本",
"固件版本": "固件版本",
@@ -724,30 +724,30 @@
"操作失败,请确认锁是否在附近,或重启手机蓝牙后再试。": "操作失败,请确认锁是否在附近,或重启手机蓝牙后再试。",
"如果是全自动锁,请使屏幕变亮": "如果是全自动锁,请使屏幕变亮",
"正在尝试闭锁……": "正在尝试闭锁……",
- "清空记录":"清空记录",
- "是否要删除操作记录?":"是否要删除操作记录?",
- "被删除的记录不能恢复":"被删除的记录不能恢复",
- "全部事件":"全部事件",
- "开锁事件":"开锁事件",
- "异常事件":"异常事件",
- "门铃事件":"门铃事件",
- "视频事件":"视频事件",
- "请开启蓝牙":"请开启蓝牙",
- "请选择有效日":"请选择有效日",
+ "清空记录": "清空记录",
+ "是否要删除操作记录?": "是否要删除操作记录?",
+ "被删除的记录不能恢复": "被删除的记录不能恢复",
+ "全部事件": "全部事件",
+ "开锁事件": "开锁事件",
+ "异常事件": "异常事件",
+ "门铃事件": "门铃事件",
+ "视频事件": "视频事件",
+ "请开启蓝牙": "请开启蓝牙",
+ "请选择有效日": "请选择有效日",
"公司名字长度不能小于 6 ": "公司名字长度不能小于 6 ",
"已是最新版本": "已是最新版本",
- "一":"一",
- "二":"二",
- "三":"三",
- "四":"四",
- "五":"五",
- "六":"六",
- "日":"日",
- "新建短信模版":"新建短信模版",
- "新建邮件模版":"新建邮件模版",
- "自定义短信模版":"自定义短信模版",
- "自定义邮件模版":"自定义邮件模版",
- "名称":"名称",
+ "一": "一",
+ "二": "二",
+ "三": "三",
+ "四": "四",
+ "五": "五",
+ "六": "六",
+ "日": "日",
+ "新建短信模版": "新建短信模版",
+ "新建邮件模版": "新建邮件模版",
+ "自定义短信模版": "自定义短信模版",
+ "自定义邮件模版": "自定义邮件模版",
+ "名称": "名称",
"星星锁": "星星锁",
"无考勤记录": "无考勤记录",
"大家干劲十足": "大家干劲十足",
@@ -756,7 +756,7 @@
"确认国家或地区": "确认国家或地区",
"我知道了": "我知道了",
"为了让您及时收到重要通知和更新,我们需要获取通知权限。请点击“确定”按钮,然后在设置页面中启用通知权限。": "为了让您及时收到重要通知和更新,我们需要获取通知权限。请点击“确定”按钮,然后在设置页面中启用通知权限。",
- "开启后,可通过长按锁上的设置键重新上电,用APP重新添加":"开启后,可通过长按锁上的设置键重新上电,用APP重新添加",
+ "开启后,可通过长按锁上的设置键重新上电,用APP重新添加": "开启后,可通过长按锁上的设置键重新上电,用APP重新添加",
"已有": "已有",
"新增": "新增",
"账号格式错误": "账号格式错误",
@@ -784,21 +784,21 @@
"该已锁被删除": "该已锁被删除",
"授权管理员只能查看和管理自己下发的钥匙、密码等权限": "授权管理员只能查看和管理自己下发的钥匙、密码等权限",
"添加授权管理员": "添加授权管理员",
- "导出记录":"导出记录",
- "选择时间段":"选择时间段",
- "导出":"导出",
- "批量导出":"批量导出",
- "读取记录":"读取记录",
- "手机需联网":"手机需联网",
- "设备":"设备",
- "消息":"消息",
- "智能分析":"智能分析",
- "精准识别设备事件,过滤无效信息":"精准识别设备事件,过滤无效信息",
- "系统设置":"系统设置",
- "系统的全局配置在此项内进行设置":"系统的全局配置在此项内进行设置",
- "导出操作记录":"导出操作记录",
- "立即查看":"立即查看",
- "导出成功":"导出成功",
+ "导出记录": "导出记录",
+ "选择时间段": "选择时间段",
+ "导出": "导出",
+ "批量导出": "批量导出",
+ "读取记录": "读取记录",
+ "手机需联网": "手机需联网",
+ "设备": "设备",
+ "消息": "消息",
+ "智能分析": "智能分析",
+ "精准识别设备事件,过滤无效信息": "精准识别设备事件,过滤无效信息",
+ "系统设置": "系统设置",
+ "系统的全局配置在此项内进行设置": "系统的全局配置在此项内进行设置",
+ "导出操作记录": "导出操作记录",
+ "立即查看": "立即查看",
+ "导出成功": "导出成功",
"发送钥匙": "发送钥匙",
"进度": "进度",
"失败": "失败",
@@ -931,7 +931,7 @@
"或发生异常事件时": "或发生异常事件时",
"逗留达到10秒": "逗留达到10秒",
"约1.5米": "约1.5米",
- "随时":"随时",
+ "随时": "随时",
"立即录像": "立即录像",
"录像时机": "录像时机",
"有人出现时录像": "有人出现时录像",
@@ -1087,7 +1087,8 @@
"离线": "离线",
"购买记录": "购买记录",
"使用记录": "使用记录",
-
"失效时间要大于当前时间": "失效时间要大于当前时间",
- "修改名字": "修改名字"
+ "修改名字": "修改名字",
+ "时": "时",
+ "分": "分"
}
diff --git a/lan/lan_zh.json b/lan/lan_zh.json
index e65252ab..427d8af0 100755
--- a/lan/lan_zh.json
+++ b/lan/lan_zh.json
@@ -734,13 +734,13 @@
"请选择有效日": "请选择有效日",
"公司名字长度不能小于 6 ": "公司名字长度不能小于 6 ",
"已是最新版本": "已是最新版本",
- "一":"一",
- "二":"二",
- "三":"三",
- "四":"四",
- "五":"五",
- "六":"六",
- "日":"日",
+ "一": "一",
+ "二": "二",
+ "三": "三",
+ "四": "四",
+ "五": "五",
+ "六": "六",
+ "日": "日",
"新建短信模版": "新建短信模版",
"新建邮件模版": "新建邮件模版",
"自定义短信模版": "自定义短信模版",
@@ -782,21 +782,21 @@
"该已锁被删除": "该已锁被删除",
"授权管理员只能查看和管理自己下发的钥匙、密码等权限": "授权管理员只能查看和管理自己下发的钥匙、密码等权限",
"添加授权管理员": "添加授权管理员",
- "导出记录":"导出记录",
- "选择时间段":"选择时间段",
- "导出":"导出",
- "批量导出":"批量导出",
- "读取记录":"读取记录",
- "手机需联网":"手机需联网",
- "设备":"设备",
- "消息":"消息",
- "智能分析":"智能分析",
- "精准识别设备事件,过滤无效信息":"精准识别设备事件,过滤无效信息",
- "系统设置":"系统设置",
- "系统的全局配置在此项内进行设置":"系统的全局配置在此项内进行设置",
- "导出操作记录":"导出操作记录",
- "立即查看":"立即查看",
- "导出成功":"导出成功",
+ "导出记录": "导出记录",
+ "选择时间段": "选择时间段",
+ "导出": "导出",
+ "批量导出": "批量导出",
+ "读取记录": "读取记录",
+ "手机需联网": "手机需联网",
+ "设备": "设备",
+ "消息": "消息",
+ "智能分析": "智能分析",
+ "精准识别设备事件,过滤无效信息": "精准识别设备事件,过滤无效信息",
+ "系统设置": "系统设置",
+ "系统的全局配置在此项内进行设置": "系统的全局配置在此项内进行设置",
+ "导出操作记录": "导出操作记录",
+ "立即查看": "立即查看",
+ "导出成功": "导出成功",
"发送钥匙": "发送钥匙",
"进度": "进度",
"失败": "失败",
@@ -929,7 +929,7 @@
"或发生异常事件时": "或发生异常事件时",
"逗留达到10秒": "逗留达到10秒",
"约1.5米": "约1.5米",
- "随时":"随时",
+ "随时": "随时",
"立即录像": "立即录像",
"录像时机": "录像时机",
"有人出现时录像": "有人出现时录像",
@@ -1087,7 +1087,8 @@
"离线": "离线",
"购买记录": "购买记录",
"使用记录": "使用记录",
-
"失效时间要大于当前时间": "失效时间要大于当前时间",
- "修改名字": "修改名字"
+ "修改名字": "修改名字",
+ "时": "时",
+ "分": "分"
}
diff --git a/lib/main/lockDetail/checkingIn/checkingInHolidays/checkingInAddHolidays/checkingInAddHolidays_page.dart b/lib/main/lockDetail/checkingIn/checkingInHolidays/checkingInAddHolidays/checkingInAddHolidays_page.dart
index 21415c8e..b504e3db 100755
--- a/lib/main/lockDetail/checkingIn/checkingInHolidays/checkingInAddHolidays/checkingInAddHolidays_page.dart
+++ b/lib/main/lockDetail/checkingIn/checkingInHolidays/checkingInAddHolidays/checkingInAddHolidays_page.dart
@@ -1,10 +1,12 @@
-
import 'package:date_format/date_format.dart';
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:get/get.dart';
import 'package:star_lock/main/lockDetail/checkingIn/checkingInHolidays/checkingInAddHolidays/checkingInAddHolidays_state.dart';
+import 'package:star_lock/tools/pickers/pickers.dart';
+import 'package:star_lock/tools/pickers/time_picker/model/date_mode.dart';
+import 'package:star_lock/tools/pickers/time_picker/model/pduration.dart';
import '../../../../../app_settings/app_colors.dart';
import '../../../../../tools/commonItem.dart';
@@ -43,9 +45,7 @@ class _CheckingInAddHolidaysPageState extends State {
isHaveLine: true,
isHaveRightWidget: true,
setHeight: false,
- rightWidget: getTFWidget(
- '(${"必填".tr})',
- maxSize: 50)),
+ rightWidget: getTFWidget('(${"必填".tr})', maxSize: 50)),
Obx(() => CommonItem(
leftTitel: '开始日期'.tr,
rightTitle: state.beginDate.value.isEmpty
@@ -54,19 +54,11 @@ class _CheckingInAddHolidaysPageState extends State {
isHaveLine: true,
isHaveDirection: false,
action: () async {
- await showDialog(
- context: context,
- builder: (BuildContext context) {
- return ShowCalendar(
- datePickerMode: DatePickerMode.day,
- selectAction: (DateTime dateTime) {
- final String beginDate = formatDate(
- dateTime, [yyyy, '-', mm, '-', dd]);
- state.beginDate.value = beginDate;
- Get.back();
- // Navigator.of(context).pop(true);
- });
- });
+ Pickers.showDatePicker(context,
+ selectDate: PDuration.now(),
+ mode: DateMode.YMD, onConfirm: (PDuration p) {
+ state.beginDate.value = formatDate(p);
+ });
})),
Obx(() => CommonItem(
leftTitel: '结束日期'.tr,
@@ -76,18 +68,11 @@ class _CheckingInAddHolidaysPageState extends State {
isHaveLine: true,
isHaveDirection: false,
action: () async {
- await showDialog(
- context: context,
- builder: (BuildContext context) {
- return ShowCalendar(
- datePickerMode: DatePickerMode.day,
- selectAction: (DateTime dateTime) {
- final String endDate = formatDate(
- dateTime, [yyyy, '-', mm, '-', dd]);
- state.endDate.value = endDate;
- Get.back();
- });
- });
+ Pickers.showDatePicker(context,
+ selectDate: PDuration.now(),
+ mode: DateMode.YMD, onConfirm: (PDuration p) {
+ state.endDate.value = formatDate(p);
+ });
})),
Obx(() => CommonItem(
leftTitel: '补班日期'.tr,
@@ -95,18 +80,11 @@ class _CheckingInAddHolidaysPageState extends State {
isHaveLine: false,
isHaveDirection: false,
action: () async {
- await showDialog(
- context: context,
- builder: (BuildContext context) {
- return ShowCalendar(
- datePickerMode: DatePickerMode.day,
- selectAction: (DateTime dateTime) {
- final String makeUpWorkDate = formatDate(
- dateTime, [yyyy, '-', mm, '-', dd]);
- state.makeUpWorkDate.value = makeUpWorkDate;
- Get.back();
- });
- });
+ Pickers.showDatePicker(context,
+ selectDate: PDuration.now(),
+ mode: DateMode.YMD, onConfirm: (PDuration p) {
+ state.makeUpWorkDate.value = formatDate(p);
+ });
})),
SizedBox(
height: 50.w,
@@ -168,4 +146,21 @@ class _CheckingInAddHolidaysPageState extends State {
),
);
}
+
+ String formatDate(PDuration p) {
+ if (p == null) {
+ throw ArgumentError('Input must be a valid DateTime object');
+ }
+
+ String formatPart(int part) {
+ return part.toString().padLeft(2, '0');
+ }
+
+ String monthFormatted = formatPart(p.month!);
+ String dayFormatted = formatPart(p.day!);
+ String hourFormatted = formatPart(p.hour!);
+ String minuteFormatted = formatPart(p.minute!);
+
+ return '${p.year}-${monthFormatted}-${dayFormatted}';
+ }
}
diff --git a/lib/main/lockDetail/checkingIn/checkingInHolidays/checkingInSetHolidays/checkingInSetHolidays_page.dart b/lib/main/lockDetail/checkingIn/checkingInHolidays/checkingInSetHolidays/checkingInSetHolidays_page.dart
index cb5cd16a..1f2515ca 100755
--- a/lib/main/lockDetail/checkingIn/checkingInHolidays/checkingInSetHolidays/checkingInSetHolidays_page.dart
+++ b/lib/main/lockDetail/checkingIn/checkingInHolidays/checkingInSetHolidays/checkingInSetHolidays_page.dart
@@ -1,4 +1,3 @@
-
import 'package:flutter/material.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:get/get.dart';
@@ -219,8 +218,6 @@ class _CheckingInSetHolidaysPageState extends State {
context,
// 模式,详见下方
mode: DateMode.Y,
- // 后缀 默认Suffix.normal(),为空的话Suffix()
- suffix: Suffix(years: ' 年'.tr),
// 样式 详见下方样式
pickerStyle: PickerStyle(
cancelButton: GestureDetector(
diff --git a/lib/main/lockDetail/checkingIn/checkingInList/checkingInList_page.dart b/lib/main/lockDetail/checkingIn/checkingInList/checkingInList_page.dart
index d570b994..7ae01047 100755
--- a/lib/main/lockDetail/checkingIn/checkingInList/checkingInList_page.dart
+++ b/lib/main/lockDetail/checkingIn/checkingInList/checkingInList_page.dart
@@ -1,6 +1,7 @@
import 'package:cached_network_image/cached_network_image.dart';
import 'package:date_format/date_format.dart';
+import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:get/get.dart';
@@ -101,106 +102,108 @@ class _CheckingInListPageState extends State {
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
// SizedBox(width: 30.w,),
- Row(
- children: [
- SizedBox(
- width: 20.w,
- ),
- GestureDetector(
- onTap: () async {
- final bool? isDemoMode =
- await Storage.getBool(ifIsDemoModeOrNot);
- if (isDemoMode == false) {
- setState(() {
- state.isDay.value = true;
- final DateTime dateTime =
- DateTime.fromMillisecondsSinceEpoch(
- state.checkListDateTimestamp.value);
- final String beginDate =
- formatDate(dateTime, [mm, '-', dd]);
- state.checkListDate.value = beginDate;
- logic.loadDataByType();
- });
- } else {
- // Get.toNamed(Routers.selectLockTypePage);
- logic.showToast('演示模式'.tr);
- }
- },
- child: Container(
- width: 90.w,
- // height: 100.h,
- color: Colors.white,
- child: Obx(() => Column(
- mainAxisAlignment: MainAxisAlignment.spaceAround,
- children: [
- Text('日榜'.tr,
- style: TextStyle(
- color: state.isDay.value
- ? AppColors.mainColor
- : Colors.black,
- fontSize: 22.sp)),
- SizedBox(height: 10.h),
- Visibility(
- visible: state.isDay.value,
- child: Container(
- width: 20.w,
- height: 2.h,
- color: state.isDay.value
- ? AppColors.mainColor
- : Colors.black),
- )
- ],
- )),
+ Expanded(
+ child: Row(
+ children: [
+ SizedBox(
+ width: 20.w,
),
- ),
- // SizedBox(width: 20.w,),
- GestureDetector(
- onTap: () async {
- final bool? isDemoMode =
- await Storage.getBool(ifIsDemoModeOrNot);
- if (isDemoMode == false) {
- setState(() {
- state.isDay.value = false;
- final DateTime dateTime =
- DateTime.fromMillisecondsSinceEpoch(
- state.checkListDateTimestamp.value);
- final String beginDate =
- formatDate(dateTime, [mm]);
- state.checkListDate.value = beginDate;
- logic.loadDataByType();
- });
- } else {
- // Get.toNamed(Routers.selectLockTypePage);
- logic.showToast('演示模式'.tr);
- }
- },
- child: Container(
- width: 90.w,
- // height: 100.h,
- color: Colors.white,
- child: Obx(() => Column(
- mainAxisAlignment: MainAxisAlignment.spaceAround,
- children: [
- Text('月榜'.tr,
- style: TextStyle(
- color: !state.isDay.value
- ? AppColors.mainColor
- : Colors.black,
- fontSize: 22.sp)),
- SizedBox(height: 10.h),
- Visibility(
- visible: !state.isDay.value,
+ GestureDetector(
+ onTap: () async {
+ final bool? isDemoMode =
+ await Storage.getBool(ifIsDemoModeOrNot);
+ if (isDemoMode == false) {
+ setState(() {
+ state.isDay.value = true;
+ final DateTime dateTime =
+ DateTime.fromMillisecondsSinceEpoch(
+ state.checkListDateTimestamp.value);
+ final String beginDate =
+ formatDate(dateTime, [mm, '-', dd]);
+ state.checkListDate.value = beginDate;
+ logic.loadDataByType();
+ });
+ } else {
+ // Get.toNamed(Routers.selectLockTypePage);
+ logic.showToast('演示模式'.tr);
+ }
+ },
+ child: Container(
+
+ // height: 100.h,
+ color: Colors.white,
+ child: Obx(() => Column(
+ mainAxisAlignment: MainAxisAlignment.spaceAround,
+ children: [
+ Text('日榜'.tr,
+ style: TextStyle(
+ color: state.isDay.value
+ ? AppColors.mainColor
+ : Colors.black,
+ fontSize: 22.sp)),
+ SizedBox(height: 10.h),
+ Visibility(
+ visible: state.isDay.value,
child: Container(
width: 20.w,
height: 2.h,
- color: !state.isDay.value
+ color: state.isDay.value
? AppColors.mainColor
- : Colors.black))
- ],
- )),
+ : Colors.black),
+ )
+ ],
+ )),
+ ),
),
- ),
- ],
+ SizedBox(width: 20.w,),
+ GestureDetector(
+ onTap: () async {
+ final bool? isDemoMode =
+ await Storage.getBool(ifIsDemoModeOrNot);
+ if (isDemoMode == false) {
+ setState(() {
+ state.isDay.value = false;
+ final DateTime dateTime =
+ DateTime.fromMillisecondsSinceEpoch(
+ state.checkListDateTimestamp.value);
+ final String beginDate =
+ formatDate(dateTime, [mm]);
+ state.checkListDate.value = beginDate;
+ logic.loadDataByType();
+ });
+ } else {
+ // Get.toNamed(Routers.selectLockTypePage);
+ logic.showToast('演示模式'.tr);
+ }
+ },
+ child: Container(
+
+ // height: 100.h,
+ color: Colors.white,
+ child: Obx(() => Column(
+ mainAxisAlignment: MainAxisAlignment.spaceAround,
+ children: [
+ Text('月榜'.tr,
+ style: TextStyle(
+ color: !state.isDay.value
+ ? AppColors.mainColor
+ : Colors.black,
+ fontSize: 22.sp)),
+ SizedBox(height: 10.h),
+ Visibility(
+ visible: !state.isDay.value,
+ child: Container(
+ width: 20.w,
+ height: 2.h,
+ color: !state.isDay.value
+ ? AppColors.mainColor
+ : Colors.black))
+ ],
+ )),
+ ),
+ ),
+ ],
+ ),
),
GestureDetector(
onTap: () async {
diff --git a/lib/main/lockDetail/checkingIn/checkingInSetWorkdaySet/checkingInSetWorkdaySet_page.dart b/lib/main/lockDetail/checkingIn/checkingInSetWorkdaySet/checkingInSetWorkdaySet_page.dart
index 305280cf..a3a058a8 100755
--- a/lib/main/lockDetail/checkingIn/checkingInSetWorkdaySet/checkingInSetWorkdaySet_page.dart
+++ b/lib/main/lockDetail/checkingIn/checkingInSetWorkdaySet/checkingInSetWorkdaySet_page.dart
@@ -1,4 +1,3 @@
-
import 'package:flutter/material.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:get/get.dart';
@@ -19,8 +18,10 @@ class CheckingInSetWorkdaySet extends StatefulWidget {
}
class _CheckingInSetWorkdaySetState extends State {
- final CheckingInSetWorkdaySetLogic logic = Get.put(CheckingInSetWorkdaySetLogic());
- final CheckingInSetWorkdaySetState state = Get.find().state;
+ final CheckingInSetWorkdaySetLogic logic =
+ Get.put(CheckingInSetWorkdaySetLogic());
+ final CheckingInSetWorkdaySetState state =
+ Get.find().state;
@override
Widget build(BuildContext context) {
@@ -33,22 +34,28 @@ class _CheckingInSetWorkdaySetState extends State {
body: ListView(
children: [
topBtnWidget(),
- Obx(() => Visibility(visible: state.isCustom.value, child: bottomCustomSelectBtn())),
- Obx(() => Visibility(visible: !state.isCustom.value, child: bottomOddOrEvenDaysOffSelectBtn())),
- SizedBox(height: 50.h,),
+ Obx(() => Visibility(
+ visible: state.isCustom.value, child: bottomCustomSelectBtn())),
+ Obx(() => Visibility(
+ visible: !state.isCustom.value,
+ child: bottomOddOrEvenDaysOffSelectBtn())),
+ SizedBox(
+ height: 50.h,
+ ),
Container(
margin: EdgeInsets.only(left: 20.w, right: 20.w),
- child: SubmitBtn(btnName: '确定'.tr, onClick: () {
- if(state.pushType.value == '2'){
- logic.editCheckInSetInfoData();
- }else{
- Get.back(result: {
- 'attendanceType':state.isCustom.value,
- 'weekDays':state.weekDays.value,
- });
- }
-
- }),
+ child: SubmitBtn(
+ btnName: '确定'.tr,
+ onClick: () {
+ if (state.pushType.value == '2') {
+ logic.editCheckInSetInfoData();
+ } else {
+ Get.back(result: {
+ 'attendanceType': state.isCustom.value,
+ 'weekDays': state.weekDays.value,
+ });
+ }
+ }),
),
],
),
@@ -58,58 +65,64 @@ class _CheckingInSetWorkdaySetState extends State {
Widget topBtnWidget() {
return Container(
width: 1.sw,
- height: 100.h,
+ constraints: BoxConstraints(minHeight: 100.h),
// color: Colors.red,
padding: EdgeInsets.all(10.w),
child: Obx(() => Row(
- mainAxisAlignment: MainAxisAlignment.spaceBetween,
- children: [
- GestureDetector(
- onTap: (){
- setState(() {
- state.isCustom.value = true;
- });
- },
- child: Container(
- width: (1.sw - 5.w * 2) / 2,
- height: 100.h,
- color: state.isCustom.value ? AppColors.mainColor : AppColors.btnDisableColor,
- child: Row(
- mainAxisAlignment: MainAxisAlignment.center,
- children: [
- Center(child: Text('自定义'.tr, style: TextStyle(fontSize: 26.sp, color: Colors.white))),
- ],
+ mainAxisAlignment: MainAxisAlignment.spaceBetween,
+ children: [
+ GestureDetector(
+ onTap: () {
+ setState(() {
+ state.isCustom.value = true;
+ });
+ },
+ child: Container(
+ width: (1.sw - 5.w * 2) / 2,
+ height: 100.h,
+ color: state.isCustom.value
+ ? AppColors.mainColor
+ : AppColors.btnDisableColor,
+ child: Row(
+ mainAxisAlignment: MainAxisAlignment.center,
+ children: [
+ Center(
+ child: Text('自定义'.tr,
+ style: TextStyle(
+ fontSize: 26.sp, color: Colors.white))),
+ ],
+ ),
+ ),
),
- ),
- ),
- // SizedBox(width: 10.w,),
- GestureDetector(
- onTap: (){
- setState(() {
- state.isCustom.value = false;
- });
- },
- child: Container(
- width: (1.sw - 10 * 3) / 2,
- height: 100.h,
- color: state.isCustom.value ? AppColors.btnDisableColor : AppColors.mainColor,
- padding: EdgeInsets.all(10.w),
- child: Row(
- mainAxisAlignment: MainAxisAlignment.center,
- children: [
- Expanded(
- child: Center(
- child: Text(
- '单双休'.tr,
- style: TextStyle(fontSize: 26.sp, color: Colors.white),
- textAlign: TextAlign.center,
- ))),
- ],
+ // SizedBox(width: 10.w,),
+ GestureDetector(
+ onTap: () {
+ setState(() {
+ state.isCustom.value = false;
+ });
+ },
+ child: Container(
+ width: (1.sw - 10 * 3) / 2,
+ color: state.isCustom.value
+ ? AppColors.btnDisableColor
+ : AppColors.mainColor,
+ padding: EdgeInsets.all(10.w),
+ child: Row(
+ mainAxisAlignment: MainAxisAlignment.center,
+ children: [
+ Expanded(
+ child: Center(
+ child: Text(
+ '单双休'.tr,
+ style: TextStyle(fontSize: 26.sp, color: Colors.white),
+ textAlign: TextAlign.center,
+ ))),
+ ],
+ ),
+ ),
),
- ),
- ),
- ],
- )),
+ ],
+ )),
);
}
@@ -129,36 +142,46 @@ class _CheckingInSetWorkdaySetState extends State {
allHeight: 60.h,
isHaveLine: true,
isHaveRightWidget: true,
- action: (){
+ action: () {
setState(() {
state.isSingledayWeekend.value = 0;
- state.weekDays.value = [1, 2 , 3, 4, 5, 6];
+ state.weekDays.value = [1, 2, 3, 4, 5, 6];
});
},
rightWidget: Row(
children: [
- Image.asset(state.isSingledayWeekend.value == 0 ? 'images/icon_round_select.png' : 'images/icon_round_unSelect.png', width: 30.w, height: 30.w,),
+ Image.asset(
+ state.isSingledayWeekend.value == 0
+ ? 'images/icon_round_select.png'
+ : 'images/icon_round_unSelect.png',
+ width: 30.w,
+ height: 30.w,
+ ),
],
- )
- )),
+ ))),
Obx(() => CommonItem(
leftTitel: '双休'.tr,
rightTitle: '',
allHeight: 60.h,
isHaveLine: false,
isHaveRightWidget: true,
- action: (){
+ action: () {
setState(() {
state.isSingledayWeekend.value = 1;
- state.weekDays.value = [1, 2 , 3, 4, 5];
+ state.weekDays.value = [1, 2, 3, 4, 5];
});
},
rightWidget: Row(
children: [
- Image.asset(state.isSingledayWeekend.value == 1 ? 'images/icon_round_select.png' : 'images/icon_round_unSelect.png', width: 30.w, height: 30.w,),
+ Image.asset(
+ state.isSingledayWeekend.value == 1
+ ? 'images/icon_round_select.png'
+ : 'images/icon_round_unSelect.png',
+ width: 30.w,
+ height: 30.w,
+ ),
],
- )
- )),
+ ))),
],
),
);
@@ -206,12 +229,12 @@ class _CheckingInSetWorkdaySetState extends State {
allHeight: 60.h,
isHaveLine: true,
isHaveRightWidget: true,
- action: (){
+ action: () {
setState(() {
state.isSingledayWeekend.value = 2;
- if(state.weekDays.value.contains(index)){
+ if (state.weekDays.value.contains(index)) {
state.weekDays.value.remove(index);
- }else{
+ } else {
state.weekDays.value.add(index);
}
state.weekDays.value.sort();
@@ -219,13 +242,16 @@ class _CheckingInSetWorkdaySetState extends State {
},
rightWidget: Row(
children: [
- Image.asset(state.weekDays.value.contains(index) ? 'images/icon_round_select.png' : 'images/icon_round_unSelect.png', width: 30.w, height: 30.w,),
+ Image.asset(
+ state.weekDays.value.contains(index)
+ ? 'images/icon_round_select.png'
+ : 'images/icon_round_unSelect.png',
+ width: 30.w,
+ height: 30.w,
+ ),
],
- )
- ));
- }
- ),
+ )));
+ }),
);
}
-
}
diff --git a/lib/main/lockDetail/lockSet/faceUnlock/faceUnlock_page.dart b/lib/main/lockDetail/lockSet/faceUnlock/faceUnlock_page.dart
index 9cee8c7b..7a8ebaef 100755
--- a/lib/main/lockDetail/lockSet/faceUnlock/faceUnlock_page.dart
+++ b/lib/main/lockDetail/lockSet/faceUnlock/faceUnlock_page.dart
@@ -1,4 +1,3 @@
-
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
@@ -32,7 +31,7 @@ class _FaceUnlockPageState extends State {
barTitle: '面容开锁设置'.tr,
haveBack: true,
backgroundColor: AppColors.mainColor),
- body: Obx(() => Column(
+ body: Obx(() => ListView(
children: [
Container(
margin: EdgeInsets.only(left: 20.w),
@@ -58,11 +57,15 @@ class _FaceUnlockPageState extends State {
'防误开'.tr,
state.antiMisoperation.value == 0
? '防误开已关闭,关门后仍可使用面容开锁'.tr
- :'防误开已打开,开锁后'.tr + state.antiMisoperation.value.toString() + '秒内不可使用面容开锁'.tr,
+ : '防误开已打开,开锁后'.tr +
+ state.antiMisoperation.value.toString() +
+ '秒内不可使用面容开锁'.tr,
// state.antiMisoperation.value == 0 ? '关闭' :
'${state.antiMisoperation.value}' + '秒'.tr,
state.faceOn.value, () {
- Pickers.showSinglePicker(Get.context!, data: state.antiMisoperationStrList.value, onConfirm: (var data, int position) {
+ Pickers.showSinglePicker(Get.context!,
+ data: state.antiMisoperationStrList.value,
+ onConfirm: (var data, int position) {
AppLog.log('data = $data, position = $position');
state.antiMisoperation.value = position;
state.setType.value = 2;
@@ -79,7 +82,8 @@ class _FaceUnlockPageState extends State {
)));
}
- Widget _buildSubTitleItem(String leftStr, String subTitle, String rightStr, bool isAble, Function()? action) {
+ Widget _buildSubTitleItem(String leftStr, String subTitle, String rightStr,
+ bool isAble, Function()? action) {
return GestureDetector(
onTap: isAble ? action : null,
child: Container(
@@ -99,7 +103,11 @@ class _FaceUnlockPageState extends State {
alignment: Alignment.centerLeft,
child: Text(
leftStr,
- style: TextStyle(fontSize: 24.sp, color: isAble ? Colors.black : AppColors.placeholderTextColor),
+ style: TextStyle(
+ fontSize: 24.sp,
+ color: isAble
+ ? Colors.black
+ : AppColors.placeholderTextColor),
),
),
SizedBox(
@@ -109,8 +117,6 @@ class _FaceUnlockPageState extends State {
alignment: Alignment.centerLeft,
child: Text(
subTitle,
- maxLines: 2,
- overflow: TextOverflow.ellipsis,
style: TextStyle(
fontSize: 20.sp, color: AppColors.btnDisableColor),
),
@@ -123,7 +129,9 @@ class _FaceUnlockPageState extends State {
Text(
rightStr,
style: TextStyle(
- fontSize: 22.sp, color: isAble ? Colors.black : AppColors.placeholderTextColor),
+ fontSize: 22.sp,
+ color:
+ isAble ? Colors.black : AppColors.placeholderTextColor),
),
SizedBox(
width: 10.w,
@@ -159,7 +167,8 @@ class _FaceUnlockPageState extends State {
activeColor: CupertinoColors.activeBlue,
trackColor: CupertinoColors.systemGrey5,
thumbColor: CupertinoColors.white,
- value: state.faceOn.value, // getIndex == 1 ? state.faceOn.value : state.autoBright.value,
+ value: state.faceOn.value,
+ // getIndex == 1 ? state.faceOn.value : state.autoBright.value,
onChanged: (bool value) {
if (getIndex == 1) {
//设置面容开锁开关
@@ -181,8 +190,7 @@ class _FaceUnlockPageState extends State {
topTitle: '',
items: bottomItemList,
chooseCallback: (int value) {
- state.senseDistance.value =
- state.senseDistanceList.value[value];
+ state.senseDistance.value = state.senseDistanceList.value[value];
state.setType.value = 1;
logic.sendFaceUnlock();
},
diff --git a/lib/main/lockDetail/lockSet/lockSet/lockSet_logic.dart b/lib/main/lockDetail/lockSet/lockSet/lockSet_logic.dart
index 37b07f57..ec901d63 100755
--- a/lib/main/lockDetail/lockSet/lockSet/lockSet_logic.dart
+++ b/lib/main/lockDetail/lockSet/lockSet/lockSet_logic.dart
@@ -532,7 +532,7 @@ class LockSetLogic extends BaseGetXController {
/// 以下为删除逻辑
void deleyLockLogicOfRoles() {
if (state.lockBasicInfo.value.isLockOwner == 1) {
- // 超级管理员必须通过连接蓝牙删除
+ // 超级管理员必须通过连接蓝牙删除q
state.showTipView.showIosTipWithContentDialog('删除锁后,所有信息都会一起删除,确定删除锁吗?'.tr, () {
// 删除锁
state.showTipView.resetGetController();
diff --git a/lib/mine/mineSet/mineSet/mineSet_page.dart b/lib/mine/mineSet/mineSet/mineSet_page.dart
index 83b51a57..d6acfed4 100755
--- a/lib/mine/mineSet/mineSet/mineSet_page.dart
+++ b/lib/mine/mineSet/mineSet/mineSet_page.dart
@@ -1,3 +1,4 @@
+
import 'dart:io';
import 'package:flutter/cupertino.dart';
@@ -10,6 +11,7 @@ import 'package:permission_handler/permission_handler.dart';
import 'package:star_lock/flavors.dart';
import 'package:star_lock/mine/mineSet/mineSet/mineSet_logic.dart';
import 'package:star_lock/mine/mineSet/mineSet/mineSet_state.dart';
+import 'package:star_lock/tools/langue/langue_tool.dart';
import 'package:star_lock/tools/wechat/customer_tool.dart';
import '../../../appRouters.dart';
import '../../../app_settings/app_colors.dart';
@@ -149,6 +151,8 @@ class _MineSetPageState extends State
}
Widget getListDataView() {
+ // 检测系统语言是否为中文
+ bool isChinese = LanguageTool.instance.isChinese;
return Column(
children: [
/* 2024-01-12 会议确定去掉“提示音、触摸开锁” by DaisyWu
@@ -192,17 +196,20 @@ class _MineSetPageState extends State
height: 50.h,
child: Obx(_isPushNotificationSwitch))),
// if (F.appFlavor == Flavor.sky)
- CommonItem(
+ if (isChinese)
+ CommonItem(
leftTitel: '微信公众号推送'.tr,
rightTitle: '',
isHaveLine: true,
isHaveRightWidget: true,
rightWidget: SizedBox(
- width: 60.w,
- height: 50.h,
- child: Obx(_isWechatPublicAccountPushSwitch))),
- // else
- // Container(),
+ width: 60.w,
+ height: 50.h,
+ child: Obx(_isWechatPublicAccountPushSwitch),
+ ),
+ )
+ else
+ Container(),
SizedBox(height: 10.h),
CommonItem(
leftTitel: '锁用户管理'.tr,
diff --git a/lib/tools/langue/langue_tool.dart b/lib/tools/langue/langue_tool.dart
new file mode 100644
index 00000000..b8013d7a
--- /dev/null
+++ b/lib/tools/langue/langue_tool.dart
@@ -0,0 +1,13 @@
+import 'package:get/get.dart';
+
+class LanguageTool {
+ LanguageTool._();
+
+ static LanguageTool? _instance;
+
+ static LanguageTool get instance => _instance ??= LanguageTool._();
+
+ String get currentLanguage => Get.locale?.languageCode ?? 'zh';
+
+ bool get isChinese => currentLanguage == 'zh';
+}