Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
E
ElectricitySheep
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
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
黄媛媛
ElectricitySheep
Commits
0aa7ddba
Commit
0aa7ddba
authored
Jan 13, 2021
by
Mac
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
1
parent
155fb9e9
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
1087 additions
and
0 deletions
+1087
-0
AddsetupActicity.vue
src/components/setup/AddsetupActicity.vue
+759
-0
setupActivityList.vue
src/components/setup/setupActivityList.vue
+299
-0
winningList.vue
src/components/setup/winningList.vue
+13
-0
index.js
src/router/index.js
+16
-0
No files found.
src/components/setup/AddsetupActicity.vue
0 → 100644
View file @
0aa7ddba
<
template
>
<div
class=
"AddsetupActicity"
>
<div
class=
"form-box"
style=
"margin-top: 0"
>
<div>
<span
style=
"color: rgb(64, 158, 255);cursor: pointer;margin-left: 20px"
@
click=
"cancel"
>
套餐卡管理
</span>
<span
style=
"margin: 0 5px;color: #C0C4CC;"
>
/
</span>
<span>
套餐卡编辑
</span>
</div>
</div>
<div
class=
"el-card__body"
style=
"background-color: white; padding: 0px;margin-top: 20px"
>
<el-form
:model=
"msg"
style=
"padding:0 20px;"
:rules=
"rules"
ref=
"msg"
label-width=
"160px"
size=
"small"
>
<div
class=
"form-body"
>
<el-form-item
label=
"活动名称"
prop=
"ActivityName"
class=
"is-required"
>
<el-input
v-model=
"msg.ActivityName"
/>
</el-form-item>
<el-form-item
label=
"封面图"
prop=
"CoverImage"
class=
"is-required"
>
<button
class=
"el-button el-button--default el-button--small"
@
click=
"openChangeDig(1)"
>
选择图片
</button>
<div
class=
"img_yuan inputM_l"
>
<img
v-if=
"msg.CoverImage=='' || msg.CoverImage==null"
src=
"../../assets/img/setup/default_img.png"
alt=
""
>
<img
v-else
:src=
"msg.CoverImage"
alt=
""
>
</div>
</el-form-item>
<el-form-item
label=
"分销等级"
>
<el-select
style=
"width:636px;"
v-model=
"msg.Tier"
placeholder=
"请选择"
>
<el-option
label=
"全部"
:value=
"0"
></el-option>
<el-option
label=
"一级分销"
:value=
"1"
></el-option>
<el-option
label=
"二级分销"
:value=
"2"
></el-option>
<el-option
label=
"三级分销"
:value=
"3"
></el-option>
</el-select>
</el-form-item>
<el-form-item
label=
"活动类型"
>
<el-select
style=
"width:636px;"
v-model=
"msg.Type"
placeholder=
"请选择"
>
<el-option
label=
"订单数量"
:value=
"1"
></el-option>
<el-option
label=
"订单金额"
:value=
"2"
></el-option>
<el-option
label=
"商品数量"
:value=
"3"
></el-option>
</el-select>
</el-form-item>
<el-form-item
label=
"订单数量"
class=
"is-required"
v-if=
"msg.Type==1"
>
<el-input
v-model=
"msg.OrderNum"
step=
"1"
min=
"0"
onkeyup=
"this.value= this.value.match(/\d+(\.\d
{0,2})?/) ? this.value.match(/\d+(\.\d{0,2})?/)[0] : ''">
<template
slot=
"append"
>
单
</
template
>
</el-input>
</el-form-item>
<el-form-item
label=
"订单金额"
class=
"is-required"
v-if=
"msg.Type==2"
>
<el-input
v-model=
"msg.OrderMoney"
step=
"1"
min=
"0"
onkeyup=
"this.value= this.value.match(/\d+(\.\d{0,2})?/) ? this.value.match(/\d+(\.\d{0,2})?/)[0] : ''"
>
<
template
slot=
"append"
>
元
</
template
>
</el-input>
</el-form-item>
<el-form-item
label=
"商品数量"
class=
"is-required"
v-if=
"msg.Type==3"
>
<el-input
v-model=
"msg.GoodsNum"
step=
"1"
min=
"0"
onkeyup=
"this.value= this.value.match(/\d+(\.\d{0,2})?/) ? this.value.match(/\d+(\.\d{0,2})?/)[0] : ''"
>
<
template
slot=
"append"
>
个
</
template
>
</el-input>
</el-form-item>
<el-form-item
label=
"验证码长度"
class=
"is-required"
>
<el-select
style=
"width:636px;"
v-model=
"msg.CodeLength"
placeholder=
"请选择"
>
<el-option
label=
"4位"
:value=
"4"
></el-option>
<el-option
label=
"6位"
:value=
"6"
></el-option>
<el-option
label=
"8位"
:value=
"8"
></el-option>
<el-option
label=
"10位"
:value=
"10"
></el-option>
</el-select>
</el-form-item>
<el-form-item
label=
"奖品名称"
class=
"is-required"
prop=
"PrizeName"
>
<el-input
v-model=
"msg.PrizeName"
/>
</el-form-item>
<el-form-item
label=
"奖品图片"
prop=
"PrizeImage"
class=
"is-required"
>
<button
class=
"el-button el-button--default el-button--small"
@
click=
"openChangeDig(2)"
>
选择图片
</button>
<div
class=
"img_yuan inputM_l"
>
<img
v-if=
"msg.PrizeImage=='' || msg.PrizeImage==null"
src=
"../../assets/img/setup/default_img.png"
alt=
""
>
<img
v-else
:src=
"msg.PrizeImage"
alt=
""
>
</div>
</el-form-item>
<el-form-item
label=
"有效期范围"
class=
"is-required"
prop=
"value"
>
<el-date-picker
@
input=
"daterangeChange"
style=
"padding: 3px 10px;width: 450px;height: 32px"
v-model
.
trim=
"msg.value"
type=
"daterange"
range-separator=
"至"
start-placeholder=
"开始日期"
end-placeholder=
"结束日期"
value-format=
"yyyy-MM-dd"
align=
"right"
>
</el-date-picker>
</el-form-item>
<el-form-item
label=
"兑换期限"
class=
"is-required"
prop=
"ReceiveTime"
>
<el-date-picker
v-model=
"msg.ReceiveTime"
type=
"date"
value-format=
"yyyy-MM-dd"
placeholder=
"选择日期时间"
>
</el-date-picker>
</el-form-item>
<el-form-item
label=
"领取方式"
class=
"is-required"
>
<el-radio
v-model=
"msg.Way"
disabled
label=
"1"
>
线上
</el-radio>
<el-radio
v-model=
"msg.Way"
label=
"2"
>
线下
</el-radio>
</el-form-item>
<el-form-item
label=
"参与商品类别或商品"
>
<div
style=
"display: flex;flex-direction: row;align-items: center"
>
<div
@
click=
"getUseType(1)"
style=
"margin-right: 15px"
>
<el-radio
:label=
"1"
v-model=
"msg.RangeType"
>
分类
</el-radio>
</div>
<div
@
click=
'getUseType(2)'
style=
"margin-right: 15px"
>
<el-radio
:label=
"2"
v-model=
"msg.RangeType"
>
指定商品
</el-radio>
</div>
</div>
<div
class=
"splist"
v-if=
"msg.RangeType==1"
>
<div
v-for=
"(item,index) in AppointList"
:label=
"item.ProductId"
:key=
"index"
style=
"margin-right: 20px;"
class=
"el-tag el-tag--warning el-tag--plain"
>
<span>
{{item.Name}}
</span>
<i
class=
"el-tag__close el-icon-close"
@
click=
"deleteProduct(item,index)"
></i>
</div>
</div>
<div
class=
"splist"
v-if=
"msg.RangeType==2"
>
<div
v-for=
"(item,index) in commoditylist"
:label=
"item.ProductId"
:key=
"index"
style=
"margin-right: 20px; position: relative; cursor: pointer;margin-bottom: 10px"
>
<div
class=
"app-image"
:style=
"{backgroundImage:'url(' + item.CoverImage + ')',backgroundSize:'cover'}"
>
</div>
<i
class=
"el-icon-error"
style=
"position: absolute;right: -5px;top:-5px;color: #F56C6C;font-size: 20px"
@
click=
"deletecommod(item,index)"
></i>
</div>
</div>
</el-form-item>
<el-form-item
label=
"启用状态"
v-if=
"!this.$route.query.ID"
>
<el-switch
:active-value=
"1"
:inactive-value=
"2"
v-model=
"msg.Enable"
>
</el-switch>
</el-form-item>
<el-form-item
label=
"套餐卡描述"
prop=
"Description"
>
<el-input
type=
"textarea"
:rows=
"2"
v-model=
"msg.Description"
>
</el-input>
</el-form-item>
</div>
</el-form>
</div>
<el-button
type=
"primary"
style=
"margin: 12px 0"
size=
"small"
@
click=
"preserve('msg')"
:loading=
"loading"
>
保存
</el-button>
<!--已指定商品类别选择-->
<el-dialog
title=
"已指定商品类别"
:visible
.
sync=
"category"
width=
"714px"
>
<div
style=
"height:400px;overflow:auto;"
>
<el-tree
:data=
"ProductCategoryTreeList"
show-checkbox
:check-strictly=
"true"
default-expand-all
node-key=
"Id"
ref=
"tree"
:default-checked-keys=
"checkedkeys"
@
check=
"TreeList"
:props=
"defaultProps"
>
</el-tree>
</div>
<div
slot=
"footer"
class=
"dialog-footer"
>
<el-button
@
click=
"category = false"
size=
"small"
>
取 消
</el-button>
<el-button
type=
"primary"
@
click=
"getProductList"
size=
"small"
>
确 定
</el-button>
</div>
</el-dialog>
<!--选择的商品列表-->
<el-dialog
title=
"添加商品"
:visible
.
sync=
"addcommodity"
width=
"1024px"
>
<
template
>
<div
class=
"el-form-item"
>
<div
class=
"el-form-item__content"
>
<div
class=
"el-input el-input--small"
style=
"width: 40%;"
>
<input
type=
"text"
autocomplete=
"off"
placeholder=
"商品名称"
class=
"el-input__inner"
v-model=
"msg2.Name"
@
clear=
"msg2.pageIndex=1,getProductGoodsPageList()"
clearable
>
</div>
<button
type=
"button"
class=
"el-button el-button--default el-button--small"
style=
"margin-left: 15px"
@
click=
"msg2.pageIndex=1,getProductGoodsPageList()"
>
查找商品
</button>
<button
class=
"el-button el-button--default el-button--small"
style=
"float: right;"
@
click=
"batchAdd"
>
批量添加
</button>
</div>
</div>
<el-table
v-loading=
"loading_t"
:data=
"tableData"
ref=
"dataTable"
@
selection-change=
"handleSelectionChange"
style=
"width: 984px"
>
<el-table-column
type=
"selection"
width=
"55"
>
</el-table-column>
<el-table-column
prop=
"Id"
label=
"ID"
width=
"80"
>
</el-table-column>
<el-table-column
label=
"商品图"
width=
"80"
>
<template
slot-scope=
"scope"
>
<img
style=
"width:50px;height:50px;margin-right:1px"
:src=
"scope.row.CoverImage"
alt=
""
>
</
template
>
</el-table-column>
<el-table-column
prop=
"Name"
label=
"商品名称"
width=
"333"
>
</el-table-column>
<el-table-column
prop=
"address"
label=
"操作"
>
<
template
slot-scope=
"scope"
>
<el-button
type=
"primary"
plain
size=
"mini"
@
click=
"addtableData(scope)"
:disabled=
"scope.row.disabled"
>
{{
scope
.
row
.
disabled
==
true
?
'已添加'
:
'添加'
}}
</el-button>
</
template
>
</el-table-column>
</el-table>
<el-pagination
style=
"text-align:right"
background
@
current-change=
"handleCurrentChange"
:page-size=
"msg2.pageSize"
layout=
"prev, pager, next"
:current-page
.
sync=
"msg2.pageIndex"
:total=
"count"
>
</el-pagination>
</template>
</el-dialog>
<!-- 选择文件 -->
<el-dialog
title=
"选择文件"
:visible
.
sync=
"changeState"
width=
"1240px"
>
<ChooseImg
@
SelectId=
"SelectId"
ref=
"mychild"
></ChooseImg>
</el-dialog>
</div>
</template>
<
script
>
import
ChooseImg
from
"@/components/global/ChooseImg.vue"
;
export
default
{
name
:
"AddsetupActicity"
,
components
:
{
ChooseImg
,
},
data
()
{
return
{
msg
:
{
ID
:
0
,
ActivityName
:
''
,
CoverImage
:
''
,
Tier
:
0
,
Type
:
1
,
RangeType
:
0
,
RangeIds
:[],
Way
:
'2'
,
//领取方式 1线上 2线下
CodeLength
:
4
,
//验证码长度
StartTime
:
''
,
EndTime
:
''
,
Description
:
''
,
ReceiveTime
:
''
,
//兑换期限
Enable
:
1
,
//
value
:
[],
OrderNum
:
0
,
OrderMoney
:
0
,
GoodsNum
:
0
,
PrizeName
:
''
,
PrizeImage
:
''
},
checkedkeys
:
[],
//默认选中的
checked
:
true
,
loading
:
false
,
addcommodity
:
false
,
commoditylist
:
[],
//商品的list
changeState
:
false
,
SmallShopData
:
[],
rules
:
{
ActivityName
:
[{
required
:
true
,
message
:
"活动名称不能为空"
,
trigger
:
"blur"
}],
CoverImage
:
[{
required
:
true
,
message
:
"请选择活动图片"
,
trigger
:
"blur"
}],
PrizeName
:
[{
required
:
true
,
message
:
"奖品名称不能为空"
,
trigger
:
"blur"
}],
PrizeImage
:
[{
required
:
true
,
message
:
"请选择奖品图片"
,
trigger
:
"blur"
}],
ReceiveTime
:[{
required
:
true
,
message
:
"请选择兑换时间"
,
trigger
:
"blur"
}],
value
:
[{
type
:
'array'
,
required
:
true
,
message
:
'套餐卡有效期不能为空'
,
trigger
:
'change'
}
]
},
cityOptions
:
[],
cities
:
[],
checkAll
:
false
,
isIndeterminate
:
false
,
category
:
false
,
ProductCategoryTreeList
:
[],
AppointList
:
[],
//指定商品分类
defaultProps
:
{
children
:
'ChildList'
,
label
:
'Name'
},
eData
:
{},
msg2
:
{
pageIndex
:
1
,
pageSize
:
15
,
Name
:
''
,
GoodsStatus
:
0
,
IsSelectSellOut
:
0
,
CategoryIds
:
''
,
Id
:
0
,
StartTime
:
''
,
EndTime
:
''
,
},
tableData
:
[],
loading_t
:
false
,
count
:
0
,
multipleSelection
:
[],
AppointList2
:
[],
SmallShopMsg
:
{
Name
:
''
,
},
storeCheck
:
[],
//门店多选
imgtype
:
0
,
}
},
created
()
{
this
.
getMemberGradeList
()
this
.
getSmallShopsDropDownList
()
this
.
getProductGoodsPageList
();
if
(
this
.
$route
.
query
.
ID
)
{
this
.
msg
.
ID
=
this
.
$route
.
query
.
ID
;
this
.
getData
()
}
},
methods
:
{
getMemberGradeList
()
{
// this.cityOptions = [];
// this.apipost("/api/User/GetMemberGradeList", {}, res => {
// this.cities = res.data.data;
// let data = res.data.data;
// data.forEach(item => {
// this.cityOptions.push(item.Id)
// })
//
// })
this
.
getProductCategoryTreeList
()
},
getData
(){
this
.
apipost
(
"/api/product/GetGoodsActivityInfo"
,
{
ActivityId
:
this
.
msg
.
ID
},
res
=>
{
if
(
res
.
data
.
resultCode
==
1
)
{
this
.
msg
=
res
.
data
.
data
;
this
.
msg
.
value
=
[];
this
.
msg
.
value
.
push
(
res
.
data
.
data
.
StartTime
)
this
.
msg
.
value
.
push
(
res
.
data
.
data
.
EndTime
)
this
.
msg
.
Way
=
res
.
data
.
data
.
Way
.
toString
()
if
(
res
.
data
.
data
.
RangeType
==
1
)
{
let
ProductList
=
res
.
data
.
data
.
RangeList
;
this
.
AppointList
=
[]
this
.
getProductCategoryTreeList
();
for
(
let
i
=
0
;
i
<
ProductList
.
length
;
i
++
)
{
this
.
checkedkeys
.
push
(
ProductList
[
i
].
Id
)
var
objList
=
this
.
getObjById
(
this
.
ProductCategoryTreeList
,
ProductList
[
i
].
Id
);
if
(
objList
)
{
this
.
AppointList
.
push
({
ProductId
:
objList
.
Id
,
Name
:
objList
.
Name
})
}
}
}
if
(
res
.
data
.
data
.
RangeType
==
2
)
{
this
.
commoditylist
=
this
.
msg
.
RangeList
;
this
.
commoditylist
.
forEach
(
x
=>
{
x
.
CoverImage
=
x
.
Image
})
var
myTable
=
[];
this
.
apipost
(
"/api/product/GetProductGoodsPageList"
,
this
.
msg2
,
res
=>
{
if
(
res
.
data
.
resultCode
==
1
)
{
myTable
=
res
.
data
.
data
.
pageData
;
}
myTable
.
forEach
((
x
,
xi
)
=>
{
this
.
msg
.
RangeList
.
forEach
((
y
,
yi
)
=>
{
if
(
y
.
Id
==
x
.
Id
)
{
// this.commoditylist.push(x);
x
.
disabled
=
true
;
}
})
})
this
.
tableData
=
myTable
;
})
}
}
else
{
this
.
Error
(
res
.
data
.
message
);
}
})
},
getProductCategoryTreeList
()
{
this
.
apipost
(
"/api/AppletGoods/GetProductCategoryTreeList"
,
{},
res
=>
{
if
(
res
.
data
.
resultCode
==
1
)
{
this
.
ProductCategoryTreeList
=
res
.
data
.
data
}
else
{
this
.
Error
(
res
.
data
.
message
);
}
})
},
getProductGoodsPageList
()
{
this
.
loading_t
=
true
this
.
apipost
(
"/api/product/GetProductGoodsPageList"
,
this
.
msg2
,
res
=>
{
this
.
loading_t
=
false
;
if
(
res
.
data
.
resultCode
==
1
)
{
this
.
tableData
=
res
.
data
.
data
.
pageData
this
.
count
=
res
.
data
.
data
.
count
if
(
this
.
msg
.
RangeList
.
length
>
0
){
this
.
tableData
.
forEach
(
x
=>
{
this
.
msg
.
RangeList
.
forEach
(
j
=>
{
if
(
x
.
Id
==
j
.
Id
){
x
.
disabled
=
true
}
})
})
}
}
})
},
cancel
()
{
this
.
$router
.
go
(
-
1
)
},
handleCheckAllChange
(
val
)
{
this
.
msg
.
MemberLevelList
=
val
?
this
.
cityOptions
:
[];
this
.
isIndeterminate
=
false
;
},
handleCheckedCitiesChange
(
value
)
{
let
checkedCount
=
value
.
length
;
this
.
checkAll
=
checkedCount
===
this
.
cities
.
length
;
this
.
isIndeterminate
=
checkedCount
>
0
&&
checkedCount
<
this
.
cities
.
length
;
},
addtableData
(
data
)
{
var
myTable
=
JSON
.
parse
(
JSON
.
stringify
(
this
.
tableData
));
myTable
[
data
.
$index
].
disabled
=
true
;
this
.
commoditylist
.
push
(
data
.
row
);
this
.
tableData
=
myTable
;
this
.
Success
(
'添加成功'
);
},
batchAdd
()
{
//批量添加
let
newdata
=
[]
for
(
let
i
=
0
;
i
<
this
.
multipleSelection
.
length
;
i
++
)
{
if
(
this
.
commoditylist
.
length
>
0
)
{
for
(
let
j
=
0
;
j
<
this
.
commoditylist
.
length
;
j
++
)
{
if
(
this
.
multipleSelection
[
i
].
Id
!=
this
.
commoditylist
[
j
].
Id
)
{
newdata
.
push
(
this
.
multipleSelection
[
i
])
for
(
let
z
=
0
;
z
<
this
.
tableData
.
length
;
z
++
)
{
if
(
this
.
tableData
[
z
].
Id
==
this
.
multipleSelection
[
i
].
Id
)
{
this
.
tableData
[
z
].
disabled
=
true
;
break
}
}
}
}
}
else
{
newdata
.
push
(
this
.
multipleSelection
[
i
])
for
(
let
z
=
0
;
z
<
this
.
tableData
.
length
;
z
++
)
{
if
(
this
.
tableData
[
z
].
Id
==
this
.
multipleSelection
[
i
].
Id
)
{
this
.
tableData
[
z
].
disabled
=
true
;
break
}
}
}
}
if
(
newdata
.
length
>
0
)
{
this
.
Success
(
'添加成功'
);
}
this
.
commoditylist
=
this
.
unique
(
this
.
commoditylist
.
concat
(
newdata
));
this
.
$refs
.
dataTable
.
clearSelection
()
},
// 数组去重
unique
(
arr
)
{
for
(
var
i
=
0
,
len
=
arr
.
length
;
i
<
len
;
i
++
)
{
for
(
var
j
=
i
+
1
,
len
=
arr
.
length
;
j
<
len
;
j
++
)
{
if
(
arr
[
i
].
Id
===
arr
[
j
].
Id
)
{
arr
.
splice
(
j
,
1
);
j
--
;
// 每删除一个数j的值就减1
len
--
;
// j值减小时len也要相应减1(减少循环次数,节省性能)
}
}
}
return
arr
;
},
deletecommod
(
data
,
index
)
{
this
.
tableData
.
forEach
(
x
=>
{
if
(
data
.
Id
==
x
.
Id
)
{
x
.
disabled
=
false
this
.
commoditylist
.
splice
(
index
,
1
)
}
})
},
handleSelectionChange
(
val
)
{
this
.
multipleSelection
=
val
},
getUseType
(
val
)
{
if
(
val
==
1
)
{
this
.
category
=
true
;
this
.
$nextTick
(()
=>
{
//在弹出dialog之前执行$nextTick回调函数,确保el-tree已经渲染
this
.
$refs
.
tree
.
setCheckedKeys
(
this
.
checkedkeys
);
});
}
else
if
(
val
==
2
)
{
this
.
checkedkeys
=
[]
this
.
addcommodity
=
true
}
},
daterangeChange
(
e
)
{
let
_this
=
this
if
(
e
==
null
)
{
_this
.
msg
.
value
=
[]
}
else
{
_this
.
$nextTick
(()
=>
{
_this
.
$set
(
_this
.
msg
,
"value"
,
[
e
[
0
],
e
[
1
]]);
});
}
_this
.
$forceUpdate
();
},
getUseType2
()
{
this
.
checkedkeys
=
[]
},
deleteProduct
(
item
,
index
)
{
this
.
AppointList
.
splice
(
index
,
1
)
for
(
let
i
=
0
;
i
<
this
.
checkedkeys
.
length
;
i
++
)
{
if
(
this
.
checkedkeys
[
i
]
==
item
.
ProductId
)
{
this
.
checkedkeys
.
splice
(
i
,
1
)
}
}
},
handleCurrentChange
(
val
)
{
this
.
msg2
.
pageIndex
=
val
;
this
.
getProductGoodsPageList
();
},
TreeList
(
val
,
e
)
{
this
.
eData
=
e
},
preserve
(
formName
)
{
this
.
$refs
[
formName
].
validate
((
valid
)
=>
{
if
(
valid
)
{
if
(
this
.
msg
.
value
.
length
>
0
)
{
this
.
msg
.
StartTime
=
this
.
msg
.
value
[
0
];
this
.
msg
.
EndTime
=
this
.
msg
.
value
[
1
];
this
.
msg
.
IndateDay
=
0
}
else
{
this
.
Error
(
'套餐卡有效期不能为空'
)
return
false
}
if
(
this
.
msg
.
RangeType
==
2
)
{
let
data
=
[]
this
.
commoditylist
.
forEach
(
x
=>
{
data
.
push
(
x
.
Id
)
})
this
.
msg
.
RangeIds
=
data
.
join
(
','
);
if
(
this
.
commoditylist
.
length
==
0
){
this
.
Error
(
'请选择指定商品'
);
return
;
}
}
else
if
(
this
.
msg
.
RangeType
==
1
)
{
let
data
=
[]
this
.
AppointList
.
forEach
(
x
=>
{
data
.
push
(
x
.
ProductId
)
})
this
.
msg
.
RangeIds
=
data
.
join
(
','
);
if
(
this
.
AppointList
.
length
==
0
){
this
.
Error
(
'请选择指定商品分类'
);
return
;
}
}
if
(
this
.
msg
.
Type
==
1
&&
(
this
.
msg
.
OrderNum
==
''
||
this
.
msg
.
OrderNum
==
null
||
this
.
msg
.
OrderNum
==
0
)
){
this
.
Error
(
'订单数量大于0'
);
return
;
}
else
if
(
this
.
msg
.
Type
==
2
&&
(
this
.
msg
.
OrderMoney
==
''
||
this
.
msg
.
OrderMoney
==
null
||
this
.
msg
.
OrderMoney
==
0
)
){
this
.
Error
(
'订单金额大于0'
);
return
;
}
else
if
(
this
.
msg
.
Type
==
3
&&
(
this
.
msg
.
GoodsNum
==
''
||
this
.
msg
.
GoodsNum
==
null
||
this
.
msg
.
GoodsNum
==
0
)
){
this
.
Error
(
'商品数量大于0'
);
return
;
}
console
.
log
(
this
.
msg
)
if
(
new
Date
(
this
.
msg
.
EndTime
).
getTime
()
>=
new
Date
(
this
.
msg
.
ReceiveTime
).
getTime
()){
this
.
Error
(
'兑换期限大于结束时期'
);
return
;
}
this
.
loading
=
true
this
.
apipost
(
"/api/product/SetGoodsActivityInfo"
,
this
.
msg
,
res
=>
{
this
.
loading
=
false
if
(
res
.
data
.
resultCode
==
1
)
{
this
.
Success
(
res
.
data
.
message
);
this
.
$router
.
go
(
-
1
);
//返回上一层
}
else
{
this
.
Info
(
res
.
data
.
message
);
}
})
}
else
{
return
false
;
}
});
},
getProductList
()
{
this
.
category
=
false
;
let
e
=
this
.
eData
;
let
ProductList
=
[]
this
.
checkedkeys
=
e
.
checkedKeys
;
if
(
e
.
checkedNodes
.
length
>
0
)
{
this
.
checkedkeys
.
forEach
(
x
=>
{
var
objList
=
this
.
getObjById
(
this
.
ProductCategoryTreeList
,
x
);
if
(
objList
)
{
for
(
var
i
=
0
;
i
<
this
.
AppointList
.
length
;
i
++
)
{
if
(
this
.
AppointList
[
i
].
ProductId
==
objList
.
Id
)
{
return
;
}
}
this
.
AppointList
.
push
({
ProductId
:
objList
.
Id
,
Name
:
objList
.
Name
})
}
})
}
},
getObjById
(
list
,
id
)
{
if
(
!
list
instanceof
Array
)
{
return
null
}
//遍历数组
for
(
let
i
in
list
)
{
let
item
=
list
[
i
]
if
(
item
.
Id
===
id
)
{
return
item
}
else
{
//查不到继续遍历
if
(
item
.
ChildList
)
{
let
value
=
this
.
getObjById
(
item
.
ChildList
,
id
)
//查询到直接返回
if
(
value
)
{
return
value
}
}
}
}
},
ChangeListName
(
val
)
{
this
.
SmallShopMsg
.
Name
=
val
;
this
.
getSmallShopsDropDownList
()
},
getSmallShopsDropDownList
()
{
this
.
apipost
(
"/api/SmallShops/GetAllSmallShopsList"
,
this
.
SmallShopMsg
,
res
=>
{
this
.
loading
=
false
if
(
res
.
data
.
resultCode
==
1
)
{
this
.
SmallShopData
=
res
.
data
.
data
}
else
{
this
.
Info
(
res
.
data
.
message
);
}
})
},
openChangeDig
(
type
)
{
this
.
imgtype
=
type
this
.
changeState
=
true
;
setTimeout
(()
=>
{
this
.
$refs
.
mychild
.
InitData
();
},
10
)
},
SelectId
(
msg
)
{
this
.
changeState
=
false
;
if
(
this
.
imgtype
==
1
){
this
.
msg
.
CoverImage
=
this
.
getIconLink
(
msg
.
url
);
}
else
if
(
this
.
imgtype
==
2
){
this
.
msg
.
PrizeImage
=
this
.
getIconLink
(
msg
.
url
);
}
},
},
mounted
()
{
}
}
</
script
>
<
style
>
.AddsetupActicity
.form-box
{
background
:
#fff
;
padding
:
20px
50%
20px
0
;
margin-top
:
10px
;
}
.AddsetupActicity
.el-input--small
.el-input__inner
{
height
:
32px
;
line-height
:
32px
;
}
.AddsetupActicity
.img_yuan
{
width
:
80px
;
height
:
80px
;
margin-top
:
5px
;
position
:
relative
;
}
.AddsetupActicity
.img_yuan
img
{
width
:
100%
;
height
:
100%
;
}
.AddsetupActicity
.el-date-editor
.el-range__icon
{
line-height
:
24px
;
}
.AddsetupActicity
.el-date-editor
.el-range-separator
{
line-height
:
24px
;
}
.AddsetupActicity
.el-date-editor
.el-range__close-icon
{
line-height
:
24px
;
}
.AddsetupActicity
.el-form-item__label
{
padding
:
0
20px
0
0
;
}
.AddsetupActicity
.form-body
{
background-color
:
#fff
;
padding
:
10px
50%
10px
20px
;
min-width
:
1000px
;
}
.AddsetupActicity
.splist
{
display
:
flex
;
flex-direction
:
row
;
flex-wrap
:
wrap
;
}
.AddsetupActicity
.app-image
{
width
:
50px
;
height
:
50px
;
border-radius
:
0%
;
background-position
:
center
center
;
}
</
style
>
src/components/setup/setupActivityList.vue
0 → 100644
View file @
0aa7ddba
<
template
>
<div
class=
"setupActivityList"
>
<div
class=
"el-card__header"
>
<span>
活动管理
</span>
<div
style=
"display: flex;flex-direction: row;align-items: center"
>
<el-button
type=
"primary"
class=
"el-button--small"
@
click=
"addRecharge"
>
新增
</el-button>
</div>
</div>
<div
class=
"content"
>
<div
style=
"display: flex;flex-direction: row;align-items: center"
>
<div
class=
"block"
>
<div
class=
"searchInput"
style=
"width:250px"
>
<el-input
style=
"display:inline-block;width:225px;height:30px"
placeholder=
"请输入活动名称搜索"
v-model=
"msg.ActivityName"
size=
"small"
@
clear=
"getList"
@
keyup
.
enter
.
native=
"getList"
clearable
>
</el-input>
<span
@
click=
"getList"
class=
"el-icon-search"
style=
"color:#979dad;font-size:14px;position:relative;top:1px"
></span>
</div>
<span
style=
"margin-left:15px"
>
是否启用:
</span>
<el-select
class=
"w120"
@
change=
"msg.pageIndex=1,getList()"
v-model=
"msg.Enable"
size=
"small"
placeholder=
"请选择"
>
<el-option
label=
"不限"
:value=
"0"
></el-option>
<el-option
label=
"是"
:value=
"1"
></el-option>
<el-option
label=
"否"
:value=
"2"
></el-option>
</el-select>
</div>
</div>
</div>
<div
style=
"padding: 20px;background: #fff;"
>
<el-table
:data=
"tableData"
header-cell-class-name=
"headClass"
style=
"width: 100%"
border
>
<el-table-column
prop=
"Id"
label=
"Id"
width=
"100"
>
</el-table-column>
<el-table-column
prop=
"ActivityName"
label=
"活动名称"
>
<template
slot-scope=
"scope"
>
<div
class=
"app-image"
:style=
"
{backgroundImage:'url(' + scope.row.CoverImage + ')',backgroundSize:'cover'}">
</div>
<div
flex=
"dir:left cross:center"
>
{{
scope
.
row
.
ActivityName
}}
</div>
</
template
>
</el-table-column>
<el-table-column
prop=
"Type"
label=
"活动规则"
>
<
template
slot-scope=
"scope"
>
<div
v-if=
"scope.row.Type==1"
>
订单数量:
{{
scope
.
row
.
OrderNum
}}
单
</div>
<div
v-if=
"scope.row.Type==2"
>
订单金额:
{{
scope
.
row
.
OrderNum
}}
远
</div>
<div
v-if=
"scope.row.Type==2"
>
商品数量:
{{
scope
.
row
.
OrderNum
}}
个
</div>
</
template
>
</el-table-column>
<el-table-column
prop=
"Type"
label=
"活动奖励信息"
>
<
template
slot-scope=
"scope"
>
<div
class=
"app-image"
:style=
"
{backgroundImage:'url(' + scope.row.PrizeImage + ')',backgroundSize:'cover'}">
</div>
<div
flex=
"dir:left cross:center"
>
{{
scope
.
row
.
PrizeName
}}
</div>
</
template
>
</el-table-column>
<el-table-column
label=
"范围类型"
prop=
"RangeType"
width=
"300"
>
<
template
slot-scope=
"scope"
>
<div
>
{{
scope
.
row
.
RangeType
==
1
?
'分类'
:
'指定商品'
}}
</div>
<span
style=
"font-size: 12px;color: #409EFF"
v-for=
"(x,y) in scope.row.RangeList"
:key=
"y"
>
{{
x
.
Name
}}{{
y
+
1
==
scope
.
row
.
RangeList
.
length
?
''
:
'、'
}}
</span>
</
template
>
</el-table-column>
<el-table-column
label=
"活动时间"
prop=
"StartTime"
width=
"200"
>
<
template
slot-scope=
"scope"
>
<div>
开始时间:
{{
scope
.
row
.
StartTime
}}
</div>
<div>
结束时间:
{{
scope
.
row
.
EndTime
}}
</div>
<div>
兑换期限:
{{
scope
.
row
.
ReceiveTime
}}
</div>
<div>
创建时间:
{{
scope
.
row
.
CreateDate
}}
</div>
</
template
>
</el-table-column>
<el-table-column
label=
"验证码长度"
prop=
"CodeLength"
>
<
template
slot-scope=
"scope"
>
<div
>
{{
scope
.
row
.
CodeLength
}}
位
</div>
</
template
>
</el-table-column>
<el-table-column
label=
"是否启用"
prop=
"Enable"
>
<
template
slot-scope=
"scope"
>
<div
>
{{
scope
.
row
.
Enable
==
1
?
'是'
:
'否'
}}
</div>
</
template
>
</el-table-column>
<el-table-column
fixed=
"right"
label=
"操作"
width=
"180"
>
<
template
slot-scope=
"scope"
>
<el-tooltip
class=
"item"
effect=
"dark"
content=
"启用"
placement=
"top"
v-if=
"scope.row.Enable==2"
>
<img
src=
"../../assets/img/userman/pass.png"
alt=
""
class=
"imgstyle"
@
click=
"grant(scope.row,1)"
v-if=
"scope.row.Enable==2"
>
</el-tooltip>
<el-tooltip
class=
"item"
effect=
"dark"
content=
"禁止"
placement=
"top"
v-if=
"scope.row.Enable==1"
>
<img
src=
"../../assets/img/userman/nopass.png"
alt=
""
class=
"imgstyle"
@
click=
"grant(scope.row,2)"
v-if=
"scope.row.Enable==1"
>
</el-tooltip>
<el-tooltip
class=
"item"
effect=
"dark"
content=
"编辑"
placement=
"top"
>
<img
src=
"../../assets/img/setup/edit.png"
alt=
""
class=
"imgstyle"
@
click=
"Edit(scope.row)"
>
</el-tooltip>
<el-tooltip
class=
"item"
effect=
"dark"
content=
"删除"
placement=
"top"
>
<img
src=
"../../assets/img/setup/del.png"
alt=
""
class=
"imgstyle"
@
click=
"delete_b(scope.row)"
>
</el-tooltip>
</
template
>
</el-table-column>
</el-table>
<el-pagination
style=
"text-align:right"
background
@
current-change=
"handleCurrentChange"
:page-size=
"msg.pageSize"
layout=
"prev, pager, next"
:current-page
.
sync=
"msg.pageIndex"
:total=
"count"
>
</el-pagination>
</div>
</div>
</template>
<
script
>
export
default
{
name
:
"setupActivityList"
,
data
(){
return
{
msg
:{
pageIndex
:
1
,
pageSize
:
20
,
ActivityName
:
''
,
Enable
:
0
,
},
tableData
:[],
count
:
0
,
loading
:
false
}
},
created
(){
this
.
getDateList
();
},
methods
:{
getDateList
(){
this
.
loading
=
true
;
this
.
apipost
(
"/api/product/GetGoodsActivityPageList"
,
this
.
msg
,
res
=>
{
this
.
loading
=
false
;
if
(
res
.
data
.
resultCode
==
1
){
this
.
tableData
=
res
.
data
.
data
.
pageData
;
this
.
count
=
res
.
data
.
data
.
count
;
}
else
{
this
.
Info
(
res
.
data
.
message
);
}
})
},
addRecharge
(){
this
.
$router
.
push
(
'/AddsetupActicity'
);
},
grant
(
row
,
type
){
this
.
apipost
(
"/api/product/SetGoodsActivityState"
,
{
ActivityId
:
row
.
Id
,
Type
:
type
},
res
=>
{
if
(
res
.
data
.
resultCode
==
1
)
{
this
.
Success
(
res
.
data
.
message
);
this
.
getDateList
();
}
else
{
this
.
Error
(
res
.
data
.
message
);
}
},
);
},
Edit
(
row
){
this
.
$router
.
push
({
name
:
'AddsetupActicity'
,
query
:
{
ID
:
row
.
Id
,
blank
:
"y"
}
});
},
delete_b
(
row
){
let
that
=
this
;
that
.
Confirm
(
"是否删除?"
,
function
()
{
that
.
apipost
(
"/api/product/SetGoodsActivityState"
,
{
ActivityId
:
row
.
Id
,
Type
:
3
},
res
=>
{
if
(
res
.
data
.
resultCode
==
1
)
{
that
.
Success
(
res
.
data
.
message
);
that
.
getDateList
();
}
else
{
that
.
Error
(
res
.
data
.
message
);
}
},
);
});
},
SetUp
(){
this
.
$router
.
push
(
'/rechargeSet'
);
},
getList
(){
this
.
msg
.
pageIndex
=
1
this
.
getDateList
()
},
dianswitch
(
row
){
this
.
apipost
(
"/api/Reserve/UpdatePickupType"
,
{
'Id'
:
row
.
ID
},
res
=>
{
if
(
res
.
data
.
resultCode
==
1
){
this
.
Success
(
res
.
data
.
message
);
}
else
{
this
.
Info
(
res
.
data
.
message
);
}
})
},
handleCurrentChange
(
val
)
{
this
.
msg
.
pageIndex
=
val
;
this
.
getDateList
();
},
},
}
</
script
>
<
style
>
.setupActivityList
.el-card__header
{
display
:
flex
;
flex-direction
:
row
;
align-items
:
center
;
justify-content
:
space-between
;
background
:
#fff
;
}
.setupActivityList
.el-button--small
{
padding
:
9px
15px
;
}
.setupActivityList
.content
.searchInput
{
border
:
1px
solid
#DCDFE6
;
border-radius
:
4px
;
margin-left
:
20px
;
}
.setupActivityList
.content
.searchInput
.el-input__inner
{
border
:
none
;
outline
:
none
;
height
:
30px
;
line-height
:
30px
;
}
.setupActivityList
.content
.searchInput
{
line-height
:
normal
;
display
:
inline-table
;
border-collapse
:
separate
;
border-spacing
:
0
;
width
:
250px
;
}
.setupActivityList
.content
{
background
:
#fff
;
margin-top
:
10px
;
padding
:
15px
;
box-sizing
:
border-box
;
}
.setupActivityList
.app-image
{
background-position
:
center
center
;
width
:
50px
;
height
:
50px
;
border-radius
:
0%
;
float
:
left
;
margin-right
:
8px
;
}
</
style
>
src/components/setup/winningList.vue
0 → 100644
View file @
0aa7ddba
<
template
>
</
template
>
<
script
>
export
default
{
name
:
"winningList"
}
</
script
>
<
style
scoped
>
</
style
>
src/router/index.js
View file @
0aa7ddba
...
...
@@ -911,6 +911,22 @@ export default new Router({
name
:
'addFreeshipping'
,
component
:
resolve
=>
require
([
'@/components/setup/addFreeshipping'
],
resolve
),
},
//活动设置 活动列表
{
path
:
'/setupActivityList'
,
name
:
'setupActivityList'
,
component
:
resolve
=>
require
([
'@/components/setup/setupActivityList'
],
resolve
),
},
//活动设置 中奖列表
{
path
:
'/winningList'
,
name
:
'winningList'
,
component
:
resolve
=>
require
([
'@/components/setup/winningList'
],
resolve
),
},
//活动设置 新增和修改
{
path
:
'/AddsetupActicity'
,
name
:
'AddsetupActicity'
,
component
:
resolve
=>
require
([
'@/components/setup/AddsetupActicity'
],
resolve
),
},
//店铺管理 导航图标
{
path
:
'/navigationIcon'
,
...
...
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