问题修改

dev-scheduling
zhangdi 3 weeks ago
parent cbd4e907b9
commit 2e8f51e587
  1. 18
      src/api/processManagement/taskProcessing.js
  2. 6
      src/views/oem/oemApproval/index.vue
  3. 6
      src/views/processManagement/basicProcesses.vue
  4. 5
      src/views/processManagement/bathRefine/accumulateClass.vue
  5. 4
      src/views/processManagement/bathRefine/addQuantity.vue
  6. 7
      src/views/processManagement/bathRefine/bathRefineTask.vue
  7. 6
      src/views/processManagement/bathRefine/components/periodicalBatch.vue
  8. 6
      src/views/processManagement/bathRefine/components/periodicalClassDevice.vue
  9. 8
      src/views/processManagement/bathRefine/planClass.vue
  10. 3
      src/views/processManagement/bathRefine/workCenterDevice.vue
  11. 1
      src/views/processManagement/components/inPlantMaintenance.vue
  12. 431
      src/views/processManagement/components/processMainte/dsCraft.vue
  13. 90
      src/views/processManagement/components/processMainte/dsPartBasicInfo.vue
  14. 6
      src/views/processManagement/components/processMainte/dsPartIndex.vue
  15. 5
      src/views/processManagement/components/processMainte/partDetails.vue
  16. 213
      src/views/processManagement/components/processMainte/processPlanning.vue
  17. 5
      src/views/processManagement/inPlantProcess.vue
  18. 80
      src/views/processManagement/procepssPlanning.vue
  19. 1
      src/views/processManagement/processTemplate.vue
  20. 1
      src/views/processManagement/taskDispatch.vue
  21. 9
      src/views/processManagement/taskProcessing.vue
  22. 11
      src/views/productionManagement/beforeAndAfterPlating/components/afterPlatingEntryDialog.vue
  23. 4
      src/views/productionManagement/components/outsourceDialog.vue
  24. 28
      src/views/productionSchedulingPlan/basic/personnelCapacity.vue
  25. 36
      src/views/productionTesting/InspectionTemplate.vue
  26. 1
      src/views/qualityManagement/similarParts/index.vue

@ -290,3 +290,21 @@ export const getOemList = (params) => {
params: params,
});
}
// 获取检验项目模板列表数据
export const getInspectionTemplateList = (params) => {
return request({
url: '/blade-desk/QA/InspectionTemplate/getInspectionTemplateList',
method: 'get',
params: params,
});
}
// 查询检验项目详情
export const getInspectionDetail = (params) =>{
return request({
url:'/api/blade-desk/QA/InspectionTemplate/detail',
method:'get',
params
})
}

@ -60,7 +60,7 @@ export default {
searchIndex: 3,
tree: false,
border: true,
index: true,
index: false,
selection: true,
viewBtn: false,
delBtn: false,
@ -314,10 +314,10 @@ export default {
this.$message.error("请选择状态为【待审核】的数据");
return
}
this.woId = this.selectionList.map(item => item.woId).join(',')
this.woId = this.selectionList.map(item => item.id).join(',')
this.isOpen = true;
}else{
this.woId = row.woId
this.woId = row.id
this.isOpen = true;
}
},

