同步项目文件

This commit is contained in:
Developer
2026-06-10 11:19:55 +08:00
parent 74c06cb592
commit d0c6ee299c
4 changed files with 0 additions and 378 deletions

BIN
dist.7z

Binary file not shown.

BIN
dist.zip

Binary file not shown.

View File

@@ -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
```
<el-form-item label="手机号" prop="phone">
<!-- 原 <span class="required-star">*</span> 移除或条件显示 -->
</el-form-item>
```
### **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`
- 提交代码并备注今日工作计划完成

View File

@@ -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表的需求同时提供了优化建议以便后续维护和扩展。
=====================================================
结束
=====================================================