zouyu
2026-01-16 30dc46174a37613366081bd1abab8eb71c171f7f
src/views/productionManagement/operationScheduling/components/formDia.vue
@@ -7,8 +7,8 @@
        @close="closeDia"
    >
      <el-button type="primary" @click="addRow" style="margin-bottom: 10px;">新增</el-button>
         <span style="font-size: 18px;margin-left: 10px">待排产数量:{{pendingNum}}</span>
      <el-table :data="tableData" border style="width: 100%" :summary-method="summarizeMainTable" show-summary :row-key="row => row.id">
      <span style="font-size: 18px;margin-left: 10px">待排产数量:{{pendingNum}}</span>
      <el-table :data="tableData" border style="width: 100%" :summary-method="summarizeMainTable" show-summary :row-key="row => row.id" stripe>
        <el-table-column label="序号" width="60">
          <template #default="scope">
            {{ scope.$index + 1 }}
@@ -16,7 +16,11 @@
        </el-table-column>
        <el-table-column label="工序" prop="process">
          <template #default="scope">
                  <el-input v-model="scope.row.process" placeholder="请输入工序" />
            <el-input
                v-model="scope.row.process"
                placeholder="请输入工序"
                clearable
            />
          </template>
        </el-table-column>
        <el-table-column label="单位" prop="unit">
@@ -26,28 +30,28 @@
        </el-table-column>
        <el-table-column label="排产数量" width="200" prop="schedulingNum">
          <template #default="scope">
                  <el-input-number
                     v-model="scope.row.schedulingNum"
                     placeholder="请输入"
                     :min="0"
                     :step="0.1"
                     :precision="2"
                     clearable
                     style="width: 100%"
                  />
            <el-input-number
                v-model="scope.row.schedulingNum"
                placeholder="请输入"
                :min="0"
                :step="0.1"
                :precision="2"
                clearable
                style="width: 100%"
            />
          </template>
        </el-table-column>
        <el-table-column label="工时定额" width="200" prop="workHours">
          <template #default="scope">
                  <el-input-number
                     v-model="scope.row.workHours"
                     placeholder="请输入"
                     :min="0"
                     :step="0.1"
                     :precision="2"
                     clearable
                     style="width: 100%"
                  />
            <el-input-number
                v-model="scope.row.workHours"
                placeholder="请输入"
                :min="0"
                :step="0.1"
                :precision="2"
                clearable
                style="width: 100%"
            />
          </template>
        </el-table-column>
        <el-table-column label="排产日期" prop="schedulingDate">
@@ -57,18 +61,18 @@
        </el-table-column>
        <el-table-column label="排产人" prop="schedulingUserId">
          <template #default="scope">
                  <el-select
                     v-model="scope.row.schedulingUserId"
                     placeholder="选择人员"
                     style="width: 100%;"
                  >
                     <el-option
                        v-for="user in userList"
                        :key="user.userId"
                        :label="user.nickName"
                        :value="user.userId"
                     />
                  </el-select>
            <el-select
                v-model="scope.row.schedulingUserId"
                placeholder="选择人员"
                style="width: 100%;"
            >
              <el-option
                  v-for="user in userList"
                  :key="user.userId"
                  :label="user.nickName"
                  :value="user.userId"
              />
            </el-select>
          </template>
        </el-table-column>
        <el-table-column label="操作" width="80">
@@ -77,12 +81,12 @@
          </template>
        </el-table-column>
      </el-table>
         <template #footer>
            <div class="dialog-footer">
               <el-button type="primary" @click="submitForm">确认</el-button>
               <el-button @click="closeDia">取消</el-button>
            </div>
         </template>
      <template #footer>
        <div class="dialog-footer">
          <el-button type="primary" @click="submitForm">确认</el-button>
          <el-button @click="closeDia">取消</el-button>
        </div>
      </template>
    </el-dialog>
  </div>
</template>
@@ -92,13 +96,12 @@
import {userListNoPageByTenantId} from "@/api/system/user.js";
import {processScheduling} from "@/api/productionManagement/operationScheduling.js";
const { proxy } = getCurrentInstance()
const { work_step } = proxy.useDict("work_step")
const emit = defineEmits(['close'])
const dialogFormVisible = ref(false);
const operationType = ref('')
const tableData = ref([
   { process: '', schedulingDate: '', schedulingNum: '', schedulingUserId: '', workHours: '', unit: '' }
  { process: '', schedulingDate: '', schedulingNum: '', schedulingUserId: '', workHours: '', unit: '' }
]);
const unitFromRow = ref('');
const idFromRow = ref('');
@@ -109,10 +112,10 @@
const openDialog = (type, row) => {
  operationType.value = type;
  dialogFormVisible.value = true;
   userListNoPageByTenantId().then((res) => {
      userList.value = res.data;
   });
   pendingNum.value = row.pendingNum
  userListNoPageByTenantId().then((res) => {
    userList.value = res.data;
  });
  pendingNum.value = row.pendingNum
  if (row && row.unit !== undefined) {
    unitFromRow.value = row.unit;
    idFromRow.value = row.id;
@@ -125,36 +128,36 @@
  }
}
const submitForm = () => {
   // 1. 检查每一行是否填写完整
   for (let i = 0; i < tableData.value.length; i++) {
      const row = tableData.value[i];
      if (
         !row.process ||
         !row.schedulingDate ||
         row.schedulingNum === '' || row.schedulingNum === null ||
         !row.schedulingUserId ||
         row.workHours === '' || row.workHours === null ||
         !row.unit
      ) {
         proxy.$modal.msgError(`第${i + 1}行数据未填写完整`);
         return;
      }
   }
   // 2. 合计排产数量
   const totalSchedulingNum = tableData.value.reduce((sum, row) => {
      return sum + Number(row.schedulingNum || 0);
   }, 0);
   if (totalSchedulingNum > Number(pendingNum.value)) {
      proxy.$modal.msgError('排产数量合计不能超过待排产数量');
      return;
   }
   processScheduling(tableData.value).then((res) => {
      proxy.$modal.msgSuccess("提交成功");
      closeDia();
   })
  // 1. 检查每一行是否填写完整
  for (let i = 0; i < tableData.value.length; i++) {
    const row = tableData.value[i];
    if (
        !row.process ||
        !row.schedulingDate ||
        row.schedulingNum === '' || row.schedulingNum === null ||
        !row.schedulingUserId ||
        row.workHours === '' || row.workHours === null ||
        !row.unit
    ) {
      proxy.$modal.msgError(`第${i + 1}行数据未填写完整`);
      return;
    }
  }
  // 2. 合计排产数量
  const totalSchedulingNum = tableData.value.reduce((sum, row) => {
    return sum + Number(row.schedulingNum || 0);
  }, 0);
  if (totalSchedulingNum > Number(pendingNum.value)) {
    proxy.$modal.msgError('排产数量合计不能超过待排产数量');
    return;
  }
  processScheduling(tableData.value).then((res) => {
    proxy.$modal.msgSuccess("提交成功");
    closeDia();
  })
}
const summarizeMainTable = (param) => {
   return proxy.summarizeTable(param, ['schedulingNum']);
  return proxy.summarizeTable(param, ['schedulingNum']);
};
// 关闭弹框
const closeDia = () => {
@@ -175,4 +178,4 @@
<style scoped>
</style>
</style>