调度任务处理和返工订单、计划页面问题修改

dev-scheduling
zhangdi 6 hours ago
parent 71956a4937
commit 75865f417c
  1. 3
      src/api/productionManagement/WIPChange.js
  2. 9
      src/api/productionManagement/reworkOrder.js
  3. 25
      src/api/productionManagement/reworkPlan.js
  4. 10
      src/api/system/role.js
  5. 20
      src/views/productionManagement/WIPChange/components/assignDaialog.vue
  6. 8
      src/views/productionManagement/WIPChange/components/taskHandleDialog.vue
  7. 46
      src/views/productionManagement/WIPChange/components/taskHandleQuality.vue
  8. 1
      src/views/productionManagement/WIPChange/index.vue
  9. 2
      src/views/productionManagement/productionMonitoring/index.vue
  10. 245
      src/views/productionManagement/reworkOrder/components/reworkDetails.vue
  11. 64
      src/views/productionManagement/reworkOrder/index.vue
  12. 119
      src/views/productionManagement/reworkPlan/index.vue

@ -37,4 +37,5 @@ export const taskCompleteOrder = (data) => {
method: 'post',
data
});
};
};

@ -37,4 +37,13 @@ export const completeOrder = (params) => {
method: 'post',
data: params,
});
};
// 质量任务处理 dispatchMan
export const taskCompleteOrder = (data) => {
return request({
url: '/blade-desk/disTasking/taskCompleteOrder',
method: 'post',
data
});
};

@ -0,0 +1,25 @@
import request from '@/axios';
// 返工计划列表数据 /ReworkProcess/loadReworkPlan
export const getList = (current, size, params) => {
return request({
url: '/blade-desk/ReworkProcess/loadReworkPlan',
method: 'get',
params: {
current,
size,
...params,
},
});
};
// 返工计划详情
export const getDetail = (params) => {
return request({
url: '/blade-desk/ReworkProcess/reviewFormMess',
method: 'get',
params: {
...params,
},
});
};

@ -94,3 +94,13 @@ export const getRoleAlias = () => {
params: {},
});
};
// 按照角色别名查询数据
export const getUserByRoleAlias = (params) => {
return request({
url: '/blade-system/user/list-all-by-role-alias',
method: 'get',
params,
});
};

