feat: 完成成品出货单。
This commit is contained in:
@@ -58,6 +58,12 @@ export default {
|
|||||||
sysrecord: "Record",
|
sysrecord: "Record",
|
||||||
sysrole: "Role",
|
sysrole: "Role",
|
||||||
},
|
},
|
||||||
|
_enum: {
|
||||||
|
outStockType: {
|
||||||
|
material: "Material",
|
||||||
|
finishedProduct: "Finished Product",
|
||||||
|
},
|
||||||
|
},
|
||||||
_prop: {
|
_prop: {
|
||||||
common: {
|
common: {
|
||||||
tel: "Tel",
|
tel: "Tel",
|
||||||
@@ -240,6 +246,15 @@ export default {
|
|||||||
formName: "Form Name",
|
formName: "Form Name",
|
||||||
formMark: "Mark",
|
formMark: "Mark",
|
||||||
storeName: "Store",
|
storeName: "Store",
|
||||||
|
storeId: "Store",
|
||||||
|
storeNo: "Store No",
|
||||||
|
formStatus: "Status",
|
||||||
|
outStockType: "Out Stock Type",
|
||||||
|
partNumber: "Part Number",
|
||||||
|
productSpecs: "Product Specs",
|
||||||
|
productCount: "Count",
|
||||||
|
productMark: "Remark",
|
||||||
|
createDate: "Create Date",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
sale: {
|
sale: {
|
||||||
@@ -508,6 +523,28 @@ export default {
|
|||||||
delete_message: "Delete Order",
|
delete_message: "Delete Order",
|
||||||
},
|
},
|
||||||
finishedproductshipment: {
|
finishedproductshipment: {
|
||||||
|
select_storeId: "Please select store",
|
||||||
|
select_outStockType: "Please select out stock type",
|
||||||
|
input_formName: "Please enter form name",
|
||||||
|
input_formMark: "Please enter form mark",
|
||||||
|
input_formCode: "Please enter form code",
|
||||||
|
input_partNumber: "Please enter part number",
|
||||||
|
input_productCount: "Please enter count",
|
||||||
|
input_productMark: "Please enter remark",
|
||||||
|
approve_confirm: "Confirm to approve?",
|
||||||
|
approve_success: "Approve success",
|
||||||
|
approve_fail: "Approve failed",
|
||||||
|
reject_confirm: "Confirm to reject?",
|
||||||
|
reject_success: "Reject success",
|
||||||
|
reject_fail: "Reject failed",
|
||||||
|
already_approved: "Already approved",
|
||||||
|
not_approved: "Not approved",
|
||||||
|
no_shipment_items: "No shipment items",
|
||||||
|
duplicate_part_number_in_request: "Duplicate part number in request",
|
||||||
|
part_number_not_found: "Part number not found",
|
||||||
|
insufficient_stock: "Insufficient stock",
|
||||||
|
import_success: "Import success",
|
||||||
|
import_fail: "Import failed",
|
||||||
delete_message: "Delete Shipment",
|
delete_message: "Delete Shipment",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
@@ -602,6 +639,9 @@ export default {
|
|||||||
finishedproductshipment: {
|
finishedproductshipment: {
|
||||||
add: "Add Shipment",
|
add: "Add Shipment",
|
||||||
edit: "Edit Shipment",
|
edit: "Edit Shipment",
|
||||||
|
showItem: "Shipment Details",
|
||||||
|
baseTitle: "Shipment Basic Info",
|
||||||
|
tableTitle: "Shipment Details",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
purchase: {
|
purchase: {
|
||||||
|
|||||||
@@ -58,6 +58,12 @@ export default {
|
|||||||
sysrecord: "日志列表",
|
sysrecord: "日志列表",
|
||||||
sysrole: "角色管理",
|
sysrole: "角色管理",
|
||||||
},
|
},
|
||||||
|
_enum: {
|
||||||
|
outStockType: {
|
||||||
|
material: "物料",
|
||||||
|
finishedProduct: "成品",
|
||||||
|
},
|
||||||
|
},
|
||||||
_prop: {
|
_prop: {
|
||||||
common: {
|
common: {
|
||||||
tel: "电话",
|
tel: "电话",
|
||||||
@@ -197,6 +203,21 @@ export default {
|
|||||||
storeName: "仓库",
|
storeName: "仓库",
|
||||||
returnQty: "退料数量",
|
returnQty: "退料数量",
|
||||||
},
|
},
|
||||||
|
finishedproductshipment: {
|
||||||
|
formCode: "单据编号",
|
||||||
|
formName: "单据名称",
|
||||||
|
formMark: "单据备注",
|
||||||
|
storeName: "仓库",
|
||||||
|
storeId: "仓库",
|
||||||
|
storeNo: "仓库编号",
|
||||||
|
formStatus: "单据状态",
|
||||||
|
outStockType: "出库类型",
|
||||||
|
partNumber: "物料编号",
|
||||||
|
productSpecs: "物料型号",
|
||||||
|
productCount: "数量",
|
||||||
|
productMark: "备注",
|
||||||
|
createDate: "创建时间",
|
||||||
|
},
|
||||||
finishedproductreceipt: {
|
finishedproductreceipt: {
|
||||||
totalValue: "入库数量",
|
totalValue: "入库数量",
|
||||||
formCode: "单据编号",
|
formCode: "单据编号",
|
||||||
@@ -279,17 +300,13 @@ export default {
|
|||||||
formMark: "单据备注",
|
formMark: "单据备注",
|
||||||
storeName: "仓库",
|
storeName: "仓库",
|
||||||
storeId: "仓库",
|
storeId: "仓库",
|
||||||
|
storeNo: "仓库编号",
|
||||||
formStatus: "单据状态",
|
formStatus: "单据状态",
|
||||||
productType: "型号",
|
outStockType: "出库类型",
|
||||||
productSn: "SN号",
|
partNumber: "物料编号",
|
||||||
mac: "MAC地址",
|
productSpecs: "物料型号",
|
||||||
serialNum: "序列号",
|
productCount: "数量",
|
||||||
softVersion: "软件版本",
|
productMark: "备注",
|
||||||
alVersion: "算法版本",
|
|
||||||
alNum: "算法标志",
|
|
||||||
alTxt: "激活状态",
|
|
||||||
manufacturingDate: "时间",
|
|
||||||
mark: "备注",
|
|
||||||
createDate: "创建时间",
|
createDate: "创建时间",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
@@ -636,19 +653,13 @@ export default {
|
|||||||
},
|
},
|
||||||
finishedproductshipment: {
|
finishedproductshipment: {
|
||||||
select_storeId: "请选择仓库",
|
select_storeId: "请选择仓库",
|
||||||
|
select_outStockType: "请选择出库类型",
|
||||||
input_formName: "请输入单据名称",
|
input_formName: "请输入单据名称",
|
||||||
input_formMark: "请输入单据备注",
|
input_formMark: "请输入单据备注",
|
||||||
input_formCode: "请输入单据编号",
|
input_formCode: "请输入单据编号",
|
||||||
input_productType: "请输入型号",
|
input_partNumber: "请输入物料编号",
|
||||||
input_productSn: "请输入SN号",
|
input_productCount: "请输入数量",
|
||||||
input_mac: "请输入MAC地址",
|
input_productMark: "请输入备注",
|
||||||
input_serialNum: "请输入序列号",
|
|
||||||
input_softVersion: "请输入软件版本",
|
|
||||||
input_alVersion: "请输入算法版本",
|
|
||||||
input_alNum: "请输入算法标志",
|
|
||||||
input_alTxt: "请输入激活状态",
|
|
||||||
input_manufacturingDate: "请输入时间",
|
|
||||||
input_mark: "请输入备注",
|
|
||||||
approve_confirm: "是否审核通过",
|
approve_confirm: "是否审核通过",
|
||||||
approve_success: "审核成功",
|
approve_success: "审核成功",
|
||||||
approve_fail: "审核失败",
|
approve_fail: "审核失败",
|
||||||
@@ -657,10 +668,10 @@ export default {
|
|||||||
reject_fail: "反审失败",
|
reject_fail: "反审失败",
|
||||||
already_approved: "成品出库单已经审核",
|
already_approved: "成品出库单已经审核",
|
||||||
not_approved: "成品出库单不是已审核状态,不能反审",
|
not_approved: "成品出库单不是已审核状态,不能反审",
|
||||||
no_module_sn_items: "成品出库单没有明细",
|
no_shipment_items: "成品出库单没有明细",
|
||||||
duplicate_sn_in_request: "导入数据中存在重复SN号",
|
duplicate_part_number_in_request: "导入数据中存在重复物料编号",
|
||||||
sn_not_found: "系统中不存在的SN号:",
|
part_number_not_found: "系统中不存在的物料编号",
|
||||||
sn_already_shipped: "已经出货的SN号:",
|
insufficient_stock: "库存不足",
|
||||||
import_success: "导入成功",
|
import_success: "导入成功",
|
||||||
import_fail: "导入失败",
|
import_fail: "导入失败",
|
||||||
delete_message: "删除成品出货单",
|
delete_message: "删除成品出货单",
|
||||||
|
|||||||
@@ -1,18 +1,20 @@
|
|||||||
<script lang="ts" setup>
|
<script lang="ts" setup>
|
||||||
import BasePageableTable from "@/components/base/base-pageable-table/BasePageableTable.vue";
|
|
||||||
import DefaultToolButton from "@/components/base/default-tool-button/DefaultToolButton.vue";
|
import DefaultToolButton from "@/components/base/default-tool-button/DefaultToolButton.vue";
|
||||||
import DefaultOperateButtonColumn from "@/components/base/default-column/DefaultOperateButtonColumn.vue";
|
import DefaultOperateButtonColumn from "@/components/base/default-column/DefaultOperateButtonColumn.vue";
|
||||||
import DefaultStatusSwitchColumn from "@/components/base/default-column/DefaultStatusSwitchColumn.vue";
|
import DefaultStatusSwitchColumn from "@/components/base/default-column/DefaultStatusSwitchColumn.vue";
|
||||||
import { usePage } from "@/composables/use-page";
|
import { usePage } from "@/composables/use-page";
|
||||||
import BaseFormWithTable from "@/components/base/base-form-with-table/BaseFormWithTable.vue";
|
import BaseFormWithTable from "@/components/base/base-form-with-table/BaseFormWithTable.vue";
|
||||||
|
import BaseItemDialog from "@/components/base/base-item-dialog/BaseItemDialog.vue";
|
||||||
import { $t } from "@/common/languages";
|
import { $t } from "@/common/languages";
|
||||||
import { ElMessage, ElMessageBox, type FormInstance, type FormRules } from "element-plus";
|
import { ElMessage, ElMessageBox, type FormInstance, type FormRules } from "element-plus";
|
||||||
import { formatDate } from "@/common/utils/format-utils";
|
import { formatDate } from "@/common/utils/format-utils";
|
||||||
import BaseItemDialog from "@/components/base/base-item-dialog/BaseItemDialog.vue";
|
|
||||||
import BaseSelect from "@/components/base/base-select/BaseSelect.vue";
|
import BaseSelect from "@/components/base/base-select/BaseSelect.vue";
|
||||||
import { generateDucumentNo } from "@/common/utils/document-no-generator/document-no-generator";
|
import { generateDucumentNo } from "@/common/utils/document-no-generator/document-no-generator";
|
||||||
import { get, post } from "@/common/http/request";
|
import { get, post } from "@/common/http/request";
|
||||||
import { useStatus } from "@/common/languages/mapping/base-info-mapping";
|
import { useStatus } from "@/common/languages/mapping/base-info-mapping";
|
||||||
|
import ExpandablePageableTable from "@/components/base/expandable-pageable-table/ExpandablePageableTable.vue";
|
||||||
|
import { type FieldMappingConfig } from "@/components/base/base-form-with-table/type";
|
||||||
|
import { watch } from "vue";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 必须要的变量
|
* 必须要的变量
|
||||||
@@ -23,11 +25,10 @@ const addUrl = "/production/finishedproductshipment/addFinishedProductShipment";
|
|||||||
const editUrl = "/production/finishedproductshipment/updateFinishedProductShipment";
|
const editUrl = "/production/finishedproductshipment/updateFinishedProductShipment";
|
||||||
const removeUrl = "/production/finishedproductshipment/deleteFinishedProductShipment";
|
const removeUrl = "/production/finishedproductshipment/deleteFinishedProductShipment";
|
||||||
const approveUrl = "/production/finishedproductshipment/approveFinishedProductShipment";
|
const approveUrl = "/production/finishedproductshipment/approveFinishedProductShipment";
|
||||||
const unapproveUrl = "/production/finishedproductshipment/unapproveFinishedProductShipment";
|
const rejectUrl = "/production/finishedproductshipment/rejectFinishedProductShipment";
|
||||||
const getDetailUrl = "/production/finishedproductshipment/getFinishedProductShipmentDetail";
|
const getDetailUrl = "/production/finishedproductshipment/getFinishedProductShipmentDetail";
|
||||||
const importItemsUrl = "/production/finishedproductshipment/importFinishedProductShipmentItems";
|
|
||||||
const getWarehouseSelectListUrl = "/warehouse/warehouse/getWarehouseSelectList";
|
const getWarehouseSelectListUrl = "/warehouse/warehouse/getWarehouseSelectList";
|
||||||
const itemArrayName = "deviceItems";
|
const itemArrayName = "shipmentItems";
|
||||||
const searchers = [
|
const searchers = [
|
||||||
{ name: "searchCode", type: "text" as const, placeholder: $t("_prop.production.finishedproductshipment.formCode") },
|
{ name: "searchCode", type: "text" as const, placeholder: $t("_prop.production.finishedproductshipment.formCode") },
|
||||||
{ name: "formName", type: "text" as const, placeholder: $t("_prop.production.finishedproductshipment.formName") },
|
{ name: "formName", type: "text" as const, placeholder: $t("_prop.production.finishedproductshipment.formName") },
|
||||||
@@ -42,12 +43,15 @@ const rules = reactive<FormRules>({
|
|||||||
storeNo: [
|
storeNo: [
|
||||||
{ required: true, message: $t("_message.production.finishedproductshipment.select_storeId"), trigger: "blur" },
|
{ required: true, message: $t("_message.production.finishedproductshipment.select_storeId"), trigger: "blur" },
|
||||||
],
|
],
|
||||||
deviceItems: [
|
outStockType: [
|
||||||
|
{ required: true, message: $t("_message.production.finishedproductshipment.select_outStockType"), trigger: "blur" },
|
||||||
|
],
|
||||||
|
shipmentItems: [
|
||||||
{
|
{
|
||||||
required: true,
|
required: true,
|
||||||
validator: (rule, value, callback) => {
|
validator: (rule, value, callback) => {
|
||||||
if (value === undefined || value.length === 0) {
|
if (value === undefined || value.length === 0) {
|
||||||
callback($t("_message.production.finishedproductshipment.no_module_sn_items"));
|
callback($t("_message.production.finishedproductshipment.no_shipment_items"));
|
||||||
}
|
}
|
||||||
callback();
|
callback();
|
||||||
},
|
},
|
||||||
@@ -55,15 +59,55 @@ const rules = reactive<FormRules>({
|
|||||||
},
|
},
|
||||||
],
|
],
|
||||||
});
|
});
|
||||||
|
|
||||||
|
const outStockTypeOptions = [
|
||||||
|
{ label: $t("_enum.outStockType.material"), value: 1 },
|
||||||
|
{ label: $t("_enum.outStockType.finishedProduct"), value: 2 },
|
||||||
|
];
|
||||||
|
|
||||||
|
const mappingConfig: FieldMappingConfig = {
|
||||||
|
partNumber: {
|
||||||
|
sourceKey: "物料编号",
|
||||||
|
defaultValue: "",
|
||||||
|
},
|
||||||
|
productCount: {
|
||||||
|
sourceKey: "数量",
|
||||||
|
defaultValue: 0,
|
||||||
|
transform: (val: any) => {
|
||||||
|
const num = Number(val);
|
||||||
|
return isNaN(num) ? 0 : num;
|
||||||
|
},
|
||||||
|
},
|
||||||
|
productMark: {
|
||||||
|
sourceKey: "备注",
|
||||||
|
defaultValue: "",
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 基本不变通用变量
|
* 基本不变通用变量
|
||||||
*/
|
*/
|
||||||
const tableRef = ref<InstanceType<typeof BasePageableTable> | null>(null);
|
const tableRef = ref<InstanceType<typeof ExpandablePageableTable> | null>(null);
|
||||||
const { useAdd, useEdit, useRemove, useGeneralPageRef } = usePage(tableRef);
|
const { useAdd, useEdit, useRemove, useGeneralPageRef } = usePage(tableRef);
|
||||||
const { title, visible, formType, form, itemVisible, itemParentId } = useGeneralPageRef();
|
const { title, visible, formType, form, itemVisible, itemParentId } = useGeneralPageRef();
|
||||||
const baseFormWithTableRef = ref<InstanceType<typeof BaseFormWithTable>>();
|
|
||||||
const warehouseSelectRef = ref<InstanceType<typeof BaseSelect>>();
|
const warehouseSelectRef = ref<InstanceType<typeof BaseSelect>>();
|
||||||
const { getFormStatusLabel } = useStatus();
|
const { getFormStatusLabel } = useStatus();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 根据 formType 获取出库类型标签
|
||||||
|
* formType = 4 (WAREHOUSE_ISSUE) -> 物料出库
|
||||||
|
* formType = 7 (FINISHED_PRODUCT_SHIPMENT) -> 成品出库
|
||||||
|
*/
|
||||||
|
const getOutStockTypeLabelByFormType = (formTypeValue: number) => {
|
||||||
|
if (formTypeValue === 4) {
|
||||||
|
return outStockTypeOptions.find(opt => opt.value === 1)?.label || "";
|
||||||
|
}
|
||||||
|
if (formTypeValue === 7) {
|
||||||
|
return outStockTypeOptions.find(opt => opt.value === 2)?.label || "";
|
||||||
|
}
|
||||||
|
return "";
|
||||||
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 可以自定义的变量
|
* 可以自定义的变量
|
||||||
*/
|
*/
|
||||||
@@ -71,19 +115,37 @@ const { getFormStatusLabel } = useStatus();
|
|||||||
const add = () => {
|
const add = () => {
|
||||||
form.value = {};
|
form.value = {};
|
||||||
title.value = "_title.production.finishedproductshipment.add";
|
title.value = "_title.production.finishedproductshipment.add";
|
||||||
form.value["formCode"] = generateDucumentNo("CPCK");
|
|
||||||
visible.value = true;
|
visible.value = true;
|
||||||
formType.value = false;
|
formType.value = false;
|
||||||
|
// 默认生成成品出库单号
|
||||||
|
form.value["formCode"] = generateDucumentNo("CPCK");
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// 监听出库类型变化,动态生成单号
|
||||||
|
watch(
|
||||||
|
() => form.value?.outStockType,
|
||||||
|
newVal => {
|
||||||
|
if (newVal === 1) {
|
||||||
|
// 物料出库 - 使用 WarehouseIssue (4) 的单号前缀
|
||||||
|
form.value["formCode"] = generateDucumentNo("CK");
|
||||||
|
} else if (newVal === 2) {
|
||||||
|
// 成品出库 - 使用 FinishedProductShipment (7) 的单号前缀
|
||||||
|
form.value["formCode"] = generateDucumentNo("CPCK");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
||||||
const edit = (row: any) => {
|
const edit = (row: any) => {
|
||||||
title.value = "_title.production.finishedproductshipment.edit";
|
title.value = "_title.production.finishedproductshipment.edit";
|
||||||
form.value = { ...row };
|
form.value = { ...row };
|
||||||
visible.value = true;
|
visible.value = true;
|
||||||
formType.value = true;
|
formType.value = true;
|
||||||
};
|
};
|
||||||
|
|
||||||
const remove = (row: any) => {
|
const remove = (row: any) => {
|
||||||
useRemove(removeUrl, row.id, "_message.production.finishedproductshipment.delete_message");
|
useRemove(removeUrl, row.id, "_message.production.finishedproductshipment.delete_message");
|
||||||
};
|
};
|
||||||
|
|
||||||
const approve = (row: any) => {
|
const approve = (row: any) => {
|
||||||
ElMessageBox.confirm($t("_message.production.finishedproductshipment.approve_confirm"), $t("_level.warning"), {
|
ElMessageBox.confirm($t("_message.production.finishedproductshipment.approve_confirm"), $t("_level.warning"), {
|
||||||
confirmButtonText: $t("_button.confirm"),
|
confirmButtonText: $t("_button.confirm"),
|
||||||
@@ -99,14 +161,15 @@ const approve = (row: any) => {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
const unapprove = (row: any) => {
|
|
||||||
|
const reject = (row: any) => {
|
||||||
ElMessageBox.confirm($t("_message.production.finishedproductshipment.reject_confirm"), $t("_level.warning"), {
|
ElMessageBox.confirm($t("_message.production.finishedproductshipment.reject_confirm"), $t("_level.warning"), {
|
||||||
confirmButtonText: $t("_button.confirm"),
|
confirmButtonText: $t("_button.confirm"),
|
||||||
cancelButtonText: $t("_button.cancel"),
|
cancelButtonText: $t("_button.cancel"),
|
||||||
type: "warning",
|
type: "warning",
|
||||||
}).then(async () => {
|
}).then(async () => {
|
||||||
try {
|
try {
|
||||||
await post(unapproveUrl, { id: row.id });
|
await post(rejectUrl, { id: row.id });
|
||||||
ElMessage.success($t("_message.production.finishedproductshipment.reject_success"));
|
ElMessage.success($t("_message.production.finishedproductshipment.reject_success"));
|
||||||
tableRef.value?.reload();
|
tableRef.value?.reload();
|
||||||
} catch (err: any) {
|
} catch (err: any) {
|
||||||
@@ -114,10 +177,12 @@ const unapprove = (row: any) => {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
const showItem = (row: any) => {
|
const showItem = (row: any) => {
|
||||||
itemParentId.value = row.id;
|
itemParentId.value = row.id;
|
||||||
itemVisible.value = true;
|
itemVisible.value = true;
|
||||||
};
|
};
|
||||||
|
|
||||||
const submit = (form: any, formRef: FormInstance | undefined) => {
|
const submit = (form: any, formRef: FormInstance | undefined) => {
|
||||||
setName();
|
setName();
|
||||||
if (formRef !== undefined) {
|
if (formRef !== undefined) {
|
||||||
@@ -129,6 +194,7 @@ const submit = (form: any, formRef: FormInstance | undefined) => {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
const topButtonClick = (eventName: string) => {
|
const topButtonClick = (eventName: string) => {
|
||||||
switch (eventName) {
|
switch (eventName) {
|
||||||
case "add":
|
case "add":
|
||||||
@@ -136,6 +202,7 @@ const topButtonClick = (eventName: string) => {
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
const operateButtonClick = (eventName: string, row: any) => {
|
const operateButtonClick = (eventName: string, row: any) => {
|
||||||
switch (eventName) {
|
switch (eventName) {
|
||||||
case "edit":
|
case "edit":
|
||||||
@@ -147,39 +214,78 @@ const operateButtonClick = (eventName: string, row: any) => {
|
|||||||
case "approve":
|
case "approve":
|
||||||
approve(row);
|
approve(row);
|
||||||
break;
|
break;
|
||||||
case "unapprove":
|
case "reject":
|
||||||
unapprove(row);
|
reject(row);
|
||||||
break;
|
break;
|
||||||
case "showItem":
|
case "showItem":
|
||||||
showItem(row);
|
showItem(row);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
const authShowFunc = (row: any, button: globalThis.ButtonProp) => {
|
||||||
|
// 已审核(formStatus=1)时不显示审核按钮,显示反审按钮
|
||||||
|
// 未审核(formStatus=0)时显示审核按钮,不显示反审按钮
|
||||||
|
if (row.formStatus === 0 && button.eventName === "reject") return false;
|
||||||
|
if (row.formStatus === 1 && button.eventName === "approve") return false;
|
||||||
|
// 已审核后不能编辑和删除
|
||||||
|
if (row.formStatus === 1 && (button.eventName === "edit" || button.eventName === "remove")) return false;
|
||||||
|
return true;
|
||||||
|
};
|
||||||
|
|
||||||
const setName = () => {
|
const setName = () => {
|
||||||
form.value["storeName"] = warehouseSelectRef.value?.getLabel();
|
form.value["storeName"] = warehouseSelectRef.value?.getLabel();
|
||||||
};
|
};
|
||||||
|
|
||||||
const handleReset = () => {
|
const handleReset = () => {
|
||||||
form.value["formCode"] = generateDucumentNo("CPCK");
|
form.value["formCode"] = generateDucumentNo("CPCK");
|
||||||
};
|
};
|
||||||
</script>
|
</script>
|
||||||
<template>
|
<template>
|
||||||
<BasePageableTable :url="getPageUrl" :searchers="searchers" ref="tableRef">
|
<ExpandablePageableTable
|
||||||
|
:url="getPageUrl"
|
||||||
|
:searchers="searchers"
|
||||||
|
ref="tableRef"
|
||||||
|
:item-url="getDetailUrl"
|
||||||
|
item-id-key="id"
|
||||||
|
item-id-name="id"
|
||||||
|
itemFieldName="shipmentItems"
|
||||||
|
>
|
||||||
<template #tool-button>
|
<template #tool-button>
|
||||||
<DefaultToolButton @top-button-click="topButtonClick" />
|
<DefaultToolButton @top-button-click="topButtonClick" />
|
||||||
</template>
|
</template>
|
||||||
<template #columns>
|
<template #columns>
|
||||||
<el-table-column :label="$t('_prop.production.finishedproductshipment.formCode')" prop="formCode" />
|
<el-table-column :label="$t('_prop.production.finishedproductshipment.formCode')" prop="formCode" />
|
||||||
<el-table-column :label="$t('_prop.production.finishedproductshipment.formName')" prop="formName" />
|
|
||||||
<el-table-column :label="$t('_prop.production.finishedproductshipment.storeName')" prop="storeName" />
|
<el-table-column :label="$t('_prop.production.finishedproductshipment.storeName')" prop="storeName" />
|
||||||
|
<el-table-column :label="$t('_prop.production.finishedproductshipment.formName')" prop="formName" />
|
||||||
|
<el-table-column :label="$t('_prop.production.finishedproductshipment.outStockType')" prop="formType">
|
||||||
|
<template #default="{ row }">
|
||||||
|
{{ getOutStockTypeLabelByFormType(row.formType) }}
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
<el-table-column :label="$t('_prop.production.finishedproductshipment.formMark')" prop="formMark" />
|
<el-table-column :label="$t('_prop.production.finishedproductshipment.formMark')" prop="formMark" />
|
||||||
<el-table-column :label="$t('_prop.production.finishedproductshipment.totalValue')" prop="totalValue" />
|
|
||||||
<el-table-column :label="$t('_prop.common.createDate')" prop="createDate" :formatter="formatDate" />
|
<el-table-column :label="$t('_prop.common.createDate')" prop="createDate" :formatter="formatDate" />
|
||||||
<DefaultStatusSwitchColumn status-param-name="formStatus" :status-label-mapping="getFormStatusLabel" />
|
<DefaultStatusSwitchColumn status-param-name="formStatus" :status-label-mapping="getFormStatusLabel" />
|
||||||
<DefaultOperateButtonColumn @operate-button-click="operateButtonClick" />
|
<DefaultOperateButtonColumn @operate-button-click="operateButtonClick" :auth-show-func="authShowFunc" />
|
||||||
</template>
|
</template>
|
||||||
</BasePageableTable>
|
<template #item-content="{ itemData }">
|
||||||
|
<el-table :data="itemData" size="small" border stripe>
|
||||||
|
<el-table-column
|
||||||
|
:label="$t('_prop.production.finishedproductshipment.partNumber')"
|
||||||
|
prop="partNumber"
|
||||||
|
width="150"
|
||||||
|
/>
|
||||||
|
<el-table-column
|
||||||
|
:label="$t('_prop.production.finishedproductshipment.productSpecs')"
|
||||||
|
prop="productSpecs"
|
||||||
|
width="200"
|
||||||
|
/>
|
||||||
|
<el-table-column :label="$t('_prop.production.finishedproductshipment.productCount')" prop="productCount" />
|
||||||
|
<el-table-column :label="$t('_prop.production.finishedproductshipment.productMark')" prop="productMark" />
|
||||||
|
</el-table>
|
||||||
|
</template>
|
||||||
|
</ExpandablePageableTable>
|
||||||
<BaseFormWithTable
|
<BaseFormWithTable
|
||||||
ref="baseFormWithTableRef"
|
|
||||||
v-model:visible="visible"
|
v-model:visible="visible"
|
||||||
@submit="submit"
|
@submit="submit"
|
||||||
v-model:form="form"
|
v-model:form="form"
|
||||||
@@ -188,8 +294,8 @@ const handleReset = () => {
|
|||||||
:base-title="$t('_title.production.finishedproductshipment.baseTitle')"
|
:base-title="$t('_title.production.finishedproductshipment.baseTitle')"
|
||||||
:table-title="$t('_title.production.finishedproductshipment.tableTitle')"
|
:table-title="$t('_title.production.finishedproductshipment.tableTitle')"
|
||||||
:item-array-name="itemArrayName"
|
:item-array-name="itemArrayName"
|
||||||
upload-desc="设备信息"
|
upload-desc="物料信息"
|
||||||
:import-url="importItemsUrl"
|
:mapping-config="mappingConfig"
|
||||||
@reset="handleReset"
|
@reset="handleReset"
|
||||||
>
|
>
|
||||||
<template #form-items>
|
<template #form-items>
|
||||||
@@ -221,6 +327,21 @@ const handleReset = () => {
|
|||||||
<BaseSelect v-model="form.storeNo" :url="getWarehouseSelectListUrl" ref="warehouseSelectRef" />
|
<BaseSelect v-model="form.storeNo" :url="getWarehouseSelectListUrl" ref="warehouseSelectRef" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
|
<el-col :span="12">
|
||||||
|
<el-form-item :label="$t('_prop.production.finishedproductshipment.outStockType')" prop="outStockType">
|
||||||
|
<el-select
|
||||||
|
v-model="form.outStockType"
|
||||||
|
:placeholder="$t('_message.production.finishedproductshipment.select_outStockType')"
|
||||||
|
>
|
||||||
|
<el-option
|
||||||
|
v-for="item in outStockTypeOptions"
|
||||||
|
:key="item.value"
|
||||||
|
:label="item.label"
|
||||||
|
:value="item.value"
|
||||||
|
/>
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
</el-row>
|
</el-row>
|
||||||
<el-form-item :label="$t('_prop.production.finishedproductshipment.formMark')" prop="formMark">
|
<el-form-item :label="$t('_prop.production.finishedproductshipment.formMark')" prop="formMark">
|
||||||
<el-input
|
<el-input
|
||||||
@@ -232,109 +353,39 @@ const handleReset = () => {
|
|||||||
</el-form-item>
|
</el-form-item>
|
||||||
</template>
|
</template>
|
||||||
<template #form-table-columns>
|
<template #form-table-columns>
|
||||||
<el-table-column :label="$t('_prop.production.finishedproductshipment.productType')" width="150">
|
<el-table-column :label="$t('_prop.production.finishedproductshipment.partNumber')" width="150">
|
||||||
<template #default="{ row, $index }">
|
<template #default="{ row, $index }">
|
||||||
<el-form-item :prop="`${itemArrayName}.${$index}.productType`">
|
<el-form-item :prop="`${itemArrayName}.${$index}.partNumber`">
|
||||||
<el-input
|
<el-input
|
||||||
v-model="row.productType"
|
v-model="row.partNumber"
|
||||||
size="small"
|
size="small"
|
||||||
:placeholder="$t('_message.production.finishedproductshipment.input_productType')"
|
:placeholder="$t('_message.production.finishedproductshipment.input_partNumber')"
|
||||||
/>
|
/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
|
|
||||||
<el-table-column :label="$t('_prop.production.finishedproductshipment.productSn')" width="150">
|
<el-table-column :label="$t('_prop.production.finishedproductshipment.productSpecs')" width="200">
|
||||||
|
<template #default="{ row }">
|
||||||
|
<span>{{ row.productSpecs }}</span>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
|
||||||
|
<el-table-column :label="$t('_prop.production.finishedproductshipment.productCount')" width="150">
|
||||||
<template #default="{ row, $index }">
|
<template #default="{ row, $index }">
|
||||||
<el-form-item :prop="`${itemArrayName}.${$index}.productSn`">
|
<el-form-item :prop="`${itemArrayName}.${$index}.productCount`">
|
||||||
<el-input
|
<el-input-number v-model="row.productCount" size="small" :min="1" />
|
||||||
v-model="row.productSn"
|
|
||||||
size="small"
|
|
||||||
:placeholder="$t('_message.production.finishedproductshipment.input_productSn')"
|
|
||||||
/>
|
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
|
|
||||||
<el-table-column :label="$t('_prop.production.finishedproductshipment.mac')" width="150">
|
<el-table-column :label="$t('_prop.production.finishedproductshipment.productMark')" width="200">
|
||||||
<template #default="{ row, $index }">
|
<template #default="{ row, $index }">
|
||||||
<el-form-item :prop="`${itemArrayName}.${$index}.mac`">
|
<el-form-item :prop="`${itemArrayName}.${$index}.productMark`">
|
||||||
<el-input
|
<el-input
|
||||||
v-model="row.mac"
|
v-model="row.productMark"
|
||||||
size="small"
|
size="small"
|
||||||
:placeholder="$t('_message.production.finishedproductshipment.input_mac')"
|
:placeholder="$t('_message.production.finishedproductshipment.input_productMark')"
|
||||||
/>
|
|
||||||
</el-form-item>
|
|
||||||
</template>
|
|
||||||
</el-table-column>
|
|
||||||
|
|
||||||
<el-table-column :label="$t('_prop.production.finishedproductshipment.serialNum')" width="150">
|
|
||||||
<template #default="{ row, $index }">
|
|
||||||
<el-form-item :prop="`${itemArrayName}.${$index}.serialNum`">
|
|
||||||
<el-input
|
|
||||||
v-model="row.serialNum"
|
|
||||||
size="small"
|
|
||||||
:placeholder="$t('_message.production.finishedproductshipment.input_serialNum')"
|
|
||||||
/>
|
|
||||||
</el-form-item>
|
|
||||||
</template>
|
|
||||||
</el-table-column>
|
|
||||||
|
|
||||||
<el-table-column :label="$t('_prop.production.finishedproductshipment.softVersion')" width="150">
|
|
||||||
<template #default="{ row, $index }">
|
|
||||||
<el-form-item :prop="`${itemArrayName}.${$index}.softVersion`">
|
|
||||||
<el-input
|
|
||||||
v-model="row.softVersion"
|
|
||||||
size="small"
|
|
||||||
:placeholder="$t('_message.production.finishedproductshipment.input_softVersion')"
|
|
||||||
/>
|
|
||||||
</el-form-item>
|
|
||||||
</template>
|
|
||||||
</el-table-column>
|
|
||||||
|
|
||||||
<el-table-column :label="$t('_prop.production.finishedproductshipment.alVersion')" width="150">
|
|
||||||
<template #default="{ row, $index }">
|
|
||||||
<el-form-item :prop="`${itemArrayName}.${$index}.alVersion`">
|
|
||||||
<el-input
|
|
||||||
v-model="row.alVersion"
|
|
||||||
size="small"
|
|
||||||
:placeholder="$t('_message.production.finishedproductshipment.input_alVersion')"
|
|
||||||
/>
|
|
||||||
</el-form-item>
|
|
||||||
</template>
|
|
||||||
</el-table-column>
|
|
||||||
|
|
||||||
<el-table-column :label="$t('_prop.production.finishedproductshipment.alNum')" width="150">
|
|
||||||
<template #default="{ row, $index }">
|
|
||||||
<el-form-item :prop="`${itemArrayName}.${$index}.alNum`">
|
|
||||||
<el-input
|
|
||||||
v-model="row.alNum"
|
|
||||||
size="small"
|
|
||||||
:placeholder="$t('_message.production.finishedproductshipment.input_alNum')"
|
|
||||||
/>
|
|
||||||
</el-form-item>
|
|
||||||
</template>
|
|
||||||
</el-table-column>
|
|
||||||
|
|
||||||
<el-table-column :label="$t('_prop.production.finishedproductshipment.alTxt')" width="150">
|
|
||||||
<template #default="{ row, $index }">
|
|
||||||
<el-form-item :prop="`${itemArrayName}.${$index}.alTxt`">
|
|
||||||
<el-input
|
|
||||||
v-model="row.alTxt"
|
|
||||||
size="small"
|
|
||||||
:placeholder="$t('_message.production.finishedproductshipment.input_alTxt')"
|
|
||||||
/>
|
|
||||||
</el-form-item>
|
|
||||||
</template>
|
|
||||||
</el-table-column>
|
|
||||||
|
|
||||||
<el-table-column :label="$t('_prop.production.finishedproductshipment.mark')" width="150">
|
|
||||||
<template #default="{ row, $index }">
|
|
||||||
<el-form-item :prop="`${itemArrayName}.${$index}.mark`">
|
|
||||||
<el-input
|
|
||||||
v-model="row.mark"
|
|
||||||
size="small"
|
|
||||||
:placeholder="$t('_message.production.finishedproductshipment.input_mark')"
|
|
||||||
/>
|
/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</template>
|
</template>
|
||||||
@@ -349,15 +400,18 @@ const handleReset = () => {
|
|||||||
v-model:parent-param-value="itemParentId"
|
v-model:parent-param-value="itemParentId"
|
||||||
>
|
>
|
||||||
<template #columns>
|
<template #columns>
|
||||||
<el-table-column :label="$t('_prop.production.finishedproductshipment.productType')" prop="productType" />
|
<el-table-column
|
||||||
<el-table-column :label="$t('_prop.production.finishedproductshipment.productSn')" prop="productSn" />
|
:label="$t('_prop.production.finishedproductshipment.partNumber')"
|
||||||
<el-table-column :label="$t('_prop.production.finishedproductshipment.mac')" prop="mac" />
|
prop="partNumber"
|
||||||
<el-table-column :label="$t('_prop.production.finishedproductshipment.serialNum')" prop="serialNum" />
|
width="150"
|
||||||
<el-table-column :label="$t('_prop.production.finishedproductshipment.softVersion')" prop="softVersion" />
|
/>
|
||||||
<el-table-column :label="$t('_prop.production.finishedproductshipment.alVersion')" prop="alVersion" />
|
<el-table-column
|
||||||
<el-table-column :label="$t('_prop.production.finishedproductshipment.alNum')" prop="alNum" />
|
:label="$t('_prop.production.finishedproductshipment.productSpecs')"
|
||||||
<el-table-column :label="$t('_prop.production.finishedproductshipment.alTxt')" prop="alTxt" />
|
prop="productSpecs"
|
||||||
<el-table-column :label="$t('_prop.production.finishedproductshipment.mark')" prop="mark" />
|
width="200"
|
||||||
|
/>
|
||||||
|
<el-table-column :label="$t('_prop.production.finishedproductshipment.productCount')" prop="productCount" />
|
||||||
|
<el-table-column :label="$t('_prop.production.finishedproductshipment.productMark')" prop="productMark" />
|
||||||
</template>
|
</template>
|
||||||
</BaseItemDialog>
|
</BaseItemDialog>
|
||||||
</template>
|
</template>
|
||||||
|
|||||||
Reference in New Issue
Block a user