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
7f7897ef
Commit
7f7897ef
authored
Jun 12, 2025
by
qinjianhui
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
fix: 鼠标右键事件修改
parent
54cf2234
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
150 additions
and
224 deletions
+150
-224
components.d.ts
+1
-0
src/components/RightClickMenu.vue
+48
-38
src/components/TableView.vue
+5
-17
src/views/order/index.vue
+12
-11
src/views/order/pod/index.vue
+51
-21
src/views/order/pod/rightMenu.vue
+0
-110
src/views/order/podUs/index.vue
+33
-27
No files found.
components.d.ts
View file @
7f7897ef
...
@@ -57,6 +57,7 @@ declare module 'vue' {
...
@@ -57,6 +57,7 @@ declare module 'vue' {
LogList
:
typeof
import
(
'./src/components/LogList.vue'
)[
'default'
]
LogList
:
typeof
import
(
'./src/components/LogList.vue'
)[
'default'
]
NavMenu
:
typeof
import
(
'./src/components/NavMenu.vue'
)[
'default'
]
NavMenu
:
typeof
import
(
'./src/components/NavMenu.vue'
)[
'default'
]
RenderColumn
:
typeof
import
(
'./src/components/RenderColumn.vue'
)[
'default'
]
RenderColumn
:
typeof
import
(
'./src/components/RenderColumn.vue'
)[
'default'
]
RightClickMenu
:
typeof
import
(
'./src/components/RightClickMenu.vue'
)[
'default'
]
RouterLink
:
typeof
import
(
'vue-router'
)[
'RouterLink'
]
RouterLink
:
typeof
import
(
'vue-router'
)[
'RouterLink'
]
RouterView
:
typeof
import
(
'vue-router'
)[
'RouterView'
]
RouterView
:
typeof
import
(
'vue-router'
)[
'RouterView'
]
Select
:
typeof
import
(
'./src/components/Form.vue/Select.vue'
)[
'default'
]
Select
:
typeof
import
(
'./src/components/Form.vue/Select.vue'
)[
'default'
]
...
...
src/components/
Table
RightClickMenu.vue
→
src/components/RightClickMenu.vue
View file @
7f7897ef
...
@@ -4,48 +4,54 @@
...
@@ -4,48 +4,54 @@
class=
"right-click-menu"
class=
"right-click-menu"
:style=
"
{ left: position.x + 'px', top: position.y + 'px' }"
:style=
"
{ left: position.x + 'px', top: position.y + 'px' }"
>
>
<div
class=
"menu-item"
@
click=
"handleSelectAll"
>
全选
</div>
<div
class=
"menu-item"
@
click=
"onChangeCopy('select-all')"
>
全部选择
</div>
<div
class=
"menu-item"
@
click=
"handleUnselectAll"
>
取消全选
</div>
<div
class=
"menu-item"
@
click=
"onChangeCopy('cancel-select')"
>
取消选择
</div>
<div
class=
"menu-item"
@
click=
"onChangeCopy('shop-numbers')"
>
<div
v-if=
"showCopySubShopNumber"
class=
"menu-item"
@
click=
"onChangeCopy('copy_code')"
>
复制生产单号
</div>
<div
v-if=
"showCopyShopNumber"
class=
"menu-item"
@
click=
"onChangeCopy('copy_shopNumber')"
>
复制店铺单号
复制店铺单号
</div>
</div>
<div
v-if=
"showCopyCount"
class=
"menu-item"
@
click=
"onChangeCopy('count')"
>
统计数量
</div>
<slot></slot>
</div>
</div>
</
template
>
</
template
>
<
script
setup
lang=
"ts"
>
<
script
setup
lang=
"ts"
>
import
{
ref
,
defineExpose
,
onMounted
,
onUnmounted
}
from
'vue'
import
{
ref
,
defineExpose
,
onMounted
,
onUnmounted
}
from
'vue'
import
type
{
TableInstance
}
from
'element-plus'
const
visible
=
ref
(
false
)
const
visible
=
ref
(
false
)
const
position
=
ref
({
x
:
0
,
y
:
0
})
const
position
=
ref
({
x
:
0
,
y
:
0
})
const
tableRef
=
ref
<
TableInstance
>
()
const
emit
=
defineEmits
([
'onChange'
])
const
emit
=
defineEmits
([
'onChange'
])
const
setPosition
=
({
x
,
y
,
el
,
}:
{
x
:
number
y
:
number
el
:
TableInstance
})
=>
{
position
.
value
=
{
x
,
y
}
visible
.
value
=
true
tableRef
.
value
=
el
}
const
handleSelectAll
=
()
=>
{
defineProps
({
if
(
tableRef
.
value
)
{
showCopyShopNumber
:
{
tableRef
.
value
.
toggleAllSelection
()
type
:
Boolean
,
}
default
:
true
,
visible
.
value
=
false
},
}
showCopyCount
:
{
type
:
Boolean
,
default
:
true
,
},
showCopySubShopNumber
:
{
type
:
Boolean
,
default
:
true
,
},
})
const
handleUnselectAll
=
()
=>
{
const
setPosition
=
({
x
,
y
}:
{
x
:
number
;
y
:
number
})
=>
{
if
(
tableRef
.
value
)
{
position
.
value
=
{
x
,
y
}
tableRef
.
value
.
clearSelection
()
visible
.
value
=
true
}
visible
.
value
=
false
}
}
const
onChangeCopy
=
(
value
:
string
)
=>
{
const
onChangeCopy
=
(
value
:
string
)
=>
{
...
@@ -74,7 +80,7 @@ defineExpose({
...
@@ -74,7 +80,7 @@ defineExpose({
})
})
</
script
>
</
script
>
<
style
scoped
>
<
style
scoped
lang=
"scss"
>
.right-click-menu
{
.right-click-menu
{
position
:
fixed
;
position
:
fixed
;
background
:
white
;
background
:
white
;
...
@@ -84,15 +90,19 @@ defineExpose({
...
@@ -84,15 +90,19 @@ defineExpose({
z-index
:
3000
;
z-index
:
3000
;
}
}
.menu-item
{
.right-click-menu
{
padding
:
8px
16px
;
:deep(.menu-item)
{
cursor
:
pointer
;
padding
:
8px
16px
;
font-size
:
14px
;
cursor
:
pointer
;
color
:
#606266
;
font-size
:
14px
;
color
:
#606266
;
}
}
}
.menu-item
:hover
{
.right-click-menu
{
background-color
:
#f5f7fa
;
:deep(.menu-item):hover
{
color
:
#409eff
;
background-color
:
#f5f7fa
;
color
:
#409eff
;
}
}
}
</
style
>
</
style
>
src/components/TableView.vue
View file @
7f7897ef
...
@@ -8,7 +8,6 @@
...
@@ -8,7 +8,6 @@
v-bind=
"attrs"
v-bind=
"attrs"
header-align=
"center"
header-align=
"center"
height=
"100%"
height=
"100%"
@
contextmenu
.
prevent=
"handleContextMenu"
>
>
<ElTableColumn
<ElTableColumn
v-if=
"selectionable"
v-if=
"selectionable"
...
@@ -58,19 +57,16 @@
...
@@ -58,19 +57,16 @@
</RenderColumn>
</RenderColumn>
</template>
</template>
</ElTable>
</ElTable>
<RightClickMenu
ref=
"rightMenuRef"
@
on-change=
"onChange"
/>
</div>
</div>
</template>
</template>
<
script
setup
lang=
"tsx"
generic=
"T"
>
<
script
setup
lang=
"tsx"
generic=
"T"
>
import
{
type
Slot
,
useAttrs
,
useSlots
,
type
PropType
,
shallowRef
}
from
'vue'
import
{
type
Slot
,
useAttrs
,
useSlots
,
type
PropType
,
shallowRef
}
from
'vue'
import
type
{
CustomColumn
}
from
'@/types/table'
import
type
{
CustomColumn
}
from
'@/types/table'
import
RenderColumn
from
'./RenderColumn.vue'
import
RenderColumn
from
'./RenderColumn.vue'
import
RightClickMenu
from
'./TableRightClickMenu.vue'
import
{
ElTable
}
from
'element-plus'
import
{
ElTable
}
from
'element-plus'
import
type
{
TableInstance
}
from
'element-plus'
import
type
{
TableInstance
}
from
'element-plus'
const
tableRef
=
shallowRef
<
TableInstance
>
()
const
tableRef
=
shallowRef
<
TableInstance
>
()
const
rightMenuRef
=
shallowRef
<
InstanceType
<
typeof
RightClickMenu
>>
()
// eslint-disable-next-line @typescript-eslint/no-explicit-any
// eslint-disable-next-line @typescript-eslint/no-explicit-any
defineProps
({
defineProps
({
...
@@ -98,19 +94,7 @@ defineProps({
...
@@ -98,19 +94,7 @@ defineProps({
const
attrs
=
useAttrs
()
const
attrs
=
useAttrs
()
const
slots
=
useSlots
()
as
Record
<
string
,
Slot
>
const
slots
=
useSlots
()
as
Record
<
string
,
Slot
>
const
emit
=
defineEmits
([
'onChange'
])
const
handleContextMenu
=
(
e
:
MouseEvent
)
=>
{
if
(
rightMenuRef
.
value
&&
tableRef
.
value
)
{
rightMenuRef
.
value
.
setPosition
({
x
:
e
.
clientX
,
y
:
e
.
clientY
,
el
:
tableRef
.
value
,
})
}
}
const
onChange
=
(
type
:
string
)
=>
{
emit
(
'onChange'
,
type
)
}
const
setCurrentRow
=
(
row
:
T
)
=>
{
const
setCurrentRow
=
(
row
:
T
)
=>
{
tableRef
.
value
?.
setCurrentRow
(
row
)
tableRef
.
value
?.
setCurrentRow
(
row
)
}
}
...
@@ -122,12 +106,16 @@ const toggleRowSelection = (row: T, selected: boolean = true) => {
...
@@ -122,12 +106,16 @@ const toggleRowSelection = (row: T, selected: boolean = true) => {
const
clearSelection
=
()
=>
{
const
clearSelection
=
()
=>
{
tableRef
.
value
?.
clearSelection
()
tableRef
.
value
?.
clearSelection
()
}
}
const
toggleAllSelection
=
()
=>
{
tableRef
.
value
?.
toggleAllSelection
()
}
defineExpose
({
defineExpose
({
tableRef
,
tableRef
,
setCurrentRow
,
setCurrentRow
,
toggleRowSelection
,
toggleRowSelection
,
clearSelection
,
clearSelection
,
toggleAllSelection
,
})
})
</
script
>
</
script
>
...
...
src/views/order/index.vue
View file @
7f7897ef
...
@@ -976,11 +976,12 @@
...
@@ -976,11 +976,12 @@
>
>
<
OrderDetail
:
order
-
detail
-
data
=
"orderDetailData"
/>
<
OrderDetail
:
order
-
detail
-
data
=
"orderDetailData"
/>
<
/ElDrawer
>
<
/ElDrawer
>
<
RightMenu
<
Right
Click
Menu
ref
=
"rightMenuRef"
ref
=
"rightMenuRef"
:
show
-
copy
-
count
=
"false"
:
show
-
copy
-
shop
-
number
=
"true"
:
show
-
copy
-
sub
-
shop
-
number
=
"statusCode !== 6"
:
show
-
copy
-
count
=
"true"
@
change
=
"onChange"
:
show
-
copy
-
sub
-
shop
-
number
=
"true"
@
on
-
change
=
"rightChange"
/>
/>
<
/template
>
<
/template
>
<
script
setup
lang
=
"ts"
>
<
script
setup
lang
=
"ts"
>
...
@@ -1037,7 +1038,7 @@ import OrderDetail from './OrderDetail.vue'
...
@@ -1037,7 +1038,7 @@ import OrderDetail from './OrderDetail.vue'
import
useShipment
from
'./hook/useShipment'
import
useShipment
from
'./hook/useShipment'
import
useQuarantine
from
'./hook/useQuarantine'
import
useQuarantine
from
'./hook/useQuarantine'
import
Quarantine
from
'./Quarantine.vue'
import
Quarantine
from
'./Quarantine.vue'
import
Right
Menu
from
'./pod/right
Menu.vue'
import
Right
ClickMenu
from
'@/components/RightClick
Menu.vue'
const
[
searchForm
]
=
useValue
<
SearchForm
>
({
const
[
searchForm
]
=
useValue
<
SearchForm
>
({
mainSku
:
''
,
mainSku
:
''
,
...
@@ -1670,14 +1671,14 @@ const handleContextMenu = (e: MouseEvent) => {
...
@@ -1670,14 +1671,14 @@ const handleContextMenu = (e: MouseEvent) => {
}
}
const
tableQaRef
=
ref
()
const
tableQaRef
=
ref
()
const
tableRef
=
ref
()
const
tableRef
=
ref
()
const
on
Change
=
(
key
:
string
)
=>
{
const
right
Change
=
(
key
:
string
)
=>
{
if
(
key
===
'
check_
all'
)
{
if
(
key
===
'
select-
all'
)
{
if
(
statusCode
.
value
===
6
)
{
if
(
statusCode
.
value
===
6
)
{
tableQaRef
.
value
?.
toggleAllSelection
()
tableQaRef
.
value
?.
toggleAllSelection
()
}
else
{
}
else
{
tableRef
.
value
?.
toggleAllSelection
()
tableRef
.
value
?.
toggleAllSelection
()
}
}
}
else
if
(
key
===
'c
lear_check
'
)
{
}
else
if
(
key
===
'c
ancel-select
'
)
{
if
(
statusCode
.
value
===
6
)
{
if
(
statusCode
.
value
===
6
)
{
tableQaRef
.
value
?.
clearSelection
()
tableQaRef
.
value
?.
clearSelection
()
}
else
{
}
else
{
...
@@ -1685,7 +1686,7 @@ const onChange = (key: string) => {
...
@@ -1685,7 +1686,7 @@ const onChange = (key: string) => {
}
}
}
else
if
(
key
===
'copy_code'
)
{
}
else
if
(
key
===
'copy_code'
)
{
const
shopNumberList
:
string
[]
=
[]
const
shopNumberList
:
string
[]
=
[]
for
(
const
item
of
selection
.
value
)
{
for
(
const
item
of
tableData
.
value
)
{
item
.
productList
?.
forEach
((
el
)
=>
{
item
.
productList
?.
forEach
((
el
)
=>
{
if
(
el
.
shopNumber
)
{
if
(
el
.
shopNumber
)
{
shopNumberList
.
push
(
el
.
shopNumber
)
shopNumberList
.
push
(
el
.
shopNumber
)
...
@@ -1696,7 +1697,7 @@ const onChange = (key: string) => {
...
@@ -1696,7 +1697,7 @@ const onChange = (key: string) => {
}
else
if
(
key
===
'copy_shopNumber'
)
{
}
else
if
(
key
===
'copy_shopNumber'
)
{
const
subOrderNumber
:
string
[]
=
[]
const
subOrderNumber
:
string
[]
=
[]
if
(
statusCode
.
value
===
6
)
{
if
(
statusCode
.
value
===
6
)
{
for
(
const
item
of
selection
.
value
)
{
for
(
const
item
of
tableData
.
value
)
{
item
.
detailList
?.
forEach
((
el
)
=>
{
item
.
detailList
?.
forEach
((
el
)
=>
{
if
(
el
.
shopNumber
)
{
if
(
el
.
shopNumber
)
{
subOrderNumber
.
push
(
el
.
shopNumber
||
''
)
subOrderNumber
.
push
(
el
.
shopNumber
||
''
)
...
@@ -1704,7 +1705,7 @@ const onChange = (key: string) => {
...
@@ -1704,7 +1705,7 @@ const onChange = (key: string) => {
}
)
}
)
}
}
}
else
{
}
else
{
for
(
const
item
of
selection
.
value
)
{
for
(
const
item
of
tableData
.
value
)
{
item
.
productList
?.
forEach
((
el
)
=>
{
item
.
productList
?.
forEach
((
el
)
=>
{
if
(
el
.
subOrderNumber
)
{
if
(
el
.
subOrderNumber
)
{
subOrderNumber
.
push
(
el
.
subOrderNumber
)
subOrderNumber
.
push
(
el
.
subOrderNumber
)
...
...
src/views/order/pod/index.vue
View file @
7f7897ef
...
@@ -590,8 +590,10 @@
...
@@ -590,8 +590,10 @@
v
-
loading
=
"loading"
v
-
loading
=
"loading"
element
-
loading
-
text
=
"加载中..."
element
-
loading
-
text
=
"加载中..."
class
=
"order-list flex-1 overflow-hidden"
class
=
"order-list flex-1 overflow-hidden"
@
contextmenu
.
prevent
=
"(v) => rightClick(v, null)"
>
>
<
TableView
<
TableView
ref
=
"tableRef"
:
paginated
-
data
=
"tableData"
:
paginated
-
data
=
"tableData"
:
columns
=
"tableColumns"
:
columns
=
"tableColumns"
:
selectionable
=
"true"
:
selectionable
=
"true"
...
@@ -973,15 +975,20 @@
...
@@ -973,15 +975,20 @@
基版
<
b
>
{{
cardItem
?.
baseSku
}}
<
/b> 的统计数量为:<b> {{ count
}}
</
b
>
基版
<
b
>
{{
cardItem
?.
baseSku
}}
<
/b> 的统计数量为:<b> {{ count
}}
</
b
>
<
/p
>
<
/p
>
<
/el-dialog
>
<
/el-dialog
>
<
right
-
m
enu
<
RightClickM
enu
ref
=
"rightMenuRef"
ref
=
"rightMenuRef"
:
show
-
copy
-
shop
-
number
=
"
:
show
-
copy
-
shop
-
number
=
"true"
['IN_PRODUCTION', 'TO_BE_CONFIRMED', 'WAIT_SHIPMENT'].includes(status)
"
:
show
-
copy
-
count
=
"
:
show
-
copy
-
count
=
"
['IN_PRODUCTION', 'TO_BE_CONFIRMED', 'WAIT_SHIPMENT'].includes(status)
[
'IN_PRODUCTION',
'TO_BE_CONFIRMED',
'WAIT_SHIPMENT',
'TO_BE_REPLENISHMENT',
'INVALID',
].includes(status)
"
"
@
change
=
"rightChange"
:
show
-
copy
-
sub
-
shop
-
number
=
"true"
@
on
-
change
=
"rightChange"
/>
/>
<
fastProduction
<
fastProduction
v
-
model
:
detailVisible
=
"detailVisible"
v
-
model
:
detailVisible
=
"detailVisible"
...
@@ -1058,7 +1065,6 @@
...
@@ -1058,7 +1065,6 @@
<
/template
>
<
/template
>
<
script
setup
lang
=
"tsx"
>
<
script
setup
lang
=
"tsx"
>
// refreshJMProductInfo,reasonInvalidationApi,
// refreshJMProductInfo,reasonInvalidationApi,
import
RightMenu
from
'./rightMenu.vue'
import
{
import
{
getOrderTabData
,
getOrderTabData
,
getOrderList
,
getOrderList
,
...
@@ -1120,6 +1126,7 @@ import { filePath } from '@/api/axios'
...
@@ -1120,6 +1126,7 @@ import { filePath } from '@/api/axios'
import
{
CustomColumn
}
from
'@/types/table'
import
{
CustomColumn
}
from
'@/types/table'
import
LogList
from
'@/components/LogList.vue'
import
LogList
from
'@/components/LogList.vue'
import
CommonCard
from
'@/components/CommonCard.vue'
import
CommonCard
from
'@/components/CommonCard.vue'
import
RightClickMenu
from
'@/components/RightClickMenu.vue'
const
tableRef
=
ref
()
const
tableRef
=
ref
()
const
loading
=
ref
(
false
)
const
loading
=
ref
(
false
)
const
currentPage
=
ref
(
1
)
const
currentPage
=
ref
(
1
)
...
@@ -1154,13 +1161,14 @@ const completeShipmentForm = ref({
...
@@ -1154,13 +1161,14 @@ const completeShipmentForm = ref({
logisticsTracking
:
''
,
// 物流跟踪号
logisticsTracking
:
''
,
// 物流跟踪号
carriageAmount
:
''
,
// 物流费用
carriageAmount
:
''
,
// 物流费用
}
)
}
)
const
rightClick
=
(
e
:
MouseEvent
,
item
:
PodProductList
|
CardOrderData
)
=>
{
const
rightClick
=
(
cardItem
.
value
=
item
e
:
MouseEvent
,
item
:
PodProductList
|
CardOrderData
|
null
,
)
=>
{
cardItem
.
value
=
item
||
undefined
rightMenuRef
.
value
.
setPosition
({
rightMenuRef
.
value
.
setPosition
({
x
:
e
.
clientX
,
x
:
e
.
clientX
,
y
:
e
.
clientY
,
y
:
e
.
clientY
,
cardItem
:
e
.
clientY
,
el
:
e
,
}
)
}
)
}
}
const
handleSizeChange
=
(
size
:
number
)
=>
{
const
handleSizeChange
=
(
size
:
number
)
=>
{
...
@@ -1172,10 +1180,14 @@ const handleCurrentChange = (page: number) => {
...
@@ -1172,10 +1180,14 @@ const handleCurrentChange = (page: number) => {
loadDiffList
()
loadDiffList
()
}
}
const
rightChange
=
async
(
code
:
string
)
=>
{
const
rightChange
=
async
(
code
:
string
)
=>
{
const
flag
=
[
'IN_PRODUCTION'
,
'TO_BE_CONFIRMED'
,
'WAIT_SHIPMENT'
].
includes
(
const
flag
=
[
status
.
value
,
'IN_PRODUCTION'
,
)
'TO_BE_CONFIRMED'
,
if
(
code
===
'check_all'
)
{
'WAIT_SHIPMENT'
,
'TO_BE_REPLENISHMENT'
,
'INVALID'
,
].
includes
(
status
.
value
)
if
(
code
===
'select-all'
)
{
if
(
flag
)
{
if
(
flag
)
{
selection
.
value
=
JSON
.
parse
(
JSON
.
stringify
(
CardOrderList
.
value
))
selection
.
value
=
JSON
.
parse
(
JSON
.
stringify
(
CardOrderList
.
value
))
}
else
{
}
else
{
...
@@ -1184,17 +1196,35 @@ const rightChange = async (code: string) => {
...
@@ -1184,17 +1196,35 @@ const rightChange = async (code: string) => {
}
}
// selection.value = JSON.parse(JSON.stringify(tableData.value))
// selection.value = JSON.parse(JSON.stringify(tableData.value))
}
}
}
else
if
(
code
===
'c
lear_check
'
)
{
}
else
if
(
code
===
'c
ancel-select
'
)
{
selection
.
value
=
[]
selection
.
value
=
[]
tableRef
.
value
?.
tableRef
.
toggleAllSelection
()
tableRef
.
value
?.
tableRef
.
toggleAllSelection
()
}
else
if
(
code
===
'copy_code'
)
{
}
else
if
(
code
===
'copy_code'
)
{
const
str
=
selection
.
value
let
str
.
map
((
item
)
=>
item
.
factorySubOrderNumber
||
item
.
factoryOrderNumber
)
if
(
flag
)
{
.
join
()
str
=
CardOrderList
.
value
.
map
((
item
)
=>
item
.
factorySubOrderNumber
).
join
()
navigator
.
clipboard
.
writeText
(
str
)
}
else
{
str
=
tableData
.
value
.
map
((
item
)
=>
item
.
productList
)
.
flat
()
.
map
((
item
)
=>
item
?.
factorySubOrderNumber
)
.
filter
((
item
)
=>
item
)
.
join
()
}
navigator
.
clipboard
.
writeText
(
str
||
''
)
ElMessage
.
success
(
'复制成功'
)
ElMessage
.
success
(
'复制成功'
)
}
else
if
(
code
===
'copy_shopNumber'
)
{
}
else
if
(
code
===
'copy_shopNumber'
)
{
const
str
=
selection
.
value
.
map
((
item
)
=>
item
.
shopNumber
).
join
()
let
str
if
(
flag
)
{
str
=
CardOrderList
.
value
.
map
((
item
)
=>
item
.
shopNumber
).
join
()
}
else
{
str
=
tableData
.
value
.
map
((
item
)
=>
item
.
productList
)
.
flat
()
.
map
((
item
)
=>
item
?.
shopNumber
)
.
filter
((
item
)
=>
item
)
.
join
()
}
navigator
.
clipboard
.
writeText
(
str
)
navigator
.
clipboard
.
writeText
(
str
)
ElMessage
.
success
(
'复制成功'
)
ElMessage
.
success
(
'复制成功'
)
}
else
if
(
code
===
'count'
)
{
}
else
if
(
code
===
'count'
)
{
...
...
src/views/order/pod/rightMenu.vue
deleted
100644 → 0
View file @
54cf2234
<
template
>
<!--
<div
class=
"wrap"
@
click=
"close"
>
-->
<div
v-if=
"show"
ref=
"right_menu"
class=
"right_menu"
>
<button
@
click=
"$emit('change', 'check_all')"
>
全部选择
</button>
<button
@
click=
"$emit('change', 'clear_check')"
>
取消选择
</button>
<button
v-if=
"showCopySubShopNumber"
@
click=
"$emit('change', 'copy_code')"
>
复制选中生产单号
</button>
<button
v-if=
"showCopyShopNumber"
@
click=
"$emit('change', 'copy_shopNumber')"
>
复制选中店铺单号
</button>
<button
v-if=
"showCopyCount"
@
click=
"$emit('change', 'count')"
>
统计数量
</button>
</div>
<!--
</div>
-->
</
template
>
<
script
setup
lang=
"ts"
>
import
{
ref
,
defineProps
,
defineExpose
}
from
'vue'
interface
E
{
x
:
number
el
:
HTMLElement
y
:
number
}
defineProps
({
showCopyShopNumber
:
{
type
:
Boolean
,
default
:
true
,
},
showCopyCount
:
{
type
:
Boolean
,
default
:
true
,
},
showCopySubShopNumber
:
{
type
:
Boolean
,
default
:
true
,
},
})
const
row
=
ref
()
const
show
=
ref
(
false
)
const
right_menu
=
ref
<
HTMLElement
>
()
const
close
=
()
=>
{
show
.
value
=
false
document
.
body
.
onclick
=
null
}
const
setPosition
=
(
o
:
E
)
=>
{
console
.
log
(
o
)
show
.
value
=
true
const
clientX
=
o
.
x
const
x
=
document
.
body
.
clientWidth
-
clientX
document
.
body
.
onclick
=
function
()
{
close
()
}
row
.
value
=
setTimeout
(()
=>
{
if
(
!
right_menu
.
value
)
return
if
(
x
<
150
)
{
right_menu
.
value
.
style
.
cssText
=
`top:
${
o
.
y
}
px;right:
${
x
}
px`
}
else
{
right_menu
.
value
.
style
.
cssText
=
`top:
${
o
.
y
}
px;left:
${
o
.
x
}
px`
}
},
1
)
}
defineExpose
({
setPosition
,
})
</
script
>
<
style
scoped
>
.wrap
{
position
:
fixed
;
top
:
0
;
right
:
0
;
bottom
:
0
;
left
:
0
;
}
.right_menu
{
position
:
fixed
;
max-width
:
200px
;
min-height
:
50px
;
background
:
#fff
;
box-shadow
:
1px
1px
10px
1px
rgba
(
0
,
0
,
0
,
0.5
);
border-radius
:
5px
;
overflow
:
hidden
;
z-index
:
999
;
/* left: -500px; */
top
:
-500px
;
}
.right_menu
button
{
display
:
block
;
line-height
:
30px
;
font-size
:
14px
;
padding
:
0
15px
;
text-align
:
left
;
width
:
100%
;
cursor
:
pointer
;
}
.right_menu
button
:hover
{
background
:
rgb
(
65
,
192
,
251
);
color
:
white
;
}
button
{
outline
:
none
;
border
:
none
;
}
</
style
>
src/views/order/podUs/index.vue
View file @
7f7897ef
...
@@ -354,6 +354,7 @@
...
@@ -354,6 +354,7 @@
v-loading=
"loading"
v-loading=
"loading"
element-loading-text=
"加载中..."
element-loading-text=
"加载中..."
class=
"table-wrapper flex-1 flex-column overflow-hidden"
class=
"table-wrapper flex-1 flex-column overflow-hidden"
@
contextmenu
.
prevent=
"(v) => rightClick(v)"
>
>
<TableView
<TableView
ref=
"tableRef"
ref=
"tableRef"
...
@@ -364,7 +365,6 @@
...
@@ -364,7 +365,6 @@
:paginated-data=
"tableData"
:paginated-data=
"tableData"
:cell-style=
"onCellStyle"
:cell-style=
"onCellStyle"
@
selection-change=
"handleSelectionChange"
@
selection-change=
"handleSelectionChange"
@
on-change=
"onChange"
>
>
<
template
#
goods=
"{ row }"
>
<
template
#
goods=
"{ row }"
>
<div
class=
"goods-info-box"
>
<div
class=
"goods-info-box"
>
...
@@ -907,11 +907,18 @@
...
@@ -907,11 +907,18 @@
><
/ElPagination
>
><
/ElPagination
>
<
/div
>
<
/div
>
<
/div
>
<
/div
>
<
right
-
m
enu
<
RightClickM
enu
ref
=
"rightMenuRef"
ref
=
"rightMenuRef"
:
show
-
copy
-
count
=
"false"
:
show
-
copy
-
count
=
"false"
@
change
=
"rightChange"
:
show
-
copy
-
sub
-
shop
-
number
=
"false"
/>
@
on
-
change
=
"rightChange"
>
<
template
#
default
><
div
class
=
"menu-item"
@
click
=
"rightChange('order-number')"
>
复制订单号
<
/div
>
<
/template
>
<
/RightClickMenu
>
<
el
-
dialog
<
el
-
dialog
v
-
model
=
"confirmDialogShow"
v
-
model
=
"confirmDialogShow"
:
close
-
on
-
click
-
modal
=
"false"
:
close
-
on
-
click
-
modal
=
"false"
...
@@ -1242,7 +1249,7 @@ import PodMakeOrder from './PodMakeOrder.vue'
...
@@ -1242,7 +1249,7 @@ import PodMakeOrder from './PodMakeOrder.vue'
import
{
OrderData
}
from
'@/types/api/podMakeOrder'
import
{
OrderData
}
from
'@/types/api/podMakeOrder'
import
useLodop
,
{
LODOPObject
}
from
'@/utils/hooks/useLodop'
import
useLodop
,
{
LODOPObject
}
from
'@/utils/hooks/useLodop'
import
dayjs
from
'dayjs'
import
dayjs
from
'dayjs'
import
rightMenu
from
'../pod/right
Menu.vue'
import
RightClickMenu
from
'@/components/RightClick
Menu.vue'
import
ResultInfo
from
'./components/ResultInfo.vue'
import
ResultInfo
from
'./components/ResultInfo.vue'
import
{
isArray
,
isString
}
from
'@/utils/validate'
import
{
isArray
,
isString
}
from
'@/utils/validate'
import
platformJson
from
'../../../json/platform.json'
import
platformJson
from
'../../../json/platform.json'
...
@@ -1406,8 +1413,6 @@ const rightClick = (e: MouseEvent) => {
...
@@ -1406,8 +1413,6 @@ const rightClick = (e: MouseEvent) => {
rightMenuRef
.
value
.
setPosition
({
rightMenuRef
.
value
.
setPosition
({
x
:
e
.
clientX
,
x
:
e
.
clientX
,
y
:
e
.
clientY
,
y
:
e
.
clientY
,
cardItem
:
e
.
clientY
,
el
:
e
,
}
)
}
)
}
}
...
@@ -1872,18 +1877,29 @@ const isSelectStatused = (data: ProductList) => {
...
@@ -1872,18 +1877,29 @@ const isSelectStatused = (data: ProductList) => {
return
index
!==
-
1
return
index
!==
-
1
}
}
const
rightChange
=
async
(
code
:
string
)
=>
{
const
rightChange
=
async
(
code
:
string
)
=>
{
if
(
code
===
'check_all'
)
{
const
flat
=
status
.
value
!==
'IN_PRODUCTION'
cardSelection
.
value
=
JSON
.
parse
(
JSON
.
stringify
(
tableData
.
value
))
if
(
code
===
'select-all'
)
{
}
else
if
(
code
===
'clear_check'
)
{
if
(
flat
)
{
cardSelection
.
value
=
[]
tableRef
.
value
?.
toggleAllSelection
()
}
else
if
(
code
===
'copy_code'
)
{
}
else
{
const
str
=
cardSelection
.
value
cardSelection
.
value
=
JSON
.
parse
(
JSON
.
stringify
(
tableData
.
value
))
.
map
((
item
)
=>
item
.
factorySubOrderNumber
)
}
}
else
if
(
code
===
'cancel-select'
)
{
if
(
flat
)
{
tableRef
.
value
?.
clearSelection
()
}
else
{
cardSelection
.
value
=
[]
}
}
else
if
(
code
===
'copy_shopNumber'
)
{
const
str
=
(
tableData
.
value
as
ProductList
[]
|
PodUsOrderListData
[])
.
map
((
item
)
=>
item
?.
shopNumber
)
.
join
()
.
join
()
navigator
.
clipboard
.
writeText
(
str
)
navigator
.
clipboard
.
writeText
(
str
)
ElMessage
.
success
(
'复制成功'
)
ElMessage
.
success
(
'复制成功'
)
}
else
if
(
code
===
'copy_shopNumber'
)
{
}
else
if
(
code
===
'order-number'
)
{
const
str
=
cardSelection
.
value
.
map
((
item
)
=>
item
.
shopNumber
).
join
()
const
str
=
(
tableData
.
value
as
ProductList
[]
|
PodUsOrderListData
[])
.
map
((
item
)
=>
item
?.
factoryOrderNumber
)
.
join
()
navigator
.
clipboard
.
writeText
(
str
)
navigator
.
clipboard
.
writeText
(
str
)
ElMessage
.
success
(
'复制成功'
)
ElMessage
.
success
(
'复制成功'
)
}
}
...
@@ -2491,21 +2507,11 @@ onMounted(() => {
...
@@ -2491,21 +2507,11 @@ onMounted(() => {
loadProductionClient
()
loadProductionClient
()
loadWarehouseList
()
loadWarehouseList
()
}
)
}
)
const
onChange
=
(
value
:
string
)
=>
{
if
(
value
===
'shop-numbers'
)
{
const
shopNumbers
=
(
tableData
.
value
as
PodUsOrderListData
[])
.
map
((
item
)
=>
item
.
shopNumber
)
.
join
(
','
)
navigator
.
clipboard
.
writeText
(
shopNumbers
).
then
(()
=>
{
ElMessage
.
success
(
'店铺单号已复制到剪贴板'
)
}
)
}
}
const
handleExceptionCommand
=
(
command
:
number
)
=>
{
const
handleExceptionCommand
=
(
command
:
number
)
=>
{
exceptionStatus
.
value
=
command
exceptionStatus
.
value
=
command
search
()
search
()
}
}
<
/script
>
<
/script
>
<
style
lang
=
"scss"
scoped
>
<
style
lang
=
"scss"
scoped
>
.
header
-
filter
-
form
{
.
header
-
filter
-
form
{
...
...
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