This commit is contained in:
zlwu committed 2026-06-16 19:24:53 +08:00
1 parent c1832f9d03
commit e7d080c9d3
27 files changed
+5168 -4954

No files matched your search

@@ -0,0 +1 @@
{"nodes": [{"id": "users_wuzilong_work_00code_zkxw_web_admin_src_api_cell_product_ts", "label": "cell-product.ts", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/api/cell-product.ts", "source_location": "L1"}, {"id": "api_cell_product_fetchcellproductlist", "label": "fetchCellProductList()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/api/cell-product.ts", "source_location": "L3"}, {"id": "api_cell_product_fetchcellproductdetail", "label": "fetchCellProductDetail()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/api/cell-product.ts", "source_location": "L20"}, {"id": "api_cell_product_fetchcreatecellproduct", "label": "fetchCreateCellProduct()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/api/cell-product.ts", "source_location": "L24"}, {"id": "api_cell_product_fetchupdatecellproduct", "label": "fetchUpdateCellProduct()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/api/cell-product.ts", "source_location": "L28"}, {"id": "api_cell_product_fetchdeletecellproduct", "label": "fetchDeleteCellProduct()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/api/cell-product.ts", "source_location": "L32"}, {"id": "api_cell_product_fetchnextcellproductcode", "label": "fetchNextCellProductCode()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/api/cell-product.ts", "source_location": "L36"}, {"id": "api_cell_product_fetchmaxpassageproductseq", "label": "fetchMaxPassageProductSeq()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/api/cell-product.ts", "source_location": "L43"}, {"id": "api_cell_product_fetchcellproductchain", "label": "fetchCellProductChain()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/api/cell-product.ts", "source_location": "L59"}], "edges": [{"source": "users_wuzilong_work_00code_zkxw_web_admin_src_api_cell_product_ts", "target": "users_wuzilong_work_00code_zkxw_web_admin_src_utils_http", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/api/cell-product.ts", "source_location": "L1", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_web_admin_src_api_cell_product_ts", "target": "api_cell_product_fetchcellproductlist", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/api/cell-product.ts", "source_location": "L3", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_web_admin_src_api_cell_product_ts", "target": "api_cell_product_fetchcellproductdetail", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/api/cell-product.ts", "source_location": "L20", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_web_admin_src_api_cell_product_ts", "target": "api_cell_product_fetchcreatecellproduct", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/api/cell-product.ts", "source_location": "L24", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_web_admin_src_api_cell_product_ts", "target": "api_cell_product_fetchupdatecellproduct", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/api/cell-product.ts", "source_location": "L28", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_web_admin_src_api_cell_product_ts", "target": "api_cell_product_fetchdeletecellproduct", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/api/cell-product.ts", "source_location": "L32", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_web_admin_src_api_cell_product_ts", "target": "api_cell_product_fetchnextcellproductcode", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/api/cell-product.ts", "source_location": "L36", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_web_admin_src_api_cell_product_ts", "target": "api_cell_product_fetchmaxpassageproductseq", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/api/cell-product.ts", "source_location": "L43", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_web_admin_src_api_cell_product_ts", "target": "api_cell_product_fetchcellproductchain", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/api/cell-product.ts", "source_location": "L59", "weight": 1.0}], "raw_calls": [{"caller_nid": "api_cell_product_fetchcellproductlist", "callee": "get", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/api/celLine truncated
@@ -0,0 +1 @@
{"nodes": [{"id": "users_wuzilong_work_00code_zkxw_web_admin_src_views_production_production_work_order_taskoutputproductdialog_vue", "label": "TaskOutputProductDialog.vue", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/production/production-work-order/TaskOutputProductDialog.vue", "source_location": "L1"}, {"id": "production_work_order_taskoutputproductdialog_remotesearchproducttypes", "label": "remoteSearchProductTypes()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/production/production-work-order/TaskOutputProductDialog.vue", "source_location": "L371"}, {"id": "production_work_order_taskoutputproductdialog_ensureproducttypeinoptions", "label": "ensureProductTypeInOptions()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/production/production-work-order/TaskOutputProductDialog.vue", "source_location": "L387"}, {"id": "production_work_order_taskoutputproductdialog_remotesearchspecs", "label": "remoteSearchSpecs()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/production/production-work-order/TaskOutputProductDialog.vue", "source_location": "L393"}, {"id": "production_work_order_taskoutputproductdialog_ensurespecinoptions", "label": "ensureSpecInOptions()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/production/production-work-order/TaskOutputProductDialog.vue", "source_location": "L409"}, {"id": "production_work_order_taskoutputproductdialog_remotesearchstorageslots", "label": "remoteSearchStorageSlots()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/production/production-work-order/TaskOutputProductDialog.vue", "source_location": "L415"}, {"id": "production_work_order_taskoutputproductdialog_onstorageslotselectvisible", "label": "onStorageSlotSelectVisible()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/production/production-work-order/TaskOutputProductDialog.vue", "source_location": "L429"}, {"id": "production_work_order_taskoutputproductdialog_onproducttypeselectvisible", "label": "onProductTypeSelectVisible()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/production/production-work-order/TaskOutputProductDialog.vue", "source_location": "L433"}, {"id": "production_work_order_taskoutputproductdialog_onspecselectvisible", "label": "onSpecSelectVisible()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/production/production-work-order/TaskOutputProductDialog.vue", "source_location": "L437"}, {"id": "production_work_order_taskoutputproductdialog_getotherlinestorageslotids", "label": "getOtherLineStorageSlotIds()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/production/production-work-order/TaskOutputProductDialog.vue", "source_location": "L460"}, {"id": "production_work_order_taskoutputproductdialog_getlinestorageslotoptions", "label": "getLineStorageSlotOptions()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/production/production-work-order/TaskOutputProductDialog.vue", "source_location": "L466"}, {"id": "production_work_order_taskoutputproductdialog_normalizedatevalue", "label": "normalizeDateValue()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/production/production-work-order/TaskOutputProductDialog.vue", "source_location": "L503"}, {"id": "production_work_order_taskoutputproductdialog_calcexpiryfromfreeze", "label": "calcExpiryFromFreeze()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/production/production-work-order/TaskOutputProductDialog.vue", "source_location": "L509"}, {"id": "production_work_order_taskoutputproductdialog_onfreezedatechange", "label": "onFreezeDateChange()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/production/production-work-order/TaskOutputProductDialog.vue", "source_location": "L520"}, {"id": "production_work_order_taskoutputproductdialog_createemptyproductline", "label": "createEmptyProductLine()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/production/production-work-order/TaskOutputProductDialog.vue", "source_location": "L524"}, {"id": "production_work_order_taskoutputproductdialog_resolvespecname", "label": "resolveSpecName()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/production/production-work-order/TaskOutputProductDialog.vue", "source_location": "L535"}, {"id": "production_work_order_taskoutputproductdialog_populateformfromedititem", "label": "populateFormFromEditItem()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/sLine truncated
@@ -237,10 +237,10 @@ const CARD_META_BY_TAB: Record<ProductionWorkOrderTabKey, ProductionWorkOrderCar
showProtocolFeeSummary: false,
showOutboundFeeSummary: false,
metaFields: temporaryFields,
allowDispatchQc: false,
allowDispatchQc: true,
allowSampleReception: false,
allowDispatchComplete: false,
allowEditRemark: false,
allowDispatchComplete: true,
allowEditRemark: true,
allowDelete: true
}
}
+8 -4
View File
@@ -1,7 +1,7 @@
import type { QcWorkOrder } from '@/api/qc-work-order'
import { fetchQcWorkOrderDetail } from '@/api/qc-work-order'
import { fetchMyQcTaskList, type QcTask } from '@/api/qc-task'
import { groupInboundQcWorkOrders } from '@/utils/qc-work-order-groups'
import { groupInboundQcWorkOrders, matchesTemporaryQcSourceFilter } from '@/utils/qc-work-order-groups'
import type { QcWorkOrderTabKey } from '@/utils/qc-work-order-tabs'
import {
resolveTabKeyFromWorkOrder,
@@ -51,7 +51,7 @@ function keywordMatchesWorkOrder(row: QcWorkOrder, keyword: string, tabKey: QcWo
const tab = getQcWorkOrderTab(tabKey)!
const fields =
tabKey === 'temporary'
? [row.workOrderNo]
? [row.workOrderNo, row.productionWorkOrderNo]
: tabKey === 'outbound_basic_experiment'
? [row.workOrderNo, row.applicationNo, row.projectTitle, row.customerName, row.applicationName]
: tab.group === 'outbound'
@@ -70,8 +70,12 @@ export function filterMineEntriesByWorkOrderSearch(
const row = entry.workOrder
if (resolveTabKeyFromWorkOrder(row) !== tabKey) return false
if (filters.workOrderStatus && row.workOrderStatus !== filters.workOrderStatus) return false
if (tab.listLayout !== 'standalone' && filters.triggerSource && row.triggerSource !== filters.triggerSource) {
return false
if (filters.triggerSource) {
if (tabKey === 'temporary') {
if (!matchesTemporaryQcSourceFilter(row, filters.triggerSource)) return false
} else if (tab.listLayout !== 'standalone' && row.triggerSource !== filters.triggerSource) {
return false
}
}
if (!keywordMatchesWorkOrder(row, filters.keyword || '', tabKey)) return false
if (tabUsesInfusionTimeFilter(tab)) {
@@ -1,16 +1,17 @@
import type { QcWorkOrder } from '@/api/qc-work-order'
import { qcBizTypeLabel } from '@/utils/qc-labels'
import {
donationStatusLabel,
donationStatusTagType,
protocolStatusLabel,
protocolStatusTagType,
qcBizTypeTagType
protocolStatusTagType
} from '@/utils/status-tag-registry'
import type { TagType } from '@/utils/status-tag-registry'
import type { QcWorkOrderTabKey } from '@/utils/qc-work-order-tabs'
import { getQcWorkOrderTab } from '@/utils/qc-work-order-tabs'
import { formatMoneyDisplay } from '@/utils/money-format'
import {
isTemporaryQcFromProduction
} from '@/utils/qc-work-order-groups'
export type CardMetaFieldKind = 'text' | 'tag'
@@ -130,10 +131,9 @@ const outboundBasicExperimentFields: CardMetaField[] = [
const temporaryFields: CardMetaField[] = [
{
label: '业务类型',
kind: 'tag',
getValue: (row) => row.qcBizTypeLabel || qcBizTypeLabel('temporary'),
getTagType: () => qcBizTypeTagType('temporary')
label: '关联生产工单',
getValue: (row) => row.productionWorkOrderNo || '—',
visible: (row) => isTemporaryQcFromProduction(row)
},
{
label: '产品编码',
@@ -266,7 +266,7 @@ const CARD_META_BY_TAB: Record<QcWorkOrderTabKey, QcWorkOrderCardMetaConfig> = {
temporary: {
tabKey: 'temporary',
listLayout: 'standalone',
showTriggerTag: false,
showTriggerTag: true,
showProtocolFeeSummary: false,
showOutboundFeeSummary: false,
metaFields: temporaryFields,
@@ -75,3 +75,23 @@ export function isGateTriggerSource(source?: string | null) {
const ts = (source || 'reception').trim()
return ts === 'reception' || ts === 'schedule'
}
/** 临时质检:是否由生产工单派发 */
export function isTemporaryQcFromProduction(row: QcWorkOrder) {
return (row.triggerSource || '') === 'production' || !!(row.productionWorkOrderId || '').trim()
}
export function temporaryQcSourceLabel(row: QcWorkOrder) {
return isTemporaryQcFromProduction(row) ? '生产派发' : '手动创建'
}
export function temporaryQcSourceTagType(row: QcWorkOrder): 'warning' | 'info' {
return isTemporaryQcFromProduction(row) ? 'warning' : 'info'
}
export function matchesTemporaryQcSourceFilter(row: QcWorkOrder, filterValue?: string) {
if (!filterValue) return true
if (filterValue === 'production') return isTemporaryQcFromProduction(row)
if (filterValue === 'manual') return !isTemporaryQcFromProduction(row)
return (row.triggerSource || '') === filterValue
}
@@ -16,7 +16,10 @@
<span
>工单号:<b>{{ workOrderRow?.workOrderNo || '—' }}</b></span
>
<span>样本编码:{{ workOrderRow?.sampleCode || '—' }}</span>
<span v-if="workOrderRow?.workOrderType !== 'temporary'">
样本编码:{{ workOrderRow?.sampleCode || '—' }}
</span>
<span v-else>工单类型:临时生产</span>
</div>
<el-form
ref="formRef"
@@ -160,7 +163,11 @@
productionTaskId: selected?.taskId,
remark: form.remark || undefined
})
ElMessage.success('质检工单派发成功')
ElMessage.success(
props.workOrderRow?.workOrderType === 'temporary'
? '临时质检工单派发成功'
: '质检工单派发成功'
)
emit('success', { sampleCode: props.workOrderRow.sampleCode })
handleClose()
} finally {
@@ -12,10 +12,10 @@
</el-tag>
<el-tag
v-if="cardMetaConfig.showTriggerTag"
:type="triggerSourceTagType(row.triggerSource)"
:type="resolveTriggerTagType(row)"
size="small"
>
{{ row.triggerSourceLabel || triggerSourceTabLabel(row) }}
{{ resolveTriggerTagLabel(row) }}
</el-tag>
</div>
<dl class="qc-work-order-card__meta">
@@ -127,7 +127,7 @@
import { workOrderStatusLabel } from '@/utils/qc-labels'
import type { TagType } from '@/utils/status-tag-registry'
import type { QcWorkOrderCardMetaConfig } from '@/utils/qc-work-order-card-meta'
import { triggerSourceTabLabel } from '@/utils/qc-work-order-groups'
import { triggerSourceTabLabel, temporaryQcSourceLabel, temporaryQcSourceTagType } from '@/utils/qc-work-order-groups'
import QcWorkOrderTaskSubList from './QcWorkOrderTaskSubList.vue'
import QcWorkOrderFeeSummaryBar from './QcWorkOrderFeeSummaryBar.vue'
import QcWorkOrderProtocolPaymentPanel from './QcWorkOrderProtocolPaymentPanel.vue'
@@ -181,6 +181,20 @@
return 'success'
}
function resolveTriggerTagLabel(row: QcWorkOrder) {
if (props.cardMetaConfig.tabKey === 'temporary') {
return temporaryQcSourceLabel(row)
}
return row.triggerSourceLabel || triggerSourceTabLabel(row)
}
function resolveTriggerTagType(row: QcWorkOrder): TagType {
if (props.cardMetaConfig.tabKey === 'temporary') {
return temporaryQcSourceTagType(row)
}
return triggerSourceTagType(row.triggerSource)
}
function workOrderStatusTagType(status: string): TagType {
if (status === 'ywc') return 'success'
if (status === 'ypz') return 'warning'
@@ -17,6 +17,11 @@ import {
appendTaskResultSections,
type QcWorkOrderTaskView
} from './useQcWorkOrderTaskViewSections'
import {
isTemporaryQcFromProduction,
temporaryQcSourceLabel,
temporaryQcSourceTagType
} from '@/utils/qc-work-order-groups'
function formatMetric(v: unknown) {
if (v === null || v === undefined || v === '') return '—'
@@ -159,35 +164,49 @@ export function buildTemporaryViewSections(
detail: QcWorkOrderDetail,
tasks: QcWorkOrderTaskView[]
): ViewSection[] {
const basicFields: ViewSection['fields'] = [
{ label: '工单号', value: detail.workOrderNo },
{ label: '工单类型', value: '临时', tagType: 'warning' },
{
label: '业务类型',
value: detail.qcBizTypeLabel || qcBizTypeLabel('temporary'),
tagType: 'warning'
},
{
label: '工单来源',
value: temporaryQcSourceLabel(detail),
tagType: temporaryQcSourceTagType(detail)
}
]
if (isTemporaryQcFromProduction(detail)) {
basicFields.push({
label: '关联生产工单',
value: detail.productionWorkOrderNo || '—'
})
}
basicFields.push(
{ label: '产品编码', value: detail.cellProductCode || '—' },
{ label: '产品名称', value: detail.cellProductName || '—' },
{ label: '产品类型', value: detail.cellProductTypeName || '—' },
{ label: '代次', value: detail.cellProductPassage || '—' },
{ label: '规格', value: detail.cellProductSpecName || '—' },
{
label: '状态',
value: workOrderStatusLabel(detail.workOrderStatus),
tagType:
detail.workOrderStatus === 'ywc'
? 'success'
: detail.workOrderStatus === 'ypz'
? 'warning'
: 'info'
},
{ label: '备注', value: detail.remark || '—', span: true },
{ label: '创建时间', value: detail.createTime || '—' }
)
return [
{
title: '基本信息',
fields: [
{ label: '工单号', value: detail.workOrderNo },
{ label: '工单类型', value: '临时', tagType: 'warning' },
{
label: '业务类型',
value: detail.qcBizTypeLabel || qcBizTypeLabel('temporary'),
tagType: 'warning'
},
{ label: '产品编码', value: detail.cellProductCode || '—' },
{ label: '产品名称', value: detail.cellProductName || '—' },
{ label: '产品类型', value: detail.cellProductTypeName || '—' },
{ label: '代次', value: detail.cellProductPassage || '—' },
{ label: '规格', value: detail.cellProductSpecName || '—' },
{
label: '状态',
value: workOrderStatusLabel(detail.workOrderStatus),
tagType:
detail.workOrderStatus === 'ywc'
? 'success'
: detail.workOrderStatus === 'ypz'
? 'warning'
: 'info'
},
{ label: '备注', value: detail.remark || '—', span: true },
{ label: '创建时间', value: detail.createTime || '—' }
]
fields: basicFields
},
...appendTaskResultSections(detail, tasks)
]
@@ -20,6 +20,10 @@ import {
} from '@/utils/qc-work-order-tabs'
import { getCardMetaConfig } from '@/utils/qc-work-order-card-meta'
function shouldApplyTriggerSourceFilter(tabKey: QcWorkOrderTabKey, tabLayout: string) {
return tabLayout !== 'standalone' || tabKey === 'temporary'
}
export type QcWorkOrderTabPageMode = 'manage' | 'mine'
export function useQcWorkOrderTabPage(
@@ -71,7 +75,7 @@ export function useQcWorkOrderTabPage(
keyword: searchForm.keyword || undefined,
workOrderStatus: searchForm.workOrderStatus || undefined,
triggerSource:
tab.listLayout !== 'standalone' && searchForm.triggerSource
shouldApplyTriggerSourceFilter(tabKey.value, tab.listLayout) && searchForm.triggerSource
? searchForm.triggerSource
: undefined,
tabKey: tabKey.value,
@@ -116,7 +120,7 @@ export function useQcWorkOrderTabPage(
keyword: searchForm.keyword || undefined,
workOrderStatus: searchForm.workOrderStatus || undefined,
triggerSource:
tab.listLayout !== 'standalone' && searchForm.triggerSource
shouldApplyTriggerSourceFilter(tabKey.value, tab.listLayout) && searchForm.triggerSource
? searchForm.triggerSource
: undefined,
...toWorkOrderListQuery(tab),
@@ -21,20 +21,24 @@
<el-option label="已作废" value="yzf" />
</el-select>
</el-form-item>
<el-form-item v-if="tabConfig.listLayout !== 'standalone'" label="触发来源">
<el-form-item v-if="tabConfig.listLayout !== 'standalone' || tabKey === 'temporary'" label="工单来源">
<el-select
v-model="searchForm.triggerSource"
placeholder="全部"
clearable
style="width: 100%"
>
<template v-if="tabConfig.group === 'inbound'">
<template v-if="tabKey === 'temporary'">
<el-option label="生产派发" value="production" />
<el-option label="手动创建" value="manual" />
</template>
<template v-else-if="tabConfig.group === 'inbound'">
<el-option label="样本接收" value="reception" />
</template>
<template v-else-if="tabConfig.listLayout === 'outbound-grouped'">
<el-option label="计划质检" value="schedule" />
</template>
<el-option label="生产过程" value="production" />
<el-option v-if="tabKey !== 'temporary'" label="生产过程" value="production" />
</el-select>
</el-form-item>
<el-form-item :label="filterTimeLabel">
@@ -115,20 +119,27 @@
<div v-show="filterExpanded" id="my-qc-task-filter-extra" class="filter-extra">
<div class="filter-grid my-qc-task-filter-extra-grid">
<el-form-item v-if="tabConfig.listLayout !== 'standalone'" label="触发来源">
<el-form-item
v-if="tabConfig.listLayout !== 'standalone' || tabKey === 'temporary'"
label="工单来源"
>
<el-select
v-model="searchForm.triggerSource"
placeholder="全部"
clearable
style="width: 100%"
>
<template v-if="tabConfig.group === 'inbound'">
<template v-if="tabKey === 'temporary'">
<el-option label="生产派发" value="production" />
<el-option label="手动创建" value="manual" />
</template>
<template v-else-if="tabConfig.group === 'inbound'">
<el-option label="样本接收" value="reception" />
</template>
<template v-else-if="tabConfig.listLayout === 'outbound-grouped'">
<el-option label="计划质检" value="schedule" />
</template>
<el-option label="生产过程" value="production" />
<el-option v-if="tabKey !== 'temporary'" label="生产过程" value="production" />
</el-select>
</el-form-item>
<el-form-item label="任务类型">