@ -3,7 +3,7 @@
<el-form ref="form" :model="formData" :rules="rules" label-width="80px" class="vd-form-row">
<el-row>
<el-col :span="24">
<el-form-item label="调度员" prop="disAssignMan">
<el-form-item label="调度员" prop="disAssignMan">
<el-select v-model="formData.disAssignMan" placeholder="请选择" clearable filterable>
<el-option
v-for="item in options"
@ -18,7 +18,7 @@
</el-row>
<el-row>
<el-col :span="24">
<el-form-item label="处理意见" prop="resolution">
<el-form-item label="处理意见" prop="resolution" label-width="90px">
<el-input v-model="formData.resolution" type="textarea" />
</el-form-item>
</el-col>
@ -37,6 +37,8 @@
import { setDispatch, getRoleUserList } from '@/api/processManagement/taskDispatch';
import { disTechnician } from '@/api/productionManagement/WIPChange.js';
import { getUserByRoleAlias } from '@/api/system/role';
export default {
props: {
@ -55,7 +57,9 @@ export default {
openShow: false,
formData: { disAssignMan: null, resolution: null, ddtIdList: [] },
rules: {
disAssignMan: [{ required: true }],
disAssignMan: [
{ required: true, message: '请选择调度员', trigger: ['change', 'submit'] }
],
},
options: [],
};
@ -66,8 +70,11 @@ export default {
},
methods: {
getRoleUserList() {
getRoleUserList({ current: 1, size: 9999999 }).then(res => {
this.options = res.data.data.records;
// getRoleUserList({ current: 1, size: 9999999 }).then(res => {
// this.options = res.data.data.records;
// });
getUserByRoleAlias({roleAlias:'diaodu'}).then(res => {
this.options = res.data.data;
});
},
submit() {
@ -76,7 +83,8 @@ export default {
let query = {
ddtIdList: [this.rowItem.id],
resolution: this.formData.resolution,
disAssignMan: this.formData.disAssignMan,
// disAssignMan: this.formData.disAssignMan,
dispatchMan: this.formData.disAssignMan,
};
disTechnician(query).then(res => {
this.$message.success('操作成功');

@ -9,14 +9,14 @@
>
<el-row>
<el-col :span="24">
<el-form-item label="审理单号" prop="rsCode">
<el-form-item label="审理单号" prop="rsCode" label-width="90px">
<el-input v-model="formData.rsCode" type="text" />
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<el-form-item label="处理意见" prop="handleResult">
<el-form-item label="处理意见" prop="handleResult" label-width="90px">
<el-input v-model="formData.handleResult" type="textarea" :rows="3" />
</el-form-item>
</el-col>
@ -51,8 +51,8 @@ export default {
openShow: false,
formData: {},
rules: {
rsCode: [{ required: true }],
handleResult: [{ required: true }],
rsCode: [{ required: true, message: '请输入审理单号', trigger: ['change', 'submit'] }],
handleResult: [{ required: true, message: '请输入审理意见', trigger: ['change', 'submit'] }],
},
};
},

@ -6,27 +6,27 @@
width="30%"
@close="closeDialog"
>
<el-form ref="form" v-model="formData" :rules="rules" label-width="80px" class="vd-form-row">
<el-form-item label="订单是否继续" prop="rsCode" label-width="120px">
<el-form ref="form" :model="formData" :rules="rules">
<el-form-item label="订单是否继续" prop="rsCode" label-width="120px">
<el-radio-group v-model="formData.rsCode">
<el-radio label="是" />
<el-radio label="否" />
<el-radio label="是" value="是" />
<el-radio label="否" value="否" />
</el-radio-group>
</el-form-item>
<el-form-item label="处理意见" prop="handleResult">
<el-form-item label="处理意见" prop="handleResult" label-width="90px">
<el-input v-model="formData.handleResult" type="textarea" />
</el-form-item>
</el-form>
<template #footer>
<span class="dialog-footer">
<el-button @click="closeDialog"> </el-button>
<el-button type="primary" @click="submit" :loading="saveLoading">确定</el-button>
<el-button type="primary" @click="submitFn" :loading="saveLoading">确定</el-button>
</span>
</template>
</el-dialog>
</template>
<script>
import { getList, receiveOrder } from '@/api/productionManagement/reworkOrder';
import { getList, receiveOrder, taskCompleteOrder } from '@/api/productionManagement/reworkOrder';
import { taskComplete } from '@/api/productionManagement/WIPChange.js';
export default {
@ -44,10 +44,10 @@ export default {
return {
saveLoading: false,
openShow: false,
formData: { rsCode: null, handleResult: '' },
formData: { rsCode: '', handleResult: '' },
rules: {
rsCode: [{ required: true, message: '请选择', trigger: 'blur' }],
handleResult: [{ required: true, message: '请输入', trigger: 'blur' }],
rsCode: [{ required: true, message: '请选择', trigger: ['change', 'submit'] }],
handleResult: [{ required: true, message: '请输入', trigger: ['change', 'submit'] }],
},
};
},
@ -59,9 +59,10 @@ export default {
this.openShow = false;
this.$emit('closeDialog');
},
submit() {
submitFn() {
this.$refs.form.validate(valid => {
if (valid) {
this.saveLoading = true;
this.$confirm('请确认此操作', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
@ -70,15 +71,26 @@ export default {
.then(() => {
this.rowItem.rsCode = this.rowItem.rsCode;
this.rowItem.handleResult = this.rowItem.handleResult;
receiveOrder(this.rowItem).then(res => {
this.$message({
message: '操作成功',
type: 'success',
let query = {
ddtIdList: [this.rowItem.id], //ID
rsCode: this.rowItem.rsCode, //
handleResult: this.rowItem.handleResult, //
};
taskCompleteOrder(query)
.then(res => {
this.$message({
message: '操作成功',
type: 'success',
});
this.saveLoading = false;
this.closeDialog();
})
.catch(err => {
this.saveLoading = false;
});
this.closeDialog();
});
})
.catch(err => {
this.saveLoading = false;
this.$message.info(err.msg);
});
}

@ -9,7 +9,6 @@
ref="crud"
@search-change="searchChange"
@search-reset="searchReset"
@selection-change="selectionChange"
@current-change="currentChange"
@size-change="sizeChange"
@refresh-change="refreshChange"

@ -62,6 +62,8 @@
</template>
</el-dropdown>
</template>
</avue-crud>
<!-- 打印标签 -->
<el-dialog append-to-body v-model="printDialog" title="打印标签" width="20%">

@ -0,0 +1,245 @@
<template>
<el-dialog
title="详情"
append-to-body
:modelValue="openShow"
width="80%"
@close="closeDialog"
fullscreen
>
<avue-crud
:option="option"
:table-loading="loading"
:data="data"
v-model="form"
v-model:page="page"
ref="crud"
@search-change="searchChange"
@search-reset="searchReset"
@current-change="currentChange"
@size-change="sizeChange"
@refresh-change="refreshChange"
@on-load="onLoad"
>
<template #menu-left> </template>
<template #menu-right> </template>
<template #menu="{ row }"> </template>
<template #heatTreat="scope"> </template>
</avue-crud>
<template #footer>
<span class="dialog-footer">
<el-button @click="closeDialog"> </el-button>
</span>
</template>
</el-dialog>
</template>
<script>
import { getDetail } from '@/api/productionManagement/reworkPlan';
export default {
props: {
showDialog: {
type: Boolean,
default: false,
},
rowItem: {
type: Object,
default: () => ({}),
},
},
data() {
return {
openShow: false,
form: {},
selectionList: [],
query: {},
loading: false,
page: {
pageSize: 10,
currentPage: 1,
total: 0,
},
option: {
columnSort: true,
tip: false,
height: 'auto',
calcHeight: 32,
simplePage: false,
searchShow: true,
searchMenuSpan: 6,
searchIcon: true,
searchIndex: 3,
tree: false,
border: true,
index: true,
selection: false,
addBtn: false,
editBtn: false,
viewBtn: false,
delBtn: false,
editBtnText: '修改',
labelWidth: 120,
menuWidth: 80,
dialogWidth: 900,
dialogClickModal: false,
searchEnter: true,
excelBtn: false,
filterBtn: true,
searchShowBtn: false,
excelBtn: true,
showOverflowTooltip: true,
addBtnIcon: ' ',
viewBtnIcon: ' ',
delBtnIcon: ' ',
editBtnIcon: ' ',
gridBtn: false,
searchLabelPosition: 'left',
searchGutter: 24,
searchSpan: 6,
menuAlign: 'left',
gridBtn: false,
searchMenuPosition: 'right',
align: 'center',
menu: false,
header: false,
column: [
{
label: '审理单号',
prop: 'sheetNo',
search: false,
sortable: true,
span: 12,
width: 150,
},
{
label: '责任零件',
prop: 'p5layer1',
search: false,
sortable: true,
span: 12,
width: 150,
},
{
label: '责任批号',
prop: 'p5layer3',
search: false,
sortable: true,
span: 12,
width: 150,
},
{
label: '工序号',
prop: 'process',
search: false,
sortable: true,
span: 12,
width: 150,
},
{
label: '工序名字',
prop: 'processName',
search: false,
sortable: true,
span: 12,
width: 150,
},
{
label: '上级编号',
prop: 'precode',
search: false,
sortable: true,
span: 12,
width: 150,
},
{
label: '返修路线',
prop: 'reworkLine',
search: false,
sortable: true,
span: 12,
width: 150,
},
{
label: '发生单位',
prop: 'deptcode',
search: false,
sortable: true,
span: 12,
width: 150,
},
{
label: '责任部门',
prop: 'layer1',
search: false,
sortable: true,
span: 12,
width: 150,
},
{
label: '审理人',
prop: 'usercode',
search: false,
sortable: true,
span: 12,
width: 150,
},
{
label: '零件号',
prop: 'prtno',
search: false,
sortable: true,
span: 12,
width: 150,
},
{
label: '槽号槽名',
prop: 'lotno',
search: false,
sortable: true,
span: 12,
width: 150,
},
{
label: '备注',
prop: 'memo',
search: false,
sortable: true,
span: 12,
width: 150,
},
{
label: '处理意见',
prop: 'dispose',
search: false,
sortable: true,
span: 12,
width: 150,
},
],
},
data: [],
};
},
mounted() {
this.openShow = this.showDialog;
},
methods: {
init() {
let query = {
reworkCode: this.rowItem.redono,
queryType: true,
};
getDetail(query).then(res => {
this.data = res.data.data;
});
},
closeDialog() {
this.openShow = false;
this.$emit('closeDialog');
},
},
};
</script>
<style lang="scss" scoped></style>

@ -13,13 +13,24 @@
@current-change="currentChange"
@size-change="sizeChange"
@refresh-change="refreshChange"
@on-load="onLoad"
>
<template #menu-left>
<el-input
v-model.trim="searchCode"
placeholder="请输入返修单号"
@keyup.enter.native="searchCodeFun"
/>
</template>
<template #menu="{ row }">
<!-- <el-button type="text">返工工艺</el-button> -->
<el-button type="text" @click="receiveData(row)" v-if="row.status == 0">接收</el-button>
<el-button type="text" @click="updateData(row)" v-if="row.status == 0">改数接收</el-button>
<el-button type="text" @click="finishData(row)">完成</el-button>
<el-button type="text" @click="receiveData(row)">接收</el-button>
<el-button type="text" @click="updateData(row)">改数接收</el-button>
<el-button type="text" @click="finishData(row)" v-if="row.seqno === 1">完成</el-button>
</template>
<template #redono="scope">
<el-button type="text" @dblclick="detailsFn(scope.row)">
{{ scope.row.redono }}
</el-button>
</template>
</avue-crud>
<!-- 改数接收 -->
@ -30,15 +41,25 @@
@close="updateMakeQtyClose"
:itemData="itemData"
></updateMakeQty>
<!-- 返工订单详情 -->
<reworkDetails
v-if="detailsShow"
:showDialog="detailsShow"
@closeDialog="closeDialog"
:rowItem="itemData"
></reworkDetails>
</basic-container>
</template>
<script>
import { getList, getReceiveOrder, completeOrder } from '@/api/productionManagement/reworkOrder';
import updateMakeQty from './components/updateMakeQty.vue';
import reworkDetails from './components/reworkDetails.vue';
export default {
components: { updateMakeQty },
components: { updateMakeQty, reworkDetails },
data() {
return {
searchCode: '', //
updateMakeQtyVisible: false,
itemData: {},
page: {
@ -48,6 +69,7 @@ export default {
},
data: [],
form: {},
query:{},
option: {
tip: false,
height: 'auto',
@ -74,7 +96,7 @@ export default {
editBtnIcon: ' ',
labelWidth: '200px',
dialogWidth: 600,
menuWidth:140,
menuWidth: 160,
dialogClickModal: false,
searchEnter: true,
filterBtn: true,
@ -88,7 +110,6 @@ export default {
menuAlign: 'left',
gridBtn: false,
searchMenuPosition: 'right',
menu:false,
column: [
{
label: '返工单号',
@ -241,9 +262,24 @@ export default {
},
mounted() {},
methods: {
updateMakeQtyClose(){
searchCodeFun(val) {
if (!this.searchCode) return;
this.query.redono = this.searchCode;
this.searchCode = ''
this.onLoad(this.page, this.query);
},
//
detailsFn(row) {
this.detailsShow = true;
this.itemData = row;
},
updateMakeQtyClose() {
this.updateMakeQtyVisible = false;
this.onLoad(this.page,this.query)
this.onLoad(this.page, this.query);
},
closeDialog() {
this.detailsShow = false;
this.onLoad(this.page, this.query);
},
updateData(row) {
this.itemData = row;
@ -255,7 +291,7 @@ export default {
cancelButtonText: '取消',
type: 'warning',
}).then(() => {
this.loading=true
this.loading = true;
getReceiveOrder(row).then(res => {
this.$message({
message: '接收成功',
@ -271,7 +307,7 @@ export default {
cancelButtonText: '取消',
type: 'warning',
}).then(() => {
this.loading=true
this.loading = true;
completeOrder(row).then(() => {
this.$message({
message: '操作成功',
@ -283,11 +319,11 @@ export default {
},
currentChange(currentPage) {
this.page.currentPage = currentPage;
this.onLoad(this.page, this.query);
// this.onLoad(this.page, this.query);
},
sizeChange(pageSize) {
this.page.pageSize = pageSize;
this.onLoad(this.page, this.query);
// this.onLoad(this.page, this.query);
},
refreshChange() {
this.onLoad(this.page, this.query);
@ -310,6 +346,8 @@ export default {
this.loading = false;
this.page.total = res.data.data.total;
this.selectionClear();
}).catch(() => {
this.loading = false;
});
},
},

@ -10,7 +10,6 @@
@row-del="rowDel"
@search-change="searchChange"
@search-reset="searchReset"
@selection-change="selectionChange"
@current-change="currentChange"
@size-change="sizeChange"
@refresh-change="refreshChange"
@ -19,17 +18,32 @@
<template #menu-left> </template>
<template #menu-right> </template>
<template #menu="{ row }"> </template>
<template #heatTreat="scope"> </template>
<!-- <template #ppsName="scope">
<el-button type="text">
{{ scope.row.ppsName }}
</el-button>
</template> -->
<template #redono="scope">
<el-button type="text" @dblclick="detailsFn(scope.row)">
{{ scope.row.redono }}
</el-button>
</template>
</avue-crud>
<!-- 返工订单详情 -->
<reworkDetails v-if="detailsShow" :showDialog="detailsShow" @closeDialog="closeDialog" :rowItem="rowItem"></reworkDetails>
</basic-container>
</template>
<script>
import { getList } from '@/api/productionManagement/reworkPlan.js';
import reworkDetails from '../reworkOrder/components/reworkDetails.vue';
export default {
components: {},
components: {reworkDetails},
data() {
return {
detailsShow:false,
rowItem:{},
form: {},
selectionList: [],
query: {},
@ -80,17 +94,81 @@ export default {
gridBtn: false,
searchMenuPosition: 'right',
align: 'center',
menu: false,
column: [
{
label: '配套人',
prop: 'partCode',
label: '返工订单',
prop: 'redono',
search: true,
sortable: true,
span: 12,
},
{
label: '发生单位',
prop: 'usedept',
search: false,
sortable: true,
span: 12,
},
{
label: '物料号',
prop: 'prtno',
search: true,
sortable: true,
span: 12,
},
{
label: '数量',
prop: 'amount',
search: false,
sortable: true,
span: 12,
},
{
label: '处理意见',
prop: 'detail',
search: false,
sortable: true,
span: 12,
},
{
label: '工艺路线',
prop: 'deptcode',
search: false,
sortable: true,
span: 12,
},
{
label: '备注',
prop: 'remark',
search: false,
sortable: true,
span: 12,
},
{
label: '需求日期',
prop: 'reqdate',
search: false,
sortable: true,
span: 12,
},
{
label: '批次号',
prop: 'splcode',
search: true,
sortable: true,
span: 12,
},
{
label: '生产标识',
prop: 'prtlotno',
search: false,
sortable: true,
span: 12,
},
{
label: '配套时间',
prop: 'partName',
label: '生产标识',
prop: 'prtlotno',
search: false,
sortable: true,
span: 12,
@ -102,6 +180,15 @@ export default {
};
},
methods: {
//
detailsFn(row){
this.detailsShow = true
this.rowItem = row
},
closeDialog(){
this.detailsShow = false
this.onLoad(this.page,this.query)
},
rowSave(row, done, loading) {
// addPersonAbility(row).then(
// () => {
@ -190,13 +277,15 @@ export default {
},
onLoad(page, params = {}) {
// this.loading = true;
// getList(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();
// });
this.loading = true;
getList(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();
}).catch(() => {
this.loading = false;
});
},
},
mounted() {},

Loading…
Cancel
Save