feat(topone): 实现任务下发功能并优化界面布局
- 添加任务下发API接口并在任务列表组件中引入 - 修改任务创建逻辑,对接后端API - 获取下属人员列表用于任务分配 - 优化表格布局,移除总业绩列 - 删除不必要的指导建议模块
This commit is contained in:
@@ -94,9 +94,9 @@
|
||||
<select v-model="newTask.assignee">
|
||||
<option value="">请选择员工</option>
|
||||
<option
|
||||
v-for="employee in employees"
|
||||
:key="employee.id"
|
||||
:value="employee.name"
|
||||
v-for="employee in assigneeOptions"
|
||||
:key="employee.wechat_id"
|
||||
:value="employee.wechat_id"
|
||||
>
|
||||
{{ employee.name }}
|
||||
</option>
|
||||
@@ -140,6 +140,7 @@
|
||||
|
||||
<script setup>
|
||||
import { ref, reactive, computed, onMounted, nextTick } from "vue";
|
||||
import axios from "axios";
|
||||
import UserDropdown from "@/components/UserDropdown.vue";
|
||||
import KpiMetrics from "./components/KpiMetrics.vue";
|
||||
import SalesProgress from "./components/SalesProgress.vue";
|
||||
@@ -157,8 +158,9 @@ import DataDetail from "./components/DataDetail.vue";
|
||||
import CampManagement from "./components/CampManagement.vue";
|
||||
import DetailedDataTable from "./components/DetailedDataTable.vue";
|
||||
import { getOverallCompanyPerformance,getCompanyDepositConversionRate,getCompanyTotalCallCount,getCompanyNewCustomer,getCompanyConversionRate,getCompanyRealTimeProgress
|
||||
,getCompanyConversionRateVsLast,getSalesMonthlyPerformance,getCustomerTypeDistribution,getUrgentNeedToAddress,getLevelTree,getDetailedDataTable
|
||||
,getCompanyConversionRateVsLast,getSalesMonthlyPerformance,getCustomerTypeDistribution,getUrgentNeedToAddress,getLevelTree,getDetailedDataTable,assignTasks
|
||||
} from "@/api/top";
|
||||
|
||||
const rankingPeriod = ref("month");
|
||||
const rankingData = ref([
|
||||
{ id: 1, name: "张三", department: "销售一部", performance: 125000 },
|
||||
@@ -172,15 +174,7 @@ const sortField = ref("dealRate");
|
||||
const sortOrder = ref("desc");
|
||||
const selectedPerson = ref(null);
|
||||
|
||||
const tasks = ref([
|
||||
{
|
||||
id: 1,
|
||||
title: "完成Q4销售目标制定",
|
||||
assignee: "张三",
|
||||
deadline: "2024-01-15",
|
||||
status: "pending",
|
||||
}
|
||||
]);
|
||||
const tasks = ref([]);
|
||||
|
||||
const employees = ref([
|
||||
{ id: 1, name: "张三" }
|
||||
@@ -193,7 +187,51 @@ const newTask = reactive({
|
||||
deadline: "",
|
||||
description: "",
|
||||
});
|
||||
// 下拉框人员
|
||||
const assigneeOptions = ref([]);
|
||||
async function name() {
|
||||
try {
|
||||
console.log('开始获取下属人员列表...');
|
||||
const res = await axios.get('http://192.168.15.56:8890/api/v1/level_five/overview/get_subordinates',{
|
||||
headers: {
|
||||
'Authorization': 'Bearer ' + localStorage.getItem('token')
|
||||
}
|
||||
});
|
||||
assigneeOptions.value = res.data.data;
|
||||
|
||||
console.log('assigneeOptions设置后:', assigneeOptions.value);
|
||||
} catch (error) {
|
||||
console.error('获取下属人员列表失败:', error);
|
||||
}
|
||||
/**
|
||||
* "data": [
|
||||
{
|
||||
"name": "程琦",
|
||||
"wechat_id": "1688856301330784"
|
||||
},
|
||||
{
|
||||
"name": "潘加俊",
|
||||
"wechat_id": "1688855836721980"
|
||||
},
|
||||
{
|
||||
"name": "伍晶晶",
|
||||
"wechat_id": "1688854476805987"
|
||||
},
|
||||
{
|
||||
"name": "张三丰",
|
||||
"wechat_id": "1212345648513"
|
||||
},
|
||||
{
|
||||
"name": "朱一航",
|
||||
"wechat_id": "1212345648513"
|
||||
},
|
||||
{
|
||||
"name": "王卓琳",
|
||||
"wechat_id": "1212345648513"
|
||||
}
|
||||
]
|
||||
*/
|
||||
}
|
||||
// 计算属性
|
||||
const filteredTableData = computed(() => {
|
||||
let filtered = tableData.value;
|
||||
@@ -321,31 +359,50 @@ const downloadCall = (callId) => {
|
||||
console.log("下载通话录音:", callId);
|
||||
};
|
||||
|
||||
const createTask = () => {
|
||||
const createTask = async () => {
|
||||
if (!newTask.title || !newTask.assignee || !newTask.deadline) {
|
||||
alert("请填写完整信息");
|
||||
return;
|
||||
}
|
||||
|
||||
const task = {
|
||||
id: Date.now(),
|
||||
title: newTask.title,
|
||||
assignee: newTask.assignee,
|
||||
deadline: newTask.deadline,
|
||||
status: "pending",
|
||||
};
|
||||
try {
|
||||
// 构造API请求参数
|
||||
const params = {
|
||||
task_title: newTask.title,
|
||||
task_assignee: [newTask.assignee], // 转换为数组格式
|
||||
expiration_date: newTask.deadline.replace(/-/g, ''), // 移除日期中的横线
|
||||
task_content: newTask.description || newTask.title
|
||||
};
|
||||
|
||||
tasks.value.unshift(task);
|
||||
// 调用API
|
||||
const response = await assignTasks(params);
|
||||
console.log('任务创建成功:', response);
|
||||
|
||||
// 重置表单
|
||||
Object.assign(newTask, {
|
||||
title: "",
|
||||
assignee: "",
|
||||
deadline: "",
|
||||
description: "",
|
||||
});
|
||||
// 创建本地任务对象用于显示
|
||||
const task = {
|
||||
id: Date.now(),
|
||||
title: newTask.title,
|
||||
assignee: newTask.assignee,
|
||||
deadline: newTask.deadline,
|
||||
status: "pending",
|
||||
};
|
||||
|
||||
showTaskModal.value = false;
|
||||
tasks.value.unshift(task);
|
||||
|
||||
// 重置表单
|
||||
Object.assign(newTask, {
|
||||
title: "",
|
||||
assignee: "",
|
||||
deadline: "",
|
||||
description: "",
|
||||
});
|
||||
|
||||
showTaskModal.value = false;
|
||||
alert('任务创建成功!');
|
||||
} catch (error) {
|
||||
console.error('创建任务失败:', error);
|
||||
alert('创建任务失败,请重试');
|
||||
}
|
||||
};
|
||||
|
||||
// 核心数据
|
||||
@@ -592,6 +649,7 @@ onMounted(async() => {
|
||||
await getCustomerUrgency()
|
||||
await CusotomGetLevelTree()
|
||||
await getDetailData()
|
||||
await name() // 获取下属人员列表
|
||||
});
|
||||
</script>
|
||||
|
||||
|
||||
Reference in New Issue
Block a user