This commit is contained in:
xielue 2023-09-08 20:41:18 +08:00
parent bc3fd8f75b
commit 862dc4fdc7
4 changed files with 241 additions and 97 deletions

View File

@ -55,7 +55,7 @@
@pulldownSelected="onPulldownSelected" @popupSelected="onPopupSelected" :export-config="{}"
@edit-closed="afterEditEvent" @edit-actived="beforeEditEvent"
:edit-config="{ trigger: 'click', mode: 'cell', icon: 'vxe-icon-edit', showStatus: false, beforeEditMethod: beforeEditMethod }">
<vxe-column width="70">
<vxe-column width="70" v-if="pageStatus != 'approved'">
<template #default="{ row }">
<div class="oplinks2">
<a @click.stop="pageAdd(row)" title="新增">
@ -111,7 +111,7 @@
@pulldownSelected="onPulldownSelected2" @popupSelected="onPopupSelected2" :export-config="{}"
@edit-closed="afterEditEvent2" @edit-actived="beforeEditEvent2"
:edit-config="{ trigger: 'click', mode: 'cell', icon: 'vxe-icon-edit', showStatus: false, beforeEditMethod: beforeEditMethod2 }">
<vxe-column width="70">
<vxe-column width="70" v-if="pageStatus != 'approved'">
<template #default="{ row }">
<div class="oplinks2">
<a @click.stop="pageAdd2(row)" title="新增">

View File

