Commit 90ab9742 by wuqian

质检

parent bfb28e6e
......@@ -37,6 +37,7 @@ declare module 'vue' {
ElTabs: typeof import('element-plus/es')['ElTabs']
ElTag: typeof import('element-plus/es')['ElTag']
ElTooltip: typeof import('element-plus/es')['ElTooltip']
ElUpload: typeof import('element-plus/es')['ElUpload']
Icon: typeof import('./src/components/Icon.vue')['default']
ImageView: typeof import('./src/components/ImageView.vue')['default']
LogList: typeof import('./src/components/LogList.vue')['default']
......
......@@ -3,7 +3,7 @@
<div
v-for="l in logList"
:key="l.id"
class="log-item flex flex-align-center"
class="log-item flex"
>
<div class="log-item-icon">
<Icon name="a-2labadianji3x" />
......@@ -54,11 +54,10 @@ defineProps({
text-overflow: ellipsis;
white-space: nowrap;
}
.log-item-content {
flex: 1;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
// white-space: nowrap;
}
</style>
......@@ -219,6 +219,7 @@ export interface QaData {
sourceType?: string
isCheck?: boolean
erpSubOrderNumber?: string
remark?: string | null
}
export interface InspectionData {
......@@ -258,3 +259,7 @@ export interface Confirm {
id: number | undefined
dataVersion: string | undefined
}
export interface shopRemark {
resendNum?: number | undefined | null
remark?: string | undefined | null
}
......@@ -61,14 +61,14 @@
>
<template #default="{ row }">
<span v-if="row.num === row.shipmentNum - row.notPassNum"
>已发货</span
>已发货</span
>
<span
v-else-if="
row.num !== row.shipmentNum - row.notPassNum &&
row.shipmentNum > 0
"
>部分发货</span
>部分发货</span
>
<span v-else-if="row.shipmentNum === 0">未发货</span>
</template>
......@@ -110,8 +110,7 @@
vertical-align: middle;
"
>
<CircleCheck
/>
<CircleCheck />
</el-icon>
<el-icon
v-if="!row.isCheck"
......@@ -122,8 +121,7 @@
vertical-align: middle;
"
>
<CircleClose
/>
<CircleClose />
</el-icon>
</template>
</el-table-column>
......@@ -179,16 +177,14 @@
<span class="value">
{{
(currentRow.lanshouRegion || '') +
(currentRow.lanshouAddress || '') || '--'
(currentRow.lanshouAddress || '') || '--'
}}
</span>
</div>
<div class="left-qa-order-basic-info_item">
<span class="label">发货方式:</span>
<span class="value">
{{
currentRow.shippingWay == 1 ? '送货上门' : '快递' || '--'
}}
{{ currentRow.shippingWay == 1 ? '送货上门' : '快递' || '--' }}
</span>
</div>
<div class="left-qa-order-basic-info_item">
......@@ -245,6 +241,18 @@
{{ currentRow.notPassNum || 0 }}
</span>
</div>
<div
v-if="currentRow.remark"
class="order-count"
style="line-height: 26px"
>
<span class="order-count-label" style="margin-right: 6px">
不通过原因:
</span>
<span class="order-norm-value">
{{ currentRow.remark || '-' }}
</span>
</div>
</div>
<div
v-if="Object.keys(currentRow).length > 0"
......@@ -262,32 +270,101 @@
<div class="qa-pass-btn primary" @click="onSuccessQc">
质检通过
</div>
<div class="qa-pass-btn" @click="onReissue">打回重发</div>
<!-- <div class="qa-pass-btn" @click="onReissue">打回重发</div> -->
<div class="qa-pass-btn" @click="onReissues">打回重发</div>
</div>
<div v-else class="qa-pass-btn-success">
<img
src="../../assets/images/yzj.png"
style="width: 100%"
/>
<img src="../../assets/images/yzj.png" style="width: 100%" />
</div>
</div>
</div>
</div>
</div>
<!-- 重发原因弹窗 -->
<el-dialog
v-model="numVisible"
title="提示"
:close-on-click-modal="false"
width="600px"
top="6vh"
>
<el-form
ref="formRef"
:model="formData"
label-width="120px"
:rules="formRules"
>
<el-form-item label="重发数量:" prop="resendNum">
<el-input
v-model="formData.resendNum"
type="number"
clearable
placeholder="请输入重发数量"
></el-input>
</el-form-item>
<el-form-item label="原因:" prop="remark">
<el-input
v-model="formData.remark"
placeholder="请输入原因"
clearable
></el-input>
</el-form-item>
</el-form>
<template #footer>
<div class="dialog-footer">
<el-button size="large" @click="numVisible = false">取消 </el-button>
<el-button size="large" type="primary" @click="handleConfirm"
>发货
</el-button>
</div>
</template>
</el-dialog>
</div>
</template>
<script setup lang="ts">
import { CircleClose, CircleCheck } from '@element-plus/icons-vue'
import useQuarantine from './hook/useQuarantine'
import { PropType } from 'vue'
import { QaData } from '@/types/api/order'
import { PropType, ref, reactive, shallowRef } from 'vue'
import { QaData, shopRemark } from '@/types/api/order'
import { type FormInstance } from 'element-plus'
const formRef = shallowRef<FormInstance>()
const numVisible = ref(false)
const formData = reactive<shopRemark>({
resendNum: null,
remark: '',
})
const formRules = reactive({
resendNum: [
{
required: true,
message: '请输入重发数量',
trigger: 'blur',
},
],
remark: [
{
required: true,
message: '请输入原因',
trigger: 'blur',
},
],
})
const props = defineProps({
quarantine: {
type: Object as PropType<ReturnType<typeof useQuarantine>>,
required: true,
},
})
const onReissues = () => {
formData.resendNum = null
formData.remark = ''
numVisible.value = true
}
const handleConfirm = async () => {
await formRef.value?.validate()
giveDelivery(formData)
numVisible.value = false
}
const {
sourceData,
allTotal,
......@@ -296,8 +373,8 @@ const {
currentRow,
onChangeTab,
onSuccessQc,
onReissue,
activeTab,
giveDelivery,
onRowClick,
} = props.quarantine
const tableRowClassName = ({ row }: { row: QaData }) => {
......
import { getQaOrderBySubOrderNumber, qaFinishedApi } from '@/api/order'
import { InspectionData, QaData } from '@/types/api/order'
import { InspectionData, QaData, shopRemark } from '@/types/api/order'
import { useValue } from '@/utils/hooks/useValue'
import { showConfirm } from '@/utils/ui'
import { computed, ref } from 'vue'
......@@ -146,6 +146,7 @@ export default function useQuarantine() {
billNumber: item.billNumber || '',
version: item.version || '',
passCount: item.passNum || 0,
remark: item.remark || '',
}))
await qaFinishedApi(data)
sourceData.value = []
......@@ -221,6 +222,40 @@ export default function useQuarantine() {
yzjTotal.value = allTotal.value - dzjTotal.value
qaInputRef.value.focus()
}
// 新的onReissue
const giveDelivery = (form: shopRemark) => {
const resendNum = form.resendNum ?? 0
if (Number(resendNum) > (currentRow.value.shipmentNum || 0)) {
return ElMessage({
message: '重发数量不能大于发货数量',
type: 'warning',
offset: window.innerHeight / 2,
})
}
if (resendNum > 0) {
currentRow.value.notPassNum = Number(form.resendNum)
currentRow.value.passNum =
(currentRow.value.shipmentNum || 0) - Number(form.resendNum)
currentRow.value['remark'] = form.remark ?? null
_sourceData.value.forEach((item) => {
if (item.subOrderNumber === currentRow.value.subOrderNumber) {
item.isCheck = true
}
})
sourceData.value = _sourceData.value
allTotal.value = _sourceData.value.length
dzjTotal.value = _sourceData.value.filter((item) => !item.isCheck).length
yzjTotal.value = allTotal.value - dzjTotal.value
} else {
return ElMessage({
message: '重发数量必须大于0!',
type: 'warning',
offset: window.innerHeight / 2,
})
}
}
const onReissue = () => {
ElMessageBox.prompt('请输入重量', '提示', {
confirmButtonText: '确定',
......@@ -262,7 +297,10 @@ export default function useQuarantine() {
*/
const playAudio = (key: string) => {
const audio = new Audio()
const audioPath = new URL(`../../../assets/audio/${key}.mp3`, import.meta.url).href
const audioPath = new URL(
`../../../assets/audio/${key}.mp3`,
import.meta.url,
).href
audio.src = audioPath
audio.play()
}
......@@ -284,5 +322,6 @@ export default function useQuarantine() {
onSuccessQc,
onReissue,
onRowClick,
giveDelivery,
}
}
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