From a0507927dfccf2cde9d217ffbeb702a6cfe10dc4 Mon Sep 17 00:00:00 2001 From: zyk Date: Tue, 3 Mar 2026 10:22:07 +0800 Subject: [PATCH] =?UTF-8?q?=E9=85=8D=E7=A7=8D=E8=AE=A1=E5=88=92=E9=87=8D?= =?UTF-8?q?=E6=96=B0=E8=AE=BE=E8=AE=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/api/mating_plan/generate.js | 75 +- .../mating_plan/generate/index.vue | 1590 +++++++---------- 2 files changed, 699 insertions(+), 966 deletions(-) diff --git a/src/api/mating_plan/generate.js b/src/api/mating_plan/generate.js index 4153265..929146a 100644 --- a/src/api/mating_plan/generate.js +++ b/src/api/mating_plan/generate.js @@ -18,22 +18,63 @@ export function getBreedPlanGenerate(id) { } // 筛选符合条件的母羊 -export function selectEligibleEwe() { +export function selectEligibleEwe(params) { return request({ url: '/mating_plan/generate/selectEwe', - method: 'get' + method: 'get', + params }) } // 筛选符合条件的公羊 -export function selectEligibleRam() { +export function selectEligibleRam(params) { return request({ url: '/mating_plan/generate/selectRam', - method: 'get' + method: 'get', + params }) } -// 自动生成配种计划 +/** + * 导出已选母羊/公羊配对表(按轮询自动配对,用户可在Excel中调整后再导入) + * @param {Object} data - { eweIds: [], ramIds: [] } + */ +export function exportSelectedPairs(data) { + return request({ + url: '/mating_plan/generate/exportPairs', + method: 'post', + data, + responseType: 'blob' + }) +} + +/** + * 解析上传的配对Excel,返回预览数据,不生成计划 + * 使用 FormData 上传文件 + * @param {FormData} formData - 包含 file 字段的表单数据 + */ +export function parsePairsFromExcel(formData) { + return request({ + url: '/mating_plan/generate/parsePairs', + method: 'post', + data: formData, + headers: { 'Content-Type': 'multipart/form-data' } + }) +} + +/** + * 根据导入的配对数据生成配种计划 + * @param {Object} data - { planType: 1, pairs: [{eweEarNo, ramEarNo, eweId, ramId}] } + */ +export function generateBreedPlanFromPairs(data) { + return request({ + url: '/mating_plan/generate/generateFromPairs', + method: 'post', + data + }) +} + +// 自动生成配种计划(按比例分配,原有逻辑) export function autoGenerateBreedPlan(data) { return request({ url: '/mating_plan/generate/auto', @@ -85,24 +126,15 @@ export function viewBreedPlan(id) { }) } -// 导出配种计划详情 +// 导出配种计划详情(已审批计划的详细Excel) export function exportBreedPlanDetails(id) { return request({ url: '/mating_plan/generate/export/' + id, - method: 'get', + method: 'post', responseType: 'blob' }) } -// 修改配种计划详情 -export function updateBreedPlan(data) { - return request({ - url: '/mating_plan/generate/update', - method: 'put', - data: data - }) -} - // 删除配种计划生成 export function delBreedPlanGenerate(id) { return request({ @@ -114,9 +146,18 @@ export function delBreedPlanGenerate(id) { // 模糊查询母羊耳号列表 export function searchEarNumbers(query) { return request({ - url: '/mating_plan/generate/search_ear_numbers', // 根据实际路径修改 + url: '/mating_plan/generate/search_ear_numbers', method: 'get', params: { query } }) } +// 下载配对模板(空白模板,只有表头) +export function downloadPairTemplate() { + return request({ + url: '/mating_plan/generate/exportPairs', + method: 'post', + data: { eweIds: [], ramIds: [] }, + responseType: 'blob' + }) +} \ No newline at end of file diff --git a/src/views/mating_plan/mating_plan/generate/index.vue b/src/views/mating_plan/mating_plan/generate/index.vue index 403fc84..e4147c6 100644 --- a/src/views/mating_plan/mating_plan/generate/index.vue +++ b/src/views/mating_plan/mating_plan/generate/index.vue @@ -1,1032 +1,724 @@ -