Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
J
jiedao-app-operator-master
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
lanbaoming
jiedao-app-operator-master
Commits
99e2b8b4
Commit
99e2b8b4
authored
Sep 26, 2023
by
dragondean@qq.com
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
优惠投放状态和路线批量加价
parent
51239613
Changes
5
Show whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
351 additions
and
5 deletions
+351
-5
coupon.js
src/api/ecw/coupon.js
+10
-1
productPrice.js
src/api/ecw/productPrice.js
+9
-0
index.vue
src/components/RoutersSelector/index.vue
+7
-3
index.vue
src/views/ecw/coupon/index.vue
+33
-1
batchIncrease.vue
src/views/ecw/productPrice/batchIncrease.vue
+292
-0
No files found.
src/api/ecw/coupon.js
View file @
99e2b8b4
...
...
@@ -79,3 +79,12 @@ export function updateEndtime(data){
data
})
}
// 更新投放状态
export
function
updatePutonStatus
(
data
){
return
request
({
url
:
'
/product/coupon/update/putonStatus
'
,
method
:
'
put
'
,
data
})
}
src/api/ecw/productPrice.js
View file @
99e2b8b4
...
...
@@ -116,3 +116,12 @@ export function updateOrderInquiry(data) {
data
:
data
})
}
// 批量加价
export
function
batchAddPrice
(
data
)
{
return
request
({
url
:
'
/ecw/product-price/batchAddPrice
'
,
method
:
'
put
'
,
data
})
}
src/components/RoutersSelector/index.vue
View file @
99e2b8b4
<
template
>
<div>
<div
class=
"filters mb-10"
>
<div
class=
"filters mb-10"
v-if=
"showFilter"
>
{{
$t
(
'
运输方式
'
)
}}
<dict-selector
:type=
'DICT_TYPE.ECW_TRANSPORT_TYPE'
v-model=
"transportType"
:placeholder=
"$t('请选择运输方式')"
:filter=
"transportFilter"
style=
"width:150px"
/>
...
...
@@ -22,7 +22,7 @@
</
template
>
</div>
<div
class=
"mb-10 flex-row"
>
<div
class=
"mb-10 flex-row"
v-if=
"showFilter"
>
<el-radio-group
v-model=
"checkAll"
>
<el-radio
:label=
"true"
>
{{$t('全选')}}
</el-radio>
<el-radio
:label=
"false"
>
{{$t('全不选')}}
</el-radio>
...
...
@@ -88,7 +88,11 @@ export default {
},
option
:
Object
,
// 类型,sea海运,air空运
type
:
String
type
:
String
,
showFilter
:{
type
:
Boolean
,
default
:
true
}
},
data
(){
return
{
...
...
src/views/ecw/coupon/index.vue
View file @
99e2b8b4
...
...
@@ -90,10 +90,21 @@
<
dict
-
tag
:
type
=
"
DICT_TYPE.ECW_IS_DRAFT
"
:
value
=
"
row.status
"
/>
<
/template
>
<
/el-table-column
>
<
el
-
table
-
column
:
label
=
"
$t('投放状态')
"
align
=
"
center
"
prop
=
"
putonStatus
"
width
=
"
180
"
>
<
template
slot
-
scope
=
"
{row
}
"
>
<
dict
-
tag
:
type
=
"
DICT_TYPE.ECW_COUPON_PUTON_STATUS
"
:
value
=
"
row.putonStatus
"
/>
<
/template
>
<
/el-table-column
>
<
el
-
table
-
column
:
label
=
"
$t('操作')
"
align
=
"
center
"
fixed
=
"
right
"
class
-
name
=
"
small-padding fixed-width
"
>
<
template
slot
-
scope
=
"
scope
"
>
<
el
-
button
size
=
"
mini
"
type
=
"
text
"
icon
=
"
el-icon-edit
"
@
click
=
"
handleDetail(scope.row, true)
"
v
-
hasPermi
=
"
['ecw:coupon:show']
"
>
{{
$t
(
'
查看
'
)
}}
<
/el-button
>
<
el
-
button
v
-
if
=
"
scope.row.putonStatus == 1
"
size
=
"
mini
"
type
=
"
text
"
icon
=
"
el-icon-edit
"
@
click
=
"
setPutonStatus(scope.row, -1)
"
v
-
hasPermi
=
"
['ecw:coupon:show']
"
>
{{
$t
(
'
取消投放
'
)
}}
<
/el-button
>
<
el
-
button
v
-
else
size
=
"
mini
"
type
=
"
text
"
icon
=
"
el-icon-edit
"
@
click
=
"
setPutonStatus(scope.row, 1)
"
v
-
hasPermi
=
"
['ecw:coupon:show']
"
>
{{
$t
(
'
投放
'
)
}}
<
/el-button
>
<
el
-
button
v
-
if
=
"
scope.row.status != 1
"
size
=
"
mini
"
type
=
"
text
"
icon
=
"
el-icon-edit
"
@
click
=
"
handleUpdate(scope.row)
"
v
-
hasPermi
=
"
['ecw:coupon:update']
"
>
{{
$t
(
'
编辑
'
)
}}
<
/el-button
>
<
el
-
button
size
=
"
mini
"
type
=
"
text
"
icon
=
"
el-icon-edit
"
@
click
=
"
handleCopy(scope.row)
"
...
...
@@ -133,11 +144,22 @@
<
/template
>
<
script
>
import
{
createCoupon
,
updateCoupon
,
deleteCoupon
,
getCoupon
,
getCouponPage
,
exportCouponExcel
,
updateEndtime
}
from
"
@/api/ecw/coupon
"
;
import
{
createCoupon
,
updateCoupon
,
deleteCoupon
,
getCoupon
,
getCouponPage
,
exportCouponExcel
,
updateEndtime
,
updatePutonStatus
}
from
"
@/api/ecw/coupon
"
;
import
Template
from
"
@/views/cms/template/index.vue
"
;
export
default
{
name
:
"
EcwCouponIndex
"
,
components
:
{
Template
}
,
data
()
{
return
{
...
...
@@ -292,6 +314,16 @@ export default {
this
.
$message
.
success
(
this
.
$t
(
'
操作成功
'
))
}
)
}
,
// 投放,取消投放就
setPutonStatus
(
row
,
status
){
updatePutonStatus
({
couponId
:
row
.
couponId
,
putonStatus
:
status
}
).
then
(
res
=>
{
this
.
$message
.
success
(
this
.
$t
(
'
操作成功
'
))
this
.
getList
()
}
)
}
,
/** 导出按钮操作 */
handleExport
()
{
// 处理查询参数
...
...
src/views/ecw/productPrice/batchIncrease.vue
0 → 100644
View file @
99e2b8b4
<
template
>
<div
class=
"app-container"
>
<el-form
ref=
"form"
:model=
"form"
:rules=
"rules"
label-width=
"150px"
>
<products-selector
ref=
"productSelector"
v-model=
"form.productIdList"
show-all
@
setall=
"isAllProduct=$event"
:default-ids=
"form.productIdList"
class=
"mb-20"
/>
<routers-selector
v-model=
"selectedRoutes"
:type=
"type"
:show-filter=
"false"
/>
<el-card
style=
"margin-bottom: 10px"
>
<div
slot=
"header"
style=
"font-size:20px;"
>
{{
$t
(
'
价格设置
'
)
}}
</div>
<div
:gutter=
"20"
>
<el-form-item
:label=
"$t('单价模式')"
prop=
"priceType"
>
<dict-selector
:type=
"DICT_TYPE.ECW_PRICE_TYPE"
v-model=
"form.priceType"
form-type=
"radio"
/>
<!--海运才需要是否含阶梯价的选项,空运只有阶梯价就不需要了-->
<div
v-if=
"type == 'sea'"
>
<el-checkbox
v-model=
"form.stepPrice"
:true-label=
"1"
:false-label=
"0"
>
{{
$t
(
'
是否含阶梯价
'
)
}}
</el-checkbox>
</div>
</el-form-item>
<el-form-item
:label=
"$t('默认全包价')"
v-if=
"form.priceType == 1"
>
<inputor
default2=
"0"
v-model.number=
"form.allPrice"
type=
"number"
:placeholder=
"$t('整数或者两位小数')"
class=
"w100 mr10"
/>
<selector
v-model=
"form.allPriceUnit"
@
input=
"syncAllUnit"
:options=
"currencyList"
:label-field=
"$l('title')"
value-field=
"id"
defaultable2
class=
"w100"
/>
/
<selector
v-model=
"form.allVolumeUnit"
@
input=
"syncAllUnit"
:options=
"unitList"
:label-field=
"$l('title')"
value-field=
"id"
defaultable2
class=
"w100"
/>
</el-form-item>
<template
v-else
>
<el-form-item
:label=
"$t('默认运费')"
prop=
"transportPrice"
>
<selector
v-model=
"form.transportPriceUnit"
@
input=
"syncAllUnit"
:options=
"currencyList"
:label-field=
"$l('title')"
value-field=
"id"
defaultable2
class=
"w-100"
/>
<inputor
default2=
"0"
v-model.number=
"form.transportPrice"
type=
"number"
:placeholder=
"$t('整数或者两位小数')"
class=
"w-100 ml-10 mr-10"
/>
/
<selector
v-model=
"form.transportVolumeUnit"
@
input=
"syncAllUnit"
:options=
"unitList"
:label-field=
"$l('title')"
value-field=
"id"
defaultable2
class=
"w-100"
/>
</el-form-item>
<el-form-item
:label=
"$t('默认清关费')"
prop=
"clearancePrice"
v-if=
"type != 'air'"
>
<selector
v-model=
"form.clearancePriceUnit"
@
input=
"syncAllUnit"
:options=
"currencyList"
:label-field=
"$l('title')"
value-field=
"id"
defaultable2
class=
"w-100"
/>
<inputor
default2=
"0"
v-model.number=
"form.clearancePrice"
type=
"number"
:placeholder=
"$t('整数或者两位小数')"
class=
"w-100 ml-10 mr-10"
/>
/
<selector
v-model=
"form.clearanceVolumeUnit"
@
input=
"syncAllUnit"
:options=
"unitList"
:label-field=
"$l('title')"
value-field=
"id"
defaultable2
class=
"w-100"
/>
</el-form-item>
</
template
>
<!--特需-->
<
template
v-if=
"form.priceType==1"
>
<el-form-item
v-for=
"(special, specialIndex) in form.specialList"
:label=
"getDictDataLabel(DICT_TYPE.ECW_SPECIAL_REQ_FOR_LINE_PRODUCTS, special.specialDictType) + $t('全包价')"
:key=
"specialIndex + 'transport'"
>
<selector
disabled
v-model=
"special.allPriceUnit"
:options=
"currencyList"
:label-field=
"$l('title')"
value-field=
"id"
defaultable2
class=
"w-100"
/>
<inputor
default2=
"0"
v-model.number=
"special.allPrice"
type=
"number"
:placeholder=
"$t('整数或者两位小数')"
class=
"w-100 ml-10 mr-10"
/>
/
<selector
disabled
v-model=
"special.allVolumeUnit"
:options=
"unitList"
:label-field=
"$l('title')"
value-field=
"id"
defaultable2
class=
"w-100"
/>
</el-form-item>
</
template
>
<
template
v-else
v-for=
"(special, specialIndex) in form.specialList"
>
<el-form-item
:label=
"getDictDataLabel(DICT_TYPE.ECW_SPECIAL_REQ_FOR_LINE_PRODUCTS, special.specialDictType) + $t('运费')"
:key=
"specialIndex + 'transport'"
>
<selector
disabled
v-model=
"special.transportPriceUnit"
:options=
"currencyList"
:label-field=
"$l('title')"
value-field=
"id"
defaultable2
class=
"w-100"
/>
<inputor
default2=
"0"
v-model.number=
"special.transportPrice"
type=
"number"
:placeholder=
"$t('整数或者两位小数')"
class=
"w-100 ml-10 mr-10"
/>
/
<selector
disabled
v-model=
"special.transportVolumeUnit"
:options=
"unitList"
:label-field=
"$l('title')"
value-field=
"id"
defaultable2
class=
"w-100"
/>
</el-form-item>
<el-form-item
v-if=
"type != 'air'"
:label=
"getDictDataLabel(DICT_TYPE.ECW_SPECIAL_REQ_FOR_LINE_PRODUCTS, special.specialDictType) + $t('清关费')"
:key=
"specialIndex + 'clearance'"
>
<selector
disabled
v-model=
"special.clearancePriceUnit"
:options=
"currencyList"
:label-field=
"$l('title')"
value-field=
"id"
defaultable2
class=
"w-100"
/>
<inputor
default2=
"0"
v-model.number=
"special.clearancePrice"
type=
"number"
:placeholder=
"$t('整数或者两位小数')"
class=
"w-100 ml-10 mr-10"
/>
/
<selector
disabled
v-model=
"special.clearanceVolumeUnit"
:options=
"unitList"
:label-field=
"$l('title')"
value-field=
"id"
defaultable2
class=
"w-100"
/>
</el-form-item>
</
template
>
</div>
</el-card>
</el-form>
<div
style=
"margin: 20px 0"
>
<el-button
@
click=
"submitForm"
type=
"primary"
:loading=
"loading"
>
{{$t('确认提交')}}
</el-button>
<el-button
type=
"default"
@
click=
"$router.back()"
>
{{$t('返回上一页')}}
</el-button>
</div>
</div>
</template>
<
script
>
import
RoutersSelector
from
'
@/components/RoutersSelector
'
import
{
batchAddPrice
,
batchUpdateProductPrice
,
getProductPrice
}
from
"
@/api/ecw/productPrice
"
;
import
{
getCurrencyList
}
from
'
@/api/ecw/currency
'
;
import
{
getUnitList
}
from
'
@/api/ecw/unit
'
;
import
ProductsSelector
from
'
@/components/ProductsSelector
'
import
Selector
from
'
@/components/Selector
'
import
Inputor
from
'
@/components/Inputor
'
import
Decimal
from
'
decimal.js
'
export
default
{
components
:
{
RoutersSelector
,
ProductsSelector
,
Selector
,
Inputor
},
data
()
{
return
{
checkList
:
[],
selectedRoutes
:
[],
// 勾选的路线渠道
form
:
{
priceType
:
'
0
'
,
specialList
:
[],
stepPrice
:
0
},
isAllProduct
:
false
,
// 是否全部商品
specialProducts
:
[],
rules
:
{},
product
:
null
,
currencyList
:
[],
unitList
:
[],
productTypeList
:
[],
productDisabled
:
true
,
lineList
:
[],
//路线数组
loading
:
false
,
// 批量加价/减价
quickForm
:{}
}
},
computed
:
{
// 类型,默认海运sea,air表示空运
type
(){
return
this
.
$route
.
path
.
split
(
/
[
-_
]
/
).
pop
()
},
// 默认运费的货币和体积单位
currencyAndUnit
(){
let
currency
=
null
,
unit
=
null
,
fields
=
null
// 如果是阶梯价格则取第一阶梯,否则就取form中的字段
let
obj
=
this
.
form
.
stepPrice
==
1
?
this
.
form
.
priceStepList
[
0
]
:
this
.
form
// 全包价
if
(
this
.
form
.
priceType
==
1
){
currency
=
obj
.
allPriceUnit
unit
=
obj
.
allVolumeUnit
}
else
{
currency
=
obj
.
transportPriceUnit
unit
=
obj
.
transportVolumeUnit
}
return
{
currency
,
unit
}
}
},
watch
:
{
checkList
()
{
//选择路线
if
(
this
.
checkList
.
length
>
0
)
{
this
.
form
.
lineChannelList
=
this
.
checkList
.
map
(
item
=>
{
return
{
lineId
:
item
,
shippingChannelId
:
0
}
})
}
else
{
this
.
form
.
lineChannelList
=
[]
}
},
product
()
{
this
.
$set
(
this
.
form
,
'
productType
'
,
this
.
product
.
typeId
)
},
selectedRoutes
(
routers
)
{
let
transportIds
=
[]
routers
.
forEach
(
item
=>
{
item
.
shippingChannelId
=
item
.
channelId
transportIds
.
push
(
+
item
.
transportId
)
})
// 如果只选择了空运(3),则默认体积单位改成千克
transportIds
=
new
Set
(
transportIds
)
console
.
log
(
transportIds
)
window
.
transportIds
=
transportIds
if
(
transportIds
.
size
==
1
&&
transportIds
.
has
(
3
)){
this
.
setDefaultVolumeUnit
(
6
)
}
else
this
.
setDefaultVolumeUnit
(
7
)
}
},
async
created
()
{
getCurrencyList
().
then
(
res
=>
this
.
currencyList
=
res
.
data
)
getUnitList
().
then
(
res
=>
this
.
unitList
=
res
.
data
)
this
.
getDictDatas
(
this
.
DICT_TYPE
.
ECW_SPECIAL_REQ_FOR_LINE_PRODUCTS
).
forEach
(
item
=>
{
// 没有的才push,已有的可能是从复制模板携带过来的数据
if
(
!
this
.
form
.
specialList
.
find
(
special
=>
special
.
specialDictType
==
item
.
value
))
{
this
.
form
.
specialList
.
push
({
"
clearancePrice
"
:
null
,
"
clearancePriceUnit
"
:
null
,
"
clearanceVolumeUnit
"
:
null
,
"
specialDictType
"
:
item
.
value
,
"
transportPrice
"
:
null
,
"
transportPriceUnit
"
:
null
,
"
transportVolumeUnit
"
:
null
,
})
}
})
},
methods
:
{
// 同步全部单位
syncAllUnit
(){
let
obj
=
this
.
form
let
fields
=
{}
// 全包价
if
(
this
.
form
.
priceType
==
1
){
fields
=
{
allPriceUnit
:
obj
[
'
allPriceUnit
'
],
allVolumeUnit
:
obj
[
'
allVolumeUnit
'
]
}
}
else
{
fields
=
{
transportPriceUnit
:
obj
.
transportPriceUnit
,
transportVolumeUnit
:
obj
.
transportVolumeUnit
,
clearancePriceUnit
:
obj
.
clearancePriceUnit
,
clearanceVolumeUnit
:
obj
.
clearanceVolumeUnit
,
}
}
// 全包价还需要同步阶梯的重量单位
if
(
this
.
form
.
stepPrice
==
1
){
fields
[
'
weightUnit
'
]
=
obj
.
weightUnit
}
this
.
syncSpecialUnit
(
fields
)
},
// 同步特需的货币单位和体积单位
syncSpecialUnit
(
obj
){
console
.
log
(
'
syncSpecialUnit
'
,
obj
)
if
(
!
obj
)
return
// 同步特需单位
this
.
form
.
specialList
.
forEach
(
item
=>
{
Object
.
assign
(
item
,
obj
)
})
// 如果是阶梯价则需要同步其他阶梯
if
(
this
.
form
.
stepPrice
==
1
){
this
.
form
.
priceStepList
.
forEach
((
item
,
index
)
=>
{
this
.
$set
(
this
.
form
.
priceStepList
,
index
,
Object
.
assign
(
item
,
obj
))
})
}
// 不是阶梯价需要 同步最小起计量
if
(
obj
[
'
transportVolumeUnit
'
]
||
obj
[
'
allVolumeUnit
'
]){
this
.
$set
(
this
.
form
,
'
minWeightUnit
'
,
obj
[
'
transportVolumeUnit
'
]
||
obj
[
'
allVolumeUnit
'
])
}
},
// 价格校验器
priceValidator
(
rule
,
value
,
callback
){
if
(
!
value
||
value
==
''
)
return
callback
()
value
=
parseFloat
(
value
)
if
(
!
value
||
value
<
0
){
return
callback
(
new
Error
(
'
价格错误
'
))
}
callback
()
},
setDefaultVolumeUnit
(
unit
){
this
.
$set
(
this
.
form
,
'
transportVolumeUnit
'
,
unit
)
this
.
$set
(
this
.
form
,
'
clearanceVolumeUnit
'
,
unit
)
this
.
$set
(
this
.
form
,
'
allVolumeUnit
'
,
unit
)
},
submitForm
()
{
this
.
$refs
[
"
form
"
].
validate
(
async
(
valid
)
=>
{
if
(
!
valid
)
{
return
;
}
// 只有新增的时候做判断
if
(
!
this
.
$route
.
query
.
ids
&&
(
!
this
.
selectedRoutes
||
!
this
.
selectedRoutes
.
length
))
{
this
.
$message
.
error
(
this
.
$t
(
'
请选择线路
'
));
return
;
}
if
(
!
this
.
isAllProduct
&&
(
!
this
.
form
.
productIdList
||
!
this
.
form
.
productIdList
.
length
)){
return
this
.
$message
.
error
(
'
请选择商品
'
)
}
let
data
=
Object
.
assign
({},
this
.
form
,
{
// lineChannelList: this.selectedRoutes,
// specialList: this.specialProducts,
isAllProduct
:
this
.
isAllProduct
?
1
:
0
})
data
.
lineChannelList
=
this
.
selectedRoutes
if
(
data
.
lineChannelList
.
length
<
1
){
return
this
.
$message
.
error
(
this
.
$t
(
'
请选择需要修改的路线
'
))
}
await
this
.
$confirm
(
this
.
$t
(
'
已选择{route}条路线,{product}个商品;确认提交修改?
'
,
{
route
:
data
.
lineChannelList
.
length
,
product
:
this
.
isAllProduct
?
this
.
$refs
.
productSelector
.
allTotal
:
this
.
form
.
productIdList
.
length
}))
this
.
loading
=
true
batchAddPrice
(
data
).
then
(
response
=>
{
this
.
$alert
(
this
.
$t
(
"
操作成功
"
));
})
.
finally
(
res
=>
{
this
.
loading
=
false
})
});
}
}
}
</
script
>
<
style
scoped
>
.w100
{
width
:
100px
;
}
.mr10
{
margin-right
:
10px
;
}
</
style
>
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