diff --git a/dist.7z b/dist.7z index e638a3ea..00dd57ac 100644 Binary files a/dist.7z and b/dist.7z differ diff --git a/dist.zip b/dist.zip index 9ac9f36b..8bf25961 100644 Binary files a/dist.zip and b/dist.zip differ diff --git a/今日计划.md b/今日计划.md deleted file mode 100644 index d8c19432..00000000 --- a/今日计划.md +++ /dev/null @@ -1,208 +0,0 @@ -## **一、基本信息** - -- **项目技术栈**:Vue2(前端) + SQL Server(数据库/存储过程) -- **开发日期**:2026-05-22 -- **开发人员**:\[填写姓名] -- **任务总数**:2 - -*** - -## **二、任务一:存储过程 – 采购单历史价格曲线图数据** - -### **2.1 需求描述** - -编写/修改一个存储过程,统计指定采购单(或指定物料)的历史采购价格,返回用于前端绘制曲线图的数据结构(时间 + 价格)。 - -### **2.2 技术目标** - -- 输入参数:`@MaterialID`(物料ID) 或 `@PurchaseOrderID`(采购单号) -- 输出数据集:`HistoryDate`(日期)、`UnitPrice`(单价) -- 按时间升序排列 - -### **2.3 存储过程实现(SQL Server)** - -sql - -``` -CREATE OR ALTER PROC usp_GetPurchasePriceHistory - @MaterialID INT -AS -BEGIN - SET NOCOUNT ON; - SELECT - CONVERT(DATE, po.OrderDate) AS HistoryDate, - pod.UnitPrice - FROM PurchaseOrderDetail pod - INNER JOIN PurchaseOrder po ON pod.PurchaseOrderID = po.PurchaseOrderID - WHERE pod.MaterialID = @MaterialID - AND pod.UnitPrice IS NOT NULL - AND po.OrderDate IS NOT NULL - GROUP BY CONVERT(DATE, po.OrderDate), pod.UnitPrice - ORDER BY HistoryDate ASC; -END -``` - -### **2.4 前端调用示例(Vue2 + axios)** - -javascript - -``` -// API 服务层 -getPriceHistory(materialId) { - return axios.post('/api/getPriceHistory', { materialId }); -} - -// 组件中使用 -async loadChartData() { - const res = await getPriceHistory(this.selectedMaterialId); - const chartData = { - dates: res.data.map(item => item.HistoryDate), - prices: res.data.map(item => item.UnitPrice) - }; - this.renderLineChart(chartData); -} -``` - -### **2.5 曲线图组件建议** - -- 使用 `echarts` 或 `chart.js` -- X轴:日期,Y轴:单价 - -*** - -## **三、任务二:员工组件 – 必填项改为选填项 + 存储过程修改** - -### **3.1 需求描述** - -员工信息组件中原有字段(如:手机号、备用邮箱等)为必填,现改为**选填**,并修改对应的**存储过程**以兼容空值写入/更新。 - -### **3.2 前端修改(Vue2)** - -#### **3.2.1 表单校验规则调整** - -javascript - -``` -// 原 rules -rules: { - phone: [{ required: true, message: '请填写手机号' }], - email: [{ required: true, message: '请填写邮箱' }] -} - -// 改为选填(删除 required 或设为 false) -rules: { - phone: [{ required: false, message: '请填写手机号' }], - email: [{ required: false, message: '请填写邮箱' }] -} -``` - -#### **3.2.2 必填标识(星号)移除** - -vue - -``` - - - -``` - -### **3.3 后端存储过程修改(SQL Server)** - -#### **3.3.1 原存储过程(假设示例)** - -sql - -``` -CREATE PROC usp_InsertEmployee - @Name NVARCHAR(50), - @Phone VARCHAR(20), - @Email VARCHAR(100) -AS -BEGIN - INSERT INTO Employee (Name, Phone, Email) - VALUES (@Name, @Phone, @Email); -END -``` - -#### **3.3.2 修改后(支持选填字段)** - -sql - -``` -ALTER PROC usp_InsertEmployee - @Name NVARCHAR(50), - @Phone VARCHAR(20) = NULL, -- 允许为空 - @Email VARCHAR(100) = NULL -- 允许为空 -AS -BEGIN - INSERT INTO Employee (Name, Phone, Email) - VALUES (@Name, @Phone, @Email); -END -``` - -> 注:`ALTER PROC` 需确认参数名、顺序与原存储过程一致。 - -### **3.4 数据库表字段允许 NULL** - -确保 `Phone`、`Email` 字段已设置为 `NULL`(若此前为 `NOT NULL` 需执行改表语句): - -sql - -``` -ALTER TABLE Employee ALTER COLUMN Phone VARCHAR(20) NULL; -ALTER TABLE Employee ALTER COLUMN Email VARCHAR(100) NULL; -``` - -*** - -## **四、测试要点** - -**任务** - -**测试项** - -**预期结果** - -曲线图 - -输入有效物料ID - -返回正确的时间-价格序列 - -曲线图 - -输入无历史价格的物料 - -返回空数据集,前端提示无数据 - -员工组件 - -手机号、邮箱不填写提交 - -可成功提交,数据库对应字段为 NULL - -员工组件 - -原有必填逻辑(如姓名) - -仍保持必填 - -*** - -## **五、部署与回滚注意事项** - -- **存储过程**:先备份原存储过程(`DROP` 前先 `CREATE` 备份脚本) -- **前端**:仅移除校验规则,不涉及路由或组件结构大改 -- **数据库字段**:`ALTER COLUMN NULL` 操作不可逆,建议先在测试库执行 - -*** - -## **六、完成确认(Checklist)** - -- 存储过程 `usp_GetPurchasePriceHistory` 已创建/修改并通过测试 -- 前端曲线图可正常展示历史价格 -- 员工组件校验规则已改为选填 -- 员工组件对应存储过程已支持 `NULL` -- 数据库字段已允许 `NULL` -- 提交代码并备注今日工作计划完成 - diff --git a/罗麦纯2026-05-22工作报告.txt b/罗麦纯2026-05-22工作报告.txt deleted file mode 100644 index 54c1435d..00000000 --- a/罗麦纯2026-05-22工作报告.txt +++ /dev/null @@ -1,170 +0,0 @@ -===================================================== - 任务完成总结报告 -===================================================== -生成日期: 2026-05-22 - ------------------------------------------------------ -一、采购合同历史单价查询功能 ------------------------------------------------------ - -1. 精工车间 - 采购合同审核 -文件: src/views/SeikoWorkshop/ProcurementContractAudit/index.vue - -修改内容: -- 在操作列新增「历史单价」按钮(el-icon-data-line 图标) -- 新增历史单价弹窗,包含两部分: - ① 明细表格:序号、采购合同号、采购件、采购日期、单价、供应商 - ② 统计表格:当前采购件、图号型号、物料编码、历史采购次数、平均单价、最低单价、最高单价、最近一次采购单价 -- 调用存储过程: 采购管理_采购合同历史单价_查询 -- 传入参数: 采购合同流水号 - -2. 采购管理 - 订单查询 -文件: src/views/PurchasingManagement/OrderInquiry/index.vue - -修改内容: -- 在操作列新增「历史单价」按钮 -- 新增历史单价弹窗(表格形式,结构同上) - -3. 采购管理 - 采购件查询 -文件: src/views/PurchasingManagement/PurchasedPartsSearch/index.vue - -修改内容: -- 在表格末尾新增固定右侧的操作列,包含「历史单价」按钮 -- 新增历史单价弹窗(表格形式,结构同上) - ------------------------------------------------------ -二、人员管理表单优化 ------------------------------------------------------ - -文件: src/views/BasicData/PersonnelManagement/index.vue - -修改内容: -- 将以下字段的必填验证从 required: true 改为 required: false: - - 出生日期 (Birthday) - - 身份证号 (IDcard) - - 学历 (Education) - - 家庭住址 (Address) - - 民族 (Nation) - ------------------------------------------------------ -三、Git 提交记录 ------------------------------------------------------ - -Commit 1: 历史单价功能及人员管理优化 -- ProcurementContractAudit: 新增历史单价按钮及弹窗 -- OrderInquiry: 新增历史单价按钮及弹窗 -- PurchasedPartsSearch: 新增历史单价按钮及弹窗 -- PersonnelManagement: 取消5个字段的必填验证 - -Commit 2-3: 同步本地仓库变更 -- 清理旧构建包 -- 更新配置文件 - ------------------------------------------------------ -四、技术实现要点 ------------------------------------------------------ - -1. 弹窗设计: - - 使用 Element UI 的 el-dialog 组件 - - 明细表格支持最大高度滚动 - - 单价字段保留两位小数显示 - -2. 数据统计: - - 平均单价: 所有历史单价的平均值 - - 最低/最高单价: 使用 Math.min/Math.max - - 最近单价: 取最后一条记录的单价 - -3. 代码复用: - - 三个采购相关页面使用相同的弹窗结构和方法逻辑 - - 保持代码一致性和可维护性 - ------------------------------------------------------ - -数据库问答整理汇报总结 -================ - -一、用户需求概述 ---------------- -1. 根据提供的SQL查询语句(查询采购管理_采购合同明细_全部_查询视图),创建一个存储过程。 -2. 该存储过程能够根据传入的“采购合同流水号”,查看同一物料的历史单价。 -3. 询问在另一个存储过程(装配管理_三表_查询)中,哪个表是“C表”。 - -二、解决方案与结果 ------------------ -【问题1】创建查看同一物料历史单价的存储过程 - -解决方案: -创建了存储过程 dbo.usp_GetMaterialPriceHistoryByContract -- 输入参数:@采购合同流水号 VARCHAR(100) -- 功能:根据传入的采购合同流水号,自动识别当前物料(通过物料编码、图号或型号、物料流水号), - 查询该物料的所有历史采购记录,并按采购日期倒序排列。 -- 输出: - ① 历史采购明细(包含单价、供应商、采购日期等) - ② 历史价格统计(平均单价、最高/最低单价、最近一次采购单价) - -附加增强版: -还提供了带供应商筛选功能的存储过程版本,支持可选参数 @供应商筛选。 - -【问题2】识别“装配管理_三表_查询”存储过程中的C表 - -分析结果: -C表是指以下子查询部分: - LEFT JOIN ( - SELECT - 物料流水号, - SUM(实领数) AS 总数量 - FROM dbo.车间装配管理_装配执行_临时领料明细 - GROUP BY 物料流水号 - ) c ON a.物料流水号 = c.物料流水号 - -- 表别名:c -- 数据来源:车间装配管理_装配执行_临时领料明细 -- 作用:统计全表(不区分组件流水号)中每个物料流水号的实领数总和 -- 输出字段:全表明细数量总和 - -潜在问题说明: -C表仅统计“临时领料明细”一个来源,但主查询a表包含三个数据源(临时领料明细、基本件视图、标准件/外购件视图)。 -如果其他两个来源的数据在临时领料明细中没有对应记录,则C表的总数量可能不完整。 -建议如需全来源统计,应使用UNION ALL合并三个来源后再计算总和。 - -三、涉及的主要数据库对象 ------------------------ -1. 视图:采购管理_采购合同明细_全部_查询视图 -2. 表:车间装配管理_装配执行_临时领料明细 -3. 视图:仓储管理_累计库存查询_视图 -4. 视图:PDM_基本件_领料_视图 -5. 视图:PDM_标准件和外购件_领料_视图 -6. 视图:车间装配管理_领料单明细_视图 -7. 表:库存管理_物料主文件_基本 -8. 表:库存管理_外购件累计库存 - -四、关键技术点 -------------- -- 使用存储过程封装业务逻辑 -- 动态识别当前物料信息(物料编码、图号型号、物料流水号) -- 使用 ROW_NUMBER() 进行价格排序 -- 使用 LEFT JOIN 关联多个数据源 -- 使用 UNION ALL 合并多个查询结果 -- 使用子查询进行聚合统计 -- 统计历史价格(平均、最高、最低、最近) - -五、存储过程代码清单 -------------------- -1. usp_GetMaterialPriceHistoryByContract(基础版) -2. usp_GetMaterialPriceHistoryByContract_WithVendor(供应商筛选增强版) -3. 装配管理_三表_查询(分析对象,非新建) - -六、建议与改进 -------------- -- 建议在统计全表物料总数时,如果数据源不唯一,应合并所有来源后再汇总。 -- 建议在存储过程中添加错误处理机制(如TRY...CATCH)。 -- 建议对常用查询字段(如物料编码、采购合同流水号、组件流水号)建立索引以提高性能。 - -七、总结 -------- -本次问答涵盖了SQL Server存储过程的创建、参数传递、多表关联、子查询、聚合统计等常用技术。 -用户需求明确,解决方案能够满足查看历史单价和识别C表的需求,同时提供了优化建议以便后续维护和扩展。 - -===================================================== - 结束 -===================================================== \ No newline at end of file