Browse Source

produce 2022年3月30日 sxm

master
[li_she] 4 years ago
parent
commit
6c0537b713
  1. 17
      src/App.vue
  2. 11
      src/api/yieldReport/com_finish_roll.js
  3. 4
      src/api/yieldReport/com_finish_schedule.js
  4. 3
      src/api/yieldReport/produce_order.js
  5. 43
      src/views/modules/yieldReport/com_finish_schedule.vue
  6. 7
      src/views/modules/yieldReport/com_produce_report_normal.vue
  7. 947
      src/views/modules/yieldReport/otherReport/change_finish_roll.vue
  8. 107
      src/views/modules/yieldReport/otherReport/change_packaging.vue
  9. 7
      src/views/modules/yieldReport/otherReport/fqc_produce_report_normal.vue
  10. 9
      src/views/modules/yieldReport/otherReport/rework_inspect_report.vue
  11. 55
      src/views/modules/yieldReport/produce_order.vue

17
src/App.vue

@ -10,14 +10,25 @@
export default {
data() {
return {
query: {}
query: {},
version: '1.2'
}
},
created() {
this.versionReload()
},
methods: {
versionReload(){
let version = this.version; //线
console.log('最新系统版本: ',version)
console.log('当前系统班帮: ',this.version)
let versionLocal = localStorage.getItem('_version_');
if(version!=versionLocal){
localStorage.setItem('_version_',version);
this.version=versionLocal;
location.reload();
}
}
}
}

11
src/api/yieldReport/com_finish_roll.js

