From 41580b1fbb6c7116b0058118baeed1bbc9cdbfb5 Mon Sep 17 00:00:00 2001 From: Mr.Shi <1878285526@qq.com> Date: 星期三, 16 八月 2023 18:30:38 +0800 Subject: [PATCH] h5一键报工 --- h5_standard/src/views/workOrder/reportingForWork.vue | 1853 ++++++++++++++++++++++------------------------------------- 1 files changed, 689 insertions(+), 1,164 deletions(-) diff --git a/h5_standard/src/views/workOrder/reportingForWork.vue b/h5_standard/src/views/workOrder/reportingForWork.vue index bd1cbe8..f6d30eb 100644 --- a/h5_standard/src/views/workOrder/reportingForWork.vue +++ b/h5_standard/src/views/workOrder/reportingForWork.vue @@ -1,42 +1,84 @@ <template> <div class="bg"> - <!-- 鎶曟枡鏄庣粏/鍚堟牸浜у嚭鏄庣粏/涓嶈壇浜у嚭鏄庣粏 --> + <div class="bg_plan" @click="selectPlan"> + <div class="bg_plan_label" v-if="!from.processPlan"> + <span><b>*</b>宸ュ簭鐢熶骇璁″垝</span> + </div> + <div class="bg_plan_nr" v-else> + <span>{{ from.processPlan.materialName }} | {{ from.processPlan.materialCode }} | {{ from.processPlan.produceName }}</span> + <span>{{ from.processPlan.batch }}{{ from.processPlan.salesOrder ? ` / ${from.processPlan.salesOrder}` : '' }}</span> + <span>璁″垝鏃堕棿锛歿{ from.processPlan.workPlanStartDate }} ~ {{ from.processPlan.workPlanEndDate }}</span> + <span>璁″垝杩涘害锛歿{from.processPlan.num}}/{{from.processPlan.workorderDistributNum}}{{ from.processPlan.unitName }}</span> + </div> + <div class="bg_plan_label_val"> + <span v-if="!from.processPlan">璇烽�夋嫨</span> + <img src="@/assets/icon/ic_ar@2x.png" alt="" /> + </div> + </div> <div class="bg_list"> <div class="bg_list_item"> <div class="bg_list_item_top"> <div class="bg_list_item_top_left"> <div class="bg_list_item_top_left_x"></div> - <span>鎶曟枡鏄庣粏</span> - <!-- <span class="blue left">{{tlTotal()}}</span> --> - </div> - <div class="bg_list_item_top_right" @click="jumpTL" v-if="proxy.$auth('h5:workorderinput:create') && (info.bomType !== 1 || info.bomType == 0 || !info.bomType)"> - <img src="@/assets/icon/gongdan_ic_shoudong@2x.png" alt="" /> - <span>鎵嬪姩褰曞叆</span> + <span>鐢熶骇淇℃伅</span> </div> </div> - <template v-if="feedingData && feedingData.length > 0"> - <van-swipe-cell v-for="(item, index) in feedingData" :key="index"> - <div class="bg_list_item_num"> - <div class="bg_list_item_num_item"> - <!-- <span>{{item.code}}</span> --> - <div class="bg_list_item_num_item_wl"> - <span> {{ item.materialName }}{{ item.procedureName ? ` | ${item.procedureName}` : '' }}</span> - <div class="bg_list_item_num_item_wl_lx"> - <span class="green" v-if="item.qualityType == 0">鍚堟牸 / </span> - <span class="yellow" v-if="item.qualityType == 1">涓嶈壇 / </span> - <span class="red" v-if="item.qualityType == 2">鎶ュ簾 / </span> - <span>{{ item.locationName }}</span> - <span>{{ item.batch ? ` / ${item.batch}` : '' }}</span> + <div class="bg_list_item_h"> + <div class="bg_list_item_num" @click="openDev"> + <div class="bg_list_item_num_item"> + <span>鐢熶骇璁惧</span> + <div class="bg_list_item_num_item_sr"> + <span :style="{color: from.deviceName ? '#333' : ''}">{{from.deviceName ? from.deviceName : '璇烽�夋嫨'}}</span> + <img src="@/assets/icon/ic_ar@2x.png" alt="" /> + </div> + </div> + </div> + <div class="bg_list_item_num" @click="userShow = true"> + <div class="bg_list_item_num_item"> + <span>鐢熶骇浜哄憳</span> + <div class="bg_list_item_num_item_sr"> + <span :style="{color: from.userName ? '#333' : ''}">{{from.userName ? from.userName : '璇烽�夋嫨'}}</span> + <img src="@/assets/icon/ic_ar@2x.png" alt="" /> + </div> + </div> + </div> + </div> + </div> + <div class="bg_list_item"> + <div class="bg_list_item_top"> + <div class="bg_list_item_top_left"> + <div class="bg_list_item_top_left_x"></div> + <span>鐢熶骇淇℃伅</span> + </div> + <div class="bg_list_item_top_right" @click="openMaterial" v-if="(hasBom == 1 && bomType != 1) || hasBom == 0"> + <img src="@/assets/icon/gongdan_ic_shoudong@2x.png" alt="" /> + <span>鏂板鎶曟枡</span> + </div> + </div> + <template v-if="wuList.length > 0"> + <van-swipe-cell v-for="(item, index) in wuList" :key="index"> + <div class="bg_list_item_h"> + <div class="bg_list_item_num"> + <div class="bg_list_item_num_item"> + <div class="bg_list_item_num_item_wl"> + <span>{{ item.materialName }}{{ item.procedureName ? ` | ${item.procedureName}` : '' }}</span> + <div class="bg_list_item_num_item_wl_lx"> + <span class="green" v-if="item.qualityType == 0">鍚堟牸 / </span> + <span class="yellow" v-if="item.qualityType == 1">涓嶈壇 / </span> + <span class="red" v-if="item.qualityType == 2">鎶ュ簾 / </span> + <span>{{ item.locationName }} / </span> + <span>{{ item.batch }}</span> + </div> </div> - </div> - <div class="bg_list_item_num_item_sr"> - <input v-model="item.num" :disabled="!proxy.$auth('h5:workorderinput:update')" @blur="change(item.id, item.num, 'T', item.maxNum, item, item.unitAttribute)" type="number" /> - <span>{{item.unitName}}</span> + <div class="bg_list_item_num_item_sr"> + <input type="number" v-model="item.num" @input="inputwl(index)" /> + <span>{{ item.unitName }}</span> + </div> </div> </div> </div> - <template #right v-if="proxy.$auth('h5:workorderinput:delete')"> - <van-button style="height: 100%;" square text="鍒犻櫎" @click="deleItem(item.id, 'T')" type="danger" /> + <template #right> + <van-button style="height: 100%;" @click="deleItem(index)" square text="鍒犻櫎" type="danger" /> </template> </van-swipe-cell> </template> @@ -45,993 +87,538 @@ <span>鏆傛棤鏁版嵁</span> </div> </template> + <div class="kong" v-if="hasBom == 1 && bomType == 1"> + <span>褰撳墠宸ュ簭鏃犻渶鎶曟枡</span> + </div> </div> - <div class="bg_list_item"> + <div class="bg_list_item bottomval"> <div class="bg_list_item_top"> <div class="bg_list_item_top_left"> <div class="bg_list_item_top_left_x"></div> <span>浜у嚭鏄庣粏</span> </div> </div> - <!-- <template v-if="produceData && produceData.length > 0"> --> - <!-- v-for="(item, index) in produceData" :key="index" --> - <van-swipe-cell> - <div class="bg_list_item_num"> - <div class="bg_list_item_num_item"> - <span>鑹搧鏁�</span> - <div class="bg_list_item_num_item_sr"> - <!-- :disabled="!proxy.$auth('h5:workorderoutput:update')" --> - <!-- @blur="change(item.id, item.num, 'C', item.maxNum, item)" --> - <input type="number" v-model="produceFrom.qualified" @blur="changeCC('0', produceFrom.qualified, produceFrom.qualifiedId)" placeholder="璇疯緭鍏�" /> - <span v-if="info.umodel">{{info.umodel.name}}</span> - </div> + <div class="bg_list_item_h"> + <div class="bg_list_item_num"> + <div class="bg_list_item_num_item"> + <span><b>*</b>鑹搧鏁�</span> + <div class="bg_list_item_num_item_sr"> + <input type="number" v-model="from.qualified" @input="changeNum(1)" placeholder="璇疯緭鍏�" /> + <span>鍧�</span> </div> </div> - </van-swipe-cell> - <van-swipe-cell> - <div class="bg_list_item_num"> - <!-- @blur="change(item.id, item.num, 'C', item.maxNum, item)" --> - <div class="bg_list_item_num_item"> - <span>涓嶈壇鏁�</span> - <div class="bg_list_item_num_item_sr"> - <!-- :disabled="!proxy.$auth('h5:workorderoutput:update')" --> - <!-- @blur="change(item.id, item.num, 'C', item.maxNum, item)" --> - <input type="number" v-model="produceFrom.undesirable" @blur="changeCC('1', produceFrom.undesirable, produceFrom.undesirableId)" placeholder="璇疯緭鍏�" /> - <span v-if="info.umodel">{{info.umodel.name}}</span> - </div> - </div> - </div> - </van-swipe-cell> - <!-- <van-swipe-cell> - <div class="bg_list_item_num"> - <div class="bg_list_item_num_item" @click="show = true"> - <span>涓嶈壇椤�</span> - <div class="bg_list_item_num_item_sr"> - <span>璁剧疆 ></span> - </div> - </div> - </div> - </van-swipe-cell> --> - <!-- </template> - <template v-else> - <div class="kong"> - <span>鏆傛棤鏁版嵁</span> </div> - </template> --> + <div class="bg_list_item_num"> + <div class="bg_list_item_num_item"> + <span>涓嶈壇鏁�</span> + <div class="bg_list_item_num_item_sr"> + <input type="number" v-model="from.undesirable" @input="changeNum(2)" placeholder="璇疯緭鍏�" /> + <span>鍧�</span> + </div> + </div> + </div> + <div class="bg_list_item_num" v-if="from.undesirable > 0"> + <div class="bg_list_item_num_item" @click="show = true"> + <span><b>*</b>涓嶈壇椤�</span> + <div class="bg_list_item_num_item_sr"> + <span class="wulll" :style="{color: from.defectiveName ? '#305ED5' : ''}">{{from.defectiveName ? from.defectiveName : '璁剧疆'}}</span> + <img src="@/assets/icon/ic_ar@2x.png" alt="" /> + </div> + </div> + </div> + </div> </div> - <!-- <div class="bg_list_item"> + <div class="bg_plan" @click="TimeShow = true"> + <div class="bg_plan_label"> + <span><b>*</b>鎶ュ伐鏃堕暱</span> + </div> + <div class="bg_plan_label_val"> + <span :style="{color: from.durationName ? '#333' : ''}">{{from.durationName ? from.durationName : '璇烽�夋嫨'}}</span> + <img src="@/assets/icon/ic_ar@2x.png" alt="" /> + </div> + </div> + <div class="bg_list_item" v-if="infoBox"> <div class="bg_list_item_top"> <div class="bg_list_item_top_left"> <div class="bg_list_item_top_left_x"></div> - <span>鍚堟牸浜у嚭鏄庣粏</span> - <span class="blue left">{{ccTotal()}}</span> - </div> - <div class="bg_list_item_top_right" @click="jumpCC" v-if="proxy.$auth('h5:workorderoutput:create')"> - <img src="@/assets/icon/gongdan_ic_shoudong@2x.png" alt="" /> - <span>鎵嬪姩褰曞叆</span> + <span>宸ヨ祫缁╂晥</span> </div> </div> - <template v-if="produceData && produceData.length > 0"> - <van-swipe-cell v-for="(item, index) in produceData" :key="index"> - <div class="bg_list_item_num"> - <div class="bg_list_item_num_item"> - <span>{{item.code}}</span> - <div class="bg_list_item_num_item_sr"> - <input v-model="item.num" :disabled="!proxy.$auth('h5:workorderoutput:update')" @blur="change(item.id, item.num, 'C', item.maxNum, item)" type="number" /> - <span>{{item.company}}</span> - </div> + <div class="bg_list_item_h"> + <div class="bg_list_item_num"> + <div class="bg_list_item_num_item"> + <span>璁′欢鏂瑰紡</span> + <div class="bg_list_item_num_item_list"> + <div class="bg_list_item_num_item_list_item active" v-if="infoBox.type == 0">璁′欢</div> + <div class="bg_list_item_num_item_list_item active" v-if="infoBox.type == 1">璁℃椂</div> </div> </div> - <template #right v-if="proxy.$auth('h5:workorderoutput:delete')"> - <van-button style="height: 100%;" square text="鍒犻櫎" @click="deleItem(item.id, 'C')" type="danger" /> - </template> - </van-swipe-cell> - </template> - <template v-else> - <div class="kong"> - <span>鏆傛棤鏁版嵁</span> </div> - </template> - </div> - - <div class="bg_list_item"> - <div class="bg_list_item_top"> - <div class="bg_list_item_top_left"> - <div class="warning"></div> - <span>涓嶈壇浜у嚭鏄庣粏</span> - <span class="yellow left">{{blTotal()}}</span> - </div> - </div> - <template v-if="undesirable && undesirable.length > 0"> - <van-swipe-cell v-for="(item, index) in undesirable" :key="index"> - <div class="bg_list_item_num"> - <div class="bg_list_item_num_item"> - <span>{{item.code}}</span> - <div class="bg_list_item_num_item_sr"> - <input v-model="item.num" :disabled="!proxy.$auth('h5:workorderoutput:update')" @blur="change(item.id, item.num, 'C', item.maxNum, item)" type="number" /> - <span>{{item.company}}</span> - </div> + <div class="bg_list_item_num"> + <div class="bg_list_item_num_item"> + <span>宸ヨ祫鍗曚环</span> + <div class="bg_list_item_num_item_sr"> + <span class="color1">{{infoBox.salary}}鍏�/{{infoBox.type == 0 ? '浠�' : '鏃�'}}</span> </div> </div> - <template #right v-if="proxy.$auth('h5:workorderoutput:delete')"> - <van-button style="height: 100%;" square text="鍒犻櫎" @click="deleItem(item.id, 'C')" type="danger" /> - </template> - </van-swipe-cell> - </template> - <template v-else> - <div class="kong"> - <span>鏆傛棤鏁版嵁</span> </div> - </template> - </div> - - <div class="bg_list_item"> - <div class="bg_list_item_top"> - <div class="bg_list_item_top_left"> - <div class="error"></div> - <span>鎶ュ簾浜у嚭鏄庣粏</span> - <span class="red left">{{bfTotal()}}</span> - </div> - </div> - <template v-if="scrap && scrap.length > 0"> - <van-swipe-cell v-for="(item, index) in scrap" :key="index"> - <div class="bg_list_item_num"> - <div class="bg_list_item_num_item"> - <span>{{item.code}}</span> - <div class="bg_list_item_num_item_sr"> - <input v-model="item.num" :disabled="!proxy.$auth('h5:workorderoutput:update')" @blur="change(item.id, item.num, 'C', item.maxNum, item)" type="number" /> - <span>{{item.company}}</span> - </div> + <div class="bg_list_item_num"> + <div class="bg_list_item_num_item"> + <span>棰勮宸ヨ祫</span> + <div class="bg_list_item_num_item_sr"> + <span class="color1">{{expectedSalary}}鍏�</span> </div> </div> - <template #right v-if="proxy.$auth('h5:workorderoutput:delete')"> - <van-button style="height: 100%;" square text="鍒犻櫎" @click="deleItem(item.id, 'C')" type="danger" /> - </template> - </van-swipe-cell> - </template> - <template v-else> - <div class="kong"> - <span>鏆傛棤鏁版嵁</span> </div> - </template> - </div> --> - </div> - <div class="details_dj"> - <div class="details_dj_title"> - <div class="details_dj_title_left"> - <div class="details_x"></div> - <span>鐢熶骇鐐规</span> - </div> - <div class="details_dj_title_right" @click="jumpdj" v-if="proxy.$auth('h5:workorder:processRecord')"> - <img src="@/assets/icon/gongdan_ic_shoudong@2x.png" alt="" /> - <span>鎵嬪姩褰曞叆</span> - </div> - </div> - <div class="details_dj_list"> - <van-list - v-model:loading="loading" - :finished="finished" - finished-text="娌℃湁鏇村浜唦" - @load="pageDJs"> - <van-swipe-cell v-for="(item, index) in djData" :key="index"> - <div class="details_dj_list_item"> - <span>{{item.attrName}}锛歿{item.val}}</span> - <span>{{item.userName}} {{item.createTime}}</span> + <div class="bg_list_item_num"> + <div class="bg_list_item_num_item"> + <span>杈炬爣鐜�</span> + <div class="bg_list_item_num_item_sr"> + <span class="color1">{{complianceRate}}%</span> + </div> </div> - <template #right> - <van-button square type="danger" style="height: 100%;" @click="dele(item.id)" text="鍒犻櫎" /> - </template> - </van-swipe-cell> - </van-list> + </div> + </div> </div> </div> <!-- 鎶ュ伐鎸夐挳 --> - <template v-if="info.status === 2 || info.procedureNeedcheck === 1"> - <div class="bh_zw"></div> - <div class="bg_footer"> - <div class="bg_footer_submit" @click="submit">纭鎶ュ伐</div> - </div> - </template> - <!-- 鎵爜缁勪欢 --> - <v-ScanCode - :openCode="openCode" - :infos="['璇锋壂鎻忓伐瑁呯爜']" - @closePopup="closePopup" - @onDecode="onDecode" /> - <!-- 鎶ュ伐缁熻鏁版嵁 --> - <van-popup v-model:show="statistics" round :closeable="true" position="bottom" :style="{ height: '53%' }"> - <div class="tg"> - <div class="tg_header">璇风‘璁ゆ姤宸ヤ俊鎭�</div> - <div class="tg_table"> - <div class="tg_table_header"> - <div class="tg_table_header_item">绫诲瀷</div> - <div class="tg_table_header_item">鐗╂枡鍚嶇О</div> - <!-- <div class="tg_table_header_item">宸ヨ鏁伴噺</div> --> - <div class="tg_table_header_item">鐗╂枡鏁伴噺</div> - </div> - <div class="nr" v-if="statisticsData.length > 0"> - <div class="tg_table_nr" v-for="(item, index) in statisticsData" :key="index"> - <div class="tg_table_nr_item">{{item.name}}</div> - <div class="tg_table_nr_item">{{item.materialName}}</div> - <!-- <div class="tg_table_nr_item">{{item.gznum}}</div> --> - <div class="tg_table_nr_item" :style="item.name === '宸ュ崟鏈姇鏂�' ? 'color: #DE5243' : ''">{{item.num}}</div> - </div> - </div> - <div class="nr" v-else> - <div class="tg_table_nr"> - <div class="tg_table_nr_item1">鏆傛棤鏁版嵁</div> - </div> - </div> - </div> - <div class="tg_footer"> - <button class="tg_footer_qr" @click="submitBG" v-if="proxy.$auth('h5:workorderoutput:confirm') && isSubmit">纭鎶ュ伐</button> - <div class="tg_footer_fh" @click="gofh" v-else-if="!isSubmit">杩斿洖淇敼</div> - </div> - </div> - </van-popup> + <div class="bh_zw"></div> + <div class="bg_footer"> + <div class="bg_footer_submit1">缁х画鎶ュ伐</div> + <div class="bg_footer_submit" @click="submit">鎻愪氦</div> + </div> <!-- 閫夋嫨涓嶈壇椤� --> <van-popup v-model:show="show" round position="bottom" :style="{ height: '53%' }"> <div class="bl"> <div class="bl_head"> - <span @click="show = false">鍙栨秷</span> + <img src="@/assets/icon/ic_close@2x.png" style="opacity: 0;" alt="" /> <span>涓嶈壇椤�</span> - <span>纭</span> + <!-- <span>纭</span> --> + <img src="@/assets/icon/ic_close@2x.png" @click="show = false" alt="" /> </div> <div class="bl_list"> - <div class="bl_list_item" v-for="(item, i) in 12" :key="i"> + <div class="bl_list_item" v-for="(item, i) in cateList" :key="i" @click="changeChecked(i)"> <div class="bl_list_item_left"> - <input type="checkbox" :checked="true" name="" id="" /> - <span>鏈夊垝鐥�</span> + <input type="checkbox" :checked="item.active" /> + <span>{{ item.name }}</span> </div> <div class="bl_list_item_right"> - <input type="number" placeholder="璇疯緭鍏�" /> + <input type="number" @click.stop v-model="item.num" placeholder="0" /> </div> </div> </div> + <div class="bl_footer" @click="onConfirm3">纭</div> </div> + </van-popup> + <!-- 鍏ュ簱鐗╂枡 --> + <MaterialY :show="show1" :plansId="String(plansId)" :ids="ids" :deviceId="String(deviceId)" @close="close" @value="getValue" /> + <!-- 璁惧 --> + <van-popup v-model:show="deviceShow" round position="bottom" :style="{ height: '50%' }"> + <van-picker + :columns="deviceList" + @confirm="onConfirm" + @cancel="onCancel" + :columns-field-names="customFieldName" + /> + </van-popup> + <!-- 浜哄憳 --> + <user :show="userShow" @close="onCancel1" @value="onConfirm1" /> + <!-- 鏃堕棿 --> + <van-popup v-model:show="TimeShow" round position="bottom" :style="{ height: '50%' }"> + <van-datetime-picker + v-model="from.time" + type="time" + title="閫夋嫨鏃堕棿" + @confirm="onConfirm2" + @cancel="onCancel2" + /> </van-popup> </div> </template> <script setup lang="ts"> - import { getCurrentInstance, nextTick, onMounted, ref, reactive } from 'vue' - import { useRouter, useRoute } from "vue-router" - import { Dialog, Toast } from 'vant' - import { REGULAR } from '@/utils/utils' - import { - getBarcodeContent, - queryById, - getOrocessRecord, - deleteCT, - updateById, - comfirmDone, - comfirmDoneStandard, - getListByCondition, - allForStandard, - pageDJ, - deletedj, - dealWorkorderRecordStandard, - getWorkorderRecordListStandard - } from '@/apis/WorkOrderAPI' - import { QRCodeType } from '@/enum' - const { proxy }: any = getCurrentInstance() - import VWorkOrderInfo from '@/components/common/WorkOrderInfo.vue' + import { onMounted, ref, reactive, getCurrentInstance, computed } from 'vue' + import { useRouter } from 'vue-router' + import { getDeviceByCondition, getFindAll, queryOne, autoWorkReport, getIdPlansExt, categoryExtList } from '@/apis/PlanningAPI' + import MaterialY from '@/components/newCom/MaterialY.vue' + import user from '@/components/newCom/user.vue' + import { Toast } from 'vant' + const {$Bus} = getCurrentInstance().appContext.config.globalProperties const router = useRouter() - const route = useRoute() - - const loading = ref(false); - const finished = ref(false); let show = ref(false) - // 鐐规鏁版嵁 - let djData: any = ref([]) - // 鍒嗛〉鏌ヨ鏁版嵁 - let page = reactive({ - capacity: 10, - page: 0 + let show1 = ref(false) + let TimeShow = ref(false) + let deviceId = ref('') + let plansId = ref('') + let ids = ref('') + let total: any = ref('') // 鍙姇鏁伴噺 + + let from: any = reactive({ + processPlan: null, + deviceId: '', + deviceName: '', + userId: '', + userName: '', + qualified: '', // 鑹搧鏁� + undesirable: '', // 涓嶈壇鏁� + duration: '', + durationName: '', + time: '', + defective: [], + defectiveName: '' }) - // 浜у嚭鍚堟牸/涓嶈壇 - let produceFrom = reactive({ - qualifiedId: '', - qualified: '', // 鍚堟牸 - undesirableId: '', - undesirable: '' // 涓嶈壇 - }) + let infoBox: any = ref(null) // 宸ヨ祫缁╂晥 - // 璇︽儏鏁版嵁 - const info: any = ref({}) + let bomType: any = ref('') + let hasBom: any = ref('') + let deviceShow = ref(false) + let deviceList = ref([]) + let cateList:any = ref([]) + const customFieldName = { + text: 'name' + }; + let userShow = ref(false) + let userList = ref([]) + let wuList: any = ref([]) - // 鍒ゆ柇鏄惁鑳芥彁浜� - let isSubmit: any = ref<boolean>(false) - - // 涓嶈壇鏄庣粏 - let undesirable: any = ref([]) - - // 鎶ュ簾鏄庣粏 - let scrap: any = ref([]) - - // 鎵爜绫诲瀷 - let type: any = ref('') - - // 缁熻鏁版嵁 - let statisticsData: any = ref([ - // { - // name: '宸ュ崟鎶曟枡', - // materialName: '榛勬矙', - // num: 0 - // }, - // { - // name: '宸ュ崟鍚堟牸浜у嚭', - // materialName: '榛勬矙', - // num: 0 - // }, - // { - // name: '宸ュ崟涓嶈壇浜у嚭', - // materialName: '榛勬矙', - // num: 0 - // }, - // { - // name: '宸ュ崟鏈姇鏂�', - // materialName: '榛勬矙', - // num: 0 - // } - ]) - - // 鎶曟枡鏁版嵁 - const feedingData: any = ref([]) - - // 浜у嚭鏁版嵁 - const produceData: any = ref([]) - - // 鎺у埗鎵爜鏄剧ず闅愯棌 - const openCode = ref<boolean>(false) - - // 鎺у埗鎶ュ伐缁熻 - const statistics = ref<boolean>(false) - - // 鎶曟枡缁熻 - const tlTotal = (): string => { - if (feedingData.value.length > 0) { - let total: number = 0 - feedingData.value.forEach((element: any) => { - total = total + element.num - }) - return `${total}` + // 浜у嚭鏁伴噺楠岃瘉 + const changeNum = (type: number) => { + let num = total.value - (Number(from.qualified) + Number(from.undesirable)) + if (type == 2) { + from.defective = [] + from.defectiveName = '' } - return '' - } - - // 淇敼浜у嚭 - const changeCC = (downType: string, num: number, recordId: string) => { - if (!num) return - console.log(produceFrom.qualified + produceFrom.undesirable) - if ((produceFrom.qualified + produceFrom.undesirable) > info.value.planNum) { - return Toast.fail({ message: '浜у嚭鏁伴噺涓嶈兘澶т簬璁″垝鏁伴噺', duration: 2000 }) - } - if (num >= 0) { - dealWorkorderRecordStandard({ - downType, num, recordId, workorderId: route.query.id - }).then(res => { - if (res.code === 200) { - getOrocessRecordCC() - } - }) - } else { - if (downType == 0) { - produceFrom.qualified = 0 + if (num < 0) { + Toast('浜у嚭鏁伴噺涓嶈兘澶т簬鍙骇鍑烘暟閲忥紒') + if (type == 1) { + from.qualified = '' } else { - produceFrom.undesirable = 0 + from.undesirable = '' } - Toast.fail({ message: '浜у嚭鏁伴噺涓嶈兘灏忎簬0', duration: 2000 }) } } - // 璺宠浆鐐规 - const jumpdj = () => { - router.push({ name: 'spotCheck', query: { id: route.query.id } }) - } - - // 鍒犻櫎鐐规 - const dele = (id: string | number): void => { - deletedj(id) - .then(res => { - if (res.code === 200) { - djData.value = [] - finished.value = false - page.page = 0 - pageDJs() - } - }) - } - - // 鐐规鏁版嵁 - const pageDJs = () => { - if (!finished.value) { - page.page = page.page + 1 - loading.value = true - pageDJ({ - capacity: page.capacity, - page: page.page, - model: { - workorderId: route.query.id - } - }).then(res => { - if (res.code === 200 && res.data && res.data.records.length !== 0) { - djData.value.push(...res.data.records) - } else { - finished.value = true - } - loading.value = false - }).catch(err => { - loading.value = false - finished.value = true - }) + // 楠岃瘉鐗╂枡鏁伴噺 + const inputwl = (i: number) => { + if (wuList.value[i].num > wuList.value[i].total) { + wuList.value[i].num = '' + Toast('鎶曟枡鏁伴噺涓嶈兘澶т簬搴撳瓨鏁伴噺') } } - // 缁熻 - const ccTotal = (): string => { - if (produceData.value.length > 0) { - let total: number = 0 - produceData.value.forEach((element: any) => { - total = total + element.num - }) - return `${total}${produceData.value[0].company}` - } - return '' + const changeChecked = (i: number) => { + cateList.value[i].active = !cateList.value[i].active } - // 缁熻 - const blTotal = (): string => { - if (undesirable.value.length > 0) { - let total: number = 0 - undesirable.value.forEach((element: any) => { - total = total + element.num - }) - return `${total}${undesirable.value[0].company}` - } - return '' - } - - // 缁熻 - const bfTotal = (): string => { - if (scrap.value.length > 0) { - let total: number = 0 - scrap.value.forEach((element: any) => { - total = total + element.num - }) - return `${total}${scrap.value[0].company}` - } - return '' - } - - // 鍒犻櫎浜у嚭/鎶曟枡 - const deleItem = (id: any, type: string) => { - Dialog.confirm({ - title: '鎻愮ず', - message: '纭畾鍒犻櫎姝ゆ潯璁板綍鍚楋紵', - }).then(() => { - deleteCT(id) - .then(res => { - if (res.code === 200 && type === 'C') { - getOrocessRecordCC() - } else if (res.code === 200 && type === 'T') { - getOrocessRecords() - } - }) - }).catch(() => { - // on cancel + const onConfirm3 = () => { + let isOpen = false + cateList.value.forEach((item: any, index: number) => { + if (item.active) { + isOpen = true + } }) - } - - // 璺宠浆鎵嬪姩浜у嚭 - const jumpCC = () => { - router.push({ name: 'manualOutput', query: { id: route.query.id, num: produceData.value.length > 0 ? produceData.value[0].num : '' } }) - } - - // 璺宠浆鎵嬪姩鎶曟枡 - const jumpTL = () => { - router.push({ name: 'manualFeeding', query: { id: route.query.id } }) - } - - // 鍏抽棴鎵爜缁勪欢 - const closePopup = (): void => { - openCode.value = false - } - - // 鑾峰彇鎵爜鍊� - const onDecode = (data: string[]): void => { - getBarcodeContent({ - barcode: data[0] - }).then(res => { - if (res.code === 200) { - if (res.data.barcodeType === QRCodeType.GZ) { - if (type.value === 'tl') { // 鎶曟枡鎿嶄綔 - getListByCondition({ id: res.data.id }) - .then(gz => { - if (gz.code === 200) { - if (gz.data[0].status !== 1) { - router.push({ name: 'codeScanningFeeding', query: { id: route.query.id, gzId: res.data.id } }) - } else { - Toast.fail({ message: '鎵弿鐨勫伐瑁呯姸鎬佷笉鑳戒负绌�', duration: 2000 }) - } - } - }) - } - if (type.value === 'cc') { // 浜у嚭鎿嶄綔 - router.push({ name: 'codeScanningOutput', query: { id: route.query.id, gzId: res.data.id } }) - } - } else { - Toast({ message: '璇锋壂鎻忔纭殑绡瓙鐮�', duration: 2000 }) + if (!isOpen) return Toast('璇烽�夋嫨涓嶈壇椤�') + let arr: any = [] + let total: any = 0 + let name: any = '' + cateList.value.forEach((item: any, index: number) => { + if (item.active) { + if (item.num <= 0) { + return Toast('涓嶈壇鏁伴噺蹇呴』澶т簬0') } + total = total += item.num + arr.push(item) + name += item.name + item.num + '锛�' } }) - nextTick(() => { - openCode.value = false - }) + if (total !== from.undesirable) return Toast('涓嶈壇鏁板繀椤荤瓑浜庝骇鍑轰笉鑹暟') + from.defective = arr + from.defectiveName = name + show.value = false } - // 璺宠浆鎵嬪姩鎶曟枡 - const jump = () => { - router.push({ name: 'manualFeeding', query: { id: route.query.id } }) - } - - // 璺宠浆鎵爜鎶曟枡 - const jump1 = (types: string) => { - type.value = types - openCode.value = true - } - - // 鏌ヨ宸ュ崟璇︽儏 - const queryByIds = () => { - queryById(route.query.id).then(res => { - if (res.code === 200) { - info.value = res.data - } - }) - } - - // 鏌ヨ宸ュ崟鐢熶骇璁板綍---鎶曟枡 - const getOrocessRecords = () => { - feedingData.value = [] - allForStandard({ - workorderId: route.query.id, - type: 0 - }).then(res => { - if (res.code === 200) { - feedingData.value = res.data - // res.data.forEach((item: any) => { - // feedingData.value.push({ id: item.id, company: item.umodel.name, gz: item.amodel.code, name: item.mmodel.name, code: item.amodel.code + ' - ' + item.mmodel.name, num: item.num, ynum: item.num, maxNum: item.amodel.num }) - // }) - } - }) - } - - // 鏌ヨ宸ュ崟鐢熶骇璁板綍---浜у嚭 - const getOrocessRecordCC = () => { - produceData.value = [] - undesirable.value = [] - scrap.value = [] - getWorkorderRecordListStandard({ - workorderId: route.query.id - }).then(res => { - if (res.code === 200) { - if (res.data.length > 0) { - res.data.forEach((item: any) => { - if (item.doneType === 1) { - produceFrom.undesirable = item.num - produceFrom.undesirableId = item.id - } else { - produceFrom.qualified = item.num - produceFrom.qualifiedId = item.id - } - }) - } - // res.data.forEach((item: any) => { - // if (item.doneType === 0 || !item.doneType) { // 鍚堟牸 | 娣峰悎 - - // produceData.value.push({ id: item.id, company: item.umodel.name, name: item.mmodel.name, code: item.amodel.code + ' - ' + item.mmodel.name, num: item.num, ynum: item.num, maxNum: item.amodel.num }) - // } else if (item.doneType === 1) { // 涓嶈壇 - // undesirable.value.push({ id: item.id, company: item.umodel.name, name: item.mmodel.name, code: item.amodel.code + ' - ' + item.mmodel.name, num: item.num, ynum: item.num, maxNum: item.amodel.num }) - // } else if (item.doneType === 2) { // 鎶ュ簾 - // scrap.value.push({ id: item.id, company: item.umodel.name, name: item.mmodel.name, code: item.amodel.code + ' - ' + item.mmodel.name, num: item.num, ynum: item.num, maxNum: item.amodel.num }) - // } - // }) - } - }) - } - - // 缂栬緫鎶曟枡/浜у嚭 - const change = (id: any, num: any, type: any, maxNum: number, item: object, unitAttribute: number): void => { - let obj: any = item - if (type === 'T') { - if (unitAttribute == 0 && num != '') { - if(!REGULAR.positiveInteger.test(num)){ - obj.num = obj.ynum - Toast({ message: '鍙兘杈撳叆姝f暣鏁�' }) - return - } - } - if (unitAttribute == 1 && num != '') { - if(!REGULAR.number.test(num)){ - Toast({ message: '鍙兘杈撳叆姝f暣鏁版垨灏忔暟锛堟渶澶氬洓浣嶏級' }) - obj.num = obj.ynum - return - } - } - if (num > maxNum) { - obj.num = obj.ynum - Toast.fail({ message: '瓒呭嚭宸ヨ鎬绘暟' }) - return - } - } else if (type === 'C' && num > info.value.planNum) { - obj.num = obj.ynum - Toast.fail({ message: '浜у嚭鏁伴噺涓嶈兘瓒呰繃璁″垝鏁伴噺' }) - return - } - updateById({ id: id, num: num }).then(res => { - if (res.code === 200 && type === 'T') { - getOrocessRecords() - } else if (res.code === 200 && type === 'C') { - getOrocessRecordCC() - } - }) - } - - // 纭鎶ュ伐 const submit = () => { - if (info.value.bomType === 1) { // 鎷夊紡 - console.log('鎷夊紡') - statisticsData.value = [] - if (info.value.hasBom === 0) { - console.log('鏃燽om') - // let data: any = [ - // { name: '宸ュ崟鎶曟枡', gznum: feedingData.value.length, wlmc: feedingData.value.length > 0 ? feedingData.value[0].name : '', wlnum: 0 }, - // { name: '宸ュ崟鍚堟牸浜у嚭', gznum: produceData.value.length, wlmc: produceData.value.length > 0 ? produceData.value[0].name : '', wlnum: 0 }, - // { name: '宸ュ崟涓嶈壇浜у嚭', gznum: 0, wlmc: '', wlnum: 0 }, - // { name: '宸ュ崟鏈姇鏂�', gznum: '', wlmc: feedingData.value.length > 0 ? feedingData.value[0].name : '', wlnum: 0 } - // ] - // if (undesirable.value.length > 0) { // 鍒ゆ柇鏈夋病鏈変笉鑹� - // data[2].wlmc = undesirable.value[0].name - // data[2].gznum = data[2].gznum + undesirable.value.length - // } - // if (scrap.value.length > 0) { // 鍒ゆ柇鏈夋病鏈変笉鑹� - // data[2].wlmc = scrap.value[0].name - // data[2].gznum = data[2].gznum + scrap.value.length - // } - // let tl: number = 0 - // let cc: number = 0 - // let bl: number = 0 - // undesirable.value.forEach((item: any) => { // 涓嶈壇 - // bl = bl + item.num - // }) - // scrap.value.forEach((item: any) => { // 鎶ュ簾 - // bl = bl + item.num - // }) - // if (produceData.value.length > 0) { // 鍒ゆ柇鏈夋病鏈夊悎鏍间骇鍑� - // produceData.value.forEach((item: any) => { // 浜у嚭 - // cc = cc + item.num - // }) - // } - // feedingData.value.forEach((item: any) => { // 鎶曟枡 - // tl = tl + item.num - // }) - // data[0].wlnum = tl.toString() + info.value.umodel.name - // if (produceData.value.length > 0) { - // data[1].wlnum = cc.toString() + info.value.umodel.name - // } - // data[2].wlnum = bl.toString() + info.value.umodel.name - // let total: number = info.value.planNum - (Number(cc) + Number(bl)) - // data[data.length - 1].wlnum = (info.value.planNum - Number(cc) - Number(bl)).toString() + info.value.umodel.name - // if (total === 0) { - // isSubmit.value = true - // } else { - // isSubmit.value = false - // } - - let arr: any = [] - let tl = 0 - let res = getGroupNum(feedingData.value) - for (let i in res) { - let num = 0 - res[i].forEach((item: any) => { - num += item.num - }) - arr.push({ name: '宸ュ崟鎶曟枡', materialName: i + res[i][0].procedureName, num: num }) - } - feedingData.value.forEach((item: any) => { - tl += item.num - }) - statisticsData.value = [...statisticsData.value, ...arr] - statisticsData.value.push({ name: '宸ュ崟鍚堟牸浜у嚭', materialName: info.value.mmodel.name + '-' + info.value.procedureName, num: produceFrom.qualified }) - statisticsData.value.push({ name: '宸ュ崟涓嶈壇浜у嚭', materialName: info.value.mmodel.name + '-' + info.value.procedureName, num: produceFrom.undesirable }) - statisticsData.value.push({ name: '宸ュ崟鏈姇鏂�', materialName: '', num: info.value.planNum - Number(produceFrom.qualified) - Number(produceFrom.undesirable) }) - let total: number = info.value.planNum - (Number(produceFrom.qualified) + Number(produceFrom.undesirable)) - if (total === 0) { - isSubmit.value = true - } else { - isSubmit.value = false - } - // if (Number(tl) <= info.value.planNum) { - // let total: number = Number(tl) - Number(cc) - Number(bl) // 鏄惁鏈変綑 - // data[data.length - 1].wlnum = (Number(tl) - Number(cc) - Number(bl)).toString() + info.value.umodel.name - // if (total === 0) { - // isSubmit.value = true - // } else { - // isSubmit.value = false - // } - // } else { - // isSubmit.value = false - // } - // statisticsData.value = data - } else if (info.value.hasBom === 1) { // 鏈塨om鎯呭喌 - console.log('鏈塨om') - // let cc: number = 0 - // let bl: number = 0 - // let newData: any = {} - // if (feedingData.value.length > 0) { // 鎶曟枡 - // feedingData.value.forEach((e: any) => { - // if (Object.keys(newData).indexOf('' + e.name) === -1) { - // newData[e.name] = [] - // } - // newData[e.name].push(e) - // }) - // for (let key in newData) { - // let obj = { name: '宸ュ崟鎶曟枡', gznum: newData[key].length, wlmc: key, wlnum: 0, num: 0 } - // newData[key].forEach((item: any) => { - // obj.wlnum = obj.wlnum + item.num - // obj.num = item.num - // }) - // obj.wlnum = obj.wlnum.toString() + newData[key][0].company as never - // statisticsData.value.push(obj) - // } - // } - // if (produceData.value.length > 0) { // 浜у嚭 - // produceData.value.forEach((item: any) => { - // cc = cc + item.num - // }) - // statisticsData.value.push({ name: '宸ュ崟鍚堟牸浜у嚭', gznum: produceData.value.length, wlmc: info.value.mmodel.name, wlnum: cc + info.value.umodel.name, num: cc }) - // } - // if (undesirable.value.length > 0 || scrap.value.length > 0) { // 涓嶈壇/鎶ュ簾 - // undesirable.value.forEach((item: any) => { - // bl = bl + item.num - // }) - // scrap.value.forEach((item: any) => { - // bl = bl + item.num - // }) - // statisticsData.value.push({ name: '宸ュ崟涓嶈壇浜у嚭', gznum: undesirable.value.length + scrap.value.length, wlmc: info.value.mmodel.name, wlnum: bl + info.value.umodel.name, num: bl }) - // } - // let totaltl: number = 0 - // let totalcc: number = 0 - // let totalbl: number = 0 - // statisticsData.value.forEach((item: any) => { - // if (item.name === '宸ュ崟鎶曟枡') { - // totaltl = totaltl + item.num - // } else if (item.name === '宸ュ崟鍚堟牸浜у嚭') { - // totalcc = totalcc + item.num - // } else if (item.name === '宸ュ崟涓嶈壇浜у嚭') { - // totalbl = totalbl + item.num - // } - // }) - // isSubmit.value = totalcc + totalbl <= info.value.planNum; - let arr: any = [] - let tl = 0 - let res = getGroupNum(feedingData.value) - for (let i in res) { - let num = 0 - res[i].forEach((item: any) => { - num += item.num - }) - arr.push({ name: '宸ュ崟鎶曟枡', materialName: i, num: num }) - } - feedingData.value.forEach((item:any) => { - tl += item.num - }) - statisticsData.value = [...statisticsData.value, ...arr] - statisticsData.value.push({ name: '宸ュ崟鍚堟牸浜у嚭', materialName: info.value.mmodel.name + '-' + info.value.procedureName, num: produceFrom.qualified }) - statisticsData.value.push({ name: '宸ュ崟涓嶈壇浜у嚭', materialName: info.value.mmodel.name + '-' + info.value.procedureName, num: produceFrom.undesirable }) - isSubmit.value = produceFrom.qualified + produceFrom.undesirable <= info.value.planNum; - } + if (!from.processPlan) return Toast('璁″垝涓嶈兘涓虹┖') + if (!from.deviceId) return Toast('璁惧涓嶈兘涓虹┖') + if (!from.userId) return Toast('鐢熶骇浜哄憳涓嶈兘涓虹┖') + if (hasBom.value == 1 && bomType.value == 1) { + console.log('涓嶉渶瑕佹姇鏂�') } else { - console.log('鎺ㄥ紡') - if (feedingData.value.length === 0) { - Toast.fail({ message: '鎶曟枡鏄庣粏涓嶈兘涓虹┖' }) - return - } - statisticsData.value = [] - if (info.value.hasBom === 0) { - console.log('鏃燽om') - // let data: any = [ - // { name: '宸ュ崟鎶曟枡', gznum: feedingData.value.length, wlmc: feedingData.value.length > 0 ? feedingData.value[0].name : '', wlnum: 0 }, - // { name: '宸ュ崟鍚堟牸浜у嚭', gznum: produceData.value.length, wlmc: produceData.value.length > 0 ? produceData.value[0].name : '', wlnum: 0 }, - // { name: '宸ュ崟涓嶈壇浜у嚭', gznum: 0, wlmc: '', wlnum: 0 }, - // { name: '宸ュ崟鏈姇鏂�', gznum: '', wlmc: feedingData.value.length > 0 ? feedingData.value[0].name : '', wlnum: 0 } - // ] - // if (undesirable.value.length > 0) { // 鍒ゆ柇鏈夋病鏈変笉鑹� - // data[2].wlmc = undesirable.value[0].name - // data[2].gznum = data[2].gznum + undesirable.value.length - // } - // if (scrap.value.length > 0) { // 鍒ゆ柇鏈夋病鏈変笉鑹� - // data[2].wlmc = scrap.value[0].name - // data[2].gznum = data[2].gznum + scrap.value.length - // } - // let tl = 0 - // let cc = 0 - // let bl = 0 - // undesirable.value.forEach((item: any) => { // 涓嶈壇 - // bl = bl + item.num - // }) - // scrap.value.forEach((item: any) => { // 鎶ュ簾 - // bl = bl + item.num - // }) - // if (produceData.value.length > 0) { // 鍒ゆ柇鏈夋病鏈夊悎鏍间骇鍑� - // produceData.value.forEach((item: any) => { // 浜у嚭 - // cc = cc + item.num - // }) - // } - // feedingData.value.forEach((item: any) => { // 鎶曟枡 - // tl = tl + item.num - // }) - // data[0].wlnum = tl.toString() + info.value.umodel.name - // if (produceData.value.length > 0) { - // data[1].wlnum = cc.toString() + info.value.umodel.name - // } - // data[2].wlnum = bl.toString() + info.value.umodel.name - // if (Number(tl) <= info.value.planNum) { - // let total: number = Number(tl) - Number(cc) - Number(bl) // 鏄惁鏈変綑 - // data[data.length - 1].wlnum = (Number(tl) - Number(cc) - Number(bl)).toString() + info.value.umodel.name - // if (total === 0) { - // isSubmit.value = true - // } else { - // isSubmit.value = false - // } - // } else { - // isSubmit.value = false - // } - // statisticsData.value = data - let arr: any = [] - let tl = 0 - let res = getGroupNum(feedingData.value) - for (let i in res) { - let num = 0 - res[i].forEach((item: any) => { - num += item.num - }) - arr.push({ name: '宸ュ崟鎶曟枡', materialName: i + '-' + res[i][0].procedureName, num: num }) - } - feedingData.value.forEach((item:any) => { - tl += item.num - }) - statisticsData.value = [...statisticsData.value, ...arr] - statisticsData.value.push({ name: '宸ュ崟鍚堟牸浜у嚭', materialName: info.value.mmodel.name + '-' + info.value.procedureName, num: produceFrom.qualified }) - statisticsData.value.push({ name: '宸ュ崟涓嶈壇浜у嚭', materialName: info.value.mmodel.name + '-' + info.value.procedureName, num: produceFrom.undesirable }) - if (Number(tl) <= info.value.planNum) { - let total: number = Number(tl) - Number(produceFrom.qualified) - Number(produceFrom.undesirable) // 鏄惁鏈変綑 - statisticsData.value.push({ name: '宸ュ崟鏈姇鏂�', materialName: '', num: (Number(tl) - Number(produceFrom.qualified) - Number(produceFrom.undesirable)).toFixed(2) }) - if (total === 0) { - isSubmit.value = true - } else { - isSubmit.value = false - } - } else { - isSubmit.value = false - } - } else if (info.value.hasBom === 1) { // 鏈塨om鎯呭喌 - console.log('鏈塨om') - let arr: any = [] - let tl = 0 - let res = getGroupNum(feedingData.value) - for (let i in res) { - let num = 0 - res[i].forEach((item: any) => { - num += item.num - }) - arr.push({ name: '宸ュ崟鎶曟枡', materialName: i, num: num }) - } - feedingData.value.forEach((item:any) => { - tl += item.num - }) - statisticsData.value = [...statisticsData.value, ...arr] - statisticsData.value.push({ name: '宸ュ崟鍚堟牸浜у嚭', materialName: info.value.mmodel.name + '-' + info.value.procedureName, num: produceFrom.qualified }) - statisticsData.value.push({ name: '宸ュ崟涓嶈壇浜у嚭', materialName: info.value.mmodel.name + '-' + info.value.procedureName, num: produceFrom.undesirable }) - // isSubmit.value = produceFrom.qualified + produceFrom.undesirable <= info.value.planNum; - isSubmit.value = true - } + if (!wuList.value.length === 0) return Toast('鎶曟枡涓嶈兘涓虹┖') } - statistics.value = true - } - - // 鏍规嵁鏌愪釜瀛楁杩涜鍒嗙粍 - const getGroupNum = (arr: any) => { - let newArry: any = {}; - for (let i = 0; i < arr.length; i++) { - if (newArry[arr[i].materialName]) { - newArry[arr[i].materialName].push(arr[i]) - } else { - newArry[arr[i].materialName] = [arr[i]] - } + if (!from.qualified) return Toast('鑹搧鏁颁笉鑳戒负绌�') + // 鏈変笉鑹暟 + if (from.undesirable > 0) { + if (from.defective.length === 0) return Toast('涓嶈壇椤逛笉鑳戒负绌�') } - return newArry; - } - - // 杩斿洖淇敼 - const gofh = () => { - statistics.value = false - } - - // 纭鎶ュ伐 - const submitBG = () => { - comfirmDoneStandard({ - id: route.query.id + if (!from.duration) return Toast('鎶ュ伐鏃堕暱涓嶈兘涓虹┖') + autoWorkReport({ + createWorkorderRecordDTO: { + duration: from.duration, + qualifiedNum: from.qualified, + unQualifiedNum: from.undesirable + }, + plansId: from.processPlan.id, + proGroupId: deviceId.value, + proUserList: [from.userId], + recordList: wuList.value.map((item: any) => { + return { + wstockId: item.id, + num: item.num + } + }), + createUnqualifiedDTOList: from.defective.map((item: any) => { + return { + categoryId: item.id, + unQualifiedNum: item.num + } + }) }).then(res => { if (res.code === 200) { - Toast.success({ message: '鎶ュ伐鎴愬姛', forbidClick: true, duration: 2000 }) + Toast.success({message: '鎶ュ伐鎴愬姛锛�'}) setTimeout(() => { - router.go(-2) - }, 2000) + router.go(-1) + }, 2000); } }) + } + + // 棰勮宸ヨ祫 + const expectedSalary = computed(() => { + if (!infoBox.value) return 0 + // 鎸変欢璁$畻 + if (infoBox.value.type == 0) { + console.log('璁′欢') + if (!from.qualified) return 0 + if (infoBox.value.unqualified == 1) { // 鏄惁璁″叆涓嶈壇鍝� + let total = Number(from.qualified) + Number(from.undesirable) + return total * infoBox.value.salary + } else { + return Number(from.qualified) * infoBox.value.salary + } + } else { + console.log('璁℃椂') + if (!from.duration) return 0; + let h = (from.duration / 60 / 60).toFixed(2) + return Number(h) * infoBox.value.salary + } + }) + + // 杈炬爣鐜� + const complianceRate = computed(() => { + if (!infoBox.value) return 0; + if (!from.qualified) return 0; + if (!from.duration) return 0; + // 鎸変欢璁$畻 + // if (infoBox.value.type == 0) { + // if (infoBox.value.unqualified == 1) { // 鏄惁璁″叆涓嶈壇鍝� + let a = ((Number(from.qualified) + Number(from.undesirable)) / (from.duration / 60 / 60)).toFixed(2) + let b = (infoBox.value.num / (infoBox.value.times / 60 / 60)).toFixed(2) + console.log(a) + console.log(b) + return (Number(a) / Number(b)).toFixed(2) + // let total = (Number(from.qualified) + Number(from.undesirable)) / ((from.duration * 60 * 60) * infoBox.value.num / ) + // return total * infoBox.value.salary; + // } else { + // return Number(from.qualified) * infoBox.value.salary; + // } + // } else { + // console.log('鎸夋椂闀�') + // } + }) + + const deleItem = (index: number) => { + if (wuList.value.length === 1) return Toast('鑷冲皯淇濈暀涓�椤瑰唴瀹�') + wuList.value.splice(index, 1) + } + const openDev = () => { + if (!from.processPlan) return Toast('璇峰厛閫夋嫨宸ュ簭鐢熶骇璁″垝') + deviceShow.value = true + } + const openMaterial = () => { + if (!plansId.value) return Toast('璇峰厛閫夋嫨宸ュ簭鐢熶骇璁″垝') + if (!deviceId.value) return Toast('璇峰厛閫夋嫨鐢熶骇璁惧') + show1.value = true + } + const onConfirm1 = (e: any) => { + from.userId = e.userId + from.userName = e.name + userShow.value = false + } + const onConfirm2 = (e: string) => { + let h = Number(e.substring(0, 2)) + let m = Number(e.substring(3, 5)) + let s = 0 + if (h > 0) { + s += h * 60 * 60 + } + if (m > 0) { + s += m * 60 + } + from.duration = s + from.durationName = `${h}灏忔椂${m}鍒嗛挓` + TimeShow.value = false + } + const onCancel1 = () => { + userShow.value = false + } + const onCancel2 = () => { + TimeShow.value = false + } + const onConfirm = (e: any) => { + from.deviceId = e.id + from.deviceName = e.name + deviceId.value = e.id + from.userId = '' + from.userName = '' + // getFindAll({ + // deviceId: e.id, + // planId: from.processPlan.id + // }).then(res => { + // if (res.code === 200) { + // res.data.forEach((item: any) => { + // item.name = item.umodel.name + '-' + item.tmodel.name + // }) + // userList.value = res.data + // } + // }) + deviceShow.value = false + } + const onCancel = () => { + deviceShow.value = false + } + + const selectPlan = () => { + router.push({ name: 'processPlans' }) + } + + const close = () => { + show1.value = false + } + const getData = () => { + categoryExtList({ + cateType: "3" + }).then(res => { + if (res.code === 200) { + res.data.forEach((item: any) => { + item.active = false + item.num = '' + }) + cateList.value = res.data + } + }) + } + // 閫夋嫨鐗╂枡 + const getValue = (val: any) => { + let obj = JSON.parse(JSON.stringify(val)) + obj.total = val.num + wuList.value.unshift(obj) + let arr = wuList.value.map((item: any) => item.id) + ids.value = arr.join(',') + show1.value = false } onMounted(() => { - pageDJs() - queryByIds() - getOrocessRecords() - getOrocessRecordCC() + getData() + $Bus.on('callback', (res: any)=>{ + from.processPlan = res + plansId.value = res.id + from.deviceId = '' + from.deviceName = '' + deviceId.value = '' + from.userId = '' + from.userName = '' + total.value = res.num - res.workorderDistributNum + // 鑾峰彇璁惧 + getDeviceByCondition({ procedureId: res.procedureId }) + .then(res1 => { + if (res1.code === 200) { + deviceId.value = res1.data[0].id + from.deviceId = res1.data[0].id + from.deviceName = res1.data[0].name + deviceList.value = res1.data + } + }) + // 鑾峰彇绫诲瀷 + getIdPlansExt(res.id) + .then(res2 => { + if (res.code === 200) { + bomType.value = res2.data.bomType + hasBom.value = res2.data.hasBom + } + }) + // 鑾峰彇宸ヨ祫缁╂晥鏁版嵁 + queryOne({ + deleted: 0, + departId: res.factoryId, + materialId: res.materialId, + procedureId: res.procedureId + }).then(result => { + if (result.code === 200) { + infoBox.value = result.data + } + }) + }) }) </script> <style lang="scss" scoped> .bg { width: 100%; - /*height: 100%;*/ position: absolute; background: #F7F7F7; - .details_cz { + .bg_plan { width: 100%; + // height: 98px; padding: 30px; box-sizing: border-box; + background: #FFFFFF; + margin-bottom: 40px; display: flex; align-items: center; justify-content: space-between; - .details_cz_sdtl { - width: 330px; - height: 76px; - background: #FFFFFF; - border-radius: 36px; - display: flex; - align-items: center; - justify-content: center; - img { - width: 28px; - height: 28px; - margin-right: 14px; - } - span { - font-size: 26px; - font-weight: 400; - color: #222222; + span { + font-size: 30px; + font-family: PingFangSC-Regular, PingFang SC; + font-weight: 400; + color: #222222; + b { + color: red; } } - .details_cz_smtl { - /*width: 330px;*/ - flex: 1; - height: 76px; - background: $nav-color; - border-radius: 36px; + .bg_plan_nr { + display: flex; + flex-direction: column; + span { + font-size: 24px; + font-family: PingFangSC-Regular, PingFang SC; + font-weight: 400; + color: #666666; + margin-top: 20px; + &:first-child { + font-size: 32px; + font-family: PingFangSC-Medium, PingFang SC; + font-weight: 500; + color: #333333; + margin-top: 0 !important; + } + } + } + .bg_plan_label_val { display: flex; align-items: center; - justify-content: center; - img { - width: 28px; - height: 28px; - margin-right: 14px; - } span { - font-size: 26px; + font-size: 28px; + font-family: PingFangSC-Regular, PingFang SC; font-weight: 400; - color: #ffffff; + color: #999999; + } + img { + width: 12px; + height: 24px; + margin-left: 20px; } } } @@ -1039,7 +626,9 @@ width: 100%; display: flex; flex-direction: column; - margin-top: 30px; + .bottomval { + margin-bottom: 20px !important; + } .bg_list_item { display: flex; flex-direction: column; @@ -1111,172 +700,165 @@ } } } - .bg_list_item_num { + .top { + margin-top: 20px !important; + } + .bg_list_item_h { width: 100%; - background: white; padding: 0 30px; box-sizing: border-box; - .kong { - text-align: center; - font-size: 25px; - padding: 30px 0; - background: #ffffff; - } - .bg_list_item_num_item { + background: white; + .bg_list_item_num { + width: 100%; + min-height: 98px; + background: white; display: flex; + justify-content: center; align-items: center; - // height: 118px; - padding: 15px 0; - box-sizing: border-box; - justify-content: space-between; - border-bottom: 1px solid #E5E5E5; + border-bottom: 1PX solid #E5E5E5; &:last-child { - border: none; + border: none !important; } - .bg_list_item_num_item_wl { - flex-shrink: 0; + .kong { + text-align: center; + font-size: 25px; + padding: 30px 0; + background: #ffffff; + } + .bg_list_item_num_item { + width: 100%; + height: 100%; display: flex; - flex-direction: column; - span { - font-size: 34px; - color: #222222; + align-items: center; + // height: 118px; + padding: 15px 0; + box-sizing: border-box; + justify-content: space-between; + border-bottom: 1px solid #E5E5E5; + &:last-child { + border: none; } - .bg_list_item_num_item_wl_lx { - margin-top: 10px; - span { - color: #222222; - font-size: 28px; + .bg_list_item_num_item_list { + display: flex; + align-items: center; + .active { + background: #305ED5 !important; + color: #FFFFFF !important; + } + .bg_list_item_num_item_list_item { + width: 116px; + height: 62px; + line-height: 62px; + text-align: center; + background: #F2F2F2; + border-radius: 8px; + font-size: 26px; + font-family: PingFangSC-Regular, PingFang SC; + font-weight: 400; + color: #333333; + margin-right: 20px; + &:last-child { + margin: 0 !important; + } } } - } - .warning { - color: $nav-stateColor5 !important; - } - .err { - color: $nav-stateColor4 !important; - } - span { - flex-shrink: 0; - overflow: hidden; - text-overflow: ellipsis; - white-space: nowrap; + .bg_list_item_num_item_wl { + flex-shrink: 0; + display: flex; + flex-direction: column; + span { + font-size: 34px; + color: #222222; + } + .bg_list_item_num_item_wl_lx { + margin-top: 10px; + span { + color: #222222; + font-size: 28px; + } + } + } .warning { color: $nav-stateColor5 !important; - margin-right: 5px; } .err { color: $nav-stateColor4 !important; - margin-right: 5px; } - &:nth-child(1) { - font-size: 30px; - font-weight: 400; - color: #222222; - } - &:nth-child(2) { - font-size: 28px; - font-weight: 400; - color: #333333; - flex-shrink: 0; - } - } - .bg_list_item_num_item_sr { - flex: 1; - display: flex; - align-items: center; - justify-content: flex-end; - input::-webkit-input-placeholder { - font-size: 28px; - } - input { - text-align: right; - width: 180px; - height: 60px; - border-radius: 8px; - border: 1PX solid #E5E5E5; - margin-right: 20px; - font-size: 28px; - font-weight: 400; - color: #333333; - padding: 0 30px + img { + width: 12px; + height: 24px; + margin-left: 20px; } span { - font-size: 28px; - font-weight: 400; - color: #666666; + flex-shrink: 0; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + b { + font-size: 30px; + color: red; + margin-right: 5px; + } + .warning { + color: $nav-stateColor5 !important; + margin-right: 5px; + } + .err { + color: $nav-stateColor4 !important; + margin-right: 5px; + } + &:nth-child(1) { + font-size: 30px; + font-weight: 400; + color: #222222; + } + &:nth-child(2) { + font-size: 28px; + font-weight: 400; + color: #333333; + flex-shrink: 0; + } } - } - } - } - } - } - .details_dj { - display: flex; - flex-direction: column; - .details_dj_title { - width: 100%; - display: flex; - align-items: center; - justify-content: space-between; - padding: 0 30px 30px 30px; - box-sizing: border-box; - .details_dj_title_left { - display: flex; - align-items: center; - .details_x { - width: 8px; - height: 30px; - background: $nav-color; - border-radius: 2px; - margin-right: 12px; - } - span { - font-size: 32px; - font-weight: 500; - color: #222222; - } - } - .details_dj_title_right { - display: flex; - align-items: center; - img { - width: 28px; - height: 28px; - margin-right: 12px; - } - span { - font-size: 28px; - font-weight: 400; - color: $nav-color; - } - } - } - .details_dj_list { - width: 100%; - /*padding: 30px;*/ - box-sizing: border-box; - background: #ffffff; - display: flex; - flex-direction: column; - .details_dj_list_item { - display: flex; - flex-direction: column; - border-bottom: 1px solid #E5E5E5; - padding: 30px; - /*margin: 30px;*/ - /*padding-bottom: 30px;*/ - /*margin-bottom: 30px !important;*/ - span { - &:nth-child(1) { - font-size: 28px; - font-weight: 400; - color: #222222; - } - &:nth-child(2) { - font-size: 24px; - font-weight: 400; - color: #999999; - margin-top: 24px; + .bg_list_item_num_item_sr { + flex: 1; + display: flex; + align-items: center; + justify-content: flex-end; + .color1 { + font-size: 28px; + font-family: PingFangSC-Regular, PingFang SC; + font-weight: 400; + color: #333333; + } + input::-webkit-input-placeholder { + font-size: 28px; + } + input { + text-align: right; + width: 180px; + height: 60px; + border-radius: 8px; + border: 1PX solid #E5E5E5; + margin-right: 20px; + font-size: 28px; + font-weight: 400; + color: #333333; + padding: 0 30px + } + .wulll { + width: 400px; + text-align: right; + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; + } + span { + font-size: 28px; + font-family: PingFangSC-Regular, PingFang SC; + font-weight: 400; + color: #999999; + } + } } } } @@ -1290,10 +872,27 @@ bottom: 0; left: 0; width: 100%; + z-index: 9; padding: 0 30px 60px 30px; box-sizing: border-box; + display: flex; + align-items: center; + justify-content: space-between; + .bg_footer_submit1 { + width: 334px; + height: 88px; + line-height: 88px; + text-align: center; + background: #FFFFFF; + box-shadow: 0px 0px 12px 0px rgba(0,0,0,0.08); + border-radius: 8px; + font-size: 30px; + font-family: PingFangSC-Medium, PingFang SC; + font-weight: 500; + color: #305ED5; + } .bg_footer_submit { - width: 690px; + width: 334px; height: 88px; background: $nav-color; box-shadow: 0 0 12px 0 rgba(0, 0, 0, 0.08); @@ -1304,108 +903,6 @@ display: flex; align-items: center; justify-content: center; - } - } - .tg { - width: 100%; - height: 100%; - padding: 30px; - box-sizing: border-box; - .tg_header { - width: 100%; - height: 45px; - text-align: center; - line-height: 45px; - font-size: 30px; - font-weight: 500; - color: #222222; - } - .tg_table { - width: 100%; - margin-top: 40px; - .tg_table_header { - width: 100%; - height: 72px; - background: #EFF2FC; - display: flex; - align-items: center; - .tg_table_header_item { - flex: 1; - font-size: 26px; - font-weight: 500; - color: #333333; - display: flex; - align-items: center; - justify-content: center; - } - } - } - .nr { - max-height: 400px; - overflow-x: scroll; - .tg_table_nr { - width: 100%; - padding: 24px 10px; - box-sizing: border-box; - display: flex; - align-items: center; - background: white; - box-shadow: inset 0px -2px 0px 0px #E5E5E5; - .tg_table_nr_item { - flex: 1; - font-size: 26px; - font-weight: 500; - color: #333333; - display: flex; - align-items: center; - justify-content: center; - } - .tg_table_nr_item1 { - flex: 1; - font-size: 26px; - font-weight: 500; - color: #333333; - display: flex; - align-items: center; - justify-content: center; - } - } - } - } - .tg_footer { - width: calc(100% - 60px); - position: fixed; - bottom: 0; - display: flex; - justify-content: space-between; - align-items: center; - box-sizing: border-box; - padding-bottom: 40px; - .tg_footer_fh { - width: 100%; - height: 88px; - display: flex; - align-items: center; - justify-content: center; - background: rgba(66, 117, 252, 0.05); - border-radius: 8px; - border: 1PX solid #4275FC; - font-size: 32px; - font-weight: 500; - color: $nav-color; - } - .tg_footer_qr { - width: 100%; - height: 88px; - border: none; - display: flex; - align-items: center; - justify-content: center; - background: $nav-color; - border-radius: 8px; - font-size: 32px; - font-weight: 500; - color: #FFFFFF; } } .bl { @@ -1425,21 +922,38 @@ font-size: 32px !important; } } + img { + width: 28px; + height: 28px; + } + } + .bl_footer { + width: 100%; + height: 88px; + line-height: 88px; + text-align: center; + background: #305ED5; + border-radius: 8px; + font-size: 32px; + font-family: PingFangSC-Medium, PingFang SC; + font-weight: 500; + color: #FFFFFF; + margin-top: 30px; } .bl_list { width: 100%; - height: 580px; + height: 550px; overflow-y: scroll; margin-top: 30px; .bl_list_item { width: 100%; - height: 60px; + height: 96px; display: flex; align-items: center; justify-content: space-between; - margin-bottom: 20px; + border-bottom: 1PX solid #E5E5E5; &:last-child { - margin-bottom: 0 !important; + border: none !important; } .bl_list_item_left { flex: 1; @@ -1448,6 +962,7 @@ input { width: 30px; height: 30px; + border: 1PX solid #CCCCCC; margin: 0 !important; } span { @@ -1464,9 +979,19 @@ padding-left: 5px; width: 160px; height: 100%; + padding: 0 30px; + box-sizing: border-box; + text-align: right; font-size: 28px; + color: #333333; border-radius: 10px; - border: 2px solid #999999 + border: 1PX solid #CCCCCC; + &::-webkit-input-placeholder { + font-size: 28px; + font-family: PingFangSC-Regular, PingFang SC; + font-weight: 400; + color: #999999; + } } } } -- Gitblit v1.9.3