@ -161,6 +161,7 @@ export default {
menuAlign: 'center',
gridBtn: false,
searchMenuPosition: 'right',
searchLabelWidth:'auto',
align: 'center',
column: [
{
@ -172,7 +173,6 @@ export default {
order: 9,
headerAlign: 'center',
align: 'center',
searchLabelWidth: 45,
},
{
label: '名称',
@ -184,7 +184,6 @@ export default {
width: 200,
headerAlign: 'center',
align: 'left',
searchLabelWidth: 45,
},
{
label: '是否检验工序',
@ -195,7 +194,6 @@ export default {
span: 8,
headerAlign: 'center',
align: 'center',
searchLabelWidth: 120,
width: 140,
type: 'select',
filterable: true,
@ -220,7 +218,6 @@ export default {
span: 8,
headerAlign: 'center',
align: 'center',
searchLabelWidth: 60,
type: 'select',
filterable: true,
clearable: true,
@ -244,7 +241,6 @@ export default {
span: 8,
headerAlign: 'center',
align: 'center',
searchLabelWidth: 45,
type: 'select',
filterable: true,
clearable: true,

@ -104,7 +104,7 @@ export default {
editBtnIcon: ' ',
viewBtnText: '详情',
labelWidth: 120,
searchLabelWidth: 120,
searchLabelWidth: 'auto',
menuWidth: 110,
dialogWidth: 1200,
dialogClickModal: false,
@ -135,7 +135,6 @@ export default {
overHidden: true,
headerAlign: 'center',
align: 'left',
searchLabelWidth: 80,
cascader: ['batchNo'],
width: 170,
rules: [
@ -175,7 +174,6 @@ export default {
overHidden: true,
headerAlign: 'center',
align: 'center',
searchLabelWidth: 80,
hide: true,
rules: [
{
@ -216,7 +214,6 @@ export default {
overHidden: true,
headerAlign: 'center',
align: 'left',
searchLabelWidth: 80,
width: 120,
rules: [
{

@ -87,7 +87,7 @@ export default {
editBtnIcon: ' ',
viewBtnText: '详情',
labelWidth: 120,
searchLabelWidth: 120,
searchLabelWidth: 'auto',
menu: true,
menuWidth: 120,
dialogWidth: 1200,
@ -119,7 +119,6 @@ export default {
overHidden: true,
headerAlign: 'center',
align: 'left',
searchLabelWidth: 80,
dicUrl: '/blade-desk/bsWorkCenter/getList',
props: {
label: 'wcName',
@ -137,7 +136,6 @@ export default {
clearable: true,
headerAlign: 'center',
align: 'center',
searchLabelWidth: 80,
rules: [
{
required: true,

@ -122,7 +122,7 @@ export default {
editBtnIcon: ' ',
viewBtnText: '详情',
labelWidth: 120,
searchLabelWidth: 150,
searchLabelWidth: 'auto',
menu: true,
menuWidth: 80,
dialogWidth: 1200,
@ -155,7 +155,6 @@ export default {
overHidden: true,
headerAlign: 'center',
align: 'left',
searchLabelWidth: 80,
rules: [
{
required: true,
@ -198,7 +197,6 @@ export default {
overHidden: true,
headerAlign: 'center',
align: 'left',
searchLabelWidth: 80,
rules: [
{
required: true,
@ -233,7 +231,6 @@ export default {
overHidden: true,
headerAlign: 'center',
align: 'center',
searchLabelWidth: 80,
type: 'date',
searchRange: true,
startPlaceholder: '开始时间',
@ -346,7 +343,6 @@ export default {
overHidden: true,
headerAlign: 'center',
align: 'center',
searchLabelWidth: 50,
searchOrder: 20,
rules: [
{
@ -387,7 +383,6 @@ export default {
overHidden: true,
headerAlign: 'center',
align: 'center',
searchLabelWidth: 60,
rules: [
{
required: true,

@ -88,7 +88,7 @@ export default {
editBtnIcon: ' ',
viewBtnText: '详情',
labelWidth: 120,
searchLabelWidth: 120,
searchLabelWidth: 'auto',
menu: true,
menuWidth: 120,
dialogWidth: 1200,
@ -116,7 +116,6 @@ export default {
overHidden: true,
headerAlign: 'center',
align: 'left',
searchLabelWidth: 80,
dicUrl: '/blade-desk/bsWorkCenter/getList',
type: 'select',
cascader: ['batchNo'],
@ -157,7 +156,6 @@ export default {
overHidden: true,
headerAlign: 'center',
align: 'center',
searchLabelWidth: 80,
hide: true,
rules: [
{
@ -183,7 +181,6 @@ export default {
overHidden: true,
headerAlign: 'center',
align: 'left',
searchLabelWidth: 80,
rules: [
{
required: true,
@ -205,7 +202,6 @@ export default {
overHidden: true,
headerAlign: 'center',
align: 'center',
searchLabelWidth: 80,
display: false,
rules: [
{

@ -87,7 +87,7 @@ export default {
editBtnIcon: ' ',
viewBtnText: '详情',
labelWidth: 120,
searchLabelWidth: 120,
searchLabelWidth: 'auto',
menu: true,
menuWidth: 120,
dialogWidth: 1200,
@ -115,7 +115,6 @@ export default {
overHidden: true,
headerAlign: 'center',
align: 'left',
searchLabelWidth: 80,
type:'select',
dicUrl: '/blade-desk/bsWorkCenter/getList',
props: {
@ -138,7 +137,6 @@ export default {
overHidden: true,
headerAlign: 'center',
align: 'left',
searchLabelWidth: 90,
rules: [
{
required: true,
@ -155,7 +153,6 @@ export default {
overHidden: true,
headerAlign: 'center',
align: 'left',
searchLabelWidth: 80,
rules: [
{
required: true,
@ -198,7 +195,6 @@ export default {
overHidden: true,
headerAlign: 'center',
align: 'center',
searchLabelWidth: 80,
display: false,
rules: [
{

@ -101,7 +101,7 @@ export default {
editBtnIcon: ' ',
viewBtnText: '详情',
labelWidth: 80,
searchLabelWidth: 120,
searchLabelWidth: 'auto',
menu: true,
menuWidth: 140,
dialogWidth: 800,
@ -133,7 +133,6 @@ export default {
overHidden: true,
headerAlign: 'center',
align: 'left',
searchLabelWidth: 80,
cascader: ['batchNo'],
rules: [
{
@ -159,7 +158,6 @@ export default {
overHidden: true,
headerAlign: 'center',
align: 'center',
searchLabelWidth: 80,
hide: true,
dicUrl: `/blade-desk/BA/WorkTank/listForSelect?workstationId={{wcId}}`,
props: {
@ -185,7 +183,6 @@ export default {
overHidden: true,
headerAlign: 'center',
align: 'left',
searchLabelWidth: 80,
rules: [
{
required: true,
@ -205,7 +202,6 @@ export default {
overHidden: true,
headerAlign: 'center',
align: 'center',
searchLabelWidth: 80,
addDisplay: false,
editDisplay: false,
},
@ -221,7 +217,6 @@ export default {
overHidden: true,
headerAlign: 'center',
align: 'center',
searchLabelWidth: 80,
format: 'YYYY-MM-DD',
valueFormat: 'YYYY-MM-DD',
rules: [
@ -245,7 +240,6 @@ export default {
overHidden: true,
headerAlign: 'center',
align: 'center',
searchLabelWidth: 80,
searchOrder: 20,
dicData: [
{

@ -62,7 +62,7 @@ export default {
editBtnIcon: ' ',
viewBtnText: '详情',
labelWidth: 100,
searchLabelWidth: 120,
searchLabelWidth: 'auto',
menu: true,
menuWidth: 120,
dialogWidth: 450,
@ -95,7 +95,6 @@ export default {
overHidden: true,
headerAlign: 'center',
align: 'left',
searchLabelWidth: 80,
rules: [
{
required: true,

@ -135,6 +135,7 @@ export default {
delBtnIcon: ' ',
editBtnIcon: ' ',
align: 'center',
searchLabelWidth:'auto',
column: [
{
label: '作业中心',

@ -1,431 +0,0 @@
<template>
<div style="width: 100%">
<el-form
ref="form"
:model="dsCraftMold"
:rules="rules"
class="vd-form"
label-width="80px"
size="mini"
v-if="!disabled"
>
<el-row>
<el-col :span="8">
<!-- 级别 -->
<el-form-item :label="'工艺级别'" prop="rank">
<el-select v-model="dsCraftMold.rank" :placeholder="'请选择'" clearable filterable>
<el-option
v-for="item in rankList"
:key="item.value"
:label="item.label"
:value="item.value"
/>
</el-select>
</el-form-item>
</el-col>
<el-col :span="8">
<!-- 生产标识 -->
<el-form-item :label="'生产标识'" prop="qualityGrade">
<procedure-qua
v-model="dsCraftMold.qualityGrade"
:option="procedureQuaOption"
multiple
style="width: 120px"
@change="procedureQuaChange"
/>
<el-select v-model="dsCraftMold.qualityGrade" :placeholder="'请选择'" clearable filterable>
<el-option
v-for="item in rankList"
:key="item.value"
:label="item.label"
:value="item.value"
/>
</el-select>
</el-form-item>
</el-col>
</el-row>
</el-form>
<el-tabs v-model="activeName" type="border-card">
<!-- 工艺维护 -->
<el-tab-pane :label="'工序'" name="1">
<avue-crud
ref="crud"
:option="dsProcessOption"
:data="data"
@row-update="rowUpdate"
@row-save="rowSave"
@row-click="handleRowClick"
>
<template #menu-left="{}">
<el-button @click="addRow">删除选择行</el-button>
</template>
<template #menu-right="{}">
<el-cascader
v-model="cascaderValue"
:props="{ expandTrigger: 'hover' }"
:options="cascaderOptions"
style="width: 260px; height: 30px; margin: 0 12px"
class="proModel"
@change="handleChange"
/>
<el-button @click="importTemplate">导入模板 </el-button>
</template>
<template #menu="{ row, index }">
<el-button
text
type="primary"
:icon="row.$cellEdit ? 'el-icon-plus' : 'el-icon-edit'"
@click="rowCell(row, index)"
>
{{ row.$cellEdit ? '保存' : '修改' }}
</el-button>
<el-button
v-if="row.$cellEdit"
text
icon="el-icon-cancel"
type="primary"
@click="rowCancel(row, index)"
>
取消
</el-button>
</template>
</avue-crud>
</el-tab-pane>
</el-tabs>
</div>
</template>
<script>
import { getProcessManagementAuthorized } from '@/api/processManagement/taskProcessing';
export default {
name: 'CraftIndex',
components: {},
props: {
height: {
type: Number,
default: 600,
},
partId: {
type: [Number, String],
default: null,
},
dialogType: {
type: String,
default: '',
},
},
data() {
// var checkCraftNo = (rule, value, callback) => {
// if (!value) {
// return callback(
// new Error(this.$t('videaVueLib.publics.form.placeholder.input'))
// );
// }
// this.$ajax
// .post('dsCraft/checkCraftNoUnique', {
// craftId: this.dsCraftMold.craftId,
// partId: this.partId,
// craftNo: value
// })
// .then((res) => {
// if (res.data) {
// callback(new Error(this.$t('craft.checkCraftNoUnique')));
// } else {
// callback();
// }
// });
// };
return {
disabled: false,
craftWay: '',
dsCraftMold: {
qualityGrade: [],
quGrText: [],
dsPart: { partId: this.partId },
priority: 3,
craftNo: 'C000000',
rank: 2,
},
procedureQuaOption: [],
activeName: '1',
craftId: null,
priorityList: [
{
label: '本次使用',
value: 1,
},
{
label: '正式工艺',
value: 2,
},
{
label: '临时工艺',
value: 3,
},
],
rankList: [
{
label: '一级',
value: 1,
},
{
label: '二级',
value: 2,
},
{
label: '三级',
value: 3,
},
],
rules: {
priority: [{ required: true }],
rank: [{ required: true }],
},
procedureQuaList: [],
dsProcessOption: {
submitBtn: false,
emptyBtn: false,
addBtn: false,
editBtn: false,
addRowBtn: true,
addRowBtnText: '插入一行',
cellBtn: false,
cancelBtn: false,
menu: false,
selection: true,
tip: false,
border: true,
searchLabelPosition: 'left',
searchGutter: 24,
searchSpan: 6,
menuAlign: 'left',
gridBtn: false,
searchMenuPosition: 'right',
addBtnIcon: ' ',
viewBtnIcon: ' ',
delBtnIcon: ' ',
editBtnIcon: ' ',
searchShowBtn: false,
align: 'center',
column: [
{
label: '工序号',
prop: 'processNo',
span: 23,
cell: true,
rules: [
{
required: true,
message: '请输入密码',
trigger: 'blur',
},
],
},
{
label: '工序',
prop: 'bsProcedureSet.ppsId',
bind: 'bsProcedureSet.ppsId',
cell: true,
span: 23,
rules: [
{
required: true,
message: '请输入密码',
trigger: 'blur',
},
],
},
{
label: '工序代码',
prop: 'bsProcedureSet.ppsCode',
bind: 'bsProcedureSet.ppsCode',
cell: true,
span: 23,
rules: [
{
required: true,
message: '请输入密码',
trigger: 'blur',
},
],
},
{
label: '工艺能力',
prop: 'bsCraftAbility.caId',
bind: 'bsCraftAbility.caId',
cell: true,
span: 23,
rules: [
{
required: true,
message: '请输入密码',
trigger: 'blur',
},
],
},
{
label: '工时定额',
prop: 'hourQuota',
cell: true,
span: 23,
rules: [
{
required: true,
message: '请输入密码',
trigger: 'blur',
},
],
},
{
label: '工序描述',
prop: 'memo',
cell: true,
span: 23,
rules: [
{
required: true,
message: '请输入密码',
trigger: 'blur',
},
],
},
{
label: '主工序',
prop: 'cruxProcess',
cell: true,
span: 23,
rules: [
{
required: true,
message: '请输入密码',
trigger: 'blur',
},
],
},
],
},
};
},
watch: {
activeName: function () {
this.loadDetail();
},
},
mounted() {
this.$refs.form.resetFields();
this.craftId = null;
this.dsCraftMold = {
qualityGrade: [],
quGrText: [],
dsPart: { partId: this.partId },
priority: 3,
craftNo: 'C000000',
rank: 2,
};
this.$refs.processRef.processList = [];
this.disabled = this.dialogType == 'view' ? true : false;
this.getPartDetails()
},
methods: {
//
getPartDetails() {
getProcessManagementAuthorized(this.partId).then(res => {
this.formData = res.data.data.dsPartEntity;
this.data = res.data.data.dsPartEntities
if (res.data.data.dsPartEntity.isGlassCake === '0') {
this.formData.isGlassCake = false;
} else {
this.formData.isGlassCake = true;
}
});
},
refreshLoad() {
this.$refs.processRef.processList = [];
},
procedureQuaChange(idList, item) {
const list = this.procedureQuaList.concat(item);
this.procedureQuaList = this.$removedup(list, 'pqId');
this.dsCraftMold.quGrText = [];
idList.forEach(idItem => {
this.procedureQuaList.forEach((item, index) => {
if (item.pqId === idItem) {
this.dsCraftMold.quGrText.push(item.pqName);
}
});
});
},
loadData(craftId) {
if (!craftId) return;
this.craftId = craftId;
this.loadDetail();
this.$ajax.get('dsCraft/getByKey/' + craftId).then(res => {
this.dsCraftMold = res.data;
if (!this.dsCraftMold.qualityGrade) {
this.dsCraftMold.qualityGrade = [];
this.procedureQuaOption = [];
} else {
this.dsCraftMold.qualityGrade = JSON.parse(this.dsCraftMold.qualityGrade);
this.dsCraftMold.quGrText = JSON.parse(this.dsCraftMold.quGrText);
this.procedureQuaOption = [];
this.dsCraftMold.quGrText.forEach((item, index) => {
this.procedureQuaOption.push({
pqId: this.dsCraftMold.qualityGrade[index],
pqName: item,
});
});
}
});
},
addRefresh() {
this.$refs.form.resetFields();
this.craftId = null;
this.dsCraftMold = {
qualityGrade: [],
quGrText: [],
dsPart: { partId: this.partId },
priority: 3,
craftNo: 'C000000',
rank: 2,
};
this.$refs.processRef.processList = [];
},
validateForm() {
this.$refs.form.validate(valid => {
if (valid) {
if (this.activeName === '1') {
this.$refs.processRef.submit();
} else if (this.activeName === '2') {
this.$refs.platedQuotaRef.submit();
}
}
});
},
loadDetail() {
if (this.activeName === '1') {
this.$refs.processRef.loadData(this.craftId);
} else if (this.activeName === '2') {
this.$refs.platedQuotaRef.loadData(this.craftId);
}
},
queryTree(isCall, craftId) {
this.$emit('queryTree');
if (isCall) {
this.loadData(craftId);
}
},
},
};
</script>
<style lang="scss" scoped>
// .vd-form /deep/ .el-input {
// width: 190px !important;
// }
// .vd-form /deep/ .el-form-item--mini.el-form-item,
// .el-form-item--small.el-form-item {
// margin-bottom: 4px;
// }
</style>

@ -45,7 +45,7 @@
</el-col>
<el-col :span="6">
<el-form-item label="硬度:" prop="hardness">
<el-input v-model="formData.hardness" placeholder="请输入" />
<el-input v-model="formData.hardness" placeholder="请输入" @blur="hardnessChange" />
</el-form-item>
</el-col>
<el-col :span="6">
@ -253,7 +253,7 @@
</el-col>
</el-row>
</template>
<template v-if="partType == '烧结'">
<template v-else>
<el-row :gutter="24">
<el-col :span="6">
<el-form-item label="零件号:" prop="partCode">
@ -672,6 +672,8 @@ export default {
search: false,
sortable: true,
overHidden: true,
cell: true,
width: 180,
},
{
label: '零件名称',
@ -783,6 +785,14 @@ export default {
this.getPlatingList();
},
methods: {
//
hardnessChange() {
if (this.partType == '热表') {
if (this.formData.hardness) {
this.formData.hotDispose = '1';
}
}
},
//
getLocallyPlatedPartList() {
getLocallyPlatedPartList().then(res => {
@ -854,17 +864,6 @@ export default {
sinTerChange(v) {
if (v) {
this.notSinTer = false;
// this.rules = this.rules2;
// this.$set(this.rules, 'craftWay', [this.$validation.required]);
// if (!this.formData.expirationPeriod && this.formData.expirationPeriod == '') {
// this.$set(this.formData, 'expirationPeriod', 9999);
// }
// if (!this.formData.advanceRemind && this.formData.advanceRemind == '') {
// this.$set(this.formData, 'advanceRemind', 10);
// }
// if (!this.formData.area && this.formData.area == '') {
// this.$set(this.formData, 'area', 1);
// }
} else {
this.notSinTer = true;
if (this.notGlassCake) {
@ -964,43 +963,54 @@ export default {
}
}
}
// 🔴
for (const item of this.data) {
// // 1.
// if (item.area === null || item.area === undefined || item.area === '') {
// this.$message.warning(`${item.partName}`);
// this.submitLoading = false;
// return;
// }
// 2. 1
// if (item.sinTerType !== 2) {
// const areaValue = parseFloat(item.area);
// if (isNaN(areaValue) || areaValue > 1) {
// this.$message.warning(`${item.partName}1`);
// this.submitLoading = false;
// return;
// }
// }
if (this.partType == '热表') {
if (!this.formData.area) {
this.$message.warning('面积1不能为空');
this.submitLoading = false;
return;
}
if (!this.formData.plate) {
this.$message.warning('镀种1不能为空');
this.submitLoading = false;
return;
}
if (!this.formData.material) {
this.$message.warning('材料不能为空');
this.submitLoading = false;
return;
}
if (this.formData.plateGoodsCode && !this.formData.plateCode) {
this.$message.warning('物料编码已选择,镀层代号1不能为空');
this.submitLoading = false;
return;
}
if (this.formData.goldMark === '1') {
if (!this.formData.areaTwo) {
this.$message.warning('镀金标识零件,面积2不能为空');
this.submitLoading = false;
return;
}
if (!this.formData.plateCodeTwo) {
this.$message.warning('镀金标识零件,镀层代号2不能为空');
this.submitLoading = false;
return;
}
}
}
this.formData.childPage = this.childPage;
this.formData.psId = this.psId;
// 1 A1
// this.data.forEach(item=>{
// if(item.type=='2'){
// }
// })
authorizedAccomplish({ dsPart: this.formData, partList: this.data }).then(res => {
authorizedAccomplish({ dsPart: this.formData, partList: this.data })
.then(res => {
this.$message.success('操作成功');
this.submitLoading = false;
this.cancel(flag, res.data);
}).catch(err => {
this.submitLoading = false;
})
.catch(err => {
this.submitLoading = false;
});
} else {
this.submitLoading = false;
}

@ -7,9 +7,9 @@
@opened="opened"
>
<div class="tabs-container">
<div class="version-info">
<!-- <div class="version-info">
<span class="version-label">工艺版本{{ partVersion || '-' }}</span>
</div>
</div> -->
<el-tabs v-if="setCrewShow" v-model="activeName" @tab-click="handleClick">
<!-- 零件信息-->
<el-tab-pane label="零件信息" name="1">
@ -52,14 +52,12 @@
</template>
<script>
import dsPartBasicInfo from './dsPartBasicInfo.vue';
import dsCraftPage from './dsCraft.vue';
import processPlanning from './processPlanning.vue';
export default {
name: 'DsPartIndex',
components: {
dsPartBasicInfo,
dsCraftPage,
processPlanning,
},
props: {

@ -1,7 +1,7 @@
<template>
<el-dialog title="详情" v-model="setCrewShow" :before-close="cancel" fullscreen>
<div class="tabs-container" v-loading="tabLoading">
<div class="content-right">
<!-- <div class="content-right">
<span class="version-label" v-if="this.detailsType == 'taskProcessing'"
>工艺版本{{ version || '-' }}</span
>
@ -22,7 +22,7 @@
/>
</el-select>
</div>
</div>
</div> -->
<el-tabs v-if="setCrewShow" v-model="activeNameTab">
<el-tab-pane label="零件信息" name="1"> </el-tab-pane>
@ -1042,7 +1042,6 @@ export default {
return item.partCode == this.formData.partCode;
});
if (selPart.length > 0) {
if (this.partType == '热表') {
this.formData.goldMark = '1';

@ -106,21 +106,6 @@
<el-button type="primary" @click="saveInfo()" :loading="craftLoading">保存</el-button>
</div>
<div class="table-btn-right" v-if="activeName == '1'">
<!-- <el-select
v-model="modelLevel"
placeholder="选择工艺模板"
style="width: 220px; margin-right: 12px"
clearable
filterable
:filter-method="handleFilter"
>
<el-option
v-for="(item, index) in filteredList"
:key="index"
:label="item.name"
:value="item.id"
/>
</el-select> -->
<el-cascader
v-model="modelLevel"
:options="filteredList"
@ -136,6 +121,21 @@
>导入模板</el-button
>
</div>
<div class="table-btn-right" v-if="activeName == '2'">
<el-cascader
v-model="cascaderValue"
:props="{ expandTrigger: 'hover' }"
:options="cascaderOptions"
style="width: 260px; height: 30px; margin: 0 12px"
class="trialitemModel"
@change="handleChange"
clearable
filterable
/>
<el-button type="primary" @click="importInspectionTemplate" :loading="modelLevelLoading"
>导入模板</el-button
>
</div>
</div>
<!-- 工序 -->
<el-form
@ -384,17 +384,35 @@
</el-form-item>
</template>
</el-table-column>
<el-table-column prop="tool" label="量具">
<el-table-column prop="mtId" label="量具">
<template #header>
<span><i style="color: red">*</i>量具</span>
</template>
<template #default="scope">
<el-form-item :prop="`tableData3[${scope.$index}].tool`" :rules="formRules3.tool">
<el-input
<el-form-item :prop="`tableData3[${scope.$index}].mtId`" :rules="formRules3.mtId">
<!-- <el-input
v-model="scope.row.tool"
placeholder="请输入"
style="width: 100%"
></el-input>
></el-input> -->
<jhSelect
v-model="scope.row.mtId"
placeholder="请搜索选择"
api-url="/blade-desk/measurementRecords/page"
echo-api="/blade-desk/measurementRecords/page"
echoParamsKey="ids"
echo-method="get"
api-method="get"
list-key="records"
total-key="total"
label-key="mcName"
value-key="id"
search-key="mcName"
:params="{ cmType: 1 }"
:debounce-time="500"
:title="'修改'"
@change="(val, item) => changeMtId(val, item, scope.$index)"
/>
</el-form-item>
</template>
</el-table-column>
@ -407,10 +425,10 @@
></el-input>
</template>
</el-table-column>
<el-table-column prop="toolSize" label="图纸尺寸">
<el-table-column prop="ruleSize" label="图纸尺寸">
<template #default="scope">
<el-input
v-model="scope.row.toolSize"
v-model="scope.row.ruleSize"
placeholder="请输入"
style="width: 100%"
></el-input>
@ -433,15 +451,6 @@
:height="tableHeight"
>
<el-table-column type="selection" width="55"></el-table-column>
<!-- <el-table-column prop="trialNo" label="工序号">
<template #default="scope">
<el-input
v-model="scope.row.trialNo"
placeholder="请输入"
style="width: 100%"
></el-input>
</template>
</el-table-column> -->
<el-table-column prop="moldCode" label="对应工装">
<template #header>
<span><i style="color: red">*</i>对应工装</span>
@ -514,6 +523,8 @@ import {
getProject,
getStandardList,
craftBatchRemoval,
getInspectionTemplateList,
getInspectionDetail,
} from '@/api/processManagement/taskProcessing';
import { getPqList } from '@/api/qualityManagement/remindRedeem/remindRedeem';
import { getDictionary } from '@/api/system/dict';
@ -600,7 +611,7 @@ export default {
},
formRules3: {
testType: [{ required: true, message: '请选择', trigger: ['change', 'submit'] }],
tool: [{ required: true, message: '请选择', trigger: ['change', 'submit'] }],
mtId: [{ required: true, message: '请选择', trigger: ['change', 'submit'] }],
},
formRules4: {
moldCode: [{ required: true, message: '请输入', trigger: ['change', 'submit'] }],
@ -629,11 +640,14 @@ export default {
//
disabled: 'disabled',
},
cascaderValue: '',
cascaderOptions: [],
};
},
mounted() {
this.getModelList();
this.getInspectionTemplateList();
this.getDetails();
this.getProcessSetList();
@ -650,6 +664,84 @@ export default {
document.removeEventListener('contextmenu', this.closeContextMenu);
},
methods: {
//
getInspectionTemplateList() {
getInspectionTemplateList().then(res => {
// this.cascaderOptions = res.data.data;
let data_ = res.data.data;
data_.forEach(item => {
item.label = item.categoryName;
if (item.children.length > 0) {
item.children.forEach(item_ => {
item_.label = item_.name;
item_.value = item_.id;
});
}
});
this.cascaderOptions = data_;
// this.filteredList = [...this.modelOption];
});
},
//
importInspectionTemplate() {
this.modelLevelLoading = true;
getInspectionDetail({
id: this.cascaderValue,
})
.then(res => {
this.modelLevelLoading = false;
console.log('res--------------------------', res.data.data);
const templateData = res.data.data.detailList;
if (!templateData || !Array.isArray(templateData)) {
return this.$message.warning('模板数据为空');
}
// trialNo
const existingLength = this.form2.tableData2.length;
// trialNo
const mappedData = templateData.map((item, index) => {
// P001, P002...
const trialNo = `P${String(existingLength + index + 1).padStart(3, '0')}`;
// projectCode projectName
let projectName = '';
if (item.projectCode) {
const projectOption = this.projectOptions.find(p => p.id === item.projectCode);
projectName = projectOption ? projectOption.name : '';
}
return {
id: null, // ID
_tempId: `temp_${Date.now()}_${index}`, //
trialNo: trialNo,
projectCode: item.inspectionItemId || '',
projectName: projectName || item.projectName || '',
projectStandard: item.standardId || '',
projectStandardName: item.projectStandardName || '',
proHours: item.proHours != null ? item.proHours : 0,
prepareHours: item.prepareHours != null ? item.prepareHours : 0,
};
});
//
this.form2.tableData2 = [...this.form2.tableData2, ...mappedData];
this.$message.success('模板导入成功,请检查后保存');
// this.form2.tableData2 = res.data.data;
})
.catch(err => {
this.modelLevelLoading = false;
});
},
changeMtId(val, item, index) {
if (item) {
this.$nextTick(() => {
this.form3.tableData3[index].toolInfo = item.mcName; //
this.form3.tableData3[index].toolSize = item.norms; //
});
console.log(this.form3.tableData3, 'this.form3.tableData3');
}
},
//
calculateTableHeight() {
this.$nextTick(() => {
@ -769,7 +861,7 @@ export default {
item.children.forEach(item_ => {
item_.label = item_.name;
item_.value = item_.id;
})
});
}
});
this.modelOption = data_;
@ -1425,38 +1517,6 @@ export default {
return this.$message.warning('该工艺包含的工序必须包含涂色标');
}
}
//
if (dsCraftMold.hardness == '1') {
if (!arr.includes('热处理检验')) {
this.$message({
dangerouslyUseHTMLString: true,
message:
'<strong style="font-size:22px" >' +
'该零件硬度为 ' +
dsCraftMold.hardness +
', 没有热处理检验工序。' +
'</strong>',
showClose: true,
duration: 7000,
type: 'warning',
});
} else {
this.$message({
dangerouslyUseHTMLString: true,
message:
'<strong style="font-size:22px" >' +
'该零件硬度为 ' +
dsCraftMold.hardness +
', 存在热处理检验工序。' +
'</strong>',
showClose: true,
duration: 7000,
type: 'success',
});
}
}
// SB
if (dsCraftMold.plate != null && dsCraftMold.plate.indexOf('SB') != -1) {
if (!arr.includes('喷砂')) {
@ -1531,7 +1591,7 @@ export default {
// // heatTreatmentTest
if (dsCraftMold.hotDispose == '1') {
if (!arr.includes('热处理检验')) {
return this.$message({
this.$message({
dangerouslyUseHTMLString: true,
message:
'<strong style="font-size:22px" >' +
@ -1565,7 +1625,7 @@ export default {
});
}
}
this.craftLoading = true;
//
if (this.treeNodes.rawData.qualityGradeCode) {
@ -1580,16 +1640,12 @@ export default {
processList: this.form1.tableData1, //
processDeleteIds: this.form1.deleteIds, //ids
};
this.craftLoading = true;
authorizedAccomplish2(query_)
.then(res => {
this.$message.success('保存成功');
this.craftLoading = false;
if (this.treeLeave == 1) {
this.getDetails();
}
this.updateTreeAfterSave(res.data.data);
})
.catch(err => {
this.craftLoading = false;
@ -1631,7 +1687,9 @@ export default {
this.updateTreeNodeProject();
this.refreshTableData(); //
}
});
}).catch(err=>{
this.craftLoading = false;
})
}
});
}
@ -1653,7 +1711,9 @@ export default {
this.updateTreeNodeProject();
this.refreshTableData(); //
}
});
}).catch(err=>{
this.craftLoading = false;
})
}
});
}
@ -1675,7 +1735,9 @@ export default {
this.updateTreeNodeProject();
this.refreshTableData(); //
}
});
}).catch(err=>{
this.craftLoading = false;
})
}
});
}
@ -1685,7 +1747,6 @@ export default {
// 1. rawData
if (this.treeLeave === 1 && saveData) {
console.log('updateTreeAfterSave', this.treeNodes);
// this.treeNodes.rawData = { ...this.treeNodes.rawData, ...saveData };
}
if (this.treeLeave === 2 && saveData) {
this.treeNodes.rawData = { ...this.treeNodes.rawData, ...saveData };
@ -1699,7 +1760,7 @@ export default {
//
if (saveData) {
node.rawData = { ...node.rawData, ...saveData };
node.label = `${saveData.roamNo || '临时工艺'}-${saveData.craftNo || '工艺文件'}`;
node.label = node.label;
}
//

@ -103,6 +103,7 @@ export default {
searchMenuPosition: 'right',
align: 'center',
menu: true,
searchLabelWidth:'auto',
column: [
{
label: '作业中心',
@ -134,7 +135,6 @@ export default {
display: false,
headerAlign: 'center',
align: 'left',
searchLabelWidth: 60,
},
// {
// label: '线',
@ -145,7 +145,6 @@ export default {
// span: 12,
// headerAlign: 'center',
// align: 'left',
// searchLabelWidth: 45,
// },
{
label: '确认编号',
@ -190,7 +189,6 @@ export default {
span: 12,
headerAlign: 'center',
align: 'center',
searchLabelWidth: 60,
},
{
label: '备注',
@ -212,7 +210,6 @@ export default {
headerAlign: 'center',
align: 'center',
type: 'select',
searchLabelWidth: 50,
dicData: [
{
value: 0,

@ -32,6 +32,9 @@
<!-- <template #menu-right="{ size }"> </template> -->
<template #menu="scope">
<el-button type="primary" link @click="organization(scope.row.partId, scope.row)"
>编制</el-button
>
<el-button type="primary" link @click="viewDetails(scope.row.partId, scope.row)"
>详情</el-button
>
@ -73,6 +76,16 @@
:rowData="rowData"
:detailsType="'processPlanning'"
></partDetails>
<!-- 编制 -->
<dsPartIndex
:is-open="isOpen"
v-if="isOpen"
:part-id="partId"
@cancel="cancel"
:dialogType="dialogType"
:updateRow="updateRow"
></dsPartIndex>
</basic-container>
</template>
<script>
@ -82,10 +95,13 @@ import indateDailog from './components/indateDailog.vue';
import { getList, getExpire, getPdmDocLink } from '@/api/processManagement/procepssPlanning';
import { getDictionary } from '@/api/system/dict';
import partDetails from './components/processMainte/partDetails.vue';
import dsPartIndex from './components/processMainte/dsPartIndex.vue';
export default {
components: {
indateDailog,
partDetails,
dsPartIndex
},
data() {
return {
@ -126,7 +142,7 @@ export default {
editBtnIcon: ' ',
viewBtnText: '详情',
labelWidth: 120,
menuWidth: 80,
menuWidth: 120,
dialogWidth: 1200,
dialogClickModal: false,
searchEnter: true,
@ -145,6 +161,7 @@ export default {
searchGutter: 24,
searchSpan: 6,
searchMenuPosition: 'right',
searchLabelWidth:'auto',
align: 'center',
column: [
{
@ -195,18 +212,40 @@ export default {
label: '镀种',
prop: 'plate',
sortable: true,
search: false,
search: true,
overHidden: true,
headerAlign: 'center',
align: 'center',
width: 250,
},
{
label: '工艺路线',
prop: 'craftWay',
label: '材料',
prop: 'material',
sortable: true,
search: false,
search: true,
hide: true,
overHidden: true,
headerAlign: 'center',
align: 'center',
width: 250,
},
{
label: '产品型号',
prop: 'productType',
sortable: true,
search: true,
hide: true,
overHidden: true,
headerAlign: 'center',
align: 'center',
width: 250,
},
{
label: '硬度',
prop: 'hardness',
sortable: true,
search: true,
hide: true,
overHidden: true,
headerAlign: 'center',
align: 'center',
@ -214,15 +253,25 @@ export default {
},
{
label: '版本号',
prop: 'partVersion',
label: '工艺路线',
prop: 'craftWay',
sortable: true,
search: false,
overHidden: true,
headerAlign: 'center',
align: 'center',
width: 170,
width: 250,
},
// {
// label: '',
// prop: 'partVersion',
// sortable: true,
// search: false,
// overHidden: true,
// headerAlign: 'center',
// align: 'center',
// width: 170,
// },
{
label: '到期时间',
prop: 'nextDue',
@ -265,6 +314,10 @@ export default {
title: '分派',
expireData: [],
rowData: {},
partId:'',
updateRow:{},
isOpen:false,
dialogType:''
};
},
mounted() {
@ -272,6 +325,13 @@ export default {
},
methods: {
//
organization(partId, row) {
this.partId = partId;
this.updateRow = row;
this.isOpen = true;
this.dialogType = 'edit';
},
openPage(row) {
// window.open(row.docLink)
getPdmDocLink({ partCode: row.partCode }).then(res => {
@ -282,6 +342,8 @@ export default {
},
cancel() {
this.showPartDetails = false;
this.isOpen = false
this.onLoad(this.page)
},
viewDetails(partId, row, level) {
this.showPartDetails = true;

@ -110,6 +110,7 @@ export default {
searchGutter: 24,
searchSpan: 6,
searchMenuPosition: 'right',
searchLabelWidth:'auto',
align: 'center',
column: [
{

@ -106,6 +106,7 @@ export default {
searchMenuPosition: 'right',
align: 'center',
emptyText: '',
searchLabelWidth:'auto',
column: [
{
label: '零件号',

@ -17,7 +17,6 @@
>
<template #menu-left>
<el-button @click="addFn()" type="primary">新增任务</el-button>
<el-button @click="setCrew()" type="primary">批量转派</el-button>
</template>
@ -91,8 +90,6 @@
:updateRow="updateRow"
>
</reworkDsPartIndex>
<!-- 新增任务 -->
<addTestDialog v-if="isTestOpen" :showDialog="isTestOpen" @closeDialog="cancel"></addTestDialog>
<!-- 查看详情数据 -->
<partDetails
@ -111,7 +108,6 @@
import assignDaialog from './components/assignDaialog.vue';
import dsPartIndex from './components/processMainte/dsPartIndex.vue';
import reworkDsPartIndex from './components/processMainte/reworkDsPartIndex.vue';
import addTestDialog from './components/addTestDialog.vue';
import { getList, completeSet, taskReception } from '@/api/processManagement/taskProcessing';
import partDetails from './components/processMainte/partDetails.vue';
import { getPdmDocLink } from '@/api/processManagement/procepssPlanning';
@ -121,7 +117,6 @@ export default {
components: {
assignDaialog,
dsPartIndex,
addTestDialog,
reworkDsPartIndex,
partDetails,
},
@ -390,10 +385,6 @@ export default {
}
});
},
//
addFn() {
this.isTestOpen = true;
},
//
cancel(refresh) {
this.partId = null;

@ -57,6 +57,11 @@
</el-table-column> -->
<!-- <el-table-column label="单号" prop="paCode" align="center" width="120"> </el-table-column> -->
<el-table-column label="车间订单" prop="woCode" align="center" width="170">
</el-table-column>
<el-table-column label="重量" prop="weight" align="center" width="120">
<template #default="scope">
<el-input v-model="scope.row.weight" placeholder="请输入"></el-input>
</template>
</el-table-column>
<el-table-column label="批次号" prop="batchNo" align="center" width="120"></el-table-column>
<el-table-column
@ -79,11 +84,7 @@
</el-table-column>
<el-table-column label="入库数量" prop="inQuantity" align="center" width="120">
</el-table-column>
<el-table-column label="重量" prop="weight" align="center" width="120">
<template #default="scope">
<el-input v-model="scope.row.weight" placeholder="请输入"></el-input>
</template>
</el-table-column>
</el-table>
</el-form>

@ -103,7 +103,11 @@ export default {
},
//
handleSelectionChange(selection) {
selection.forEach(item => {
item.handle = true
});
this.selectedRows = selection;
},
//
turnOem() {

@ -22,12 +22,16 @@
>
<template #menu-left>
<!-- personnelCapacity_add -->
<el-button type="primary" @click="handleAdd" v-if="permission.personnelCapacity_add">新增</el-button>
<el-button type="primary" @click="handleAdd" v-if="permission.personnelCapacity_add"
>新增</el-button
>
</template>
<template #menu-right> </template>
<template #menu="{ row }">
<!-- personnelCapacity_edit -->
<el-button type="text" @click="handleEdit(row)" v-if="permission.personnelCapacity_edit">修改</el-button>
<el-button type="text" @click="handleEdit(row)" v-if="permission.personnelCapacity_edit"
>修改</el-button
>
</template>
<template #standardTime="scope">
@ -36,7 +40,8 @@
</span>
<span v-else>
<p v-for="(item, index) in scope.row.abilityList" :key="index">
{{ `${item.startNum}≤φ<${item.endNum}` }}{{ item.standardTime!=null?`,${item.standardTime}`:'' }}
{{ `${item.startNum}≤φ<${item.endNum}`
}}{{ item.standardTime != null ? `,${item.standardTime}` : '' }}
</p>
</span>
</template>
@ -358,9 +363,16 @@ export default {
},
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 + '';
console.log(row,'编辑和查询');
if (this.form.processId != null) {
this.form.processId = String(this.form.processId);
}
if (this.form.craftId != null) {
this.form.craftId = String(this.form.craftId);
}
if (this.form.workCenterId != null) {
this.form.workCenterId = String(this.form.workCenterId);
}
}
done();
},
@ -399,10 +411,6 @@ 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)) {
loading();
return this.$message.error('请选择证书类型');

@ -22,12 +22,20 @@
@sort-change="sortChange"
>
<template #menu-left>
<el-button type="primary" @click="handleAdd" v-if="permission.InspectionTemplate_add"> </el-button>
<el-button type="primary" @click="handleSet" v-if="permission.InspectionTemplate_setType">批量设置分类</el-button>
<el-button type="primary" @click="handleAdd" v-if="permission.InspectionTemplate_add"
> </el-button
>
<el-button type="primary" @click="handleSet" v-if="permission.InspectionTemplate_setType"
>批量设置分类</el-button
>
</template>
<template #menu="{ row }">
<el-button type="text" @click="editRow(row)" v-if="permission.InspectionTemplate_edit">修改</el-button>
<el-button type="text" @click="deleteRow(row)" v-if="permission.InspectionTemplate_delete">删除</el-button>
<el-button type="text" @click="editRow(row)" v-if="permission.InspectionTemplate_edit"
>修改</el-button
>
<el-button type="text" @click="deleteRow(row)" v-if="permission.InspectionTemplate_delete"
>删除</el-button
>
</template>
<template #userName="{ row }">
{{ row.updateMan.userName }}
@ -58,8 +66,7 @@
</el-col>
<el-col :span="12">
<el-form-item label="分类" prop="category">
<el-select v-model="formData.category" filterable
clearable>
<el-select v-model="formData.category" filterable clearable>
<el-option
v-for="item in typeData"
:key="item.id"
@ -71,10 +78,9 @@
</el-col>
</el-row>
</el-form>
<div v-if="title == '新增'">
<div v-if="title == '新增' || title == '修改'">
<el-button type="primary" @click="insertEvent()">插入一行</el-button>
<el-button plain type="danger" @click="remove">删除选择行</el-button>
<!-- <el-button type="primary" @click="handleSave">保存</el-button> -->
</div>
<div style="margin-top: 20px">
<el-table :data="tidList" @selection-change="selectionChangeProject" @select="selectChange">
@ -104,8 +110,7 @@
</el-table-column>
<el-table-column label="标准" prop="standardId">
<template #default="scope">
<el-select v-model="scope.row.standardId" filterable
clearable>
<el-select v-model="scope.row.standardId" filterable clearable>
<el-option
v-for="item in standardList"
:key="item.id"
@ -127,8 +132,7 @@
<el-dialog title="批量设置分类" append-to-body v-model="setDialog" width="500px">
<el-form ref="typeForm" :rules="setRules" :model="setData">
<el-form-item label="分类" prop="category">
<el-select v-model="setData.category" filterable
clearable>
<el-select v-model="setData.category" filterable clearable>
<el-option
v-for="item in typeData"
:key="item.id"
@ -751,8 +755,14 @@ export default {
editRow(row) {
getDetail({ id: row.id }).then(res => {
this.formData = res.data.data;
this.title = '编辑';
this.title = '修改';
this.tidList = res.data.data.detailList;
if (this.tidList.length > 0) {
this.tidList.map(item => {
item.inspectionItemId = item.inspectionItemId+''
item.inspectionTemplateId = item.inspectionTemplateId+''
});
}
this.showDialog = true;
});
},

@ -128,6 +128,7 @@ export default {
gridBtn: false,
searchMenuPosition: 'right',
align: 'center',
searchLabelWidth: 'auto',
column: [
{
label: '零件',

Loading…
Cancel
Save