@ -42,10 +42,7 @@ export const finishRollWithNoFqc = data => createAPI('schedule/finishRollWithNoF
// 校验是否可以修改总良品数
export const getSORoutingPreviousOperationItemNo = data => createAPI('schedule/getSORoutingPreviousOperationItemNo', 'POST', data)
// 换包装结束卷校验
export const checkRepackFinishRollWithNoFqc = data => createAPI(`schedule/checkRepackFinishRollWithNoFqc`,'POST',data)
// 换包装结束卷
export const repackFinishRollWithNoFqc = data => createAPI(`schedule/repackFinishRollWithNoFqc`,'POST',data)

4
src/api/yieldReport/com_finish_schedule.js

@ -17,3 +17,7 @@ export const checkFinishScheduleWithNoFqc = data => createAPI('schedule/checkFin
// 派工单结束操作
export const finishScheduleWithNoFqc = data => createAPI('schedule/finishScheduleWithNoFqc', 'POST', data)
// 换包装结束工单
export const repackFinishScheduleWithNoFqc = data => createAPI('schedule/repackFinishScheduleWithNoFqc', 'POST', data)

3
src/api/yieldReport/produce_order.js

@ -30,3 +30,6 @@ export const repairSOFlagProduceOrder = data => createAPI('schedule/repairSOFlag
export const workbenchCancelallops = data => createAPI('schedule/workbenchCancelallops', 'POST', data)
// 创建重检派工单
export const soscheduleNewReinspectjob = data => createAPI('schedule/soscheduleNewReinspectjob', 'POST', data)
//获取订单信息
export const getShopOrder = data => createAPI(`schedule/getShopOrderType`,'POST',data)

43
src/views/modules/yieldReport/com_finish_schedule.vue

@ -280,6 +280,7 @@
getSfdcMaterialHistBySeqNo,
checkFinishScheduleWithNoFqc,
finishScheduleWithNoFqc,
repackFinishScheduleWithNoFqc
} from '@/api/yieldReport/com_finish_schedule.js';
export default {
@ -288,6 +289,7 @@
return {
titleCon: '',
showExceptionFlag: false,
scheduleNo: 0,
pageData: {
site: this.$store.state.user.site,
username: this.$store.state.user.name,
@ -888,7 +890,8 @@
},
methods: {
/*初始化页面参数*/
init(scheduleData, operatorData) {
init(scheduleData, operatorData,scheduleNo) {
this.scheduleNo = scheduleNo?scheduleNo:0
//
this.pageData.orderNo = scheduleData.orderNo;
this.pageData.itemNo = scheduleData.itemNo;
@ -1090,18 +1093,32 @@
/*结束卷的具体操作*/
finishScheduleOperation() {
//
finishScheduleWithNoFqc(this.pageData).then(({data}) => {
//
if (data.code == 500) {
this.$message.error(data.msg);
} else {
//
this.$emit('processFinishScheduleOperation');
//
this.closeDialog();
}
})
if (this.scheduleNo == 0){
//
finishScheduleWithNoFqc(this.pageData).then(({data}) => {
//
if (data.code == 500) {
this.$message.error(data.msg);
} else {
//
this.$emit('processFinishScheduleOperation');
//
this.closeDialog();
}
})
}else if (this.scheduleNo == 4){
repackFinishScheduleWithNoFqc(this.pageData).then(({data}) => {
//
if (data.code == 500) {
this.$message.error(data.msg);
} else {
//
this.$emit('processFinishScheduleOperation');
//
this.closeDialog();
}
})
}
},
/*打开异常原因录入页面*/

7
src/views/modules/yieldReport/com_produce_report_normal.vue

@ -2903,7 +2903,10 @@ export default {
const { columns, data } = param;
const sums = [];
columns.forEach((column, index) => {
if (index === 1) {
sums[index] = "合计: ";
return;
}
if (index == 4){
const values = data.map(item => Number(item[column.property]));
if (!values.every(value => isNaN(value))) {
@ -2917,7 +2920,7 @@ export default {
}, 0);
sums[index] ;
}
sums[index] = "合计:"+(sums[index]?sums[index]:0)
sums[index] = (sums[index]?sums[index]:0)
}
});

947
src/views/modules/yieldReport/otherReport/change_finish_roll.vue

@ -0,0 +1,947 @@
<template>
<div class="customer-css">
<el-dialog :title="titleCon" v-drag v-bind="$attrs" v-on="$listeners"
width="920px" style="height: 680px;" class="customer-dialog">
<el-form :inline="true" label-position="top" style="height: 495px;"
label-width="80px">
<!-- 菜单信息 -->
<el-row>
<el-col :span="24">
<el-form-item :label="'当前时间'">
<el-date-picker disabled="disabled" style="width: 145px;"
v-model="pageData.reportedTime"
format="yyyy-MM-dd HH:mm:ss"
value-format="yyyy-MM-dd HH:mm:ss"
placeholder="">
</el-date-picker>
</el-form-item>
<el-form-item class="customer-button">
<el-button class="customer-bun-min" type="primary" style="margin-left: 10px; margin-bottom: 5px;">
列表</el-button>
</el-form-item>
<el-form-item class="customer-button">
<el-button class="customer-bun-min" type="primary" @click="refreshPageData" style="margin-left: 10px; margin-bottom: 5px;">
刷新</el-button>
</el-form-item>
<el-form-item class="customer-button">
<el-button class="customer-bun-min" type="primary" @click="finishRollBun" style="margin-left: 10px; margin-bottom: 5px;">
结束卷</el-button>
</el-form-item>
<el-form-item class="customer-button">
<el-button class="customer-bun-min" type="primary" @click="closeDialog" style="margin-left: 10px; margin-bottom: 5px;">
关闭</el-button>
</el-form-item>
</el-col>
</el-row>
<!-- 卷数量统计 班次信息 -->
<el-form>
<fieldset class="customer-fieldset" style="width: 495px;">
<legend>卷数量统计</legend>
<el-form-item class="customer-item">
<el-checkbox disabled="disabled" style="margin-top: 15px;" true-label="Y" false-label="N"
v-model="pageData.reportedFlag">是否报告产量</el-checkbox>
</el-form-item>
<el-form-item class="customer-item" label="总良品数量:" style="margin-top: -10px;">
<!--<el-input v-model="pageData.approvedQty" type="number" @blur="checkValidApprovedQty"-->
<el-input v-model="pageData.approvedQty" @blur="checkValidApprovedQty" type="number" style="width: 80px;" ></el-input>
</el-form-item>
<el-form-item class="customer-item" label="总不良品数量:" style="margin-top: -10px;">
<el-input v-model="pageData.defectedQty" :disabled="showNumFlag" class="customer-input-color-red" readonly="readonly" style="width: 80px;"></el-input>
</el-form-item>
<el-form-item class="customer-item" label="总数量" style="margin-top: -10px;">
<el-input v-model="pageData.totalQty" class="customer-input-color-red" readonly="readonly" style="width: 80px;"></el-input>
</el-form-item>
<el-form-item class="customer-item" label="其他卷数量:" style="margin-top: -10px;">
<el-input v-model="pageData.otherRollQty" class="customer-input-color-red" readonly="readonly" style="width: 80px;"></el-input>
</el-form-item>
</fieldset>
<!-- 操作员信息和班次信息 -->
<fieldset class="customer-fieldset"
style="margin-left: 500px; margin-top: -70px; width: 400px;">
<legend>人员排程班次信息</legend>
<el-form-item class="customer-item" label="操作员:">
<el-input v-model="operatorData.operatorId" disabled="disabled" style="width: 80px;" ></el-input>
</el-form-item>
<el-form-item class="customer-item" label="操作员姓名:">
<el-input v-model="operatorData.operatorName" class="customer-input-color-red" readonly="readonly" style="width: 80px;"></el-input>
</el-form-item>
<el-form-item class="customer-item" label="排产日期:">
<el-input v-model="pageData.scheduledDate" disabled="disabled" style="width: 80px;" ></el-input>
</el-form-item>
<el-form-item class="customer-item" label="班次:">
<el-input v-model="pageData.shiftDesc" class="customer-input-color-red" readonly="readonly" style="width: 80px;"></el-input>
</el-form-item>
<el-button type="info" :disabled="buttonTags.selectShiftFlag" plain @click="selectSchduleShiftModal"
style="margin-left: -10px; margin-top: 10px; height: 20px; padding: 3px 3px;">
<icon-svg name="ellipsis" style="height: 10px; width: 10px;" ></icon-svg>
</el-button>
</fieldset>
</el-form>
<!-- 卷生产时间统计产量报告 -->
<el-form style="margin-top: 5px;">
<fieldset class="customer-fieldset" style="width: 320px;">
<legend>卷生产时间统计</legend>
<!-- 调机时间 -->
<el-row>
<el-col :span="24">
<el-form-item label="总调机时间:">
<el-input v-model="pageData.totalSetupTime" class="customer-input-color-red" readonly="readonly" style="width: 80px;" ></el-input>
</el-form-item>
<el-form-item label="总调机过程停机时间:">
<el-input v-model="pageData.totalDowntimeTimeSetup" class="customer-input-color-red" readonly="readonly" style="width: 100px;"></el-input>
</el-form-item>
<el-form-item label="净调机时间:" >
<el-input v-model="pageData.totalPureSetupTime" class="customer-input-color-red" readonly="readonly" style="width: 80px;"></el-input>
</el-form-item>
</el-col>
</el-row>
<!-- 生产时间 -->
<el-row>
<el-col :span="24">
<el-form-item label="总生产时间">
<el-input v-model="pageData.totalProdTime" class="customer-input-color-red" readonly="readonly" style="width: 80px;"></el-input>
</el-form-item>
<el-form-item label="总生产过程停机时间:">
<el-input v-model="pageData.totalDowntimeTimeProd" class="customer-input-color-red" readonly="readonly" style="width: 100px;"></el-input>
</el-form-item>
<el-form-item label="净生产时间:" >
<el-input v-model="pageData.totalPureProdTime" class="customer-input-color-red" readonly="readonly" style="width: 80px;"></el-input>
</el-form-item>
</el-col>
</el-row>
<!-- 制造时间 -->
<el-row>
<el-col :span="24">
<el-form-item label="总制造时间:">
<el-input v-model="pageData.totalManufactureTime" class="customer-input-color-red" readonly="readonly" style="width: 80px;"></el-input>
</el-form-item>
<el-form-item label="总制造过程停机时间:">
<el-input v-model="pageData.totalManufactureDowntimeTime" class="customer-input-color-red" readonly="readonly" style="width: 100px;"></el-input>
</el-form-item>
<el-form-item label="净制造时间:" >
<el-input v-model="pageData.totalPureManufactureTime" class="customer-input-color-red" readonly="readonly" style="width: 80px;"></el-input>
</el-form-item>
</el-col>
</el-row>
</fieldset>
<!-- 产量报告 -->
<fieldset class="customer-fieldset"
style="margin-left: 325px; margin-top: -165px; width: 575px;">
<legend>产量报告</legend>
<!-- 开工时间 -->
<el-row>
<el-col :span="24">
<el-form-item label="开工时间">
<el-input v-model="pageData.eventTime" disabled="disabled" style="width: 130px;"></el-input>
</el-form-item>
<el-form-item label="完工时间">
<el-input v-model="pageData.tillTime" disabled="disabled" style="width: 130px;"></el-input>
</el-form-item>
<el-form-item label="生产时间" >
<el-input v-model="pageData.sfdcProdTime" class="customer-input-color-red" readonly="readonly" style="width: 80px;"></el-input>
</el-form-item>
<el-form-item label="调机时间" >
<el-input v-model="pageData.sfdcSetupTime" class="customer-input-color-red" readonly="readonly" style="width: 80px;"></el-input>
</el-form-item>
<el-form-item label="制造时间" >
<el-input v-model="pageData.sfdcManufactureTime" class="customer-input-color-red" readonly="readonly" style="width: 80px;"></el-input>
</el-form-item>
</el-col>
</el-row>
<!-- 合格数量 -->
<el-row>
<el-col :span="24">
<el-form-item label="合格数量">
<el-input v-model="pageData.sfdcApprovedQty" class="customer-input-color-red" readonly="readonly" style="width: 130px;"></el-input>
</el-form-item>
<el-form-item label="不合格数量">
<el-input v-model="pageData.defectedQty" class="customer-input-color-red" readonly="readonly" style="width: 130px;"></el-input>
</el-form-item>
<el-form-item label="报告数量" >
<el-input v-model="pageData.sfdcReportedQty" class="customer-input-color-red" readonly="readonly" style="width: 80px;"></el-input>
</el-form-item>
<el-form-item label="调机停机">
<el-input v-model="pageData.sfdcSetupDownTime" style="width: 80px;"></el-input>
</el-form-item>
<el-form-item label="生产调机" >
<el-input v-model="pageData.sfdcProdSetupTime" style="width: 80px;"></el-input>
</el-form-item>
</el-col>
</el-row>
<!-- 备注 -->
<el-row>
<el-col :span="24">
<el-form-item label="备注">
<el-input v-model="pageData.remark" style="width: 430px;"></el-input>
</el-form-item>
<el-form-item label="停机时间">
<el-input v-model="pageData.sfdcDownTime" style="width: 80px;"></el-input>
</el-form-item>
</el-col>
</el-row>
</fieldset>
</el-form>
<!-- 主材料 -->
<el-form>
<fieldset class="customer-fieldset" style="width: 830px;">
<legend>主材料</legend>
<el-table
height="180"
:data="sfdcMaterialList"
:cell-style="customerCellStyle" :cell-class-name="customerCellClassName"
border
v-loading="dataListLoading"
style="width: 100%; margin-top: -5px;">
<el-table-column
v-for="(item,index) in columnMaterialArray" :key="index"
:sortable="item.columnSortable"
:prop="item.columnProp"
:header-align="item.headerAlign"
:show-overflow-tooltip="item.showOverflowTooltip"
:align="item.align"
:fixed="item.fixed"
:width="item.columnWidth"
:label="item.columnLabel">
<template slot-scope="scope">
<!--<el-input type="number" class="table-input" align="right" @blur="checkValidQty(scope.row)"-->
<el-input type="number" class="table-input" align="right" v-if="item.columnHidden"
v-model="scope.row[item.columnProp]"></el-input>
<span v-else>{{scope.row[item.columnProp]}}</span>
<span v-if="item.columnImage"><img :src="scope.row[item.columnProp]"
style="width: 100px; height: 80px"/></span>
</template>
</el-table-column>
</el-table>
</fieldset>
</el-form>
</el-form>
</el-dialog>
<!-- 异常原因录入的组件 -->
<comExceptionReason ref="comExceptionReason" :close-on-click-modal="false"
:visible.sync="showExceptionFlag"
@initExceptionReason = "initExceptionReason">
</comExceptionReason>
<!-- 班次选择组件 -->
<comSelectShift ref="comSelectShift" :close-on-click-modal="false"
:visible.sync="showShiftFlag"
@initScheduleShift = "initScheduleShift">
</comSelectShift>
</div>
</template>
<script>
/*添加组件*/
import comExceptionReason from "../com_exception_reason";//
import comSelectShift from "../com_select_shift";//
import {
getCurrentRollReportedQty,
countSfdcTimeQty,
getScheduleShiftData,
getSfdcTimeMaxAndMinTime,
getSfdcTimeData,
getSfdcReportedData,
getSfdcMaterialByRollNo,
finishRollWithNoFqc,
getSORoutingPreviousOperationItemNo,
checkRepackFinishRollWithNoFqc,
repackFinishRollWithNoFqc
} from '@/api/yieldReport/com_finish_roll.js';
export default {
data() {
return {
titleCon: '结束卷',
showExceptionFlag: false,
showShiftFlag: false,
showNumFlag:false,
sfdcTimeList: [],
scheduleData: {
site: this.$store.state.user.site,
username: this.$store.state.user.name,
seqNo: '',
orderNo: '',
itemNo: 0,
partNo: '',
workCenterNo: '',
workCenterDesc: '',
resourceDesc: '',
rollNo: '',
partDesc: '',
planStartTime: '',
planFinishTime: '',
qtyRequiredOriginal: 0,
scheduledDate: '',
shiftNo: '',
preItemDesc: '',
nextItemDesc: '',
nextItemNo: 0,
operatorId: '',
functionName: '',
currentRollFlag: false
},
pageData: {
site: this.$store.state.user.site,
username: this.$store.state.user.name,
orderNo: '',
itemNo: 0,
seqNo: '',
rollNo: '',
resourceId: '',
scheduledDate: '',
shiftNo: '',
reportedTime: this.dayjs(new Date()).format('YYYY-MM-DD HH:mm:ss'),
reportedFlag: 'N',
approvedQty: 0,
defectedQty: 0,
totalQty: 0,
editNewRollQty: 0,
otherRollQty: '',
shiftDesc: '',
totalSetupTime: 0,
totalDowntimeTimeSetup: 0,
totalPureSetupTime: 0,
totalProdTime: 0,
totalDowntimeTimeProd: 0,
totalPureProdTime: 0,
totalManufactureTime: 0,
totalManufactureDowntimeTime: 0,
totalPureManufactureTime: 0,
sfdcProdTime: 0,//
sfdcSetupTime: 0,//
sfdcManufactureTime: 0,//
sfdcSetupDownTime: 0,//
sfdcProdSetupTime: 0,//
sfdcDownTime: 0,//
eventTime: '',
tillTime: '',
sfdcApprovedQty: 0,
sfdcDefectedQty: 0,
sfdcReportedQty: 0,
remark: '',
exceptionFlag: 'N',
exceptionReason: '',
operatorId: '',
operatorName: '',
createNewRollFlag: 'N',
},
operatorData: {
site: this.$store.state.user.site,
username: this.$store.state.user.name,
operatorId: '',
operatorName: '',
status: '',
seqNo: '',
showFlag: false
},
sfdcMaterialList: [],
columnMaterialArray: [
{
userId: this.$store.state.user.name,
functionId: 5303,
serialNumber: '5303MaterialReportDate',
tableId: "5303Material",
tableName: "派工单材料",
columnProp: "reportDate",
headerAlign: "center",
align: "center",
columnLabel: "报告时间",
columnWidth: 125,
columnHidden: false,
columnImage: false,
columnSortable: false,
sortLv: 0,
status: true,
fixed: false
},
{
userId: this.$store.state.user.name,
functionId: 5303,
serialNumber: '5303MaterialReportedBy',
tableId: "5303Material",
tableName: "派工单材料",
columnProp: "reportedBy",
headerAlign: "center",
align: "center",
columnLabel: "报告人",
columnWidth: 80,
columnHidden: false,
columnImage: false,
columnSortable: false,
sortLv: 0,
status: true,
fixed: false
},
{
userId: this.$store.state.user.name,
functionId: 5303,
serialNumber: '5303MaterialRmRollNo',
tableId: "5303Material",
tableName: "派工单材料",
columnProp: "rmRollNo",
headerAlign: "center",
align: "center",
columnLabel: "材料卷号",
columnWidth: 100,
columnHidden: false,
columnImage: false,
columnSortable: false,
sortLv: 0,
status: true,
fixed: false
},
{
userId: this.$store.state.user.name,
functionId: 5303,
serialNumber: '5303MaterialPartNo',
tableId: "5303Material",
tableName: "派工单材料",
columnProp: "partNo",
headerAlign: "center",
align: "center",
columnLabel: "零部件编码",
columnWidth: 100,
columnHidden: false,
columnImage: false,
columnSortable: false,
sortLv: 0,
status: true,
fixed: false
},
{
userId: this.$store.state.user.name,
functionId: 5303,
serialNumber: '5303MaterialStartDate',
tableId: "5303Material",
tableName: "派工单材料",
columnProp: "startDate",
headerAlign: "center",
align: "center",
columnLabel: "开始使用时间",
columnWidth: 125,
columnHidden: false,
columnImage: false,
columnSortable: false,
sortLv: 0,
status: true,
fixed: false
},
{
userId: this.$store.state.user.name,
functionId: 5303,
serialNumber: '5303MaterialTransQty',
tableId: "5303Material",
tableName: "派工单材料",
columnProp: "transQty",
headerAlign: "center",
align: "center",
columnLabel: "数量",
columnWidth: 80,
columnHidden: false,
columnImage: false,
columnSortable: false,
sortLv: 0,
status: true,
fixed: false
},
{
userId: this.$store.state.user.name,
functionId: 5303,
serialNumber: '5303MaterialNetIssueQty',
tableId: "5303Material",
tableName: "派工单材料",
columnProp: "netIssueQty",
headerAlign: "center",
align: "center",
columnLabel: "本卷耗用数量",
columnWidth: 100,
columnHidden: true,
columnImage: false,
columnSortable: false,
sortLv: 0,
status: true,
fixed: false
},
{
userId: this.$store.state.user.name,
functionId: 5303,
serialNumber: '5303MaterialKeyRMFlag',
tableId: "5303Material",
tableName: "派工单材料",
columnProp: "keyRMFlag",
headerAlign: "center",
align: "center",
columnLabel: "是否主材",
columnWidth: 80,
columnHidden: false,
columnImage: false,
columnSortable: false,
sortLv: 0,
status: true,
fixed: false
},
{
userId: this.$store.state.user.name,
functionId: 5303,
serialNumber: '5303MaterialSAPBOMItemNo',
tableId: "5303Material",
tableName: "派工单材料",
columnProp: "sAPBOMItemNo",
headerAlign: "center",
align: "center",
columnLabel: "SAP BOM序号",
columnWidth: 100,
columnHidden: false,
columnImage: false,
columnSortable: false,
sortLv: 0,
status: true,
fixed: false
}
],
buttonTags:{
selectShiftFlag: true,
},
dataListLoading: false,
}
},
components: {
comExceptionReason,/*异常原因的组件*/
comSelectShift,/*班次选择的组件*/
},
methods: {
sORoutingPreviousOperationItemNo(){
getSORoutingPreviousOperationItemNo( this.pageData).then(({data})=>{
if (data.code==0){
if (data.itemNo>0){
this.showNumFlag = true
}else {
this.showNumFlag = false
}
}
})
},
/*初始化页面参数*/
init(scheduleData, operatorData) {
//
this.scheduleData = scheduleData;
//
this.pageData.orderNo = scheduleData.orderNo;
this.pageData.itemNo = scheduleData.itemNo;
this.pageData.seqNo = scheduleData.seqNo;
this.pageData.rollNo = scheduleData.rollNo;
this.pageData.scheduledDate = scheduleData.scheduledDate;
this.pageData.shiftNo = scheduleData.shiftNo;
this.pageData.resourceId = scheduleData.resourceId;
this.pageData.operatorId = operatorData.operatorId;
this.pageData.operatorName = operatorData.operatorName;
//
this.pageData.reportedTime = this.dayjs(new Date()).format('YYYY-MM-DD HH:mm:ss');
//
this.operatorData = JSON.parse(JSON.stringify(operatorData));
//
this.titleCon = '结束卷操作 \
派工单号:'+scheduleData.seqNo;
//
this.pageData.exceptionFlag = 'N';
this.pageData.exceptionReason = '';
//
this.refreshPageData();
},
/*关闭modal*/
closeDialog(){
//
this.$emit('refreshPageData');
//
this.$emit('update:visible', false);
},
/*生产过程的停机组件*/
exceptionReasonModal() {
//1.
//checkProduceButton('produceDownFlag');
//
this.$nextTick(() => {
this.show = true;
this.$refs.comProduceDown.init(this.scheduleData, this.operatorData)
});
},
/*刷新当前的页面参数*/
async refreshPageData(){
//1.
await getCurrentRollReportedQty(this.scheduleData).then(({data}) => {
this.pageData.approvedQty = data.row.approvedQty;
this.pageData.defectedQty = data.row.defectedQty;
this.pageData.totalQty = data.row.totalQty;
this.pageData.otherRollQty = data.row.otherRollQty;
})
//2.
await countSfdcTimeQty(this.scheduleData).then(({data}) => {
this.pageData.totalSetupTime = data.row.totalSetupTime;
this.pageData.totalDowntimeTimeSetup = data.row.totalDowntimeTimeSetup;
this.pageData.totalPureSetupTime = data.row.totalPureSetupTime;
this.pageData.totalProdTime = data.row.totalProdTime;
this.pageData.totalDowntimeTimeProd = data.row.totalDowntimeTimeProd;
this.pageData.totalPureProdTime = data.row.totalPureProdTime;
this.pageData.totalManufactureTime = data.row.totalManufactureTime;
this.pageData.totalManufactureDowntimeTime = data.row.totalManufactureDowntimeTime;
this.pageData.totalPureManufactureTime = data.row.totalPureManufactureTime;
//
//=
this.pageData.sfdcProdTime = this.pageData.totalProdTime;
//=
this.pageData.sfdcSetupTime = this.pageData.totalSetupTime;
//=
this.pageData.sfdcManufactureTime = this.pageData.totalManufactureTime;
//=
this.pageData.sfdcSetupDownTime = this.pageData.totalDowntimeTimeSetup;
//=
this.pageData.sfdcProdSetupTime = this.pageData.totalDowntimeTimeProd;
//=
this.pageData.sfdcDownTime = this.pageData.totalManufactureDowntimeTime;
});
//3.
await getScheduleShiftData(this.scheduleData).then(({data}) => {
let specialAuth = 'N';
//
if(data.code == 500){
this.pageData.shiftDesc = data.row.shiftDesc;//
this.pageData.scheduledDate = '';//
this.pageData.shiftNo = '';
}else{
this.pageData.shiftDesc = data.row.shiftDesc;//
this.pageData.scheduledDate = data.row.scheduledDate.substring(0, 10);//
this.pageData.shiftNo = data.row.shiftNo;
//
specialAuth = data.row.specialAuth;
}
//
if("Y" === specialAuth){
this.buttonTags.selectShiftFlag = false;
}else{
this.buttonTags.selectShiftFlag = true;
}
});
//4.
await getSfdcTimeMaxAndMinTime(this.scheduleData).then(({data}) => {
this.pageData.eventTime = data.row.eventTime;
this.pageData.tillTime = data.row.tillTime;
});
//5.Sfdc
await getSfdcTimeData(this.scheduleData).then(({data}) => {
//
if(data.resultCode == 200){
//
this.pageData.eventTime = data.row.finishTime;
this.pageData.sfdcProdTime = data.row.sfdcProdTime;
this.pageData.sfdcSetupTime = data.row.sfdcSetupTime;
this.pageData.sfdcManufactureTime = data.row.sfdcManufactureTime;
this.pageData.sfdcDownTime = data.row.sfdcDownTime;
this.pageData.sfdcSetupDownTime = data.row.sfdcSetupDownTime;
this.pageData.sfdcProdSetupTime = data.row.sfdcProdSetupTime;
}else{
//
}
});
//6.
await getSfdcReportedData(this.scheduleData).then(({data}) => {
this.pageData.sfdcApprovedQty = this.pageData.approvedQty - data.row.approveQty;
this.pageData.sfdcDefectedQty = this.pageData.defectedQty - data.row.defectQty;
this.pageData.sfdcReportedQty = this.pageData.sfdcApprovedQty + this.pageData.sfdcDefectedQty;
});
//
await getSfdcMaterialByRollNo(this.scheduleData).then(({data}) => {
this.sfdcMaterialList = data.rows;
});
},
/*刷新当前卷的报工数据汇总*/
refreshCurrentRollReportedQty(){
getCurrentRollReportedQty(this.scheduleData).then(({data}) => {
this.pageData.approvedQty = data.row.approvedQty;
this.pageData.defectedQty = data.row.defectedQty;
this.pageData.totalQty = data.row.totalQty;
this.pageData.otherRollQty = data.row.otherRollQty;
})
},
//
refreshCurrentRollTimeQty(){
countSfdcTimeQty(this.scheduleData).then(({data}) => {
this.pageData.totalSetupTime = data.row.totalSetupTime;
this.pageData.totalDowntimeTimeSetup = data.row.totalDowntimeTimeSetup;
this.pageData.totalPureSetupTime = data.row.totalPureSetupTime;
this.pageData.totalProdTime = data.row.totalProdTime;
this.pageData.totalDowntimeTimeProd = data.row.totalDowntimeTimeProd;
this.pageData.totalPureProdTime = data.row.totalPureProdTime;
this.pageData.totalManufactureTime = data.row.totalManufactureTime;
this.pageData.totalManufactureDowntimeTime = data.row.totalManufactureDowntimeTime;
this.pageData.totalPureManufactureTime = data.row.totalPureManufactureTime;
});
},
//
refreshScheduleShiftData(){
getScheduleShiftData(this.scheduleData).then(({data}) => {
//
if(data.code == 500){
this.pageData.shiftDesc = data.row.shiftDesc;//
this.pageData.scheduledDate = '';//
this.pageData.shiftNo = '';
}else{
this.pageData.shiftDesc = data.row.shiftDesc;//
this.pageData.scheduledDate = data.row.scheduledDate.substring(0, 10);//
this.pageData.shiftNo = data.row.shiftNo;
}
});
},
//
refreshCurrentRollMaxAndMinTime(){
getSfdcTimeMaxAndMinTime(this.scheduleData).then(({data}) => {
this.pageData.eventTime = data.row.eventTime;
this.pageData.tillTime = data.row.tillTime;
});
},
//Sfdc
refreshSfdcTimeData(){
getSfdcTimeData(this.scheduleData).then(({data}) => {
//
this.pageData.eventTime = data.row.finishTime;
this.pageData.sfdcProdTime = data.row.sfdcProdTime;
this.pageData.sfdcSetupTime = data.row.sfdcSetupTime;
this.pageData.sfdcManufactureTime = data.row.sfdcManufactureTime;
this.pageData.sfdcDownTime = data.row.sfdcDownTime;
this.pageData.sfdcSetupDownTime = data.row.sfdcSetupDownTime;
this.pageData.sfdcProdSetupTime = data.row.sfdcProdSetupTime;
});
},
//
async refreshSfdcData(){
await getSfdcReportedData(this.scheduleData).then(({data}) => {
this.pageData.sfdcApprovedQty = this.pageData.approvedQty - data.row.approveQty;
this.pageData.sfdcDefectedQty = this.pageData.defectedQty - data.row.defectQty;
this.pageData.sfdcReportedQty = this.pageData.sfdcApprovedQty + this.pageData.sfdcDefectedQty;
});
},
//
refreshSfdcMaterialTable(){
getSfdcMaterialByRollNo(this.scheduleData).then(({data}) => {
this.sfdcMaterialList = data.rows;
});
},
/*检查数据是否有效*/
checkValidQty(row){
//
if(row.netIssueQty == ''){
this.$message.error('材料上本卷耗用数量不能为空!');
row.netIssueQty = 0;//
return false;
}
//
if(row.netIssueQty <= 0){
this.$message.error('材料耗用数量必须大于0!');
return false;
}
//
if(row.netIssueQty > row.transQty){
this.$message.error('材料耗用数量大于发料数量!');
row.netIssueQty = 0;//
return false;
}
},
/*添加定制的css类*/
customerCellClassName({row, column, rowIndex, columnIndex}) {
if(column.property == 'netIssueQty'){
return 'customer-number-cell';
}
},
/*添加定制的cess样式*/
customerCellStyle({row, column, rowIndex, columnIndex}) {
if(column.property == 'netIssueQty'){
return 'padding: 0px 0px;';
}
},
/*检验良品的总数量*/
async checkValidApprovedQty(){
//
await this.refreshSfdcData();
this.pageData.totalQty = parseFloat(this.pageData.approvedQty) + parseFloat(this.pageData.defectedQty);
},
/*结束当前的操作*/
finishRollBun(){
//
let approvedQty = this.pageData.approvedQty;
if(approvedQty == null || approvedQty == ''){
this.$message.error('请输入良品总数量!');
this.pageData.approvedQty = 0;//
return false;
}
if(approvedQty <= 0){
this.$message.error('良品总数量必须大于0!');
this.pageData.approvedQty = 0;//
return false;
}
//
if(this.pageData.shiftDesc == '无班次'){
this.$message.error('该时间段内没有匹配的班次信息,请联系相关人员!!');
return false;
}
//
let postData = {'pageData': JSON.stringify(this.pageData), 'materialList': JSON.stringify(this.sfdcMaterialList)};
//
checkRepackFinishRollWithNoFqc(postData).then(({data}) => {
//
if(data.code == 500){
this.$message.error(data.msg);
}else if (data.resultMap.resultCode == '201'){
//
this.$confirm(data.resultMap.resultMsg, '提示', {
confirmButtonText: '确认',
celButtonText: '取消',
type: 'warning'
}).then(() => {
this.showExceptionReasonModal();
});
}else{
//
this.finishRollOperation();
}
});
},
/*结束卷的具体操作*/
finishRollOperation(){
//
let postData = {'pageData': JSON.stringify(this.pageData), 'materialList': JSON.stringify(this.sfdcMaterialList)};
//
repackFinishRollWithNoFqc(postData).then(({data}) => {
//
if(data.code == 500){
this.$message.error(data.msg);
}else{
//
this.closeDialog();
}
})
},
/*打开异常原因录入页面*/
showExceptionReasonModal(){
//1.
//checkProduceButton('produceMaterialFlag');
//
this.$nextTick(() => {
this.showExceptionFlag = true;
this.$refs.comExceptionReason.init();
});
},
/*处理异常的原因*/
initExceptionReason(exceptionReason){
//
this.pageData.exceptionFlag = 'Y';
this.pageData.exceptionReason = exceptionReason;
//
this.finishRollOperation();
},
/*打开班次选择页面*/
selectSchduleShiftModal(){
//1.
//checkProduceButton('produceMaterialFlag');
//
this.$nextTick(() => {
this.showShiftFlag = true;
this.$refs.comSelectShift.init(this.pageData);
});
},
/*修改页面的班次和排产的时间*/
initScheduleShift(scheduleDate, shiftDesc, username){
//
this.pageData.scheduledDate = scheduleDate.substring(0, 10);
this.pageData.shiftDesc = shiftDesc;
this.pageData.remark = username+"更改了班次."
},
},
created() {
// this.factoryList()
// this.getLanguageList()
}
}
</script>
<style scoped lang="scss">
/*调节页面button和input的上下间距*/
.customer-css .customer-button{
margin-top: 25px;
}
/*调节样式*/
.customer-item{
margin-top: -10px;
}
/*fieldset下table的样式*/
.customer-fieldset /deep/ .el-table__header th.is-leaf{
line-height: 16px;
}
/deep/ .customer-tab .el-tabs__content{
padding: 0px !important;
}
/*table中input*/
div.table-input /deep/ input.el-input__inner{
text-align: right;
}
/*当前按钮的通用样式*/
.customer-css .customer-bun-mid{
width: 65px;
text-align: center;
}
.customer-css .customer-bun-min{
width: 50px;
text-align: center;
}
.customer-css .customer-bun-max{
width: 80px;
text-align: center;
}
/*当前按钮的通用样式*/
.customer-css .el-button--medium {
padding: 5px 5px;
}
/*统一的input内容颜色样式*/
.customer-input-color-red /deep/ .el-input__inner {
color: red;
}
</style>

107
src/views/modules/yieldReport/otherReport/change_packaging.vue

@ -69,7 +69,7 @@
</el-form-item>
<el-form-item>
<el-button class="customer-bun-mid" type="primary" @click="finishRollModal"
:disabled="buttonTags.switchRollFlag"
:disabled="buttonTags.finishRollFlag"
style="margin-left: 10px; margin-bottom: 5px;">
结束卷
</el-button>
@ -115,15 +115,38 @@
<legend class="customer-legend">列表信息</legend>
<el-tabs v-model="activeTable" style="margin-top: -3px; width: 870px;"
type="border-card" @tab-click="tabClick" class="customer-tab">
<el-tab-pane label="时间" name="sfdc_time">
<el-tab-pane label="材料" name="sfdc_material">
<el-table
height="250"
:data="sfdcTimeList"
height="120"
:data="orderBomList"
border
v-loading="dataListLoading"
style="width: 100%;">
<el-table-column
v-for="(item,index) in columnBomArray" :key="index"
:sortable="item.columnSortable"
:prop="item.columnProp"
:header-align="item.headerAlign"
:show-overflow-tooltip="item.showOverflowTooltip"
:align="item.align"
:fixed="item.fixed"
:width="item.columnWidth"
:label="item.columnLabel">
<template slot-scope="scope">
<span v-if="!item.columnHidden"> {{ scope.row[item.columnProp] }}</span>
<span v-if="item.columnImage"><img :src="scope.row[item.columnProp]"
style="width: 100px; height: 80px"/></span>
</template>
</el-table-column>
</el-table>
<el-table
height="140"
:data="sfdcMaterialList"
border
v-loading="dataListLoading"
style="width: 100%;">
<el-table-column
v-for="(item,index) in columnTimeArray" :key="index"
v-for="(item,index) in columnMaterialArray" :key="index"
:sortable="item.columnSortable"
:prop="item.columnProp"
:header-align="item.headerAlign"
@ -138,6 +161,26 @@
style="width: 100px; height: 80px"/></span>
</template>
</el-table-column>
<el-table-column
fixed="left"
header-align="center"
align="center"
width="115"
:label="'操作'">
<template slot-scope="scope">
<a class="customer-a" v-if="operatorData.operatorName != '' && scope.row.rollNo != '*' && scope.row.sAPBOMItemNo >= 0
&& scope.row.finishedFlag == 'N' && scope.row.histType == '发料'"
@click="replaceMaterialModal(scope.row)">换料</a>
<a class="customer-a" v-if="operatorData.operatorName != '' && scope.row.rollNo == '*' && scope.row.sAPBOMItemNo >= 0
&& scope.row.finishedFlag == 'N' && scope.row.histType == '发料'"
@click="cuttingMaterialModal(scope.row)"
>下料</a>
<a class="customer-a" v-if="operatorData.operatorName != '' && scope.row.finishedFlag == 'N' && scope.row.sAPBOMItemNo >= 0
&& scope.row.histType == '发料' && scope.row.keyRMFlag == 'N'"
@click="warnFinishMaterialWithNoRemainderConfirm(scope.row)"
>生产结束</a>
</template>
</el-table-column>
</el-table>
</el-tab-pane>
<el-tab-pane label="生产卷的操作信息" name="sfdc_rollOps">
@ -291,32 +334,13 @@
切换用户
</el-button>
</el-form-item>
<el-form-item style="margin-top: 0px;margin-left: 10px;">
<el-button class="customer-bun-mid" type="primary" @click="startProduceModal"
:disabled="buttonTags.produceFlag"
style=" margin-bottom: 5px;width: 80px;">
开始生产
<el-form-item style="margin-left: 100px; margin-top: -20px">
<el-button class="customer-bun-mid" type="primary" :disabled="buttonTags.finishScheduleFlag"
@click="showFinishScheduleModal" style="width: 80px; margin-left: -90px;margin-top: 15px;">
结单
</el-button>
</el-form-item>
<el-form-item style="margin-top: 20px ; margin-left: 10px">
<el-popover
placement="right"
width="150"
content
v-model="popoverFlag"
trigger="click">
<div style="text-align: right; margin: 0;width: 120px;">
<el-button type="primary" @click="notOverFinishRollModal"
style=" width: 120px; margin-bottom: 5px;margin-left: 3PX; ">
未生产下机拆卷
</el-button>
</div>
<el-button type="primary" style=" width: 80px; margin-bottom: 5px; " @click="popoverFlag=true"
:disabled="buttonTags.otherFlag"
slot="reference">其它操作
</el-button>
</el-popover>
</el-form-item>
</el-form>
</fieldset>
</el-form>
@ -339,10 +363,10 @@
</comSeparateRoll>
<!-- 结束卷的modal -->
<comFinishRoll ref="comFinishRoll" :close-on-click-modal="false"
<changeFinishRoll ref="changeFinishRoll" :close-on-click-modal="false"
:visible.sync="showFinishFlag" @refreshPageData="refreshPageData">
</comFinishRoll>
</changeFinishRoll>
<!-- 产量报告的组件 -->
<comFinishPartRoll ref="comFinishPartRoll" :close-on-click-modal="false"
@ -459,7 +483,7 @@ import comSwitchOperator from "../com_switch_operator";/*切换操作员*/
import otherSwitchRoll from "./other_switch_roll";/*切换卷操作*/
import comSeparateRoll from "../com_separate_roll";
import comFinishRoll from "../com_finish_roll";/*结束卷数的组件*/
import comFinishPartRoll from "../com_finish_part_roll";//
import changeFinishRoll from "./change_finish_roll";//
import comMergeRoll from "../com_merge_roll";/*合并卷的组件*/
import comStartTuning from "../com_start_tuning";/*开始调机组件*/
import comStartProduce from "../com_start_produce";/*开始生产组件*/
@ -2771,7 +2795,7 @@ export default {
otherSwitchRoll,/*切换卷操作*/
comSeparateRoll,/*創建分卷组件*/
comFinishRoll,/*结束卷的组件*/
comFinishPartRoll,/*产量报告的组件*/
changeFinishRoll,/*产量报告的组件*/
comMergeRoll,/*合并卷组件*/
comStartTuning,/*开始调机组件*/
comStartProduce,/*开始生产组件*/
@ -2793,7 +2817,10 @@ export default {
const { columns, data } = param;
const sums = [];
columns.forEach((column, index) => {
if (index === 1) {
sums[index] = "合计: ";
return;
}
if (index == 4){
const values = data.map(item => Number(item[column.property]));
if (!values.every(value => isNaN(value))) {
@ -2807,7 +2834,7 @@ export default {
}, 0);
sums[index] ;
}
sums[index]+= sums[index]?sums[index]:0
sums[index] = sums[index]?sums[index]:0
}
});
@ -3040,6 +3067,7 @@ export default {
} else if (this.activeTable == 'sfdc_roll') {
this.getSfdcRollList();
}
},
init(seqNo, operatorData) {
@ -3056,7 +3084,7 @@ export default {
this.harmful.defectCode = ''
this.harmful.defectDesc = ''
//table
this.activeTable = 'sfdc_time';
this.activeTable = 'sfdc_material';
//
this.refreshPageData();
},
@ -3244,7 +3272,7 @@ export default {
//
this.$nextTick(() => {
this.showSwitchFlag = true;
this.$refs.otherSwitchRoll.init(this.scheduleData, this.operatorData)
this.$refs.changeFinishRoll.init(this.scheduleData, this.operatorData)
});
},
@ -3316,7 +3344,7 @@ export default {
//
this.$nextTick(() => {
this.showFinishFlag = true;
this.$refs.comFinishRoll.init(this.scheduleData, this.operatorData)
this.$refs.changeFinishRoll.init(this.scheduleData, this.operatorData)
});
},
@ -3451,7 +3479,8 @@ export default {
//
this.showFinishScheduleFlag = true;
this.$nextTick(() => {
this.$refs.comFinishSchedule.init(this.scheduleData, this.operatorData);
//
this.$refs.comFinishSchedule.init(this.scheduleData, this.operatorData,4);
});
},

7
src/views/modules/yieldReport/otherReport/fqc_produce_report_normal.vue

@ -2814,7 +2814,10 @@ export default {
const { columns, data } = param;
const sums = [];
columns.forEach((column, index) => {
if (index === 1) {
sums[index] = "合计: ";
return;
}
if (index == 4){
const values = data.map(item => Number(item[column.property]));
if (!values.every(value => isNaN(value))) {
@ -2828,7 +2831,7 @@ export default {
}, 0);
sums[index] ;
}
sums[index] = "合计:"+(sums[index]?sums[index]:0)
sums[index] = (sums[index]?sums[index]:0)
}
});

9
src/views/modules/yieldReport/otherReport/rework_inspect_report.vue

@ -2815,7 +2815,10 @@ export default {
const { columns, data } = param;
const sums = [];
columns.forEach((column, index) => {
if (index === 1) {
sums[index] = "合计: ";
return;
}
if (index == 4){
const values = data.map(item => Number(item[column.property]));
if (!values.every(value => isNaN(value))) {
@ -2829,7 +2832,7 @@ export default {
}, 0);
sums[index] ;
}
sums[index] = "合计:"+(sums[index]?sums[index]:0)
sums[index] =(sums[index]?sums[index]:0)
}
});
return sums;
@ -2887,7 +2890,7 @@ export default {
if (val === 89 ){
strVal = this.harmful.defectCode;
}
this.$refs.baseList.init(val, val)
this.$refs.baseList.init(val, strVal)
})
},
//

55
src/views/modules/yieldReport/produce_order.vue

@ -80,7 +80,6 @@
<!-- 右键操作菜单 -->
<el-form :inline="true">
<el-form-item label="生产工单列表">
<el-dropdown trigger="click" style="margin-top: 3px" class="customer-dropdown" @command="handleCommand">
<el-button type="primary" @click="menuButtonFlag">
主菜单<i class="el-icon-arrow-down el-icon--right"></i>
@ -183,7 +182,7 @@
<fqcSplitRollReport :close-on-click-modal="false"
:visible.sync="fqcRollShowReportFlag" ref="fqcSplitRollReport"></fqcSplitRollReport>
<!-- 创建重检派工单 -->
<createRecheck ref="createRecheck" ></createRecheck>
<createRecheck ref="createRecheck"></createRecheck>
<!-- 换包装 -->
<changePackaging :close-on-click-modal="false"
:visible.sync="changePackagingFlag" ref="changePackaging"></changePackaging>
@ -201,7 +200,8 @@ import {
costRollUpProduceOrder,
manualProduceOrder,
repairSOFlagProduceOrder,
workbenchCancelallops
workbenchCancelallops,
getShopOrder
} from '@/api/yieldReport/produce_order.js';
/*引入组件*/
@ -218,7 +218,7 @@ export default {
data() {
return {
height: 800,
menuShow:false,
menuShow: false,
showOperatorFlag: false,
showReportFlag: false,
fqcShowReportFlag: false,
@ -1088,17 +1088,17 @@ export default {
username: this.$store.state.user.name,
searchFlag: true
}
currentRow = getProduceScheduleList(searchOrder).then(({data}) => {
getProduceScheduleList(searchOrder).then(({data}) => {
//
currentRow = data.rows[0];
if (currentRow == null){
if (currentRow == null) {
return;
}
this.menuButton.canceledAllPrdButton = false
this.menuButton.createRecheckButton = false
//
let menList = JSON.parse(sessionStorage.getItem('dynamicMenuRoutes') || '[]').filter(item => item.path == 'shopOrder-shopOrder/shopOrder')
if (menList.length>0){
if (menList.length > 0) {
this.menuButton.prdButton = false
}
//
@ -1136,13 +1136,13 @@ export default {
//
if (currentRow.closedFlag == 'N' && currentRow.parkFlag == 'N') {
this.menuButton.pauseButton = false
}else {
} else {
this.menuButton.pauseButton = true
}
//
if (currentRow.closedFlag == 'N' && currentRow.parkFlag == 'Y') {
this.menuButton.openReverseButton = false
}else {
} else {
this.menuButton.openReverseButton = true
}
//
@ -1247,7 +1247,7 @@ export default {
} else {
this.menuButton.canceledRepairSOFlagButton = true
}
this.menuShow=true
this.menuShow = true
});
}
},
@ -1669,18 +1669,19 @@ export default {
this.fqcSplitRollModal();
}
if (val == 4) {
//fqc
//
this.changePackaging();
}
},
//modal
switchOperatorModal(val) {
//
if (JSON.stringify(this.currentRow) == '{}') {
this.$message.error('请先选择派工单!');
return false;
}
if (val == 0) {
let data = {
site: this.currentRow.site,
@ -1714,12 +1715,30 @@ export default {
})
}
})
} else {
//
this.showOperatorFlag = true;
this.$nextTick(() => {
this.$refs.comSwitchOperator.init(val);
});
}else{
if (val == 4){
getShopOrder(this.currentRow).then(({data}) =>{
if (data.code == 0){
if (data.orderType == 'P'){
//
this.showOperatorFlag = true;
this.$nextTick(() => {
this.$refs.comSwitchOperator.init(val);
});
}else {
this.$alert('该订单不是特殊订单,不能采用该功能!', '提示', {
confirmButtonText: '确定'})
}
}
})
}else {
//
this.showOperatorFlag = true;
this.$nextTick(() => {
this.$refs.comSwitchOperator.init(val);
});
}
}
},

Loading…
Cancel
Save