提交
This commit is contained in:
1 parent
f4bbe3e06e
commit
df53d05193
12 files changed
+117
-44
No files matched your search
+1
@@ -0,0 +1 @@
|
||||
{"nodes": [{"id": "users_wuzilong_work_00code_zkxw_web_admin_src_views_production_production_work_order_taskexecutiondialog_vue", "label": "TaskExecutionDialog.vue", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/production/production-work-order/TaskExecutionDialog.vue", "source_location": "L1"}, {"id": "production_work_order_taskexecutiondialog_onsteplistdrop", "label": "onStepListDrop()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/production/production-work-order/TaskExecutionDialog.vue", "source_location": "L656"}, {"id": "production_work_order_taskexecutiondialog_handleforwardsuccess", "label": "handleForwardSuccess()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/production/production-work-order/TaskExecutionDialog.vue", "source_location": "L661"}, {"id": "production_work_order_taskexecutiondialog_openforwarddialog", "label": "openForwardDialog()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/production/production-work-order/TaskExecutionDialog.vue", "source_location": "L667"}, {"id": "production_work_order_taskexecutiondialog_savetaskoutputsmanual", "label": "saveTaskOutputsManual()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/production/production-work-order/TaskExecutionDialog.vue", "source_location": "L672"}, {"id": "production_work_order_taskexecutiondialog_savetaskattachmentsmanual", "label": "saveTaskAttachmentsManual()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/production/production-work-order/TaskExecutionDialog.vue", "source_location": "L676"}, {"id": "production_work_order_taskexecutiondialog_savetaskequipmentmanual", "label": "saveTaskEquipmentManual()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/production/production-work-order/TaskExecutionDialog.vue", "source_location": "L680"}, {"id": "production_work_order_taskexecutiondialog_if", "label": "if()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/production/production-work-order/TaskExecutionDialog.vue", "source_location": "L685"}, {"id": "production_work_order_taskexecutiondialog_stepseqclass", "label": "stepSeqClass()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/production/production-work-order/TaskExecutionDialog.vue", "source_location": "L704"}], "edges": [{"source": "users_wuzilong_work_00code_zkxw_web_admin_src_views_production_production_work_order_taskexecutiondialog_vue", "target": "production_work_order_taskexecutiondialog_onsteplistdrop", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/production/production-work-order/TaskExecutionDialog.vue", "source_location": "L656", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_web_admin_src_views_production_production_work_order_taskexecutiondialog_vue", "target": "production_work_order_taskexecutiondialog_handleforwardsuccess", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/production/production-work-order/TaskExecutionDialog.vue", "source_location": "L661", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_web_admin_src_views_production_production_work_order_taskexecutiondialog_vue", "target": "production_work_order_taskexecutiondialog_openforwarddialog", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/production/production-work-order/TaskExecutionDialog.vue", "source_location": "L667", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_web_admin_src_views_production_production_work_order_taskexecutiondialog_vue", "target": "production_work_order_taskexecutiondialog_savetaskoutputsmanual", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/production/production-work-order/TaskExecutionDialog.vue", "source_location": "L672", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_web_admin_src_views_production_production_work_order_taskexecutiondialog_vue", "target": "production_work_order_taskexecutiondialog_savetaskattachmentsmanual", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/production/production-work-order/TaskExecutionDialog.vue", "source_location": "L676", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_web_admin_src_views_production_production_work_order_taskexecutiondialog_vue", "target": "production_work_order_taskexecutiondialog_savetaskequipmentmanual", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/vLine truncated
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"nodes": [{"id": "users_wuzilong_work_00code_zkxw_web_admin_src_views_production_production_work_order_taskoutputlist_vue", "label": "TaskOutputList.vue", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/production/production-work-order/TaskOutputList.vue", "source_location": "L1"}], "edges": [], "raw_calls": []}
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"nodes": [{"id": "users_wuzilong_work_00code_zkxw_web_admin_src_views_cell_storage_protocol_protocolformdialog_vue", "label": "ProtocolFormDialog.vue", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/cell-storage/protocol/ProtocolFormDialog.vue", "source_location": "L1"}, {"id": "protocol_protocolformdialog_ensuretransfertypeoptions", "label": "ensureTransferTypeOptions()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/cell-storage/protocol/ProtocolFormDialog.vue", "source_location": "L988"}, {"id": "protocol_protocolformdialog_fmtmoney", "label": "fmtMoney()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/cell-storage/protocol/ProtocolFormDialog.vue", "source_location": "L994"}, {"id": "protocol_protocolformdialog_haslockedpaymentdetails", "label": "hasLockedPaymentDetails()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/cell-storage/protocol/ProtocolFormDialog.vue", "source_location": "L1015"}, {"id": "protocol_protocolformdialog_createemptytransport", "label": "createEmptyTransport()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/cell-storage/protocol/ProtocolFormDialog.vue", "source_location": "L1086"}, {"id": "protocol_protocolformdialog_fullfileurl", "label": "fullFileUrl()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/cell-storage/protocol/ProtocolFormDialog.vue", "source_location": "L1104"}, {"id": "protocol_protocolformdialog_loadethnicoptions", "label": "loadEthnicOptions()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/cell-storage/protocol/ProtocolFormDialog.vue", "source_location": "L1111"}, {"id": "protocol_protocolformdialog_ensureethnicoptioninlist", "label": "ensureEthnicOptionInList()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/cell-storage/protocol/ProtocolFormDialog.vue", "source_location": "L1122"}, {"id": "protocol_protocolformdialog_initpaymentdetailexpandflags", "label": "initPaymentDetailExpandFlags()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/cell-storage/protocol/ProtocolFormDialog.vue", "source_location": "L1153"}, {"id": "protocol_protocolformdialog_paymentdetailsummary", "label": "paymentDetailSummary()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/cell-storage/protocol/ProtocolFormDialog.vue", "source_location": "L1159"}, {"id": "protocol_protocolformdialog_togglepaymentdetailexpand", "label": "togglePaymentDetailExpand()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/cell-storage/protocol/ProtocolFormDialog.vue", "source_location": "L1186"}, {"id": "protocol_protocolformdialog_resetform", "label": "resetForm()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/cell-storage/protocol/ProtocolFormDialog.vue", "source_location": "L1279"}, {"id": "protocol_protocolformdialog_scrolltosection", "label": "scrollToSection()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/cell-storage/protocol/ProtocolFormDialog.vue", "source_location": "L1355"}, {"id": "protocol_protocolformdialog_normalizesamplerow", "label": "normalizeSampleRow()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/cell-storage/protocol/ProtocolFormDialog.vue", "source_location": "L1366"}, {"id": "protocol_protocolformdialog_removepaymentdetail", "label": "removePaymentDetail()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/cell-storage/protocol/ProtocolFormDialog.vue", "source_location": "L1389"}, {"id": "protocol_protocolformdialog_addpaymentdetail", "label": "addPaymentDetail()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/cell-storage/protocol/ProtocolFormDialog.vue", "source_location": "L1396"}, {"id": "protocol_protocolformdialog_defaultinstallmentstartdateymd", "label": "defaultInstallmentStartDateYmd()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/cell-storage/protocol/ProtocolFormDialog.vue", "source_location": "L1426"}, {"id": "protocol_protocolformdialog_datetimetoymd", "label": "datetimeToYmd()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/cell-storage/protocol/ProtocolFormDialog.vue", "source_location": "L1436"}, {"id": "protocol_protocolformdialog_isfqnumericfieldempty", "label": "isFqNumericFieldEmpty()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/cell-storage/protocol/ProtocolFormDialog.vue", "source_location": "L1444"}, {"id": "protocol_protocolformdialog_applyLine truncated
|
||||
+1
@@ -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"}], "edges": [], "raw_calls": []}
|
||||
@@ -424,6 +424,7 @@
|
||||
:loading="false"
|
||||
:disabled="readonly"
|
||||
hide-save-footer
|
||||
:lab-storage-code="editor.taskDetail.value?.labStorageCode || ''"
|
||||
:unit-options="editor.itemUnitOptions.value"
|
||||
:unit-options-loading="editor.itemUnitOptionsLoading.value"
|
||||
@update:items="(items: Record<string, any>[]) => (editor.taskOutputs.value = items)"
|
||||
|
||||
@@ -125,6 +125,7 @@
|
||||
<TaskOutputProductDialog
|
||||
v-model="dialogVisible"
|
||||
:edit-item="editingItem"
|
||||
:lab-storage-code="labStorageCode"
|
||||
:occupied-slot-ids="dialogOccupiedSlotIds"
|
||||
:existing-product-codes="dialogExistingProductCodes"
|
||||
@confirm="handleDialogConfirm"
|
||||
@@ -156,8 +157,10 @@
|
||||
saving?: boolean
|
||||
/** 任务执行弹窗:保存按钮由外层底栏承载 */
|
||||
hideSaveFooter?: boolean
|
||||
/** 任务关联实验室入库编码(产出新增弹窗造血干一键填充) */
|
||||
labStorageCode?: string
|
||||
}>(),
|
||||
{ disabled: false, saving: false, hideSaveFooter: false }
|
||||
{ disabled: false, saving: false, hideSaveFooter: false, labStorageCode: '' }
|
||||
)
|
||||
|
||||
const emit = defineEmits<{
|
||||
|
||||
@@ -268,6 +268,14 @@
|
||||
</div>
|
||||
</el-form>
|
||||
<template #footer>
|
||||
<el-button
|
||||
v-if="!isEdit"
|
||||
class="btn-ghost"
|
||||
@click="handleHscQuickFill"
|
||||
>
|
||||
<el-icon><MagicStick /></el-icon>
|
||||
造血干一键填充
|
||||
</el-button>
|
||||
<el-button class="btn-ghost" @click="emit('update:modelValue', false)">
|
||||
<el-icon><Close /></el-icon>
|
||||
取消
|
||||
@@ -281,7 +289,7 @@
|
||||
</template>
|
||||
|
||||
<script setup lang="ts">
|
||||
import { Close, Check } from '@element-plus/icons-vue'
|
||||
import { Close, Check, MagicStick } from '@element-plus/icons-vue'
|
||||
import { ElMessage } from 'element-plus'
|
||||
import { fetchCellProductTypeList } from '@/api/admin'
|
||||
import { fetchMaxPassageProductSeq, fetchMaxProductSuffixSeq, fetchCheckCellProductCode } from '@/api/cell-product'
|
||||
@@ -314,9 +322,13 @@
|
||||
viability: number | undefined
|
||||
}
|
||||
|
||||
const STORAGE_PRODUCT_TYPE_NAME = '存储'
|
||||
|
||||
const props = defineProps<{
|
||||
modelValue: boolean
|
||||
editItem?: Record<string, any> | null
|
||||
/** 任务关联的实验室入库编码(造血干一键填充) */
|
||||
labStorageCode?: string
|
||||
/** 本任务其他产出已占用的储物格(编辑时父级已排除当前条) */
|
||||
occupiedSlotIds?: string[]
|
||||
/** 本任务其他产出已使用的产品编码(编辑时父级已排除当前条,含未保存项) */
|
||||
@@ -472,6 +484,7 @@
|
||||
const originalProductCode = ref('')
|
||||
const productLines = ref<ProductLine[]>([createEmptyProductLine()])
|
||||
let lineCodeSyncToken = 0
|
||||
let skipLineCodeAutoSync = false
|
||||
|
||||
const formData = reactive({
|
||||
cellProductId: '',
|
||||
@@ -613,9 +626,62 @@
|
||||
/** 按入库份数同步明细行,并重算产品编码 */
|
||||
async function applyProductCodeToLines() {
|
||||
syncProductLines()
|
||||
if (skipLineCodeAutoSync) return
|
||||
await syncLineCodesFromBase()
|
||||
}
|
||||
|
||||
function resolveStorageProductTypeOption() {
|
||||
return productTypeOptions.value.find(
|
||||
(item) =>
|
||||
item.productTypeName === STORAGE_PRODUCT_TYPE_NAME ||
|
||||
item.productTypeCode === STORAGE_PRODUCT_TYPE_NAME
|
||||
)
|
||||
}
|
||||
|
||||
async function ensureStorageProductTypeSelected() {
|
||||
let match = resolveStorageProductTypeOption()
|
||||
if (!match) {
|
||||
await remoteSearchProductTypes(STORAGE_PRODUCT_TYPE_NAME)
|
||||
match = resolveStorageProductTypeOption()
|
||||
}
|
||||
if (!match) {
|
||||
ElMessage.warning(`未找到产品类型「${STORAGE_PRODUCT_TYPE_NAME}」,请手动选择`)
|
||||
return false
|
||||
}
|
||||
formData.productTypeId = match.id
|
||||
ensureProductTypeInOptions(match.id, match.productTypeName, match.productTypeCode)
|
||||
return true
|
||||
}
|
||||
|
||||
async function handleHscQuickFill() {
|
||||
const labCode = (props.labStorageCode || '').trim()
|
||||
if (!labCode) {
|
||||
ElMessage.warning('暂无实验室入库编码,无法一键填充')
|
||||
return
|
||||
}
|
||||
skipLineCodeAutoSync = true
|
||||
try {
|
||||
formData.productCode = labCode
|
||||
formData.productName = labCode
|
||||
formData.batchNo = labCode
|
||||
const typeReady = await ensureStorageProductTypeSelected()
|
||||
syncProductLines()
|
||||
productLines.value.forEach((line) => {
|
||||
line.productCode = labCode
|
||||
})
|
||||
await nextTick()
|
||||
productLines.value.forEach((line) => {
|
||||
line.productCode = labCode
|
||||
})
|
||||
formRef.value?.clearValidate?.()
|
||||
if (typeReady) {
|
||||
ElMessage.success('已填充造血干默认值')
|
||||
}
|
||||
} finally {
|
||||
skipLineCodeAutoSync = false
|
||||
}
|
||||
}
|
||||
|
||||
function onDialogOpened() {
|
||||
if (props.editItem) {
|
||||
populateFormFromEditItem(props.editItem)
|
||||
|
||||
Reference in new issue
Block a user