Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
O
op-web-service
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
bp
op-web-service
Commits
121e76bb
Commit
121e76bb
authored
Jul 05, 2021
by
mengwenhao
Browse files
Options
Browse Files
Download
Plain Diff
update:更新dev分支代码
parents
1544be44
ea228ac7
Changes
5
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
727 additions
and
233 deletions
+727
-233
package-lock.json
package-lock.json
+52
-81
goods.js
server/controllers/goods.js
+59
-3
router.js
server/router.js
+7
-2
index.vue
src/pages/Goods/Retail/index.vue
+583
-147
goods.js
src/service/Goods/goods.js
+26
-0
No files found.
package-lock.json
View file @
121e76bb
...
@@ -2487,6 +2487,17 @@
...
@@ -2487,6 +2487,17 @@
"color-convert"
:
"^2.0.1"
"color-convert"
:
"^2.0.1"
}
}
},
},
"chalk"
:
{
"version"
:
"4.1.1"
,
"resolved"
:
"https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz"
,
"integrity"
:
"sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg=="
,
"dev"
:
true
,
"optional"
:
true
,
"requires"
:
{
"ansi-styles"
:
"^4.1.0"
,
"supports-color"
:
"^7.1.0"
}
},
"cliui"
:
{
"cliui"
:
{
"version"
:
"6.0.0"
,
"version"
:
"6.0.0"
,
"resolved"
:
"https://registry.npm.taobao.org/cliui/download/cliui-6.0.0.tgz"
,
"resolved"
:
"https://registry.npm.taobao.org/cliui/download/cliui-6.0.0.tgz"
,
...
@@ -2522,6 +2533,25 @@
...
@@ -2522,6 +2533,25 @@
"ms"
:
"2.1.2"
"ms"
:
"2.1.2"
}
}
},
},
"has-flag"
:
{
"version"
:
"4.0.0"
,
"resolved"
:
"https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz"
,
"integrity"
:
"sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ=="
,
"dev"
:
true
,
"optional"
:
true
},
"loader-utils"
:
{
"version"
:
"2.0.0"
,
"resolved"
:
"https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.0.tgz"
,
"integrity"
:
"sha512-rP4F0h2RaWSvPEkD7BLDFQnvSf+nK+wr3ESUjNTyAGobqrijmW92zc+SO6d4p4B1wh7+B/Jg1mkQe5NYUEHtHQ=="
,
"dev"
:
true
,
"optional"
:
true
,
"requires"
:
{
"big.js"
:
"^5.2.2"
,
"emojis-list"
:
"^3.0.0"
,
"json5"
:
"^2.1.2"
}
},
"ms"
:
{
"ms"
:
{
"version"
:
"2.1.2"
,
"version"
:
"2.1.2"
,
"resolved"
:
"https://registry.npm.taobao.org/ms/download/ms-2.1.2.tgz?cache=0&sync_timestamp=1607433988749&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fms%2Fdownload%2Fms-2.1.2.tgz"
,
"resolved"
:
"https://registry.npm.taobao.org/ms/download/ms-2.1.2.tgz?cache=0&sync_timestamp=1607433988749&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fms%2Fdownload%2Fms-2.1.2.tgz"
,
...
@@ -2537,6 +2567,28 @@
...
@@ -2537,6 +2567,28 @@
"minipass"
:
"^3.1.1"
"minipass"
:
"^3.1.1"
}
}
},
},
"supports-color"
:
{
"version"
:
"7.2.0"
,
"resolved"
:
"https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz"
,
"integrity"
:
"sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw=="
,
"dev"
:
true
,
"optional"
:
true
,
"requires"
:
{
"has-flag"
:
"^4.0.0"
}
},
"vue-loader-v16"
:
{
"version"
:
"npm:vue-loader@16.2.0"
,
"resolved"
:
"https://registry.npmjs.org/vue-loader/-/vue-loader-16.2.0.tgz"
,
"integrity"
:
"sha512-TitGhqSQ61RJljMmhIGvfWzJ2zk9m1Qug049Ugml6QP3t0e95o0XJjk29roNEiPKJQBEi8Ord5hFuSuELzSp8Q=="
,
"dev"
:
true
,
"optional"
:
true
,
"requires"
:
{
"chalk"
:
"^4.1.0"
,
"hash-sum"
:
"^2.0.0"
,
"loader-utils"
:
"^2.0.0"
}
},
"wrap-ansi"
:
{
"wrap-ansi"
:
{
"version"
:
"6.2.0"
,
"version"
:
"6.2.0"
,
"resolved"
:
"https://registry.npm.taobao.org/wrap-ansi/download/wrap-ansi-6.2.0.tgz"
,
"resolved"
:
"https://registry.npm.taobao.org/wrap-ansi/download/wrap-ansi-6.2.0.tgz"
,
...
@@ -16434,87 +16486,6 @@
...
@@ -16434,87 +16486,6 @@
}
}
}
}
},
},
"vue-loader-v16"
:
{
"version"
:
"npm:vue-loader@16.2.0"
,
"resolved"
:
"https://registry.nlark.com/vue-loader/download/vue-loader-16.2.0.tgz?cache=0&sync_timestamp=1620717743226&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fvue-loader%2Fdownload%2Fvue-loader-16.2.0.tgz"
,
"integrity"
:
"sha1-BGpTMI3Ufljv4g3ewe3sAnzjtG4="
,
"dev"
:
true
,
"optional"
:
true
,
"requires"
:
{
"chalk"
:
"^4.1.0"
,
"hash-sum"
:
"^2.0.0"
,
"loader-utils"
:
"^2.0.0"
},
"dependencies"
:
{
"ansi-styles"
:
{
"version"
:
"4.3.0"
,
"resolved"
:
"https://registry.nlark.com/ansi-styles/download/ansi-styles-4.3.0.tgz?cache=0&sync_timestamp=1618995547052&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fansi-styles%2Fdownload%2Fansi-styles-4.3.0.tgz"
,
"integrity"
:
"sha1-7dgDYornHATIWuegkG7a00tkiTc="
,
"dev"
:
true
,
"optional"
:
true
,
"requires"
:
{
"color-convert"
:
"^2.0.1"
}
},
"chalk"
:
{
"version"
:
"4.1.1"
,
"resolved"
:
"https://registry.nlark.com/chalk/download/chalk-4.1.1.tgz?cache=0&sync_timestamp=1618995354302&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fchalk%2Fdownload%2Fchalk-4.1.1.tgz"
,
"integrity"
:
"sha1-yAs/qyi/Y3HmhjMl7uZ+YYt35q0="
,
"dev"
:
true
,
"optional"
:
true
,
"requires"
:
{
"ansi-styles"
:
"^4.1.0"
,
"supports-color"
:
"^7.1.0"
}
},
"color-convert"
:
{
"version"
:
"2.0.1"
,
"resolved"
:
"https://registry.npm.taobao.org/color-convert/download/color-convert-2.0.1.tgz"
,
"integrity"
:
"sha1-ctOmjVmMm9s68q0ehPIdiWq9TeM="
,
"dev"
:
true
,
"optional"
:
true
,
"requires"
:
{
"color-name"
:
"~1.1.4"
}
},
"color-name"
:
{
"version"
:
"1.1.4"
,
"resolved"
:
"https://registry.npm.taobao.org/color-name/download/color-name-1.1.4.tgz"
,
"integrity"
:
"sha1-wqCah6y95pVD3m9j+jmVyCbFNqI="
,
"dev"
:
true
,
"optional"
:
true
},
"has-flag"
:
{
"version"
:
"4.0.0"
,
"resolved"
:
"https://registry.npm.taobao.org/has-flag/download/has-flag-4.0.0.tgz"
,
"integrity"
:
"sha1-lEdx/ZyByBJlxNaUGGDaBrtZR5s="
,
"dev"
:
true
,
"optional"
:
true
},
"loader-utils"
:
{
"version"
:
"2.0.0"
,
"resolved"
:
"https://registry.npm.taobao.org/loader-utils/download/loader-utils-2.0.0.tgz"
,
"integrity"
:
"sha1-5MrOW4FtQloWa18JfhDNErNgZLA="
,
"dev"
:
true
,
"optional"
:
true
,
"requires"
:
{
"big.js"
:
"^5.2.2"
,
"emojis-list"
:
"^3.0.0"
,
"json5"
:
"^2.1.2"
}
},
"supports-color"
:
{
"version"
:
"7.2.0"
,
"resolved"
:
"https://registry.nlark.com/supports-color/download/supports-color-7.2.0.tgz?cache=0&sync_timestamp=1622293630895&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fsupports-color%2Fdownload%2Fsupports-color-7.2.0.tgz"
,
"integrity"
:
"sha1-G33NyzK4E4gBs+R4umpRyqiWSNo="
,
"dev"
:
true
,
"optional"
:
true
,
"requires"
:
{
"has-flag"
:
"^4.0.0"
}
}
}
},
"vue-router"
:
{
"vue-router"
:
{
"version"
:
"4.0.8"
,
"version"
:
"4.0.8"
,
"resolved"
:
"https://registry.nlark.com/vue-router/download/vue-router-4.0.8.tgz"
,
"resolved"
:
"https://registry.nlark.com/vue-router/download/vue-router-4.0.8.tgz"
,
...
...
server/controllers/goods.js
View file @
121e76bb
...
@@ -68,7 +68,17 @@ exports.getGoodsInfo = async ctx => {
...
@@ -68,7 +68,17 @@ exports.getGoodsInfo = async ctx => {
};
};
// 商品审核通过
// 商品审核通过
exports
.
postSuccess
=
async
ctx
=>
{
exports
.
postSuccess
=
async
ctx
=>
{
const
url
=
`
${
GOODS_URI
}
/goods/background/audit_pass`
;
const
opts
=
{
url
:
`
${
GOODS_URI
}
/goods/background/audit_pass`
,
method
:
"POST"
,
json
:
true
,
body
:
ctx
.
request
.
body
};
ctx
.
body
=
await
req
(
ctx
,
opts
);
};
// 营销活动列表
exports
.
getMarketingList
=
async
ctx
=>
{
const
url
=
`
${
GOODS_URI
}
/marketing/background/marketing_list`
;
const
opts
=
{
const
opts
=
{
url
,
url
,
method
:
"POST"
,
method
:
"POST"
,
...
@@ -87,6 +97,17 @@ exports.checkGoodsName = async ctx => {
...
@@ -87,6 +97,17 @@ exports.checkGoodsName = async ctx => {
};
};
ctx
.
body
=
await
req
(
ctx
,
opts
);
ctx
.
body
=
await
req
(
ctx
,
opts
);
};
};
// 获取查询活动列表
exports
.
getFindGoodsList
=
async
ctx
=>
{
const
url
=
`
${
GOODS_URI
}
/marketing/background/goods_list`
;
const
opts
=
{
url
,
method
:
"POST"
,
json
:
true
,
body
:
ctx
.
request
.
body
};
ctx
.
body
=
await
req
(
ctx
,
opts
);
};
// 审核拒绝
// 审核拒绝
exports
.
auditReject
=
async
ctx
=>
{
exports
.
auditReject
=
async
ctx
=>
{
const
opts
=
{
const
opts
=
{
...
@@ -96,6 +117,18 @@ exports.auditReject = async ctx => {
...
@@ -96,6 +117,18 @@ exports.auditReject = async ctx => {
body
:
ctx
.
request
.
body
body
:
ctx
.
request
.
body
};
};
ctx
.
body
=
await
req
(
ctx
,
opts
);
ctx
.
body
=
await
req
(
ctx
,
opts
);
}
// 添加活动列表
exports
.
getAddMarketingList
=
async
ctx
=>
{
const
url
=
`
${
GOODS_URI
}
/marketing/background/add_marketing`
;
const
opts
=
{
url
,
method
:
"POST"
,
json
:
true
,
body
:
ctx
.
request
.
body
};
ctx
.
body
=
await
req
(
ctx
,
opts
);
};
};
// 获取门店列表
// 获取门店列表
exports
.
getShopsList
=
async
ctx
=>
{
exports
.
getShopsList
=
async
ctx
=>
{
...
@@ -115,6 +148,17 @@ exports.addShop = async ctx => {
...
@@ -115,6 +148,17 @@ exports.addShop = async ctx => {
body
:
ctx
.
request
.
body
body
:
ctx
.
request
.
body
};
};
ctx
.
body
=
await
req
(
ctx
,
opts
);
ctx
.
body
=
await
req
(
ctx
,
opts
);
}
// 查看列表详情
exports
.
getMarketingInfo
=
async
ctx
=>
{
const
url
=
`
${
GOODS_URI
}
/marketing/background/marketing_info`
;
const
opts
=
{
url
,
method
:
"POST"
,
json
:
true
,
body
:
ctx
.
request
.
body
};
ctx
.
body
=
await
req
(
ctx
,
opts
);
};
};
// 修改商品
// 修改商品
exports
.
editGoods
=
async
ctx
=>
{
exports
.
editGoods
=
async
ctx
=>
{
...
@@ -123,6 +167,18 @@ exports.editGoods = async ctx => {
...
@@ -123,6 +167,18 @@ exports.editGoods = async ctx => {
method
:
"POST"
,
method
:
"POST"
,
json
:
true
,
json
:
true
,
body
:
ctx
.
request
.
body
body
:
ctx
.
request
.
body
}
;
}
ctx
.
body
=
await
req
(
ctx
,
opts
);
ctx
.
body
=
await
req
(
ctx
,
opts
);
}
};
\ No newline at end of file
// 开启关闭状态
exports
.
updateMarketingList
=
async
ctx
=>
{
const
url
=
`
${
GOODS_URI
}
/marketing/background/update_marketing`
;
const
opts
=
{
url
,
method
:
"POST"
,
json
:
true
,
body
:
ctx
.
request
.
body
};
const
res
=
await
req
(
ctx
,
opts
);
ctx
.
body
=
res
;
};
server/router.js
View file @
121e76bb
...
@@ -49,8 +49,13 @@ router.post(`${API_VERSION}/goods/background/audit_reject`, goods.auditReject);
...
@@ -49,8 +49,13 @@ router.post(`${API_VERSION}/goods/background/audit_reject`, goods.auditReject);
router
.
get
(
`
${
API_VERSION
}
/shop/background/shop_list`
,
goods
.
getShopsList
);
router
.
get
(
`
${
API_VERSION
}
/shop/background/shop_list`
,
goods
.
getShopsList
);
router
.
post
(
`
${
API_VERSION
}
/shop/background/add_shop`
,
goods
.
addShop
);
router
.
post
(
`
${
API_VERSION
}
/shop/background/add_shop`
,
goods
.
addShop
);
router
.
post
(
`
${
API_VERSION
}
/goods/background/edit_goods`
,
goods
.
editGoods
)
router
.
post
(
`
${
API_VERSION
}
/goods/background/edit_goods`
,
goods
.
editGoods
)
router
.
get
(
`
${
API_VERSION
}
/get_goods_category_list`
,
goods
.
getCategoryList
)
// 营销活动
router
.
post
(
`
${
API_VERSION
}
/get_marketing_list`
,
goods
.
getMarketingList
)
router
.
post
(
`
${
API_VERSION
}
/get_addmarketing_list`
,
goods
.
getAddMarketingList
)
router
.
post
(
`
${
API_VERSION
}
/get_find_goods_list`
,
goods
.
getFindGoodsList
)
router
.
post
(
`
${
API_VERSION
}
/get_marketing_info`
,
goods
.
getMarketingInfo
)
router
.
post
(
`
${
API_VERSION
}
/update_marketing_list`
,
goods
.
updateMarketingList
)
//生活号
//生活号
router
.
post
(
`
${
API_VERSION
}
/merchant/lifeinner/life_info`
,
life
.
get_life_info
)
router
.
post
(
`
${
API_VERSION
}
/merchant/lifeinner/life_info`
,
life
.
get_life_info
)
router
.
get
(
`
${
API_VERSION
}
/merchant/lifeinner/life_list`
,
life
.
get_life_list
)
router
.
get
(
`
${
API_VERSION
}
/merchant/lifeinner/life_list`
,
life
.
get_life_list
)
...
...
src/pages/Goods/Retail/index.vue
View file @
121e76bb
<
template
>
<
template
>
<el-card
class=
"container"
>
<el-card
class=
"container"
style=
"width: 100%; height: 100%"
>
<div
class=
"retail"
>
<div
class=
"retail"
>
<el-form
inline
>
<el-form
inline
:model=
"retailActivitie"
ref=
"retailActivitie"
>
<el-form-item
label=
"分销活动id"
>
<!-- 查询 -->
<el-input
size=
"mini"
></el-input>
<el-row>
</el-form-item>
<el-form-item
label=
"分销活动id"
prop=
"marketing_id"
>
<el-form-item
class=
"search_input"
label=
"分销活动名称"
>
<!-- :rules="[
{ type: 'number', message: '活动id必须为数字值' }]" -->
<el-input
size=
"mini"
></el-input>
<el-input
</el-form-item>
onkeyup=
"value=value.replace(/[^\d]/g,'')"
<el-form
style=
"margin-left: 30px"
>
v-model
.
number=
"retailActivitie.marketing_id"
></el-input>
</el-form-item>
<el-form-item
label=
"分销活动名称"
>
<el-input
v-model=
"retailActivitie.marketing_name"
></el-input>
</el-form-item>
<el-form-item
label=
"商品id"
>
<el-input
v-model=
"retailActivitie.goods_sku_id"
></el-input>
</el-form-item>
<el-form-item
label=
"状态"
>
<el-form-item
label=
"状态"
>
<el-button
class=
"but but_one"
type=
"info"
plain
size=
"mini"
<el-select
>
全部
</el-button
v-model=
"retailActivitie.online_status"
>
multiple
<el-button
class=
"but"
type=
"info"
plain
size=
"mini"
collapse-tags
>
到期
</el-button
>
<el-button
class=
"but"
type=
"info"
plain
size=
"mini"
>
启用
</el-button
>
<el-button
class=
"but"
type=
"info"
plain
size=
"mini"
>
关闭
</el-button
>
>
<el-option
v-for=
"item in options"
:key=
"item.value"
:label=
"item.label"
:value=
"item.value"
></el-option>
</el-select>
</el-form-item>
</el-form-item>
</el-form>
<!-- 按钮操作 -->
<el-button
<el-form-item
class=
"search_button"
>
type=
"primary"
<el-button
type=
"primary"
@
click=
"toSearch"
>
搜索
</el-button>
style=
"margin-bottom: 10px"
<el-button
@
click=
"reset('retailActivitie')"
>
重置
</el-button>
@
click=
"dialogFormVisible = true"
</el-form-item>
</el-row>
<el-button
type=
"primary"
style=
"margin-bottom: 10px"
@
click=
"createDtb"
>
创建分销活动
</el-button
>
创建分销活动
</el-button
>
>
<el-table
<!-- Tab -->
:data=
"tableData"
<el-table
:data=
"tableData"
type=
"index"
align=
"center"
border
>
align=
"center"
:header-cell-style=
"
{ background: '#eee', color: '#606266' }"
style="width: 100%"
size="mini"
>
<el-table-column
<el-table-column
align=
"center"
align=
"center"
prop=
"
date
"
prop=
"
marketing_id
"
fixed
fixed
label=
"分销活动id"
label=
"分销活动id"
width=
"100"
>
>
</el-table-column>
</el-table-column>
<el-table-column
<el-table-column
align=
"center"
align=
"center"
prop=
"name"
prop=
"
marketing_
name"
label=
"分销活动名称"
label=
"分销活动名称"
width=
"100"
>
>
</el-table-column>
</el-table-column>
<el-table-column
<el-table-column
align=
"center"
align=
"center"
prop=
"
provinc
e"
prop=
"
commission_mod
e"
label=
"关联商品数"
label=
"关联商品数"
width=
"100"
>
>
</el-table-column>
</el-table-column>
<el-table-column
<el-table-column
align=
"center"
align=
"center"
prop=
"first"
prop=
"first
_commission_value
"
label=
"一级分销金额"
label=
"一级分销金额"
width=
"120"
>
>
</el-table-column>
</el-table-column>
<el-table-column
<el-table-column
align=
"center"
align=
"center"
prop=
"second"
prop=
"second
_commission_value
"
label=
"二级分销金额"
label=
"二级分销金额"
width=
"120"
>
>
</el-table-column>
</el-table-column>
<el-table-column
align=
"center"
prop=
"state"
label=
"状态"
width=
"100"
>
<el-table-column
align=
"center"
prop=
"online_status"
label=
"状态"
>
</el-table-column>
<template
#
default=
"scope"
>
<el-table-column
align=
"center"
prop=
"founder"
label=
"创建人"
width=
"100"
>
<span
:style=
"
{ color: scope.row.online_status == 3 ? 'red' : '' }"
>
{{
scope
.
row
.
online_status
==
2
?
"关闭"
:
scope
.
row
.
online_status
==
1
?
"启用"
:
"到期"
}}
</span>
</
template
>
</el-table-column>
</el-table-column>
<el-table-column
<el-table-column
align=
"center"
align=
"center"
prop=
"creation-time"
prop=
"create_user_email"
label=
"创建时间"
label=
"创建人"
width=
"100"
>
>
</el-table-column>
</el-table-column>
<el-table-column
<el-table-column
align=
"center"
prop=
"create_time"
label=
"创建时间"
>
align=
"center"
prop=
"update_time"
label=
"更新时间"
width=
"100"
>
</el-table-column>
</el-table-column>
<el-table-column
<el-table-column
align=
"center"
prop=
"update_time"
label=
"更新时间"
>
align=
"center"
prop=
"due_time"
label=
"分销到期时间"
width=
"150"
>
</el-table-column>
</el-table-column>
<el-table-column
<el-table-column
align=
"center"
prop=
"end_time"
label=
"分销到期时间"
>
align=
"center"
</el-table-column>
:header-cell-style=
"
{ background: 'none' }"
<el-table-column
fixed=
"right"
align=
"center"
label=
"操作"
>
label="操作"
>
<
template
#
default=
"scope"
>
<
template
#
default=
"scope"
>
<el-button
@
click=
"handleClick(scope.row)"
type=
"text"
size=
"mini"
<el-button
@
click=
"handleClick(scope.row)"
type=
"text"
size=
"mini"
>
查看
</el-button
>
查看
</el-button
>
>
<el-button
type=
"text"
size=
"mini"
>
关闭
</el-button>
<el-button
<el-button
type=
"text"
size=
"mini"
>
启用
</el-button>
type=
"text"
size=
"mini"
@
click
.
stop=
"handelEnable(scope.row, 2)"
v-if=
"
scope.row.online_status === 1 && scope.row.online_status !== 3
"
>
关闭
</el-button>
<el-button
type=
"text"
size=
"mini"
v-if=
"
scope.row.online_status === 2 && scope.row.online_status !== 3
"
@
click
.
stop=
"handelEnable(scope.row, 1)"
>
启用
</el-button
>
</
template
>
</
template
>
</el-table-column>
</el-table-column>
</el-table>
</el-table>
</el-form>
</el-form>
</div>
</div>
<!-- 页码区 -->
<el-pagination
class=
"pagination"
@
current-change=
"handleCurrentChange"
v-model
.
current-page=
"retailActivitie.page"
:page-size=
"retailActivitie.page_size"
layout=
"prev, pager, next, jumper, ->,page , total"
:total=
"retailActivitie.count"
>
</el-pagination>
</el-card>
</el-card>
<!-- 创建分销活动 -->
<!-- 创建分销活动 -->
<el-dialog
fullscreen
title=
"创建分销活动"
v-model=
"dialogFormVisible"
width=
"100%"
>
<el-dialog
v-show=
"shopStart == 0"
fullscreen
title=
"创建分销活动"
v-model=
"dialogFormVisible"
width=
"100%"
:show-close=
"false"
dialogClass=
"no-close"
>
<div
class=
"bor"
>
<div
class=
"bor"
>
<el-row
:gutter=
"50"
>
<el-row
:gutter=
"50"
>
<el-col
:span=
"12"
>
<el-col
:span=
"12"
>
<el-form
:model=
"form"
size=
"small"
label-width=
"150px"
>
<el-form
<el-form-item
label=
"分销活动名称:"
>
:model=
"ruleForm"
<el-input
autocomplete=
"off"
></el-input>
:rules=
"rules"
</el-form-item>
ref=
"ruleForm"
<el-form-item
label=
"一级佣金:"
:label-width=
"formLabelWidth"
>
size=
"small"
<el-input></el-input>
label-width=
"150px"
>
<el-form-item
prop=
"marketing_name"
label=
"分销活动名称:"
class=
"marketing"
>
<el-input
v-model=
"ruleForm.marketing_name"
autocomplete=
"off"
:disabled=
"shopStart !== 0"
></el-input>
</el-form-item>
</el-form-item>
<el-form-item
label=
"二级佣金:"
:label-width=
"formLabelWidth"
>
<el-form-item
label=
"一级佣金:"
prop=
"first_commission_value"
>
<el-input></el-input>
<el-input
v-model=
"ruleForm.first_commission_value"
:disabled=
"shopStart !== 0"
></el-input>
</el-form-item>
</el-form-item>
<el-form-item
label=
"
活动生效时间:"
:label-width=
"formLabelWidth
"
>
<el-form-item
label=
"
二级佣金:
"
>
<el-input
<el-input
placeholder=
"2016-09-21 08:50:08~2016-09-21 08:50:08"
v-model=
"ruleForm.second_commission_value"
:disabled=
"shopStart !== 0"
></el-input>
></el-input>
</el-form-item>
</el-form-item>
<el-form-item
label=
"活动生效时间:"
>
<el-date-picker
v-model=
"timeSelect"
:disabled=
"shopStart !== 0"
type=
"datetimerange"
range-separator=
"至"
start-placeholder=
"开始日期"
end-placeholder=
"结束日期"
format=
"YYYY-MM-DD HH:mm:ss"
@
change=
"selectTime"
>
</el-date-picker>
</el-form-item>
</el-form>
</el-form>
</el-col>
</el-col>
<el-col
:span=
"12"
>
<el-col
:span=
"12"
>
<el-form
inline
ref=
"form"
:model=
"form"
size=
"mini"
>
<el-form
<el-form-item
label=
"关联商品:"
>
</el-form-item>
inline
<el-form-item
label=
"商品id:"
>
:model=
"ruleIdForm"
<el-input></el-input>
:rules=
"rules"
</el-form-item>
ref=
"ruleIdForm"
<el-form-item
label=
"生活号id:"
>
size=
"mini"
<el-input></el-input>
>
</el-form-item>
<div
class=
"queryBox"
v-show=
"shopStart == 0"
>
<div
class=
"tab"
>
<el-form-item
label=
"关联商品:"
>
</el-form-item>
<el-table
class=
"exporttable"
size=
"mini"
align=
"center"
:data=
"tableData"
border
style=
"width: 100%;border-color:#606266"
:header-cell-style=
"{borderColor:'#606266'}"
:cell-style=
"{borderColor:'#606266'}"
>
<el-form-item
label=
"商品id:"
>
<el-table-column
align=
"center"
type=
"selection"
>
<el-input
v-model=
"ruleIdForm.goods_sku_id"
:disabled=
"shopStart !== 0"
></el-input>
</el-form-item>
<el-form-item
label=
"生活号id:"
>
<el-input
v-model=
"ruleIdForm.life_account_id"
:disabled=
"shopStart !== 0"
></el-input>
</el-form-item>
<el-button
type=
"primary"
size=
"mini"
style=
"margin-bottom: 30px"
@
click=
"findProducts"
>
查询
</el-button
>
</div>
<div
:class=
"shopStart == 0 ? 'newTab' : 'readTab'"
>
<el-table
class=
"exporttable"
size=
"mini"
align=
"center"
:data=
"goods_list"
max-height=
"200"
border
style=
"width: 100%"
@
selection-change=
"selectGoodsChange"
>
<el-table-column
align=
"center"
type=
"selection"
>
</el-table-column>
</el-table-column>
<el-table-column
align=
"center"
prop=
"date"
label=
"商品id"
>
<el-table-column
align=
"center"
prop=
"goods_sku_id"
label=
"商品id"
>
</el-table-column>
</el-table-column>
<el-table-column
align=
"center"
prop=
"name"
label=
"商品名称"
>
<el-table-column
align=
"center"
prop=
"goods_name"
label=
"商品名称"
>
</el-table-column>
<el-table-column
align=
"center"
prop=
"life_account_id"
label=
"生活号id"
>
</el-table-column>
<el-table-column
align=
"center"
prop=
"life_account_name"
label=
"生活号名称"
>
</el-table-column>
</el-table-column>
<el-table-column
align=
"center"
prop=
"address"
label=
"生活号id"
>
</el-table-column>
<el-table-column
align=
"center"
prop=
"address"
label=
"生活号名称"
>
</el-table-column>
</el-table>
</el-table>
</div>
</div>
</el-form>
</el-form>
</el-col>
</el-col>
</el-row>
</el-row>
</div>
</div>
<
template
#
footer
>
<
template
#
footer
>
<span
class=
"dialog-footer"
>
<span
class=
"dialog-footer"
>
<el-button
type=
"primary"
@
click=
"dialogFormVisible = false"
style=
"width:150px"
>
取 消
</el-button>
<el-button
type=
"primary"
@
click=
"cancel"
style=
"width: 150px"
>
{{
<el-button
type=
"primary"
@
click=
"dialogFormVisible = false"
style=
"width:150px"
>
确 定
</el-button>
shopStart
==
0
?
"取消"
:
"返回"
</span>
}}
</el-button>
</
template
>
<el-button
type=
"primary"
@
click=
"addList"
style=
"width: 150px"
v-if=
"shopStart == 0"
>
确 定
</el-button
>
</span>
</
template
>
</el-dialog>
</el-dialog>
</template>
</template>
<
script
>
<
script
>
import
{
getMarketingList
,
getFindGoodsList
,
getAddMarketingList
,
getMarketingInfo
,
updateMarketingList
,
}
from
"@/service/Goods/goods"
;
import
{
ElMessage
}
from
"element-plus"
;
// 开启关闭防抖
function
debounce
(
callback
,
delay
)
{
let
timer
=
null
;
return
function
(...
args
)
{
if
(
timer
)
{
clearTimeout
(
timer
);
}
timer
=
setTimeout
(()
=>
{
timer
=
null
;
return
callback
.
call
(
this
,
...
args
);
},
delay
);
};
}
export
default
{
export
default
{
name
:
"GoodsRetail"
,
name
:
"GoodsRetail"
,
data
()
{
data
()
{
return
{
return
{
tableData
:
[
tableData
:
[{
create_user_email
:
"v-pengyuqian@yidian-inc.com"
}],
{
// 详情页
date
:
"2016-05-02"
,
detailInfo
:
{
name
:
"xxx"
,
marketing_name
:
""
,
province
:
"上海"
,
first_commission_value
:
""
,
city
:
"普陀区"
,
second_commission_value
:
""
,
address
:
"上海市普陀区金沙江路 1518 弄"
,
start_time
:
""
,
zip
:
"启用"
,
end_time
:
""
,
time
:
200333
,
},
},
goods_list
:
[],
{
options
:
[
date
:
"2016-05-02"
,
{
value
:
0
,
label
:
"全部"
},
name
:
"xxx"
,
{
value
:
1
,
label
:
"启用"
},
province
:
"上海"
,
{
value
:
2
,
label
:
"关闭"
},
city
:
"普陀区"
,
{
value
:
3
,
label
:
"到期"
},
address
:
"上海市普陀区金沙江路 1518 弄"
,
zip
:
200333
,
},
],
],
// 搜索条件
retailActivitie
:
{
marketing_id
:
""
,
marketing_name
:
""
,
goods_sku_id
:
""
,
online_status
:
[],
page
:
1
,
page_size
:
5
,
count
:
0
,
},
ruleForm
:
{
marketing_name
:
""
,
first_commission_value
:
""
,
second_commission_value
:
""
,
start_time
:
""
,
end_time
:
""
,
goods_sku_id
:
[],
},
timeSelect
:
[],
ruleIdForm
:
{
life_account_id
:
""
,
goods_sku_id
:
""
,
start_time
:
""
,
end_time
:
""
,
},
rules
:
{
marketing_name
:
[
{
required
:
true
,
message
:
"请输入活动名称"
,
trigger
:
"blur"
},
{
min
:
1
,
max
:
50
,
message
:
"长度在 50个字符内"
,
trigger
:
"blur"
},
],
first_commission_value
:
[
{
required
:
true
,
message
:
"请填写一级佣金"
,
trigger
:
"blur"
},
],
// goods_sku_id: [
// { type: "number", message: "商品id必须为数字值", trigger: "change" },
// ],
},
allList
:
[],
dialogFormVisible
:
false
,
dialogFormVisible
:
false
,
shopStart
:
0
,
//商品id生活号id的显示隐藏状态
startTime
:
""
,
endTime
:
""
,
marketing_id
:
""
,
marketing_info
:
{},
disabled
:
false
,
};
};
},
},
methods
:
{
methods
:
{
handleClick
(
row
)
{
// 查看详情列表
console
.
log
(
row
);
async
handleClick
(
row
)
{
this
.
dialogFormVisible
=
true
;
this
.
shopStart
=
1
;
this
.
disabled
=
true
;
try
{
const
res
=
await
getMarketingInfo
({
marketing_id
:
row
.
marketing_id
});
this
.
startTime
=
res
.
result
.
marketing_info
.
start_time
;
this
.
endTime
=
res
.
result
.
marketing_info
.
end_time
;
this
.
timeSelect
=
[
new
Date
(
this
.
startTime
),
new
Date
(
this
.
endTime
)];
this
.
ruleForm
=
res
.
result
.
marketing_info
;
this
.
goods_list
=
res
.
result
.
goods_list
;
}
catch
(
error
)
{
ElMessage
.
error
(
"请求查看详情列表失败"
);
}
},
// 页码变化
handleCurrentChange
(
e
)
{
this
.
retailActivitie
.
page
=
e
;
this
.
getMarketingList
();
},
// 营销活动列表
async
getMarketingList
()
{
try
{
const
res
=
await
getMarketingList
(
this
.
retailActivitie
);
this
.
tableData
=
res
.
result
;
this
.
retailActivitie
.
count
=
res
.
count
;
//总条数
this
.
resetDate
();
}
catch
(
error
)
{
ElMessage
.
error
(
"请求获取营销活动失败"
);
}
},
// 关闭状态
// async handelClose(row) {
// try {
// await updateMarketingList({
// marketing_id: row.marketing_id,
// online_status: 2,
// });
// this.getMarketingList();
// ElMessage.success("状态已关闭");
// } catch (error) {
// ElMessage.error("请求关闭失败" + error.message);
// }
// },
//启用状态
// async handelEnable(row) {
// try {
// // const res = await updateMarketingList({
// await updateMarketingList({
// marketing_id: row.marketing_id,
// online_status: 1,
// });
// this.getMarketingList();
// ElMessage("状态已启用");
// } catch (error) {
// ElMessage("请求开启状态失败");
// }
// },
handelEnable
:
debounce
(
async
function
(
row
,
type
)
{
try
{
await
updateMarketingList
({
marketing_id
:
row
.
marketing_id
,
online_status
:
type
,
});
this
.
getMarketingList
();
ElMessage
.
success
(
type
===
1
?
"状态已启用"
:
"状态已关闭"
);
}
catch
(
error
)
{
ElMessage
.
error
(
"请求开启状态失败"
);
}
},
300
),
// 创建分销活动
createDtb
()
{
this
.
dialogFormVisible
=
true
;
this
.
shopStart
=
0
;
},
// 重置
reset
(
retailActivitie
)
{
(
this
.
retailActivitie
=
{
marketing_id
:
""
,
marketing_name
:
""
,
goods_sku_id
:
""
,
online_status
:
[],
page
:
1
,
page_size
:
5
,
}),
this
.
$refs
[
retailActivitie
].
resetFields
();
this
.
getMarketingList
({});
},
// 搜索
toSearch
()
{
this
.
getMarketingList
();
console
.
log
(
this
.
retailActivitie
);
},
selectTime
(
e
)
{
let
date
=
new
Date
();
if
(
e
&&
e
[
1
]
<
date
)
{
ElMessage
(
`'活动结束时间不能早于当前时间'`
);
this
.
timeSelect
=
[];
}
},
// 获取时间格式
formatTime
(
date
)
{
// 封装函数判断是否要在目标前边加 ’0‘
function
getStr
(
target
)
{
return
(
""
+
target
).
length
===
1
?
"0"
+
target
:
target
;
}
// 获取月
const
month
=
date
.
getMonth
()
+
1
;
// 获取号
const
day
=
date
.
getDate
();
// 获取时
const
h
=
date
.
getHours
();
// 获取分
const
m
=
date
.
getMinutes
();
// 获取秒
const
s
=
date
.
getSeconds
();
// 拼串
const
timeStr
=
`
${
date
.
getFullYear
()}
-
${
getStr
(
month
)}
-
${
getStr
(
day
)}
${
getStr
(
h
)}
:
${
getStr
(
m
)}
:
${
getStr
(
s
)}
`
;
// 将结果返回
return
timeStr
;
},
// 查询商品列表
async
findProducts
()
{
// 获取参数
const
{
goods_sku_id
,
life_account_id
}
=
this
.
ruleIdForm
;
let
[
start_time
,
end_time
]
=
this
.
timeSelect
;
if
(
start_time
&&
end_time
)
{
start_time
=
this
.
formatTime
(
start_time
);
end_time
=
this
.
formatTime
(
end_time
);
}
else
{
ElMessage
(
"查询商品前请先配置活动生效时间"
);
return
;
}
// console.log(start_time, end_time);
// 整理参数
const
ruleIdForm
=
{
goods_sku_id
,
life_account_id
,
start_time
,
end_time
,
};
try
{
// 发请求
const
res
=
await
getFindGoodsList
(
ruleIdForm
);
// 成功逻辑:展示列表数据
this
.
goods_list
=
res
.
result
;
}
catch
(
error
)
{
// 失败逻辑
ElMessage
.
error
(
"请求查询商品列表失败"
);
}
},
selectGoodsChange
(
e
)
{
this
.
ruleForm
.
goods_sku_id
=
e
.
map
((
item
)
=>
item
.
goods_sku_id
);
},
async
getAllList
()
{
let
all
=
await
getMarketingList
({
page
:
1
,
page_size
:
this
.
retailActivitie
.
count
,
});
this
.
allList
=
all
.
result
;
},
// 添加活动列表
async
addList
()
{
console
.
log
(
this
.
ruleForm
.
goods_sku_id
);
if
(
this
.
ruleForm
.
goods_sku_id
.
length
<=
0
)
{
ElMessage
(
"请选择商品"
);
return
;
}
else
{
var
goods_sku_id
=
this
.
ruleForm
.
goods_sku_id
&&
this
.
ruleForm
.
goods_sku_id
.
join
(
","
);
}
// console.log(goods_sku_id);
let
{
marketing_name
,
first_commission_value
,
second_commission_value
}
=
this
.
ruleForm
;
let
[
start_time
,
end_time
]
=
this
.
timeSelect
;
if
(
!
marketing_name
||
!
first_commission_value
||
!
start_time
||
!
end_time
)
{
ElMessage
(
"请填写完整"
);
return
;
}
let
addParams
=
{
goods_sku_id
,
marketing_name
,
first_commission_value
,
second_commission_value
,
start_time
:
this
.
formatTime
(
start_time
),
end_time
:
this
.
formatTime
(
end_time
),
};
// let resList = [];
// // 遍历选择的商品
// this.allList.forEach((item) => {
// // 判断该活动是否是开启状态且时间与选择时间冲突
// if (item.online_status == 1 && new Date(item.end_time) > start_time) {
// // 如果开启且重复,根据活动id请求获取这个活动的详情,判断这个活动的关联商品是否与选择商品重复
// resList.push(getMarketingInfo({ marketing_id: item.marketing_id }));
// }
// });
// let skuList = await Promise.all(resList);
// skuList = skuList.map((item) => item.result.goods_list);
// skuList = skuList.flat();
// console.log(skuList);
// const ok = this.ruleForm.goods_sku_id.every((skuId) => {
// // 遍历所有的活动,判断选择的商品是否符合条件
// return !skuList.find((item) => {
// console.log(item.goods_sku_id, skuId);
// return item.goods_sku_id == skuId;
// });
// });
// if (ok) {
try
{
const
res
=
await
getAddMarketingList
(
addParams
);
if
(
res
.
status
==
"success"
)
{
this
.
getMarketingList
();
this
.
dialogFormVisible
=
false
;
}
else
{
ElMessage
(
res
.
reason
);
}
// this.ruleIdForm = res.result;
}
catch
(
error
)
{
ElMessage
.
error
(
"请求创建活动失败"
);
}
// } else {
// ElMessage("已有该关联商品,请重新选择");
// }
},
// 清空
resetDate
()
{
(
this
.
ruleForm
=
{
marketing_name
:
""
,
first_commission_value
:
""
,
second_commission_value
:
""
,
start_time
:
""
,
end_time
:
""
,
goods_sku_id
:
[],
}),
(
this
.
timeSelect
=
[]),
(
this
.
goods_list
=
[]),
(
this
.
ruleIdForm
=
{
life_account_id
:
""
,
goods_sku_id
:
""
,
start_time
:
""
,
end_time
:
""
,
});
},
// 取消
cancel
()
{
this
.
dialogFormVisible
=
false
;
this
.
resetDate
();
this
.
getMarketingList
();
},
},
},
},
created
()
{
this
.
getMarketingList
();
this
.
getAllList
();
},
};
};
</
script
>
</
script
>
<
style
lang=
"less"
scoped
>
<
style
lang=
"less"
scoped
>
.container {
.container {
// display: flex;
display: flex;
width: 100%;
height: 100%;
.retail {
.retail {
margin-top: 30px;
}
.search_input{
margin-left: 100px;
}
}
.but_one {
.but_one {
margin-left: 10px;
margin-left: 10px;
}
}
.but {
margin-right: 10px;
border-radius: 0;
color: #606266;
}
}
.el-dialog{
padding: 20px 0 10px;
border-bottom: 1px solid #606266;
text-indent: 5%;
}
}
.el-form-item {
.el-form-item{
margin-top: 30px;
margin-top: 30px;
}
}
::v-deep .el-input input{
.bor {
border-radius: 0;
margin-left: -30px;
border: 1px solid #606266;
}
}
.
exporttable
{
.
newTab
{
border: 1px solid #606266
;
margin-top: 0
;
}
}
.tab{
.readTab {
border: 1px solid #606266;
margin-top: 30px;
padding: 20px 10px;
}
}
.dialog-footer{
.dialog-footer
{
display: flex;
display: flex;
justify-content: center;
justify-content: center;
align-items: center;
align-items: center;
}
}
</
style
>
</
style
>
<
style
scoped
>
.container
>>>
.el-card__body
{
width
:
100%
;
}
/* .bor >>> .el-row {
width: 100%;
} */
.queryBox
>>>
.el-form-item--mini
,
.marketing
{
margin-top
:
0
;
}
</
style
>
\ No newline at end of file
src/service/Goods/goods.js
View file @
121e76bb
...
@@ -68,3 +68,29 @@ export async function editGoods (query) {
...
@@ -68,3 +68,29 @@ export async function editGoods (query) {
const
res
=
await
axios
.
post
(
"/api/v1/goods/background/edit_goods"
,
query
);
const
res
=
await
axios
.
post
(
"/api/v1/goods/background/edit_goods"
,
query
);
return
res
;
return
res
;
}
}
// 获取营销活动列表
export
async
function
getMarketingList
(
params
)
{
const
res
=
await
axios
.
post
(
"/api/v1/get_marketing_list"
,
params
);
return
res
;
}
// 获取查询商品列表
export
async
function
getFindGoodsList
(
params
)
{
const
res
=
await
axios
.
post
(
"/api/v1/get_find_goods_list"
,
params
);
return
res
;
}
// 获取添加活动列表
export
async
function
getAddMarketingList
(
params
)
{
const
res
=
await
axios
.
post
(
"/api/v1/get_addmarketing_list"
,
params
);
return
res
;
}
// 获取查看列表
export
async
function
getMarketingInfo
(
marketing_id
)
{
const
res
=
await
axios
.
post
(
"/api/v1/get_marketing_info"
,
marketing_id
);
return
res
;
}
// 获取开启关闭
export
async
function
updateMarketingList
(
params
)
{
const
res
=
await
axios
.
post
(
"/api/v1/update_marketing_list"
,
params
);
return
res
;
}
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