<template>
|
<view class="invoice-add">
|
<!-- 使用通用页面头部组件 -->
|
<PageHeader title="生产报工"
|
@back="goBack" />
|
<!-- 表单内容 -->
|
<u-form @submit="submitForm"
|
ref="formRef"
|
label-width="110"
|
input-align="right"
|
error-message-align="right">
|
<!-- 基本信息 -->
|
<view class="form-section">
|
<u-form-item label="待生产数量"
|
prop="remainingQuantity"
|
required>
|
<u-input v-model="form.remainingQuantity"
|
placeholder="自动填充"
|
disabled />
|
</u-form-item>
|
<u-form-item label="本次生产数量"
|
prop="quantity"
|
required>
|
<u-number-box v-model="form.quantity"
|
step="0.1"
|
bgColor="#fff"
|
decimal-length="1"
|
:min="0"></u-number-box>
|
</u-form-item>
|
<u-form-item label="班组信息"
|
prop="schedulingUserId"
|
required>
|
<u-input v-model="form.userName"
|
placeholder="请选择生产人"
|
readonly />
|
</u-form-item>
|
</view>
|
<!-- 使用FooterButtons组件 -->
|
<FooterButtons @cancel="goBack"
|
@confirm="submitForm"
|
:loading="submitting" />
|
<!-- 为底部按钮留出空间 -->
|
<view style="height: 80px;"></view>
|
</u-form>
|
<!-- 生产人选择器 -->
|
<up-action-sheet :show="showProducerPicker"
|
:actions="producerList"
|
title="选择生产人"
|
@select="onProducerConfirm"
|
@close="showProducerPicker = false" />
|
</view>
|
</template>
|
|
<script setup>
|
import { ref, onMounted } from "vue";
|
import FooterButtons from "@/components/FooterButtons.vue";
|
|
const showToast = message => {
|
uni.showToast({
|
title: message,
|
icon: "none",
|
});
|
};
|
|
import { formatDateToYMD } from "@/utils/ruoyi";
|
import { userListNoPageByTenantId } from "@/api/system/user";
|
import { productionReport } from "@/api/productionManagement/productionReporting";
|
import { getInfo } from "@/api/login";
|
|
// 表单引用
|
const formRef = ref();
|
|
// 表单数据
|
let form = ref({
|
remainingQuantity: 0,
|
quantity: 0,
|
userName: "",
|
workOrderId: "",
|
reportWork: "",
|
productProcessRouteItemId: "",
|
userId: "",
|
productMainId: null,
|
});
|
let schedulingUserName = ref("");
|
|
// 日期选择器状态
|
const showEnterDatePicker = ref(false);
|
const enterDateValue = ref(Date.now());
|
|
// 生产人选择器状态
|
const showProducerPicker = ref(false);
|
const producerList = ref([]);
|
|
// 生产人选择确认
|
const onProducerConfirm = e => {
|
form.value.schedulingUserId = e.value;
|
schedulingUserName.value = e.name;
|
showProducerPicker.value = false;
|
};
|
|
// 提交状态
|
const submitting = ref(false);
|
|
// 返回上一页
|
const goBack = () => {
|
uni.navigateBack();
|
};
|
const parsedOrderRow = ref({});
|
// 提交表单
|
const submitForm = async () => {
|
submitting.value = true;
|
// 校验表单
|
if (!form.value.quantity) {
|
submitting.value = false;
|
showToast("请输入本次生产数量");
|
return;
|
}
|
if (form.value.quantity > form.value.remainingQuantity) {
|
submitting.value = false;
|
showToast("本次生产数量不能大于待生产数量");
|
return;
|
}
|
|
addProductMain(reportForm).then(res => {
|
if (res.code === 200) {
|
showToast("报工成功");
|
submitting.value = false;
|
goBack();
|
} else {
|
showToast(res.msg || "报工失败");
|
submitting.value = false;
|
}
|
});
|
};
|
|
// 页面加载时初始化数据
|
onMounted(() => {
|
// 获取传递过来的orderRow参数
|
const pages = getCurrentPages();
|
const currentPage = pages[pages.length - 1];
|
const orderRow = currentPage.options.orderRow;
|
form.value.remainingQuantity = 1;
|
if (orderRow) {
|
parsedOrderRow.value = JSON.parse(orderRow);
|
|
form.value.quantity = parsedOrderRow.value.quantity;
|
form.value.productProcessRouteItemId =
|
parsedOrderRow.value.productProcessRouteItemId;
|
form.value.workOrderId = parsedOrderRow.value.id;
|
form.value.reportWork = parsedOrderRow.value.reportWork;
|
form.value.productMainId = parsedOrderRow.value.productMainId;
|
}
|
getInfo().then(res => {
|
form.value.userId = res.user.userId;
|
form.value.userName = res.user.userName;
|
});
|
});
|
</script>
|
|
<style scoped lang="scss">
|
@import "@/static/scss/form-common.scss";
|
</style>
|