diff --git a/src/pages/order3/SaleTask/api.ts b/src/pages/order3/SaleTask/api.ts index 6df1ea0..a1f868a 100644 --- a/src/pages/order3/SaleTask/api.ts +++ b/src/pages/order3/SaleTask/api.ts @@ -25,6 +25,7 @@ export interface GetSaleTaskApiRes { testDriveTaskCount: number; seriesTaskCount: number; vehicleGrossProfitTask: number; + totalGrossProfitTask: number; } export interface SeriesTaskItem { @@ -71,6 +72,8 @@ export interface ShopTaskItem { seriesTaskCount: number; vehicleGrossProfitTask: number; taskId?: number; + orderTaskApplyId?: number; + orderShopTaskId?: number; } /** 月度零售任务列表 */ @@ -150,6 +153,13 @@ export function batchSetSaleTask( return request.post(`${ORDER3_HOST}/erp/sales/task/batch/shop/set`, params); } +/** 自动分配单个门店的零售任务 */ +export function autoAssignOneShop( + params: ShopTaskItem +): PromiseResp { + return request.post(`${ORDER3_HOST}/erp/sales/task/auto/assign/shop`, params); +} + export interface BrandItem { id: number; initial: string; diff --git a/src/pages/order3/SaleTask/components/EntryTaskPreview.tsx b/src/pages/order3/SaleTask/components/EntryTaskPreview.tsx index 291500a..01c13d5 100644 --- a/src/pages/order3/SaleTask/components/EntryTaskPreview.tsx +++ b/src/pages/order3/SaleTask/components/EntryTaskPreview.tsx @@ -189,6 +189,11 @@ const EntryTaskPreview = ({ onSearch={(v) => { setParams({ keywords: v }, true); }} + onBlur={(e) => { + if (e.target.value.trim() === "") { + setParams({ keywords: "" }, true); + } + }} /> { await form.validateFields(); const values = form.getFieldsValue(); - if (Object.values(values).every((item) => !item)) { + if ( + Object.values(values).every( + (item) => !item || (isArray(item) && item.length === 0) + ) + ) { message.warn("请设置任务后再进行分配"); return; } diff --git a/src/pages/order3/SaleTask/index.tsx b/src/pages/order3/SaleTask/index.tsx index d7abbc5..7bdd967 100644 --- a/src/pages/order3/SaleTask/index.tsx +++ b/src/pages/order3/SaleTask/index.tsx @@ -354,6 +354,11 @@ function SaleTaskList() { onSearch={(v) => { setParams({ shopName: v }, true); }} + onBlur={(e) => { + if (e.target.value.trim() === "") { + setParams({ shopName: "" }, true); + } + }} /> {!isReadOnly && ( @@ -403,7 +408,9 @@ function SaleTaskList() { {data.fuelVehicleTaskCount} - - - + + {data.totalGrossProfitTask} + {data.clueDealTaskCount} diff --git a/src/pages/order3/SaleTask/subpages/TaskEdit/components/ShopTask.tsx b/src/pages/order3/SaleTask/subpages/TaskEdit/components/ShopTask.tsx index 566eb77..236dc86 100644 --- a/src/pages/order3/SaleTask/subpages/TaskEdit/components/ShopTask.tsx +++ b/src/pages/order3/SaleTask/subpages/TaskEdit/components/ShopTask.tsx @@ -8,6 +8,7 @@ import { Button, Row, Tag, + Modal, } from "antd"; import { PlusOutlined } from "@ant-design/icons"; import * as API from "../../../api"; @@ -102,6 +103,41 @@ export default function ShopTask({ form }: ShopTaskProps) { }); }; + // 分配到门店和顾问 + const autoAssignOneShop = async () => { + await form.validateFields(); + const values = form.getFieldsValue(); + Modal.confirm({ + title: ( + + 确认分配到 + 全部门店和顾问 + 吗? + + ), + zIndex: 1002, + onOk: async () => { + const hide = message.loading("分配中,请稍候", 0); + const { taskId, id, ...other } = shopTaskItem!; + API.autoAssignOneShop({ + ...other, + ...values, + orderTaskApplyId: taskId, + orderShopTaskId: id, + }) + .then((res) => { + message.success("分配成功"); + }) + .catch((error: any) => { + message.error(error.message ?? "请求失败"); + }) + .finally(() => { + hide(); + }); + }, + }); + }; + const layout = { labelCol: { span: 5 }, wrapperCol: { span: 19 }, @@ -405,6 +441,15 @@ export default function ShopTask({ form }: ShopTaskProps) { 保存草稿 )} + {!isReadOnly && ( + + )}