pages/product/report/index.vue
@@ -1,464 +1,673 @@
<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,
            });
         },
         // 汇报产量
         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>