@ -84,11 +84,15 @@ export default {
},
data() {
// 0 1
const options_paid_status = [{ value: 0, label: '未收款' }, { value: 1, label: '已收款' }];
//let _this = this;
//
var pageData = {
options_paid_status:options_paid_status,
options_production_type:[{value:'1',label:'正常布产'},{value:'2',label:'委托布产'}],
//
currentConfigName: "",
@ -113,7 +117,8 @@ export default {
material_id: 0,
warehouse_id: 0,
version: '',
is_default: 0
is_default: 0,
paid_status:0
},
//
titleWidth: 100,
@ -132,16 +137,26 @@ export default {
},
//
items: [
{ field: 'code', title: '订单编码', span: 8, itemRender: { name: '$input' } },
{ field: 'name', title: '客户名称', span: 8, itemRender: { name: '$input' } },
{ field: 'contact', title: '联系人', span: 8, itemRender: { name: '$input' } },
{ field: 'phone', title: '联系电话', span: 8, itemRender: { name: '$input' } },
{ field: 'salesman', title: '业务员姓名', span: 8, itemRender: { name: '$input' } },
{ field: 'contract_no', title: '合同号', span: 8, itemRender: { name: '$input' } },
{ field: 'contract_start_time', dataRule: { type: "timestamp" }, title: '合同开始日期', span: 8, itemRender: { name: '$input', props: { type: "date" } } },
{ field: 'contract_end_time', dataRule: { type: "timestamp" }, title: '合同结束日期', span: 8, itemRender: { name: '$input', props: { type: "date" } } },
{ field: 'code', title: '订单编码', span: 6, itemRender: { name: '$input' } },
{ field: 'name', title: '客户名称', span: 6, itemRender: { name: '$input' } },
{ field: 'contact', title: '联系人', span: 6, itemRender: { name: '$input' } },
{ field: 'phone', title: '联系电话', span: 6, itemRender: { name: '$input' } },
{ field: 'remark', title: '备注', span: 8, itemRender: { name: '$input' } },
{ field: 'salesman', title: '业务员姓名', span: 6, itemRender: { name: '$input' } },
{ field: 'contract_no', title: '合同号', span: 6, itemRender: { name: '$input' } },
{ field: 'contract_start_time', dataRule: { type: "timestamp" }, title: '合同开始日期', span: 6, itemRender: { name: '$input', props: { type: "date" } } },
{ field: 'contract_end_time', dataRule: { type: "timestamp" }, title: '合同结束日期', span: 6, itemRender: { name: '$input', props: { type: "date" } } },
{ field: 'amount',dataRule: { type: 'number' }, title: '订单金额', span: 6, itemRender: { name: '$input',props:{type:'number'} } },
{ field: 'paid_amount',dataRule: { type: 'number' }, title: '付款金额', span: 6, itemRender: { name: '$input',props:{type:'number'} } },
{ field: 'paid_ratio', dataRule: { type: 'number' },title: '付款比例', span: 6, itemRender: { name: '$input',props:{type:'number'} } },
{ field: 'paid_status', dataRule: { type: 'integer' }, title: '付款状态', span: 6, itemRender: { name: '$select', props: { options: options_paid_status } } },
{ field: 'remark', title: '备注', span: 24, itemRender: { name: '$input' } },
]

View File

@ -1,16 +1,18 @@
<template>
<div class="page-body">
<div class="approvedbg" v-if="pageStatus == 'approved'"></div>
<div class="voucher-toolbar">
<div class="voucher-toolbar-left">
<a-button @click="pageSelectOrder">选择订单</a-button>
<a-button type="primary" @click="ok">保存</a-button>
<a-button @click="pageSelectOrder" :disabled="pageStatus == 'approved'">选择订单</a-button>
<a-button type="primary" @click="ok" :disabled="pageStatus == 'approved'">保存</a-button>
<a-button @click="pageApproved" type="primary" :disabled="!this.getDataId() || pageStatus == 'approved'">审批
</a-button>
<a-button @click="print">打印</a-button>
<a-button @click="back">关闭</a-button>
</div>
@ -28,7 +30,7 @@
@pulldownSelected="onPulldownSelected" @popupSelected="onPopupSelected" :export-config="{}"
@edit-closed="afterEditEvent" @edit-actived="beforeEditEvent"
:edit-config="{ trigger: 'click', mode: 'cell', icon: 'vxe-icon-edit', showStatus: false, beforeEditMethod: beforeEditMethod }">
<vxe-column width="60">
<vxe-column width="60" v-if="pageStatus != 'approved'">
<template #default="{ row }">
<div class="oplinks2">
<a @click.stop="pageAdd2(row)" title="新增">
@ -40,6 +42,8 @@
</div>
</template>
</vxe-column>
<vxe-column field="department_detail" title="部门" width="160" :params="editor_department" formatter="formatRef"
:edit-render="{ name: 'MkGridDataSelector' }"></vxe-column>
<vxe-column field="component_detail" title="部件" width="160" :params="editor_component" formatter="formatRef"
:edit-render="{ name: 'MkGridDataSelector' }"></vxe-column>
<vxe-column field="process_detail" title="工序" width="160" :params="editor_processes" formatter="formatRef"
@ -49,6 +53,8 @@
<vxe-column field="process_uid_detail" title="加工人员" width="160" :params="editor_process_uid"
formatter="formatRef" :edit-render="{ name: 'MkGridDataSelector' }"></vxe-column>
<vxe-column field="progress" v-if="isEdit" :cellRender="{ name: 'progress' }" title="进度"
width="180"></vxe-column>
<vxe-column field="prepare_process_time" title="预备加工日期" width="160" formatter="formatDate"
:edit-render="{ name: '$input', props: { type: 'date' } }"></vxe-column>
@ -81,7 +87,7 @@
@pulldownSelected="onPulldownSelected" @popupSelected="onPopupSelected" :export-config="{}"
@edit-closed="afterEditEvent" @edit-actived="beforeEditEvent"
:edit-config="{ trigger: 'click', mode: 'cell', icon: 'vxe-icon-edit', showStatus: false, beforeEditMethod: beforeEditMethod }">
<vxe-column width="60">
<vxe-column width="60" v-if="pageStatus != 'approved'">
<template #default="{ row }">
<div class="oplinks2">
<a @click.stop="pageAdd(row)" title="新增">
@ -141,7 +147,15 @@
</a-tab-pane>
<a-tab-pane key="3" tab="部门进度汇总" v-if="isEdit">
<vxe-table border show-overflow keep-source ref="xTable3" :height="table1Height" :data="detailsData3">
<vxe-column field="name" title="部门名称" width="160"></vxe-column>
<vxe-column field="process_num" title="工序数量" width="160"></vxe-column>
<vxe-column field="progress" :cellRender="{ name: 'progress' }" title="进度" width="180"></vxe-column>
</vxe-table>
</a-tab-pane>
</a-tabs>
@ -198,6 +212,8 @@ export default {
// ID
currentBeid: 0,
pageStatus: '',
uploadDefaultImg: null,
detailDataFieldName: "mold_production_order",
@ -315,7 +331,16 @@ export default {
],
dataUrl: `${BASE_URL.BASE_URL}/MoldComponent/v1/mold/component/list`
},
editor_department: {
dataType: "object",
valueField: "id",
textField: "name",
listdataFieldName: 'BaseDepartment',
mapper: [
{ fromField: "id", field: "department_id" }
],
dataUrl: `${BASE_URL.BASE_URL}/BaseDepartment/v1/base/department/list`
},
editor_processes: {
dataType: "object",
@ -378,45 +403,8 @@ export default {
created() {
// id
let dataId = this.getDataId();
// id
if (dataId) {
this.$mk.post({
url: this.actions.get,
loading: "加载中...",
data: { id: this.$mk.toBigInt(dataId) },
useBigInt: true
}).then(a => {
this.formOptions.data = this.$mk.formatDetailData({ data: a.data[this.detailDataFieldName], rules: this.formOptions.items });
this.detailsData = JSON.parse(JSON.stringify(a.data[this.detailDataFieldName].mold_production_order_component || []));
this.detailsData2 = JSON.parse(JSON.stringify(a.data[this.detailDataFieldName].mold_production_order_component_processes || []));
this.detailsDataInit();
});
this.isEdit = true;
} else {
// id
this.addModeItems.forEach(item => {
this.formOptions.items.push(item);
})
this.detailsDataInit();
}
this.pageInit();
this.heightInit();
@ -425,6 +413,66 @@ export default {
//
methods: {
pageInit() {
this.pageStatus = '';
// id
let dataId = this.getDataId();
// id
if (dataId) {
this.$mk.post({
url: this.actions.get,
loading: "加载中...",
data: { id: this.$mk.toBigInt(dataId) },
useBigInt: true
}).then(a => {
this.formOptions.data = this.$mk.formatDetailData({ data: a.data[this.detailDataFieldName], rules: this.formOptions.items });
this.detailsData = JSON.parse(JSON.stringify(a.data[this.detailDataFieldName].mold_production_order_component || []));
this.detailsData2 = JSON.parse(JSON.stringify(a.data[this.detailDataFieldName].mold_production_order_component_processes || []));
this.detailsData3 = JSON.parse(JSON.stringify(a.data[this.detailDataFieldName].department_progress || []));
if (a.data[this.detailDataFieldName].auditor_uid) {
this.pageStatus = 'approved';
}
this.setPageReadonly(this.pageStatus == 'approved');
this.detailsDataInit();
});
this.isEdit = true;
} else {
// id
this.addModeItems.forEach(item => {
this.formOptions.items.push(item);
})
this.setPageReadonly(this.pageStatus == 'approved');
this.detailsDataInit();
}
},
setPageReadonly(readonly) {
this.formOptions.items.forEach(item => {
if (item.itemRender && item.itemRender.name == "$select") {
item.itemRender.props.disabled = readonly;
}
if (item.itemRender && item.itemRender.props) {
item.itemRender.props.readonly = readonly;
}
});
},
getDateValue(v) {
return new Date(v * 1000);
@ -604,6 +652,7 @@ export default {
{ field: 'update_uid', type: 'bigint' },
{ field: 'create_uid', type: 'bigint' },
{ field: 'component_id', type: 'bigint' },
{ field: 'department_id', type: 'bigint' },
{ field: 'process_id', type: 'bigint' },
{ field: 'process_uid', type: 'bigint' },
]
@ -698,6 +747,9 @@ export default {
beforeEditMethod({ column, row }) {
if (this.pageStatus == "approved") {
return false;
}
console.log(column, row);
return true;
},
@ -716,6 +768,37 @@ export default {
},
pageApproved() {
let dataId = this.getDataId();
if (!dataId) {
return;
}
let sendApproved = () => {
this.$mk.post({
url: `${BASE_URL.BASE_URL}/MoldProductionOrder/v1/mold/production/order/audit`,
loading: '审批中...',
data: {
id: this.getDataId_BigInt()
},
useBigInt: true
}).then(a => {
if (a.code == "200") {
this.$mk.success("审批成功");
this.pageInit();
}
else {
this.$mk.error(a.msg);
}
});
}
sendApproved("");
},
print() { //
@ -742,6 +825,10 @@ export default {
if (item.component_detail && item.component_detail.name) {
item.component_detail_name = item.component_detail.name;
}
if (item.department_detail && item.department_detail.name) {
item.department_detail_name = item.department_detail.name;
}
if (item.process_detail && item.process_detail.name) {
item.process_detail_name = item.process_detail.name;
}
@ -813,4 +900,5 @@ export default {
.oplinks2 i {
margin-left: 5px;
}</style>
}
</style>

View File

@ -25,24 +25,41 @@
<h4>工艺布产工序</h4>
<div v-for="item in detailsData" :key="item.id">
<div v-for="item in detailsData" :key="item.id" class="card-item">
<div class="gx-item">
<div class="gx-item-col">
<div>部门{{ item.department_detail ? item.department_detail.name : '' }}</div>
<div>部件{{ item.component_detail ? item.component_detail.name : '' }}</div>
<div>工序{{ item.process_detail ? item.process_detail.name : '' }}</div>
<div>状态{{ item.is_complete ? "已完成" : (item.is_send ? "已发料" :"未发料") }}</div>
<div>状态{{ item.is_complete ? "已完成" : (item.is_send ? "已发料" : "未发料") }}</div>
</div>
<div class="gx-item-col">
<a-button type="primary" @click="pageSend(item)" v-if="item.is_send !== 1">发料</a-button>
<a-button type="primary" @click="pageReport(item)" v-if="item.is_send && item.is_complete !== 1">报工</a-button>
<a-button type="primary" @click="pageReport(item)"
v-if="item.is_send && item.is_complete !== 1">报工</a-button>
</div>
</div>
<div class="card-item-progress">
<a-progress type="circle" :percent="item.progress" :width="50" />
</div>
</div>
</div>
<div class="card">
<h4>部门进度汇总</h4>
<vxe-table border show-overflow keep-source ref="xTable3" :height="200" :data="detailsData3">
<vxe-column field="name" title="部门名称" width="160"></vxe-column>
<vxe-column field="process_num" title="工序数量" width="160"></vxe-column>
<vxe-column field="progress" :cellRender="{ name: 'progress' }" title="进度" width="180"></vxe-column>
</vxe-table>
</div>
</div>
<div class="right">
@ -102,9 +119,9 @@ export default {
keyName: 'id',
//
isEdit: false,
currentId: 0,
detailsData: [],
detailsData3:[],
formOptions2: {
data: {
},
@ -119,8 +136,8 @@ export default {
items: [
{ field: 'code', title: '编号', span: 8, itemRender: { name: 'MkFormInputShow' } },
{
{ field: 'code', title: '编号', span: 8, itemRender: { name: 'MkFormInputShow' } },
{
title: '订单号', span: 8,
field: 'mold_order',
itemRender: {
@ -134,16 +151,16 @@ export default {
}
},
{ field: 'manufacture_cycle', dataRule: { type: 'timestamp' }, title: '制作周期', span: 8, itemRender: { name: 'MkFormInputShow', props: { params:{dataType : 'date' } } }},
{ field: 'draw_start_time', dataRule: { type: 'timestamp' }, title: '预计开始画图时间', span: 8, itemRender: { name: 'MkFormInputShow', props: { params:{dataType : 'date' } } } },
{ field: 'split_design_time', dataRule: { type: 'timestamp' }, title: '分模设计时间预计', span: 8, itemRender: { name: 'MkFormInputShow', props: { params:{dataType : 'date' } } } },
{ field: 'draw_time', dataRule: { type: 'timestamp' }, title: '出图时间预计', span: 8, itemRender: { name: 'MkFormInputShow', props: { params:{dataType : 'date' }} } },
{ field: 'split_design_time', dataRule: { type: 'timestamp' }, title: '分模设计时间预计', span: 8, itemRender: { name: 'MkFormInputShow', props: { params:{dataType : 'date' }} } },
{ field: 'draw_time', dataRule: { type: 'timestamp' }, title: '出图时间预计', span: 8, itemRender: { name: 'MkFormInputShow', props: { params:{dataType : 'date' } } } },
{ field: 'draw2D_time', dataRule: { type: 'timestamp' }, title: '出2D时间预计', span: 8, itemRender: { name: 'MkFormInputShow', props: {params:{dataType : 'date' } } } },
{ field: 'draw3D_time', dataRule: { type: 'timestamp' }, title: '出3D时间预计', span: 8, itemRender: { name: 'MkFormInputShow', props: { params:{dataType : 'date' } } } },
{ field: 'horizontal_frame_time', dataRule: { type: 'timestamp' }, title: '出2D时间预计', span: 8, itemRender: { name: 'MkFormInputShow', props: { params:{dataType : 'date' } } } },
{ field: 'inlay_deep_hole_time', dataRule: { type: 'timestamp' }, title: '镶件深孔钻到厂日期预计', span: 8, itemRender: { name: 'MkFormInputShow', props: { params:{dataType : 'date' } } } },
{ field: 'manufacture_cycle', dataRule: { type: 'timestamp' }, title: '制作周期', span: 8, itemRender: { name: 'MkFormInputShow', props: { params: { dataType: 'date' } } } },
{ field: 'draw_start_time', dataRule: { type: 'timestamp' }, title: '预计开始画图时间', span: 8, itemRender: { name: 'MkFormInputShow', props: { params: { dataType: 'date' } } } },
{ field: 'split_design_time', dataRule: { type: 'timestamp' }, title: '分模设计时间预计', span: 8, itemRender: { name: 'MkFormInputShow', props: { params: { dataType: 'date' } } } },
{ field: 'draw_time', dataRule: { type: 'timestamp' }, title: '出图时间预计', span: 8, itemRender: { name: 'MkFormInputShow', props: { params: { dataType: 'date' } } } },
{ field: 'split_design_time', dataRule: { type: 'timestamp' }, title: '分模设计时间预计', span: 8, itemRender: { name: 'MkFormInputShow', props: { params: { dataType: 'date' } } } },
{ field: 'draw_time', dataRule: { type: 'timestamp' }, title: '出图时间预计', span: 8, itemRender: { name: 'MkFormInputShow', props: { params: { dataType: 'date' } } } },
{ field: 'draw2D_time', dataRule: { type: 'timestamp' }, title: '出2D时间预计', span: 8, itemRender: { name: 'MkFormInputShow', props: { params: { dataType: 'date' } } } },
{ field: 'draw3D_time', dataRule: { type: 'timestamp' }, title: '出3D时间预计', span: 8, itemRender: { name: 'MkFormInputShow', props: { params: { dataType: 'date' } } } },
{ field: 'horizontal_frame_time', dataRule: { type: 'timestamp' }, title: '出2D时间预计', span: 8, itemRender: { name: 'MkFormInputShow', props: { params: { dataType: 'date' } } } },
{ field: 'inlay_deep_hole_time', dataRule: { type: 'timestamp' }, title: '镶件深孔钻到厂日期预计', span: 8, itemRender: { name: 'MkFormInputShow', props: { params: { dataType: 'date' } } } },
{ field: 'problem', title: '出现问题及建议反馈', span: 24, itemRender: { name: 'MkFormInputShow', props: {} } },
{
@ -325,7 +342,7 @@ export default {
useBigInt: true,
}).then(a => {
this.loading = false
this.tableDataOrders =JSON.parse(JSON.stringify( a.data.mold_production_order || []));
this.tableDataOrders = JSON.parse(JSON.stringify(a.data.mold_production_order || []));
this.allDetailsData = JSON.parse(JSON.stringify(a.data.mold_production_order_component_processes || []));
}).catch((a) => {
@ -428,6 +445,8 @@ export default {
});
},
loadProductionOrder({ id }) {
this.currentId = id;
this.loading = true
this.$mk.get({
url: `${BASE_URL.BASE_URL}/MoldProductionOrder/Get/TouchScreen/v1/mold/production/order/touchScreen/getMoldProductionOrder/${process.env.VUE_APP_BEID}/${process.env.VUE_APP_PTYID}/${process.env.VUE_APP_COMPANY_ID}/0/${process.env.VUE_APP_APPTOKEN}/${process.env.VUE_APP_COMPANYTOKEN}/${id}`,
@ -437,12 +456,17 @@ export default {
let row = a.data.mold_production_order;
let data2 = Object.assign({}, row);
let data3 = Object.assign({}, row.mold_detail);
let data3 = Object.assign({}, row.mold_detail);
this.formOptions2.data = data2
this.formOptions3.data = data3
this.detailsData = row.mold_production_order_component_processes;
this.detailsData3 = JSON.parse(JSON.stringify(row.department_progress || []));
console.log(this.detailsData3)
this.formOptions2.data = data2
this.formOptions3.data = data3
this.detailsData = row.mold_production_order_component_processes;
});
},
@ -474,6 +498,9 @@ export default {
$pulldown.hidePanel()
}
this.loadProductionOrder({ id: row.id });
/*
let data2 = Object.assign({}, row);
let data3 = Object.assign({}, row.mold_detail);
@ -489,6 +516,8 @@ export default {
})
console.log(ds)
this.detailsData = ds;
*/
},
cellClickEventStaff({ row }) {
this.selectStaff({ data: row })
@ -515,7 +544,8 @@ export default {
console.log(a)
if (a.code == 200) {
this.$mk.success("报工成功");
item.is_complete = 1;
this.loadProductionOrder({ id: this.currentId });
} else {
@ -544,7 +574,8 @@ export default {
console.log(a)
if (a.code == 200) {
this.$mk.success("发料成功");
item.is_send = 1;
this.loadProductionOrder({ id: this.currentId });
} else {
@ -679,4 +710,14 @@ export default {
.gx-item-col {
flex: 5;
}
</style>
.card-item {
position: relative;
}
.card-item-progress {
position: absolute;
right: 5px;
top: 5px;
}</style>