diff --git a/src/api/base/factory.js b/src/api/base/factory.js
index d9ed54d..6097eb0 100644
--- a/src/api/base/factory.js
+++ b/src/api/base/factory.js
@@ -11,8 +11,13 @@ export function listFactory(query) {
// 查询工厂下拉框列表
export function findFactoryList(query) {
+ return listAllFactory(query)
+}
+
+// 查询工厂全量列表(不分页)
+export function listAllFactory(query) {
return request({
- url: '/base/factory/findFactoryList',
+ url: '/base/factory/all',
method: 'get',
params: query
})
diff --git a/src/api/base/materialInfo.js b/src/api/base/materialInfo.js
index 52e4da3..34a759d 100644
--- a/src/api/base/materialInfo.js
+++ b/src/api/base/materialInfo.js
@@ -9,6 +9,15 @@ export function listMaterialInfo(query) {
})
}
+// 查询全部物料信息列表
+export function listAllMaterialInfo(query) {
+ return request({
+ url: '/base/materialInfo/all',
+ method: 'get',
+ params: query
+ })
+}
+
// 查询物料信息详细
export function getMaterialInfo(objId) {
return request({
diff --git a/src/api/base/orderInfo.js b/src/api/base/orderInfo.js
index ca250d1..aefe528 100644
--- a/src/api/base/orderInfo.js
+++ b/src/api/base/orderInfo.js
@@ -44,7 +44,6 @@ export function releaseOrderPlan(data) {
})
}
-
// 删除工单信息
export function delOrderInfo(objId) {
return request({
@@ -139,3 +138,21 @@ export function batchCompleteProduction(data) {
data: data
})
}
+
+// PDA按物料关键字查询订单
+export function listPdaOrdersByMaterial(keyword) {
+ return request({
+ url: '/dms/mobile/order/listByMaterial',
+ method: 'get',
+ params: { keyword }
+ })
+}
+
+// PDA维护订单状态与数量
+export function updatePdaOrderStatusAndQty(data) {
+ return request({
+ url: '/dms/mobile/order/updateStatusAndQty',
+ method: 'post',
+ data: data
+ })
+}
diff --git a/src/api/production/baseBomInfo.js b/src/api/production/baseBomInfo.js
index b192410..a653451 100644
--- a/src/api/production/baseBomInfo.js
+++ b/src/api/production/baseBomInfo.js
@@ -10,14 +10,15 @@ export function listBaseBomInfo(query) {
}
// 自动同步生产BOM
-export function addAutomaticSynchronizationBOM(query) {
- return request({
- url: '/production/baseBomInfo/addAutomaticSynchronizationBOM',
- method: 'get',
- params: query,
- timeout: 60000
- })
-}
+// 当前业务已经改为全部手动维护树形BOM,这里注释掉历史同步接口定义,避免前端继续调用。
+// export function addAutomaticSynchronizationBOM(query) {
+// return request({
+// url: '/production/baseBomInfo/addAutomaticSynchronizationBOM',
+// method: 'get',
+// params: query,
+// timeout: 60000
+// })
+// }
// 查询生产BOM列表
export function listTreeBaseBomInfo(query) {
return request({
diff --git a/src/views/base/materialInfo/index.vue b/src/views/base/materialInfo/index.vue
index 6f0d774..7bcf6d6 100644
--- a/src/views/base/materialInfo/index.vue
+++ b/src/views/base/materialInfo/index.vue
@@ -128,6 +128,16 @@
v-hasPermi="['base:materialInfo:export']"
>导出
+
+ 导入
+
@@ -305,6 +315,47 @@
取 消
+
+
+
+
+ 将文件拖到此处,或点击上传
+
+
+ 更新已存在物料
+
+
+
+
+
+
+
仅允许导入xls、xlsx格式文件。
+
下载模板
+
+
+
+
@@ -312,6 +363,7 @@
import { listMaterialInfo, getMaterialInfo, delMaterialInfo, addMaterialInfo, updateMaterialInfo } from "@/api/base/materialInfo";
import { findFactoryList } from "@/api/base/factory";
import { findProductLineList } from "@/api/base/productLine";
+import { getToken } from "@/utils/auth";
export default {
name: "MaterialInfo",
@@ -389,12 +441,26 @@ export default {
factoryList: [],
// 产线选项
productLineList: [],
+ // 物料导入参数
+ upload: {
+ open: false,
+ title: "",
+ isUploading: false,
+ updateSupport: false,
+ plantCode: null,
+ headers: { Authorization: "Bearer " + getToken() },
+ url: process.env.VUE_APP_BASE_API + "/base/materialInfo/importData"
+ }
};
},
created() {
this.getList();
findFactoryList().then(response => {
this.factoryList = response.data;
+ if (!this.upload.plantCode && this.factoryList.length > 0) {
+ const defaultFactory = this.factoryList.find(item => item.factoryCode === '2010') || this.factoryList[0];
+ this.upload.plantCode = defaultFactory.factoryCode;
+ }
});
findProductLineList().then(response => {
this.productLineList = response.data;
@@ -507,6 +573,46 @@ export default {
this.download('base/materialInfo/export', {
...this.queryParams
}, `materialInfo_${new Date().getTime()}.xlsx`)
+ },
+ /** 导入按钮操作 */
+ handleImport() {
+ this.upload.title = "物料导入";
+ this.upload.open = true;
+ },
+ /** 下载模板 */
+ importTemplate() {
+ this.download('base/materialInfo/importTemplate', {}, `materialInfo_template_${new Date().getTime()}.xlsx`)
+ },
+ // 文件上传中处理
+ handleFileUploadProgress() {
+ this.upload.isUploading = true;
+ },
+ // 文件上传成功处理
+ handleFileSuccess(response) {
+ this.upload.open = false;
+ this.upload.isUploading = false;
+ this.$refs.upload.clearFiles();
+ if (response.code === 200) {
+ this.$alert("
" + response.msg + "
", "导入结果", { dangerouslyUseHTMLString: true });
+ this.getList();
+ } else {
+ this.$modal.msgError(response.msg || "导入失败");
+ }
+ },
+ // 文件上传失败处理
+ handleFileError() {
+ this.upload.open = false;
+ this.upload.isUploading = false;
+ this.$refs.upload.clearFiles();
+ this.$modal.msgError("文件上传失败,请重试");
+ },
+ // 提交上传文件
+ submitFileForm() {
+ if (!this.upload.plantCode) {
+ this.$modal.msgWarning("请选择所属工厂");
+ return;
+ }
+ this.$refs.upload.submit();
}
}
};
diff --git a/src/views/base/orderBomInfo/childIndex.vue b/src/views/base/orderBomInfo/childIndex.vue
index db88fb1..81a4708 100644
--- a/src/views/base/orderBomInfo/childIndex.vue
+++ b/src/views/base/orderBomInfo/childIndex.vue
@@ -131,13 +131,26 @@
-
+
+
+
-
+
-
+
-
+
@@ -187,6 +200,7 @@ import {
updateOrderBomInfo,
findOrderBomList
} from '@/api/base/orderBomInfo'
+import { listAllMaterialInfo } from '@/api/base/materialInfo'
import Treeselect from "@riophae/vue-treeselect";
import "@riophae/vue-treeselect/dist/vue-treeselect.css";
@@ -206,6 +220,8 @@ export default {
orderBomInfoList: [],
// 订单BOM树选项
orderBomInfoOptions: [],
+ // 物料下拉选项
+ materialOptions: [],
// 弹出层标题
title: "",
// 是否显示弹出层
@@ -242,7 +258,7 @@ export default {
},
created() {
this.queryParams.ancestors = this.$route.params && this.$route.params.materialCode;
- console.log( this.queryParams.ancestors)
+ this.loadMaterialOptions();
this.getList();
},
methods: {
@@ -274,6 +290,30 @@ export default {
this.orderBomInfoOptions.push(data);
});
},
+ /** 加载全部物料下拉数据 */
+ loadMaterialOptions() {
+ listAllMaterialInfo({ isFlag: 0 }).then(response => {
+ this.materialOptions = response.data || [];
+ });
+ },
+ /** 选择物料后自动回填展示字段 */
+ handleMaterialChange(materialCode) {
+ const selectedMaterial = this.materialOptions.find(item => item.materialCode === materialCode);
+ if (!selectedMaterial) {
+ this.form.materialName = null;
+ this.form.materialType = null;
+ this.form.factoryCode = null;
+ return;
+ }
+ // 物料名称和分类统一以物料主数据为准,避免手工录入后树列表左连接查不到展示字段。
+ this.form.materialName = selectedMaterial.materialName;
+ this.form.materialType = selectedMaterial.materialSubclass;
+ this.form.factoryCode = selectedMaterial.plantCode;
+ if (!this.form.bomCode) {
+ // 手工维护场景下默认用物料编码作为BOM编号,避免新增时出现空BOM编号。
+ this.form.bomCode = selectedMaterial.materialCode;
+ }
+ },
// 取消按钮
cancel() {
this.open = false;
@@ -345,6 +385,7 @@ export default {
}
getOrderBomInfo(row.objId).then(response => {
this.form = response.data;
+ this.handleMaterialChange(this.form.materialCode);
this.open = true;
this.title = "修改订单BOM";
});
diff --git a/src/views/base/orderInfo/execution.vue b/src/views/base/orderInfo/execution.vue
index f527fc7..73595a4 100644
--- a/src/views/base/orderInfo/execution.vue
+++ b/src/views/base/orderInfo/execution.vue
@@ -1,7 +1,7 @@
-
+
@@ -19,39 +19,96 @@
+
+
+ PDA订单维护
+
+
+
+
+
+
+
+ 查询订单
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 更新订单
+
+
+
+
批量开始生产
批量更新数量
批量完工提报
@@ -263,15 +320,18 @@
diff --git a/src/views/base/orderInfo/index.vue b/src/views/base/orderInfo/index.vue
index fa1204b..0bb6de5 100644
--- a/src/views/base/orderInfo/index.vue
+++ b/src/views/base/orderInfo/index.vue
@@ -249,7 +249,7 @@
/>
-
+
@@ -271,14 +271,16 @@
-
+
+ 选择物料
+
-
+
+
+
+
-
-
-
@@ -370,6 +372,12 @@
+
+
@@ -384,9 +392,13 @@ import {
} from '@/api/base/orderInfo'
import { findProductLineList } from '@/api/base/productLine'
import { addSAPCalendar } from '@/api/production/calendarInfo'
+import MaterialSelector from '@/components/MaterialSelector'
export default {
name: 'OrderInfo',
+ components: {
+ MaterialSelector
+ },
dicts: ['order_status', 'order_type', 'is_flag', 'is_release'],
data() {
return {
@@ -441,7 +453,20 @@ export default {
// 表单参数
form: {},
// 表单校验
- rules: {},
+ rules: {
+ orderCode: [
+ { required: true, message: 'SAP计划编号不能为空', trigger: 'blur' }
+ ],
+ workCenterCode: [
+ { required: true, message: '请选择工作中心', trigger: 'change' }
+ ],
+ materialCode: [
+ { required: true, message: '请选择物料', trigger: 'change' }
+ ],
+ orderAmount: [
+ { required: true, message: '请输入订单计划数量', trigger: 'blur' }
+ ]
+ },
columns: [
{ key: 0, label: `主键标识`, visible: false },
{ key: 1, label: `SAP计划编号`, visible: true },
@@ -467,7 +492,10 @@ export default {
{ key: 21, label: `工作中心编号`, visible: true }
],
// 产线选项
- productLineList: []
+ productLineList: [],
+ materialSelector: {
+ open: false
+ }
}
},
created() {
@@ -569,6 +597,17 @@ export default {
this.title = '修改工单信息'
})
},
+ openMaterialSelector() {
+ this.materialSelector.open = true
+ },
+ handleMaterialSelected(material) {
+ this.form.materialCode = material.materialCode
+ this.form.materialName = material.materialName
+ this.form.matkl = material.materialMatkl
+ if (this.$refs.form) {
+ this.$refs.form.clearValidate(['materialCode'])
+ }
+ },
/** 修改按钮操作 */
ReplaceProductionLine(row) {
this.reset()
diff --git a/src/views/baseDeviceParamVal/trace/index.vue b/src/views/baseDeviceParamVal/trace/index.vue
index efdb1f6..52fc95b 100644
--- a/src/views/baseDeviceParamVal/trace/index.vue
+++ b/src/views/baseDeviceParamVal/trace/index.vue
@@ -1,318 +1,89 @@
-
-
+
-
+
返回监控
-
-
-
-
-
- {{ item.deviceName || item.deviceCode }}
- {{ item.deviceCode }}
-
-
-
-
-
-
+
+
+
+
+
-
-
-
-
-
-
- 查询
- 重置
- 导出
- SPC分析
-
-
-
-
-
-
-
-
-
-
- {{ scope.row.paramValue }}
-
-
-
-
- {{ parseTime(scope.row.collectTime) }}
-
-
-
-
- {{ parseTime(scope.row.recordTime) }}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 统计指标
-
-
均值 (X̄){{ spcData.mean }}
-
标准差 (σ){{ spcData.stdDev }}
-
-
-
-
-
- 控制限
-
-
UCL (上控制限){{ spcData.ucl }}
-
CL (中心线){{ spcData.cl }}
-
LCL (下控制限){{ spcData.lcl }}
-
-
-
-
-
- 过程能力
-
-
CPK{{ spcData.cpk }}
-
USL (上规格限){{ spcData.usl }}
-
LSL (下规格限){{ spcData.lsl }}
-
-
-
-
-
-
- CPK ≥ 1.33: 优秀
- 1.0 ≤ CPK < 1.33: 合格
- CPK < 1.0: 需改进
-
-
-
-
- 暂无SPC数据,请确保查询条件正确
-
-
-
- 关闭
-
-
+
+
+
+
+
+
+
+
+
diff --git a/src/views/dms/DmsBaseMaintStation/index.vue b/src/views/dms/DmsBaseMaintStation/index.vue
index 8ed6e06..a6446b0 100644
--- a/src/views/dms/DmsBaseMaintStation/index.vue
+++ b/src/views/dms/DmsBaseMaintStation/index.vue
@@ -331,6 +331,7 @@ export default {
createTime: null,
updateBy: null,
updateTime: null,
+ productIds: [],
baseStationProjectList: [],
};
this.resetForm("form");
@@ -385,15 +386,16 @@ export default {
submitForm() {
this.$refs["form"].validate(valid => {
if (valid) {
+ const checkedProjectIds = this.getMenuAllCheckedKeys();
+ // 显式传空数组给后端,保证“取消全部勾选”会清空关联关系,而不是落成 null。
+ this.form.productIds = Array.isArray(checkedProjectIds) ? checkedProjectIds : [];
if (this.form.maintStationId != null) {
- this.form.productIds = this.getMenuAllCheckedKeys();
updateStation(this.form).then(response => {
this.$modal.msgSuccess("修改成功");
this.open = false;
this.getList();
});
} else {
- this.form.productIds = this.getMenuAllCheckedKeys();
addStation(this.form).then(response => {
this.$modal.msgSuccess("新增成功");
this.open = false;
diff --git a/src/views/dms/dmsBillsMaintInstance/index.vue b/src/views/dms/dmsBillsMaintInstance/index.vue
index 2890470..f100cd0 100644
--- a/src/views/dms/dmsBillsMaintInstance/index.vue
+++ b/src/views/dms/dmsBillsMaintInstance/index.vue
@@ -129,7 +129,6 @@
-
@@ -289,7 +288,6 @@ export default {
pageNum: 1,
pageSize: 10,
planMaintId: null,
- wfProcessId: null,
billsMaintCode: null,
planBeginTime: null,
realBeginTime: null,
@@ -303,9 +301,6 @@ export default {
form: {},
// 表单校验
rules: {
- wfProcessId: [
- { required: true, message: "工单流程ID,关联wf_process的wf_process_id不能为空", trigger: "blur" }
- ],
billsMaintCode: [
{ required: true, message: "保养单号不能为空", trigger: "blur" }
],
@@ -359,7 +354,6 @@ export default {
this.form = {
maintInstanceId: null,
planMaintId: null,
- wfProcessId: null,
billsMaintCode: null,
planBeginTime: null,
realBeginTime: null,
@@ -419,8 +413,6 @@ export default {
this.getList();
});
} else {
-
- this.form.wfProcessId = 103;
addDmsBillsMaintInstance(this.form).then(response => {
this.$modal.msgSuccess("新增成功");
this.open = false;
diff --git a/src/views/dms/dmsMaintInstanceActivity/index.vue b/src/views/dms/dmsMaintInstanceActivity/index.vue
index 4d27cc8..e9f1b43 100644
--- a/src/views/dms/dmsMaintInstanceActivity/index.vue
+++ b/src/views/dms/dmsMaintInstanceActivity/index.vue
@@ -8,11 +8,6 @@
-
-
-
-
-
@@ -257,7 +252,6 @@ export default {
pageNum: 1,
pageSize: 10,
maintInstanceId: null,
- processActivityId: null,
maintLevel: null,
maintGroup: null,
maintSupervisor: null,
@@ -381,7 +375,6 @@ export default {
this.form = {
instanceActivityId: null,
maintInstanceId: null,
- processActivityId: null,
maintLevel: null,
maintGroup: null,
maintSupervisor: null,
diff --git a/src/views/dms/dmsRecordAlarmInfo/index.vue b/src/views/dms/dmsRecordAlarmInfo/index.vue
index 3e8419d..a657e26 100644
--- a/src/views/dms/dmsRecordAlarmInfo/index.vue
+++ b/src/views/dms/dmsRecordAlarmInfo/index.vue
@@ -216,7 +216,7 @@
type="text"
icon="el-icon-success"
@click="handleUpdate(scope.row)"
- >处理
+ >处理
diff --git a/src/views/production/baseBomInfo/index.vue b/src/views/production/baseBomInfo/index.vue
index 22af0ff..2f8f1d5 100644
--- a/src/views/production/baseBomInfo/index.vue
+++ b/src/views/production/baseBomInfo/index.vue
@@ -76,15 +76,15 @@
v-hasPermi="['production:baseBomInfo:export']"
>导出
-
- 自动同步生产BOM
-
+
+
+
+
+
+
+
+
+
@@ -231,8 +231,8 @@ import {
getBaseBomInfo,
delBaseBomInfo,
addBaseBomInfo,
- updateBaseBomInfo,
- addAutomaticSynchronizationBOM
+ updateBaseBomInfo
+ // addAutomaticSynchronizationBOM
} from '@/api/production/baseBomInfo'
import {findFactoryList} from "@//api/base/factory";
import addBom from '@//views/base/orderBomInfo/addBom.vue';
@@ -425,12 +425,13 @@ export default {
}
});
},
- AutomaticSynchronizationBOM(){
- addAutomaticSynchronizationBOM(this.form).then(response => {
- this.$modal.msgSuccess('同步成功')
- this.getList()
- })
- },
+// AutomaticSynchronizationBOM(){
+// // 当前业务已经改为全部手动维护树形BOM,这里注释掉历史同步入口,避免误触发同步写库。
+// addAutomaticSynchronizationBOM(this.form).then(response => {
+// this.$modal.msgSuccess('同步成功')
+// this.getList()
+// })
+// },
/** 删除按钮操作 */
handleDelete(row) {
const objIds = row.objId || this.ids;