Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
F
factory_front
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
1
Merge Requests
1
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
qinjianhui
factory_front
Commits
b67e1eb9
Commit
b67e1eb9
authored
Oct 20, 2025
by
linjinhong
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'release'
parents
03007d8e
9f4bc132
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
10 changed files
with
212 additions
and
73 deletions
+212
-73
src/api/logistics.ts
+1
-1
src/views/logistics/components/LogisticsWaySelect.tsx
+0
-0
src/views/logistics/logisticsMethod.vue
+94
-21
src/views/order/index.vue
+8
-2
src/views/order/orderTracking/index.vue
+16
-1
src/views/order/orderTracking/indexcn.vue
+16
-1
src/views/order/pod/index.vue
+47
-41
src/views/order/podCN/index.vue
+17
-2
src/views/order/podUs/index.vue
+12
-3
tsconfig.json
+1
-1
No files found.
src/api/logistics.ts
View file @
b67e1eb9
...
...
@@ -148,7 +148,7 @@ export function getUniuniList() {
}
// 获取tictok物流承运商
export
function
getTiktokCarrier
()
{
return
axios
.
get
<
never
,
BaseRespData
<
{
name
:
string
;
id
:
number
}[]
>>
(
return
axios
.
get
<
never
,
BaseRespData
<
{
name
:
string
;
id
:
string
,
typeCode
:
string
,
label
:
string
}[]
>>
(
'logisticsWay/getTiktokShippingProvider'
,
)
}
...
...
src/views/logistics/components/LogisticsWaySelect.tsx
View file @
b67e1eb9
This diff is collapsed.
Click to expand it.
src/views/logistics/logisticsMethod.vue
View file @
b67e1eb9
...
...
@@ -42,7 +42,7 @@
v-model=
"editForm"
:config=
"formConfig"
form-item-width=
"100%"
label
W
idth=
"110"
label
-w
idth=
"110"
>
</CustomizeForm>
...
...
@@ -70,6 +70,7 @@
defineOptions
({
name
:
'LogisticsMethod'
,
})
import
LogisticsWaySelect
from
'./components/LogisticsWaySelect.tsx'
import
{
getLogisticsWayList
,
addLogisticsWay
,
...
...
@@ -83,7 +84,7 @@ import {
getUniuniList
,
getTiktokCarrier
,
}
from
'@/api/logistics'
import
type
{
FormItemRule
}
from
'element-plus'
import
{
WarehouseListData
}
from
'@/types/api/podUsOrder'
import
{
ISeachFormConfig
}
from
'@/types/searchType'
import
{
TableColumn
}
from
'@/components/VxeTable'
...
...
@@ -103,6 +104,7 @@ import { showConfirm } from '@/utils/ui'
import
{
Edit
,
Delete
,
List
,
WarningFilled
}
from
'@element-plus/icons-vue'
import
{
debounce
}
from
'lodash-es'
import
UPARCELImage
from
'@/assets/images/UPARCEL物流编码.png'
const
[
searchForm
]
=
useValue
({})
const
[
editForm
,
resetEditForm
]
=
useValue
<
LogisticsMethod
>
({
platformList
:
[
...
...
@@ -140,6 +142,7 @@ const warehouseList = ref<WarehouseListData[]>([])
interface
ImageList
{
[
key
:
string
]:
string
}
const
imgeList
=
ref
<
ImageList
>
({
UPARCEL
:
UPARCELImage
,
})
...
...
@@ -182,6 +185,45 @@ const platformList = ref([])
const
ruleNameList
=
ref
([])
const
uniuniList
=
ref
([])
const
logisticsCompanyList
=
ref
([])
watch
(
()
=>
JSON
.
parse
(
JSON
.
stringify
(
editForm
.
value
.
platformList
)),
(
newValue
,
oldValue
)
=>
{
if
(
oldValue
.
length
&&
newValue
.
length
)
{
// 遍历旧值数组
oldValue
.
forEach
(
(
oldItem
:
{
logisticsName
:
string
;
showPlatform
:
string
[]
},
index
:
number
,
)
=>
{
// 检查旧值项是否符合条件
if
(
Array
.
isArray
(
oldItem
.
showPlatform
)
&&
oldItem
.
showPlatform
.
length
===
1
&&
oldItem
.
showPlatform
[
0
]
===
'TIKTOK'
&&
oldItem
.
logisticsName
)
{
// 获取对应的新值项
const
newItem
=
newValue
[
index
]
// 检查新值项是否不再满足条件
if
(
newItem
&&
(
!
Array
.
isArray
(
newItem
.
showPlatform
)
||
newItem
.
showPlatform
.
length
===
0
||
!
newItem
.
showPlatform
.
includes
(
'TIKTOK'
)
||
newItem
.
showPlatform
.
length
>
1
)
)
{
// 清除 logisticsName
editForm
.
value
.
platformList
[
index
].
logisticsName
=
''
}
}
},
)
}
},
{
deep
:
true
},
)
const
formConfig
=
computed
<
IFormConfig
[]
>
(()
=>
[
{
title
:
'物流基础信息'
},
{
...
...
@@ -370,9 +412,7 @@ const formConfig = computed<IFormConfig[]>(() => [
{
title
:
'平台物流名称'
,
fixed
:
'last'
,
render
:
(
item
,
formData
)
=>
{
console
.
log
(
283
,
item
,
formData
)
render
:
(
_
,
formData
)
=>
{
return
(
formData
?.
platformList
as
platformObj
[])?.
map
(
(
item
:
platformObj
,
index
:
number
)
=>
(
<
div
style
=
"display: flex; width:100%"
>
...
...
@@ -415,21 +455,21 @@ const formConfig = computed<IFormConfig[]>(() => [
required
:
true
,
message
:
'请输入物流名称'
,
trigger
:
'blur'
,
validator
:
(
_
:
FormItemRule
,
value
:
string
,
callback
:
(
error
?:
string
)
=>
void
,
)
=>
{
if
(
value
)
callback
()
},
},
]}
>
<
el
-
select
v
-
model
=
{
item
.
logisticsName
}
placeholder
=
"请选择物流名称"
>
{
tiktokCarriers
.
value
?.
map
((
el
)
=>
(
<
el
-
option
label
=
{
el
.
name
}
value
=
{
el
.
name
}
key
=
{
el
.
id
}
><
/el-option
>
))}{
' '
}
<
/el-select
>
<
LogisticsWaySelect
v
-
model
=
{
item
.
logisticsName
as
string
|
number
}
isRadio
=
{
true
}
companyList
=
{
tiktokCarriers
.
value
as
ICompanyList
[]}
><
/LogisticsWaySelect
>
<
/el-form-item
>
)
:
(
<
el
-
form
-
item
...
...
@@ -466,7 +506,7 @@ const formConfig = computed<IFormConfig[]>(() => [
{
index
>=
1
&&
(
<
el
-
button
style
=
"margin-left: 10px"
type
=
"
primary
"
type
=
"
danger
"
onClick
=
{()
=>
deleteCol
(
index
)}
>
删除
...
...
@@ -534,7 +574,16 @@ const tableConfig = ref<TableColumn[]>([
<
/span
>
<
span
>
<
span
>
{
'物流名称:'
}
<
/span
>
<
span
class
=
"logistics-name"
>
{
el
.
logisticsName
}
<
/span
>
{
el
.
platform
===
'TIKTOK'
?
(
<
span
class
=
"logistics-name"
>
{
tiktokCarriers
.
value
?.
flatMap
((
company
)
=>
company
.
wayList
)
?.
find
((
item
)
=>
el
.
logisticsName
===
item
.
id
)?.
name
||
el
.
logisticsName
}
<
/span
>
)
:
(
<
span
class
=
"logistics-name"
>
{
el
.
logisticsName
}
<
/span
>
)}
<
/span
>
<
/div
>
)),
...
...
@@ -868,13 +917,33 @@ async function getAllList() {
}
}
const
tiktokCarriers
=
ref
<
{
name
:
string
;
id
:
number
}[]
>
([])
interface
ICompanyList
{
warehouseName
:
string
wayList
:
IwayList
[]
}
interface
IwayList
{
name
:
string
id
:
string
}
const
tiktokCarriers
=
ref
<
ICompanyList
[]
>
([])
/**
* @description: 获取tictok物流承运商
*/
async
function
getTiktokCarriers
()
{
const
{
data
}
=
await
getTiktokCarrier
()
tiktokCarriers
.
value
=
data
const
labelTypeList
=
Array
.
from
(
new
Set
(
data
.
map
((
e
)
=>
e
.
label
)))
const
result
:
ICompanyList
[]
=
[]
labelTypeList
.
forEach
((
label
)
=>
{
result
.
push
({
warehouseName
:
label
,
wayList
:
data
.
filter
((
e
)
=>
e
.
label
===
label
),
})
})
tiktokCarriers
.
value
=
result
console
.
log
(
893
,
tiktokCarriers
.
value
)
}
/**
...
...
@@ -885,7 +954,9 @@ interface LogList {
createTime
?:
string
description
?:
string
}
const
logList
=
ref
<
LogList
[]
>
([])
async
function
showLog
(
row
:
LogisticsMethod
)
{
logDialogVisible
.
value
=
true
try
{
...
...
@@ -909,9 +980,11 @@ async function showLog(row: LogisticsMethod) {
margin-bottom
:
10px
;
}
}
.user-operate-btn
{
margin-bottom
:
10px
;
}
.dialog-footer
{
text-align
:
center
;
}
...
...
src/views/order/index.vue
View file @
b67e1eb9
...
...
@@ -4,7 +4,13 @@
<template
#
top
>
<div
class=
"header-filter"
>
<div
class=
"header-filter-form"
>
<ElForm
:model=
"searchForm"
size=
"default"
inline
>
<ElForm
:model=
"searchForm"
size=
"default"
inline
label-position=
"right"
label-width=
"70px"
>
<ElFormItem>
<el-select
v-model=
"searchForm.timeType"
...
...
@@ -139,7 +145,7 @@
<el-select
v-model=
"searchForm.order"
clearable
style=
"width: 1
00px; margin-right:
5px"
style=
"width: 1
2
5px"
placeholder=
"排序类型"
>
<el-option
value=
"asc"
label=
"正序"
></el-option>
...
...
src/views/order/orderTracking/index.vue
View file @
b67e1eb9
...
...
@@ -701,7 +701,14 @@ onMounted(() => {
<split-div
otherSize=
"35"
>
<template
#
top
>
<el-card>
<ElForm
:model=
"searchForm"
size=
"default"
inline
class=
"search-form"
>
<ElForm
:model=
"searchForm"
size=
"default"
inline
class=
"search-form"
label-position=
"right"
label-width=
"90px"
>
<ElFormItem
label=
"仓库"
>
<ElSelect
v-model=
"searchForm.warehouseId"
...
...
@@ -1203,4 +1210,12 @@ onMounted(() => {
}
}
}
.search-form
{
::v-deep
.el-radio-button
{
width
:
75px
;
.el-radio-button__inner
{
width
:
100%
;
}
}
}
</
style
>
src/views/order/orderTracking/indexcn.vue
View file @
b67e1eb9
...
...
@@ -686,7 +686,14 @@ onMounted(() => {
<split-div
otherSize=
"35"
>
<template
#
top
>
<el-card>
<ElForm
:model=
"searchForm"
size=
"default"
inline
class=
"search-form"
>
<ElForm
:model=
"searchForm"
size=
"default"
inline
class=
"search-form"
label-position=
"right"
label-width=
"90px"
>
<ElFormItem
label=
"仓库"
>
<ElSelect
v-model=
"searchForm.warehouseId"
...
...
@@ -1172,4 +1179,12 @@ onMounted(() => {
}
}
}
.search-form
{
::v-deep
.el-radio-button
{
width
:
75px
;
.el-radio-button__inner
{
width
:
100%
;
}
}
}
</
style
>
src/views/order/pod/index.vue
View file @
b67e1eb9
<
template
>
<div
class=
"card flex-column h-100 overflow-hidden"
>
<div
class=
"header-filter-form"
>
<ElForm
:model=
"searchForm"
size=
"default"
inline
>
<ElFormItem>
<el-select
v-model=
"searchForm.timeType"
style=
"width: 100px; margin-right: 5px"
clearable
placeholder=
"时间类型"
>
<el-option
:value=
"1"
label=
"创建时间"
></el-option>
<el-option
:value=
"2"
label=
"确认时间"
></el-option>
<el-option
:value=
"3"
label=
"完成时间"
></el-option>
<!--
<el-option
:value=
"4"
label=
"发货时间"
></el-option>
-->
</el-select>
<el-date-picker
v-model=
"timeRange"
:default-time=
"[
new Date(0, 0, 0, 0, 0, 0),
new Date(0, 0, 0, 23, 59, 59),
]"
placeholder=
"收货人"
value-format=
"YYYY-MM-DD HH:mm:ss"
type=
"datetimerange"
style=
"width: 280px"
:shortcuts=
"pickerOptions.shortcuts"
start-placeholder=
"开始时间"
end-placeholder=
"结束时间"
clearable
>
</el-date-picker>
</ElFormItem>
<ElForm
:model=
"searchForm"
size=
"default"
inline
label-position=
"right"
label-width=
"70px"
>
<ElFormItem
label=
"客户"
>
<el-select
v-model=
"searchForm.userMark"
clearable
filterable
style=
"width: 1
0
0px"
style=
"width: 1
5
0px"
placeholder=
"客户"
>
<el-option
...
...
@@ -77,7 +54,7 @@
v-model
.
trim=
"searchForm.sku"
placeholder=
" SKU"
clearable
style=
"width: 1
3
0px"
style=
"width: 1
5
0px"
></ElInput>
</ElFormItem>
<!--
<ElFormItem
label=
"发货单号"
>
...
...
@@ -85,7 +62,7 @@
v-model=
"searchForm.shipmentNumber"
placeholder=
"发货单号"
clearable
style=
"width: 1
3
0px"
style=
"width: 1
5
0px"
/>
</ElFormItem>
-->
<ElFormItem
label=
"生产单号"
>
...
...
@@ -93,7 +70,7 @@
v-model=
"searchForm.factorySubOrderNumber"
placeholder=
"定制生产单号"
clearable
style=
"width: 1
3
0px"
style=
"width: 1
5
0px"
/>
</ElFormItem>
<ElFormItem
label=
"订单号"
>
...
...
@@ -101,7 +78,7 @@
v-model=
"searchForm.factoryOrderNumber"
placeholder=
"定制订单号"
clearable
style=
"width: 1
3
0px"
style=
"width: 1
5
0px"
/>
</ElFormItem>
<ElFormItem
label=
"店铺单号"
>
...
...
@@ -109,7 +86,7 @@
v-model=
"searchForm.shopNumber"
placeholder=
"店铺单号"
clearable
style=
"width: 1
3
0px"
style=
"width: 1
5
0px"
/>
</ElFormItem>
<ElFormItem
label=
"素材ID"
>
...
...
@@ -117,7 +94,7 @@
v-model
.
trim=
"searchForm.productionFileId"
placeholder=
"素材ID"
clearable
style=
"width: 1
3
0px"
style=
"width: 1
5
0px"
></ElInput>
</ElFormItem>
<ElFormItem
label=
"内部标签"
>
...
...
@@ -125,14 +102,14 @@
v-model
.
trim=
"searchForm.internalMemo"
placeholder=
"内部标签"
clearable
style=
"width: 1
0
0px"
style=
"width: 1
5
0px"
></ElInput>
</ElFormItem>
<ElFormItem
label=
"排序"
>
<el-select
v-model=
"searchForm.order"
clearable
style=
"width:
8
0px"
style=
"width:
15
0px"
placeholder=
"排序类型"
>
<el-option
value=
"asc"
label=
"正序"
></el-option>
...
...
@@ -143,7 +120,7 @@
<el-select
v-model=
"searchForm.customizedQuantity"
clearable
style=
"width: 1
0
0px"
style=
"width: 1
5
0px"
placeholder=
"定制类型"
>
<el-option
value=
"single"
label=
"单面"
></el-option>
...
...
@@ -156,7 +133,7 @@
clearable
filterable
placeholder=
"尺码类型"
style=
"width: 1
0
0px"
style=
"width: 1
5
0px"
>
<el-option
v-for=
"item in sizeList"
...
...
@@ -167,6 +144,35 @@
</ElSelect>
</ElFormItem>
<ElFormItem>
<el-select
v-model=
"searchForm.timeType"
style=
"width: 100px; margin-right: 5px"
clearable
placeholder=
"时间类型"
>
<el-option
:value=
"1"
label=
"创建时间"
></el-option>
<el-option
:value=
"2"
label=
"确认时间"
></el-option>
<el-option
:value=
"3"
label=
"完成时间"
></el-option>
<!--
<el-option
:value=
"4"
label=
"发货时间"
></el-option>
-->
</el-select>
<el-date-picker
v-model=
"timeRange"
:default-time=
"[
new Date(0, 0, 0, 0, 0, 0),
new Date(0, 0, 0, 23, 59, 59),
]"
placeholder=
"收货人"
value-format=
"YYYY-MM-DD HH:mm:ss"
type=
"datetimerange"
style=
"width: 280px"
:shortcuts=
"pickerOptions.shortcuts"
start-placeholder=
"开始时间"
end-placeholder=
"结束时间"
clearable
>
</el-date-picker>
</ElFormItem>
<ElFormItem>
<ElButton
type=
"primary"
@
click=
"loadDiffList"
>
查询
</ElButton>
</ElFormItem>
<ElFormItem
v-if=
"status === 'TO_BE_CONFIRMED'"
>
...
...
src/views/order/podCN/index.vue
View file @
b67e1eb9
<
template
>
<div
class=
"card flex-column h-100 overflow-hidden"
>
<div
class=
"header-filter-form"
>
<ElForm
:model=
"searchForm"
size=
"default"
inline
>
<ElForm
class=
"search-form"
:model=
"searchForm"
size=
"default"
inline
label-position=
"right"
label-width=
"70px"
>
<ElFormItem
label=
"仓库"
>
<ElSelect
v-model=
"searchForm.warehouseId"
...
...
@@ -120,7 +127,7 @@
<el-select
v-model=
"searchForm.order"
clearable
style=
"width: 1
0
0px"
style=
"width: 1
5
0px"
placeholder=
"排序类型"
>
<el-option
value=
"asc"
label=
"正序"
></el-option>
...
...
@@ -5587,6 +5594,14 @@ useRouter().beforeEach((to, from, next) => {
color
:
white
;
font
-
weight
:
bold
;
}
.
search
-
form
{
::
v
-
deep
.
el
-
radio
-
button
{
width
:
75
px
;
.
el
-
radio
-
button__inner
{
width
:
100
%
;
}
}
}
<
/style
>
<
style
lang
=
"scss"
>
.
customize
-
select
-
style
{
...
...
src/views/order/podUs/index.vue
View file @
b67e1eb9
<
template
>
<div
class=
"card flex-column h-100 overflow-hidden"
>
<div
class=
"header-filter-form"
>
<ElForm
label-position=
"lef
t"
label-width=
"70px"
:model=
"searchForm"
size=
"default"
inline
>
<ElForm
class=
"search-form"
label-position=
"righ
t"
label-width=
"70px"
:model=
"searchForm"
size=
"default"
inline
>
<!--
<div>
-->
<ElFormItem
label=
"仓库"
>
<ElSelect
...
...
@@ -126,8 +126,8 @@
v-model=
"searchForm.customizedQuantity"
@
click
.
stop=
"(e: Event) => handleRadioGroupClick(e)"
>
<el-radio-button
label=
"single"
>
单面
</el-radio-button>
<el-radio-button
label=
"multiple"
>
多面
</el-radio-button>
<el-radio-button
label=
"single"
>
单面
</el-radio-button>
<el-radio-button
label=
"multiple"
>
多面
</el-radio-button>
</el-radio-group>
</ElFormItem>
<ElFormItem
label=
"数量"
>
...
...
@@ -6525,6 +6525,15 @@ useRouter().beforeEach((to, from, next) => {
color
:
white
;
font
-
weight
:
bold
;
}
.
search
-
form
{
::
v
-
deep
.
el
-
radio
-
button
{
width
:
75
px
;
.
el
-
radio
-
button__inner
{
width
:
100
%
;
}
}
}
<
/style
>
<
style
lang
=
"scss"
>
.
customize
-
select
-
style
{
...
...
tsconfig.json
View file @
b67e1eb9
...
...
@@ -6,7 +6,7 @@
"module"
:
"ESNext"
,
"lib"
:
[
"ES2020"
,
"DOM"
,
"DOM.Iterable"
],
"skipLibCheck"
:
true
,
"types"
:[],
/*
Bundler
mode
*/
"moduleResolution"
:
"bundler"
,
"allowImportingTsExtensions"
:
true
,
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment