yyb
2025-10-16 c7d2ef6c5306da7e8af002cbfc61fcadbf89c9c2
铜杆报工时对汇报产量字段不做校验,改变铜杆提交逻辑
已修改1个文件
1494 ■■■■■ 文件已修改
pages/product/report/index.vue 1494 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/product/report/index.vue
@@ -1,674 +1,888 @@
<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" 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">
  <!-- 报工 -->
  <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-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-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-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>
      <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 {
                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: []
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.WC) {
          // 扫描报工单二维码
          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;
      }
      if (this.form.work === "tg") {
        uni.showToast({
          title: "铜杆报工无需填写汇报产量,请扫码",
          icon: "none",
          duration: 2000,
        });
        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) {
      if (this.form.work === "dt") {
        uni.showToast({
          title: "铜杆二维码报工车间需选择铜杆",
          icon: "none",
        });
        return;
      }
      // 保存原始的reportProductionVolume验证规则
      const originalReportProductionVolumeRule =
        this.rules.reportProductionVolume;
                },
                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"],
                    // }, ],
      // 临时移除reportProductionVolume的验证规则
      delete this.rules.reportProductionVolume;
                },
                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,
      // 进行表单验证
      this.$refs.uForm.validate((valid) => {
        // 无论验证成功与否,都恢复原始规则
        this.rules.reportProductionVolume = originalReportProductionVolumeRule;
        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);
      }
    },
                });
            },
            // 汇报产量
            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
                        }));
    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);
                    } 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);
                }
            },
        },
    };
      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>