import request from '~/utils/request' export interface ProduceOption { label: string value: string | number } export interface ProduceRecordItem { id?: string | number order_no?: string process_order_no?: string product_code?: string quantity?: number user_code?: string operator?: string scan_result?: number scan_date?: string created_date?: string process?: { process_name?: string } step?: { step_name?: string } status?: { status_name?: string } } export interface ProduceSubmitScanDataResult { code: number msg: string data?: { id?: string | number } } export interface ProduceStatistics { today_total: number success_total: number failed_total: number } export interface ProduceUserStatsItem { user_code: string operator?: string count: number } export interface ProduceMemberUserCheckResult { id: number username: string nickname: string } export interface ProduceDataEntryStepRule { id?: string | number process_id?: string | number process_name?: string step_code?: string step_name?: string prerequisite_steps?: Array prerequisite_mode?: string prerequisite_require_final?: number allow_repeat_scan?: number repeat_scan_statuses?: Array } export interface ProduceDataEntrySpecificRule { id?: string | number rule_name?: string rule_pattern?: string rule_type?: number apply_mode?: 'order' | 'machine' | 'both' match_field?: 'order_no' | 'process_order_no' | 'product_code' | 'user_code' step_ids?: Array sort?: number remark?: string } export interface ProduceDataEntryConfig { basic_setting: Record step_rule: ProduceDataEntryStepRule | null specific_rules: ProduceDataEntrySpecificRule[] current?: { process_id?: string | number step_id?: string | number order_no?: string apply_mode?: 'order' | 'machine' | 'both' } } export function getProcessOptions() { return request.get('/produce/process', { format: 'select' }) } export function getStepOptions(processId?: string | number) { return request.get('/produce/process-step', { format: 'select', ...(processId ? { process_id: processId } : {}), }) } export function getStatusOptions(stepId?: string | number) { return request.get('/produce/step-status', { format: 'select', ...(stepId ? { step_id: stepId } : {}), }) } export function getProduceConfig(groupCode: string) { return request.get>('/produce/config/info', { group_code: groupCode }) } export function getDataEntryConfig(params: Record) { return request.get('/produce/config/data-entry', params) } export function getRecentRecords(params: Record) { return request.get<{ items: ProduceRecordItem[]; total: number }>('/produce/scan-data', { limit: 10, page: 1, ...params, }) } export function getProductRecentRecords(params: Record) { return request.get<{ items: ProduceRecordItem[]; total: number }>('/produce/product-record/recent', { limit: 10, page: 1, ...params, }) } export function getStatistics(params: Record) { return request.get('/produce/scan-data/statistics', params, { showErrorMessage: false }) } export function getProductStatistics(params: Record) { return request.get('/produce/product-record/statistics', params, { showErrorMessage: false }) } export function getUserCodeStats(params: Record) { return request.get('/produce/scan-data/user-code-stats', params, { showErrorMessage: false }) } export function getProductUserCodeStats(params: Record) { return request.get('/produce/product-record/user-code-stats', params, { showErrorMessage: false }) } export function checkMemberUser(userCode: string) { return request.get('/produce/member-user/check', { user_code: userCode }, { showErrorMessage: false }) } export function submitScanData(data: Record) { return request.post('/produce/scan-data/record', data, { showErrorMessage: false, returnFullResponse: true, }) } export function submitProductRecord(data: Record) { return request.post('/produce/product-record/record', data, { showErrorMessage: false, returnFullResponse: true, }) }