src/api/index.ts | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/api/task.ts | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/views/dashboard/components/ReportProductionModal.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/views/dashboard/components/ReportProductionModal1.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/views/dashboard/components/TaskControl.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
vite.config.ts | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
src/api/index.ts
@@ -290,3 +290,53 @@ data: params }) } export interface qualityParams { reportAmount: number workOrderProcedureID: number workerID: string workerName: string } /** * 看板质检 */ export function bulletinQualityInspection(params: qualityParams) { return request({ url: '/api-s/v1/reportWork/bulletinQualityInspection', method: 'post', data: params }) } export interface getQualityParams { workerId: string procedureId: string } /** * 看板获取质检信息 */ export function getQualityInspection(params: getQualityParams) { return request({ url: '/api-s/v1/reportWork/bulletinGetQualityInspection', method: 'post', data: params }) } export interface bulletinReportParams { reportAmount: number workOrderProcedureID: number workerID: string workerName: string ids: number[] } /** * 看板报工 */ export function bulletinReport(params: bulletinReportParams) { return request({ url: '/api-s/v1/reportWork/bulletinReport', method: 'post', data: params }) } src/api/task.ts
@@ -73,6 +73,7 @@ CurrentProcedureIndex: number CanStarted: boolean ProcedureModel: ProcedureModel ShowCheck: boolean } export interface Material { materialId: string src/views/dashboard/components/ReportProductionModal.vue
@@ -1,8 +1,9 @@ <template> <div class="report-production-modal"> <BaseModal v-model="modelData" :wider="true" @close="closeModal"> <template #title> 生产报工 </template> <template #title> {{ modelTitle }} </template> <div class="report-content"> <div v-if="modelTitle == '提交质检'" class="r-c-title">数量:</div> <div class="numbers">{{ inputNumber }}</div> <div class="buttons"> <BigButton @@ -24,8 +25,9 @@ import { useVModel } from '@vueuse/core' import BigButton from './BigButton.vue' import { ref, watch } from 'vue' const props = withDefaults(defineProps<{ modelValue: boolean; amount?: number }>(), { const props = withDefaults(defineProps<{ modelValue: boolean; modelTitle: string; amount?: number }>(), { modelValue: false, modelTitle: '', amount: 0 }) const emit = defineEmits<{ @@ -82,6 +84,14 @@ .report-content { padding: 60px 0 0 230px; height: 520px; position: relative; .r-c-title { position: absolute; top: 70px; left: 110px; font-size: 26px; color: #fff; } } .numbers { height: 80px; src/views/dashboard/components/ReportProductionModal1.vue
New file @@ -0,0 +1,126 @@ <template> <div class="report-production-modal"> <BaseModal v-model="modelData" :wider="true" @close="closeModal"> <template #title> {{ modelTitle }} </template> <div class="report-content"> <div class="r-c-top"> <div class="t-common"> 合格:<span style="color: #00ff00">{{ passAmount }}</span> </div> <div class="t-common"> 返工:<span style="color: #ff9900">{{ reworkAmount }}</span> </div> <div class="t-common"> 报废:<span style="color: #ff0000">{{ scrappedAmount }}</span> </div> </div> <div class="r-c-middle"> <div>当前可报工数量</div> <div>{{ passAmount }}</div> </div> <div class="r-c-bottom"> <BigButton class="btn" :bg-color="'#f44336'" :color="'#ffffff'" @click="closeModal">{{ '取消' }}</BigButton> <BigButton class="btn" :bg-color="'#2196F3'" :color="'#ffffff'" @click="clickBtn">{{ '报工' }}</BigButton> </div> </div> </BaseModal> </div> </template> <script setup lang="ts"> import { useVModel } from '@vueuse/core' import BigButton from './BigButton.vue' import { ref, watch } from 'vue' const props = withDefaults( defineProps<{ modelValue: boolean modelTitle: string amount?: number passAmount: number reworkAmount: number scrappedAmount: number }>(), { modelValue: false, modelTitle: '', amount: 0, passAmount: 0, // 合格 reworkAmount: 0, // 返工 scrappedAmount: 0 // 报废 } ) const emit = defineEmits<{ 'update:modelValue': [show: boolean] submit: [inputNumber: number] close: [] }>() const modelData = useVModel(props, 'modelValue', emit) function closeModal() { emit('close') } const inputNumber = ref('') function clickBtn() { emit('submit', +inputNumber.value) } watch(modelData, () => { if (modelData.value) { inputNumber.value = (props.amount ?? '').toString() } }) </script> <style scoped lang="scss"> .report-content { padding: 60px 80px 0; height: 520px; position: relative; .r-c-top { display: flex; font-size: 24px; .t-common { width: 33%; color: #fff; margin-left: 30px; } } .r-c-middle { font-size: 30px; font-weight: 700; color: #fff; text-align: center; margin-top: 120px; } .r-c-bottom { position: absolute; bottom: -20px; right: 60px; .btn { margin-right: 20px; // margin-bottom: 20px; width: 120px; height: 60px; } } } .numbers { height: 80px; border: 1px solid #fff; padding: 0 6px; width: 400px; margin-bottom: 20px; line-height: 80px; text-align: right; font-size: 40px; color: #fff; } .buttons { width: 420px; } .btn { margin-right: 20px; margin-bottom: 20px; width: 120px; height: 70px; } </style> src/views/dashboard/components/TaskControl.vue
@@ -22,7 +22,20 @@ </BigButton> <template v-if="task?.Procedure.Status === 2 || task?.Procedure.Status === 3"> <BigButton class="btn" bg-color="#ff9933" :disabled="task?.Procedure.Status === 3">打印</BigButton> <BigButton class="btn" bg-color="#00cc33" :disabled="task?.Procedure.Status === 3" @click="openReportModal"> <BigButton v-if="task?.ShowCheck" class="btn" bg-color="#00cc33" :disabled="task?.Procedure.Status === 3" @click="openQualityModal" >质检</BigButton > <BigButton class="btn" :bg-color="task?.ShowCheck ? '#0066ff' : '#00cc33'" :disabled="task?.Procedure.Status === 3" @click="openReportModal" > 报工 </BigButton> <el-popconfirm @@ -47,10 +60,21 @@ <TaskControlModal v-model="showTaskControlModal" :task="task" @produce-start="onProduceStart"></TaskControlModal> <ReportProductionModal v-model="showReportModal" :model-title="modelTitle" :amount="plcInfo?.finishNumber ?? 0" @close="showReportModal = false" @submit="onReportProduction" ></ReportProductionModal> <ReportProductionModal1 v-model="showReportModal1" :model-title="modelTitle" :amount="plcInfo?.finishNumber ?? 0" :pass-amount="passAmount" :rework-amount="reworkAmount" :scrapped-amount="scrappedAmount" @close="showReportModal1 = false" @submit="onReportCheck" ></ReportProductionModal1> </template> <script setup lang="ts"> import type { Task, Worker } from '@/api/task' @@ -59,11 +83,14 @@ import { useDateFormat } from '@vueuse/core' import TaskControlModal from '@/views/dashboard/components/TaskControlModal.vue' import { CircleCloseFilled } from '@element-plus/icons-vue' import { apiReportWork, procedureUpdate } from '@/api' import { apiReportWork, procedureUpdate, bulletinReport, bulletinQualityInspection, getQualityInspection } from '@/api' import { ElMessage } from 'element-plus' import ReportProductionModal from '@/views/dashboard/components/ReportProductionModal.vue' import ReportProductionModal1 from '@/views/dashboard/components/ReportProductionModal1.vue' import { usePLCStore } from '@/stores/plc' import { storeToRefs } from 'pinia' import { log } from 'console' import { isDoStatement } from 'typescript' const props = defineProps<{ task?: Task @@ -76,6 +103,10 @@ }>() const showTaskControlModal = ref(false) const modelTitle = ref('') const passAmount = ref(0) const reworkAmount = ref(0) const scrappedAmount = ref(0) /** * 开始生产 @@ -151,6 +182,9 @@ const { plcInfo } = storeToRefs(plcStore) // 报工 const showReportModal = ref(false) // 报工 const showReportModal1 = ref(false) const reprotIds = ref([]) function openReportModal() { // 有人员才可以报工 if (!workers.value || workers.value.length == 0) { @@ -179,6 +213,38 @@ } if (workers.value[0].workerId) { modelTitle.value = '生产报工' if (task?.value?.ShowCheck) { getQualityInspection({ procedureId: task.value?.Procedure.ID, workerId: workers.value[0].workerId }).then((res) => { console.log(res, '999999') passAmount.value = res.data.passAmount reworkAmount.value = res.data.reworkAmount scrappedAmount.value = res.data.scrappedAmount reprotIds.value = res.data.ids showReportModal1.value = true }) } else { showReportModal.value = true } } } // 质检 function openQualityModal() { // 有人员才可以报工 if (!workers.value || workers.value.length == 0) { ElMessage({ message: '没有人员信息不允许质检!', type: 'error', duration: 3000 }) return true } if (workers.value[0].workerId) { modelTitle.value = '提交质检' showReportModal.value = true } } @@ -193,7 +259,9 @@ } // 有人员才可以报工 if (workers.value[0].workerId) { apiReportWork({ let requestUrl = task?.value.ShowCheck ? bulletinQualityInspection : apiReportWork let tipStr = task?.value.ShowCheck ? '质检' : '报工' requestUrl({ workOrderProcedureID: Number(task.value?.Procedure.ID), reportAmount: amount, workerID: workers.value[0].workerId, @@ -202,6 +270,44 @@ .then((res) => { if (res.code === 200) { ElMessage({ message: `${tipStr}成功`, type: 'success', duration: 2000 }) showReportModal.value = false } else { ElMessage({ message: `${tipStr}失败`, type: 'error', duration: 3000 }) } }) .catch((err) => { console.error(err) }) } } /** * 质检后的上报加工数 * @param amount 加工数 */ function onReportCheck(amount: number) { if (!task?.value) { return } // 有人员才可以报工 if (workers.value[0].workerId) { bulletinReport({ workOrderProcedureID: Number(task.value?.Procedure.ID), reportAmount: amount, workerID: workers.value[0].workerId, workerName: workers.value[0].workerName, ids: reprotIds }) .then((res) => { if (res.code === 200) { ElMessage({ message: '报工成功', type: 'success', duration: 2000 vite.config.ts
@@ -18,7 +18,7 @@ proxy: { '/api-s/': { // http://192.168.20.119:8003 http://192.168.20.25:7010 target: 'http://192.168.20.120:9081', target: 'http://192.168.20.119:9081', ws: true, changeOrigin: true },