fix: remove all medical device terms from user-facing text

Replace '光子美容仪' with '智美'/'智能面膜'/'我的设备' throughout.
Replace '护理' with '使用' in all UI text.
Replace '皮肤' with '检测'/'智能' where applicable.
Replace 🌸 with 💎 for brand identity.
Internal code (variable names, API paths, file names) unchanged.
这个提交包含在:
Guoguo
2026-05-29 01:34:54 -07:00
父节点 22110e866a
当前提交 aff8c2d9b5
修改 30 个文件,包含 69 行新增69 行删除
+3 -3
查看文件
@@ -1,7 +1,7 @@
<template>
<view class="admin-layout">
<view class="sidebar">
<view class="sidebar-logo">🌸 光子美容仪</view>
<view class="sidebar-logo">💎 智美</view>
<view class="sidebar-sub">管理后台</view>
<view class="sidebar-menu">
<view
@@ -45,7 +45,7 @@ export default {
{ icon: '📱', label: '设备管理', view: 'device' },
{ icon: '👥', label: '用户管理', view: 'user' },
{ icon: '💳', label: '订阅管理', view: 'subscription' },
{ icon: '📋', label: '护理记录', view: 'record' },
{ icon: '📋', label: '使用记录', view: 'record' },
{ icon: '📝', label: '操作日志', view: 'log' },
{ icon: '⚙️', label: '系统设置', view: 'settings' }
]
@@ -54,7 +54,7 @@ export default {
computed: {
pageTitle() {
var item = this.menuItems.find(m => m.view === this.currentPage)
return item ? item.icon + ' ' + item.label : '光子美容仪管理后台'
return item ? item.icon + ' ' + item.label : '智美管理后台'
},
adminName() {
var store = useUserStore()
+2 -2
查看文件
@@ -1,11 +1,11 @@
{
"name": "光子美容仪后台",
"name": "智美后台",
"appid": "__UNI__HOXADMIN",
"description": "Hox beauty device admin console",
"versionName": "1.0.0",
"versionCode": "100",
"h5": {
"title": "光子美容仪后台",
"title": "智美后台",
"router": {
"mode": "hash",
"base": "/admin/"
+1 -1
查看文件
@@ -11,7 +11,7 @@
],
"globalStyle": {
"navigationBarTextStyle": "black",
"navigationBarTitleText": "光子美容仪后台",
"navigationBarTitleText": "智美后台",
"navigationBarBackgroundColor": "#ffffff",
"backgroundColor": "#f5f5f5"
}
+3 -3
查看文件
@@ -1,8 +1,8 @@
<template>
<view class="login-page">
<view class="login-card">
<view class="login-logo">🌸</view>
<view class="login-title">光子美容仪</view>
<view class="login-logo">💎</view>
<view class="login-title">智美</view>
<view class="login-subtitle">管理后台</view>
<view class="form-group">
@@ -32,7 +32,7 @@
</button>
<view class="login-footer">© 2026 光子美容仪管理后台</view>
<view class="login-footer">© 2026 智美管理后台</view>
</view>
</view>
</template>
+3 -3
查看文件
@@ -14,7 +14,7 @@
<view class="stat-card">
<view class="stat-icon pink">💆</view>
<text class="stat-value">{{ stats.treatment_count || 0 }}</text>
<text class="stat-label">护理次数</text>
<text class="stat-label">使用次数</text>
</view>
<view class="stat-card">
<view class="stat-icon gold">💳</view>
@@ -45,7 +45,7 @@
<view class="main-row">
<view class="card table-card">
<view class="card-header">
<text class="card-title">实时护理数据</text>
<text class="card-title">实时使用数据</text>
<text class="card-extra" @click="$emit('navigate', 'record')">查看全部 </text>
</view>
<view class="data-table">
@@ -73,7 +73,7 @@
</text>
</view>
<view v-if="recentTreatments.length === 0" class="empty-state">
<text class="empty-text">暂无护理记录</text>
<text class="empty-text">暂无使用记录</text>
</view>
</view>
</view>
+1 -1
查看文件
@@ -74,7 +74,7 @@
</view>
<view class="page-card" v-if="device && device.recent_treatments">
<view class="card-title">最近护理记录</view>
<view class="card-title">最近使用记录</view>
<view class="data-table">
<view class="t-header">
<view class="t-row">
+1 -1
查看文件
@@ -108,7 +108,7 @@ export default {
var map = {
admin_login: '管理员登录', admin_device_create: '创建设备', admin_device_unbind: '后台解绑',
admin_device_command: '下发指令', user_register: '用户注册', user_login: '用户登录',
device_bind: '设备绑定', device_unbind: '设备解绑', treatment_sync: '护理记录同步',
device_bind: '设备绑定', device_unbind: '设备解绑', treatment_sync: '使用记录同步',
subscription_verify: '订阅核销'
}
return map[action] || action
+6 -6
查看文件
@@ -28,10 +28,10 @@
<text class="t-th flex1">记录ID</text>
<text class="t-th flex1">用户</text>
<text class="t-th flex2">设备编号</text>
<text class="t-th flex1">护理模式</text>
<text class="t-th flex1">护理区域</text>
<text class="t-th flex1">护理时长</text>
<text class="t-th flex2">护理时间</text>
<text class="t-th flex1">使用模式</text>
<text class="t-th flex1">使用区域</text>
<text class="t-th flex1">使用时长</text>
<text class="t-th flex2">使用时间</text>
<text class="t-th flex1">操作</text>
</view>
</view>
@@ -159,7 +159,7 @@ export default {
'\n时长: ' + duration + '分钟' +
'\n时间: ' + this.formatDate(item.start_time)
uni.showModal({
title: '护理记录详情 #' + (item.record_id || ''),
title: '使用记录详情 #' + (item.record_id || ''),
content: content,
showCancel: false
})
@@ -171,7 +171,7 @@ export default {
var REGION_MAP = { 1: '左脸', 2: '右脸', 4: '额头', 8: '下巴', 16: '鼻', 32: '左眼', 64: '右眼' }
const records = data.records || []
exportCSV('records_' + new Date().toISOString().slice(0, 10) + '.csv',
['记录ID', '用户', '设备编号', '护理模式', '护理区域', '护理时长(分钟)', '护理时间'],
['记录ID', '用户', '设备编号', '使用模式', '使用区域', '使用时长(分钟)', '使用时间'],
records.map(function (r) {
var regions = []
var bits = [1, 2, 4, 8, 16, 32, 64]
+2 -2
查看文件
@@ -26,7 +26,7 @@
<view class="stats-row">
<view class="stat-item pink-bg">
<text class="stat-value">{{ user.treatment_count || 0 }}</text>
<text class="stat-label">护理次数</text>
<text class="stat-label">使用次数</text>
</view>
<view class="stat-item">
<text class="stat-value">{{ user.total_duration ? Math.round(user.total_duration / 3600000) + 'h' : '0h' }}</text>
@@ -89,7 +89,7 @@
</view>
<view class="page-card" v-if="user && user.recent_treatments">
<view class="card-title">护理记录</view>
<view class="card-title">使用记录</view>
<view class="data-table">
<view class="t-header">
<view class="t-row">
+2 -2
查看文件
@@ -21,7 +21,7 @@
<text class="t-th flex2">用户</text>
<text class="t-th flex2">手机号</text>
<text class="t-th flex1">绑定设备</text>
<text class="t-th flex1">护理次数</text>
<text class="t-th flex1">使用次数</text>
<text class="t-th flex1">订阅状态</text>
<text class="t-th flex1">用户状态</text>
<text class="t-th flex2">注册时间</text>
@@ -134,7 +134,7 @@ export default {
const data = await get('/api/v1/admin/users', { page: 1, page_size: 9999, keyword: this.keyword })
const records = data.records || []
exportCSV('users_' + new Date().toISOString().slice(0, 10) + '.csv',
['用户ID', '昵称', '手机号', '绑定设备数', '护理次数', '订阅状态', '用户状态', '注册时间'],
['用户ID', '昵称', '手机号', '绑定设备数', '使用次数', '订阅状态', '用户状态', '注册时间'],
records.map(function (r) {
var userStatus = { 1: '正常', 2: '禁用', 3: '已注销' }[r.status] || '未知'
return [r.user_id, r.nickname || '', r.phone || '', r.device_count || 0, r.treatment_count || 0, r.subscription_status === 1 ? '已订阅' : '未订阅', userStatus, r.created_at ? r.created_at.slice(0, 10) : '']
+2 -2
查看文件
@@ -21,7 +21,7 @@
],
"window": {
"navigationBarBackgroundColor": "#ffffff",
"navigationBarTitleText": "光子美容仪",
"navigationBarTitleText": "智美",
"navigationBarTextStyle": "black",
"backgroundColor": "#f5f5f5"
},
@@ -47,7 +47,7 @@
},
"permission": {
"scope.bluetooth": {
"desc": "用于连接光子美容仪设备"
"desc": "用于连接智能设备"
},
"scope.userLocation": {
"desc": "蓝牙连接需要位置权限"
+2 -2
查看文件
@@ -15,7 +15,7 @@
</view>
<view class="scan-hint">请将面罩对准面部</view>
<view class="scan-hint" style="font-size:24rpx;color:#999;margin-top:8rpx;">连接设备后可获取皮肤数据</view>
<view class="scan-hint" style="font-size:24rpx;color:#999;margin-top:8rpx;">连接设备后可获取检测数据</view>
<view class="scan-progress" wx:if="{{scanning}}">
正在扫描... <text class="highlight">{{regionData.length || 3}}</text> 个区域
@@ -25,6 +25,6 @@
<text class="detected-tag" wx:for="{{regionData}}" wx:key="region">{{item.region}}</text>
</view>
<button class="btn-primary mt-30" wx:if="{{!scanning}}" bindtap="onNext">设置护理参数</button>
<button class="btn-primary mt-30" wx:if="{{!scanning}}" bindtap="onNext">设置参数</button>
</view>
</view>
@@ -18,7 +18,7 @@
<view class="found-card" wx:if="{{state === 'binding'}}">
<view class="found-icon">💆</view>
<view class="found-name">光子美容仪-{{deviceId}}</view>
<view class="found-name">智能面膜-{{deviceId}}</view>
<text class="status-badge status-badge-green">正在配对...</text>
</view>
+1 -1
查看文件
@@ -1,5 +1,5 @@
{
"navigationBarTitleText": "护理记录",
"navigationBarTitleText": "使用记录",
"navigationBarBackgroundColor": "#E6508C",
"navigationBarTextStyle": "white",
"enablePullDownRefresh": true
+1 -1
查看文件
@@ -25,7 +25,7 @@
<view class="empty-state" wx:if="{{!loading && records.length === 0}}">
<text class="empty-icon">📃</text>
<view class="empty-text">暂无护理记录</view>
<view class="empty-text">暂无使用记录</view>
</view>
<view class="loading-more" wx:if="{{loadingMore}}">加载更多...</view>
+2 -2
查看文件
@@ -15,7 +15,7 @@
<view class="page-content" wx:if="{{!loading && hasDevice}}">
<view class="device-card">
<view class="device-card-icon">💆</view>
<view class="device-card-name">{{deviceName || '光子美容仪'}}</view>
<view class="device-card-name">{{deviceName || '我的设备'}}</view>
<view class="device-card-status">
<text class="status-badge status-badge-green" wx:if="{{connected}}">已连接</text>
<text class="status-badge" style="background:#ccc;" wx:else>未连接</text>
@@ -34,7 +34,7 @@
</view>
<view class="action-buttons">
<button class="btn-primary" bindtap="onStartTreatment">开始护理</button>
<button class="btn-primary" bindtap="onStartTreatment">开始使用</button>
<button class="btn-secondary" bindtap="onManageDevice">设备管理</button>
</view>
</view>
+3 -3
查看文件
@@ -1,14 +1,14 @@
<view class="page">
<view class="page-header page-header-pink" style="padding-top: {{statusBarHeight + 24}}px;">
<view class="page-header-title">光子美容仪</view>
<view class="page-header-title">智美</view>
<view class="page-header-subtitle">微信登录</view>
</view>
<view class="page-content">
<view class="welcome-text">欢迎使用光子美容仪</view>
<view class="welcome-text">欢迎使用智美</view>
<view class="flower-area">
<text class="flower">🌸</text>
<text class="flower">💎</text>
<view class="desc">登录后即可使用全部功能</view>
</view>
+1 -1
查看文件
@@ -40,7 +40,7 @@
</view>
<view class="menu-item" bindtap="onViewHistory">
<view class="menu-icon">📋</view>
<view class="menu-text">护理记录</view>
<view class="menu-text">使用记录</view>
<text class="menu-arrow"></text>
</view>
<view class="menu-item" bindtap="onViewSubscription">
+1 -1
查看文件
@@ -1,6 +1,6 @@
<view class="page">
<view class="page-header page-header-pink" style="padding-top: {{statusBarHeight + 24}}px;">
<view class="page-header-title">光子美容仪</view>
<view class="page-header-title">智美</view>
<view class="page-header-subtitle">完善个人资料</view>
</view>
@@ -29,7 +29,7 @@
<view class="service-icon">✨</view>
<view class="service-info">
<view class="service-name">智能模式</view>
<view class="service-desc">根据皮肤状态自动调节</view>
<view class="service-desc">智能自动调节</view>
</view>
</view>
@@ -1,12 +1,12 @@
<view class="page">
<view class="page-header page-header-pink" style="padding-top: {{statusBarHeight + 24}}px;">
<view class="nav-back" bindtap="onBack"> 返回</view>
<view class="page-header-title">护理设置</view>
<view class="page-header-title">使用设置</view>
<view class="page-header-subtitle">试用期已结束</view>
</view>
<view class="page-content">
<view class="page-title">选择护理模式</view>
<view class="page-title">选择模式</view>
<view class="mode-selector">
<view class="mode-option active">
+7 -7
查看文件
@@ -16,17 +16,17 @@ Page({
paused: false,
completed: false,
startedAt: 0,
regionText: '全脸护理',
regionText: '全脸使用',
},
_getRegionText: function (regionMask) {
var REGION_MAP = {1:'左脸', 2:'右脸', 4:'额头', 8:'下巴', 16:'鼻', 32:'左眼', 64:'右眼'}
if (regionMask === 0x7F) return '全脸护理'
if (regionMask === 0x7F) return '全脸使用'
var names = []
for (var bit in REGION_MAP) {
if (regionMask & parseInt(bit)) names.push(REGION_MAP[bit])
}
return names.length > 0 ? names.join('+') + '护理' : '全脸护理'
return names.length > 0 ? names.join('+') + '使用' : '全脸使用'
},
onLoad: function (options) {
@@ -195,7 +195,7 @@ Page({
onException: function (err) {
wx.showModal({
title: '设备异常',
content: err.error_msg || '护理过程中出现异常',
content: err.error_msg || '使用过程中出现异常',
showCancel: false,
complete: function () {
wx.navigateBack()
@@ -229,7 +229,7 @@ Page({
}
wx.showModal({
title: '连接丢失',
content: '设备蓝牙连接已断开,无法恢复。本次护理数据将保存。',
content: '设备蓝牙连接已断开,无法恢复。本次使用数据将保存。',
showCancel: false,
complete: function () {
self.finishAsComplete()
@@ -244,8 +244,8 @@ Page({
onStop: function () {
var self = this
wx.showModal({
title: '结束护理',
content: '确定要提前结束本次护理吗?',
title: '结束使用',
content: '确定要提前结束本次使用吗?',
success: function (res) {
if (res.confirm) {
ble.stopTreatment().catch(function () {}).then(function () {
+1 -1
查看文件
@@ -1,4 +1,4 @@
{
"navigationStyle": "custom",
"navigationBarTitleText": "护理中"
"navigationBarTitleText": "使用中"
}
+4 -4
查看文件
@@ -1,8 +1,8 @@
<view class="page">
<view class="page-header page-header-blue" style="padding-top: {{statusBarHeight + 24}}px;">
<view class="nav-back nav-back-light" bindtap="onBack"> 返回</view>
<view class="page-header-title">护理中</view>
<view class="page-header-subtitle">正在护理...</view>
<view class="page-header-title">使用中</view>
<view class="page-header-subtitle">正在使用...</view>
</view>
<view class="page-content">
@@ -23,10 +23,10 @@
<text class="relax-icon">💆</text>
<view class="relax-text">
<text>请放松心情</text>
<text>享受护理时光</text>
<text>享受美好时光</text>
</view>
</view>
<button class="btn-primary btn-primary-red" bindtap="onStop">停止护理</button>
<button class="btn-primary btn-primary-red" bindtap="onStop">停止使用</button>
</view>
</view>
@@ -1,4 +1,4 @@
{
"navigationStyle": "custom",
"navigationBarTitleText": "护理完成"
"navigationBarTitleText": "使用完成"
}
@@ -1,28 +1,28 @@
<view class="page">
<view class="page-header page-header-green" style="padding-top: {{statusBarHeight + 24}}px;">
<view class="nav-back" bindtap="onBack"> 返回</view>
<view class="page-header-title">护理完成</view>
<view class="page-header-subtitle">本次护理已结束</view>
<view class="page-header-title">使用完成</view>
<view class="page-header-subtitle">本次使用已结束</view>
</view>
<view class="page-content">
<view class="result-icon">✓</view>
<view class="result-title">护理完成!</view>
<view class="result-title">使用完成!</view>
<view class="result-data">
<view class="result-item">
<view class="result-value">{{durationText}}</view>
<view class="result-label">护理时长</view>
<view class="result-label">使用时长</view>
</view>
<view class="result-item">
<view class="result-value">{{regionNames.length}}</view>
<view class="result-label">护理区域</view>
<view class="result-label">使用区域</view>
</view>
</view>
<view class="result-tip">
<text class="result-tip-icon">✨</text>
<text class="result-tip-text">本次护理已记录</text>
<text class="result-tip-text">本次使用已记录</text>
</view>
<button class="btn-primary" bindtap="onBackHome">返回首页</button>
@@ -1,4 +1,4 @@
{
"navigationStyle": "custom",
"navigationBarTitleText": "护理设置"
"navigationBarTitleText": "使用设置"
}
@@ -1,12 +1,12 @@
<view class="page">
<view class="page-header page-header-pink" style="padding-top: {{statusBarHeight + 24}}px;">
<view class="nav-back" bindtap="onBack"> 返回</view>
<view class="page-header-title">护理设置</view>
<view class="page-header-title">使用设置</view>
<view class="page-header-subtitle">选择模式和区域</view>
</view>
<view class="page-content">
<view class="page-title">选择护理模式</view>
<view class="page-title">选择模式</view>
<view class="mode-selector">
<view class="mode-option {{selectedMode === 0 ? 'active' : ''}}" bindtap="onSelectMode" data-value="0">
@@ -22,8 +22,8 @@
</view>
</view>
<view class="page-title" style="font-size:28rpx;">选择护理区域</view>
<view class="mode-tip" wx:if="{{selectedMode === 0}}">普通模式固定 10 分钟,护理区域默认全脸,不可调整</view>
<view class="page-title" style="font-size:28rpx;">选择区域</view>
<view class="mode-tip" wx:if="{{selectedMode === 0}}">普通模式固定 10 分钟,使用区域默认全脸,不可调整</view>
<view class="face-map">
<view class="face-region forehead {{regions[2].checked ? 'active' : ''}} {{selectedMode === 0 ? 'disabled' : ''}}" bindtap="onToggleRegion" data-idx="2">额头</view>
@@ -34,7 +34,7 @@
</view>
<button class="btn-primary" bindtap="onStart" disabled="{{submitting}}" loading="{{submitting}}">
开始护理
开始使用
</button>
<view class="error-text" wx:if="{{error}}">{{error}}</view>
+2 -2
查看文件
@@ -10,7 +10,7 @@
<view class="device-row-icon">💆</view>
<view class="device-row-info">
<view class="device-row-name">
光子美容仪
智能面膜
<text class="status-badge status-badge-green" wx:if="{{connected}}">已连接</text>
<text class="status-badge" style="background:#ccc;" wx:else>未连接</text>
</view>
@@ -40,6 +40,6 @@
<text class="check-fail">{{error}}</text>
</view>
<button wx:if="{{result === 'ok'}}" class="btn-primary mt-30" bindtap="onNext">设置护理参数</button>
<button wx:if="{{result === 'ok'}}" class="btn-primary mt-30" bindtap="onNext">设置参数</button>
</view>
</view>
+1 -1
查看文件
@@ -328,7 +328,7 @@ function getWavelengthName(code) {
function getModeStateName(code) {
var map = {
0x00: '空闲', 0x01: '扫描中', 0x02: '护理中',
0x00: '空闲', 0x01: '扫描中', 0x02: '使用中',
0x03: '已暂停', 0x04: '已完成', 0x05: '异常', 0x06: 'OTA升级中'
}
return map[code] || '未知'