Commit c2b3c106 by zhuzhequan

Merge remote-tracking branch 'origin/dev' into dev

# Conflicts:
#	src/views/order/podUs/index.vue
parents ade30966 e963395d
...@@ -42,6 +42,7 @@ ...@@ -42,6 +42,7 @@
v-model="editForm" v-model="editForm"
:config="formConfig" :config="formConfig"
form-item-width="100%" form-item-width="100%"
labelWidth="125"
> >
</CustomizeForm> </CustomizeForm>
...@@ -205,6 +206,7 @@ const formConfig = computed<IFormConfig[]>(() => [ ...@@ -205,6 +206,7 @@ const formConfig = computed<IFormConfig[]>(() => [
}, },
], ],
}, },
{ {
prop: 'companyId', prop: 'companyId',
type: 'select', type: 'select',
...@@ -223,6 +225,9 @@ const formConfig = computed<IFormConfig[]>(() => [ ...@@ -223,6 +225,9 @@ const formConfig = computed<IFormConfig[]>(() => [
if (value.code === 'UINUIN') { if (value.code === 'UINUIN') {
editFormRef.value?.refashConfig(['uinuinWarehouseId']) editFormRef.value?.refashConfig(['uinuinWarehouseId'])
editFormRef.value?.clearValidate() editFormRef.value?.clearValidate()
} else if (value.code === 'YW') {
editFormRef.value?.refashConfig(['companyWarehouseCode'])
editFormRef.value?.clearValidate()
} else { } else {
editFormRef.value?.refashConfig([]) editFormRef.value?.refashConfig([])
editFormRef.value?.clearValidate() editFormRef.value?.clearValidate()
...@@ -233,7 +238,7 @@ const formConfig = computed<IFormConfig[]>(() => [ ...@@ -233,7 +238,7 @@ const formConfig = computed<IFormConfig[]>(() => [
rules: [ rules: [
{ {
required: true, required: true,
message: '请选择仓库名称', message: '请选择物流公司',
}, },
], ],
}, },
...@@ -255,28 +260,29 @@ const formConfig = computed<IFormConfig[]>(() => [ ...@@ -255,28 +260,29 @@ const formConfig = computed<IFormConfig[]>(() => [
}, },
], ],
}, },
// { {
// prop: 'ruleId', prop: 'companyWarehouseCode',
// type: 'select', type: 'select',
// label: '申报规则', label: '物流仓库编码',
// fixed: 'last', isIncludeProp: true,
// attrs: { attrs: {
// placeholder: '请选择申报规则', placeholder: '请选择物流仓库编码',
// label: 'name', options: [
// value: 'id', { label: 'LAX01', value: 'LAX01' },
// options: [...(ruleNameList.value || [])], { label: 'NJC01', value: 'NJC01' },
// onChange: (value: { name: string; id: string | number }) => { { label: 'ORD01', value: 'ORD01' },
// editForm.value.ruleRef.ruleId = value.id { label: 'MIA01', value: 'MIA01' },
// editForm.value.ruleRef.ruleName = value.name { label: 'DFW01', value: 'DFW01' },
// }, ],
// }, },
// rules: [ rules: [
// { {
// required: true, required: true,
// message: '请选择申报规则', message: '请选择物流仓库编码',
// }, },
// ], ],
// }, },
{ {
prop: 'serviceCode', prop: 'serviceCode',
type: 'input', type: 'input',
...@@ -599,11 +605,13 @@ async function editWay(item: LogisticsMethod) { ...@@ -599,11 +605,13 @@ async function editWay(item: LogisticsMethod) {
console.log(493, editForm.value) console.log(493, editForm.value)
dialogVisible.value = true dialogVisible.value = true
if (item.uinuinWarehouseId) { nextTick(() => {
nextTick(() => { if (item.uinuinWarehouseId) {
editFormRef.value?.refashConfig(['uinuinWarehouseId']) editFormRef.value?.refashConfig(['uinuinWarehouseId'])
}) } else if (item.companyWarehouseCode) {
} editFormRef.value?.refashConfig(['companyWarehouseCode'])
}
})
} catch (e) { } catch (e) {
console.log(e) console.log(e)
} }
......
...@@ -263,7 +263,7 @@ async function getList(data?: { ...@@ -263,7 +263,7 @@ async function getList(data?: {
editParams.value = { editParams.value = {
zoneName: row.zoneName, zoneName: row.zoneName,
logistics: key, logistics: key,
codePrefix: e || '', codePrefix: formatString(e) || '',
logisticsId: row[key].logisticsId, logisticsId: row[key].logisticsId,
} }
}} }}
...@@ -315,7 +315,7 @@ function setCellStyle() { ...@@ -315,7 +315,7 @@ function setCellStyle() {
const [cell, primaryCell] = ['.tableCell', '.primaryCell'].map((selector) => const [cell, primaryCell] = ['.tableCell', '.primaryCell'].map((selector) =>
document.querySelectorAll(selector), document.querySelectorAll(selector),
) )
const getAncestor = (element: Element, level = 2) => { const getAncestor = (element: Element, level = 3) => {
let current = element let current = element
while (level-- > 0 && current) { while (level-- > 0 && current) {
current = current.parentElement as Element current = current.parentElement as Element
...@@ -434,6 +434,18 @@ async function editClosed() { ...@@ -434,6 +434,18 @@ async function editClosed() {
editParams.value = {} editParams.value = {}
} }
} }
function formatString(input: string) {
// 1. 替换所有中文逗号为英文逗号
// 2. 移除所有空格
// 3. 将连续逗号替换为单个逗号
// 4. 去除首尾可能的逗号
return input
.replace(/,/g, ',') // 中文逗号转英文逗号
.replace(/\s+/g, '') // 移除所有空格
.replace(/,+/g, ',') // 连续逗号替换为单个逗号
.replace(/^,|,$/g, '') // 去除首尾逗号
}
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
...@@ -451,4 +463,37 @@ async function editClosed() { ...@@ -451,4 +463,37 @@ async function editClosed() {
.dialog-footer { .dialog-footer {
text-align: center; text-align: center;
} }
:deep() {
// .vxe-cell {
// padding: 15px 10px !important;
// }
.col--edit::after {
content: '双击修改';
display: none;
position: absolute;
top: 0;
z-index: 99;
left: 50%;
transform: translate(-50%);
// width: 85px;
// height: 20px;
font-size: 10px;
line-height: 1;
border-radius: 5px;
padding: 2px 5px;
opacity: 0.5;
background-color: black;
text-align: center; /* 使文本居中 */
color: white; /* 文本颜色 */
}
.col--edit:hover::after {
display: block;
}
.col--active:hover::after {
content: '单击其他单元格确认';
white-space: nowrap;
}
}
</style> </style>
...@@ -13,6 +13,7 @@ export interface LogisticsMethod { ...@@ -13,6 +13,7 @@ export interface LogisticsMethod {
ruleId?: string | number ruleId?: string | number
ruleList?: ruleRefObj[] ruleList?: ruleRefObj[]
uinuinWarehouseId?: number | string | null uinuinWarehouseId?: number | string | null
companyWarehouseCode?: number | string | null
} }
export interface LogisticsMethodList { export interface LogisticsMethodList {
......
...@@ -262,7 +262,7 @@ ...@@ -262,7 +262,7 @@
blue: item.quantity && item.quantity > 0, blue: item.quantity && item.quantity > 0,
red: item.status === 'EXCEPTION_ORDER', red: item.status === 'EXCEPTION_ORDER',
}" }"
>{{ item.quantity }}</span >{{ item.quantity }}</span
> >
</div> </div>
<!-- <div <!-- <div
...@@ -447,19 +447,19 @@ ...@@ -447,19 +447,19 @@
<template #dropdown> <template #dropdown>
<ElDropdownMenu> <ElDropdownMenu>
<ElDropdownItem @click="getOrderByIdApi('createLogisticsOrder')" <ElDropdownItem @click="getOrderByIdApi('createLogisticsOrder')"
>创建物流订单</ElDropdownItem >创建物流订单</ElDropdownItem
> >
<ElDropdownItem @click="getOrderByIdApi('getTrackingNumber')" <ElDropdownItem @click="getOrderByIdApi('getTrackingNumber')"
>获取跟踪号</ElDropdownItem >获取跟踪号</ElDropdownItem
> >
<ElDropdownItem @click="getOrderByIdApi('getPrintOrder')" <ElDropdownItem @click="getOrderByIdApi('getPrintOrder')"
>获取打印面单</ElDropdownItem >获取打印面单</ElDropdownItem
> >
<ElDropdownItem @click="getOrderByIdApi('cancelLogisticsOrder')" <ElDropdownItem @click="getOrderByIdApi('cancelLogisticsOrder')"
>取消物流订单</ElDropdownItem >取消物流订单</ElDropdownItem
> >
<ElDropdownItem @click="getOrderByIdApi('batchChangeLogistics')" <ElDropdownItem @click="getOrderByIdApi('batchChangeLogistics')"
>更换物流</ElDropdownItem >更换物流</ElDropdownItem
> >
</ElDropdownMenu> </ElDropdownMenu>
</template> </template>
...@@ -610,7 +610,7 @@ ...@@ -610,7 +610,7 @@
</div> </div>
<div class="goods-item-info-item"> <div class="goods-item-info-item">
<span class="goods-item-info-item-label" <span class="goods-item-info-item-label"
>第三方生产单号:</span >第三方生产单号:</span
> >
<span <span
class="goods-item-info-item-value" class="goods-item-info-item-value"
...@@ -643,7 +643,7 @@ ...@@ -643,7 +643,7 @@
> >
<!-- <span class="goods-item-info-item-label">补胚状态:</span> --> <!-- <span class="goods-item-info-item-label">补胚状态:</span> -->
<el-tag size="small" effect="dark" type="danger" <el-tag size="small" effect="dark" type="danger"
>补胚中 >补胚中
</el-tag> </el-tag>
</div> </div>
</div> </div>
...@@ -675,13 +675,14 @@ ...@@ -675,13 +675,14 @@
<div class="goods-item-info-item"> <div class="goods-item-info-item">
<span class="goods-item-info-item-label">{{ <span class="goods-item-info-item-label">{{
status === 'EXCEPTION_ORDER' || status === 'EXCEPTION_ORDER' ||
status === 'PICKING' || status === 'PICKING' ||
status === 'TO_BE_CONFIRMED' || status === 'TO_BE_CONFIRMED' ||
status === 'STOCK_OUT' || status === 'STOCK_OUT' ||
status === 'CREATE_LOGISTICS' ? '数量:' status === 'CREATE_LOGISTICS'
: '已生产数量:' ? '数量:'
}}</span> : '已生产数量:'
}}</span>
<span class="goods-item-info-item-value"> <span class="goods-item-info-item-value">
{{ {{
status === 'EXCEPTION_ORDER' || status === 'EXCEPTION_ORDER' ||
...@@ -711,7 +712,7 @@ ...@@ -711,7 +712,7 @@
size="small" size="small"
type="success" type="success"
@click="applyForReplenishment(item)" @click="applyForReplenishment(item)"
>申请补胚 >申请补胚
</el-button> </el-button>
<!-- f --> <!-- f -->
</div> </div>
...@@ -897,17 +898,17 @@ ...@@ -897,17 +898,17 @@
<el-timeline-item <el-timeline-item
:color="row.createTime ? '#409EFF' : ''" :color="row.createTime ? '#409EFF' : ''"
:timestamp="row.createTime" :timestamp="row.createTime"
>创建时间 >创建时间
</el-timeline-item> </el-timeline-item>
<el-timeline-item <el-timeline-item
:color="row.startStockingTime ? '#E6A23C' : ''" :color="row.startStockingTime ? '#E6A23C' : ''"
:timestamp="row.startStockingTime" :timestamp="row.startStockingTime"
>确认时间 >确认时间
</el-timeline-item> </el-timeline-item>
<el-timeline-item <el-timeline-item
:color="row.finishTime ? '#67C23A' : ''" :color="row.finishTime ? '#67C23A' : ''"
:timestamp="row.finishTime" :timestamp="row.finishTime"
>完成时间 >完成时间
</el-timeline-item> </el-timeline-item>
</el-timeline> </el-timeline>
<!-- <div class="order-time-box"> <!-- <div class="order-time-box">
...@@ -1080,7 +1081,7 @@ ...@@ -1080,7 +1081,7 @@
<div class="grid-container"> <div class="grid-container">
<div class="grid-item" title="商品名称"> <div class="grid-item" title="商品名称">
<span class="grid-item-value" <span class="grid-item-value"
>{{ cardItem?.productName }} >{{ cardItem?.productName }}
</span> </span>
</div> </div>
<div <div
...@@ -1182,7 +1183,7 @@ ...@@ -1182,7 +1183,7 @@
</div> </div>
<div v-if="cardItem.isReplenishment" class="grid-item"> <div v-if="cardItem.isReplenishment" class="grid-item">
<el-tag size="small" type="danger" effect="dark" <el-tag size="small" type="danger" effect="dark"
>补胚中 >补胚中
</el-tag> </el-tag>
</div> </div>
</div> </div>
...@@ -1195,14 +1196,17 @@ ...@@ -1195,14 +1196,17 @@
<div class="pagination"> <div class="pagination">
<div class="total"> <div class="total">
<span <span
>已选择 >已选择
<span style="color: red">{{ selection.length || cardSelection.length }}</span> 条数据</span <span style="color: red">{{
selection.length || cardSelection.length
}}</span>
条数据</span
> >
</div> </div>
<ElPagination <ElPagination
v-model:current-page="currentPage" v-model:current-page="currentPage"
v-model:page-size="pageSize" v-model:page-size="pageSize"
:page-sizes="[50,100, 200, 300, 400, 500]" :page-sizes="[50, 100, 200, 300, 400, 500]"
background background
layout="total, sizes, prev, pager, next, jumper" layout="total, sizes, prev, pager, next, jumper"
:total="total" :total="total"
...@@ -1212,16 +1216,20 @@ ...@@ -1212,16 +1216,20 @@
></ElPagination> ></ElPagination>
<div class="pageSize"> <div class="pageSize">
<span <span
>自定义条数 >自定义条数
<span><el-input <span
v-model="pageSize" ><el-input
type="number" v-model="pageSize"
style="width: 100px;" clearable type="number"
@blur="inputBlur"></el-input></span> /</span style="width: 100px"
clearable
@blur="inputBlur"
></el-input
></span>
/</span
> >
</div> </div>
</div> </div>
</div> </div>
</div> </div>
<RightClickMenu <RightClickMenu
...@@ -1656,7 +1664,7 @@ import platformJson from '../../../json/platform.json' ...@@ -1656,7 +1664,7 @@ import platformJson from '../../../json/platform.json'
declare global { declare global {
interface Window { interface Window {
ActiveXObject: { ActiveXObject: {
new(type: string): XMLHttpRequest new (type: string): XMLHttpRequest
} }
VBS_BinaryToArray: { VBS_BinaryToArray: {
(data: unknown): { toArray(): number[] } (data: unknown): { toArray(): number[] }
...@@ -2219,7 +2227,10 @@ const downloadTif = async (type: string) => { ...@@ -2219,7 +2227,10 @@ const downloadTif = async (type: string) => {
cardSelection.value.map((el) => el.id), cardSelection.value.map((el) => el.id),
type, type,
) )
const url = type === 'tiff' ? `https://ps.jomalls.com/tiff/` + res.message : filePath + res.message const url =
type === 'tiff'
? `https://ps.jomalls.com/tiff/` + res.message
: filePath + res.message
if (type === 'tiff') { if (type === 'tiff') {
window.open(url, '_blank') window.open(url, '_blank')
tifDownloadLoading.value = false tifDownloadLoading.value = false
...@@ -2765,7 +2776,7 @@ const getOrderByIdApi = async (type: string) => { ...@@ -2765,7 +2776,7 @@ const getOrderByIdApi = async (type: string) => {
return return
} }
let loading
const operation = operationMap[type] const operation = operationMap[type]
if (operation) { if (operation) {
try { try {
...@@ -2777,7 +2788,7 @@ const getOrderByIdApi = async (type: string) => { ...@@ -2777,7 +2788,7 @@ const getOrderByIdApi = async (type: string) => {
const ids = selection.value.map((el) => el.id) const ids = selection.value.map((el) => el.id)
const loading = ElLoading.service({ loading = ElLoading.service({
fullscreen: true, fullscreen: true,
text: '操作中...', text: '操作中...',
background: 'rgba(0, 0, 0, 0.3)', background: 'rgba(0, 0, 0, 0.3)',
...@@ -2801,10 +2812,11 @@ const getOrderByIdApi = async (type: string) => { ...@@ -2801,10 +2812,11 @@ const getOrderByIdApi = async (type: string) => {
} else { } else {
ElMessage.error(res.message) ElMessage.error(res.message)
} }
loading.close()
} catch (e) { } catch (e) {
resultInfo.value = [] resultInfo.value = []
console.error(e) console.error(e)
} finally {
loading && loading.close()
} }
} else { } else {
ElMessage.warning('未知操作类型') ElMessage.warning('未知操作类型')
...@@ -2997,9 +3009,23 @@ const toBePicking = async () => { ...@@ -2997,9 +3009,23 @@ const toBePicking = async () => {
try { try {
const res = await toBePickingApi(selection.value.map((item) => item.id)) const res = await toBePickingApi(selection.value.map((item) => item.id))
if (res.code !== 200) return if (res.code !== 200) return
resultInfo.value =
(res.data as {
id: string | number
status: boolean
factoryOrderNumber?: string
message: string
}[]) || []
if (
Array.isArray(res.data) &&
(res.data as { status: boolean }[]).some((item) => !item.status)
) {
resultRefs.value?.showDialog()
} else {
search()
loadTabData()
}
ElMessage.success('操作成功') ElMessage.success('操作成功')
search()
loadTabData()
} catch (e) { } catch (e) {
console.error(e) console.error(e)
} finally { } finally {
......
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