| | |
| | | <template> |
| | | <!-- 报工 --> |
| | | <div class="page"> |
| | | <u-form |
| | | :model="form" |
| | | ref="uForm" |
| | | :label-width="200" |
| | | :rules="rules" |
| | | :error-type="['toast']" |
| | | > |
| | | <u-form-item label="车间" :border-bottom="false" prop="work"> |
| | | <u-radio-group v-model="form.work" :disabled="subdisabled"> |
| | | <u-radio name="dt">导体</u-radio> |
| | | <u-radio name="tg">铜杆</u-radio> |
| | | </u-radio-group> |
| | | </u-form-item> |
| | | <u-form-item label="报工单号" :border-bottom="false" prop="taskNo"> |
| | | <u-input |
| | | v-model="form.taskNo" |
| | | type="select" |
| | | placeholder="请扫描报工单号" |
| | | @click="open" |
| | | /> |
| | | </u-form-item> |
| | | <u-form-item label="工序" :border-bottom="false" prop="name"> |
| | | <u-input |
| | | v-model="form.name" |
| | | type="select" |
| | | placeholder="请扫描报工单号" |
| | | /> |
| | | </u-form-item> |
| | | <u-form-item label="订单号" :border-bottom="false" prop="moOn"> |
| | | <u-input |
| | | v-model="form.moOn" |
| | | type="select" |
| | | placeholder="点击选择" |
| | | @click="openList" |
| | | /> |
| | | </u-form-item> |
| | | <u-form-item label="零件号" :border-bottom="false" prop="partNo"> |
| | | <u-input v-model="form.partNo" placeholder="" disabled /> |
| | | </u-form-item> |
| | | <u-form-item label="零件描述" :border-bottom="false" prop="partName"> |
| | | <u-input v-model="form.partName" placeholder="" disabled /> |
| | | </u-form-item> |
| | | <u-form-item label="批量大小" :border-bottom="false" prop="qtyRequired"> |
| | | <u-input v-model="form.qtyRequired" placeholder="" disabled /> |
| | | </u-form-item> |
| | | <u-form-item |
| | | label="剩余数量" |
| | | :border-bottom="false" |
| | | prop="Jianqtyfinished" |
| | | > |
| | | <u-input v-model="form.Jianqtyfinished" placeholder="" disabled /> |
| | | </u-form-item> |
| | | <u-form-item label="库位" :border-bottom="false" prop="proposedLocation"> |
| | | <u-input v-model="form.proposedLocation" placeholder="" disabled /> |
| | | </u-form-item> |
| | | <u-form-item label="报工类型" prop="productType"> |
| | | <u-radio-group v-model="form.productType" :disabled="subdisabled"> |
| | | <u-radio name="dep">下机报工</u-radio> |
| | | <u-radio name="ndep">未下机报工</u-radio> |
| | | </u-radio-group> |
| | | </u-form-item> |
| | | <u-form-item label="接收零件" prop="receive"> |
| | | <u-radio-group v-model="form.receive" :disabled="subdisabled"> |
| | | <u-radio name="mo">车间订单</u-radio> |
| | | <u-radio name="part">替代零件</u-radio> |
| | | </u-radio-group> |
| | | </u-form-item> |
| | | <u-form-item label="物料" prop="materialCost"> |
| | | <u-radio-group v-model="form.materialCost" :disabled="true"> |
| | | <u-radio name="倒冲">倒冲</u-radio> |
| | | <u-radio name="投料">投料</u-radio> |
| | | </u-radio-group> |
| | | </u-form-item> |
| | | <u-form-item label="工序"> |
| | | <u-checkbox-group> |
| | | <u-checkbox |
| | | :name="item.name" |
| | | v-for="(item, index) in checkboxList" |
| | | :key="index" |
| | | v-model="item.value" |
| | | @change="changeCheckbox" |
| | | :disabled="subdisabled || item.disabled" |
| | | > |
| | | {{ item.name }} |
| | | </u-checkbox> |
| | | </u-checkbox-group> |
| | | </u-form-item> |
| | | <u-form-item label="产出列表" :border-bottom="false"></u-form-item> |
| | | </u-form> |
| | | <view class="wrap"> |
| | | <scroll-view class="packing-registration-scroll-list" scroll-y="true"> |
| | | <u-cell-group |
| | | class="packing-registration-scroll-list-group" |
| | | :border="false" |
| | | > |
| | | <view |
| | | class="content" |
| | | v-for="(item, index) in InventoryReceiptList" |
| | | :key="index" |
| | | :index="index" |
| | | @click="cancelReport(item)" |
| | | > |
| | | <view class="content-header"> |
| | | <view class="content-header-title">{{ index + 1 }}</view> |
| | | </view> |
| | | <view class="content-body"> |
| | | <view class="row-list"> |
| | | <view class="_label"> |
| | | <view class="_label-name">批号:</view> |
| | | </view> |
| | | <view class="_content"> |
| | | {{ item.outBatchNo }} |
| | | </view> |
| | | </view> |
| | | <view class="row-list"> |
| | | <view class="_label"> |
| | | <view class="_label-name">数量:</view> |
| | | </view> |
| | | <view class="_content"> |
| | | {{ item.netWeight }} |
| | | </view> |
| | | </view> |
| | | <view class="row-list"> |
| | | <view class="_label"> |
| | | <view class="_label-name">库位:</view> |
| | | </view> |
| | | <view class="_content"> |
| | | {{ item.proposedLocation }} |
| | | </view> |
| | | </view> |
| | | </view> |
| | | </view> |
| | | </u-cell-group> |
| | | </scroll-view> |
| | | </view> |
| | | <!-- 填写报工单 --> |
| | | <modalBg ref="modalBg" :confirm="confirm"> |
| | | <u-field |
| | | v-model="form.taskNo" |
| | | label="报工单号" |
| | | placeholder="请输入" |
| | | :border-bottom="false" |
| | | > |
| | | </u-field> |
| | | </modalBg> |
| | | <saveForm |
| | | ref="saveForm" |
| | | :operationTaskList="this.form" |
| | | @update="handleUpdate" |
| | | /> |
| | | <u-modal |
| | | width="720rpx" |
| | | v-model="showModal" |
| | | title="" |
| | | :show-cancel-button="true" |
| | | :show-confirm-button="true" |
| | | @confirm="confirmModle" |
| | | @cancel="cancelModle" |
| | | > |
| | | <view class="popup-content"> |
| | | <view class="packing-registration-param"> |
| | | <view class="packing-registration-param-view"> |
| | | <view class="packing-registration-param-item param-extra"> |
| | | <view class="packing-registration-param-item-left"> |
| | | <text class="item-one">批号</text> |
| | | </view> |
| | | <view class="packing-registration-param-item-right"> |
| | | <text class="item-one">{{ detailedList.outBatchNo }}</text> |
| | | </view> |
| | | </view> |
| | | <view class="packing-registration-param-item param-extra"> |
| | | <view class="packing-registration-param-item-left"> |
| | | <text class="item-one">零件号</text> |
| | | </view> |
| | | <view class="packing-registration-param-item-right"> |
| | | <text class="item-one">{{ detailedList.partNo }}</text> |
| | | </view> |
| | | </view> |
| | | <view class="packing-registration-param-item param-extra"> |
| | | <view class="packing-registration-param-item-left"> |
| | | <text class="item-one">零件描述</text> |
| | | </view> |
| | | <view class="packing-registration-param-item-right"> |
| | | <span class="item-one">{{ detailedList.partName }}</span> |
| | | </view> |
| | | </view> |
| | | <view class="packing-registration-param-item param-extra"> |
| | | <view class="packing-registration-param-item-left"> |
| | | <text class="item-one">取消接收数量</text> |
| | | </view> |
| | | <view class="packing-registration-param-item-right"> |
| | | <span class="item-one">{{ detailedList.netWeight }}</span> |
| | | </view> |
| | | </view> |
| | | </view> |
| | | </view> |
| | | </view> |
| | | </u-modal> |
| | | <scan></scan> |
| | | </div> |
| | | <!-- 报工 --> |
| | | <div class="page"> |
| | | <u-form :model="form" ref="uForm" :label-width="200" :rules="rules" :error-type="['toast']"> |
| | | <u-form-item label="车间" :border-bottom="false" prop="work" style="font-size:small"> |
| | | <u-radio-group v-model="form.work" :disabled="subdisabled"> |
| | | <u-radio name="dt"><span style="font-size:small">导体</span></u-radio> |
| | | <u-radio name="tg"><span style="fongt-size:small">铜杆</span></u-radio> |
| | | </u-radio-group> |
| | | </u-form-item> |
| | | <u-form-item label="报工单号" :border-bottom="false" prop="taskNo" style="font-size:small"> |
| | | <u-input v-model="form.taskNo" type="select" placeholder="请扫描报工单号" @click="open" /> |
| | | </u-form-item> |
| | | <u-form-item label="工序" :border-bottom="false" prop="name" style="font-size:small"> |
| | | <u-input v-model="form.name" type="select" placeholder="请扫描报工单号" /> |
| | | </u-form-item> |
| | | <u-form-item label="订单号" :border-bottom="false" prop="moOn" style="font-size:small"> |
| | | <u-input v-model="form.moOn" type="select" placeholder="点击选择" @click="openList" /> |
| | | </u-form-item> |
| | | <u-form-item label="零件号" :border-bottom="false" prop="partNo" style="font-size:small"> |
| | | <u-input v-model="form.partNo" placeholder="" disabled /> |
| | | </u-form-item> |
| | | <u-form-item label="零件描述" :border-bottom="false" prop="partName" style="font-size:small"> |
| | | <u-input v-model="form.partName" placeholder="" disabled /> |
| | | </u-form-item> |
| | | <!-- <u-form-item label="批量大小" :border-bottom="false" prop="qtyRequired" style="font-size:small"> |
| | | <u-input v-model="form.qtyRequired" placeholder="" disabled /> |
| | | </u-form-item> |
| | | <u-form-item label="剩余数量" :border-bottom="false" prop="Jianqtyfinished" style="font-size:small"> |
| | | <u-input v-model="form.Jianqtyfinished" placeholder="" disabled /> |
| | | </u-form-item> --> |
| | | <u-form-item label="投料产量" :border-bottom="false" prop="FeedInputProductionVolume" style="font-size:small"> |
| | | <u-input v-model="form.FeedInputProductionVolume" type="select" placeholder="请填写投料产量" |
| | | @click="FeedInputProductionVolumeCLick" /> |
| | | </u-form-item> |
| | | <u-form-item label="汇报产量" :border-bottom="false" prop="reportProductionVolume" style="font-size:small"> |
| | | <u-input v-model="form.reportProductionVolume" type="select" placeholder="请填写汇报产量" |
| | | @click="reportProductionVolumeCLick" /> |
| | | </u-form-item> |
| | | <u-form-item label="库位" :border-bottom="false" prop="proposedLocation" style="font-size:small"> |
| | | <u-input v-model="form.proposedLocation" placeholder="" disabled /> |
| | | </u-form-item> |
| | | <!-- <u-form-item label="报工类型" label-width="90px" prop="productType" style="font-size:small"> |
| | | <u-radio-group v-model="form.productType" :disabled="subdisabled"> |
| | | <u-radio name="dep"><span style="font-size:small">下机报工</span></u-radio> |
| | | <u-radio name="ndep"><span style="font-size:small">未下机报工</span></u-radio> |
| | | </u-radio-group> |
| | | </u-form-item> --> |
| | | <!-- <u-form-item label="接收零件" label-width="90px" prop="receive" style="font-size:small"> |
| | | <u-radio-group v-model="form.receive" :disabled="subdisabled"> |
| | | <u-radio name="mo"><span style="font-size:small">车间订单</span></u-radio> |
| | | <u-radio name="part"><span style="font-size:small">替代零件</span></u-radio> |
| | | </u-radio-group> |
| | | </u-form-item> --> |
| | | <u-form-item label="物料" label-width="90px" prop="materialCost" style="font-size:small"> |
| | | <u-radio-group v-model="form.materialCost" :disabled="true"> |
| | | <u-radio name="倒冲"><span style="font-size:small">倒冲</span></u-radio> |
| | | <u-radio name="投料"><span style="font-size:small">投料</span></u-radio> |
| | | </u-radio-group> |
| | | </u-form-item> |
| | | <!-- <u-form-item label="简化物料检查" label-width="90px" prop="simplifyMaterials" style="font-size:small"> |
| | | <u-radio-group v-model="form.simplifyMaterials" :disabled="subdisabled || simplifyDisabled" |
| | | @change="radioChange"> |
| | | <u-radio name="true"><span style="font-size:small">是</span></u-radio> |
| | | <u-radio name="false"><span style="font-size:small">否</span></u-radio> |
| | | </u-radio-group> |
| | | </u-form-item> --> |
| | | <u-form-item label="报工方式" label-width="90px" prop="status" style="font-size:small"> |
| | | <u-radio-group v-model="form.status" :disabled="subdisabled" @change="handleReportTypeChange"> |
| | | <u-radio name="false"><span style="font-size:small">按班组报工</span></u-radio> |
| | | <u-radio name="true"><span style="font-size:small">按人员报工</span></u-radio> |
| | | </u-radio-group> |
| | | </u-form-item> |
| | | <u-form-item label="人员名称" label-width="90px" :border-bottom="false" prop="Persons" style="font-size:small"> |
| | | <u-input v-model="form.Persons" type="select" placeholder="请选择" @click="openselectedPersons" |
| | | :disabled="!canSelectPerson || subdisabled" /> |
| | | </u-form-item> |
| | | <u-form-item label="产出列表" :border-bottom="false" style="font-size:small"></u-form-item> |
| | | </u-form> |
| | | <view class="wrap"> |
| | | <scroll-view class="packing-registration-scroll-list" scroll-y="true"> |
| | | <u-cell-group class="packing-registration-scroll-list-group" :border="false"> |
| | | <view class="content" v-for="(item, index) in InventoryReceiptList" :key="index" :index="index" |
| | | @click="cancelReport(item,index)"> |
| | | <view class="content-header"> |
| | | <view class="content-header-title" style="font-size:small">{{ index + 1 }}</view> |
| | | </view> |
| | | <view class="content-body"> |
| | | <view class="row-list"> |
| | | <view class="_label"> |
| | | <view class="_label-name">批号:</view> |
| | | </view> |
| | | <view class="_content"> |
| | | {{ item.outBatchNo }} |
| | | </view> |
| | | </view> |
| | | <view class="row-list"> |
| | | <view class="_label"> |
| | | <view class="_label-name">数量:</view> |
| | | </view> |
| | | <view class="_content"> |
| | | {{ item.netWeight }} |
| | | </view> |
| | | </view> |
| | | <view class="row-list"> |
| | | <view class="_label"> |
| | | <view class="_label-name">库位:</view> |
| | | </view> |
| | | <view class="_content"> |
| | | {{ item.proposedLocation }} |
| | | </view> |
| | | </view> |
| | | </view> |
| | | </view> |
| | | </u-cell-group> |
| | | </scroll-view> |
| | | </view> |
| | | <!-- 填写报工单 --> |
| | | <modalBg ref="modalBg" :confirm="confirm"> |
| | | <u-field v-model="form.taskNo" label="报工单号" placeholder="请输入" :border-bottom="false" |
| | | style="font-size:small"> |
| | | </u-field> |
| | | </modalBg> |
| | | <saveForm ref="saveForm" :operationTaskList="this.form" :dutyId="dutyId" @update="handleUpdate" /> |
| | | <u-modal width="720rpx" v-model="showModal" title="" :show-cancel-button="true" :show-confirm-button="true" |
| | | @confirm="confirmModle" @cancel="cancelModle"> |
| | | <view class="popup-content"> |
| | | <view class="packing-registration-param"> |
| | | <view class="packing-registration-param-view"> |
| | | <view class="packing-registration-param-item param-extra"> |
| | | <view class="packing-registration-param-item-left"> |
| | | <text class="item-one">批号</text> |
| | | </view> |
| | | <view class="packing-registration-param-item-right"> |
| | | <text class="item-one">{{ detailedList.outBatchNo }}</text> |
| | | </view> |
| | | </view> |
| | | <view class="packing-registration-param-item param-extra"> |
| | | <view class="packing-registration-param-item-left"> |
| | | <text class="item-one">零件号</text> |
| | | </view> |
| | | <view class="packing-registration-param-item-right"> |
| | | <text class="item-one">{{ detailedList.partNo }}</text> |
| | | </view> |
| | | </view> |
| | | <view class="packing-registration-param-item param-extra"> |
| | | <view class="packing-registration-param-item-left"> |
| | | <text class="item-one">零件描述</text> |
| | | </view> |
| | | <view class="packing-registration-param-item-right"> |
| | | <span class="item-one">{{ detailedList.partName }}</span> |
| | | </view> |
| | | </view> |
| | | <view class="packing-registration-param-item param-extra"> |
| | | <view class="packing-registration-param-item-left"> |
| | | <text class="item-one">取消接收数量</text> |
| | | </view> |
| | | <view class="packing-registration-param-item-right"> |
| | | <span class="item-one">{{ detailedList.netWeight }}</span> |
| | | </view> |
| | | </view> |
| | | </view> |
| | | </view> |
| | | </view> |
| | | </u-modal> |
| | | <u-modal v-model="personShowModal" title="" :show-cancel-button="true" :show-confirm-button="true" |
| | | @confirm="confirmSelection" @cancel="cancelSelection"> |
| | | <view class="popup-content"> |
| | | <scroll-view scroll-y="true" |
| | | style="height: 100%; transform: translateZ(0); -webkit-font-smoothing: antialiased;-moz-osx-font-smoothing: grayscale;"> |
| | | <view class="popup-header"> |
| | | <checkbox-group @change="checkboxChange"> |
| | | <label class="checkbox-item" v-for="(item, index) in selectedPersons" :key="index"> |
| | | <checkbox :value="item.staffId" :checked="item.checked" /> |
| | | <text class="label">{{ item.staffName }}</text> |
| | | </label> |
| | | </checkbox-group> |
| | | </view> |
| | | </scroll-view> |
| | | </view> |
| | | </u-modal> |
| | | <scan></scan> |
| | | </div> |
| | | </template> |
| | | |
| | | <script> |
| | | import modalBg from "@/components/modal/modal-bg.vue"; |
| | | import saveForm from "./components/saveForm.vue"; |
| | | import scan from "@/components/scan/scan.vue"; |
| | | export default { |
| | | components: { |
| | | modalBg, |
| | | saveForm, |
| | | scan, |
| | | }, |
| | | data() { |
| | | return { |
| | | checkboxList: [ |
| | | { |
| | | name: "工序的自动报告", |
| | | value: false, |
| | | disabled: false, |
| | | }, |
| | | { |
| | | name: "简化物料检查", |
| | | value: false, |
| | | disabled: false, |
| | | }, |
| | | ], |
| | | InventoryReceiptList: [], |
| | | form: { |
| | | workstationId: "", |
| | | work: "", |
| | | taskNo: "", |
| | | name: "", |
| | | moOn: "", |
| | | partNo: "", |
| | | partName: "", |
| | | qtyRequired: "", |
| | | Jianqtyfinished: "", |
| | | proposedLocation: "", |
| | | productType: "dep", |
| | | receive: "mo", |
| | | materialCost: "", |
| | | autoReport: false, |
| | | simplifyMaterials: false, |
| | | }, |
| | | rules: { |
| | | work: [ |
| | | { |
| | | required: true, |
| | | message: "请选择车间", |
| | | trigger: ["change"], |
| | | }, |
| | | ], |
| | | taskNo: [ |
| | | { |
| | | required: true, |
| | | message: "请选择报工单号", |
| | | trigger: ["change", "blur"], |
| | | }, |
| | | ], |
| | | name: [ |
| | | { |
| | | required: true, |
| | | message: "请选择工序", |
| | | trigger: ["change", "blur"], |
| | | }, |
| | | ], |
| | | moOn: [ |
| | | { |
| | | required: true, |
| | | message: "请选择订单号", |
| | | trigger: ["change", "blur"], |
| | | }, |
| | | ], |
| | | productType: [ |
| | | { |
| | | required: true, |
| | | message: "请选择报工类型", |
| | | trigger: ["change"], |
| | | }, |
| | | ], |
| | | receive: [ |
| | | { |
| | | required: true, |
| | | message: "请选择接收零件类型", |
| | | trigger: ["change"], |
| | | }, |
| | | ], |
| | | }, |
| | | showSave: false, |
| | | operationTaskId: "", |
| | | subdisabled: false, |
| | | codeInfoId: "", |
| | | detailedList: {}, |
| | | showModal: false, |
| | | }; |
| | | }, |
| | | // 点击提交按钮的事件处理函数 |
| | | onNavigationBarButtonTap() { |
| | | this.$refs.uForm.validate((valid) => { |
| | | if (valid) { |
| | | uni.showLoading({ |
| | | mask: true, |
| | | title: "加载中", |
| | | }); |
| | | // 处理提交逻辑 |
| | | this.$u.api.workReporting |
| | | .operationTask({ |
| | | id: this.form.id, |
| | | }) |
| | | .then((res) => { |
| | | res.data.name = this.form.name; |
| | | this.$refs.saveForm.open(res); |
| | | uni.hideLoading(); |
| | | }); |
| | | } else { |
| | | // 可以获取具体的错误信息 |
| | | const errors = this.$refs.uForm.getError(); |
| | | } |
| | | }); |
| | | }, |
| | | onReady() { |
| | | this.$refs.uForm.setRules(this.rules); |
| | | }, |
| | | onShow() { |
| | | let that = this; |
| | | uni.$off("scan"); // 每次进来先 移除全局自定义事件监听器 |
| | | uni.$on("scan", function (data) { |
| | | //扫码成功后的回调,你可以写自己的逻辑代码在这里 |
| | | if (data.code) { |
| | | let codeInfo = JSON.parse(data.code); |
| | | that.codeInfoId = codeInfo.id; |
| | | if (codeInfo.moOn) { |
| | | // 扫描报工单二维码 |
| | | that.saveForm(codeInfo); |
| | | that.getHandelList(); |
| | | } |
| | | } |
| | | }); |
| | | }, |
| | | watch: { |
| | | "form.taskNo": function (newVal, oldVal) { |
| | | this.subdisabled = false; |
| | | this.checkboxList[1].value = false; |
| | | this.checkboxList[0].value = false; |
| | | }, |
| | | }, |
| | | methods: { |
| | | // 点击确认后获取取消报工记录 |
| | | confirmModle() { |
| | | console.log("点击确认后获取取消报工记录"); |
| | | // 处理确认逻辑 |
| | | this.$u.api.cancelReporting |
| | | .cancelDTAOfWorkApplication({ |
| | | outBatchNo: this.detailedList.outBatchNo, |
| | | }) |
| | | .then((res) => { |
| | | console.log("res", res); |
| | | this.showModal = false; |
| | | this.getHandelList(); |
| | | this.$u.toast("取消报工成功"); |
| | | }); |
| | | }, |
| | | cancelModle() { |
| | | this.showModal = false; // 关闭弹窗 |
| | | }, |
| | | // 取消报工 |
| | | cancelReport(item) { |
| | | let that = this; |
| | | uni.showModal({ |
| | | title: "提示", |
| | | content: "是否确认取消批次" + item.outBatchNo + "的报工", |
| | | success: function (res) { |
| | | if (res.confirm) { |
| | | that.detailedList = item; |
| | | that.showModal = true; |
| | | } else if (res.cancel) { |
| | | return; |
| | | } |
| | | }, |
| | | }); |
| | | }, |
| | | getHandelList() { |
| | | this.$u.api.workReporting |
| | | .getProductMainV1({ |
| | | current: 1, |
| | | size: -1, |
| | | id: this.codeInfoId, |
| | | }) |
| | | .then((res) => { |
| | | this.InventoryReceiptList = res.data.productOutputList; |
| | | }); |
| | | }, |
| | | // 多选处理 |
| | | changeCheckbox(val) { |
| | | if (val.name === "工序的自动报告") { |
| | | this.form.autoReport = val.value; |
| | | } |
| | | if (val.name === "简化物料检查") { |
| | | this.form.simplifyMaterials = val.value; |
| | | } |
| | | }, |
| | | handleUpdate() { |
| | | this.subdisabled = true; |
| | | this.getHandelList(); |
| | | }, |
| | | // 打开弹框--后面还需要监听扫码枪扫码结果,赋值给报工单号字段,然后打开弹框选择订单号等操作 |
| | | open() { |
| | | this.$refs.modalBg.open(); |
| | | }, |
| | | // 弹框保存 |
| | | confirm() {}, |
| | | // 选择订单号 |
| | | openList() { |
| | | if (this.form.taskNo === "") { |
| | | uni.showToast({ |
| | | title: "请先扫描或输入报工单号", |
| | | icon: "none", |
| | | }); |
| | | return; |
| | | } |
| | | uni.navigateTo({ |
| | | url: "/pages/product/report/orderList", |
| | | }); |
| | | }, |
| | | // 存订单号 |
| | | setNo(val) { |
| | | this.form.moOn = val.moNo; |
| | | }, |
| | | // 回显扫码的信息-报工单 |
| | | saveForm(val) { |
| | | this.form = { |
| | | id: val.id, |
| | | workstationId: val.workstationId, |
| | | work: val.work, |
| | | taskNo: val.taskNo, |
| | | name: val.name, |
| | | moOn: val.moOn, |
| | | partNo: val.partNo, |
| | | partName: val.partName, |
| | | qtyRequired: val.qtyRequired, |
| | | Jianqtyfinished: val.qtyRequired - val.qtyFinished, |
| | | proposedLocation: val.proposedLocation, |
| | | productType: "dep", |
| | | receive: "mo", // 复选框组的值 |
| | | materialCost: val.materialCost, |
| | | autoReport: false, |
| | | simplifyMaterials: false, |
| | | }; |
| | | this.checkboxList[1].value = false; |
| | | this.checkboxList[0].value = false; |
| | | if (this.form.materialCost == "倒冲") { |
| | | this.checkboxList[1].disabled = true; |
| | | } |
| | | }, |
| | | }, |
| | | }; |
| | | import modalBg from "@/components/modal/modal-bg.vue"; |
| | | import saveForm from "./components/saveForm.vue"; |
| | | import scan from "@/components/scan/scan.vue"; |
| | | export default { |
| | | components: { |
| | | modalBg, |
| | | saveForm, |
| | | scan, |
| | | }, |
| | | data() { |
| | | return { |
| | | simplifyDisabled: false, |
| | | // checkboxList: [ |
| | | // { |
| | | // name: "工序的自动报告", |
| | | // value: false, |
| | | // disabled: false, |
| | | // }, |
| | | // { |
| | | // name: "简化物料检查", |
| | | // value: false, |
| | | // disabled: false, |
| | | // }, |
| | | // ], |
| | | InventoryReceiptList: [], |
| | | selectedPersons: [], |
| | | form: { |
| | | workstationId: "", |
| | | work: "", |
| | | taskNo: "", |
| | | name: "", |
| | | moOn: "", |
| | | partNo: "", |
| | | partName: "", |
| | | // qtyRequired: "", |
| | | // Jianqtyfinished: "", |
| | | FeedInputProductionVolume: null, //投料产量 |
| | | reportProductionVolume: null, //汇报产量 |
| | | proposedLocation: "", |
| | | productType: "dep", |
| | | receive: "mo", |
| | | materialCost: "", |
| | | // autoReport: false, |
| | | simplifyMaterials: 'false', |
| | | status: 'false', |
| | | Persons: '', |
| | | productStaffIds: [], |
| | | productStaffs: [] |
| | | |
| | | }, |
| | | reportProductionVolumelist: {}, |
| | | FeedInputProductionVolumeList: [], //投料产量 |
| | | personList: [], |
| | | canSelectPerson: false, |
| | | rules: { |
| | | work: [{ |
| | | required: true, |
| | | message: "请选择车间", |
| | | trigger: ["change"], |
| | | }, ], |
| | | taskNo: [{ |
| | | required: true, |
| | | message: "请选择报工单号", |
| | | trigger: ["change", "blur"], |
| | | }, ], |
| | | name: [{ |
| | | required: true, |
| | | message: "请选择工序", |
| | | trigger: ["change", "blur"], |
| | | }, ], |
| | | moOn: [{ |
| | | required: true, |
| | | message: "请选择订单号", |
| | | trigger: ["change", "blur"], |
| | | }, ], |
| | | productType: [{ |
| | | required: true, |
| | | message: "请选择报工类型", |
| | | trigger: ["change"], |
| | | }, ], |
| | | receive: [{ |
| | | required: true, |
| | | message: "请选择接收零件类型", |
| | | trigger: ["change"], |
| | | }, ], |
| | | status: [{ |
| | | required: true, |
| | | message: "请选择报工方式", |
| | | trigger: ["change"], |
| | | }, ], |
| | | Persons: [{ |
| | | required: true, |
| | | message: "请选择人员", |
| | | trigger: ["change"], |
| | | }, ], |
| | | reportProductionVolume: [{ |
| | | required: true, |
| | | message: "请输入汇报产量", |
| | | trigger: ["change"], |
| | | }, ], |
| | | // FeedInputProductionVolume: [{ |
| | | // required: true, |
| | | // message: "请输入投料产量", |
| | | // trigger: ["change"], |
| | | // }, ], |
| | | |
| | | }, |
| | | showSave: false, |
| | | operationTaskId: "", |
| | | subdisabled: false, |
| | | codeInfoId: "", |
| | | detailedList: {}, |
| | | showModal: false, |
| | | personShowModal: false, |
| | | checkboxList: [], |
| | | index: 0, |
| | | }; |
| | | }, |
| | | // 点击提交按钮的事件处理函数 |
| | | onNavigationBarButtonTap() { |
| | | this.$refs.uForm.validate((valid) => { |
| | | if (valid) { |
| | | uni.showLoading({ |
| | | mask: true, |
| | | title: "加载中", |
| | | }); |
| | | this.form.operationTaskId = this.form.id; |
| | | this.reportProductionVolumelist.operationTaskId = this.form.id; |
| | | this.reportProductionVolumelist.status = this.form.status; |
| | | this.reportProductionVolumelist.Persons = this.form.Persons; |
| | | this.reportProductionVolumelist.productStaffIds = this.form.productStaffIds; |
| | | this.reportProductionVolumelist.productStaffs = this.form.productStaffs; |
| | | this.reportProductionVolumelist.productInputList = Object.keys(this.FeedInputProductionVolumeList).length === 0 ? null : this.FeedInputProductionVolumeList; |
| | | this.reportProductionVolumelist.dutyRecordId = this.dutyId; |
| | | this.form.productOutputList = []; // 创建一个空数组 |
| | | this.form.productOutputList.push(this.reportProductionVolumelist); // 向数组中添加元素 |
| | | console.log("this.form", this.form); |
| | | this.$u.api.workReporting |
| | | .submitPDA(this.form) |
| | | .then((res) => { |
| | | this.subdisabled = true; |
| | | this.$u.toast("提交成功"); |
| | | this.InventoryReceiptList.unshift(this.form.productOutputList[0]); |
| | | this.reportProductionVolumelist = {}, |
| | | this.FeedInputProductionVolumeList = [], //投料产量 |
| | | this.form.FeedInputProductionVolume = null, //投料产量 |
| | | this.form.reportProductionVolume = null, //汇报产量 |
| | | console.log("this.InventoryReceiptList", this.InventoryReceiptList); |
| | | }) |
| | | .finally(() => { |
| | | }); |
| | | } else { |
| | | // 可以获取具体的错误信息 |
| | | const errors = this.$refs.uForm.getError(); |
| | | } |
| | | }); |
| | | }, |
| | | onReady() { |
| | | this.$refs.uForm.setRules(this.rules); |
| | | }, |
| | | onShow() { |
| | | let that = this; |
| | | uni.$off("scan"); // 每次进来先 移除全局自定义事件监听器 |
| | | uni.$on("scan", function(data) { |
| | | //扫码成功后的回调,你可以写自己的逻辑代码在这里 |
| | | if (data.code) { |
| | | let codeInfo = JSON.parse(data.code); |
| | | if (codeInfo.moOn) { |
| | | that.codeInfoId = codeInfo.id; |
| | | // 扫描报工单二维码 |
| | | that.saveForm(codeInfo); |
| | | // that.getHandelList(); |
| | | } |
| | | if (codeInfo.ES) { |
| | | // 扫描报工单二维码 |
| | | that.CopperReportingWork(codeInfo); |
| | | } |
| | | // if (codeInfo.BN) { |
| | | // // 扫描报工单二维码 |
| | | // that.$refs.saveForm.saveForm(codeInfo); |
| | | // } |
| | | } |
| | | }); |
| | | }, |
| | | watch: { |
| | | "form.taskNo": function(newVal, oldVal) { |
| | | this.subdisabled = false; |
| | | }, |
| | | 'form.status'(newVal) { |
| | | this.selectedPersons = this.selectedPersons.map(item => ({ |
| | | ...item, |
| | | checked: newVal === 'false' |
| | | })); |
| | | } |
| | | }, |
| | | methods: { |
| | | // 投料产量 |
| | | FeedInputProductionVolumeCLick() { |
| | | if (this.form.taskNo === "") { |
| | | uni.showToast({ |
| | | title: "请先扫码", |
| | | icon: "none", |
| | | }); |
| | | return; |
| | | } |
| | | if (this.simplifyDisabled) { |
| | | uni.showToast({ |
| | | title: "倒冲无需投料", |
| | | icon: "none", |
| | | }); |
| | | return; |
| | | } |
| | | uni.navigateTo({ |
| | | url: "/pages/product/report/seachPersonnelNo?moOn=" + this.form.moOn + "&workstationId=" + this.form.workstationId, |
| | | |
| | | |
| | | }); |
| | | }, |
| | | // 汇报产量 |
| | | reportProductionVolumeCLick() { |
| | | if (this.form.taskNo === "") { |
| | | uni.showToast({ |
| | | title: "请先扫码", |
| | | icon: "none", |
| | | }); |
| | | return; |
| | | } |
| | | // 处理提交逻辑 |
| | | this.$u.api.workReporting |
| | | .operationTask({ |
| | | id: this.form.id, |
| | | }) |
| | | .then((res) => { |
| | | res.data.name = this.form.name; |
| | | this.$refs.saveForm.open(res); |
| | | uni.hideLoading(); |
| | | }); |
| | | }, |
| | | // 处理报工方式变更 |
| | | handleReportTypeChange() { |
| | | // 切换报工方式时清空人员名称 |
| | | this.form.Persons = ''; |
| | | this.form.productStaffs = []; |
| | | this.form.productStaffIds = []; |
| | | }, |
| | | // 人员名称 |
| | | openselectedPersons() { |
| | | this.personShowModal = true; |
| | | }, |
| | | // 复选框变化事件 |
| | | checkboxChange(e) { |
| | | console.log('e', e) |
| | | const values = e.target.value || []; |
| | | if (this.form.status === 'true') { |
| | | // 单选模式,只允许选择一个人 |
| | | const previouslySelected = this.selectedPersons.find(item => item.checked); |
| | | const newlySelected = values.length > 0 ? values[values.length - 1] : null; |
| | | if (previouslySelected && newlySelected && previouslySelected.staffId !== newlySelected) { |
| | | // 已有选中项且选择了新的项,提示只能选择一个人 |
| | | this.$u.toast('按人员报工时只能选择一位人员'); |
| | | // 保持原选择 |
| | | this.selectedPersons = this.selectedPersons.map(item => ({ |
| | | ...item, |
| | | checked: item.staffId === previouslySelected.staffId |
| | | })); |
| | | |
| | | } else { |
| | | // 首次选择或取消选择 |
| | | this.selectedPersons = this.selectedPersons.map(item => ({ |
| | | ...item, |
| | | checked: newlySelected ? item.staffId === newlySelected : false |
| | | })); |
| | | |
| | | } |
| | | } else { |
| | | // 多选模式 |
| | | this.selectedPersons = this.selectedPersons.map(item => ({ |
| | | ...item, |
| | | checked: values.includes(item.staffId) |
| | | })); |
| | | } |
| | | }, |
| | | // 确认选择 |
| | | confirmSelection() { |
| | | const selected = this.selectedPersons.filter(item => item.checked); |
| | | // 根据报工方式设置人员名称 |
| | | if (this.form.status === 'true' && selected.length > 0) { |
| | | this.form.Persons = selected[0].staffName; |
| | | } else { |
| | | this.form.Persons = selected.map(item => item.staffName).join(','); |
| | | } |
| | | this.form.productStaffs = selected.map(item => item.staffNo); |
| | | this.form.productStaffIds = selected.map(item => item.staffId); |
| | | }, |
| | | cancelSelection() {}, |
| | | // 铜杆报工 |
| | | CopperReportingWork(val) { |
| | | this.$refs.uForm.validate((valid) => { |
| | | if (valid) { |
| | | const copperList = {}; |
| | | copperList.outBatchNo = val.BN |
| | | copperList.partNo = val.PN |
| | | copperList.weighingClerk = val.WC |
| | | copperList.executiveStandard = val.ES |
| | | copperList.netWeight = val.NW |
| | | copperList.specificationType = val.ST |
| | | copperList.grossWeight = val.TR |
| | | copperList.operationTaskId = this.form.id |
| | | copperList.status = this.form.status; |
| | | copperList.Persons = this.form.Persons; |
| | | copperList.productStaffIds = this.form.productStaffIds; |
| | | copperList.productStaffs = this.form.productStaffs; |
| | | this.form.productOutputList = []; |
| | | this.form.operationTaskId = this.form.id; |
| | | this.form.dutyRecordId = this.dutyId; |
| | | this.form.productOutputList.push(copperList); |
| | | console.log('this.form', this.form) |
| | | this.$u.api.workReporting.submitPDA(this.form).then((res) => { |
| | | this.subdisabled = true; |
| | | this.InventoryReceiptList.unshift(this.form); |
| | | // this.getHandelList(); |
| | | this.$u.toast("报工成功"); |
| | | }); |
| | | } else { |
| | | // 可以获取具体的错误信息 |
| | | const errors = this.$refs.uForm.getError(); |
| | | } |
| | | }); |
| | | }, |
| | | // 点击确认后获取取消报工记录 |
| | | radioChange() { |
| | | // 处理单选框变化事件 |
| | | }, |
| | | // 获取人员列表 |
| | | getPersonList(dutyId) { |
| | | console.log('111111', dutyId) |
| | | try { |
| | | this.$u.api.workReporting.getPersonByDutyRecordId({ |
| | | id: dutyId |
| | | }).then((res) => { |
| | | |
| | | this.selectedPersons = res.data.map(item => ({ |
| | | ...item, |
| | | checked: this.form.status === 'false' |
| | | })); |
| | | }) |
| | | .catch(err => { |
| | | console.log(err) |
| | | }) |
| | | } catch (err) { |
| | | console.log(err) |
| | | |
| | | } |
| | | |
| | | }, |
| | | |
| | | confirmModle() { |
| | | console.log("点击确认后获取取消报工记录",this.detailedList); |
| | | // 处理确认逻辑 |
| | | this.$u.api.cancelReporting |
| | | .cancelDTAOfWorkApplication({ |
| | | outBatchNo: this.detailedList.outBatchNo, |
| | | outputId: this.detailedList.id |
| | | }) |
| | | .then((res) => { |
| | | console.log("res", res); |
| | | this.InventoryReceiptList.splice(this.index, 1) |
| | | this.showModal = false; |
| | | // this.getHandelList(); |
| | | this.$u.toast("取消报工成功"); |
| | | }); |
| | | }, |
| | | cancelModle() { |
| | | this.showModal = false; // 关闭弹窗 |
| | | }, |
| | | // 取消报工 |
| | | cancelReport(item, index) { |
| | | let that = this; |
| | | that.index = index; |
| | | uni.showModal({ |
| | | title: "提示", |
| | | content: "是否确认取消批次" + item.outBatchNo + "的报工", |
| | | success: function(res) { |
| | | if (res.confirm) { |
| | | that.detailedList = item; |
| | | that.showModal = true; |
| | | } else if (res.cancel) { |
| | | return; |
| | | } |
| | | }, |
| | | }); |
| | | }, |
| | | // getHandelList() { |
| | | // this.$u.api.workReporting |
| | | // .getProductMainV1({ |
| | | // current: 1, |
| | | // size: -1, |
| | | // id: this.codeInfoId, |
| | | // }) |
| | | // .then((res) => { |
| | | // this.InventoryReceiptList = res.data.productOutputList; |
| | | // }); |
| | | // }, |
| | | // 多选处理 |
| | | // changeCheckbox(val) { |
| | | // if (val.name === "工序的自动报告") { |
| | | // this.form.autoReport = val.value; |
| | | // } |
| | | // if (val.name === "简化物料检查") { |
| | | // this.form.simplifyMaterials = val.value; |
| | | // } |
| | | // }, |
| | | handleUpdate(val) { |
| | | this.reportProductionVolumelist = val |
| | | this.form.reportProductionVolume = val.outBatchNo; |
| | | // this.subdisabled = true; |
| | | // this.getHandelList(); |
| | | // this.InventoryReceiptList.unshift(val); |
| | | }, |
| | | // 打开弹框--后面还需要监听扫码枪扫码结果,赋值给报工单号字段,然后打开弹框选择订单号等操作 |
| | | open() { |
| | | this.$refs.modalBg.open(); |
| | | }, |
| | | // 弹框保存 |
| | | confirm() {}, |
| | | // 选择订单号 |
| | | openList() { |
| | | if (this.form.taskNo === "") { |
| | | uni.showToast({ |
| | | title: "请先扫描或输入报工单号", |
| | | icon: "none", |
| | | }); |
| | | return; |
| | | } |
| | | uni.navigateTo({ |
| | | url: "/pages/product/report/orderList", |
| | | }); |
| | | }, |
| | | // 存订单号 |
| | | setNo(val) { |
| | | this.form.moOn = val.moNo; |
| | | }, |
| | | setFeedInputProductionVolume(val) { |
| | | console.log('val', val) |
| | | this.FeedInputProductionVolumeList = val; |
| | | const values = this.FeedInputProductionVolumeList.map((item) => item.ifsBatchNo) |
| | | console.log('values', values) |
| | | |
| | | this.form.FeedInputProductionVolume = values.join(';') |
| | | }, |
| | | // 回显扫码的信息-报工单 |
| | | saveForm(val) { |
| | | this.form = { |
| | | id: val.id, |
| | | workstationId: val.workstationId, |
| | | work: val.work, |
| | | taskNo: val.taskNo, |
| | | name: val.name, |
| | | moOn: val.moOn, |
| | | partNo: val.partNo, |
| | | partName: val.partName, |
| | | // qtyRequired: val.qtyRequired, |
| | | // Jianqtyfinished: val.qtyRequired - val.qtyFinished, |
| | | proposedLocation: val.proposedLocation, |
| | | productType: "dep", |
| | | receive: "mo", |
| | | materialCost: val.materialCost, |
| | | // autoReport: false, |
| | | simplifyMaterials: 'false', |
| | | status: 'false', |
| | | Persons: '', |
| | | }; |
| | | if (this.form.materialCost == "倒冲") { |
| | | this.simplifyDisabled = true; |
| | | } |
| | | // 如果有dutyNo,获取人员列表 |
| | | if (val.dutyId) { |
| | | this.dutyId = val.dutyId; |
| | | this.getPersonList(val.dutyId); |
| | | } |
| | | }, |
| | | }, |
| | | }; |
| | | </script> |
| | | |
| | | <style lang="scss"> |
| | | @import "index.scss"; |
| | | @import "index.scss"; |
| | | </style> |