yyb
21 小时以前 3a57c9d62fb7833dcff3742dea15dbae5e5c9046
pages/product/report/index.vue
@@ -80,20 +80,16 @@
         <u-radio name="false">否</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="报工方式" prop="status">
        <u-radio-group v-model="form.status" :disabled="subdisabled" @change="handleReportTypeChange">
          <u-radio name="false">按班组报工</u-radio>
          <u-radio name="true">按人员报工</u-radio>
        </u-radio-group>
      </u-form-item>
      <u-form-item label="人员名称" :border-bottom="false" prop="Persons">
            <u-input v-model="form.Persons" type="select" placeholder="请选择"
               @click="openselectedPersons" :disabled="!canSelectPerson || subdisabled"/>
         </u-form-item>
      <u-form-item label="产出列表" :border-bottom="false"></u-form-item>
    </u-form>
    <view class="wrap">
@@ -205,6 +201,21 @@
        </view>
      </view>
    </u-modal>
    <u-modal v-model="personShowModal" title="" :show-cancel-button="true" :show-confirm-button="true"
         @confirm="confirmSelection" @cancel="cancelSelection">
      <scroll-view scroll-y="true" style="height: 100%">
         <view class="popup-content">
            <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>
         </view>
      </scroll-view>
      </u-modal>
    <scan></scan>
  </div>
</template>
@@ -235,6 +246,7 @@
      //   },
      // ],
      InventoryReceiptList: [],
        selectedPersons: [],
      form: {
        workstationId: "",
        work: "",
@@ -251,7 +263,13 @@
        materialCost: "",
        // autoReport: false,
        simplifyMaterials: 'false',
        status: 'false',
        Persons: '',
        productStaffIds: [],
        productStaffs:[]
      },
      personList: [],
      canSelectPerson: false,
      rules: {
        work: [
          {
@@ -295,6 +313,20 @@
            trigger: ["change"],
          },
        ],
        status: [
          {
            required: true,
            message: "请选择报工方式",
            trigger: ["change"],
          },
        ],
        Persons: [
          {
            required: true,
            message: "请选择人员",
            trigger: ["change"],
          },
        ],
      },
      showSave: false,
      operationTaskId: "",
@@ -302,6 +334,8 @@
      codeInfoId: "",
      detailedList: {},
      showModal: false,
      personShowModal: false,
         checkboxList: [],
    };
  },
  // 点击提交按钮的事件处理函数
@@ -354,11 +388,72 @@
  watch: {
    "form.taskNo": function (newVal, oldVal) {
      this.subdisabled = false;
      this.checkboxList[1].value = false;
      this.checkboxList[0].value = false;
    },
    'form.status'(newVal) {
      this.selectedPersons = this.selectedPersons.map(item => ({
        ...item,
        checked: newVal === 'false'
      }));
    }
  },
  methods: {
    // 处理报工方式变更
    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) {
      const copperList = {};
@@ -370,6 +465,10 @@
      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.productOutputList.push(copperList);
@@ -381,6 +480,29 @@
      });
    },
    // 点击确认后获取取消报工记录
    radioChange() {
      // 处理单选框变化事件
    },
    // 获取人员列表
    getPersonList(dutyId) {
      console.log('111111')
      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("点击确认后获取取消报工记录");
      // 处理确认逻辑
@@ -480,12 +602,16 @@
        materialCost: val.materialCost,
        // autoReport: false,
        simplifyMaterials: 'false',
        status: 'false',
        Persons:'',
      };
      this.checkboxList[1].value = false;
      this.checkboxList[0].value = false;
      if (this.form.materialCost == "倒冲") {
        this.simplifyDisabled = true;
      }
      // 如果有dutyNo,获取人员列表
      if (val.dutyId) {
        this.getPersonList(val.dutyId);
      }
    },
  },
};