guoyujia il y a 1 an
Parent
commit
99c9e79b15
1 fichiers modifiés avec 0 ajouts et 695 suppressions
  1. 0 695
      src/views/business/outsourcedOrderDetails/form.vue

+ 0 - 695
src/views/business/outsourcedOrderDetails/form.vue

@@ -1,695 +0,0 @@
-<template>
-  <!-- 添加或修改项目信息对话框 -->
-  <el-drawer
-    v-model="visible"
-    size="80%"
-    direction="rtl"
-    :close-on-press-escape="false"
-  >
-    <div class="page-container form-container">
-      <div class="form-btns-container">
-        <span class="title-label"
-          ><el-icon>
-            <Document />
-          </el-icon>
-          报工详情</span
-        >
-        <el-button
-          v-if="editStatus"
-          type="primary"
-          icon="Check"
-          style="margin-right: 10px"
-          :disabled="form.status > 3 || !currentDept"
-          @click="handleSave"
-          >保 存
-        </el-button>
-        <el-button v-if="editStatus" icon="Close" @click="handleCancel"
-          >取 消
-        </el-button>
-        <el-button v-else type="primary" icon="Check" @click="handleCancel"
-          >确定
-        </el-button>
-      </div>
-      <!-- 主表 -->
-      <el-form
-        ref="dayworkItemRef"
-        class="master-container"
-        :model="form"
-        :rules="rules"
-        :show-message="true"
-      >
-        <el-row :gutter="20">
-          <el-col :span="7">
-            <el-form-item label="开始时间:" prop="startTime">
-              <el-date-picker
-                v-model="form.startTime"
-                :disabled="!editStatus || !currentDept"
-                type="datetime"
-                value-format="YYYY-MM-DD HH:mm:ss "
-                :clearable="false"
-                :editable="false"
-                placeholder="请选择开始时间"
-                @change="handleTotalTime"
-              />
-            </el-form-item>
-          </el-col>
-          <el-col :span="9">
-            <el-form-item
-              label="工序名称:"
-              prop="processId"
-              label-width="90px"
-            >
-              <el-select-v2
-                v-model="form.processId"
-                clearable
-                :disabled="true"
-                :options="processList"
-                placeholder="请选择工序"
-                style="width: 220px"
-              />
-            </el-form-item>
-          </el-col>
-          <el-col :span="8">
-            <el-form-item label="生产状态:" prop="status" align="center">
-              <el-select
-                v-model="form.status"
-                placeholder="请选择生产状态"
-                :disabled="!editStatus || !currentDept"
-                style="width: 220px"
-                @change="handleChangeStatus"
-              >
-                <el-option
-                  v-for="dict in dynamicOptions"
-                  :key="dict.value"
-                  :label="dict.label"
-                  :value="dict.value"
-                ></el-option>
-              </el-select>
-            </el-form-item>
-          </el-col>
-        </el-row>
-        <el-row :gutter="20">
-          <el-col :span="7">
-            <el-form-item label="结束时间:" prop="endTime">
-              <el-date-picker
-                v-model="form.endTime"
-                :disabled="!editStatus || !currentDept"
-                type="datetime"
-                value-format="YYYY-MM-DD HH:mm:ss "
-                :editable="false"
-                :clearable="false"
-                placeholder="请选择结束时间"
-                @change="handleTotalTime"
-              />
-            </el-form-item>
-          </el-col>
-          <el-col :span="9">
-            <el-form-item label="操作者:" prop="nickName" label-width="82px">
-              <el-input
-                v-model.trim="form.nickName"
-                placeholder="请输入操作者"
-                :disabled="true"
-                :clearable="true"
-                style="width: 220px; margin-left: 8px"
-              />
-            </el-form-item>
-          </el-col>
-          <el-col :span="8">
-            <el-form-item label="投产量:" prop="prodNum" label-width="82px">
-              <el-input-number
-                v-model.trim="form.prodNum"
-                :precision="0"
-                :disabled="true"
-                controls-position="right"
-                style="width: 220px"
-              />
-            </el-form-item>
-          </el-col>
-        </el-row>
-        <el-row :gutter="20">
-          <el-col :span="7">
-            <el-form-item
-              label="总工时:"
-              prop="workingHoursTime"
-              label-width="82px"
-            >
-              <el-input
-                v-model.trim="workingHoursTime"
-                :disabled="true"
-                style="width: 220px; margin-left: 0px"
-              />
-            </el-form-item>
-          </el-col>
-          <el-col :span="9">
-            <el-form-item
-              label="合格数:"
-              prop="qualifiedNum"
-              label-width="90px"
-              style="padding-right: 0px"
-            >
-              <el-input-number
-                v-model.trim="form.qualifiedNum"
-                :disabled="!editStatus || !currentDept"
-                :precision="0"
-                controls-position="right"
-                style="width: 220px"
-              />
-            </el-form-item>
-          </el-col>
-          <el-col :span="8">
-            <el-form-item
-              label="设备:"
-              prop="equipmentDetailId"
-              label-width="82px"
-            >
-              <el-select-v2
-                v-model="form.equipmentDetailId"
-                :disabled="!editStatus || !currentDept"
-                :options="equipmentList"
-                placeholder="请选择设备"
-                style="width: 220px"
-              >
-              </el-select-v2>
-            </el-form-item>
-          </el-col>
-        </el-row>
-      </el-form>
-      <!-- 搜索区域 -->
-      <el-form class="list-search-container" :inline="true">
-        <el-form-item class="section-title" label="废品信息" />
-        <el-form-item>
-          <el-button
-            type="primary"
-            icon="Plus"
-            v-if="editStatus && currentDept"
-            @click="handleAddReject"
-            >新增
-          </el-button>
-        </el-form-item>
-      </el-form>
-      <!-- 列表区 -->
-      <div class="el-table-container">
-        <el-table
-          ref="dayworkItemRejectTable"
-          v-loading="loading"
-          row-key="id"
-          :data="form.groupRejectList"
-          height="100%"
-        >
-          <el-table-column type="index" label="行号" width="60" align="center">
-            <template #default="scope">
-              {{ scope.$index + 1 }}
-            </template>
-          </el-table-column>
-          <el-table-column
-            label="废品数量"
-            width="160px"
-            prop="rejectNum"
-            align="center"
-          >
-            <template #default="scope">
-              <el-input-number
-                v-model.trim="scope.row.rejectNum"
-                placeholder="废品数量"
-                :disabled="!editStatus || !currentDept"
-                :precision="0"
-                :min="0"
-                controls-position="right"
-              />
-            </template>
-          </el-table-column>
-          <el-table-column
-            prop="reason"
-            label="废品原因"
-            align="center"
-            width="300px"
-          >
-            <template #default="scope">
-              <el-select
-                v-model="scope.row.reason"
-                :disabled="!editStatus || !currentDept"
-                placeholder="请选择废品原因"
-              >
-                <el-option
-                  v-for="cause in waste_causes"
-                  :key="cause.value"
-                  :label="cause.label"
-                  :value="cause.value"
-                ></el-option>
-              </el-select>
-            </template>
-          </el-table-column>
-          <el-table-column fixed="right" label="操作" align="center">
-            <template #default="scope">
-              <el-button
-                link
-                type="danger"
-                icon="Delete"
-                :disabled="!editStatus || !currentDept"
-                @click="handleDeleteReject(scope.row)"
-                >删除
-              </el-button>
-            </template>
-          </el-table-column>
-        </el-table>
-      </div>
-    </div>
-  </el-drawer>
-</template>
-<script setup>
-import {
-  getProcessList,
-  getDayworkItemRejectList,
-  updateDayworkItemInfo,
-  getEquipmentInfo,
-  getIsFirstOrder,
-} from "@/api/business/daywork.js";
-import { ref } from "vue";
-
-const { proxy } = getCurrentInstance();
-const emit = defineEmits(["handleSaveSuccess"]);
-/** 字典 */
-const { daywork_status_edit } = proxy.useDict("daywork_status_edit");
-const { daywork_status_first } = proxy.useDict("daywork_status_first");
-const { daywork_status_second } = proxy.useDict("daywork_status_second");
-const { waste_causes } = proxy.useDict("waste_causes");
-const detailInfo = ref({});
-const loading = ref(false);
-const processList = ref([]);
-const lotId = ref(null);
-const equipmentList = ref([]);
-const visible = ref(false);
-const isFirst = ref(true); //是否为首序
-const editStatus = ref(true);
-const currentDept = ref(false);
-const rejectAmount = ref(0);
-const dynamicOptions = ref([]);
-const workingHoursTime = ref("");
-const maxQuailifiedNum = ref(0);
-const detailsRow = {
-  id: null,
-  rejectNum: "",
-  reason: "",
-};
-// const validateprodNum = (rule, value, callback) => {
-//   if (value <= 0) {
-//     callback(new Error("投产量应大于0"));
-//   } else {
-//     callback();
-//   }
-// };
-const validateWorkingHours = (rule, value, callback) => {
-  if (form.value.workHoursTimestamp < 0) {
-    callback(new Error("结束时间应晚于开始时间"));
-  } else {
-    callback();
-  }
-};
-const validateQualifiedNum = (rule, value, callback) => {
-  const max = maxQuailifiedNum.value;
-  if (value < 0) {
-    callback(new Error("合格数量应大于/等于0"));
-  } else {
-    callback();
-  }
-
-  // else if (
-  //   value > max &&
-  //   detailInfo.value.firstProcessId != form.value.processId
-  // ) {
-  //   callback(new Error("合格数量不应大于投产量的103%,即" + max));
-  // }
-};
-const validateEndTime = (rule, value, callback) => {
-  if (form.value.status > 1) {
-    if (form.value.endTime == null) {
-      callback(new Error("结束时间不能为空"));
-    } else {
-      callback();
-    }
-  } else {
-    if (form.value.endTime != null) {
-      callback(new Error("该状态结束时间应为空"));
-    } else {
-      callback();
-    }
-  }
-};
-const validateStartTime = (rule, value, callback) => {
-  if (form.value.status > 1) {
-    if (form.value.startTime == null) {
-      callback(new Error("开始时间不能为空"));
-    } else {
-      callback();
-    }
-  } else {
-    callback();
-  }
-};
-const data = reactive({
-  form: {
-    groupRejectList: [],
-    nickName: "",
-    processId: "",
-    processAlias: "",
-    prodNum: 0,
-    qualifiedNum: 0,
-    rejectNum: 0,
-    startTime: "",
-    endTime: "",
-    workingHours: 0,
-    status: "",
-    workHoursTimestamp: 0,
-  },
-  rules: {
-    // prodNum: [
-    //   { required: true, message: "投产量不能为空", trigger: "blur" },
-    //   { validator: validateprodNum, trigger: "blur" },
-    // ],
-    startTime: [{ validator: validateStartTime, trigger: "blur" }],
-    endTime: [{ validator: validateEndTime, trigger: "blur" }],
-    workingHoursTime: [{ validator: validateWorkingHours, trigger: "change" }],
-    qualifiedNum: [
-      { required: true, message: "合格数量不能为空", trigger: "blur" },
-      { validator: validateQualifiedNum, trigger: "blur" },
-    ],
-  },
-});
-
-const { form, rules } = toRefs(data);
-
-/***********************  方法区  ****************************/
-/** 打开抽屉 */
-const open = (row) => {
-  reset();
-  loading.value = true;
-  if (row.id) {
-    //查询是否为首序
-    getIsFirstOrder(row.dayworkId).then((res) => {
-      isFirst.value = res.data.isFirstOrder;
-    });
-    lotId.value = row.lotId;
-    //页面操作是编辑还是删除
-    console.log("row", row);
-    editStatus.value = row.editStatus;
-    detailInfo.value = proxy.deepClone(row);
-    console.log(detailInfo.value);
-    //是否是当前工序
-    currentDept.value = row.currentDept;
-    form.value.id = row.id;
-    form.value.startTime = row.startTime;
-    form.value.endTime = row.endTime;
-    workingHoursTime.value = row.workingHours;
-    form.value.nickName = row.nickName;
-    form.value.status = row.status;
-    form.value.processId = row.processId;
-    form.value.productionPlanDetailId = row.productionPlanDetailId;
-    if (form.value.status == 0 || form.value.status == 1) {
-      dynamicOptions.value = daywork_status_first.value;
-    } else if (form.value.status == 2 || form.value.status == 3) {
-      dynamicOptions.value = daywork_status_edit.value;
-    } else {
-      dynamicOptions.value = daywork_status_second.value;
-    }
-    form.value.qualifiedNum = row.qualifiedNum;
-    //合格数最大能修改数值
-    maxQuailifiedNum.value = row.maxQuailifiedNum;
-    form.value.workHoursTimestamp = 0;
-    form.value.prodNum = row.prodNum;
-    getProcessList({ technologicalProcessId: row.technologicalProcessId }).then(
-      (res) => {
-        processList.value = res.data;
-        for (let i = 0; i < processList.value.length; i++) {
-          if (processList.value[i].label === row.processAlias.trim()) {
-            form.value.processId = processList.value[i].value;
-          }
-        }
-      }
-    );
-    getDayworkItemRejectList({ dayworkItemId: detailInfo.value.id }).then(
-      (response) => {
-        if (response.code == 200) {
-          for (let i = 0; i < response.data.length; i++) {
-            response.data[i].rejectNum = parseInt(response.data[i].rejectNum);
-          }
-          form.value.groupRejectList = response.data;
-        }
-      }
-    );
-    //查询能够选择的设备信息
-    let productionPlanDetailId = parseInt(row.productionPlanDetailId);
-    getEquipmentInfo({
-      commonCode: row.userName,
-      productionPlanDetailId: productionPlanDetailId,
-      dayworkItemId: row.id,
-      deptId: row.deptId,
-    }).then((equipmentRef) => {
-      if (equipmentRef.code == 200) {
-        if (equipmentRef.rows.length > 0) {
-          equipmentList.value = equipmentRef.rows;
-          for (let i = 0; i < equipmentList.value.length; i++) {
-            if (row.equipmentDetailCode == equipmentList.value[i].label) {
-              form.value.equipmentDetailId = equipmentList.value[i].value;
-            }
-          }
-        } else {
-          equipmentList.value = [];
-        }
-      }
-    });
-    loading.value = false;
-    visible.value = true;
-  }
-};
-/**
- * 对话框关闭 事件
- */
-function close() {
-  reset();
-  visible.value = false;
-}
-
-/** 表单重置 */
-function reset() {
-  form.value = {
-    groupRejectList: [],
-    nickName: "",
-    processId: null,
-    processAlias: "",
-    prodNum: 0,
-    qualifiedNum: 0,
-    rejectNum: 0,
-    startTime: "",
-    endTime: "",
-    workingHours: 0,
-  };
-  proxy.resetForm("dayworkItemRef");
-}
-
-/** 提交按钮 */
-const handleSave = () => {
-  proxy.$refs["dayworkItemRef"].validate((valid) => {
-    if (valid) {
-      rejectAmount.value = 0;
-      var reasonList = [];
-      var flag = true;
-      //判断工序是否是尾序
-      var lastProcess = false;
-      if (
-        form.value.processId ==
-        processList.value[processList.value.length - 1].value
-      ) {
-        lastProcess = true;
-      }
-      if (lastProcess) {
-        if (form.value.status > 3) {
-          flag = false;
-          proxy.$modal.msgError("尾序不能选择该状态");
-        }
-      }
-      //判断这个item是否能选择工序已完成
-      if (detailInfo.value.processFinish && form.value.status == 3) {
-        flag = false;
-        proxy.$modal.msgError("该道序状态已有工序已完成");
-      }
-      for (let i = 0; i < form.value.groupRejectList.length; i++) {
-        rejectAmount.value += form.value.groupRejectList[i].rejectNum;
-        if (form.value.groupRejectList[i].rejectNum <= 0) {
-          flag = false;
-          proxy.$modal.msgError("第" + (i + 1) + "废品数应大于0");
-          return;
-        }
-        if (!form.value.groupRejectList[i].reason) {
-          flag = false;
-          proxy.$modal.msgError("第" + (i + 1) + "行废品原因不能为空");
-
-          return;
-        }
-        if (reasonList.indexOf(form.value.groupRejectList[i].reason) >= 0) {
-          flag = false;
-          proxy.$modal.msgError(
-            "第" +
-              (i + 1) +
-              "行废品原因与" +
-              (reasonList.indexOf(form.value.groupRejectList[i].reason) + 1) +
-              "行相同"
-          );
-          return;
-        }
-        reasonList.push(form.value.groupRejectList[i].reason);
-      }
-      if (rejectAmount.value > form.value.prodNum) {
-        flag = false;
-        proxy.$modal.msgError(
-          "废品总数不能超过投产数,当前废品总数为" + rejectAmount.value
-        );
-      }
-
-      form.value.workingHours = form.value.workHoursTimestamp;
-      //设备id和code
-      for (let i = 0; i < equipmentList.value.length; i++) {
-        if (form.value.equipmentDetailId == equipmentList.value[i].value) {
-          form.value.equipmentDetailCode = equipmentList.value[i].label;
-        }
-      }
-      if (flag) {
-        form.value.dayworkId = detailInfo.value.dayworkId;
-        //同工序的所有合格数
-        form.value.temporaryProcessQualifiedNum =
-          detailInfo.value.totalQuailifiedNum + form.value.qualifiedNum;
-        //如果状态从工序已完成改成结束报工,传给后端一个标记,如果为true,则删除中间表对应的数据
-        if (detailInfo.value.status == 3 && form.value.status == 2) {
-          form.value.dayworkId = detailInfo.value.dayworkId;
-          form.value.flag = true;
-        }
-        let data = form.value;
-        data.lotId = lotId.value;
-
-        const max = maxQuailifiedNum.value;
-        let sunm =
-          detailInfo.value.totalQuailifiedNum + form.value.qualifiedNum; //计算总合格数
-        let num = sunm - form.value.prodNum; //多出来的数量
-        let percent = (sunm / form.value.prodNum) * 100; //合格率
-        percent = Math.ceil(percent * 100) / 100; //只入不舍
-        //判断是否超过投产量
-        if (sunm > form.value.prodNum) {
-          //判断是否为首序
-          if (isFirst.value) {
-            // 弹出确认对话框
-            proxy.$modal
-              .confirm(
-                "合格数为投产量" +
-                  percent +
-                  "%,超出投产量" +
-                  num +
-                  "。 是否继续保存!"
-              )
-              .then(function () {
-                updateDayworkItem();
-              })
-              .then(() => {
-                return;
-              })
-              .catch(() => {
-                return;
-              });
-          } else {
-            if (form.value.qualifiedNum <= max) {
-              updateDayworkItem();
-            } else {
-              proxy.$modal.msgError(
-                "合格数不能超过投产量的103%,最大合格数为" + max
-              );
-            }
-          }
-        } else {
-          updateDayworkItem();
-        }
-      }
-    }
-  });
-};
-
-//页面提交方法
-function updateDayworkItem() {
-  updateDayworkItemInfo(form.value).then((res) => {
-    if (res.code == 200) {
-      proxy.$modal.msgSuccess("保存成功!");
-      visible.value = false;
-      emit("handleSaveSuccess");
-    } else {
-      proxy.$modal.msgError("保存失败!");
-    }
-  });
-}
-
-//删除废弃信息
-function handleDeleteReject(row) {
-  form.value.groupRejectList.splice(form.value.groupRejectList.indexOf(row), 1);
-}
-
-//添加废弃信息
-function handleAddReject() {
-  const newDetail = JSON.parse(JSON.stringify(detailsRow));
-  newDetail.rejectNum = 0;
-  newDetail.dayworkId = detailInfo.value.dayworkId;
-  newDetail.dayworkItemId = detailInfo.value.id;
-  newDetail.lotId = detailInfo.value.lotId;
-  form.value.groupRejectList.push(newDetail);
-}
-
-//计算总工时
-function handleTotalTime() {
-  if (form.value.endTime == null) {
-    workingHoursTime.value = "0小时0分钟0秒";
-    form.value.workHoursTimestamp = 0;
-  } else {
-    form.value.workHoursTimestamp =
-      new Date(form.value.endTime) - new Date(form.value.startTime);
-    let seconds = Math.floor((form.value.workHoursTimestamp / 1000) % 60);
-    let minutes = Math.floor(
-      (form.value.workHoursTimestamp / (1000 * 60)) % 60
-    );
-    let hours = Math.floor(form.value.workHoursTimestamp / (1000 * 60 * 60));
-    let time = `${hours}小时${minutes}分钟${seconds}秒`;
-    workingHoursTime.value = time;
-  }
-}
-
-//当生产状态为未开始、生产中时,结束时间为空,合格数为0,废弃信息为空
-function handleChangeStatus() {
-  if (form.value.status == 1) {
-    form.value.endTime = null;
-    workingHoursTime.value = "0小时0分钟0秒";
-    form.value.workingHours = 0;
-    form.value.groupRejectList = [];
-    form.value.qualifiedNum = 0;
-  }
-  if (form.value.status == 0) {
-    form.value.endTime = null;
-    form.value.startTime = null;
-    workingHoursTime.value = "0小时0分钟0秒";
-    form.value.workingHours = 0;
-    form.value.groupRejectList = [];
-    form.value.qualifiedNum = 0;
-    form.value.equipmentDetailId = null;
-    form.value.equipmentDetailCode = null;
-  }
-}
-
-/** 取消按钮 */
-const handleCancel = () => {
-  visible.value = false;
-  reset();
-};
-
-/** 暴露给父组件的方法 */
-defineExpose({
-  open,
-});
-</script>
-<style scoped>
-.el-select-v2__placeholder {
-  display: flex !important;
-}
-</style>