diff --git a/docs/功能测试-班次管理.md b/docs/功能测试-班次管理.md new file mode 100644 index 00000000..c420c8e5 --- /dev/null +++ b/docs/功能测试-班次管理.md @@ -0,0 +1,19 @@ +# 功能测试任务列表 - 班次管理 + +> 路由:`/system_settings/organization/production_shift_management` + +| 序号 | 测试项 | 操作步骤 | 预期结果 | 结果 | +|---|---|---|---|---| +| 1 | 页面入口 | 从菜单进入“班次管理” | 页面正常打开,展示班次计划名称、编码、起止时间、状态、创建/更新时间 | ☐ | +| 2 | 条件查询 | 输入计划名称、编码或创建时间后查询 | 列表按条件刷新 | ☐ | +| 3 | 新增校验 | 点击新增,不填名称、编码或时间范围直接确认 | 显示必填校验 | ☐ | +| 4 | 新增班次计划 | 填写计划信息、选择班组、添加班次明细后确认 | 保存成功,列表出现新计划 | ☐ | +| 5 | 班组绑定唯一性 | 两条班次明细绑定同一个班组 | 第二次绑定被阻止并提示 | ☐ | +| 6 | 明细必填校验 | 添加班次明细但缺少名称、开始时间或结束时间 | 提示对应行缺失字段 | ☐ | +| 7 | 编辑班次计划 | 点击编辑,修改状态、休息日、明细后确认 | 保存成功,重新打开可回显新数据 | ☐ | +| 8 | 单条删除 | 点击删除并确认 | 计划删除成功 | ☐ | +| 9 | 批量删除 | 勾选多条计划后批量删除 | 所选计划删除成功 | ☐ | +| 10 | 导入模板 | 点击导入后下载模板 | 浏览器下载班次计划导入模板 | ☐ | +| 11 | 导入数据 | 选择合法 xls/xlsx 文件并确认导入 | 预览展示后提交成功,列表刷新 | ☐ | +| 12 | 导出任务 | 点击导出并确认 | 提示下载任务创建成功 | ☐ | +| 13 | 权限按钮 | 使用缺少权限账号进入页面 | 对应新增/编辑/删除/导入/导出按钮隐藏或不可操作 | ☐ | diff --git a/docs/迁移任务列表.md b/docs/迁移任务列表.md index 587c9afa..201979af 100644 --- a/docs/迁移任务列表.md +++ b/docs/迁移任务列表.md @@ -3,8 +3,8 @@ > 根据 `后台Webman界面截图对照表.md` 生成。状态以当前 V2 项目中已落地的页面目录为准。 - 总功能数:79 -- 已迁移:76 -- 未迁移:3 +- 已迁移:77 +- 未迁移:2 | 状态 | 一级模块 | 二级模块 | 三级模块 | 功能说明 | V2 目标路径 | |:---:|---|---|---|---|---| @@ -27,7 +27,7 @@ | ✅ | 生产配置 (Production Master Data) | 物料模型 (Material Model) | 计量单位 (Unit of Measure) | 计量单位配置与管理 | `src/views/production-master-data/material-model/material-unit/` | | ✅ | 生产配置 (Production Master Data) | SPC采集模型 (SPC Configuration) | SPC采集配置 (Data Collection Configuration) | 配置SPC采集参数 | `src/views/production-master-data/spc-configuration/data-collection-configuration/` | | ✅ | 生产配置 (Production Master Data) | 班组模型 (Team Model) | 班组管理 (Team Management) | 管理生产班组 | `src/views/production-master-data/team-model/team-management/` | -| ⬜ | 生产配置 (Production Master Data) | 班组模型 (Team Model) | 班次管理 (Shift Management) | 管理生产班次 | 待确认 | +| ✅ | 生产配置 (Production Master Data) | 班组模型 (Team Model) | 班次管理 (Shift Management) | 管理生产班次 | `src/views/production-master-data/team-model/shift-management/` | | ⬜ | 生产配置 (Production Master Data) | 班组模型 (Team Model) | 排班日历 (Scheduling Calendar) | 查看排班日历 | 待确认 | | ✅ | 设备模型 (Equipment Management) | 设备类别 (Equipment Category) | 设备类别 (Equipment Category) | 管理设备类别 | `src/views/equipment-management/equipment-model/equipment-category/` | | ✅ | 设备模型 (Equipment Management) | 设备信息 (Equipment Management) | 设备信息 (Equipment Registry) | 管理设备信息 | `src/views/equipment-management/equipment-model/equipment-registry/` | diff --git a/src/api/production-master-data/shift-management.js b/src/api/production-master-data/shift-management.js new file mode 100644 index 00000000..4c4a12a7 --- /dev/null +++ b/src/api/production-master-data/shift-management.js @@ -0,0 +1,17 @@ +import { request } from '@/api/_service' + +const BASE = 'system_settings/organization/production_shift_management/' + +function params (method, data = {}) { + return { method: `system_settings_organization_production_shift_management_${method}`, platform: 'background', ...data } +} + +export function getShiftAll (data) { return request({ url: BASE + 'all', method: 'get', params: params('all', data) }) } +export function getShiftList (data) { return request({ url: BASE + 'list', method: 'get', params: params('list', data) }) } +export function createShift (data) { return request({ url: BASE + 'create', method: 'post', data: params('create', data) }) } +export function editShift (data) { return request({ url: BASE + 'edit', method: 'put', data: params('edit', data) }) } +export function deleteShift (data) { return request({ url: BASE + 'delete', method: 'delete', data: params('delete', data) }) } +export function getShiftImportTemplate (data) { return request({ url: BASE + 'get_import_template', method: 'post', responseType: 'blob', data: params('get_import_template', data) }) } +export function importShiftData (data) { return request({ url: BASE + 'data_import', method: 'post', data: params('data_import', data) }) } +export function exportShiftTask (data) { return request({ url: BASE + 'data_export_task', method: 'post', data: params('data_export_task', data) }) } +export function getShiftCalendarByDateRange (data) { return request({ url: BASE + 'get_shift_by_date_range', method: 'get', params: params('get_shift_by_date_range', data) }) } diff --git a/src/locales/en.json b/src/locales/en.json index a0b838cb..3a11991b 100644 --- a/src/locales/en.json +++ b/src/locales/en.json @@ -549,6 +549,87 @@ "please_import_department_data": "Please import team data first", "team_data_import_template": "Team Import Template", "upload_format_error": "Please upload xls or xlsx file" + }, + "shift_management": { + "search": "Search", + "reset": "Reset", + "add": "Add", + "edit": "Edit", + "delete": "Delete", + "batch_delete": "Batch Delete", + "import": "Import", + "export": "Export", + "confirm": "Confirm", + "cancel": "Cancel", + "prompt": "Notice", + "operation": "Operation", + "shift_plan_name": "Shift Plan Name", + "shift_plan_code": "Shift Plan Code", + "enter_shift_plan_name": "Please enter shift plan name", + "enter_shift_plan_code": "Please enter shift plan code", + "last_create_time": "Create Time", + "serial_number": "No.", + "start_time": "Start Time", + "end_time": "End Time", + "start_date": "Start Date", + "end_date": "End Date", + "status": "Status", + "enabled": "Enabled", + "disabled": "Disabled", + "creator": "Creator", + "create_time": "Created At", + "update_time": "Updated At", + "add_shift_plan": "Add Shift Plan", + "edit_shift_plan": "Edit Shift Plan", + "shift_name": "Shift Name", + "shift_code": "Shift Code", + "enter_shift_name": "Please enter shift name", + "enter_shift_code": "Please enter shift code", + "shift_time_range": "Shift Time Range", + "please_select_shift_time_range": "Please select shift time range", + "rotation_mode": "Rotation Mode", + "enter_content": "Please enter content", + "day": "Day", + "week": "Week", + "month": "Month", + "rest_day_setting": "Rest Days", + "monday": "Mon", + "tuesday": "Tue", + "wednesday": "Wed", + "thursday": "Thu", + "friday": "Fri", + "saturday": "Sat", + "sunday": "Sun", + "production_team": "Production Team", + "please_select": "Please select", + "remark": "Remark", + "enter_remark": "Please enter remark", + "add_shift": "Add Shift", + "shift_start_time": "Shift Start Time", + "shift_end_time": "Shift End Time", + "select_shift_start_time": "Please select shift start time", + "select_shift_end_time": "Please select shift end time", + "production_team_binding": "Team Binding", + "production_team_can_only_bind_one_shift": "One team can only bind one shift", + "please_enter_shift_plan_name": "Please enter shift plan name", + "please_enter_shift_plan_code": "Please enter shift plan code", + "please_enter_shift_name_row": "Please enter shift name, row: ", + "please_select_shift_start_time_row": "Please select shift start time, row: ", + "please_select_shift_end_time_row": "Please select shift end time, row: ", + "operation_successful": "Operation successful", + "delete_department_confirm_message": "Are you sure to delete this shift plan?", + "batch_delete_confirm_message": "Are you sure to delete selected shift plans?", + "please_select_table_data": "Please select table data first", + "export_confirm_message": "Export current query result?", + "download_task_created": "Download task created", + "shift_plan_data_import": "Import Shift Plan Data", + "upload_file_alert_title": "Import using the template format", + "upload_file_alert_description": "Download the template before importing", + "select_file": "Select File", + "download_template": "Download Template", + "please_import_department_data": "Please import shift plan data first", + "shift_plan_data_import_template": "Shift Plan Import Template", + "upload_format_error": "Please upload xls or xlsx file" } }, "spc_configuration": { diff --git a/src/locales/zh-chs.json b/src/locales/zh-chs.json index d2805108..ad8f548a 100644 --- a/src/locales/zh-chs.json +++ b/src/locales/zh-chs.json @@ -549,6 +549,87 @@ "please_import_department_data": "请先导入班组数据", "team_data_import_template": "班组数据导入模板", "upload_format_error": "请上传 xls 或 xlsx 文件" + }, + "shift_management": { + "search": "查询", + "reset": "重置", + "add": "新增", + "edit": "编辑", + "delete": "删除", + "batch_delete": "批量删除", + "import": "导入", + "export": "导出", + "confirm": "确定", + "cancel": "取消", + "prompt": "提示", + "operation": "操作", + "shift_plan_name": "班次计划名称", + "shift_plan_code": "班次计划编码", + "enter_shift_plan_name": "请输入班次计划名称", + "enter_shift_plan_code": "请输入班次计划编码", + "last_create_time": "创建时间", + "serial_number": "序号", + "start_time": "开始时间", + "end_time": "结束时间", + "start_date": "开始日期", + "end_date": "结束日期", + "status": "状态", + "enabled": "启用", + "disabled": "禁用", + "creator": "创建人", + "create_time": "创建时间", + "update_time": "更新时间", + "add_shift_plan": "新增班次计划", + "edit_shift_plan": "编辑班次计划", + "shift_name": "班次名称", + "shift_code": "班次编码", + "enter_shift_name": "请输入班次名称", + "enter_shift_code": "请输入班次编码", + "shift_time_range": "班次计划时间范围", + "please_select_shift_time_range": "请选择班次时间范围", + "rotation_mode": "轮转模式", + "enter_content": "请输入内容", + "day": "天", + "week": "周", + "month": "月", + "rest_day_setting": "休息日设置", + "monday": "周一", + "tuesday": "周二", + "wednesday": "周三", + "thursday": "周四", + "friday": "周五", + "saturday": "周六", + "sunday": "周日", + "production_team": "生产班组", + "please_select": "请选择", + "remark": "备注", + "enter_remark": "请输入备注", + "add_shift": "添加班次", + "shift_start_time": "班次开始时间", + "shift_end_time": "班次结束时间", + "select_shift_start_time": "请选择班次开始时间", + "select_shift_end_time": "请选择班次结束时间", + "production_team_binding": "生产班组绑定", + "production_team_can_only_bind_one_shift": "一个生产班组只能绑定一个班次", + "please_enter_shift_plan_name": "请输入班次计划名称", + "please_enter_shift_plan_code": "请输入班次计划编码", + "please_enter_shift_name_row": "请输入班次名称,行号:", + "please_select_shift_start_time_row": "请选择班次开始时间,行号:", + "please_select_shift_end_time_row": "请选择班次结束时间,行号:", + "operation_successful": "操作成功", + "delete_department_confirm_message": "确定要删除该班次计划吗?", + "batch_delete_confirm_message": "确定要删除所选班次计划吗?", + "please_select_table_data": "请先选择表格数据", + "export_confirm_message": "确定要导出当前查询结果吗?", + "download_task_created": "下载任务创建成功", + "shift_plan_data_import": "班次计划数据导入", + "upload_file_alert_title": "请按模板格式导入文件", + "upload_file_alert_description": "导入前请先下载模板并按模板字段填写", + "select_file": "选择文件", + "download_template": "下载模板", + "please_import_department_data": "请先导入班次计划数据", + "shift_plan_data_import_template": "班次计划数据导入模板", + "upload_format_error": "请上传 xls 或 xlsx 文件" } }, "spc_configuration": { diff --git a/src/router/modules/system-administration.js b/src/router/modules/system-administration.js index a087f460..bd2442ed 100644 --- a/src/router/modules/system-administration.js +++ b/src/router/modules/system-administration.js @@ -62,5 +62,11 @@ export default { meta: { ...meta, cache: true, title: '班组管理' }, component: _import('production-master-data/team-model/team-management') } + { + path: 'organization/production_shift_management', + name: `${pre}organization-production_shift_management`, + meta: { ...meta, cache: true, title: '班次管理' }, + component: _import('production-master-data/team-model/shift-management') + } ])('system_settings-') } diff --git a/src/views/production-master-data/team-model/shift-management/index.vue b/src/views/production-master-data/team-model/shift-management/index.vue new file mode 100644 index 00000000..cac53884 --- /dev/null +++ b/src/views/production-master-data/team-model/shift-management/index.vue @@ -0,0 +1,153 @@ + + + + +