feat: 完成成品入库单。
This commit is contained in:
@@ -180,6 +180,21 @@ export default {
|
|||||||
formName: "Form Name",
|
formName: "Form Name",
|
||||||
formMark: "Form Mark",
|
formMark: "Form Mark",
|
||||||
storeName: "Store",
|
storeName: "Store",
|
||||||
|
storeId: "Store",
|
||||||
|
storeNo: "Store No",
|
||||||
|
formStatus: "Status",
|
||||||
|
productType: "Model",
|
||||||
|
productSn: "SN",
|
||||||
|
macAddress: "MAC Address",
|
||||||
|
serialNumber: "Serial Number",
|
||||||
|
softwareVersion: "Software Version",
|
||||||
|
algorithmVersion: "Algorithm Version",
|
||||||
|
algorithmFlag: "Algorithm Flag",
|
||||||
|
activationStatus: "Activation Status",
|
||||||
|
productionDate: "Production Date",
|
||||||
|
remark: "Remark",
|
||||||
|
createDate: "Create Date",
|
||||||
|
keyAccountId: "Customer",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
purchase: {
|
purchase: {
|
||||||
@@ -318,6 +333,7 @@ export default {
|
|||||||
viewLossRate: "View Loss Rate",
|
viewLossRate: "View Loss Rate",
|
||||||
shortageFilterButton: "Shortage Data",
|
shortageFilterButton: "Shortage Data",
|
||||||
unfilterButton: "All Data",
|
unfilterButton: "All Data",
|
||||||
|
outstock: "Outstock",
|
||||||
approve: "Approve",
|
approve: "Approve",
|
||||||
reject: "Reject",
|
reject: "Reject",
|
||||||
productionReturn: "Return",
|
productionReturn: "Return",
|
||||||
@@ -449,7 +465,29 @@ export default {
|
|||||||
},
|
},
|
||||||
production_return: {},
|
production_return: {},
|
||||||
finishedproductreceipt: {
|
finishedproductreceipt: {
|
||||||
|
select_storeId: "Please select store",
|
||||||
|
input_formName: "Please enter form name",
|
||||||
|
input_formMark: "Please enter form remark",
|
||||||
|
input_formCode: "Please enter form code",
|
||||||
|
input_productType: "Please enter model",
|
||||||
|
input_productSn: "Please enter SN",
|
||||||
|
input_macAddress: "Please enter MAC address",
|
||||||
|
input_serialNumber: "Please enter serial number",
|
||||||
|
input_softwareVersion: "Please enter software version",
|
||||||
|
input_algorithmVersion: "Please enter algorithm version",
|
||||||
|
input_algorithmFlag: "Please enter algorithm flag",
|
||||||
|
input_activationStatus: "Please select activation status",
|
||||||
|
input_productionDate: "Please enter production date",
|
||||||
|
input_remark: "Please enter remark",
|
||||||
delete_message: "Delete Receipt",
|
delete_message: "Delete Receipt",
|
||||||
|
only_pending_outstocking_can_outstock: "Only pending outstock and outstocking receipts can be shipped",
|
||||||
|
get_outstock_data_failed: "Failed to get outstock data",
|
||||||
|
select_key_account: "Please select customer",
|
||||||
|
select_devices: "Please select devices to ship",
|
||||||
|
outstock_confirm: "Confirm to ship?",
|
||||||
|
outstock_success: "Outstock success",
|
||||||
|
outstock_fail: "Outstock failed",
|
||||||
|
input_outstock_mark: "Please enter outstock remark",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
purchase: {
|
purchase: {
|
||||||
@@ -556,6 +594,10 @@ export default {
|
|||||||
finishedproductreceipt: {
|
finishedproductreceipt: {
|
||||||
add: "Add Receipt",
|
add: "Add Receipt",
|
||||||
edit: "Edit Receipt",
|
edit: "Edit Receipt",
|
||||||
|
showItem: "Product Details",
|
||||||
|
baseTitle: "Receipt Basic Info",
|
||||||
|
tableTitle: "Product Details",
|
||||||
|
outstockDialog: "Product Outstock",
|
||||||
},
|
},
|
||||||
finishedproductshipment: {
|
finishedproductshipment: {
|
||||||
add: "Add Shipment",
|
add: "Add Shipment",
|
||||||
@@ -854,5 +896,14 @@ export default {
|
|||||||
approving: "Approving",
|
approving: "Approving",
|
||||||
returned: "Returned",
|
returned: "Returned",
|
||||||
},
|
},
|
||||||
|
finished_product_receipt_status: {
|
||||||
|
pending_outstock: "Pending Outstock",
|
||||||
|
outstocking: "Outstocking",
|
||||||
|
completed: "Completed",
|
||||||
|
},
|
||||||
|
activation_status: {
|
||||||
|
activated: "Activated",
|
||||||
|
not_activated: "Not Activated",
|
||||||
|
},
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -204,18 +204,20 @@ export default {
|
|||||||
formMark: "单据备注",
|
formMark: "单据备注",
|
||||||
storeName: "仓库",
|
storeName: "仓库",
|
||||||
storeId: "仓库",
|
storeId: "仓库",
|
||||||
|
storeNo: "仓库编号",
|
||||||
formStatus: "单据状态",
|
formStatus: "单据状态",
|
||||||
productType: "型号",
|
productType: "型号",
|
||||||
productSn: "SN号",
|
productSn: "SN号",
|
||||||
mac: "MAC地址",
|
macAddress: "MAC地址",
|
||||||
serialNum: "序列号",
|
serialNumber: "序列号",
|
||||||
softVersion: "软件版本",
|
softwareVersion: "软件版本",
|
||||||
alVersion: "算法版本",
|
algorithmVersion: "算法版本",
|
||||||
alNum: "算法标志",
|
algorithmFlag: "算法标志",
|
||||||
alTxt: "激活状态",
|
activationStatus: "激活状态",
|
||||||
manufacturingDate: "时间",
|
productionDate: "生产日期",
|
||||||
mark: "备注",
|
remark: "备注",
|
||||||
createDate: "创建时间",
|
createDate: "创建时间",
|
||||||
|
keyAccountId: "客户",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
purchase: {
|
purchase: {
|
||||||
@@ -400,6 +402,7 @@ export default {
|
|||||||
viewLossRate: "查看损耗率",
|
viewLossRate: "查看损耗率",
|
||||||
shortageFilterButton: "缺料数据",
|
shortageFilterButton: "缺料数据",
|
||||||
unfilterButton: "全部数据",
|
unfilterButton: "全部数据",
|
||||||
|
outstock: "出货",
|
||||||
approve: "审核",
|
approve: "审核",
|
||||||
reject: "反审",
|
reject: "反审",
|
||||||
productionReturn: "退料",
|
productionReturn: "退料",
|
||||||
@@ -598,14 +601,14 @@ export default {
|
|||||||
input_formCode: "请输入单据编号",
|
input_formCode: "请输入单据编号",
|
||||||
input_productType: "请输入型号",
|
input_productType: "请输入型号",
|
||||||
input_productSn: "请输入SN号",
|
input_productSn: "请输入SN号",
|
||||||
input_mac: "请输入MAC地址",
|
input_macAddress: "请输入MAC地址",
|
||||||
input_serialNum: "请输入序列号",
|
input_serialNumber: "请输入序列号",
|
||||||
input_softVersion: "请输入软件版本",
|
input_softwareVersion: "请输入软件版本",
|
||||||
input_alVersion: "请输入算法版本",
|
input_algorithmVersion: "请输入算法版本",
|
||||||
input_alNum: "请输入算法标志",
|
input_algorithmFlag: "请输入算法标志",
|
||||||
input_alTxt: "请输入激活状态",
|
input_activationStatus: "请选择激活状态",
|
||||||
input_manufacturingDate: "请输入时间",
|
input_productionDate: "请输入生产日期",
|
||||||
input_mark: "请输入备注",
|
input_remark: "请输入备注",
|
||||||
approve_confirm: "是否审核通过",
|
approve_confirm: "是否审核通过",
|
||||||
approve_success: "审核成功",
|
approve_success: "审核成功",
|
||||||
approve_fail: "审核失败",
|
approve_fail: "审核失败",
|
||||||
@@ -622,6 +625,14 @@ export default {
|
|||||||
import_success: "导入成功",
|
import_success: "导入成功",
|
||||||
import_fail: "导入失败",
|
import_fail: "导入失败",
|
||||||
delete_message: "删除成品入库单",
|
delete_message: "删除成品入库单",
|
||||||
|
only_pending_outstocking_can_outstock: "只有待出货和出货中状态的入库单才能出货",
|
||||||
|
get_outstock_data_failed: "获取出货数据失败",
|
||||||
|
select_key_account: "请选择客户",
|
||||||
|
select_devices: "请选择要出货的设备",
|
||||||
|
outstock_confirm: "确认出货吗?",
|
||||||
|
outstock_success: "出货成功",
|
||||||
|
outstock_fail: "出货失败",
|
||||||
|
input_outstock_mark: "请输入出货备注",
|
||||||
},
|
},
|
||||||
finishedproductshipment: {
|
finishedproductshipment: {
|
||||||
select_storeId: "请选择仓库",
|
select_storeId: "请选择仓库",
|
||||||
@@ -849,6 +860,7 @@ export default {
|
|||||||
showItem: "成品明细",
|
showItem: "成品明细",
|
||||||
baseTitle: "成品入库单基本信息",
|
baseTitle: "成品入库单基本信息",
|
||||||
tableTitle: "成品明细",
|
tableTitle: "成品明细",
|
||||||
|
outstockDialog: "成品出货",
|
||||||
},
|
},
|
||||||
finishedproductshipment: {
|
finishedproductshipment: {
|
||||||
add: "添加成品出货单",
|
add: "添加成品出货单",
|
||||||
@@ -1167,6 +1179,15 @@ export default {
|
|||||||
approving: "审批中",
|
approving: "审批中",
|
||||||
returned: "已退料",
|
returned: "已退料",
|
||||||
},
|
},
|
||||||
|
finished_product_receipt_status: {
|
||||||
|
pending_outstock: "待出货",
|
||||||
|
outstocking: "出货中",
|
||||||
|
completed: "已完成",
|
||||||
|
},
|
||||||
|
activation_status: {
|
||||||
|
activated: "已激活",
|
||||||
|
not_activated: "未激活",
|
||||||
|
},
|
||||||
},
|
},
|
||||||
_status: {
|
_status: {
|
||||||
in_progress: "入库中",
|
in_progress: "入库中",
|
||||||
|
|||||||
@@ -39,6 +39,36 @@ export const useStatus = () => {
|
|||||||
8: "_base_info.form_status.returned",
|
8: "_base_info.form_status.returned",
|
||||||
};
|
};
|
||||||
|
|
||||||
|
const finishedProductReceiptStatusKeyMap: Record<number, string> = {
|
||||||
|
1: "_base_info.finished_product_receipt_status.pending_outstock",
|
||||||
|
3: "_base_info.finished_product_receipt_status.outstocking",
|
||||||
|
4: "_base_info.finished_product_receipt_status.completed",
|
||||||
|
};
|
||||||
|
|
||||||
|
const getFinishedProductReceiptStatusLabel = (code: number | null): string => {
|
||||||
|
if (code === null || code === undefined) return "";
|
||||||
|
const key = finishedProductReceiptStatusKeyMap[code];
|
||||||
|
return key ? t(key) : t(unknown);
|
||||||
|
};
|
||||||
|
|
||||||
|
const activationStatusKeyMap: Record<boolean, string> = {
|
||||||
|
true: "_base_info.activation_status.activated",
|
||||||
|
false: "_base_info.activation_status.not_activated",
|
||||||
|
};
|
||||||
|
|
||||||
|
const getActivationStatusLabel = (status: boolean | null): string => {
|
||||||
|
if (status === null || status === undefined) return "";
|
||||||
|
const key = activationStatusKeyMap[status];
|
||||||
|
return key ? t(key) : t(unknown);
|
||||||
|
};
|
||||||
|
|
||||||
|
const getActivationStatusTxtLabel = (status: string | null): string => {
|
||||||
|
if (status === null || status === undefined) return "";
|
||||||
|
if (status === "已激活" || status === "Activated") return t("_base_info.activation_status.activated");
|
||||||
|
if (status === "未激活" || status === "Not Activated") return t("_base_info.activation_status.not_activated");
|
||||||
|
return status;
|
||||||
|
};
|
||||||
|
|
||||||
const getFormStatusLabel = (code: number | null): string => {
|
const getFormStatusLabel = (code: number | null): string => {
|
||||||
if (code === null || code === undefined) return "";
|
if (code === null || code === undefined) return "";
|
||||||
const key = formStatusKeyMap[code];
|
const key = formStatusKeyMap[code];
|
||||||
@@ -76,6 +106,11 @@ export const useStatus = () => {
|
|||||||
getProductionPlanStatusLabel,
|
getProductionPlanStatusLabel,
|
||||||
formStatusKeyMap,
|
formStatusKeyMap,
|
||||||
getFormStatusLabel,
|
getFormStatusLabel,
|
||||||
|
finishedProductReceiptStatusKeyMap,
|
||||||
|
getFinishedProductReceiptStatusLabel,
|
||||||
|
activationStatusKeyMap,
|
||||||
|
getActivationStatusLabel,
|
||||||
|
getActivationStatusTxtLabel,
|
||||||
purchasePlanItemStatusKeyMap,
|
purchasePlanItemStatusKeyMap,
|
||||||
getPurchasePlanItemStatusLabel,
|
getPurchasePlanItemStatusLabel,
|
||||||
purchasePlanStatusKeyMap,
|
purchasePlanStatusKeyMap,
|
||||||
|
|||||||
@@ -1,18 +1,20 @@
|
|||||||
<script lang="ts" setup>
|
<script lang="ts" setup>
|
||||||
import BasePageableTable from "@/components/base/base-pageable-table/BasePageableTable.vue";
|
import ExpandablePageableTable from "@/components/base/expandable-pageable-table/ExpandablePageableTable.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 { $t } from "@/common/languages";
|
import { $t } from "@/common/languages";
|
||||||
|
import BaseFormWithTable from "@/components/base/base-form-with-table/BaseFormWithTable.vue";
|
||||||
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 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 BaseTableForm from "@/components/base/base-table-form/BaseTableForm.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 { type FieldMappingConfig } from "@/components/base/base-form-with-table/type";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 必须要的变量
|
* 必须要的变量
|
||||||
@@ -22,11 +24,12 @@ const getPageUrl = "/production/finishedproductreceipt/getFinishedProductReceipt
|
|||||||
const addUrl = "/production/finishedproductreceipt/addFinishedProductReceipt";
|
const addUrl = "/production/finishedproductreceipt/addFinishedProductReceipt";
|
||||||
const editUrl = "/production/finishedproductreceipt/updateFinishedProductReceipt";
|
const editUrl = "/production/finishedproductreceipt/updateFinishedProductReceipt";
|
||||||
const removeUrl = "/production/finishedproductreceipt/deleteFinishedProductReceipt";
|
const removeUrl = "/production/finishedproductreceipt/deleteFinishedProductReceipt";
|
||||||
const approveUrl = "/production/finishedproductreceipt/approveFinishedProductReceipt";
|
|
||||||
const unapproveUrl = "/production/finishedproductreceipt/unapproveFinishedProductReceipt";
|
|
||||||
const getDetailUrl = "/production/finishedproductreceipt/getFinishedProductReceiptDetail";
|
const getDetailUrl = "/production/finishedproductreceipt/getFinishedProductReceiptDetail";
|
||||||
const importItemsUrl = "/production/finishedproductreceipt/importFinishedProductReceiptItems";
|
const itemUrl = "/production/finishedproductreceipt/getFinishedProductReceiptDetail";
|
||||||
const getWarehouseSelectListUrl = "/warehouse/warehouse/getWarehouseSelectList";
|
const getWarehouseSelectListUrl = "/warehouse/warehouse/getWarehouseSelectList";
|
||||||
|
const getOutstockDataUrl = "/production/finishedproductreceipt/getOutstockData";
|
||||||
|
const saveOutstockUrl = "/production/finishedproductreceipt/saveOutstock";
|
||||||
|
const getKeyAccountSelectListUrl = "/sys/keyaccount/getKeyAccountSelectList";
|
||||||
const itemArrayName = "deviceItems";
|
const itemArrayName = "deviceItems";
|
||||||
const searchers = [
|
const searchers = [
|
||||||
{ name: "searchCode", type: "text" as const, placeholder: $t("_prop.production.finishedproductreceipt.formCode") },
|
{ name: "searchCode", type: "text" as const, placeholder: $t("_prop.production.finishedproductreceipt.formCode") },
|
||||||
@@ -58,12 +61,98 @@ const rules = reactive<FormRules>({
|
|||||||
/**
|
/**
|
||||||
* 基本不变通用变量
|
* 基本不变通用变量
|
||||||
*/
|
*/
|
||||||
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 baseFormWithTableRef = ref<InstanceType<typeof BaseFormWithTable>>();
|
||||||
const warehouseSelectRef = ref<InstanceType<typeof BaseSelect>>();
|
const warehouseSelectRef = ref<InstanceType<typeof BaseSelect>>();
|
||||||
const { getFormStatusLabel } = useStatus();
|
const outstockDialogRef = ref<InstanceType<typeof BaseTableForm>>();
|
||||||
|
const keyAccountSelectRef = ref<InstanceType<typeof BaseSelect>>();
|
||||||
|
const { getFinishedProductReceiptStatusLabel, getActivationStatusLabel, getActivationStatusTxtLabel } = useStatus();
|
||||||
|
|
||||||
|
// 出货相关变量
|
||||||
|
const outstockVisible = ref(false);
|
||||||
|
const outstockTableData = ref([]);
|
||||||
|
const currentOutstockId = ref();
|
||||||
|
const currentOutstockRow = ref<any>({});
|
||||||
|
const outstockForm = ref({
|
||||||
|
keyAccountId: "",
|
||||||
|
formMark: "",
|
||||||
|
});
|
||||||
|
|
||||||
|
const selectedOutstockDevices = ref<any[]>([]);
|
||||||
|
|
||||||
|
const handleOutstockSelectionChange = (selection: any[]) => {
|
||||||
|
selectedOutstockDevices.value = selection;
|
||||||
|
};
|
||||||
|
|
||||||
|
// Excel导入映射配置
|
||||||
|
const mappingConfig: FieldMappingConfig = {
|
||||||
|
// productType <- "型号" (默认空字符串)
|
||||||
|
productType: {
|
||||||
|
sourceKey: "型号",
|
||||||
|
defaultValue: "",
|
||||||
|
},
|
||||||
|
|
||||||
|
// productSn <- "SN号" (默认空字符串)
|
||||||
|
productSn: {
|
||||||
|
sourceKey: "SN号",
|
||||||
|
defaultValue: "",
|
||||||
|
},
|
||||||
|
|
||||||
|
// mac <- "MAC地址" (默认空字符串)
|
||||||
|
mac: {
|
||||||
|
sourceKey: "MAC地址",
|
||||||
|
defaultValue: "",
|
||||||
|
},
|
||||||
|
|
||||||
|
// serialNum <- "序列号" (默认空字符串)
|
||||||
|
serialNum: {
|
||||||
|
sourceKey: "序列号",
|
||||||
|
defaultValue: "",
|
||||||
|
},
|
||||||
|
|
||||||
|
// softVersion <- "软件版本" (默认空字符串)
|
||||||
|
softVersion: {
|
||||||
|
sourceKey: "软件版本",
|
||||||
|
defaultValue: "",
|
||||||
|
},
|
||||||
|
|
||||||
|
// alVersion <- "算法版本" (默认空字符串)
|
||||||
|
alVersion: {
|
||||||
|
sourceKey: "算法版本",
|
||||||
|
defaultValue: "",
|
||||||
|
},
|
||||||
|
|
||||||
|
// alNum <- "算法标志" (默认空字符串)
|
||||||
|
alNum: {
|
||||||
|
sourceKey: "算法标志",
|
||||||
|
defaultValue: "",
|
||||||
|
},
|
||||||
|
|
||||||
|
// alTxt <- "激活状态" (默认"未激活")
|
||||||
|
alTxt: {
|
||||||
|
sourceKey: "激活状态",
|
||||||
|
defaultValue: "未激活",
|
||||||
|
transform: (val: any) => {
|
||||||
|
if (val === "已激活" || val === "Activated" || val === true || val === "1") return "已激活";
|
||||||
|
if (val === "未激活" || val === "Not Activated" || val === false || val === "0") return "未激活";
|
||||||
|
return "未激活";
|
||||||
|
},
|
||||||
|
},
|
||||||
|
|
||||||
|
// createDate <- "生产日期" (默认空字符串)
|
||||||
|
createDate: {
|
||||||
|
sourceKey: "生产日期",
|
||||||
|
defaultValue: "",
|
||||||
|
},
|
||||||
|
|
||||||
|
// mark <- "备注" (默认空字符串)
|
||||||
|
mark: {
|
||||||
|
sourceKey: "备注",
|
||||||
|
defaultValue: "",
|
||||||
|
},
|
||||||
|
};
|
||||||
/**
|
/**
|
||||||
* 可以自定义的变量
|
* 可以自定义的变量
|
||||||
*/
|
*/
|
||||||
@@ -75,6 +164,7 @@ const add = () => {
|
|||||||
visible.value = true;
|
visible.value = true;
|
||||||
formType.value = false;
|
formType.value = false;
|
||||||
};
|
};
|
||||||
|
|
||||||
const edit = (row: any) => {
|
const edit = (row: any) => {
|
||||||
title.value = "_title.production.finishedproductreceipt.edit";
|
title.value = "_title.production.finishedproductreceipt.edit";
|
||||||
form.value = { ...row };
|
form.value = { ...row };
|
||||||
@@ -84,33 +174,73 @@ const edit = (row: any) => {
|
|||||||
const remove = (row: any) => {
|
const remove = (row: any) => {
|
||||||
useRemove(removeUrl, row.id, "_message.production.finishedproductreceipt.delete_message");
|
useRemove(removeUrl, row.id, "_message.production.finishedproductreceipt.delete_message");
|
||||||
};
|
};
|
||||||
const approve = (row: any) => {
|
|
||||||
ElMessageBox.confirm($t("_message.production.finishedproductreceipt.approve_confirm"), $t("_level.warning"), {
|
const outstock = async (row: any) => {
|
||||||
confirmButtonText: $t("_button.confirm"),
|
// 检查单据状态,只有待出货和出货中状态才能出货
|
||||||
cancelButtonText: $t("_button.cancel"),
|
if (row.formStatus !== 1 && row.formStatus !== 3) {
|
||||||
type: "warning",
|
ElMessage.warning($t("_message.production.finishedproductreceipt.only_pending_outstocking_can_outstock"));
|
||||||
}).then(async () => {
|
return;
|
||||||
try {
|
}
|
||||||
await post(approveUrl, { id: row.id });
|
|
||||||
ElMessage.success($t("_message.production.finishedproductreceipt.approve_success"));
|
currentOutstockId.value = row.id;
|
||||||
tableRef.value?.reload();
|
currentOutstockRow.value = row;
|
||||||
} catch (err: any) {
|
|
||||||
ElMessage.error($t("_message.production.finishedproductreceipt.approve_fail") + err);
|
try {
|
||||||
|
const outstockData = await get(getOutstockDataUrl, { id: row.id }).then(res => res.data);
|
||||||
|
outstockTableData.value = outstockData.map((item: any) => ({
|
||||||
|
...item,
|
||||||
|
selected: false,
|
||||||
|
}));
|
||||||
|
|
||||||
|
// 重置出货表单
|
||||||
|
outstockForm.value = {
|
||||||
|
keyAccountId: "",
|
||||||
|
formMark: "",
|
||||||
|
};
|
||||||
|
|
||||||
|
outstockVisible.value = true;
|
||||||
|
} catch (error) {
|
||||||
|
ElMessage.error($t("_message.production.finishedproductreceipt.get_outstock_data_failed"));
|
||||||
|
console.error("获取出货数据失败:", error);
|
||||||
}
|
}
|
||||||
});
|
|
||||||
};
|
};
|
||||||
const unapprove = (row: any) => {
|
|
||||||
ElMessageBox.confirm($t("_message.production.finishedproductreceipt.reject_confirm"), $t("_level.warning"), {
|
const saveOutstock = async () => {
|
||||||
|
if (!outstockForm.value.keyAccountId) {
|
||||||
|
ElMessage.warning($t("_message.production.finishedproductreceipt.select_key_account"));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (selectedOutstockDevices.value.length === 0) {
|
||||||
|
ElMessage.warning($t("_message.production.finishedproductreceipt.select_devices"));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
ElMessageBox.confirm($t("_message.production.finishedproductreceipt.outstock_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 });
|
const requestData = {
|
||||||
ElMessage.success($t("_message.production.finishedproductreceipt.reject_success"));
|
id: currentOutstockId.value,
|
||||||
|
keyAccountId: parseInt(outstockForm.value.keyAccountId),
|
||||||
|
outstockList: selectedOutstockDevices.value.map((item: any) => ({
|
||||||
|
productSn: item.productSn,
|
||||||
|
})),
|
||||||
|
};
|
||||||
|
|
||||||
|
const res = await post(saveOutstockUrl, requestData);
|
||||||
|
if (res.code === 0) {
|
||||||
|
ElMessage.success($t("_message.production.finishedproductreceipt.outstock_success"));
|
||||||
|
outstockVisible.value = false;
|
||||||
tableRef.value?.reload();
|
tableRef.value?.reload();
|
||||||
} catch (err: any) {
|
} else {
|
||||||
ElMessage.error($t("_message.production.finishedproductreceipt.reject_fail") + err);
|
ElMessage.error($t("_message.production.finishedproductreceipt.outstock_fail") + res.msg);
|
||||||
|
}
|
||||||
|
} catch (error) {
|
||||||
|
ElMessage.error($t("_message.production.finishedproductreceipt.outstock_fail") + error);
|
||||||
|
console.error("出货失败:", error);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
@@ -144,17 +274,22 @@ const operateButtonClick = (eventName: string, row: any) => {
|
|||||||
case "remove":
|
case "remove":
|
||||||
remove(row);
|
remove(row);
|
||||||
break;
|
break;
|
||||||
case "approve":
|
|
||||||
approve(row);
|
|
||||||
break;
|
|
||||||
case "unapprove":
|
|
||||||
unapprove(row);
|
|
||||||
break;
|
|
||||||
case "showItem":
|
case "showItem":
|
||||||
showItem(row);
|
showItem(row);
|
||||||
break;
|
break;
|
||||||
|
case "outstock":
|
||||||
|
outstock(row);
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
const authShowFunc = (row: any, button: globalThis.ButtonProp) => {
|
||||||
|
// 只有已完成的入库单不能出货(formStatus === 4)
|
||||||
|
if (row.formStatus === 4 && button.eventName === "outstock") return false;
|
||||||
|
|
||||||
|
// 其他按钮根据业务需求显示
|
||||||
|
return true;
|
||||||
|
};
|
||||||
const setName = () => {
|
const setName = () => {
|
||||||
form.value["storeName"] = warehouseSelectRef.value?.getLabel();
|
form.value["storeName"] = warehouseSelectRef.value?.getLabel();
|
||||||
};
|
};
|
||||||
@@ -163,7 +298,15 @@ const handleReset = () => {
|
|||||||
};
|
};
|
||||||
</script>
|
</script>
|
||||||
<template>
|
<template>
|
||||||
<BasePageableTable :url="getPageUrl" :searchers="searchers" ref="tableRef">
|
<ExpandablePageableTable
|
||||||
|
:url="getPageUrl"
|
||||||
|
:searchers="searchers"
|
||||||
|
ref="tableRef"
|
||||||
|
:item-url="itemUrl"
|
||||||
|
item-id-key="id"
|
||||||
|
item-id-name="id"
|
||||||
|
item-field-name="deviceItems"
|
||||||
|
>
|
||||||
<template #tool-button>
|
<template #tool-button>
|
||||||
<DefaultToolButton @top-button-click="topButtonClick" />
|
<DefaultToolButton @top-button-click="topButtonClick" />
|
||||||
</template>
|
</template>
|
||||||
@@ -174,10 +317,31 @@ const handleReset = () => {
|
|||||||
<el-table-column :label="$t('_prop.production.finishedproductreceipt.formMark')" prop="formMark" />
|
<el-table-column :label="$t('_prop.production.finishedproductreceipt.formMark')" prop="formMark" />
|
||||||
<el-table-column :label="$t('_prop.production.finishedproductreceipt.totalValue')" prop="totalValue" />
|
<el-table-column :label="$t('_prop.production.finishedproductreceipt.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
|
||||||
<DefaultOperateButtonColumn @operate-button-click="operateButtonClick" />
|
status-param-name="formStatus"
|
||||||
|
:status-label-mapping="getFinishedProductReceiptStatusLabel"
|
||||||
|
/>
|
||||||
|
<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.finishedproductreceipt.productType')" prop="productType" />
|
||||||
|
<el-table-column :label="$t('_prop.production.finishedproductreceipt.productSn')" prop="productSn" />
|
||||||
|
<el-table-column :label="$t('_prop.production.finishedproductreceipt.macAddress')" prop="mac" />
|
||||||
|
<el-table-column :label="$t('_prop.production.finishedproductreceipt.serialNumber')" prop="serialNum" />
|
||||||
|
<el-table-column :label="$t('_prop.production.finishedproductreceipt.softwareVersion')" prop="softVersion" />
|
||||||
|
<el-table-column :label="$t('_prop.production.finishedproductreceipt.algorithmVersion')" prop="alVersion" />
|
||||||
|
<el-table-column :label="$t('_prop.production.finishedproductreceipt.algorithmFlag')" prop="alNum" />
|
||||||
|
<el-table-column :label="$t('_prop.production.finishedproductreceipt.activationStatus')" prop="alStatus">
|
||||||
|
<template #default="{ row }">
|
||||||
|
{{ getActivationStatusLabel(row.alStatus) }}
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column :label="$t('_prop.production.finishedproductreceipt.productionDate')" prop="createDate" />
|
||||||
|
<el-table-column :label="$t('_prop.production.finishedproductreceipt.remark')" prop="mark" />
|
||||||
|
</el-table>
|
||||||
|
</template>
|
||||||
|
</ExpandablePageableTable>
|
||||||
<BaseFormWithTable
|
<BaseFormWithTable
|
||||||
ref="baseFormWithTableRef"
|
ref="baseFormWithTableRef"
|
||||||
v-model:visible="visible"
|
v-model:visible="visible"
|
||||||
@@ -189,7 +353,7 @@ const handleReset = () => {
|
|||||||
:table-title="$t('_title.production.finishedproductreceipt.tableTitle')"
|
:table-title="$t('_title.production.finishedproductreceipt.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>
|
||||||
@@ -256,85 +420,82 @@ const handleReset = () => {
|
|||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
|
|
||||||
<el-table-column :label="$t('_prop.production.finishedproductreceipt.mac')" width="150">
|
<el-table-column :label="$t('_prop.production.finishedproductreceipt.macAddress')" width="150">
|
||||||
<template #default="{ row, $index }">
|
<template #default="{ row, $index }">
|
||||||
<el-form-item :prop="`${itemArrayName}.${$index}.mac`">
|
<el-form-item :prop="`${itemArrayName}.${$index}.mac`">
|
||||||
<el-input
|
<el-input
|
||||||
v-model="row.mac"
|
v-model="row.mac"
|
||||||
size="small"
|
size="small"
|
||||||
:placeholder="$t('_message.production.finishedproductreceipt.input_mac')"
|
:placeholder="$t('_message.production.finishedproductreceipt.input_macAddress')"
|
||||||
/>
|
/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
|
<el-table-column :label="$t('_prop.production.finishedproductreceipt.serialNumber')" width="150">
|
||||||
<el-table-column :label="$t('_prop.production.finishedproductreceipt.serialNum')" width="150">
|
|
||||||
<template #default="{ row, $index }">
|
<template #default="{ row, $index }">
|
||||||
<el-form-item :prop="`${itemArrayName}.${$index}.serialNum`">
|
<el-form-item :prop="`${itemArrayName}.${$index}.serialNum`">
|
||||||
<el-input
|
<el-input
|
||||||
v-model="row.serialNum"
|
v-model="row.serialNum"
|
||||||
size="small"
|
size="small"
|
||||||
:placeholder="$t('_message.production.finishedproductreceipt.input_serialNum')"
|
:placeholder="$t('_message.production.finishedproductreceipt.input_serialNumber')"
|
||||||
/>
|
/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
|
<el-table-column :label="$t('_prop.production.finishedproductreceipt.softwareVersion')" width="150">
|
||||||
<el-table-column :label="$t('_prop.production.finishedproductreceipt.softVersion')" width="150">
|
|
||||||
<template #default="{ row, $index }">
|
<template #default="{ row, $index }">
|
||||||
<el-form-item :prop="`${itemArrayName}.${$index}.softVersion`">
|
<el-form-item :prop="`${itemArrayName}.${$index}.softVersion`">
|
||||||
<el-input
|
<el-input
|
||||||
v-model="row.softVersion"
|
v-model="row.softVersion"
|
||||||
size="small"
|
size="small"
|
||||||
:placeholder="$t('_message.production.finishedproductreceipt.input_softVersion')"
|
:placeholder="$t('_message.production.finishedproductreceipt.input_softwareVersion')"
|
||||||
/>
|
/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
|
<el-table-column :label="$t('_prop.production.finishedproductreceipt.algorithmVersion')" width="150">
|
||||||
<el-table-column :label="$t('_prop.production.finishedproductreceipt.alVersion')" width="150">
|
|
||||||
<template #default="{ row, $index }">
|
<template #default="{ row, $index }">
|
||||||
<el-form-item :prop="`${itemArrayName}.${$index}.alVersion`">
|
<el-form-item :prop="`${itemArrayName}.${$index}.alVersion`">
|
||||||
<el-input
|
<el-input
|
||||||
v-model="row.alVersion"
|
v-model="row.alVersion"
|
||||||
size="small"
|
size="small"
|
||||||
:placeholder="$t('_message.production.finishedproductreceipt.input_alVersion')"
|
:placeholder="$t('_message.production.finishedproductreceipt.input_algorithmVersion')"
|
||||||
/>
|
/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
|
<el-table-column :label="$t('_prop.production.finishedproductreceipt.algorithmFlag')" width="150">
|
||||||
<el-table-column :label="$t('_prop.production.finishedproductreceipt.alNum')" width="150">
|
|
||||||
<template #default="{ row, $index }">
|
<template #default="{ row, $index }">
|
||||||
<el-form-item :prop="`${itemArrayName}.${$index}.alNum`">
|
<el-form-item :prop="`${itemArrayName}.${$index}.alNum`">
|
||||||
<el-input
|
<el-input
|
||||||
v-model="row.alNum"
|
v-model="row.alNum"
|
||||||
size="small"
|
size="small"
|
||||||
:placeholder="$t('_message.production.finishedproductreceipt.input_alNum')"
|
:placeholder="$t('_message.production.finishedproductreceipt.input_algorithmFlag')"
|
||||||
/>
|
/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
|
<el-table-column :label="$t('_prop.production.finishedproductreceipt.activationStatus')" width="150">
|
||||||
<el-table-column :label="$t('_prop.production.finishedproductreceipt.alTxt')" width="150">
|
|
||||||
<template #default="{ row, $index }">
|
<template #default="{ row, $index }">
|
||||||
<el-form-item :prop="`${itemArrayName}.${$index}.alTxt`">
|
<el-form-item :prop="`${itemArrayName}.${$index}.alTxt`">
|
||||||
<el-input
|
<el-select
|
||||||
v-model="row.alTxt"
|
v-model="row.alTxt"
|
||||||
size="small"
|
size="small"
|
||||||
:placeholder="$t('_message.production.finishedproductreceipt.input_alTxt')"
|
:placeholder="$t('_message.production.finishedproductreceipt.input_activationStatus')"
|
||||||
/>
|
>
|
||||||
|
<el-option :label="$t('_base_info.activation_status.activated')" value="已激活" />
|
||||||
|
<el-option :label="$t('_base_info.activation_status.not_activated')" value="未激活" />
|
||||||
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
|
<el-table-column :label="$t('_prop.production.finishedproductreceipt.remark')" width="150">
|
||||||
<el-table-column :label="$t('_prop.production.finishedproductreceipt.mark')" width="150">
|
|
||||||
<template #default="{ row, $index }">
|
<template #default="{ row, $index }">
|
||||||
<el-form-item :prop="`${itemArrayName}.${$index}.mark`">
|
<el-form-item :prop="`${itemArrayName}.${$index}.mark`">
|
||||||
<el-input
|
<el-input
|
||||||
v-model="row.mark"
|
v-model="row.mark"
|
||||||
size="small"
|
size="small"
|
||||||
:placeholder="$t('_message.production.finishedproductreceipt.input_mark')"
|
:placeholder="$t('_message.production.finishedproductreceipt.input_remark')"
|
||||||
/>
|
/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</template>
|
</template>
|
||||||
@@ -347,17 +508,113 @@ const handleReset = () => {
|
|||||||
:url="getDetailUrl"
|
:url="getDetailUrl"
|
||||||
parent-param-name="id"
|
parent-param-name="id"
|
||||||
v-model:parent-param-value="itemParentId"
|
v-model:parent-param-value="itemParentId"
|
||||||
|
width="80%"
|
||||||
>
|
>
|
||||||
<template #columns>
|
<template #columns>
|
||||||
<el-table-column :label="$t('_prop.production.finishedproductreceipt.productType')" prop="productType" />
|
<el-table-column
|
||||||
<el-table-column :label="$t('_prop.production.finishedproductreceipt.productSn')" prop="productSn" />
|
:label="$t('_prop.production.finishedproductreceipt.productType')"
|
||||||
<el-table-column :label="$t('_prop.production.finishedproductreceipt.mac')" prop="mac" />
|
prop="productType"
|
||||||
<el-table-column :label="$t('_prop.production.finishedproductreceipt.serialNum')" prop="serialNum" />
|
width="120"
|
||||||
<el-table-column :label="$t('_prop.production.finishedproductreceipt.softVersion')" prop="softVersion" />
|
/>
|
||||||
<el-table-column :label="$t('_prop.production.finishedproductreceipt.alVersion')" prop="alVersion" />
|
<el-table-column :label="$t('_prop.production.finishedproductreceipt.productSn')" prop="productSn" width="150" />
|
||||||
<el-table-column :label="$t('_prop.production.finishedproductreceipt.alNum')" prop="alNum" />
|
<el-table-column :label="$t('_prop.production.finishedproductreceipt.macAddress')" prop="mac" width="150" />
|
||||||
<el-table-column :label="$t('_prop.production.finishedproductreceipt.alTxt')" prop="alTxt" />
|
<el-table-column
|
||||||
<el-table-column :label="$t('_prop.production.finishedproductreceipt.mark')" prop="mark" />
|
:label="$t('_prop.production.finishedproductreceipt.serialNumber')"
|
||||||
|
prop="serialNum"
|
||||||
|
width="150"
|
||||||
|
/>
|
||||||
|
<el-table-column
|
||||||
|
:label="$t('_prop.production.finishedproductreceipt.softwareVersion')"
|
||||||
|
prop="softVersion"
|
||||||
|
width="120"
|
||||||
|
/>
|
||||||
|
<el-table-column
|
||||||
|
:label="$t('_prop.production.finishedproductreceipt.algorithmVersion')"
|
||||||
|
prop="alVersion"
|
||||||
|
width="120"
|
||||||
|
/>
|
||||||
|
<el-table-column :label="$t('_prop.production.finishedproductreceipt.algorithmFlag')" prop="alNum" width="120" />
|
||||||
|
<el-table-column
|
||||||
|
:label="$t('_prop.production.finishedproductreceipt.activationStatus')"
|
||||||
|
prop="alStatus"
|
||||||
|
width="120"
|
||||||
|
>
|
||||||
|
<template #default="{ row }">
|
||||||
|
{{ getActivationStatusLabel(row.alStatus) }}
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column
|
||||||
|
:label="$t('_prop.production.finishedproductreceipt.productionDate')"
|
||||||
|
prop="createDate"
|
||||||
|
width="150"
|
||||||
|
/>
|
||||||
|
<el-table-column :label="$t('_prop.production.finishedproductreceipt.remark')" prop="mark" width="150" />
|
||||||
</template>
|
</template>
|
||||||
</BaseItemDialog>
|
</BaseItemDialog>
|
||||||
|
|
||||||
|
<!-- 出货对话框 -->
|
||||||
|
<BaseTableForm
|
||||||
|
ref="outstockDialogRef"
|
||||||
|
v-model:visible="outstockVisible"
|
||||||
|
:title="$t('_title.production.finishedproductreceipt.outstockDialog')"
|
||||||
|
:tableData="outstockTableData"
|
||||||
|
:selectable="true"
|
||||||
|
:useAuth="false"
|
||||||
|
@selection-change="handleOutstockSelectionChange"
|
||||||
|
>
|
||||||
|
<template #filter>
|
||||||
|
<el-row :gutter="20">
|
||||||
|
<el-col :span="8">
|
||||||
|
<el-form-item :label="$t('_prop.production.finishedproductreceipt.formCode')">
|
||||||
|
<el-input v-model="currentOutstockRow.formCode" disabled />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="8">
|
||||||
|
<el-form-item :label="$t('_prop.production.finishedproductreceipt.keyAccountId')">
|
||||||
|
<BaseSelect
|
||||||
|
v-model="outstockForm.keyAccountId"
|
||||||
|
:url="getKeyAccountSelectListUrl"
|
||||||
|
ref="keyAccountSelectRef"
|
||||||
|
/>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="8">
|
||||||
|
<el-form-item :label="$t('_prop.production.finishedproductreceipt.formMark')">
|
||||||
|
<el-input
|
||||||
|
v-model="outstockForm.formMark"
|
||||||
|
:placeholder="$t('_message.production.finishedproductreceipt.input_outstock_mark')"
|
||||||
|
type="textarea"
|
||||||
|
autosize
|
||||||
|
/>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
</el-row>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<template #table-columns>
|
||||||
|
<el-table-column :label="$t('_prop.production.finishedproductreceipt.productType')" prop="productType" />
|
||||||
|
<el-table-column :label="$t('_prop.production.finishedproductreceipt.productSn')" prop="productSn" />
|
||||||
|
<el-table-column :label="$t('_prop.production.finishedproductreceipt.macAddress')" prop="mac" />
|
||||||
|
<el-table-column :label="$t('_prop.production.finishedproductreceipt.serialNumber')" prop="serialNum" />
|
||||||
|
<el-table-column :label="$t('_prop.production.finishedproductreceipt.softwareVersion')" prop="softVersion" />
|
||||||
|
<el-table-column :label="$t('_prop.production.finishedproductreceipt.algorithmVersion')" prop="alVersion" />
|
||||||
|
<el-table-column :label="$t('_prop.production.finishedproductreceipt.algorithmFlag')" prop="alNum" />
|
||||||
|
<el-table-column :label="$t('_prop.production.finishedproductreceipt.activationStatus')" prop="alStatus">
|
||||||
|
<template #default="{ row }">
|
||||||
|
{{ getActivationStatusLabel(row.alStatus) }}
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column
|
||||||
|
:label="$t('_prop.production.finishedproductreceipt.createDate')"
|
||||||
|
prop="createDate"
|
||||||
|
:formatter="formatDate"
|
||||||
|
/>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<template #attachment>
|
||||||
|
<el-button type="primary" @click="saveOutstock">
|
||||||
|
{{ $t("_button.submit") }}
|
||||||
|
</el-button>
|
||||||
|
</template>
|
||||||
|
</BaseTableForm>
|
||||||
</template>
|
</template>
|
||||||
|
|||||||
Reference in New Issue
Block a user