|
@@ -10,6 +10,8 @@
|
|
|
<!-- <el-button type="primary" size="large" class="bt" style="color:white;font-size: 16px;font-weight: bold;width: 90px" @click="onchanliang" v-if="zdtreeType === true" >日产量上报</el-button> -->
|
|
<!-- <el-button type="primary" size="large" class="bt" style="color:white;font-size: 16px;font-weight: bold;width: 90px" @click="onchanliang" v-if="zdtreeType === true" >日产量上报</el-button> -->
|
|
|
<el-button type="primary" class="bt" @click="openRoleDialog" v-if="AddType === true">糊盒角色</el-button>
|
|
<el-button type="primary" class="bt" @click="openRoleDialog" v-if="AddType === true">糊盒角色</el-button>
|
|
|
<el-button type="primary" class="bt" @click="openTeamDialog" v-if="AddType === true">糊盒班组</el-button>
|
|
<el-button type="primary" class="bt" @click="openTeamDialog" v-if="AddType === true">糊盒班组</el-button>
|
|
|
|
|
+ <el-button type="primary" class="bt" @click="gyAddDialog" v-if="AddType === true">新增</el-button>
|
|
|
|
|
+ <el-button type="primary" class="bt" @click="gyDeleteDialog" v-if="DelType === true" >删除</el-button>
|
|
|
<!-- <el-button type="primary" class="bt" icon="download" @click="hzToExcel" >导出到Excel(汇总)</el-button>
|
|
<!-- <el-button type="primary" class="bt" icon="download" @click="hzToExcel" >导出到Excel(汇总)</el-button>
|
|
|
<el-button type="primary" class="bt" icon="download" @click="mxToExcel" >导出到Excel(明细)</el-button> -->
|
|
<el-button type="primary" class="bt" icon="download" @click="mxToExcel" >导出到Excel(明细)</el-button> -->
|
|
|
</el-form-item>
|
|
</el-form-item>
|
|
@@ -623,7 +625,26 @@
|
|
|
<el-row :gutter="24" style="height: 40px;">
|
|
<el-row :gutter="24" style="height: 40px;">
|
|
|
<el-col :span="6">
|
|
<el-col :span="6">
|
|
|
<el-form-item label="工单编号:" prop="flatFeed" class="mab" >
|
|
<el-form-item label="工单编号:" prop="flatFeed" class="mab" >
|
|
|
- <el-input v-model="gyformdata.工单编号" id="工单编号" @blur="getCPMCsubmit()" @keydown="ent1($event)" />
|
|
|
|
|
|
|
+ <el-select
|
|
|
|
|
+ v-model="gyformdata.工单编号"
|
|
|
|
|
+ id="工单编号"
|
|
|
|
|
+ placeholder="请输入或选择工单"
|
|
|
|
|
+ style="width: 100%;"
|
|
|
|
|
+ @change="gyHandleWorkOrderChange"
|
|
|
|
|
+ filterable
|
|
|
|
|
+ remote
|
|
|
|
|
+ :remote-method="gySearchWorkOrders"
|
|
|
|
|
+ :loading="gyWorkOrderLoading"
|
|
|
|
|
+ clearable
|
|
|
|
|
+ :default-first-option="true"
|
|
|
|
|
+ >
|
|
|
|
|
+ <el-option
|
|
|
|
|
+ v-for="item in gyWorkOrderOptions"
|
|
|
|
|
+ :key="item.value"
|
|
|
|
|
+ :label="item.label"
|
|
|
|
|
+ :value="item.value"
|
|
|
|
|
+ />
|
|
|
|
|
+ </el-select>
|
|
|
</el-form-item>
|
|
</el-form-item>
|
|
|
</el-col>
|
|
</el-col>
|
|
|
<el-col :span="18">
|
|
<el-col :span="18">
|
|
@@ -637,7 +658,23 @@
|
|
|
<el-row :gutter="24" style="height: 40px;">
|
|
<el-row :gutter="24" style="height: 40px;">
|
|
|
<el-col :span="10">
|
|
<el-col :span="10">
|
|
|
<el-form-item label="工序名称:" prop="flatFeed" class="mab">
|
|
<el-form-item label="工序名称:" prop="flatFeed" class="mab">
|
|
|
- <el-input v-model="gyformdata.gxmc" id="工序名称" @focus="gxmcHandleFocus()" @blur="getGXsubmit()" @keydown="ent1($event)" style="width: 350px;" />
|
|
|
|
|
|
|
+ <el-select
|
|
|
|
|
+ v-model="gyformdata.gxmc"
|
|
|
|
|
+ id="工序名称"
|
|
|
|
|
+ placeholder="请选择工序"
|
|
|
|
|
+ style="width: 350px;"
|
|
|
|
|
+ @change="handleGyGxmcBlur"
|
|
|
|
|
+ :loading="gyProcessLoading"
|
|
|
|
|
+ filterable
|
|
|
|
|
+ clearable
|
|
|
|
|
+ >
|
|
|
|
|
+ <el-option
|
|
|
|
|
+ v-for="item in gyProcessOptions"
|
|
|
|
|
+ :key="item.value"
|
|
|
|
|
+ :label="item.label"
|
|
|
|
|
+ :value="item.value"
|
|
|
|
|
+ />
|
|
|
|
|
+ </el-select>
|
|
|
<el-input v-model="gyformdata.gxh" id="工序号" :readonly=true :clearable="true" style="width: 80px;" />
|
|
<el-input v-model="gyformdata.gxh" id="工序号" :readonly=true :clearable="true" style="width: 80px;" />
|
|
|
</el-form-item>
|
|
</el-form-item>
|
|
|
</el-col>
|
|
</el-col>
|
|
@@ -659,13 +696,14 @@
|
|
|
<el-form-item label="机器:" class="mab" prop="remark">
|
|
<el-form-item label="机器:" class="mab" prop="remark">
|
|
|
<el-select v-model="gyformdata.sczl_jtbh"
|
|
<el-select v-model="gyformdata.sczl_jtbh"
|
|
|
id="机器" @keydown="ent1($event)" @change="jtbh_change()"
|
|
id="机器" @keydown="ent1($event)" @change="jtbh_change()"
|
|
|
- style="flex: 1; height: auto; width: 100px;">
|
|
|
|
|
|
|
+ style="flex: 1; height: auto; width: 200px;"
|
|
|
|
|
+ :loading="gyMachineLoading"
|
|
|
|
|
+ filterable>
|
|
|
<el-option
|
|
<el-option
|
|
|
- v-for="(item, index) in gdzl_MachineList_address.data"
|
|
|
|
|
- :key="index"
|
|
|
|
|
- :label="item.split('->')[0].trim()"
|
|
|
|
|
- :value="item.split('->')[0].trim()">
|
|
|
|
|
- {{ item }}
|
|
|
|
|
|
|
+ v-for="item in gyMachineOptions"
|
|
|
|
|
+ :key="item.value"
|
|
|
|
|
+ :label="item.label"
|
|
|
|
|
+ :value="item.value">
|
|
|
</el-option>
|
|
</el-option>
|
|
|
</el-select>
|
|
</el-select>
|
|
|
</el-form-item>
|
|
</el-form-item>
|
|
@@ -717,9 +755,14 @@
|
|
|
|
|
|
|
|
<el-row :gutter="24">
|
|
<el-row :gutter="24">
|
|
|
<el-col :span="8">
|
|
<el-col :span="8">
|
|
|
- <el-form-item label="加工联数:" prop="flatFeed" class="mab" >
|
|
|
|
|
- <el-input v-model="gyformdata.联数" id="加工联数" @keydown="ent1($event)" style="width: 100px; margin-right: 30px;" />
|
|
|
|
|
|
|
+ <el-form-item :label="gyLsLabel + ':'" prop="flatFeed" class="mab" >
|
|
|
|
|
+ <el-input v-model="gyformdata.联数" :id="gyLsLabel" @keydown="ent1($event)" style="width: 100px; margin-right: 30px;" />
|
|
|
</el-form-item>
|
|
</el-form-item>
|
|
|
|
|
+ </el-col>
|
|
|
|
|
+ <el-col :span="6">
|
|
|
|
|
+ <el-form-item label="来料异常:" prop="flatFeed" class="mab">
|
|
|
|
|
+ <el-input v-model="gyformdata.来料异常" id="来料异常" @keydown="ent1($event)" style="width: 200px;" />
|
|
|
|
|
+ </el-form-item>
|
|
|
</el-col>
|
|
</el-col>
|
|
|
<el-col :span="6">
|
|
<el-col :span="6">
|
|
|
<el-form-item label="来料数量:" prop="flatFeed" class="mab">
|
|
<el-form-item label="来料数量:" prop="flatFeed" class="mab">
|
|
@@ -772,10 +815,15 @@
|
|
|
<el-input v-model="gyformdata.设备运行工时" id="设备运行工时" @keydown="ent1($event)" style="width: 100px;" />
|
|
<el-input v-model="gyformdata.设备运行工时" id="设备运行工时" @keydown="ent1($event)" style="width: 100px;" />
|
|
|
</el-form-item>
|
|
</el-form-item>
|
|
|
</el-col>
|
|
</el-col>
|
|
|
- <el-col :span="5" style="margin-top:0px; margin-bottom: 1px;">
|
|
|
|
|
|
|
+ <!-- <el-col :span="5" style="margin-top:0px; margin-bottom: 1px;">
|
|
|
<el-form-item label="定额代号" prop="id" style="margin-top:0px; margin-bottom: 1px;">
|
|
<el-form-item label="定额代号" prop="id" style="margin-top:0px; margin-bottom: 1px;">
|
|
|
<el-input v-model="gyformdata.dedh" id="定额代号" readonly style="margin-top:0px; margin-bottom: 1px;" @keydown="ent1($event)" placeholder="" />
|
|
<el-input v-model="gyformdata.dedh" id="定额代号" readonly style="margin-top:0px; margin-bottom: 1px;" @keydown="ent1($event)" placeholder="" />
|
|
|
</el-form-item>
|
|
</el-form-item>
|
|
|
|
|
+ </el-col> -->
|
|
|
|
|
+ <el-col :span="5" style="margin-top:0px; margin-bottom: 1px;">
|
|
|
|
|
+ <el-form-item label="日定额" style="margin-top:0px; margin-bottom: 1px;">
|
|
|
|
|
+ <el-input v-model="gyformdata.dedh" id="定额代号" type="number" style="margin-top:0px; margin-bottom: 1px;" @keydown="ent1($event)" placeholder="请输入数字" />
|
|
|
|
|
+ </el-form-item>
|
|
|
</el-col>
|
|
</el-col>
|
|
|
|
|
|
|
|
<el-col :span="4">
|
|
<el-col :span="4">
|
|
@@ -1474,8 +1522,8 @@
|
|
|
<script setup>
|
|
<script setup>
|
|
|
// 全量引入格式化工具 请按需保留
|
|
// 全量引入格式化工具 请按需保留
|
|
|
import { Layout, LayoutSider, LayoutContent } from '@arco-design/web-vue';
|
|
import { Layout, LayoutSider, LayoutContent } from '@arco-design/web-vue';
|
|
|
- import { getTab,getGluingClassLList,GetProduction,setMachineTeam,AddGluingReportData,getGluingReportDataList,getGluingReportDataDetail,getGluingReportDetailUpdate,UpdateGluingReportClass,getGluingcoleTab, getGluingcoleList,GluingReportList, getGluingcoleDetail, getGluingcoleDetaiEdit, UpdateGluingcoleStatus,
|
|
|
|
|
- saveGluingcoleDetail, AddGluingClass, UpdateGluingClass,getGluingcole} from '@/api/mes/huhejob'
|
|
|
|
|
|
|
+ import { getTab,getGluingClassLList,GetProduction,setMachineTeam,AddGluingReportData,getGluingReportDataList,getGluingReportDataDetail,getGluingReportDetailUpdate,UpdateGluingReportClass,deleteGluingReportData,getGluingcoleTab, getGluingcoleList,GluingReportList, getGluingcoleDetail, getGluingcoleDetaiEdit, UpdateGluingcoleStatus,
|
|
|
|
|
+ saveGluingcoleDetail, AddGluingClass, UpdateGluingClass,getGluingcole,getWorkOrderList,getMachineList,gitProcessList} from '@/api/mes/huhejob'
|
|
|
import {
|
|
import {
|
|
|
facilityProduction,
|
|
facilityProduction,
|
|
|
facilityWorklist,
|
|
facilityWorklist,
|
|
@@ -1488,7 +1536,7 @@
|
|
|
import {ref, reactive,watch,computed} from 'vue'
|
|
import {ref, reactive,watch,computed} from 'vue'
|
|
|
import { useUserStore } from '@/pinia/modules/user'
|
|
import { useUserStore } from '@/pinia/modules/user'
|
|
|
import { exportExcelFile } from '@/utils/excel'
|
|
import { exportExcelFile } from '@/utils/excel'
|
|
|
- import {ElMessage} from "element-plus";
|
|
|
|
|
|
|
+ import {ElMessage, ElMessageBox} from "element-plus";
|
|
|
// import { el } from 'element-plus/es/locale';
|
|
// import { el } from 'element-plus/es/locale';
|
|
|
defineOptions({name: 'Company'})
|
|
defineOptions({name: 'Company'})
|
|
|
|
|
|
|
@@ -1602,32 +1650,15 @@ const handleNodeClick = (nodeData,node) => {
|
|
|
else if (nodeData.level === 3) {
|
|
else if (nodeData.level === 3) {
|
|
|
CJMC.value=nodeData.parentNode.parentNode.label
|
|
CJMC.value=nodeData.parentNode.parentNode.label
|
|
|
JTMC=nodeData.machineName.split("-")[0]
|
|
JTMC=nodeData.machineName.split("-")[0]
|
|
|
- // 等于TH开头的机台
|
|
|
|
|
- // if (/^TH.+/.test(JTMC)) {
|
|
|
|
|
- // isTHJT.value = true
|
|
|
|
|
- // JTMCOn.value=false
|
|
|
|
|
- // dateOn.value=true
|
|
|
|
|
- // FacilityInspect()
|
|
|
|
|
- // JPmachineDetails(JTMC, nodeData.label);
|
|
|
|
|
-
|
|
|
|
|
- // nodedate=node.label
|
|
|
|
|
- // JPgytableData.value=[]
|
|
|
|
|
- // showbutton.value=false
|
|
|
|
|
- // DelType.value = true
|
|
|
|
|
- // AddType.value = true
|
|
|
|
|
- // } else {
|
|
|
|
|
isTHJT.value = false
|
|
isTHJT.value = false
|
|
|
JTMCOn.value=false
|
|
JTMCOn.value=false
|
|
|
dateOn.value=true
|
|
dateOn.value=true
|
|
|
nodedate.value=node.label
|
|
nodedate.value=node.label
|
|
|
gytableData.value=[]
|
|
gytableData.value=[]
|
|
|
showbutton.value=false
|
|
showbutton.value=false
|
|
|
- // FacilityInspect()
|
|
|
|
|
FacilitychanLiang()
|
|
FacilitychanLiang()
|
|
|
- DelType.value = false
|
|
|
|
|
- AddType.value = false
|
|
|
|
|
- // }
|
|
|
|
|
-
|
|
|
|
|
|
|
+ DelType.value = true
|
|
|
|
|
+ AddType.value = true
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
|
|
@@ -2112,7 +2143,7 @@ for (let i = 0; i < 30; i++) {
|
|
|
endTime: formData3.value.下机时间||'',
|
|
endTime: formData3.value.下机时间||'',
|
|
|
sczl_rq: formData3.value.日期,
|
|
sczl_rq: formData3.value.日期,
|
|
|
sczl_ls: formData3.value.Gy0_ls,
|
|
sczl_ls: formData3.value.Gy0_ls,
|
|
|
- sczl_dedh: formData3.value.定额代号,
|
|
|
|
|
|
|
+ sczl_dedh: formData3.value.dedh,
|
|
|
工价系数: formData3.value.工价系数||1,
|
|
工价系数: formData3.value.工价系数||1,
|
|
|
保养工时: formData3.value.保养工时,
|
|
保养工时: formData3.value.保养工时,
|
|
|
装版工时: formData3.value.装版工时,
|
|
装版工时: formData3.value.装版工时,
|
|
@@ -2212,6 +2243,31 @@ const formatOtherFields = (item) => {
|
|
|
// }
|
|
// }
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+// 加工联数label变量(用于修改弹窗)
|
|
|
|
|
+const gyLsLabel = ref('加工联数')
|
|
|
|
|
+
|
|
|
|
|
+// 加工联数label更新方法
|
|
|
|
|
+const updateGyLsLabel = (gxmc) => {
|
|
|
|
|
+ if (gxmc && gxmc.startsWith('手工')) {
|
|
|
|
|
+ if (gxmc === '手工贴片' || gxmc === '手工贴磁铁') {
|
|
|
|
|
+ gyLsLabel.value = '加工片数'
|
|
|
|
|
+ } else if (gxmc === '手工打孔') {
|
|
|
|
|
+ gyLsLabel.value = '孔数'
|
|
|
|
|
+ } else if (gxmc === '手工拆片') {
|
|
|
|
|
+ gyLsLabel.value = '加工联数'
|
|
|
|
|
+ } else {
|
|
|
|
|
+ gyLsLabel.value = '加工联数'
|
|
|
|
|
+ }
|
|
|
|
|
+ } else {
|
|
|
|
|
+ gyLsLabel.value = '加工联数'
|
|
|
|
|
+ }
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+// 修改弹窗工序名称blur处理
|
|
|
|
|
+const handleGyGxmcBlur = () => {
|
|
|
|
|
+ updateGyLsLabel(gyformdata.value.gxmc)
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
const gyformdata = ref({
|
|
const gyformdata = ref({
|
|
|
工单编号: '',
|
|
工单编号: '',
|
|
|
cpmc: '',
|
|
cpmc: '',
|
|
@@ -2250,6 +2306,7 @@ const gyformdata = ref({
|
|
|
bzdh: '',
|
|
bzdh: '',
|
|
|
role: '',
|
|
role: '',
|
|
|
price: '',
|
|
price: '',
|
|
|
|
|
+ Uid: '',
|
|
|
// 初始化组员数据结构
|
|
// 初始化组员数据结构
|
|
|
组员1: { 角色:'', 编号: '', 姓名: '', 比例: '' },
|
|
组员1: { 角色:'', 编号: '', 姓名: '', 比例: '' },
|
|
|
组员2: { 角色:'', 编号: '', 姓名: '', 比例: '' },
|
|
组员2: { 角色:'', 编号: '', 姓名: '', 比例: '' },
|
|
@@ -2284,8 +2341,100 @@ const gyformdata = ref({
|
|
|
})
|
|
})
|
|
|
|
|
|
|
|
const gychanliangVisible = ref(false)
|
|
const gychanliangVisible = ref(false)
|
|
|
|
|
+const type2 = ref('edit')
|
|
|
|
|
+const selectedGyRows = ref([])
|
|
|
|
|
+
|
|
|
|
|
+const selectionChange = (val) => {
|
|
|
|
|
+ selectedGyRows.value = val
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+const gyAddDialog = async () => {
|
|
|
|
|
+ type2.value = 'create'
|
|
|
|
|
+ const selectDate = nodedate.value || new Date().toISOString().split('T')[0]
|
|
|
|
|
+
|
|
|
|
|
+ await getGyMachineList(CJMC.value)
|
|
|
|
|
+
|
|
|
|
|
+ Object.assign(gyformdata.value, {
|
|
|
|
|
+ 工单编号: '',
|
|
|
|
|
+ cpmc: '',
|
|
|
|
|
+ yjno: '',
|
|
|
|
|
+ yjmc: '',
|
|
|
|
|
+ gxmc: '',
|
|
|
|
|
+ gxh: '',
|
|
|
|
|
+ gymc: '',
|
|
|
|
|
+ rq: selectDate + ' 00:00:00',
|
|
|
|
|
+ starttime: selectDate + ' 00:00:00',
|
|
|
|
|
+ num: '',
|
|
|
|
|
+ sj1: '',
|
|
|
|
|
+ sj2: selectDate + ' 23:59:59',
|
|
|
|
|
+ 色度数: '',
|
|
|
|
|
+ 联数: '',
|
|
|
|
|
+ 产量: '',
|
|
|
|
|
+ 制程废品: '',
|
|
|
|
|
+ 制程次品: '',
|
|
|
|
|
+ 前工序废: '',
|
|
|
|
|
+ 来料异常: '',
|
|
|
|
|
+ 装版总工时: '',
|
|
|
|
|
+ 装版工时: '',
|
|
|
|
|
+ 打样总工时: '',
|
|
|
|
|
+ 打样工时: '',
|
|
|
|
|
+ 保养工时: '',
|
|
|
|
|
+ 异常总工时: '',
|
|
|
|
|
+ 异常类型: '',
|
|
|
|
|
+ 异常补时: '',
|
|
|
|
|
+ 通电工时: '',
|
|
|
|
|
+ dedh: '',
|
|
|
|
|
+ 码包: '',
|
|
|
|
|
+ 码开始行: '',
|
|
|
|
|
+ 码结束行: '',
|
|
|
|
|
+ 主电表: '',
|
|
|
|
|
+ 辅电表: '',
|
|
|
|
|
+ bzdh: '',
|
|
|
|
|
+ role: '',
|
|
|
|
|
+ price: '',
|
|
|
|
|
+ sczl_jtbh: JTMC,
|
|
|
|
|
+ 班组: '',
|
|
|
|
|
+ Uid: '',
|
|
|
|
|
+ 来料数量: '',
|
|
|
|
|
+ 异常工时: '',
|
|
|
|
|
+ 设备运行工时: '',
|
|
|
|
|
+ 上机时间: selectDate + ' 08:00:00',
|
|
|
|
|
+ 组员1: { 角色:'', 编号: '', 姓名: '', 比例: '' },
|
|
|
|
|
+ 组员2: { 角色:'', 编号: '', 姓名: '', 比例: '' },
|
|
|
|
|
+ 组员3: { 角色:'', 编号: '', 姓名: '', 比例: '' },
|
|
|
|
|
+ 组员4: { 角色:'', 编号: '', 姓名: '', 比例: '' },
|
|
|
|
|
+ 组员5: { 角色:'', 编号: '', 姓名: '', 比例: '' },
|
|
|
|
|
+ 组员6: { 角色:'', 编号: '', 姓名: '', 比例: '' },
|
|
|
|
|
+ 组员7: { 角色:'', 编号: '', 姓名: '', 比例: '' },
|
|
|
|
|
+ 组员8: { 角色:'', 编号: '', 姓名: '', 比例: '' },
|
|
|
|
|
+ 组员9: { 角色:'', 编号: '', 姓名: '', 比例: '' },
|
|
|
|
|
+ 组员10: { 角色:'', 编号: '', 姓名: '', 比例: '' },
|
|
|
|
|
+ 组员11: { 角色:'', 编号: '', 姓名: '', 比例: '' },
|
|
|
|
|
+ 组员12: { 角色:'', 编号: '', 姓名: '', 比例: '' },
|
|
|
|
|
+ 组员13: { 角色:'', 编号: '', 姓名: '', 比例: '' },
|
|
|
|
|
+ 组员14: { 角色:'', 编号: '', 姓名: '', 比例: '' },
|
|
|
|
|
+ 组员15: { 角色:'', 编号: '', 姓名: '', 比例: '' },
|
|
|
|
|
+ 组员16: { 角色:'', 编号: '', 姓名: '', 比例: '' },
|
|
|
|
|
+ 组员17: { 角色:'', 编号: '', 姓名: '', 比例: '' },
|
|
|
|
|
+ 组员18: { 角色:'', 编号: '', 姓名: '', 比例: '' },
|
|
|
|
|
+ 组员19: { 角色:'', 编号: '', 姓名: '', 比例: '' },
|
|
|
|
|
+ 组员20: { 角色:'', 编号: '', 姓名: '', 比例: '' },
|
|
|
|
|
+ 组员21: { 角色:'', 编号: '', 姓名: '', 比例: '' },
|
|
|
|
|
+ 组员22: { 角色:'', 编号: '', 姓名: '', 比例: '' },
|
|
|
|
|
+ 组员23: { 角色:'', 编号: '', 姓名: '', 比例: '' },
|
|
|
|
|
+ 组员24: { 角色:'', 编号: '', 姓名: '', 比例: '' },
|
|
|
|
|
+ 组员25: { 角色:'', 编号: '', 姓名: '', 比例: '' },
|
|
|
|
|
+ 组员26: { 角色:'', 编号: '', 姓名: '', 比例: '' },
|
|
|
|
|
+ 组员27: { 角色:'', 编号: '', 姓名: '', 比例: '' },
|
|
|
|
|
+ 组员28: { 角色:'', 编号: '', 姓名: '', 比例: '' },
|
|
|
|
|
+ 组员29: { 角色:'', 编号: '', 姓名: '', 比例: '' },
|
|
|
|
|
+ 组员30: { 角色:'', 编号: '', 姓名: '', 比例: '' },
|
|
|
|
|
+ })
|
|
|
|
|
+ gychanliangVisible.value = true
|
|
|
|
|
+}
|
|
|
|
|
|
|
|
const gytableDatadoubleClick = async(row) => {
|
|
const gytableDatadoubleClick = async(row) => {
|
|
|
|
|
+ type2.value = 'edit'
|
|
|
console.log('双击行数据:', row)
|
|
console.log('双击行数据:', row)
|
|
|
GYID.value = row.Uid
|
|
GYID.value = row.Uid
|
|
|
try {
|
|
try {
|
|
@@ -2369,6 +2518,7 @@ const gytableDatadoubleClick = async(row) => {
|
|
|
gyformdata.value = {
|
|
gyformdata.value = {
|
|
|
...gyformdata.value, // 保留初始结构
|
|
...gyformdata.value, // 保留初始结构
|
|
|
...apiData, // 覆盖API数据
|
|
...apiData, // 覆盖API数据
|
|
|
|
|
+ Uid: row.Uid,
|
|
|
cpmc: apiData.产品名称 || '',
|
|
cpmc: apiData.产品名称 || '',
|
|
|
sczl_jtbh:JTMC,
|
|
sczl_jtbh:JTMC,
|
|
|
yjno: apiData.印件号 || '',
|
|
yjno: apiData.印件号 || '',
|
|
@@ -2405,6 +2555,9 @@ const gytableDatadoubleClick = async(row) => {
|
|
|
})
|
|
})
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+ // 根据工序名称更新加工联数的label
|
|
|
|
|
+ updateGyLsLabel(gyformdata.value.gxmc)
|
|
|
|
|
+
|
|
|
gychanliangVisible.value = true
|
|
gychanliangVisible.value = true
|
|
|
} else {
|
|
} else {
|
|
|
console.error('获取数据失败:', res.msg)
|
|
console.error('获取数据失败:', res.msg)
|
|
@@ -2530,9 +2683,10 @@ const handleBzConfirm = async () => {
|
|
|
const gychanliangenterDialog = async(row) => {
|
|
const gychanliangenterDialog = async(row) => {
|
|
|
console.log(gyformdata.value)
|
|
console.log(gyformdata.value)
|
|
|
// return;
|
|
// return;
|
|
|
- const params = {
|
|
|
|
|
|
|
+ const baseParams = {
|
|
|
sczl_gdbh: gyformdata.value.工单编号,
|
|
sczl_gdbh: gyformdata.value.工单编号,
|
|
|
sczl_gxmc: gyformdata.value.gxmc,
|
|
sczl_gxmc: gyformdata.value.gxmc,
|
|
|
|
|
+ 来料异常: gyformdata.value.来料异常,
|
|
|
来料数量: gyformdata.value.来料数量,
|
|
来料数量: gyformdata.value.来料数量,
|
|
|
sczl_cl: gyformdata.value.产量,
|
|
sczl_cl: gyformdata.value.产量,
|
|
|
sczl_zcfp: gyformdata.value.制程废品,
|
|
sczl_zcfp: gyformdata.value.制程废品,
|
|
@@ -2540,7 +2694,7 @@ const gychanliangenterDialog = async(row) => {
|
|
|
endTime: gyformdata.value.sj2,
|
|
endTime: gyformdata.value.sj2,
|
|
|
sczl_rq: gyformdata.value.rq,
|
|
sczl_rq: gyformdata.value.rq,
|
|
|
sczl_ls: gyformdata.value.联数,
|
|
sczl_ls: gyformdata.value.联数,
|
|
|
- sczl_dedh: gyformdata.value.定额代号,
|
|
|
|
|
|
|
+ sczl_dedh: gyformdata.value.dedh,
|
|
|
工价系数: gyformdata.value.工价系数,
|
|
工价系数: gyformdata.value.工价系数,
|
|
|
保养工时: gyformdata.value.保养工时,
|
|
保养工时: gyformdata.value.保养工时,
|
|
|
装版工时: gyformdata.value.装版工时,
|
|
装版工时: gyformdata.value.装版工时,
|
|
@@ -2549,8 +2703,7 @@ const gychanliangenterDialog = async(row) => {
|
|
|
设备运行工时: gyformdata.value.设备运行工时,
|
|
设备运行工时: gyformdata.value.设备运行工时,
|
|
|
sczl_jtbh:gyformdata.value.sczl_jtbh,
|
|
sczl_jtbh:gyformdata.value.sczl_jtbh,
|
|
|
sczl_bzdh:gyformdata.value.班组,
|
|
sczl_bzdh:gyformdata.value.班组,
|
|
|
- id: gyformdata.value.Uid,
|
|
|
|
|
- role: gyformdata.value.role,
|
|
|
|
|
|
|
+ sys_id: userStore.userInfo.nickName,
|
|
|
price: gyformdata.value.price,
|
|
price: gyformdata.value.price,
|
|
|
bh1: gyformdata.value.组员1['编号'],
|
|
bh1: gyformdata.value.组员1['编号'],
|
|
|
bh2: gyformdata.value.组员2['编号'],
|
|
bh2: gyformdata.value.组员2['编号'],
|
|
@@ -2612,18 +2765,34 @@ const gychanliangenterDialog = async(row) => {
|
|
|
rate28: gyformdata.value.组员28['比例'],
|
|
rate28: gyformdata.value.组员28['比例'],
|
|
|
rate29: gyformdata.value.组员29['比例'],
|
|
rate29: gyformdata.value.组员29['比例'],
|
|
|
rate30: gyformdata.value.组员30['比例'],
|
|
rate30: gyformdata.value.组员30['比例'],
|
|
|
-
|
|
|
|
|
-
|
|
|
|
|
-
|
|
|
|
|
}
|
|
}
|
|
|
|
|
+
|
|
|
|
|
+ let params;
|
|
|
|
|
+ if(type2.value === 'create'){
|
|
|
|
|
+ params = baseParams
|
|
|
|
|
+ }else{
|
|
|
|
|
+ params = {
|
|
|
|
|
+ ...baseParams,
|
|
|
|
|
+ id: gyformdata.value.Uid,
|
|
|
|
|
+ role: gyformdata.value.role
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
console.log(params)
|
|
console.log(params)
|
|
|
- const res = await getGluingReportDetailUpdate(params)
|
|
|
|
|
|
|
+
|
|
|
|
|
+ let res;
|
|
|
|
|
+ if(type2.value === 'create'){
|
|
|
|
|
+ res = await AddGluingReportData(params)
|
|
|
|
|
+ }else{
|
|
|
|
|
+ res = await getGluingReportDetailUpdate(params)
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
if(res.code === 0){
|
|
if(res.code === 0){
|
|
|
- ElMessage.success('修改成功');
|
|
|
|
|
|
|
+ ElMessage.success(type2.value === 'create' ? '新增成功' : '修改成功');
|
|
|
FacilitychanLiang()
|
|
FacilitychanLiang()
|
|
|
gychanliangVisible.value = false
|
|
gychanliangVisible.value = false
|
|
|
}else{
|
|
}else{
|
|
|
- ElMessage.error('修改失败');
|
|
|
|
|
|
|
+ ElMessage.error(type2.value === 'create' ? '新增失败' : '修改失败');
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
|
|
@@ -2631,6 +2800,29 @@ const gycloseDialog = () => {
|
|
|
gychanliangVisible.value = false
|
|
gychanliangVisible.value = false
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+const gyDeleteDialog = async() => {
|
|
|
|
|
+ if(selectedGyRows.value.length === 0){
|
|
|
|
|
+ ElMessage.warning('请先勾选要删除的数据');
|
|
|
|
|
+ return;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ ElMessageBox.confirm('确定要删除选中的报工数据吗?', '提示', {
|
|
|
|
|
+ confirmButtonText: '确定',
|
|
|
|
|
+ cancelButtonText: '取消',
|
|
|
|
|
+ type: 'warning'
|
|
|
|
|
+ }).then(async() => {
|
|
|
|
|
+ const ids = selectedGyRows.value.map(row => row.Uid);
|
|
|
|
|
+ const res = await deleteGluingReportData({id: ids.join(',')})
|
|
|
|
|
+ if(res.code === 0){
|
|
|
|
|
+ ElMessage.success('删除成功');
|
|
|
|
|
+ FacilitychanLiang();
|
|
|
|
|
+ }else{
|
|
|
|
|
+ ElMessage.error('删除失败');
|
|
|
|
|
+ }
|
|
|
|
|
+ }).catch(() => {
|
|
|
|
|
+ ElMessage.info('已取消删除');
|
|
|
|
|
+ })
|
|
|
|
|
+}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@@ -2640,6 +2832,139 @@ const gdzl_MachineList_address = reactive({
|
|
|
data: []
|
|
data: []
|
|
|
});
|
|
});
|
|
|
|
|
|
|
|
|
|
+const gyMachineOptions = ref([])
|
|
|
|
|
+const gyMachineLoading = ref(false)
|
|
|
|
|
+
|
|
|
|
|
+const gyProcessOptions = ref([])
|
|
|
|
|
+const gyProcessLoading = ref(false)
|
|
|
|
|
+
|
|
|
|
|
+const gyWorkOrderOptions = ref([])
|
|
|
|
|
+const gyWorkOrderLoading = ref(false)
|
|
|
|
|
+const gyWorkOrderCache = ref({})
|
|
|
|
|
+let gyWorkOrderSearchTimer = null
|
|
|
|
|
+
|
|
|
|
|
+const getGyMachineList = async (workshopName) => {
|
|
|
|
|
+ if (!workshopName) {
|
|
|
|
|
+ gyMachineOptions.value = []
|
|
|
|
|
+ gyProcessOptions.value = []
|
|
|
|
|
+ return
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ try {
|
|
|
|
|
+ gyMachineLoading.value = true
|
|
|
|
|
+ gyProcessLoading.value = true
|
|
|
|
|
+
|
|
|
|
|
+ const [machineResponse, processResponse] = await Promise.all([
|
|
|
|
|
+ getMachineList({ search: workshopName }),
|
|
|
|
|
+ gitProcessList({ search: workshopName })
|
|
|
|
|
+ ])
|
|
|
|
|
+
|
|
|
|
|
+ if (machineResponse.code === 0) {
|
|
|
|
|
+ const machineData = machineResponse.data || {}
|
|
|
|
|
+ const formattedMachines = Object.entries(machineData).map(([key, value]) => ({
|
|
|
|
|
+ value: key,
|
|
|
|
|
+ label: `${key}-${value}`,
|
|
|
|
|
+ machineName: value
|
|
|
|
|
+ }))
|
|
|
|
|
+
|
|
|
|
|
+ gyMachineOptions.value = formattedMachines
|
|
|
|
|
+ } else {
|
|
|
|
|
+ gyMachineOptions.value = []
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ if (processResponse.code === 0) {
|
|
|
|
|
+ const processData = processResponse.data || []
|
|
|
|
|
+ const formattedProcesses = processData.map(item => ({
|
|
|
|
|
+ value: item,
|
|
|
|
|
+ label: item
|
|
|
|
|
+ }))
|
|
|
|
|
+
|
|
|
|
|
+ gyProcessOptions.value = formattedProcesses
|
|
|
|
|
+ } else {
|
|
|
|
|
+ gyProcessOptions.value = []
|
|
|
|
|
+ }
|
|
|
|
|
+ } catch (error) {
|
|
|
|
|
+ console.error('获取机台和工序列表失败:', error)
|
|
|
|
|
+ gyMachineOptions.value = []
|
|
|
|
|
+ gyProcessOptions.value = []
|
|
|
|
|
+ } finally {
|
|
|
|
|
+ gyMachineLoading.value = false
|
|
|
|
|
+ gyProcessLoading.value = false
|
|
|
|
|
+ }
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+const gySearchWorkOrders = async (query) => {
|
|
|
|
|
+ const trimmedQuery = query ? query.trim() : ''
|
|
|
|
|
+
|
|
|
|
|
+ if (!trimmedQuery || trimmedQuery.length < 4) {
|
|
|
|
|
+ gyWorkOrderOptions.value = []
|
|
|
|
|
+ return
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ if (gyWorkOrderSearchTimer) {
|
|
|
|
|
+ clearTimeout(gyWorkOrderSearchTimer)
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ gyWorkOrderSearchTimer = setTimeout(async () => {
|
|
|
|
|
+ try {
|
|
|
|
|
+ gyWorkOrderLoading.value = true
|
|
|
|
|
+
|
|
|
|
|
+ if (gyWorkOrderCache.value[query]) {
|
|
|
|
|
+ gyWorkOrderOptions.value = gyWorkOrderCache.value[query]
|
|
|
|
|
+ gyWorkOrderLoading.value = false
|
|
|
|
|
+ return
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ const response = await getWorkOrderList({
|
|
|
|
|
+ search: query.trim()
|
|
|
|
|
+ })
|
|
|
|
|
+
|
|
|
|
|
+ if (response.code === 0) {
|
|
|
|
|
+ const data = response.data || []
|
|
|
|
|
+
|
|
|
|
|
+ const uniqueWorkOrders = []
|
|
|
|
|
+ const seenOrders = new Set()
|
|
|
|
|
+
|
|
|
|
|
+ data.forEach(item => {
|
|
|
|
|
+ if (!seenOrders.has(item['工单编号'])) {
|
|
|
|
|
+ seenOrders.add(item['工单编号'])
|
|
|
|
|
+ uniqueWorkOrders.push({
|
|
|
|
|
+ value: item['工单编号'],
|
|
|
|
|
+ label: item['工单编号'],
|
|
|
|
|
+ productName: item['产品名称'],
|
|
|
|
|
+ originalData: item
|
|
|
|
|
+ })
|
|
|
|
|
+ }
|
|
|
|
|
+ })
|
|
|
|
|
+
|
|
|
|
|
+ gyWorkOrderOptions.value = uniqueWorkOrders
|
|
|
|
|
+ gyWorkOrderCache.value[query] = uniqueWorkOrders
|
|
|
|
|
+ } else {
|
|
|
|
|
+ gyWorkOrderOptions.value = []
|
|
|
|
|
+ }
|
|
|
|
|
+ } catch (error) {
|
|
|
|
|
+ console.error('搜索工单失败:', error)
|
|
|
|
|
+ gyWorkOrderOptions.value = []
|
|
|
|
|
+ } finally {
|
|
|
|
|
+ gyWorkOrderLoading.value = false
|
|
|
|
|
+ }
|
|
|
|
|
+ }, 500)
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+const gyHandleWorkOrderChange = (selectedOrder) => {
|
|
|
|
|
+ if (!selectedOrder) {
|
|
|
|
|
+ gyformdata.value.cpmc = ''
|
|
|
|
|
+ return
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ const selectedWorkOrder = gyWorkOrderOptions.value.find(item => item.value === selectedOrder)
|
|
|
|
|
+ if (selectedWorkOrder) {
|
|
|
|
|
+ gyformdata.value.cpmc = selectedWorkOrder.productName || ''
|
|
|
|
|
+ } else {
|
|
|
|
|
+ gyformdata.value.cpmc = ''
|
|
|
|
|
+ }
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|