From a22a1d64e8031800e76cbc1d81f391e5d8af3acd Mon Sep 17 00:00:00 2001
From: zhangdi <1104545947@qq.com>
Date: Tue, 24 Mar 2026 20:17:20 +0800
Subject: [PATCH] =?UTF-8?q?=E6=8E=92=E4=BA=A7=E7=AE=A1=E7=90=86=E9=A1=B5?=
=?UTF-8?q?=E9=9D=A2=E9=97=AE=E9=A2=98=E4=BF=AE=E6=94=B9?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
index.html | 2 +-
public/config.js | 3 +-
src/api/productionSchedulingPlan/basic.js | 2 +-
.../components/addQuantityDialog.vue | 2 +-
.../components/inPlantMaintenance.vue | 5 +-
.../components/processMainte/partDetails.vue | 3 +-
.../components/batchesDialog.vue | 12 +-
.../basic/components/addEquipment.vue | 707 ++++++++++++++++++
.../basic/components/addPersonnel.vue | 444 +++++++++++
.../basic/equipmentCapacity.vue | 239 +++---
.../basic/personnelCapacity.vue | 118 ++-
.../basic/principalProducer.vue | 1 -
12 files changed, 1389 insertions(+), 149 deletions(-)
create mode 100644 src/views/productionSchedulingPlan/basic/components/addEquipment.vue
create mode 100644 src/views/productionSchedulingPlan/basic/components/addPersonnel.vue
diff --git a/index.html b/index.html
index c2f9877..dc1538b 100644
--- a/index.html
+++ b/index.html
@@ -22,7 +22,7 @@
-
+
电镀智能化生产管理系统
diff --git a/public/config.js b/public/config.js
index 67782e4..1742def 100644
--- a/public/config.js
+++ b/public/config.js
@@ -1,6 +1,7 @@
window.LOAD_Remind = 86400000
window.TIMED_Trigger=86400000
window.YINGDU_Trigger=3000 //硬度检测 轮巡时间
+
window.PROCESS_FLOW_CARD_HEAT_METER="http://192.168.169.172:9000/jmreport/view/1154214123878776832"//工艺流程卡地址 热表公用
window.PROCESS_FLOW_CARD_HEAT_SINTER="http://192.168.169.172:9000/jmreport/view/1154632438942031872"//工艺流程卡地址 烧结
@@ -19,8 +20,6 @@ window.COMPANION = "http://192.168.169.172:9000/jmreport/view/118870568359470694
// 领料单打印
window.WARE_MATERIAL_PRINT = "http://192.168.169.172:9000/jmreport/view/1181486341205573632"
-// 领料单明细打印
-
// 库存汇总标签打印
window.WARE_MATERIAL_STOCK_TAG = "http://192.168.169.172:9000/jmreport/view/1181492297180168192"
diff --git a/src/api/productionSchedulingPlan/basic.js b/src/api/productionSchedulingPlan/basic.js
index bcbc77d..861b2e8 100644
--- a/src/api/productionSchedulingPlan/basic.js
+++ b/src/api/productionSchedulingPlan/basic.js
@@ -384,7 +384,7 @@ export const getDetailSintTempCurve = params => {
// 获取证书类型列表数据/personAbility/selectCertificateList
export const getSelectCertificateList = params => {
return request({
- url: '/personAbility/selectCertificateList',
+ url: '/blade-scheduling/personAbility/selectCertificateList',
method: 'get',
params: params,
});
diff --git a/src/views/processManagement/bathRefine/components/addQuantityDialog.vue b/src/views/processManagement/bathRefine/components/addQuantityDialog.vue
index e43c9ec..dd3e2fe 100644
--- a/src/views/processManagement/bathRefine/components/addQuantityDialog.vue
+++ b/src/views/processManagement/bathRefine/components/addQuantityDialog.vue
@@ -211,7 +211,7 @@ export default {
row => row.id == this.form.tableData[index].batchNo
);
console.log(select, 'select');
- this.form.tableData[index].batchNoName = select[0].name;
+ this.form.tableData[index].batchName = select[0].name;
},
// 切换作业中心
changeWorkCenter(index) {
diff --git a/src/views/processManagement/components/inPlantMaintenance.vue b/src/views/processManagement/components/inPlantMaintenance.vue
index f57a665..a458fb0 100644
--- a/src/views/processManagement/components/inPlantMaintenance.vue
+++ b/src/views/processManagement/components/inPlantMaintenance.vue
@@ -26,7 +26,8 @@
导入
- 修改
+ 删除
+ 修改
@@ -94,7 +95,7 @@ export default {
viewBtn: false,
addBtn: false,
editBtn: false,
- delBtn: true,
+ delBtn: false,
editBtnText: '修改',
viewBtnText: '详情',
labelWidth: 120,
diff --git a/src/views/processManagement/components/processMainte/partDetails.vue b/src/views/processManagement/components/processMainte/partDetails.vue
index 411d778..9389644 100644
--- a/src/views/processManagement/components/processMainte/partDetails.vue
+++ b/src/views/processManagement/components/processMainte/partDetails.vue
@@ -969,7 +969,8 @@ export default {
};
getPartManagementDetail(query).then(res => {
this.formData = res.data.data.dsPartEntity;
- this.dataTable = res.data.data.dsPartVOList;
+ res.data.data.dsPartVOList=null
+ this.dataTable = res.data.data.dsPartVOList==null?[]:res.data.data.dsPartVOList;
this.tabLoading = false;
if (this.dataTable.length > 0) {
this.dataTable.forEach(item => {
diff --git a/src/views/productionManagement/components/batchesDialog.vue b/src/views/productionManagement/components/batchesDialog.vue
index 78e4f11..4674265 100644
--- a/src/views/productionManagement/components/batchesDialog.vue
+++ b/src/views/productionManagement/components/batchesDialog.vue
@@ -51,11 +51,12 @@
确 认
+
+
+
\ No newline at end of file
diff --git a/src/views/productionSchedulingPlan/basic/components/addPersonnel.vue b/src/views/productionSchedulingPlan/basic/components/addPersonnel.vue
new file mode 100644
index 0000000..855987a
--- /dev/null
+++ b/src/views/productionSchedulingPlan/basic/components/addPersonnel.vue
@@ -0,0 +1,444 @@
+
+
+
+
+
+
+ onChangeData(value, 'workCenterId')"
+ clearable
+ filterable
+ >
+
+
+
+
+
+
+ onChangeData(value, 'processId')"
+ >
+
+
+
+
+
+
+ onChangeData(value, 'craftId')"
+ >
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 默认
+ 壳体外径
+ 玻璃饼直径
+ 芯数
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ onChangeData(value, 'certificateId')"
+ >
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/views/productionSchedulingPlan/basic/equipmentCapacity.vue b/src/views/productionSchedulingPlan/basic/equipmentCapacity.vue
index fdc99c1..dc064ef 100644
--- a/src/views/productionSchedulingPlan/basic/equipmentCapacity.vue
+++ b/src/views/productionSchedulingPlan/basic/equipmentCapacity.vue
@@ -18,21 +18,41 @@
@refresh-change="refreshChange"
@on-load="onLoad"
:before-open="beforeOpen"
+ :span-method="spanMethod"
>
-
+
+ 新增
+
-
+
+ 修改
+
-
-
-
- {{ JSON.parse(scope.row.standardProcessAbility) }}
+
+
+ {{ scope.row.standardProcessAbility }}
+
+
+
+ {{ `${item.startNum}≤φ<${item.endNum}`
+ }}{{ item.standardProcessAbility ? `,${item.standardProcessAbility}min/件` : '' }}
+
- {{ scope.row.standardProcessAbility }}
+
+
+
@@ -43,8 +63,12 @@ import {
addEquipAbility,
updateEquipAbility,
} from '@/api/productionSchedulingPlan/basic';
+import addEquipment from './components/addEquipment.vue';
+import { ElButton } from 'element-plus';
export default {
- components: {},
+ components: {
+ addEquipment,
+ },
data() {
return {
form: {},
@@ -70,8 +94,8 @@ export default {
border: true,
index: true,
selection: false,
- addBtn: true,
- editBtn: true,
+ addBtn: false,
+ editBtn: false,
viewBtn: false,
delBtn: true,
editBtnText: '修改',
@@ -98,75 +122,32 @@ export default {
searchMenuPosition: 'right',
align: 'center',
column: [
- {
- label: '作业中心',
- prop: 'workCenterId',
- search: true,
- sortable: true,
- span: 12,
- width: 120,
- type: 'select',
- filterable: true,
- dicUrl: '/blade-scheduling/workCenter/findList',
- rules: [
- {
- required: true,
- message: '请选择',
- trigger: 'blur',
- },
- ],
- props: {
- label: 'wcName',
- value: 'id',
- },
- change: val => {
- this.onChangeData(val.item, 'workCenterId');
- },
- },
{
label: '作业中心',
prop: 'workCenterName',
- search: false,
+ search: true,
sortable: true,
span: 12,
hide: true,
display: false,
},
{
- label: '设备编码',
- prop: 'equipCode',
+ label: '设备名称',
+ prop: 'equipName',
search: true,
sortable: true,
span: 12,
width: 120,
- type: 'select',
- // hide:true,
- filterable: true,
- dicUrl: '/blade-scheduling/equipment/findList',
- props: {
- label: 'deviceCode',
- value: 'deviceCode',
- },
- rules: [
- {
- required: true,
- message: '请选择',
- trigger: 'blur',
- },
- ],
- change: val => {
- this.onChangeData(val.item, 'equipName');
- },
+ disabled: true,
},
{
- label: '设备名称',
- prop: 'equipName',
- search: false,
+ label: '设备编码',
+ prop: 'equipCode',
+ search: true,
sortable: true,
span: 12,
width: 120,
disabled: true,
- // display:false,
},
{
label: '设备型号',
@@ -177,15 +158,6 @@ export default {
width: 120,
disabled: true,
},
- // {
- // label: '设备编码',
- // prop: 'equipCode',
- // search: true,
- // sortable: true,
- // span: 12,
- // width: 120,
- // disabled:true,
- // },
{
label: '设备分类',
@@ -213,31 +185,7 @@ export default {
},
],
},
- {
- label: '工艺能力',
- prop: 'craftId',
- search: false,
- sortable: true,
- span: 12,
- width: 120,
- type: 'select',
- filterable: true,
- dicUrl: '/blade-scheduling/craftAbility/findList',
- props: {
- label: 'caName',
- value: 'id',
- },
- rules: [
- {
- required: true,
- message: '请选择',
- trigger: 'blur',
- },
- ],
- change: val => {
- this.onChangeData(val.item, 'craftId');
- },
- },
+
{
label: '工艺能力',
prop: 'craftName',
@@ -248,7 +196,7 @@ export default {
display: false,
},
{
- label: '额定加工能力(烧结-个/热表-面积)',
+ label: '额定加工能力(烧结-件/热表-dm²)',
prop: 'standardProcessAbility',
search: false,
sortable: true,
@@ -336,9 +284,100 @@ export default {
},
data: [],
+ addShow: false,
+ moldAddMore: false,
+ title: '新增',
+ rowData: [], //行数据
+ spanArr: [
+ {
+ prop: 'workCenterName',
+ span: [],
+ },
+ {
+ prop: 'equipName',
+ span: [],
+ },
+ {
+ prop: 'equipCode',
+ span: [],
+ },
+ ],
};
},
methods: {
+ // 计算合并单元格数据
+ getSpanArr() {
+ this.spanArr = [
+ { prop: 'workCenterName', span: [] },
+ { prop: 'equipName', span: [] },
+ { prop: 'equipCode', span: [] },
+ ];
+
+ this.spanArr.forEach(item => {
+ item.span = [];
+ item.pos = 0; // 记录合并起始位置
+
+ for (let i = 0; i < this.data.length; i++) {
+ if (i === 0) {
+ // 第一行
+ item.span.push(1);
+ item.pos = 1;
+ } else {
+ // 判断当前行与上一行是否相同
+ if (this.data[i][item.prop] === this.data[i - 1][item.prop]) {
+ // 相同则合并行数 +1
+ item.span[this.pos] += 1;
+ item.span.push(0);
+ } else {
+ // 不同则重新开始
+ item.span.push(1);
+ item.pos = i;
+ }
+ }
+ }
+ });
+ },
+ // 合并单元格方法
+ spanMethod({ row, column, rowIndex, columnIndex }) {
+ // 只处理前三列
+ const mergeProps = ['workCenterName', 'equipName', 'equipCode'];
+
+ if (!mergeProps.includes(column.property)) {
+ return [1, 1];
+ }
+
+ // 查找对应列的合并数据
+ const spanData = this.spanArr.find(item => item.prop === column.property);
+ console.log(9999999, column.property);
+ if (!spanData) {
+ return [1, 1];
+ }
+
+ const rowspan = spanData.span[rowIndex] || 1;
+ const colspan = rowspan > 0 ? 1 : 0;
+
+ return {
+ rowspan: rowspan,
+ colspan: colspan,
+ };
+ },
+ // 新增
+ handleAdd() {
+ this.addShow = true;
+ this.moldAddMore = true;
+ this.title = '新增';
+ },
+ // 修改
+ handleEdit(row) {
+ this.addShow = true;
+ this.moldAddMore = true;
+ this.rowData = [row];
+ this.title = '修改';
+ },
+ closeDialog() {
+ this.addShow = false;
+ this.onLoad(this.page, this.query);
+ },
beforeOpen(done, type) {
if (['edit', 'view'].includes(type)) {
// this.form.processId = this.form.processId+''
@@ -442,7 +481,11 @@ export default {
this.data = res.data.data.records;
this.loading = false;
this.page.total = res.data.data.total;
- this.selectionClear();
+ this.data.forEach(item => {
+ if (item.partType != 0) {
+ item.abilityList = JSON.parse(item.standardProcessAbility);
+ }
+ });
}
);
},
diff --git a/src/views/productionSchedulingPlan/basic/personnelCapacity.vue b/src/views/productionSchedulingPlan/basic/personnelCapacity.vue
index 99c6d2a..fc59405 100644
--- a/src/views/productionSchedulingPlan/basic/personnelCapacity.vue
+++ b/src/views/productionSchedulingPlan/basic/personnelCapacity.vue
@@ -18,14 +18,35 @@
@refresh-change="refreshChange"
@on-load="onLoad"
:before-open="beforeOpen"
-
>
-
+
+ 新增
+
-
+
+ 修改
+
-
+
+
+ {{ scope.row.standardTime }}
+
+
+
+ {{ `${item.startNum}≤φ<${item.endNum}` }}{{ item.standardTime!=null?`,${item.standardTime}`:'' }}
+
+
+
+
+
+
@@ -37,8 +58,11 @@ import {
updatePersonAbility,
getSelectCertificateList,
} from '@/api/productionSchedulingPlan/basic';
+import addPersonnel from './components/addPersonnel.vue';
export default {
- components: {},
+ components: {
+ addPersonnel,
+ },
data() {
return {
form: {},
@@ -64,8 +88,8 @@ export default {
border: true,
index: true,
selection: false,
- addBtn: true,
- editBtn: true,
+ addBtn: false,
+ editBtn: false,
viewBtn: false,
delBtn: true,
editBtnText: '修改',
@@ -108,7 +132,7 @@ export default {
change: (val, row) => {
this.onChangeData(val.item, 'workCenterId');
},
- rules: [
+ rules: [
{
required: true,
message: '请选择',
@@ -197,7 +221,7 @@ export default {
search: false,
sortable: true,
span: 12,
- type:'select',
+ type: 'select',
rules: [
{
required: true,
@@ -205,16 +229,16 @@ export default {
trigger: 'blur',
},
],
- dicData:[
+ dicData: [
{
- label:'单个零件',
- value:'0'
+ label: '单个零件',
+ value: '0',
},
{
- label:'订单',
- value:'1'
- }
- ]
+ label: '订单',
+ value: '1',
+ },
+ ],
},
{
label: '额定工时(分钟/每人每个)',
@@ -222,7 +246,7 @@ export default {
search: false,
sortable: true,
span: 12,
- width:250,
+ width: 250,
labelWidth: 220,
type: 'number',
rules: [
@@ -240,17 +264,9 @@ export default {
sortable: true,
span: 12,
labelWidth: 180,
- width:180,
- type: 'number',
- rules: [
- {
- required: true,
- message: '请输入',
- trigger: 'blur',
- },
- ],
+ width: 180,
},
- {
+ {
label: '生产标识',
prop: 'productIdent',
search: false,
@@ -265,7 +281,7 @@ export default {
sortable: true,
span: 12,
type: 'select',
- hide:true,
+ hide: true,
filterable: true,
dicUrl: '/blade-scheduling/personAbility/selectCertificateList',
props: {
@@ -282,21 +298,36 @@ export default {
search: true,
sortable: true,
span: 12,
- display:false,
+ display: false,
},
-
],
},
data: [],
+ showDialog: false,
+ title: '新增',
+ rowData: {},
};
},
methods: {
+ handleAdd() {
+ this.showDialog = true;
+ this.title = '新增';
+ },
+ handleEdit(row) {
+ this.showDialog = true;
+ this.title = '修改';
+ this.rowData = row;
+ },
+ closeDialog() {
+ this.showDialog = false;
+ this.onLoad(this.page, this.query);
+ },
beforeOpen(done, type) {
if (['edit', 'view'].includes(type)) {
- this.form.processId = this.form.processId+''
- this.form.craftId = this.form.craftId+''
- this.form.workCenterId = this.form.workCenterId+''
+ this.form.processId = this.form.processId + '';
+ this.form.craftId = this.form.craftId + '';
+ this.form.workCenterId = this.form.workCenterId + '';
}
done();
},
@@ -310,14 +341,14 @@ export default {
if (val && type == 'craftId') {
this.form.craftName = val.caName;
}
- if(val && type == 'certificateId'){
+ if (val && type == 'certificateId') {
this.form.certificateName = val.name;
}
},
rowSave(row, done, loading) {
- if(row.productIdent != ''&&row.certificateId == ''){
+ if (row.productIdent != '' && row.certificateId == '') {
loading();
- return this.$message.error('请选择证书类型')
+ return this.$message.error('请选择证书类型');
}
addPersonAbility(row).then(
() => {
@@ -335,10 +366,13 @@ export default {
);
},
rowUpdate(row, index, done, loading) {
- console.log(row,row.productIdent != ''&&(row.certificateId == ''||row.certificateId == undefined));
- if(row.productIdent != ''&&(row.certificateId == ''||row.certificateId == undefined)){
+ console.log(
+ row,
+ row.productIdent != '' && (row.certificateId == '' || row.certificateId == undefined)
+ );
+ if (row.productIdent != '' && (row.certificateId == '' || row.certificateId == undefined)) {
loading();
- return this.$message.error('请选择证书类型')
+ return this.$message.error('请选择证书类型');
}
updatePersonAbility(row).then(
() => {
@@ -407,7 +441,11 @@ export default {
this.data = res.data.data.records;
this.loading = false;
this.page.total = res.data.data.total;
- this.selectionClear();
+ this.data.forEach(item => {
+ if (item.partType != 0) {
+ item.abilityList = JSON.parse(item.standardTime);
+ }
+ });
}
);
},
diff --git a/src/views/productionSchedulingPlan/basic/principalProducer.vue b/src/views/productionSchedulingPlan/basic/principalProducer.vue
index a192cf2..d609e02 100644
--- a/src/views/productionSchedulingPlan/basic/principalProducer.vue
+++ b/src/views/productionSchedulingPlan/basic/principalProducer.vue
@@ -120,7 +120,6 @@ export default {
search: true,
sortable: true,
span: 12,
- hide: true,
display: false,
},
{