Commit 0b5f7315 by wusiyi

feat: 订单添加质检流程 #1009863

parent b47669b4
...@@ -591,6 +591,16 @@ export function getByOperationNoLogApi(operationNo: string) { ...@@ -591,6 +591,16 @@ export function getByOperationNoLogApi(operationNo: string) {
) )
} }
// 快捷质检 查询
export function getQualityScanByOperationNoApi(operationNo: string) {
return axios.get<never, BaseRespData<operateOrderListData>>(
'factory/podOrderOperation/qualityByOperationNo',
{
params: { operationNo },
},
)
}
// 校验库存 // 校验库存
export function checkInventoryApi(id: number | string, status: string) { export function checkInventoryApi(id: number | string, status: string) {
return axios.get<never, BaseRespData<never>>( return axios.get<never, BaseRespData<never>>(
......
...@@ -313,6 +313,7 @@ export interface QualityParams { ...@@ -313,6 +313,7 @@ export interface QualityParams {
qualityIssues: string qualityIssues: string
qualify_problem_type: number | string qualify_problem_type: number | string
qualityPassed: boolean qualityPassed: boolean
source?: number // 0 列表页,1 快捷质检
} }
/** 质检不通过原因 */ /** 质检不通过原因 */
......
...@@ -68,6 +68,7 @@ const emit = defineEmits<{ ...@@ -68,6 +68,7 @@ const emit = defineEmits<{
const visible = ref(false) const visible = ref(false)
const submitLoading = ref(false) const submitLoading = ref(false)
const qualityPassed = ref(true) const qualityPassed = ref(true)
const source = ref(0) // 0 列表页,1 快捷质检
const formRef = ref<FormInstance>() const formRef = ref<FormInstance>()
const updateParams = ref<{ id: number; version?: number }[]>([]) const updateParams = ref<{ id: number; version?: number }[]>([])
const reasonOptions = ref<QualityTypeItem[]>([]) const reasonOptions = ref<QualityTypeItem[]>([])
...@@ -110,13 +111,17 @@ const handleReasonChange = () => { ...@@ -110,13 +111,17 @@ const handleReasonChange = () => {
formRef.value?.clearValidate('qualify_problem_type') formRef.value?.clearValidate('qualify_problem_type')
} }
/** qualityPassed: true 质检通过,false 质检不通过 */ const open = (
const open = (rows: { id: number; version?: number }[], passed: boolean) => { rows: { id: number; version?: number }[],
passed: boolean,
sourceType: number = 0,
) => {
updateParams.value = rows.map((row) => ({ updateParams.value = rows.map((row) => ({
id: row.id, id: row.id,
version: row.version, version: row.version,
})) }))
qualityPassed.value = passed qualityPassed.value = passed
source.value = sourceType
form.reasonKey = undefined form.reasonKey = undefined
form.qualify_problem_type = '' form.qualify_problem_type = ''
visible.value = true visible.value = true
...@@ -147,10 +152,13 @@ const handleSubmit = async () => { ...@@ -147,10 +152,13 @@ const handleSubmit = async () => {
? form.qualify_problem_type ? form.qualify_problem_type
: (form.reasonKey as number | string), : (form.reasonKey as number | string),
qualityPassed: qualityPassed.value, qualityPassed: qualityPassed.value,
source: source.value,
} }
const res = await qualityPodOrderOperationApi(params) const res = await qualityPodOrderOperationApi(params)
if (res.code !== 200) return if (res.code !== 200) return
if (source.value !== 1) {
ElMessage.success('操作成功') ElMessage.success('操作成功')
}
visible.value = false visible.value = false
emit('success') emit('success')
} catch (e) { } catch (e) {
......
...@@ -638,7 +638,9 @@ ...@@ -638,7 +638,9 @@
> >
</span> </span>
<span v-if="['IN_PRODUCTION'].includes(status)" class="item"> <span v-if="['IN_PRODUCTION'].includes(status)" class="item">
<ElButton type="success" @click="handleQuickProduction()" <ElButton
type="success"
@click="handleQuickProduction('productionScan')"
>快捷生产</ElButton >快捷生产</ElButton
> >
</span> </span>
...@@ -765,7 +767,12 @@ ...@@ -765,7 +767,12 @@
</span> </span>
<!-- 待质检 --> <!-- 待质检 -->
<span v-if="status === 'PENDING_QUALITY'" class="item"> <span v-if="status === 'PENDING_QUALITY'" class="item">
<ElButton type="primary" @click="() => {}"> 快捷质检 </ElButton> <ElButton
type="primary"
@click="handleQuickProduction('qualityScan')"
>
快捷质检
</ElButton>
</span> </span>
<span v-if="status === 'PENDING_QUALITY'" class="item"> <span v-if="status === 'PENDING_QUALITY'" class="item">
<ElButton type="success" @click="handleQuality(true)"> <ElButton type="success" @click="handleQuality(true)">
...@@ -1147,11 +1154,16 @@ ...@@ -1147,11 +1154,16 @@
pending-order-label="操作单号" pending-order-label="操作单号"
please-scan-tip="请扫码操作单号" please-scan-tip="请扫码操作单号"
search-input-audio-tip="请录入操作单号" search-input-audio-tip="请录入操作单号"
history-storage-key="historyFactoryOrderNewData" :history-storage-key="
fastKey === 'qualityScan'
? 'historyFactoryOrderNewQualityData'
: 'historyFactoryOrderNewData'
"
tracking-placeholder="扫描枪输入操作单号" tracking-placeholder="扫描枪输入操作单号"
:query-api="getOperationByNo" :query-api="getOperationByNo"
:complete-api="completeOperationById" :complete-api="completeOperationById"
:download-api="downloadOperationById" :download-api="downloadOperationById"
:print-api="printOperationById"
@on-success="handleFastProductionSuccess" @on-success="handleFastProductionSuccess"
@close="fastClose" @close="fastClose"
/> />
...@@ -1371,6 +1383,7 @@ import { ...@@ -1371,6 +1383,7 @@ import {
completeDeliveryApi, completeDeliveryApi,
productionScanApi, productionScanApi,
getByOperationNoLogApi, getByOperationNoLogApi,
getQualityScanByOperationNoApi,
listByNoPodOrderApi, listByNoPodOrderApi,
orderWeighingPodOrderApi, orderWeighingPodOrderApi,
finishShipmentPodOrderApi, finishShipmentPodOrderApi,
...@@ -2638,7 +2651,6 @@ const suspendDialogRef = ref<InstanceType<typeof SuspendDialog>>() ...@@ -2638,7 +2651,6 @@ const suspendDialogRef = ref<InstanceType<typeof SuspendDialog>>()
const pickCompleteDialogRef = ref<InstanceType<typeof PickCompleteDialog>>() const pickCompleteDialogRef = ref<InstanceType<typeof PickCompleteDialog>>()
const pickFailDialogRef = ref<InstanceType<typeof PickFailDialog>>() const pickFailDialogRef = ref<InstanceType<typeof PickFailDialog>>()
const qualityFailDialogRef = ref<InstanceType<typeof QualityFailDialog>>() const qualityFailDialogRef = ref<InstanceType<typeof QualityFailDialog>>()
const fastQualifyRef = ref<InstanceType<typeof FastQualify>>()
const operateDetailsDialogRef = ref() const operateDetailsDialogRef = ref()
const arrangeDialogRef = ref<InstanceType<typeof ArrangeDialog>>() const arrangeDialogRef = ref<InstanceType<typeof ArrangeDialog>>()
const createLogisticDialogRef = ref() const createLogisticDialogRef = ref()
...@@ -3515,7 +3527,9 @@ const handleReplenishFail = () => { ...@@ -3515,7 +3527,9 @@ const handleReplenishFail = () => {
}) })
} }
const getOperationByNo = (operationNo: string) => const getOperationByNo = (operationNo: string) =>
getByOperationNoLogApi(operationNo) as Promise<{ data?: unknown }> (fastKey.value === 'qualityScan'
? getQualityScanByOperationNoApi(operationNo)
: getByOperationNoLogApi(operationNo)) as Promise<{ data?: unknown }>
const completeOperationById = ( const completeOperationById = (
ids: number[], ids: number[],
detailData?: Record<string, unknown>, detailData?: Record<string, unknown>,
...@@ -3530,8 +3544,13 @@ const completeOperationById = ( ...@@ -3530,8 +3544,13 @@ const completeOperationById = (
const downloadOperationById = (ids: number[]) => const downloadOperationById = (ids: number[]) =>
downloadOperationMaterialApi(ids) downloadOperationMaterialApi(ids)
const printOperationById = (ids: number[]) =>
printNewPodOrderProductionOrderApi(ids) as Promise<{
code?: number
message?: string
}>
const handleFastProductionSuccess = (data: ResultInfoDataItem[]) => { const handleFastProductionSuccess = (data: ResultInfoDataItem[]) => {
if (fastKey.value === 'productionScan') { if (fastKey.value === 'productionScan' || fastKey.value === 'qualityScan') {
ElMessage.success('操作成功') ElMessage.success('操作成功')
return return
} }
...@@ -3584,11 +3603,11 @@ const handleViewDetail = async (item: operateOrderListData) => { ...@@ -3584,11 +3603,11 @@ const handleViewDetail = async (item: operateOrderListData) => {
} }
} }
const isLimitScan = ref(false) const isLimitScan = ref(false)
const handleQuickProduction = () => { const handleQuickProduction = (key: string) => {
detailVisible.value = true fastKey.value = key
fastKey.value = 'productionScan'
isLimitScan.value = true isLimitScan.value = true
detailData.value = {} detailData.value = {}
detailVisible.value = true
} }
const handleSinglePrint = () => { const handleSinglePrint = () => {
podDistributionOrderVisible.value = true podDistributionOrderVisible.value = true
...@@ -3696,12 +3715,9 @@ const handleGetOrderInventoryDetail = async () => { ...@@ -3696,12 +3715,9 @@ const handleGetOrderInventoryDetail = async () => {
const handleQuality = (qualityPassed: boolean) => { const handleQuality = (qualityPassed: boolean) => {
if (!ensureSelection()) return if (!ensureSelection()) return
const rows = isCardLayout.value ? cardSelectList.value : selectedRows.value const rows = isCardLayout.value ? cardSelectList.value : selectedRows.value
qualityFailDialogRef.value?.open(rows, qualityPassed) qualityFailDialogRef.value?.open(rows, qualityPassed, 0)
} }
const handleFastQualify = () => {
fastQualifyRef.value?.open()
}
const isEnableSorting = ref(false) const isEnableSorting = ref(false)
// 获取功能开关 // 获取功能开关
const getFunctionSwitch = async () => { const getFunctionSwitch = async () => {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment