生产问题修改

dev-scheduling
zhangdi 2 months ago
parent 0466382569
commit 54daedb764
  1. 9
      src/api/processManagement/procepssPlanning.js
  2. 22
      src/api/productionManagement/workReportingManagement.js
  3. 6
      src/views/processManagement/components/processMainte/partDetails.vue
  4. 8
      src/views/processManagement/procepssPlanning.vue
  5. 26
      src/views/processManagement/taskProcessing.vue
  6. 4
      src/views/productionManagement/shortageApplication/components/declareAdd.vue
  7. 326
      src/views/productionManagement/workReportingManagement/components/orderReporting.vue
  8. 169
      src/views/productionManagement/workReportingManagement/components/wordReporting.vue
  9. 23
      src/views/productionManagement/workReportingManagement/components/workReportingLog.vue
  10. 7
      src/views/productionManagement/workReportingManagement/index.vue

@ -31,3 +31,12 @@ export const periodOfValidity = params => {
params, params,
}); });
}; };
// 获取跳转链接 /dsPart/getPdmDocLink
export const getPdmDocLink = params => {
return request({
url: '/blade-desk/dsPart/getPdmDocLink',
method: 'get',
params,
});
};

@ -57,3 +57,25 @@ export const shiftTransfer = (data) => {
data:data data:data
}); });
}; };
// 订单调整 列表
export const queryUnfinished = (current, size,params) => {
return request({
url: '/blade-desk/disTasking/queryUnfinished',
method: 'get',
params: {
...params,
current,
size,
},
});
};
// 订单调整处理
export const markComplete = (data) => {
return request({
url: '/blade-desk/disTasking/markComplete',
method: 'post',
data:data
});
};

@ -28,9 +28,9 @@
</el-tabs> </el-tabs>
<div v-show="activeNameTab === '1'"> <div v-show="activeNameTab === '1'">
<el-card class="box-card-info"> <el-card class="box-card">
<div slot="header" class="clearfix"> <div slot="header" class="clearfix">
<span style="font-size: 20px">基本信息</span> <span style="font-size: 16px">基本信息</span>
</div> </div>
<el-form <el-form
ref="testForm" ref="testForm"
@ -442,7 +442,7 @@
</el-card> </el-card>
<el-card class="box-card" v-if="dataTable.length > 0" style="margin-top: 24px"> <el-card class="box-card" v-if="dataTable.length > 0" style="margin-top: 24px">
<div slot="header" class="clearfix"> <div slot="header" class="clearfix">
<span style="font-size: 20px">子件信息</span> <span style="font-size: 16px">子件信息</span>
</div> </div>
<avue-crud <avue-crud
:option="option" :option="option"

