|
@@ -543,47 +543,39 @@ export interface MaterialDetailItem {
|
|
|
/** 明细ID,唯一标识符 */
|
|
|
id: string;
|
|
|
/** 物料ID,关联物料表 */
|
|
|
- itemId: string;
|
|
|
+ itemId: number;
|
|
|
/** 物料编码,业务唯一标识 */
|
|
|
itemCode: string;
|
|
|
/** 物料名称 */
|
|
|
itemName: string;
|
|
|
- /** 规格型号 */
|
|
|
- specification?: string;
|
|
|
/** 规格描述 */
|
|
|
specs?: string | null;
|
|
|
/** 单位 */
|
|
|
unit?: string;
|
|
|
/** 主物料分类ID */
|
|
|
- mainCategoryId?: string;
|
|
|
- /** 主物料分类名称 */
|
|
|
- mainCategoryName?: string;
|
|
|
- /** 主物料分类ID */
|
|
|
- mainItemCategoryId?: string;
|
|
|
+ mainItemCategoryId?: number;
|
|
|
/** 主物料分类名称 */
|
|
|
mainItemCategoryName?: string;
|
|
|
/** 主物料分类编码 */
|
|
|
mainItemCategoryCode?: string;
|
|
|
/** 仓库ID */
|
|
|
- warehouseId: string;
|
|
|
+ warehouseId: number | null;
|
|
|
/** 仓库名称 */
|
|
|
- warehouseName: string;
|
|
|
+ warehouseName: string | null;
|
|
|
/** 可用数量 */
|
|
|
availableQuantity: number;
|
|
|
/** 订单数量 */
|
|
|
- orderQuantity: number;
|
|
|
+ orderQuantity: number | string;
|
|
|
/** 确认数量 */
|
|
|
confirmQuantity: number;
|
|
|
/** 单价 */
|
|
|
- unitPrice: string;
|
|
|
+ unitPrice: number | string;
|
|
|
/** 税率 */
|
|
|
- taxRate: number;
|
|
|
+ taxRate: number | string;
|
|
|
/** 税额 */
|
|
|
- taxAmount: number;
|
|
|
+ taxAmount: number | string;
|
|
|
/** 总金额 */
|
|
|
- totalAmount: number;
|
|
|
- /** 明细状态 */
|
|
|
- status: typeof MaterialDetailStatus[keyof typeof MaterialDetailStatus];
|
|
|
+ totalAmount: number | string;
|
|
|
/** 物料状态 */
|
|
|
itemStatus?: OrderItemStatus;
|
|
|
/** 是否可删除 */
|
|
@@ -594,6 +586,8 @@ export interface MaterialDetailItem {
|
|
|
updateTime: string;
|
|
|
/** 数据来源 */
|
|
|
dataSource?: string;
|
|
|
+ /** @deprecated use itemStatus */
|
|
|
+ status?: any;
|
|
|
}
|
|
|
|
|
|
/**
|
|
@@ -609,6 +603,85 @@ export type OrderItemRecord = MaterialDetailItem;
|
|
|
export type MaterialDetailRecord = MaterialDetailItem;
|
|
|
|
|
|
/**
|
|
|
+ * @description `material-detail-table.vue` `materialOptions` item type, which is transformed from `SalesOrderItemListRecord`.
|
|
|
+ */
|
|
|
+export interface MaterialOption {
|
|
|
+ id: string;
|
|
|
+ itemId: number;
|
|
|
+ itemCode: string;
|
|
|
+ itemName: string;
|
|
|
+ specs: string;
|
|
|
+ unit: string;
|
|
|
+ mainItemCategoryName: string;
|
|
|
+ mainItemCategoryId: number;
|
|
|
+ mainItemCategoryCode: string;
|
|
|
+ unitPrice: string;
|
|
|
+ description: string;
|
|
|
+ warehouseId: number | null;
|
|
|
+ warehouseCode: string | null;
|
|
|
+ warehouseName: string | null;
|
|
|
+ orgId: number;
|
|
|
+ orgCode: string;
|
|
|
+ orgName: string;
|
|
|
+ _raw: import('@/api/types/order').SalesOrderItemListRecord;
|
|
|
+}
|
|
|
+
|
|
|
+/**
|
|
|
+ * `material-detail-table.vue` component instance type
|
|
|
+ */
|
|
|
+export interface MaterialDetailTableComponent extends Vue {
|
|
|
+ // props
|
|
|
+ editMode: boolean;
|
|
|
+ orderId: string | number | null;
|
|
|
+ materialDetails: MaterialDetailRecord[];
|
|
|
+
|
|
|
+ // data
|
|
|
+ formData: Partial<MaterialDetailRecord>;
|
|
|
+ page: PageOption;
|
|
|
+ selectedMaterialId: string | null;
|
|
|
+ materialOptions: MaterialOption[];
|
|
|
+ materialLoading: boolean;
|
|
|
+ searchTimer: number | null;
|
|
|
+ DIALOG_EVENTS: typeof import('./events').DIALOG_EVENTS;
|
|
|
+ editingRow: MaterialDetailRecord | null;
|
|
|
+ editingProp: string | null;
|
|
|
+
|
|
|
+ // computed
|
|
|
+ tableOption: AvueCrudOption;
|
|
|
+ currentPageData: MaterialDetailRecord[];
|
|
|
+
|
|
|
+ // methods
|
|
|
+ validateIntegerInput(value: string, row: MaterialDetailRecord, field: keyof MaterialDetailRecord, min?: number, max?: number): void;
|
|
|
+ validateFloatInput(value: string, row: MaterialDetailRecord, field: keyof MaterialDetailRecord, min?: number, max?: number): void;
|
|
|
+ validateAndFormatFloatOnBlur(row: MaterialDetailRecord, field: keyof MaterialDetailRecord, min?: number, max?: number, precision?: number): void;
|
|
|
+ isRowEditable(row: MaterialDetailRecord): boolean;
|
|
|
+ remoteSearchMaterial(query: string): void;
|
|
|
+ searchMaterials(keyword: string): Promise<void>;
|
|
|
+ handleImportSelectedMaterial(): void;
|
|
|
+ prepareMaterialDetailData(material: MaterialOption): MaterialDetailRecord;
|
|
|
+ calculateAmounts(materialDetail: MaterialDetailRecord): MaterialDetailRecord;
|
|
|
+ handleRefresh(): void;
|
|
|
+ handleCurrentChange(current: number): void;
|
|
|
+ handleSizeChange(size: number): void;
|
|
|
+ handleRowDelete(row: MaterialDetailRecord, index: number): void;
|
|
|
+ handleDeleteMaterial(row: MaterialDetailRecord, index: number): void;
|
|
|
+ handleRowUpdate(row: MaterialDetailRecord, index: number, done: () => void, loading: () => void): void;
|
|
|
+ handleQuantityBlur(row: MaterialDetailRecord, index: number): void;
|
|
|
+ handleUnitPriceBlur(row: MaterialDetailRecord, index: number): void;
|
|
|
+ handleTaxRateChange(row: MaterialDetailRecord, index: number): void;
|
|
|
+ handleTaxAmountChange(row: MaterialDetailRecord, index: number): void;
|
|
|
+ handleTotalAmountChange(row: MaterialDetailRecord, index: number): void;
|
|
|
+ emitUpdateEvent(row: MaterialDetailRecord, index: number, field: string, value: any): void;
|
|
|
+ getStatusTagType(status: OrderItemStatus): string;
|
|
|
+ getStatusText(status: OrderItemStatus): string;
|
|
|
+ formatFloatNumber(value: number | string): string;
|
|
|
+ formatIntegerNumber(value: number | string): string;
|
|
|
+ formatUnitPrice(value: number | string): string;
|
|
|
+ formatTaxRate(value: number | string, withSymbol?: boolean): string;
|
|
|
+ formatAmount(value: number | string, withSymbol?: boolean): string;
|
|
|
+}
|
|
|
+
|
|
|
+/**
|
|
|
* 物料明细更新事件数据
|
|
|
* @description 当物料明细发生变更时传递的事件数据
|
|
|
*/
|