|
|
@@ -72,7 +72,7 @@
|
|
|
ref="formRef"
|
|
|
v-loading="formLoading"
|
|
|
:model="formData"
|
|
|
- :rules="formRules"
|
|
|
+ :rules="dynamicFormRules"
|
|
|
label-width="150px"
|
|
|
class="form-container"
|
|
|
>
|
|
|
@@ -103,12 +103,12 @@
|
|
|
/> </el-form-item
|
|
|
></el-col>
|
|
|
<el-col :span="12">
|
|
|
- <el-form-item label="部门" prop="deptCode">
|
|
|
+ <el-form-item :label="getDeptLabel" prop="deptCode">
|
|
|
<DepartMentSelect
|
|
|
ref="departMentSelect"
|
|
|
v-model="formData.deptCode"
|
|
|
:disabled="isFormDisabled || !formData.businessType"
|
|
|
- placeholder="请选择部门"
|
|
|
+ :placeholder="getDeptPlaceholder"
|
|
|
clearable
|
|
|
@change="selectDepart"
|
|
|
/>
|
|
|
@@ -262,7 +262,7 @@
|
|
|
style="width: 60%"
|
|
|
icon="el-icon-upload2"
|
|
|
@click="handleUpload"
|
|
|
- >附件上传</el-button
|
|
|
+ >附件上传</el-button
|
|
|
>
|
|
|
</el-col>
|
|
|
</el-row>
|
|
|
@@ -444,7 +444,7 @@ import DepartMentSelect from "./components/DepartMentSelect.vue";
|
|
|
import AttachmentUpload from "../../wms/incoming/register/components/AttachmentUpload.vue";
|
|
|
// 审批任务
|
|
|
import ApprovalTask from "../../wms/quality/iqcInspection/components/ApprovalTaskNew.vue";
|
|
|
-import {getFilesById} from "@/api/wms/incoming/register";
|
|
|
+import { getFilesById } from "@/api/wms/incoming/register";
|
|
|
export default {
|
|
|
name: "InRequestForm",
|
|
|
components: {
|
|
|
@@ -460,7 +460,7 @@ export default {
|
|
|
sourceOrderNoList: [],
|
|
|
businessDescribeList: [],
|
|
|
warehouseList: [],
|
|
|
- uploadFiles: [],// 上传的文件
|
|
|
+ uploadFiles: [], // 上传的文件
|
|
|
loading: false,
|
|
|
// 页面标题
|
|
|
dialogTitle: "",
|
|
|
@@ -504,50 +504,23 @@ export default {
|
|
|
},
|
|
|
// 表单校验
|
|
|
formRules: {
|
|
|
- deptCode: [{ required: true, message: "请选择部门", trigger: "blur" }],
|
|
|
- requestNo: [
|
|
|
- { required: true, message: "申请单号不能为空", trigger: "blur" },
|
|
|
- ],
|
|
|
- expectedTime: [
|
|
|
- { required: true, message: "预计入库时间不能为空", trigger: "blur" },
|
|
|
- ],
|
|
|
- requestType: [
|
|
|
- {
|
|
|
- required: true,
|
|
|
- message: "申请类型(0入库 1出库)不能为空",
|
|
|
- trigger: "change",
|
|
|
- },
|
|
|
- ],
|
|
|
businessType: [
|
|
|
{
|
|
|
required: true,
|
|
|
- message:
|
|
|
- "业务类型(0采购入库 3生产退料 4成品入库 6销售退货 8委外退料 9委外入库 11其他入库 13转移调拨 14仓库盘点)不能为空",
|
|
|
- trigger: "change",
|
|
|
- },
|
|
|
- ],
|
|
|
- businessSubType: [
|
|
|
- {
|
|
|
- required: true,
|
|
|
- message: "业务子类型(0正常 1补料)不能为空",
|
|
|
- trigger: "change",
|
|
|
- },
|
|
|
- ],
|
|
|
- status: [
|
|
|
- {
|
|
|
- required: false,
|
|
|
- message:
|
|
|
- "状态(0草稿 1已提交 2已审核 3执行中 4已完成 5已取消)不能为空",
|
|
|
+ message: "业务类型不能为空",
|
|
|
trigger: "blur",
|
|
|
},
|
|
|
],
|
|
|
priority: [
|
|
|
{
|
|
|
required: true,
|
|
|
- message: "优先级(0普通 1紧急 2加急)不能为空",
|
|
|
+ message: "优先级不能为空",
|
|
|
trigger: "blur",
|
|
|
},
|
|
|
],
|
|
|
+ expectedTime: [
|
|
|
+ { required: true, message: "预计入库时间不能为空", trigger: "blur" },
|
|
|
+ ],
|
|
|
},
|
|
|
};
|
|
|
},
|
|
|
@@ -567,6 +540,102 @@ export default {
|
|
|
this.formData.id === ""
|
|
|
);
|
|
|
},
|
|
|
+ // 动态获取部门标签
|
|
|
+ getDeptLabel() {
|
|
|
+ const businessType = this.formData.businessType;
|
|
|
+ if (businessType === "9") {
|
|
|
+ // 委外入库
|
|
|
+ return "收货部门";
|
|
|
+ } else if (businessType === "8") {
|
|
|
+ // 委外退料
|
|
|
+ return "退货部门";
|
|
|
+ } else if (businessType === "3") {
|
|
|
+ // 生产退料
|
|
|
+ return "发料部门";
|
|
|
+ }
|
|
|
+ return "部门";
|
|
|
+ },
|
|
|
+ // 动态获取部门占位符
|
|
|
+ getDeptPlaceholder() {
|
|
|
+ const businessType = this.formData.businessType;
|
|
|
+ if (businessType === "9") {
|
|
|
+ // 委外入库
|
|
|
+ return "请选择收货部门";
|
|
|
+ } else if (businessType === "8") {
|
|
|
+ // 委外退料
|
|
|
+ return "请选择退货部门";
|
|
|
+ } else if (businessType === "3") {
|
|
|
+ // 生产退料
|
|
|
+ return "请选择发料部门";
|
|
|
+ }
|
|
|
+ return "请选择部门";
|
|
|
+ },
|
|
|
+ // 动态生成表单验证规则
|
|
|
+ dynamicFormRules() {
|
|
|
+ // 从原始规则中只保留业务类型、优先级、预计出入库时间
|
|
|
+ const baseRules = {
|
|
|
+ businessType: this.formRules.businessType,
|
|
|
+ priority: this.formRules.priority,
|
|
|
+ expectedTime: this.formRules.expectedTime,
|
|
|
+ };
|
|
|
+
|
|
|
+ const rules = { ...baseRules };
|
|
|
+ const businessType = this.formData.businessType;
|
|
|
+
|
|
|
+ // 只有选择了业务类型后,才添加其他字段的验证规则
|
|
|
+ if (businessType) {
|
|
|
+ // 委外入库(9)和委外退料(8)需要的必填字段
|
|
|
+ if (businessType === "9" || businessType === "8") {
|
|
|
+ rules.deptCode = [
|
|
|
+ {
|
|
|
+ required: true,
|
|
|
+ message: this.getDeptLabel + "不能为空",
|
|
|
+ trigger: "blur",
|
|
|
+ },
|
|
|
+ ];
|
|
|
+ rules.businessDescribe = [
|
|
|
+ {
|
|
|
+ required: true,
|
|
|
+ message: "业务分类名称不能为空",
|
|
|
+ trigger: "blur",
|
|
|
+ },
|
|
|
+ ];
|
|
|
+ rules.supplierCode = [
|
|
|
+ { required: true, message: "供应商不能为空", trigger: "blur" },
|
|
|
+ ];
|
|
|
+ rules.sourceOrderNo = [
|
|
|
+ { required: true, message: "源单编号不能为空", trigger: "blur" },
|
|
|
+ ];
|
|
|
+ }
|
|
|
+ // 生产退料(3)需要的必填字段
|
|
|
+ else if (businessType === "3") {
|
|
|
+ rules.deptCode = [
|
|
|
+ {
|
|
|
+ required: true,
|
|
|
+ message: this.getDeptLabel + "不能为空",
|
|
|
+ trigger: "blur",
|
|
|
+ },
|
|
|
+ ];
|
|
|
+ rules.businessDescribe = [
|
|
|
+ {
|
|
|
+ required: true,
|
|
|
+ message: "业务分类名称不能为空",
|
|
|
+ trigger: "blur",
|
|
|
+ },
|
|
|
+ ];
|
|
|
+ rules.sourceOrderNo = [
|
|
|
+ { required: true, message: "源单编号不能为空", trigger: "blur" },
|
|
|
+ ];
|
|
|
+ }
|
|
|
+ // 其他业务类型不需要必填部门字段
|
|
|
+ else {
|
|
|
+ // 移除部门字段的必填规则
|
|
|
+ delete rules.deptCode;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ return rules;
|
|
|
+ },
|
|
|
},
|
|
|
watch: {
|
|
|
"$route.query.id": {
|
|
|
@@ -772,6 +841,10 @@ export default {
|
|
|
this.formData.businessType = value;
|
|
|
this.formData.businessDescribe = "";
|
|
|
this.formData.businessCategory = "";
|
|
|
+ // 重置表单校验状态
|
|
|
+ this.$nextTick(() => {
|
|
|
+ this.$refs.formRef.clearValidate();
|
|
|
+ });
|
|
|
const { data } = await InRequestApi.getDictByOrderType({
|
|
|
orderType: value,
|
|
|
});
|
|
|
@@ -823,13 +896,15 @@ export default {
|
|
|
}) => rest
|
|
|
);
|
|
|
|
|
|
- //上传的附件拼接传给后端
|
|
|
- const fileIds = this.uploadFiles.map((item) => {
|
|
|
- return item.id || item.name?.fileId;
|
|
|
- }).filter(id => id && id !== '');
|
|
|
+ // 上传的附件拼接传给后端
|
|
|
+ const fileIds = this.uploadFiles
|
|
|
+ .map((item) => {
|
|
|
+ return item.id || item.name?.fileId;
|
|
|
+ })
|
|
|
+ .filter((id) => id && id !== "");
|
|
|
|
|
|
// 拼接文件ID
|
|
|
- data.fileId = fileIds.join(',');
|
|
|
+ data.fileId = fileIds.join(",");
|
|
|
|
|
|
// 修改的提交
|
|
|
if (data.id) {
|
|
|
@@ -963,7 +1038,6 @@ export default {
|
|
|
getFileList(data) {
|
|
|
this.uploadFiles = data;
|
|
|
},
|
|
|
-
|
|
|
},
|
|
|
};
|
|
|
</script>
|