生产问题修改

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,
});
};
// 获取跳转链接 /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
});
};
// 订单调整 列表
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>
<div v-show="activeNameTab === '1'">
<el-card class="box-card-info">
<el-card class="box-card">
<div slot="header" class="clearfix">
<span style="font-size: 20px">基本信息</span>
<span style="font-size: 16px">基本信息</span>
</div>
<el-form
ref="testForm"
@ -442,7 +442,7 @@
</el-card>
<el-card class="box-card" v-if="dataTable.length > 0" style="margin-top: 24px">
<div slot="header" class="clearfix">
<span style="font-size: 20px">子件信息</span>
<span style="font-size: 16px">子件信息</span>
</div>
<avue-crud
:option="option"

@ -77,7 +77,7 @@
import { mapGetters } from 'vuex';
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 partDetails from './components/processMainte/partDetails.vue';
export default {
@ -271,7 +271,11 @@ export default {
methods: {
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() {
this.showPartDetails = false;

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

@ -302,11 +302,13 @@ export default {
partCode: row.prtno, //
batchNo: row.splcode, //
quaLevel: row.prtlotno, //
quantity: row.quantity, //
quantity: Number(row.quantity), //
remark: row.remark, //
keeper: row.warctlr, //
planMan: row.schemer, //
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>
</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>
<!-- 详情 -->
@ -106,11 +145,7 @@
</template>
<script>
import { getTeamSetList } from '@/api/processManagement/taskProcessing';
import { getRoleUserList } from '@/api/processManagement/taskDispatch';
import {
getList,
getRecordList,
getDataByCardNo,
getDataByWpId,
uploadPlan,
@ -228,25 +263,25 @@ export default {
span: 24,
overflow: true,
search: false,
cell: true,
remote: true,
filterable: true,
type: 'select',
dicUrl: '/blade-desk/BA/TeamSet/list?descs=TS_CODE',
props: {
label: 'tsName',
value: 'id',
res: 'data.records',
},
onChange: val => {
console.log('val==========', val);
// console.log(value, row);
this.onChangeData(val.item, val.row, 'tsId');
},
// cell: true,
// remote: true,
// filterable: true,
// type: 'select',
// dicUrl: '/blade-desk/BA/TeamSet/list?descs=TS_CODE',
// props: {
// label: 'tsName',
// value: 'id',
// res: 'data.records',
// },
// onChange: val => {
// console.log('val==========', val);
// // console.log(value, row);
// this.onChangeData(val.item, val.row, 'tsId');
// },
},
{
label: '现接收人',
prop: 'userName',
prop: 'userId',
span: 24,
overflow: true,
search: false,
@ -274,26 +309,86 @@ export default {
makeTeam: [{ required: true, message: '请选择新班组', trigger: 'blur' }],
},
tableData: [],
changData: [],
oldProcessData: [],
};
},
mounted() {
// this.getTeamSetList();
this.getRoleUserList();
},
mounted() {},
methods: {
//
onChangeData(item, row, type) {
if (type == 'tsId') {
console.log(item);
changeTs(value, item, row) {
if (item == undefined) {
return false;
}
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() {
getRoleUserList({ current: 1, size: 9999999 }).then(res => {
this.userOptions = res.data.data.records;
//
changeUser(value, item, row) {
if (item == undefined) {
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) {
this.detailDialog = true;
@ -311,9 +406,9 @@ export default {
if (valid) {
this.saveLoading = true;
shiftTransfer({
woId: this.woId,
oldTsId: this.teamForm.tsId,
newTsId: this.teamForm.tsId,
woId: this.oldProcessData[0].woId,
// oldTsId: this.teamForm.tsId,
newTsId: this.teamForm.makeTeam,
})
.then(res => {
this.saveLoading = false;
@ -329,7 +424,7 @@ export default {
//
saveUpdate() {
this.saveLoading = true;
uploadPlan(this.data)
uploadPlan({ workPlanList: this.changData })
.then(res => {
this.saveLoading = false;
})
@ -349,6 +444,8 @@ export default {
item.tsId = item.tsId + '';
item.userId = item.userId + '';
});
this.oldProcessData = JSON.parse(JSON.stringify(this.data));
this.searchForm.cardNo = ''
})
.catch(() => {
this.loading = false;

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

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

Loading…
Cancel
Save