@ -77,7 +77,7 @@
import { mapGetters } from 'vuex'; import { mapGetters } from 'vuex';
import indateDailog from './components/indateDailog.vue'; import indateDailog from './components/indateDailog.vue';
import { getList, getExpire } from '@/api/processManagement/procepssPlanning'; import { getList, getExpire,getPdmDocLink } from '@/api/processManagement/procepssPlanning';
import { getDictionary } from '@/api/system/dict'; import { getDictionary } from '@/api/system/dict';
import partDetails from './components/processMainte/partDetails.vue'; import partDetails from './components/processMainte/partDetails.vue';
export default { export default {
@ -271,7 +271,11 @@ export default {
methods: { methods: {
openPage(row){ openPage(row){
window.open(row.docLink) // window.open(row.docLink)
getPdmDocLink({partCode:row.partCode}).then(res=>{
console.log(99999,res)
window.open(res.data.data)
})
}, },
cancel() { cancel() {
this.showPartDetails = false; this.showPartDetails = false;

@ -49,12 +49,7 @@
v-if="scope.row.taskStatus == 2" v-if="scope.row.taskStatus == 2"
>完成</el-button >完成</el-button
> >
<el-button <el-button type="primary" link @click="setBathCrew(scope.row)">转派</el-button>
type="primary"
link
@click="setBathCrew(scope.row)"
>转派</el-button
>
</template> </template>
<template #name="{ row }"> <template #name="{ row }">
@ -66,6 +61,9 @@
<i :class="row.source" /> <i :class="row.source" />
</div> </div>
</template> </template>
<template #partCode="scope">
<span class="partSel" @dblclick="openPage(scope.row)">{{scope.row.partCode}}</span>
</template>
</avue-crud> </avue-crud>
<!-- 转派 --> <!-- 转派 -->
<assignDaialog <assignDaialog
@ -122,6 +120,8 @@ import reworkDsPartIndex from './components/processMainte/reworkDsPartIndex.vue'
import addTestDialog from './components/addTestDialog.vue'; import addTestDialog from './components/addTestDialog.vue';
import { getList, completeSet, taskReception } from '@/api/processManagement/taskProcessing'; import { getList, completeSet, taskReception } from '@/api/processManagement/taskProcessing';
import partDetails from './components/processMainte/partDetails.vue'; import partDetails from './components/processMainte/partDetails.vue';
import { getPdmDocLink } from '@/api/processManagement/procepssPlanning';
export default { export default {
components: { components: {
assignDaialog, assignDaialog,
@ -385,6 +385,13 @@ export default {
}; };
}, },
methods: { methods: {
openPage(row) {
// window.open(row.docLink)
getPdmDocLink({ partCode: row.partCode }).then(res => {
console.log(99999, res);
window.open(res.data.data);
});
},
// //
addFn() { addFn() {
this.isTestOpen = true; this.isTestOpen = true;
@ -499,3 +506,10 @@ export default {
}, },
}; };
</script> </script>
<style lang="scss" scoped>
.partSel{
cursor: pointer;
color:#284c89 !important;
font-weight: 600;
}
</style>

@ -302,11 +302,13 @@ export default {
partCode: row.prtno, // partCode: row.prtno, //
batchNo: row.splcode, // batchNo: row.splcode, //
quaLevel: row.prtlotno, // quaLevel: row.prtlotno, //
quantity: row.quantity, // quantity: Number(row.quantity), //
remark: row.remark, // remark: row.remark, //
keeper: row.warctlr, // keeper: row.warctlr, //
planMan: row.schemer, // planMan: row.schemer, //
locationNo: row.warlocno, // locationNo: row.warlocno, //
deptNo:row.deptno,
warnNo:row.warno,
}); });
}); });

@ -0,0 +1,326 @@
<template>
<div>
<avue-crud
:option="option"
:table-loading="loading"
:data="data"
v-model="form"
v-model:page="page"
ref="crud"
@row-del="rowDel"
@search-change="searchChange"
@search-reset="searchReset"
@selection-change="selectionChange"
@current-change="currentChange"
@size-change="sizeChange"
@refresh-change="refreshChange"
@on-load="onLoad"
>
<template #menu-left>
<el-button type="primary" @click="handleFn">处理</el-button>
</template>
<template #menu-right> </template>
<template #menu="{ row }"> </template>
<template #heatTreat="scope"> </template>
</avue-crud>
</div>
</template>
<script>
import {
queryUnfinished,
markComplete,
} from '@/api/productionManagement/workReportingManagement.js';
export default {
components: {},
data() {
return {
form: {},
selectionList: [],
query: {},
loading: false,
page: {
pageSize: 10,
currentPage: 1,
total: 0,
},
option: {
columnSort: true,
tip: false,
height: 'auto',
align: 'center',
calcHeight: 32,
simplePage: false,
searchShow: true,
searchMenuSpan: 6,
searchIcon: true,
searchIndex: 3,
tree: false,
border: true,
index: false,
selection: true,
viewBtn: false,
delBtn: false,
editBtn: false,
addBtnIcon: ' ',
viewBtnIcon: ' ',
delBtnIcon: ' ',
editBtnIcon: ' ',
addBtn: false,
labelWidth: 120,
searchLabelWidth: 'auto',
menu: true,
menuWidth: 200,
dialogWidth: 600,
dialogClickModal: false,
searchEnter: true,
excelBtn: true,
gridBtn: false,
searchShowBtn: false,
showOverflowTooltip: true,
searchLabelPosition: 'left',
searchGutter: 24,
searchSpan: 6,
menuAlign: 'left',
gridBtn: false,
searchMenuPosition: 'right',
menu: false,
column: [
{
label: '车间订单号',
prop: 'woCode',
span: 24,
overflow: true,
search: true,
width: 150,
},
{
label: '计划下达时间',
prop: 'cardNo',
span: 24,
overflow: true,
search: false,
width: 150,
},
{
label: '零件号',
prop: 'partCode',
span: 24,
overflow: true,
search: true,
width: 150,
},
{
label: '零件名称',
prop: 'partCode',
span: 24,
overflow: true,
search: true,
width: 150,
},
{
label: '批次号',
prop: 'batchNo',
span: 24,
overflow: true,
search: true,
width: 150,
},
{
label: '流程卡号',
prop: 'batchNo',
span: 24,
overflow: true,
search: true,
width: 150,
},
// {
// label: '',
// prop: 'ppsName',
// span: 24,
// overflow: true,
// search: false,
// },
{
label: '生产数量',
prop: 'workQty',
span: 24,
overflow: true,
search: false,
width: 150,
},
{
label: '额定镀层',
prop: 'workQty',
span: 24,
overflow: true,
search: false,
width: 150,
},
{
label: '旧班组',
prop: 'oriMakeTeam',
span: 24,
overflow: true,
search: false,
width: 150,
},
{
label: '新班组',
prop: 'makeTeam',
span: 24,
overflow: true,
search: false,
width: 150,
},
{
label: '创建时间',
prop: 'updateTime',
span: 24,
overflow: true,
search: false,
width: 150,
},
{
label: '创建人',
prop: 'adjustName',
span: 24,
overflow: true,
search: false,
width: 150,
},
],
},
data: [],
};
},
methods: {
//
handleFn() {
// if (this.selectionList.length <= 0) {
// return this.$message.warning('');
// }
const woaIdList = this.selectionList.map(item => item.id);
// const woaIdList = this.$refs.myTable.selection().id;
if (woaIdList.length === 0) {
return this.$message.warning('请选择数据');
}
this.$confirm('请确认此操作!', '确认消息', {
confirmButtonText: '确认',
cancelButtonText: '取消',
type: 'warning',
}).then(() => {
markComplete({
woaIdList,
}).then(() => {
this.$message.success('操作成功');
this.refreshChange();
});
});
},
rowSave(row, done, loading) {
// addPersonAbility(row).then(
// () => {
// this.onLoad(this.page);
// this.$message({
// type: 'success',
// message: '!',
// });
// done();
// },
// error => {
// window.console.log(error);
// loading();
// }
// );
},
rowUpdate(row, index, done, loading) {
// updatePersonAbility(row).then(
// () => {
// this.onLoad(this.page);
// this.$message({
// type: 'success',
// message: '!',
// });
// done();
// },
// error => {
// window.console.log(error);
// loading();
// }
// );
},
rowDel(row) {
this.$confirm('确定将选择数据删除?', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning',
})
.then(() => {
// return removePersonAbility(row.id);
})
.then(() => {
this.onLoad(this.page);
this.$message({
type: 'success',
message: '操作成功!',
});
});
},
searchReset() {
this.query = {};
this.onLoad(this.page);
},
searchChange(params, done) {
this.query = params;
this.page.currentPage = 1;
this.onLoad(this.page, params);
done();
},
selectionChange(list) {
this.selectionList = list;
},
selectionClear() {
this.selectionList = [];
this.$refs.crud.toggleSelection();
},
currentChange(currentPage) {
this.page.currentPage = currentPage;
},
sizeChange(pageSize) {
this.page.pageSize = pageSize;
},
refreshChange() {
this.onLoad(this.page, this.query);
},
handleChange(file, fileList) {
// proxy.$Export.xlsx(file.raw).then((data) => {
// data.value = data.results;
// });
this.$message({
type: 'success',
message: '操作成功!',
});
},
onLoad(page, params = {}) {
this.loading = true;
queryUnfinished(page.currentPage, page.pageSize, Object.assign(params, this.query)).then(
res => {
this.data = res.data.data.records;
this.loading = false;
this.page.total = res.data.data.total;
this.selectionClear();
}
);
},
},
mounted() {},
};
</script>
d

@ -50,7 +50,46 @@
<el-button type="text" @click="handleDetail(row)">详情</el-button> <el-button type="text" @click="handleDetail(row)">详情</el-button>
</template> </template>
<template #heatTreat="scope"> </template> <template #tsId="scope">
<jhSelect
:value="scope.row.tsId"
@input="val => (scope.row.tsId = val)"
placeholder="请搜索选择"
api-url="/blade-desk/BA/TeamSet/list?descs=TS_CODE"
echo-api="/blade-desk/BA/TeamSet/list?descs=TS_CODE"
echoParamsKey="ids"
echo-method="get"
api-method="get"
list-key="records"
total-key="total"
label-key="tsName"
value-key="id"
search-key="id"
:debounce-time="500"
@change="(value, item) => changeTs(value, item, scope.row)"
/>
</template>
<template #userId="scope">
<jhSelect
v-if="scope.row.userId!='-1'"
:value="scope.row.userId"
@input="val => (scope.row.userId = val)"
placeholder="请搜索选择"
api-url="/blade-system/user/page"
echo-api="/blade-system/user/page"
echoParamsKey="ids"
echo-method="get"
api-method="get"
list-key="records"
total-key="total"
label-key="realName"
value-key="id"
search-key="id"
:debounce-time="500"
@change="(value, item) => changeUser(value, item, scope.row)"
/>
<div v-else>-</div>
</template>
</avue-crud> </avue-crud>
<!-- 详情 --> <!-- 详情 -->
@ -106,11 +145,7 @@
</template> </template>
<script> <script>
import { getTeamSetList } from '@/api/processManagement/taskProcessing';
import { getRoleUserList } from '@/api/processManagement/taskDispatch';
import { import {
getList,
getRecordList,
getDataByCardNo, getDataByCardNo,
getDataByWpId, getDataByWpId,
uploadPlan, uploadPlan,
@ -228,25 +263,25 @@ export default {
span: 24, span: 24,
overflow: true, overflow: true,
search: false, search: false,
cell: true, // cell: true,
remote: true, // remote: true,
filterable: true, // filterable: true,
type: 'select', // type: 'select',
dicUrl: '/blade-desk/BA/TeamSet/list?descs=TS_CODE', // dicUrl: '/blade-desk/BA/TeamSet/list?descs=TS_CODE',
props: { // props: {
label: 'tsName', // label: 'tsName',
value: 'id', // value: 'id',
res: 'data.records', // res: 'data.records',
}, // },
onChange: val => { // onChange: val => {
console.log('val==========', val); // console.log('val==========', val);
// console.log(value, row); // // console.log(value, row);
this.onChangeData(val.item, val.row, 'tsId'); // this.onChangeData(val.item, val.row, 'tsId');
}, // },
}, },
{ {
label: '现接收人', label: '现接收人',
prop: 'userName', prop: 'userId',
span: 24, span: 24,
overflow: true, overflow: true,
search: false, search: false,
@ -274,26 +309,86 @@ export default {
makeTeam: [{ required: true, message: '请选择新班组', trigger: 'blur' }], makeTeam: [{ required: true, message: '请选择新班组', trigger: 'blur' }],
}, },
tableData: [], tableData: [],
changData: [],
oldProcessData: [],
}; };
}, },
mounted() { mounted() {},
// this.getTeamSetList();
this.getRoleUserList();
},
methods: { methods: {
// //
onChangeData(item, row, type) { changeTs(value, item, row) {
if (type == 'tsId') { if (item == undefined) {
console.log(item); return false;
}
row.tsName = item.tsName; row.tsName = item.tsName;
let updatData = this.oldProcessData.find(item => item.wpId == row.wpId);
const existingIndex = this.changData.findIndex(c => c.wpId === row.wpId);
console.log(updatData, '班组选择');
if (existingIndex !== -1) {
this.changData[existingIndex].makeTeam = row.tsName;
this.changData[existingIndex].workPlanLog.oriMakeTeam = updatData.tsName
this.changData[existingIndex].workPlanLog.makeTeam = row.tsName
} else {
this.changData.push({
...row,
makeTeam: row.tsId,
receiveMan: row.userId,
id: updatData.wpId,
ppsId: updatData.ppsId,
workPlanLog: {
woId: updatData.woId,
woCode: updatData.woCode,
cardNo: updatData.cardNo,
partCode: updatData.partCode,
ppsName: updatData.ppsName,
workQty: updatData.workQty,
oriMakeTeam: updatData.tsName,
makeTeam: row.tsName,
batchNo: updatData.batchNo,
// oriReceiveMan: updatData.,
// receiveMan: updatData.,
},
});
} }
}, },
// //
getRoleUserList() { changeUser(value, item, row) {
getRoleUserList({ current: 1, size: 9999999 }).then(res => { if (item == undefined) {
this.userOptions = res.data.data.records; return false;
}
row.userName = item.realName;
let updatData = this.oldProcessData.find(item => item.wpId == row.wpId);
const existingIndex = this.changData.findIndex(c => c.wpId === row.wpId);
debugger
if (existingIndex !== -1) {
this.changData[existingIndex].receiveMan = row.userId;
this.changData[existingIndex].workPlanLog.receiveMan=row.userName
this.changData[existingIndex].workPlanLog.oriReceiveMan=updatData.userName
} else {
this.changData.push({
...row,
makeTeam: row.tsId,
receiveMan: row.userId,
id: updatData.wpId,
ppsId: updatData.ppsId,
workPlanLog: {
woId: updatData.woId,
woCode: updatData.woCode,
cardNo: updatData.cardNo,
partCode: updatData.partCode,
ppsName: updatData.ppsName,
workQty: updatData.workQty,
batchNo: updatData.batchNo,
// oriMakeTeam: updatData.tsName,
// makeTeam: row.tsName,
oriReceiveMan: updatData.userName,
receiveMan: row.userName,
},
}); });
}
}, },
// //
handleDetail(row) { handleDetail(row) {
this.detailDialog = true; this.detailDialog = true;
@ -311,9 +406,9 @@ export default {
if (valid) { if (valid) {
this.saveLoading = true; this.saveLoading = true;
shiftTransfer({ shiftTransfer({
woId: this.woId, woId: this.oldProcessData[0].woId,
oldTsId: this.teamForm.tsId, // oldTsId: this.teamForm.tsId,
newTsId: this.teamForm.tsId, newTsId: this.teamForm.makeTeam,
}) })
.then(res => { .then(res => {
this.saveLoading = false; this.saveLoading = false;
@ -329,7 +424,7 @@ export default {
// //
saveUpdate() { saveUpdate() {
this.saveLoading = true; this.saveLoading = true;
uploadPlan(this.data) uploadPlan({ workPlanList: this.changData })
.then(res => { .then(res => {
this.saveLoading = false; this.saveLoading = false;
}) })
@ -349,6 +444,8 @@ export default {
item.tsId = item.tsId + ''; item.tsId = item.tsId + '';
item.userId = item.userId + ''; item.userId = item.userId + '';
}); });
this.oldProcessData = JSON.parse(JSON.stringify(this.data));
this.searchForm.cardNo = ''
}) })
.catch(() => { .catch(() => {
this.loading = false; this.loading = false;

@ -64,7 +64,7 @@ export default {
editBtnIcon: ' ', editBtnIcon: ' ',
addBtn: false, addBtn: false,
labelWidth: 120, labelWidth: 120,
searchLabelWidth: 120, searchLabelWidth: 'auto',
menu: true, menu: true,
menuWidth: 200, menuWidth: 200,
dialogWidth: 600, dialogWidth: 600,
@ -80,34 +80,39 @@ export default {
menuAlign: 'left', menuAlign: 'left',
gridBtn: false, gridBtn: false,
searchMenuPosition: 'right', searchMenuPosition: 'right',
menu:false,
column: [ column: [
{ {
label: '车间订单', label: '车间订单',
prop: 'woCode', prop: 'woCode',
span: 24, span: 24,
overflow: true, overflow: true,
search: false, search: true,
width:150,
}, },
{ {
label: '流程卡号', label: '流程卡号',
prop: 'cardNo', prop: 'cardNo',
span: 24, span: 24,
overflow: true, overflow: true,
search: false, search: true,
width:150,
}, },
{ {
label: '零件号', label: '零件号',
prop: 'partCode', prop: 'partCode',
span: 24, span: 24,
overflow: true, overflow: true,
search: false, search: true,
width:150,
}, },
{ {
label: '批次号', label: '批次号',
prop: 'batchNo', prop: 'batchNo',
span: 24, span: 24,
overflow: true, overflow: true,
search: false, search: true,
width:150,
}, },
{ {
label: '当前工序', label: '当前工序',
@ -115,6 +120,7 @@ export default {
span: 24, span: 24,
overflow: true, overflow: true,
search: false, search: false,
width:150,
}, },
{ {
label: '数量', label: '数量',
@ -122,6 +128,7 @@ export default {
span: 24, span: 24,
overflow: true, overflow: true,
search: false, search: false,
width:150,
}, },
{ {
label: '原班组', label: '原班组',
@ -129,6 +136,7 @@ export default {
span: 24, span: 24,
overflow: true, overflow: true,
search: false, search: false,
width:150,
}, },
{ {
label: '现班组', label: '现班组',
@ -136,6 +144,7 @@ export default {
span: 24, span: 24,
overflow: true, overflow: true,
search: false, search: false,
width:150,
}, },
{ {
label: '原接收人', label: '原接收人',
@ -143,6 +152,7 @@ export default {
span: 24, span: 24,
overflow: true, overflow: true,
search: false, search: false,
width:150,
}, },
{ {
label: '现接收人', label: '现接收人',
@ -150,6 +160,7 @@ export default {
span: 24, span: 24,
overflow: true, overflow: true,
search: false, search: false,
width:150,
}, },
{ {
label: '调整人', label: '调整人',
@ -157,6 +168,7 @@ export default {
span: 24, span: 24,
overflow: true, overflow: true,
search: false, search: false,
width:150,
}, },
{ {
label: '调整时间', label: '调整时间',
@ -164,6 +176,7 @@ export default {
span: 24, span: 24,
overflow: true, overflow: true,
search: false, search: false,
width:150,
}, },
], ],
}, },

@ -4,6 +4,7 @@
<el-tabs v-model="tabPosition" class="demo-tabs"> <el-tabs v-model="tabPosition" class="demo-tabs">
<el-tab-pane label="报工调整" name="workReporting"></el-tab-pane> <el-tab-pane label="报工调整" name="workReporting"></el-tab-pane>
<el-tab-pane label="报工调整记录" name="workReportingLog"></el-tab-pane> <el-tab-pane label="报工调整记录" name="workReportingLog"></el-tab-pane>
<el-tab-pane label="订单调整" name="orderReporting"></el-tab-pane>
</el-tabs> </el-tabs>
<!-- 报工调整 --> <!-- 报工调整 -->
@ -12,6 +13,8 @@
<!-- 报工调整记录 --> <!-- 报工调整记录 -->
<workReportingLog v-if="tabPosition == 'workReportingLog'"></workReportingLog> <workReportingLog v-if="tabPosition == 'workReportingLog'"></workReportingLog>
<!-- 订单调整 -->
<orderReporting v-if="tabPosition == 'orderReporting'"></orderReporting>
</basic-container> </basic-container>
</template> </template>
@ -28,9 +31,9 @@ import {
} from '@/api/productionManagement/workReportingManagement'; } from '@/api/productionManagement/workReportingManagement';
import wordReporting from './components/wordReporting.vue'; import wordReporting from './components/wordReporting.vue';
import workReportingLog from './components/workReportingLog.vue'; import workReportingLog from './components/workReportingLog.vue';
import orderReporting from './components/orderReporting.vue';
export default { export default {
components: { wordReporting, workReportingLog }, components: { wordReporting, workReportingLog,orderReporting },
data() { data() {
return { return {
tableData: [], tableData: [],

Loading…
Cancel
Save