Commit f4c82979 by zhuzhequan

质检,发货修改

parent 4e4e2b35
......@@ -101,12 +101,13 @@ export function getOrderBySubOrderNumber(orderNumber: string) {
)
}
export function getQaOrderBySubOrderNumber(orderNumber: string) {
export function getQaOrderBySubOrderNumber(orderNumber: string,shipmentUid?:string) {
return axios.get<never, BaseRespData<QaData[]>>(
'factory/customJomallOrder/inspectionQuery',
{
params: {
subOrderNumber: orderNumber,
shipmentUid:shipmentUid,
},
},
)
......
......@@ -196,6 +196,8 @@ export interface LogListData {
export interface QaData {
orderNumber?: string
namespace?: string
scansNum?: number
shipmentUid?: string
billNumber?: string
subOrderNumber?: string
baseSku?: string
......
......@@ -81,22 +81,29 @@
header-align="center"
></el-table-column>
<el-table-column
label="扫描数量"
prop="scansNum"
width="80"
align="center"
header-align="center"
></el-table-column>
<el-table-column
label="质检通过"
prop="passNum"
width="90"
width="80"
align="center"
header-align="center"
></el-table-column>
<el-table-column
label="未通过"
prop="notPassNum"
width="90"
width="80"
align="center"
header-align="center"
></el-table-column>
<el-table-column
label="是否质检"
width="90"
width="80"
align="center"
header-align="center"
>
......@@ -378,6 +385,7 @@ const {
onRowClick,
} = props.quarantine
const tableRowClassName = ({ row }: { row: QaData }) => {
if (row.subOrderNumber === currentRow.value.subOrderNumber) {
return 'current-row-active'
} else {
......
......@@ -10,6 +10,7 @@ export default function useQuarantine() {
const quarantineVisible = ref(false)
const qaCode = ref('')
const shipmentUid = ref('')
const qaInputRef = ref()
const isLock = ref(false)
const cloneRow = ref<QaData>({} as QaData)
......@@ -24,6 +25,8 @@ export default function useQuarantine() {
resetOrderList()
resetCurrentRow()
dzjTotal.value = 0
shipmentUid.value = ''
qaCode.value = ''
yzjTotal.value = 0
allTotal.value = 0
}
......@@ -31,7 +34,19 @@ export default function useQuarantine() {
if (sourceData.value.length == 0) return false
return sourceData.value.some((item) => item.isCheck)
})
const findAllIndex = (code: string) => {
const indexList: number[] = []
sourceData.value.forEach((el, index) => {
if (el.factorySubOrderNumber === code && el.shipmentNum !== el.scansNum) {
indexList.push(index)
}
})
return indexList
}
const searchQaByOrderNumber = () => {
const uid = shipmentUid.value
const code = qaCode.value
if (!code) {
isLock.value = false
......@@ -45,10 +60,15 @@ export default function useQuarantine() {
if (isLock.value) {
qaInputRef.value.focus()
qaCode.value = ''
shipmentUid.value = ''
return
}
isLock.value = true
const code1 = code?.split('_')[0]
const index = sourceData.value.findIndex(
(item) =>
item.factorySubOrderNumber == code1 || item.subOrderNumber == code1,
)
// 如果扫单号没有包含当前的生产单号
const isIncluned = sourceData.value.some(
(item) =>
......@@ -56,14 +76,14 @@ export default function useQuarantine() {
)
if (isQaed.value && !isIncluned) {
saveQuarantine(() => {
loadShipmentOrderByCode(code)
loadShipmentOrderByCode(code, uid)
})
} else {
// 如果质检未完成
// 查找是否已经存在
const row = sourceData.value.find(
(item) =>
item.factorySubOrderNumber == code1 || item.subOrderNumber == code1,
(uid === item.shipmentUid && (code1 === item.subOrderNumber || item.factorySubOrderNumber == code1)) || (!uid && (item.factorySubOrderNumber == code1 || item.subOrderNumber == code1)),
)
if (row) {
// 质检数量不能大于发货数量
......@@ -72,6 +92,7 @@ export default function useQuarantine() {
qaInputRef.value.focus()
isLock.value = false
qaCode.value = ''
shipmentUid.value = ''
playAudio('picking_beyond')
return ElMessage({
message: '质检数量不能大于发货数量',
......@@ -79,6 +100,23 @@ export default function useQuarantine() {
offset: window.innerHeight / 2,
})
}
const len = sourceData.value.filter(el => el.factorySubOrderNumber == code1 || code1 === el.subOrderNumber)
const scansNum = sourceData.value[index].scansNum || 0
const indexList = findAllIndex(code1)
if (len.length > 1) {
sourceData.value.forEach((el, i) => {
console.log(el)
if (indexList.length > 0 && i === indexList[0]) {
sourceData.value[i]['scansNum'] = scansNum + 1
}
})
} else {
if (row.shipmentNum !== scansNum) {
sourceData.value[index]['scansNum'] = scansNum + 1
}
}
playAudio('picking_check_success')
// row.passNum = row.shipmentNum
qaInputRef.value.focus()
......@@ -86,18 +124,20 @@ export default function useQuarantine() {
cloneRow.value = JSON.parse(JSON.stringify(currentRow.value))
isLock.value = false
qaCode.value = ''
shipmentUid.value = ''
} else {
loadShipmentOrderByCode(code)
loadShipmentOrderByCode(code, uid)
}
}
}
const loadShipmentOrderByCode = async (code: string) => {
const loadShipmentOrderByCode = async (code: string, uid: string) => {
try {
const res = await getQaOrderBySubOrderNumber(code)
const res = await getQaOrderBySubOrderNumber(code, uid)
const code1 = code?.split('_')[0]
res.data = res.data.map((item) => {
return {
...item,
scansNum: item.subOrderNumber === code ? 1 : 0,
isCheck: item.inspectionStatus,
}
})
......@@ -110,8 +150,8 @@ export default function useQuarantine() {
a.isCheck === b.isCheck ? 0 : a.isCheck ? 1 : -1,
) //false在前,true在后
activeTab.value = 'all'
sourceData.value = res.data
_sourceData.value = res.data
sourceData.value = sourceData.value.concat(res.data)
_sourceData.value = _sourceData.value.concat(res.data)
allTotal.value = _sourceData.value.length
dzjTotal.value = res.data.filter(
(e) =>
......@@ -123,10 +163,9 @@ export default function useQuarantine() {
Number(e.shipmentNum || 0) ===
Number(e.passNum || 0) + Number(e.notPassNum || 0),
).length
const row = sourceData.value.find(
(item) =>
item.factorySubOrderNumber == code1 || item.subOrderNumber == code1,
)
const row = sourceData.value.find(item => {
return (uid === item.shipmentUid && (code1 === item.subOrderNumber || item.factorySubOrderNumber == code1)) || (!uid && (item.factorySubOrderNumber == code1 || item.subOrderNumber == code1))
})
if (row) {
// row.passNum += 1
currentRow.value = row
......@@ -135,11 +174,13 @@ export default function useQuarantine() {
qaInputRef.value.focus()
isLock.value = false
qaCode.value = ''
shipmentUid.value = ''
playAudio('picking_search_success')
} catch (e) {
qaInputRef.value.focus()
isLock.value = false
qaCode.value = ''
shipmentUid.value = ''
// showError(e)
playAudio('picking_search_error')
}
......@@ -164,6 +205,7 @@ export default function useQuarantine() {
isLock.value = false
qaInputRef.value.focus()
qaCode.value = ''
shipmentUid.value = ''
currentRow.value = {}
cloneRow.value = JSON.parse(JSON.stringify(currentRow.value))
allTotal.value = 0
......@@ -319,6 +361,7 @@ export default function useQuarantine() {
return {
quarantineVisible,
qaCode,
shipmentUid,
qaInputRef,
allTotal,
dzjTotal,
......
import { getOrderBySubOrderNumber, saveOrder } from '@/api/order'
import {
OrderData,
ProductList,
ShipmentForm,
ShipmentOrderRes,
ICompareObjects,
} from '@/types/api/order'
import { ICompareObjects, OrderData, ProductList, ShipmentForm, ShipmentOrderRes } from '@/types/api/order'
import { useValue } from '@/utils/hooks/useValue'
import { nextTick, ref } from 'vue'
import { ShipmentType } from '../Shipment.vue'
export default function useShipment(callback?: () => void) {
const [orderList, resetOrderList] = useValue<OrderData[]>([])
const [shipmentForm, resetShipmentForm] = useValue<ShipmentForm>({
......@@ -57,14 +52,15 @@ export default function useShipment(callback?: () => void) {
(rowData.shipmentNum || 0) +
(rowData.notPassNum || 0)
if (unShipmentNum > (rowData.count || 0)) {
rowData.count = unShipmentNum
rowData.count = (rowData.count || 0) + 1
playAudio('picking_check_success')
if (+rowData.count > 1) {
ElMessageBox.confirm(`该产品未发数为${rowData.count}件`, '重要提示', {
confirmButtonText: '确定',
type: 'warning',
}).catch(() => {})
}
// if (+rowData.count > 1) {
// ElMessageBox.confirm(`该产品未发数为${rowData.count}件`, '重要提示', {
// confirmButtonText: '确定',
// type: 'warning',
// }).catch(() => {
// })
// }
} else {
playAudio('picking_beyond')
ElMessage({
......@@ -102,7 +98,8 @@ export default function useShipment(callback?: () => void) {
ElMessageBox.confirm('不能加入,地址信息不一致!', '重要提示', {
confirmButtonText: '确定',
type: 'warning',
}).catch(() => {})
}).catch(() => {
})
} else {
canJoin(res.data, code)
}
......@@ -126,15 +123,15 @@ export default function useShipment(callback?: () => void) {
for (const item of data.productList || []) {
item.count = 0
if (item.subOrderNumber === code1) {
item.count =
(item.num || 0) - ((item.shipmentNum || 0) - (item.notPassNum || 0))
item.count = 1
if (+item.count > 1) {
ElMessageBox.confirm(`该产品未发数为${item.count}件`, '重要提示', {
confirmButtonText: '确定',
type: 'warning',
}).catch(() => {})
}
// if (+item.count > 1) {
// ElMessageBox.confirm(`该产品未发数为${item.count}件`, '重要提示', {
// confirmButtonText: '确定',
// type: 'warning',
// }).catch(() => {
// })
// }
currentRow.value = item
if (currentRow.value) {
......@@ -215,7 +212,26 @@ export default function useShipment(callback?: () => void) {
})
try {
const res = await saveOrder(data, shipmentForm.value)
ElMessage.success(res.message)
fetch(res.message || '')
.then(response => {
// 确保响应是 OK
if (!response.ok) {
throw new Error('网络响应错误')
}
// 返回图片的二进制数据(Blob)
return response.blob()
})
.then(blob => {
const a = document.createElement('a')
a.href = window.URL.createObjectURL(blob)
a.target = '_blank'
a.download = (res.message as string).split('/')[ (res.message as string).split('/').length - 1]
a.click()
})
.catch(error => {
console.error('下载图片时出错:', error)
})
ElMessage.success('发货成功')
shipmentVisible.value = false
callback && callback()
} catch (e) {
......
......@@ -503,6 +503,16 @@
}}</span>
</div>
<div
v-if="scope.row.shipmentUid"
:title="scope.row.shipmentUid"
class="order-detail_item"
>
<span class="label">提货码:</span>
<span class="value" :title="scope.row.shipmentUid">{{
scope.row.shipmentUid
}}</span>
</div>
<div
:title="scope.row.lanshouPost"
class="order-detail_item"
>
......@@ -696,6 +706,14 @@
row.lanshouRegion + row.lanshouAddress
}}</span>
</div>
<div class="order-list-expand_item_info_title">
<span class="order-list-expand_item_label"
>提货码:</span
>
<span class="order-list-expand_item_value">{{
row.shipmentUid
}}</span>
</div>
</div>
</div>
<div class="order-operate">
......@@ -864,6 +882,12 @@
>
<div class="header-search">
<el-input
v-model="shipmentUid"
style="width: 300px;"
placeholder="请输入提货码"
size="large"
clearable />
<el-input
ref="qaInputRef"
v-model="qaCode"
clearable
......@@ -1187,6 +1211,7 @@ const {
quarantineVisible,
qaInputRef,
qaCode,
shipmentUid,
searchQaByOrderNumber,
saveQuarantine,
confirmCheck,
......
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