feat(topone): 实现任务下发功能并优化界面布局

- 添加任务下发API接口并在任务列表组件中引入
- 修改任务创建逻辑,对接后端API
- 获取下属人员列表用于任务分配
- 优化表格布局,移除总业绩列
- 删除不必要的指导建议模块
This commit is contained in:
2025-08-21 11:43:59 +08:00
parent 544a66b8fa
commit 8780a94f82
9 changed files with 112 additions and 278 deletions

View File

@@ -26,10 +26,6 @@
<div class="detail-label">成交单数</div>
<div class="detail-value">{{ selectedMember.deals || 0 }} </div>
</div>
<div class="detail-card">
<div class="detail-label">总业绩</div>
<div class="detail-value">¥{{ formatAmount(selectedMember.week_amount || selectedMember.performance) }}</div>
</div>
<div class="detail-card">
<div class="detail-label">转化率</div>
<div class="detail-value">{{ selectedMember.conversion_rate || selectedMember.conversion || '0%' }}</div>
@@ -38,7 +34,7 @@
</div>
<!-- 指导建议 -->
<div class="guidance-section">
<!-- <div class="guidance-section">
<div class="guidance-header" @click="toggleGuidanceCollapse">
<h3>💡 指导建议</h3>
<div class="collapse-toggle" :class="{ 'collapsed': isGuidanceCollapsed }">
@@ -69,7 +65,7 @@
<p>{{ selectedMember.user_name || selectedMember.name }} 的各项指标都很不错继续保持这种状态</p>
</div>
</div>
</div>
</div> -->
<!-- 录音列表 -->
<div class="recordings-section">

View File

@@ -6,7 +6,6 @@
<div class="table-header">
<span>排名</span>
<span>姓名</span>
<span>总业绩</span>
<span>转化率</span>
<span>加微率</span>
<span>入群率</span>
@@ -21,7 +20,6 @@
>
<span class="rank">{{ index + 1 }}</span>
<span class="name">{{ member.user_name || member.name }}</span>
<span class="performance">¥{{ formatAmount(member.week_amount || member.performance) }}</span>
<span class="conversion">{{ member.conversion_rate || member.conversion || '0%' }}</span>
<span class="wechat-rate">{{ member.plus_v_rate || member.wechatRate || '0%' }}</span>
<span class="group-rate">{{ member.group_rate || member.groupRate || '0%' }}</span>
@@ -164,7 +162,7 @@ const handleDoubleClick = (member) => {
.table-header {
display: grid;
grid-template-columns: 60px 1fr 120px 80px 90px 90px;
grid-template-columns: 60px 1fr 80px 90px 90px;
gap: 0.8rem;
padding: 0.75rem 0;
border-bottom: 1px solid #e2e8f0;
@@ -176,7 +174,7 @@ const handleDoubleClick = (member) => {
.table-row {
display: grid;
grid-template-columns: 60px 1fr 120px 80px 90px 90px;
grid-template-columns: 60px 1fr 80px 90px 90px;
gap: 0.8rem;
padding: 0.75rem 0;
border-bottom: 1px solid #f1f5f9;
@@ -243,7 +241,7 @@ const handleDoubleClick = (member) => {
.ranking-table {
.table-header {
grid-template-columns: 40px 1fr 70px 55px 55px 55px;
grid-template-columns: 40px 1fr 70px 55px 55px;
gap: 0.3rem;
font-size: 0.75rem;
padding: 0.5rem 0;
@@ -251,7 +249,7 @@ const handleDoubleClick = (member) => {
}
.table-row {
grid-template-columns: 40px 1fr 70px 55px 55px 55px;
grid-template-columns: 40px 1fr 70px 55px 55px;
gap: 0.3rem;
font-size: 0.8rem;
padding: 0.5rem 0;
@@ -292,14 +290,14 @@ const handleDoubleClick = (member) => {
.ranking-table {
.table-header {
grid-template-columns: 30px 1fr 55px 45px 45px 45px;
grid-template-columns: 30px 1fr 55px 45px 45px;
gap: 0.2rem;
font-size: 0.7rem;
white-space: nowrap;
}
.table-row {
grid-template-columns: 30px 1fr 55px 45px 45px 45px;
grid-template-columns: 30px 1fr 55px 45px 45px;
gap: 0.2rem;
font-size: 0.75rem;
white-space: nowrap;

View File

@@ -1288,7 +1288,7 @@ onMounted(async () => {
// PC端保持一致布局
@media (min-width: 1024px) {
grid-template-columns: 50px 1fr 100px 80px 90px 90px;
grid-template-columns: 50px 1fr 80px 90px 90px;
gap: 1rem;
font-size: 0.875rem;
padding: 1rem 0;
@@ -1296,7 +1296,7 @@ onMounted(async () => {
// 平板端适配
@media (max-width: 1023px) and (min-width: 769px) {
grid-template-columns: 45px 1fr 90px 70px 90px 90px;
grid-template-columns: 45px 1fr 70px 90px 90px;
gap: 0.75rem;
font-size: 0.8125rem;
@@ -1305,7 +1305,7 @@ onMounted(async () => {
// 移动端适配
@media (max-width: 768px) {
grid-template-columns: 40px 1fr 80px 60px 90px 90px;
grid-template-columns: 40px 1fr 60px 90px 90px;
gap: 0.5rem;
font-size: 0.75rem;
@@ -1343,7 +1343,7 @@ onMounted(async () => {
// PC端保持一致布局
@media (min-width: 1024px) {
grid-template-columns: 50px 1fr 100px 80px 90px 90px;
grid-template-columns: 50px 1fr 80px 90px 90px;
gap: 1rem;
font-size: 0.875rem;