diff --git a/src/pages.json b/src/pages.json
index e4c280b..051ec05 100644
--- a/src/pages.json
+++ b/src/pages.json
@@ -108,6 +108,96 @@
"navigationStyle": "custom"
}
},
+ {
+ "path": "pages/distribution/data",
+ "style": {
+ "navigationStyle": "custom"
+ }
+ },
+ {
+ "path": "pages/distribution/profit-rule",
+ "style": {
+ "navigationStyle": "custom"
+ }
+ },
+ {
+ "path": "pages/distribution/qrcode",
+ "style": {
+ "navigationStyle": "custom"
+ }
+ },
+ {
+ "path": "pages/account/manage",
+ "style": {
+ "navigationStyle": "custom"
+ }
+ },
+ {
+ "path": "pages/account/quota",
+ "style": {
+ "navigationStyle": "custom"
+ }
+ },
+ {
+ "path": "pages/account/log",
+ "style": {
+ "navigationStyle": "custom"
+ }
+ },
+ {
+ "path": "pages/account/personal",
+ "style": {
+ "navigationStyle": "custom"
+ }
+ },
+ {
+ "path": "pages/student/list",
+ "style": {
+ "navigationStyle": "custom"
+ }
+ },
+ {
+ "path": "pages/student/analysis",
+ "style": {
+ "navigationStyle": "custom"
+ }
+ },
+ {
+ "path": "pages/student/remind",
+ "style": {
+ "navigationStyle": "custom"
+ }
+ },
+ {
+ "path": "pages/member/order",
+ "style": {
+ "navigationStyle": "custom"
+ }
+ },
+ {
+ "path": "pages/member/gift",
+ "style": {
+ "navigationStyle": "custom"
+ }
+ },
+ {
+ "path": "pages/member/general-code",
+ "style": {
+ "navigationStyle": "custom"
+ }
+ },
+ {
+ "path": "pages/member/personal-order",
+ "style": {
+ "navigationStyle": "custom"
+ }
+ },
+ {
+ "path": "pages/member/personal-gift",
+ "style": {
+ "navigationStyle": "custom"
+ }
+ },
{
"path": "pages/mine/school-info",
"style": {
@@ -167,6 +257,30 @@
"style": {
"navigationStyle": "custom"
}
+ },
+ {
+ "path": "pages/stats/distribution",
+ "style": {
+ "navigationStyle": "custom"
+ }
+ },
+ {
+ "path": "pages/stats/member",
+ "style": {
+ "navigationStyle": "custom"
+ }
+ },
+ {
+ "path": "pages/stats/student",
+ "style": {
+ "navigationStyle": "custom"
+ }
+ },
+ {
+ "path": "pages/student/detail",
+ "style": {
+ "navigationStyle": "custom"
+ }
}
],
"tabBar": {
diff --git a/src/pages/account/log.vue b/src/pages/account/log.vue
new file mode 100644
index 0000000..77c7590
--- /dev/null
+++ b/src/pages/account/log.vue
@@ -0,0 +1,490 @@
+
+
+
+
+
+
+
+
+
+ 操作类型
+
+
+ {{ operationOptions[operationIndex] }}
+
+
+
+
+ 时间范围
+
+
+ {{ dateRangeDisplay }}
+
+
+
+
+ 搜索
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ log.operation }}
+ {{ log.detail }}
+
+
+ {{ log.operator }}
+ {{ log.ip }}
+
+
+
+
+
+
+ 📋
+ 暂无操作日志
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/pages/account/manage.vue b/src/pages/account/manage.vue
new file mode 100644
index 0000000..39d8c7c
--- /dev/null
+++ b/src/pages/account/manage.vue
@@ -0,0 +1,390 @@
+
+
+
+
+
+
+
+
+
+ 账号状态
+
+
+ {{ statusOptions[statusIndex] }}
+
+
+
+
+ 搜索
+
+
+
+
+
+
+
+
+
+
+
+ {{ account.name }}
+
+ {{ account.phone }}
+ {{ account.role }}
+ {{ account.statusText }}
+
+
+
+
+ 编辑
+
+
+ {{ account.status === 'active' ? '冻结' : '启用' }}
+
+
+
+
+
+
+
+ 👥
+ 暂无账号数据
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/pages/account/personal.vue b/src/pages/account/personal.vue
new file mode 100644
index 0000000..b2696f4
--- /dev/null
+++ b/src/pages/account/personal.vue
@@ -0,0 +1,410 @@
+
+
+
+
+
+
+
+ 个人信息
+
+
+
+ 姓名
+
+
+
+
+
+
+
+ 手机号码
+
+
+
+
+
+
+
+ 邮箱
+
+
+
+
+
+
+
+ 性别
+
+
+ {{ userInfo.gender || '请选择性别' }}
+
+
+
+
+
+
+ 所属驾校
+
+ {{ userInfo.school || '顺达驾校' }}
+
+
+
+
+
+ 职位
+
+
+
+
+
+
+
+
+
+
+ 账号安全
+
+
+ 修改登录密码
+ →
+
+
+ 绑定手机号
+ {{ userInfo.phone ? '已绑定' : '未绑定' }}
+ →
+
+
+ 绑定邮箱
+ {{ userInfo.email ? '已绑定' : '未绑定' }}
+ →
+
+
+
+
+
+
+ 账号信息
+
+
+
+ 账号ID
+ {{ userInfo.id || '10001' }}
+
+
+
+
+ 账号类型
+ {{ userInfo.role || '分销员' }}
+
+
+
+
+ 注册时间
+ {{ userInfo.registerTime || '2026-01-15' }}
+
+
+
+
+ 最后登录
+ {{ userInfo.lastLogin || '2026-01-29 10:30:00' }}
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/pages/account/quota.vue b/src/pages/account/quota.vue
new file mode 100644
index 0000000..609f321
--- /dev/null
+++ b/src/pages/account/quota.vue
@@ -0,0 +1,454 @@
+
+
+
+
+
+
+
+
+
+ 选择月份
+
+
+ {{ currentMonthDisplay }}
+
+
+
+
+
+
+
+
+ 总额度设置
+
+
+ 月度赠会员总额度
+
+
+ 个
+
+
+
+ • 总额度将分配给所有分销员
+ • 单个分销员最高可分配额度为总额度的50%
+
+
+
+
+
+
+ 分销员额度分配
+
+
+
+ {{ distributor.name }}
+ ID: {{ distributor.id }}
+
+
+
+ 个
+
+
+
+
+
+
+
+
+ 已分配额度:
+ {{ allocatedQuota }} 个
+
+
+ 剩余额度:
+
+ {{ remainingQuota }} 个
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/pages/distribution/data.vue b/src/pages/distribution/data.vue
new file mode 100644
index 0000000..a31b819
--- /dev/null
+++ b/src/pages/distribution/data.vue
@@ -0,0 +1,672 @@
+
+
+
+
+
+
+
+
+
+ 时间范围
+
+
+ {{ dateOptions[dateIndex] }}
+
+
+
+
+ 分销员
+
+
+ {{ distributorOptions[distributorIndex] }}
+
+
+
+
+ 搜索
+
+
+
+
+
+
+
+
+
+ 核心指标
+
+
+ 📱
+
+ {{ metrics.scanCount }}
+ 扫码数
+
+
+
+ 👥
+
+ {{ metrics.registerCount }}
+ 注册数
+
+
+
+ 🎓
+
+ {{ metrics.memberCount }}
+ 会员数
+
+
+
+ 💰
+
+ {{ metrics.totalProfit }}
+ 分润总额
+
+
+
+
+
+
+
+ 数据趋势
+
+
+
+
+
+
+
+
+
+
+ {{ day.date }}
+ {{ day.count }}
+
+
+
+
+
+
+
+
+
+ 推广明细
+
+
+
+
+
+
+ 推广码:
+ {{ item.promotionCode }}
+
+
+ 学员:
+ {{ item.studentName }}
+
+
+ 分销员:
+ {{ item.distributorName }}
+
+
+
+ 分润金额:
+ {{ item.profitAmount }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/pages/distribution/personal.vue b/src/pages/distribution/personal.vue
new file mode 100644
index 0000000..4a90163
--- /dev/null
+++ b/src/pages/distribution/personal.vue
@@ -0,0 +1,535 @@
+
+
+
+
+
+
+
+ 推广码信息
+
+
+ 推广码
+ {{ promotionCode }}
+
+
+ 生成时间
+ {{ createTime }}
+
+
+ 有效期
+ {{ validityPeriod }}
+
+
+
+
+
+
+ 推广二维码
+
+
+
+
+
+ {{ promotionCode }}
+
+
+
+ 请保存二维码并分享给学员,学员扫码注册后将自动绑定为您的推广学员
+
+
+
+ 下载二维码
+
+
+ 刷新二维码
+
+
+
+
+
+
+
+ 推广数据
+
+
+
+ {{ totalScanCount }}
+ 扫码次数
+
+
+ {{ totalRegisterCount }}
+ 注册人数
+
+
+ {{ totalMemberCount }}
+ 会员人数
+
+
+
+
+ {{ totalProfit }}
+ 累计分润
+
+
+ {{ todayScanCount }}
+ 今日扫码
+
+
+ {{ todayRegisterCount }}
+ 今日注册
+
+
+
+
+
+
+
+ 推广记录
+
+
+
+
+ {{ record.time }}
+ {{ record.type }}
+ {{ record.status }}
+ {{ record.profit }}
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/pages/distribution/profit-rule.vue b/src/pages/distribution/profit-rule.vue
new file mode 100644
index 0000000..9db84d4
--- /dev/null
+++ b/src/pages/distribution/profit-rule.vue
@@ -0,0 +1,533 @@
+
+
+
+
+
+
+
+ 规则说明
+
+ • 分润规则适用于所有分销员
+ • 扫码注册分润:学员通过推广码扫码注册后,分销员可获得的分润
+ • 购买会员分润:学员通过推广码购买会员后,分销员可获得的分润
+ • 分润比例:按会员价格的百分比计算,最高不超过50%
+
+
+
+
+
+ 分润规则配置
+
+
+
+
+
+
+ 分润金额
+
+
+ 元
+
+
+
+ • 固定金额分润,学员扫码注册后立即发放
+ • 建议设置为5-20元
+
+
+
+
+
+
+
+
+
+ 分润比例
+
+
+ %
+
+
+
+ 会员类型
+
+
+ {{ memberTypes[memberTypeIndex] }}
+
+
+
+
+ • 按会员价格的百分比计算分润
+ • 最高分润比例为50%
+ • 建议设置为10%-30%
+
+
+
+
+
+
+
+
+ 会员价格设置
+
+
+ 月度会员价格
+
+
+ 元
+
+
+
+ 季度会员价格
+
+
+ 元
+
+
+
+ 年度会员价格
+
+
+ 元
+
+
+
+
+
+
+
+ 分润预览
+
+
+ 月度会员分润
+ {{ calculatePreview('monthly') }}
+
+
+ 季度会员分润
+ {{ calculatePreview('quarterly') }}
+
+
+ 年度会员分润
+ {{ calculatePreview('yearly') }}
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/pages/distribution/profit.vue b/src/pages/distribution/profit.vue
new file mode 100644
index 0000000..f9a3ef7
--- /dev/null
+++ b/src/pages/distribution/profit.vue
@@ -0,0 +1,528 @@
+
+
+
+
+
+
+
+ 分润概览
+
+
+
+ {{ totalProfit }}
+ 累计分润
+
+
+ {{ todayProfit }}
+ 今日分润
+
+
+ {{ monthProfit }}
+ 本月分润
+
+
+
+
+ {{ pendingProfit }}
+ 待结算
+
+
+ {{ settledProfit }}
+ 已结算
+
+
+ {{ withdrawableProfit }}
+ 可提现
+
+
+
+
+
+
+
+
+
+ 时间范围
+
+
+ {{ timeRangeOptions[timeRangeIndex] }}
+
+
+
+
+ 分润类型
+
+
+ {{ profitTypeOptions[profitTypeIndex] }}
+
+
+
+
+ 状态
+
+
+ {{ statusOptions[statusIndex] }}
+
+
+
+
+
+
+
+
+ 分润明细
+
+
+
+
+ {{ item.time }}
+ {{ item.type }}
+ {{ item.amount }}
+ {{ item.status }}
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/pages/distribution/qrcode.vue b/src/pages/distribution/qrcode.vue
new file mode 100644
index 0000000..c7d5f03
--- /dev/null
+++ b/src/pages/distribution/qrcode.vue
@@ -0,0 +1,654 @@
+
+
+
+
+
+
+
+
+
+ 分销员
+
+
+ {{ distributorOptions[distributorIndex] }}
+
+
+
+
+ 状态
+
+
+ {{ statusOptions[statusIndex] }}
+
+
+
+
+ 搜索
+
+
+
+
+
+
+
+
+
+ 二维码列表
+
+
+
+
+
+
+
+
+
+ {{ qrcode.code }}
+
+
+
+
+ 分销员:
+ {{ qrcode.distributor }}
+
+
+ 生成时间:
+ {{ qrcode.createTime }}
+
+
+ 扫码次数:
+ {{ qrcode.scanCount }}
+
+
+ 备注:
+ {{ qrcode.remark }}
+
+
+
+
+
+
+
+
+
+
+
+ 🔗
+ 暂无二维码数据
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/pages/distributor/add.vue b/src/pages/distributor/add.vue
index 72a1484..9af88e7 100644
--- a/src/pages/distributor/add.vue
+++ b/src/pages/distributor/add.vue
@@ -1,224 +1,314 @@
-
-
-
\ No newline at end of file
diff --git a/src/pages/distributor/edit.vue b/src/pages/distributor/edit.vue
index d49f8aa..6cf8039 100644
--- a/src/pages/distributor/edit.vue
+++ b/src/pages/distributor/edit.vue
@@ -1,85 +1,88 @@
-
-
-
@@ -87,162 +90,286 @@
\ No newline at end of file
diff --git a/src/pages/distributor/index.vue b/src/pages/distributor/index.vue
index 322e116..c948f56 100644
--- a/src/pages/distributor/index.vue
+++ b/src/pages/distributor/index.vue
@@ -1,398 +1,495 @@
-
-
-
\ No newline at end of file
diff --git a/src/pages/distributor/rule.vue b/src/pages/distributor/rule.vue
index efd6c79..9a3f967 100644
--- a/src/pages/distributor/rule.vue
+++ b/src/pages/distributor/rule.vue
@@ -1,40 +1,153 @@
-
-
@@ -42,104 +155,319 @@
\ No newline at end of file
diff --git a/src/pages/member/general-code.vue b/src/pages/member/general-code.vue
new file mode 100644
index 0000000..27db8d5
--- /dev/null
+++ b/src/pages/member/general-code.vue
@@ -0,0 +1,433 @@
+
+
+
+
+
+
+
+ 推广码信息
+
+
+ 推广码
+ {{ generalCode }}
+
+
+ 生成时间
+ {{ createTime }}
+
+
+ 有效期
+ {{ validityPeriod }}
+
+
+ 使用次数
+ {{ usageCount }}次
+
+
+
+
+
+
+ 推广二维码
+
+
+
+
+
+ {{ generalCode }}
+
+
+
+ 这是通用推广二维码,适用于所有渠道的推广活动
+
+
+
+ 下载二维码
+
+
+ 分享二维码
+
+
+
+
+
+
+
+ 使用记录
+
+
+
+
+ {{ record.time }}
+ {{ record.user }}
+ {{ record.action }}
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/pages/member/gift.vue b/src/pages/member/gift.vue
new file mode 100644
index 0000000..b634d70
--- /dev/null
+++ b/src/pages/member/gift.vue
@@ -0,0 +1,633 @@
+
+
+
+
+
+
+
+ 生成核验码
+
+
+ 会员类型
+
+
+ {{ memberTypeOptions[memberTypeIndex] }}
+
+
+
+
+ 生成数量
+
+
+
+
+
+ 有效期
+
+
+
+
+
+
+ 生成核验码
+
+
+
+
+
+
+
+ 核验码列表
+
+
+
+
+
+
+ 会员类型:
+ {{ code.memberType }}
+
+
+ 生成时间:
+ {{ code.createTime }}
+
+
+ 有效期至:
+ {{ code.validUntil }}
+
+
+ 使用时间:
+ {{ code.usedTime }}
+
+
+
+
+
+
+
+
+
+
+ 🎁
+ 暂无核验码数据
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/pages/member/order.vue b/src/pages/member/order.vue
new file mode 100644
index 0000000..be446d9
--- /dev/null
+++ b/src/pages/member/order.vue
@@ -0,0 +1,623 @@
+
+
+
+
+
+
+
+
+
+ 状态
+
+
+ {{ statusOptions[statusIndex] }}
+
+
+
+
+ 会员类型
+
+
+ {{ memberTypeOptions[memberTypeIndex] }}
+
+
+
+
+ 搜索
+
+
+
+
+
+
+
+
+
+ 订单列表
+
+
+
+
+
+
+ 学员姓名:
+ {{ order.studentName }}
+
+
+ 会员类型:
+ {{ order.memberType }}
+
+
+ 订单金额:
+ {{ order.amount }}
+
+
+ 下单时间:
+ {{ order.createTime }}
+
+
+
+
+
+
+
+
+
+
+ 🛒
+ 暂无订单数据
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/pages/member/personal-gift.vue b/src/pages/member/personal-gift.vue
new file mode 100644
index 0000000..34413f0
--- /dev/null
+++ b/src/pages/member/personal-gift.vue
@@ -0,0 +1,548 @@
+
+
+
+
+
+
+
+ 可用额度
+
+
+ 本月可用赠送额度
+ {{ availableQuota }}个
+
+
+ 剩余 {{ availableQuota }} 个赠送会员名额,请合理使用
+
+
+
+
+
+
+ 生成核验码
+
+
+ 会员类型
+
+
+ {{ memberTypeOptions[memberTypeIndex] }}
+
+
+
+
+ 生成数量
+
+
+
+
+
+
+ 生成核验码
+
+
+
+
+
+
+
+ 我的核验码
+
+
+
+
+
+
+ 会员类型:
+ {{ code.memberType }}
+
+
+ 生成时间:
+ {{ code.createTime }}
+
+
+ 有效期至:
+ {{ code.validUntil }}
+
+
+
+
+
+
+
+
+
+
+ 🎁
+ 暂无核验码数据
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/pages/member/personal-order.vue b/src/pages/member/personal-order.vue
new file mode 100644
index 0000000..db55dbd
--- /dev/null
+++ b/src/pages/member/personal-order.vue
@@ -0,0 +1,548 @@
+
+
+
+
+
+
+
+
+
+ 时间范围
+
+
+ {{ timeRangeOptions[timeRangeIndex] }}
+
+
+
+
+ 订单状态
+
+
+ {{ statusOptions[statusIndex] }}
+
+
+
+
+
+
+
+
+ 订单概览
+
+
+
+ {{ totalOrders }}
+ 总订单数
+
+
+ {{ completedOrders }}
+ 已完成
+
+
+ {{ totalAmount }}
+ 总金额
+
+
+ {{ totalProfit }}
+ 总收益
+
+
+
+
+
+
+
+ 订单列表
+
+
+
+
+
+
+ 学员姓名:
+ {{ order.studentName }}
+
+
+ 会员类型:
+ {{ order.memberType }}
+
+
+ 订单金额:
+ {{ order.amount }}
+
+
+ 下单时间:
+ {{ order.createTime }}
+
+
+ 收益:
+ {{ order.profit }}
+
+
+
+
+
+
+
+
+
+ 📋
+ 暂无订单数据
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/pages/mine/custom-fields.vue b/src/pages/mine/custom-fields.vue
index a730b14..76584b7 100644
--- a/src/pages/mine/custom-fields.vue
+++ b/src/pages/mine/custom-fields.vue
@@ -55,9 +55,10 @@
字段类型
{{ getFieldTypeName(field.type) }}
@@ -82,7 +83,8 @@
是否必填
@@ -113,7 +115,8 @@
启用字段筛选
@@ -123,18 +126,19 @@
默认显示字段
-
-
- {{ filterRules.defaultFields.length }} 个字段
+
+
+ {{ filterRules.defaultFields.length }} 个字段
+
+
-
-
@@ -188,6 +192,9 @@
defaultFields: [0, 1]
})
+ // 当前编辑的字段索引
+ const currentEditIndex = ref(null)
+
// 计算可用字段
const availableFields = computed(() => {
return customFields.value.map((field, index) => ({
@@ -237,6 +244,39 @@
})
}
+ // 获取字段类型索引
+ function getFieldTypeIndex(type) {
+ return fieldTypes.value.findIndex(item => item.value === type)
+ }
+
+ // 处理字段类型变更
+ function onFieldTypeChange(e) {
+ const index = e.detail.value
+ if (currentEditIndex.value !== null) {
+ customFields.value[currentEditIndex.value].type = fieldTypes.value[index].value
+ }
+ }
+
+ // 获取默认字段索引
+ function getDefaultFieldsIndex() {
+ return filterRules.value.defaultFields
+ }
+
+ // 处理默认字段变更
+ function onDefaultFieldsChange(e) {
+ filterRules.value.defaultFields = e.detail.value
+ }
+
+ // 处理必填状态变更
+ function onRequiredChange(e, index) {
+ customFields.value[index].required = e.detail.value
+ }
+
+ // 处理筛选启用状态变更
+ function onFilterEnabledChange(e) {
+ filterRules.value.enabled = e.detail.value
+ }
+
// 移动字段
function moveField(index, direction) {
if (direction === 'up' && index > 0) {
diff --git a/src/pages/mine/password-change.vue b/src/pages/mine/password-change.vue
index 77624ee..6c7a024 100644
--- a/src/pages/mine/password-change.vue
+++ b/src/pages/mine/password-change.vue
@@ -69,16 +69,16 @@
• 密码长度至少8位
-
+
• 包含大写字母
-
+
• 包含小写字母
-
+
• 包含数字
- ]/.test(passwordForm.newPassword) }">
+
• 包含特殊字符
@@ -119,7 +119,13 @@
confirmPassword: ''
})
- // 显示密码
+ // 密码强度计算属性
+ const hasUpperCase = computed(() => /[A-Z]/.test(passwordForm.value.newPassword))
+ const hasLowerCase = computed(() => /[a-z]/.test(passwordForm.value.newPassword))
+ const hasNumber = computed(() => /[0-9]/.test(passwordForm.value.newPassword))
+ const hasSpecialChar = computed(() => /[!@#$%^&*()_+\-=\[\]{};':"\\|,.<>\/?]/.test(passwordForm.value.newPassword))
+
+ // 密码强度文本显示密码
const showPassword = ref(false)
// 切换密码显示状态
diff --git a/src/pages/mine/personal-info.vue b/src/pages/mine/personal-info.vue
index d86b6e0..9002a5c 100644
--- a/src/pages/mine/personal-info.vue
+++ b/src/pages/mine/personal-info.vue
@@ -67,8 +67,9 @@
性别
{{ userInfo.gender || '请选择性别' }}
@@ -165,6 +166,17 @@
uni.navigateBack({ delta: 1 })
}
+ // 获取性别索引
+ function getGenderIndex() {
+ return genders.indexOf(userInfo.value.gender)
+ }
+
+ // 处理性别变更
+ function onGenderChange(e) {
+ const index = e.detail.value
+ userInfo.value.gender = genders[index]
+ }
+
// 选择头像
function chooseAvatar() {
uni.chooseImage({
diff --git a/src/pages/stats/distribution.vue b/src/pages/stats/distribution.vue
new file mode 100644
index 0000000..b2266a5
--- /dev/null
+++ b/src/pages/stats/distribution.vue
@@ -0,0 +1,589 @@
+
+
+
+
+
+
+
+
+
+ 时间范围
+
+
+
+ {{ date }}
+
+
+
+
+
+ 分销员
+
+
+ {{ distributorOptions[distributorIndex] }}
+
+
+
+
+
+
+
+
+
+
+ 💰
+
+ {{ metrics.totalProfit }}
+ 总提成
+
+
+
+ 📱
+
+ {{ metrics.scanCount }}
+ 扫码数
+
+
+
+ 👥
+
+ {{ metrics.paidCount }}
+ 付费人数
+
+
+
+ 📈
+
+ {{ metrics.conversionRate }}
+ 转化率
+
+
+
+
+
+
+
+ 业绩趋势
+
+
+
+
+
+
+
+
+
+
+ {{ day.date }}
+ {{ day.amount }}
+
+
+
+
+
+
+
+
+
+ 分销员排行榜
+
+
+ {{ index + 1 }}
+
+ {{ item.name }}
+
+
+ 提成:
+ {{ item.profit }}
+
+
+ 扫码:
+ {{ item.scans }}
+
+
+
+
+ →
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/pages/stats/member.vue b/src/pages/stats/member.vue
new file mode 100644
index 0000000..ed040fc
--- /dev/null
+++ b/src/pages/stats/member.vue
@@ -0,0 +1,743 @@
+
+
+
+
+
+
+
+
+
+ 时间范围
+
+
+ {{ dateOptions[dateIndex] }}
+
+
+
+
+ 会员类型
+
+
+ {{ memberTypeOptions[memberTypeIndex] }}
+
+
+
+
+
+
+
+
+
+
+ 🛒
+
+ {{ metrics.totalOrders }}
+ 总订单数
+
+
+
+ 💰
+
+ {{ metrics.totalAmount }}
+ 总金额
+
+
+
+ 📈
+
+ {{ metrics.averageAmount }}
+ 平均金额
+
+
+
+ ⚠️
+
+ {{ metrics.refundRate }}
+ 退款率
+
+
+
+
+
+
+
+ 订单趋势
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 订单数
+
+
+
+ 金额
+
+
+
+
+
+
+
+
+
+ 会员类型分布
+
+
+ {{ item.icon }}
+
+ {{ item.type }}
+
+
+ 订单:
+ {{ item.orders }}
+
+
+ 占比:
+ {{ item.percentage }}
+
+
+
+
+
+
+
+
+
+ 最近订单
+
+
+
+
+
+ 会员类型:
+ {{ order.memberType }}
+
+
+ 学员:
+ {{ order.studentName }}
+
+
+ 金额:
+ {{ order.amount }}
+
+
+ 时间:
+ {{ order.createTime }}
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/pages/stats/student.vue b/src/pages/stats/student.vue
new file mode 100644
index 0000000..1b62285
--- /dev/null
+++ b/src/pages/stats/student.vue
@@ -0,0 +1,762 @@
+
+
+
+
+
+
+
+
+
+ 时间范围
+
+
+ {{ dateOptions[dateIndex] }}
+
+
+
+
+ 班级
+
+
+ {{ classOptions[classIndex] }}
+
+
+
+
+
+
+
+
+
+
+ 🎓
+
+ {{ metrics.totalStudents }}
+ 总学员数
+
+
+
+ 👥
+
+ {{ metrics.memberStudents }}
+ 会员学员
+
+
+
+ 📊
+
+ {{ metrics.avgCorrectRate }}
+ 平均正确率
+
+
+
+ ✏️
+
+ {{ metrics.avgExamScore }}
+ 平均模考分
+
+
+
+
+
+
+
+ 学习趋势
+
+
+
+
+
+
+
+
+
+
+ {{ day.date }}
+ {{ day.hours }}h
+
+
+
+
+
+
+
+
+
+ 学习情况分布
+
+
+ {{ item.icon }}
+
+ {{ item.level }}
+
+
+ 人数:
+ {{ item.count }}
+
+
+ 占比:
+ {{ item.percentage }}
+
+
+
+
+
+
+
+
+
+ 学员列表
+
+
+
+ {{ student.name }}
+
+
+ 班级:
+ {{ student.class }}
+
+
+ 会员:
+ {{ student.isMember ? '是' : '否' }}
+
+
+
+
+
+ 正确率:
+ {{ student.correctRate }}
+
+
+ 模考分:
+ {{ student.examScore }}
+
+
+
+ →
+
+
+
+
+ 加载更多
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/pages/student/analysis.vue b/src/pages/student/analysis.vue
new file mode 100644
index 0000000..3390c46
--- /dev/null
+++ b/src/pages/student/analysis.vue
@@ -0,0 +1,475 @@
+
+
+
+
+
+
+
+
+
+ 时间范围
+
+
+ {{ timeRangeOptions[timeRangeIndex] }}
+
+
+
+
+ 学员类型
+
+
+ {{ studentTypeOptions[studentTypeIndex] }}
+
+
+
+
+
+
+
+
+ 核心数据
+
+
+
+ {{ totalStudents }}
+ 总学员数
+
+
+ {{ activeStudents }}
+ 活跃学员
+
+
+ {{ memberStudents }}
+ 会员学员
+
+
+ {{ avgStudyTime }}
+ 平均学习时长
+
+
+
+
+
+
+
+ 学习趋势
+
+
+
+ 学习时长趋势图
+
+
+ 近7天学员学习时长变化趋势
+
+
+
+
+
+
+ 学习分布
+
+
+
+ 学习分布饼图
+
+
+ 学员学习科目分布
+
+
+
+
+
+
+ 学习排行
+
+
+
+
+ {{ index + 1 }}
+ {{ item.name }}
+ {{ item.studyTime }}
+ {{ item.completedCount }}
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/pages/student/detail.vue b/src/pages/student/detail.vue
new file mode 100644
index 0000000..0ad2d3d
--- /dev/null
+++ b/src/pages/student/detail.vue
@@ -0,0 +1,642 @@
+
+
+
+
+
+
+
+ 基本信息
+
+
+
+ 学员姓名
+ {{ studentInfo.name }}
+
+
+ 性别
+ {{ studentInfo.gender }}
+
+
+
+
+ 手机号码
+ {{ studentInfo.phone }}
+
+
+ 年龄
+ {{ studentInfo.age }}岁
+
+
+
+
+ 所在班级
+ {{ studentInfo.class }}
+
+
+ 会员状态
+ {{ studentInfo.isMember ? '会员' : '非会员' }}
+
+
+
+
+ 注册时间
+ {{ studentInfo.registerTime }}
+
+
+
+
+
+
+
+ 学习情况
+
+
+
+ 📚
+
+ {{ learningStats.totalQuestions }}
+ 总练习题数
+
+
+
+ 🎯
+
+ {{ learningStats.correctRate }}
+ 正确率
+
+
+
+ ✏️
+
+ {{ learningStats.totalExams }}
+ 总模考次数
+
+
+
+ 🏆
+
+ {{ learningStats.avgScore }}
+ 平均模考分
+
+
+
+
+
+
+ 学习进度
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 最近学习记录
+
+
+ {{ record.time }}
+
+ {{ record.type }}
+ {{ record.detail }}
+
+ {{ record.status }}
+
+
+
+ 查看全部记录
+
+
+
+
+
+
+
+ 💬
+ 发送消息
+
+
+ 📞
+ 拨打电话
+
+
+ 📝
+ 模考记录
+
+
+ ❌
+ 错题本
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/pages/student/list.vue b/src/pages/student/list.vue
new file mode 100644
index 0000000..6282c0e
--- /dev/null
+++ b/src/pages/student/list.vue
@@ -0,0 +1,511 @@
+
+
+
+
+
+
+
+
+
+ 状态
+
+
+ {{ statusOptions[statusIndex] }}
+
+
+
+
+ 搜索
+
+
+
+
+
+
+
+
+
+ 学员列表
+
+
+
+ {{ getInitials(student.name) }}
+
+
+ {{ student.name }}
+
+ {{ student.phone }}
+ {{ student.school }}
+ {{ student.status }}
+
+
+
+
+ 编辑
+
+
+ 删除
+
+
+
+
+
+
+
+
+ 🎓
+ 暂无学员数据
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/pages/student/remind.vue b/src/pages/student/remind.vue
new file mode 100644
index 0000000..263ba16
--- /dev/null
+++ b/src/pages/student/remind.vue
@@ -0,0 +1,515 @@
+
+
+
+
+
+
+
+ 提醒设置
+
+
+ 提醒类型
+
+
+ {{ remindTypeOptions[remindTypeIndex] }}
+
+
+
+
+ 提醒内容
+
+
+ {{ remindContent.length }}/200
+
+
+
+ 发送时间
+
+
+
+
+
+
+
+
+
+ 学员选择
+
+
+ 选择方式
+
+
+ {{ selectTypeOptions[selectTypeIndex] }}
+
+
+
+
+ 选择学员
+
+
+
+
+
+ 上传文件
+
+
+ 选择文件
+
+ {{ uploadedFile }}
+
+
+
+
+
+
+
+ 发送预览
+
+
+
+ {{ remindContent || '请输入提醒内容' }}
+
+
+
+
+
+
+
+
+ 发送提醒
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/pages/work/index.vue b/src/pages/work/index.vue
index 3d56b73..db670c0 100644
--- a/src/pages/work/index.vue
+++ b/src/pages/work/index.vue
@@ -235,17 +235,6 @@
-
-
- 🤖
- {{ exceptionCount.ai }}
-
-
- AI充值订单异常
- 处理AI充值订单失败等异常
-
-
-
🛒
@@ -268,7 +257,6 @@
const userRole = ref('admin') // 模拟角色,实际应从登录状态获取
const exceptionCount = ref({ // 模拟异常数量
profit: 2, // 分润异常数量
- ai: 1, // AI充值订单异常数量
member: 3 // 会员订单异常数量
})
@@ -457,12 +445,6 @@
})
}
- function goToAiRechargeException() {
- uni.navigateTo({
- url: '/pages/exception/ai-recharge'
- })
- }
-
function goToMemberOrderException() {
uni.navigateTo({
url: '/pages/exception/member-order'