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
80f84ebc
Commit
80f84ebc
authored
Aug 20, 2021
by
lihui
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
feat: 8-20提测版本
parent
65c65733
Changes
11
Hide whitespace changes
Inline
Side-by-side
Showing
11 changed files
with
533 additions
and
354 deletions
+533
-354
groupmeal.js
server/controllers/groupmeal.js
+20
-0
router.js
server/router.js
+2
-0
addProduc.vue
src/pages/Activity/releaseProduc/components/addProduc.vue
+83
-77
infoEditing.vue
src/pages/Activity/releaseProduc/components/infoEditing.vue
+6
-1
myMap.vue
src/pages/Activity/releaseProduc/components/myMap.vue
+9
-9
spellOrderSet.vue
...pages/Activity/releaseProduc/components/spellOrderSet.vue
+218
-177
index.vue
src/pages/Activity/releaseProduc/index.vue
+32
-16
index.vue
src/pages/Groupmeal/Distrib/index.vue
+103
-46
groupmeal.js
src/service/Groupmeal/groupmeal.js
+53
-27
handlerResponse.js
src/utils/handlerResponse.js
+6
-0
tools.js
src/utils/tools.js
+1
-1
No files found.
server/controllers/groupmeal.js
View file @
80f84ebc
...
@@ -41,6 +41,26 @@ exports.getSaveDeliverer = async ctx => {
...
@@ -41,6 +41,26 @@ exports.getSaveDeliverer = async ctx => {
};
};
ctx
.
body
=
await
req
(
ctx
,
opts
);
ctx
.
body
=
await
req
(
ctx
,
opts
);
};
};
// 下载配送路线 -lh
exports
.
getDeliveryRoutes
=
async
ctx
=>
{
const
opts
=
{
url
:
`
${
GROUPMEAL_URI
}
/order/deliverer/build_plan`
,
method
:
"POST"
,
json
:
true
,
body
:
ctx
.
request
.
body
};
ctx
.
body
=
await
req
(
ctx
,
opts
);
};
// 查看下载配送路线记录 -lh
exports
.
getEmailRecords
=
async
ctx
=>
{
const
opts
=
{
url
:
`
${
GROUPMEAL_URI
}
/order/deliverer/plan_down_log`
,
method
:
"POST"
,
json
:
true
,
body
:
ctx
.
request
.
body
};
ctx
.
body
=
await
req
(
ctx
,
opts
);
};
// 老订单管理
// 老订单管理
...
...
server/router.js
View file @
80f84ebc
...
@@ -100,6 +100,8 @@ router.get(`${API_VERSION}/order/oldbackground/order_print`, groupmeal.orderPrin
...
@@ -100,6 +100,8 @@ router.get(`${API_VERSION}/order/oldbackground/order_print`, groupmeal.orderPrin
router
.
get
(
`
${
API_VERSION
}
/order/oldbackground/order_item_list`
,
groupmeal
.
orderItemList
);
router
.
get
(
`
${
API_VERSION
}
/order/oldbackground/order_item_list`
,
groupmeal
.
orderItemList
);
router
.
get
(
`
${
API_VERSION
}
/order/oldbackground/order_refund_reject`
,
groupmeal
.
orderRefundReject
);
router
.
get
(
`
${
API_VERSION
}
/order/oldbackground/order_refund_reject`
,
groupmeal
.
orderRefundReject
);
router
.
post
(
`
${
API_VERSION
}
/order/oldbackground/order_refund`
,
groupmeal
.
orderRefund
);
router
.
post
(
`
${
API_VERSION
}
/order/oldbackground/order_refund`
,
groupmeal
.
orderRefund
);
router
.
post
(
`
${
API_VERSION
}
/order/deliverer/build_plan`
,
groupmeal
.
getDeliveryRoutes
);
//下载配送路线 -lh
router
.
post
(
`
${
API_VERSION
}
/order/deliverer/plan_down_log`
,
groupmeal
.
getEmailRecords
);
// 查看邮件记录 -lh
// 新订单管理
// 新订单管理
router
.
get
(
`
${
API_VERSION
}
/order/background/order_list`
,
groupmeal
.
newGetOrderList
);
router
.
get
(
`
${
API_VERSION
}
/order/background/order_list`
,
groupmeal
.
newGetOrderList
);
...
...
src/pages/Activity/releaseProduc/components/addProduc.vue
View file @
80f84ebc
...
@@ -10,18 +10,30 @@
...
@@ -10,18 +10,30 @@
>
>
</div>
</div>
<!-- Tab -->
<!-- Tab -->
<el-table
:data=
"comTableData"
border
style=
"width: 100%;margin-bottom:80px;"
:header-cell-style=
"cellClass"
>
<el-table
:data=
"comTableData"
border
style=
"width: 100%;margin-bottom:80px;"
:header-cell-style=
"cellClass"
>
<el-table-column
label=
"显示顺序"
align=
"center"
width=
"50px"
>
<el-table-column
label=
"显示顺序"
align=
"center"
width=
"50px"
>
<el-table-column
label=
""
align=
"center"
width=
"50px"
>
<el-table-column
label=
""
align=
"center"
width=
"50px"
>
<template
#
default=
"scope"
>
<template
#
default=
"scope"
>
<i
class=
"el-icon-top"
@
click=
"upMove(scope.$index, scope.row)"
style=
"margin-right:15px;"
></i>
<i
</
template
>
class=
"el-icon-top"
</el-table-column>
@
click=
"upMove(scope.$index, scope.row)"
<el-table-column
label=
""
align=
"center"
width=
"50px"
>
style=
"margin-right:15px;"
<
template
#
default=
"scope"
>
></i>
<i
class=
"el-icon-bottom"
@
click=
"upDown(scope.$index, scope.row)"
></i>
</
template
>
</
template
>
</el-table-column>
</el-table-column>
<el-table-column
label=
""
align=
"center"
width=
"50px"
>
<
template
#
default=
"scope"
>
<i
class=
"el-icon-bottom"
@
click=
"upDown(scope.$index, scope.row)"
></i>
</
template
>
</el-table-column>
</el-table-column>
</el-table-column>
<el-table-column
<el-table-column
prop=
"goods_sku_id"
prop=
"goods_sku_id"
...
@@ -39,7 +51,7 @@
...
@@ -39,7 +51,7 @@
<el-table-column
prop=
"total_amount_sold"
label=
"已售数量"
>
<el-table-column
prop=
"total_amount_sold"
label=
"已售数量"
>
</el-table-column>
</el-table-column>
<el-table-column
prop=
"inventory_rest"
label=
"剩余库存"
></el-table-column>
<el-table-column
prop=
"inventory_rest"
label=
"剩余库存"
></el-table-column>
<el-table-column
label=
"操作"
width=
"120"
>
<el-table-column
label=
"操作"
width=
"120"
fixed=
"right"
>
<
template
#
default=
"scope"
>
<
template
#
default=
"scope"
>
<el-button
<el-button
type=
"text"
type=
"text"
...
@@ -58,6 +70,7 @@
...
@@ -58,6 +70,7 @@
:title=
"addCommodityTitle"
:title=
"addCommodityTitle"
v-model=
"addCommodityPopup"
v-model=
"addCommodityPopup"
width=
"50%"
width=
"50%"
custom-class=
"add_goods_dialog"
>
>
<el-form
<el-form
:inline=
"true"
:inline=
"true"
...
@@ -114,8 +127,8 @@
...
@@ -114,8 +127,8 @@
</el-form-item>
</el-form-item>
<el-form-item
label=
"划线价:"
prop=
"original_price"
>
<el-form-item
label=
"划线价:"
prop=
"original_price"
>
<el-input-number
<el-input-number
class=
"price"
v-model=
"commodityForm.original_price"
v-model=
"commodityForm.original_price"
class=
"price"
:min=
"0"
:min=
"0"
:controls=
"false"
:controls=
"false"
:precision=
"2"
:precision=
"2"
...
@@ -136,54 +149,51 @@
...
@@ -136,54 +149,51 @@
}}
</span>
}}
</span>
剩余库存:
<span>
{{ inventoryRest }}
</span>
剩余库存:
<span>
{{ inventoryRest }}
</span>
</div>
</div>
<div
class=
"purse_limit"
>
<el-form-item
<el-form-item
prop=
"checkedRadio"
prop=
"checkedRadio"
:rules=
"[
:rules=
"[
{
{
required: true,
required: true,
message: '请选择购买限制',
message: '请选择购买限制',
trigger: 'change'
trigger: 'change'
}
}
]"
]"
class=
"limit_radio"
class=
"limit_radio"
label=
"购买限制"
label=
"购买限制"
>
>
<el-radio-group
v-model=
"commodityForm.checkedRadio"
>
<el-radio-group
v-model=
"commodityForm.checkedRadio"
>
<el-radio
label=
"不限制"
></el-radio>
<el-radio
label=
"不限制"
></el-radio>
<el-radio
label=
"每人最多买"
></el-radio>
<el-radio
label=
"每人最多买"
></el-radio>
</el-radio-group>
</el-radio-group>
</el-form-item>
</el-form-item>
<el-form-item
<el-form-item
prop=
"num_limit"
prop=
"num_limit"
:show-message=
"
:show-message=
"
commodityForm.checkedRadio === '每人最多买' ? true : false
commodityForm.checkedRadio === '每人最多买' ? ture : false
"
:rules=
"[
{
validator:
commodityForm.checkedRadio === '每人最多买'
? checkPurseLimit
: checkPurseLimitNull,
trigger: 'blur'
}
]"
>
<el-input-number
v-model=
"commodityForm.num_limit"
:disabled=
"
commodityForm.checkedRadio === '' ||
commodityForm.checkedRadio === '不限制' ||
commodityForm.checkedRadio === undefined
? true
: false
"
"
:rules=
"[
:min=
"0"
{
:controls=
"false"
validator:
></el-input-number>
commodityForm.checkedRadio === '每人最多买'
</el-form-item>
? checkPurseLimit
: checkPurseLimitNull,
trigger: 'blur'
}
]"
>
<el-input-number
v-model=
"commodityForm.num_limit"
:disabled=
"
commodityForm.checkedRadio === '' ||
commodityForm.checkedRadio === '不限制' ||
commodityForm.checkedRadio === undefined
? true
: false
"
:min=
"0"
:controls=
"false"
></el-input-number>
</el-form-item>
</div>
<el-form-item
<el-form-item
label=
"商家:"
label=
"商家:"
prop=
"business1"
prop=
"business1"
...
@@ -296,7 +306,7 @@ import {
...
@@ -296,7 +306,7 @@ import {
}
from
"../../../../service/Activity/index"
;
}
from
"../../../../service/Activity/index"
;
// 当选择(每人最多买时 添加验证(非空))
// 当选择(每人最多买时 添加验证(非空))
let
checkPurseLimit
=
(
rule
,
value
,
callback
)
=>
{
let
checkPurseLimit
=
(
rule
,
value
,
callback
)
=>
{
if
(
value
===
""
||
value
===
0
)
{
if
(
value
===
""
||
value
===
undefined
||
value
===
0
)
{
return
callback
(
new
Error
(
"请添加限制购买数量"
));
return
callback
(
new
Error
(
"请添加限制购买数量"
));
}
else
{
}
else
{
callback
();
callback
();
...
@@ -335,10 +345,10 @@ var addProduct = {
...
@@ -335,10 +345,10 @@ var addProduct = {
addCommodityTitle
:
""
,
// 标题
addCommodityTitle
:
""
,
// 标题
commodityForm
:
{
commodityForm
:
{
goods_name
:
""
,
goods_name
:
""
,
price
:
null
,
price
:
0
,
original_price
:
null
,
original_price
:
0
,
inventory_total
:
null
,
inventory_total
:
""
,
total_amount_order
:
null
,
total_amount_order
:
""
,
business1
:
""
,
business1
:
""
,
num_limit
:
0
,
// 购买限制数量
num_limit
:
0
,
// 购买限制数量
checkedRadio
:
""
// 购买限制radio
checkedRadio
:
""
// 购买限制radio
...
@@ -363,10 +373,10 @@ var addProduct = {
...
@@ -363,10 +373,10 @@ var addProduct = {
};
};
},
},
methods
:
{
methods
:
{
cellClass
(
{
row
,
column
,
rowIndex
,
columnIndex
})
{
cellClass
(
)
{
if
(
rowIndex
===
1
)
{
if
(
arguments
.
rowIndex
===
1
)
{
return
{
display
:
'none'
}
return
{
display
:
"none"
};
}
}
},
},
// 上移
// 上移
...
@@ -740,13 +750,9 @@ export default addProduct;
...
@@ -740,13 +750,9 @@ export default addProduct;
.hide /deep/ .el-upload--picture-card {
.hide /deep/ .el-upload--picture-card {
display: none;
display: none;
}
}
/* 购买限制 */
.purse_limit {
// 商品添加修改dialog-form表单
display: flex;
/deep/ .add_goods_dialog {
justify-content: flex-start;
min-width: 370px;
.limit_radio {
// width: 70% !important;
margin-right: 0;
}
}
}
</
style
>
</
style
>
src/pages/Activity/releaseProduc/components/infoEditing.vue
View file @
80f84ebc
<
template
>
<
template
>
<div
class=
"infoEditing"
>
<div
class=
"infoEditing"
>
<el-form
ref=
"infoEditForm"
:model=
"infoEditForm"
label-width=
"80px"
>
<el-form
ref=
"infoEditForm"
:model=
"infoEditForm"
label-width=
"80px"
@
submit
.
prevent
>
<el-form-item
label=
"标题:"
>
<el-form-item
label=
"标题:"
>
<el-input
v-model=
"infoEditForm.title"
maxlength=
"30"
></el-input>
<el-input
v-model=
"infoEditForm.title"
maxlength=
"30"
></el-input>
</el-form-item>
</el-form-item>
...
...
src/pages/Activity/releaseProduc/components/myMap.vue
View file @
80f84ebc
...
@@ -193,15 +193,15 @@ export default {
...
@@ -193,15 +193,15 @@ export default {
</
script
>
</
script
>
<
style
lang=
"less"
scoped
>
<
style
lang=
"less"
scoped
>
.mapDialog {
//
.mapDialog {
margin-top: 11vh !important;
//
margin-top: 11vh !important;
display: flex !important;
//
display: flex !important;
flex-direction: column !important;
//
flex-direction: column !important;
background: red !important;
//
background: red !important;
/deep/ .el-dialog__body {
//
/deep/ .el-dialog__body {
height: 90%;
//
height: 90%;
}
//
}
}
//
}
.mapContainer {
.mapContainer {
height: 100%;
height: 100%;
width: 100%;
width: 100%;
...
...
src/pages/Activity/releaseProduc/components/spellOrderSet.vue
View file @
80f84ebc
<
template
>
<
template
>
<div
class=
"spell
OrderSet
"
>
<div
class=
"spell
_order_set_wrapper
"
>
<!-- 时间选择器 -->
<!-- 时间选择器 -->
<div
class=
"datepickerWrapper"
>
<div
class=
"datepickerWrapper"
>
<
span
class=
"demonstration"
>
拼单起止时间:
</span
>
<
p
class=
"demonstration"
>
拼单起止时间:
</p
>
<el-date-picker
<el-date-picker
class=
"start
TimeP
icker"
class=
"start
_time_p
icker"
v-model=
"startDate"
v-model=
"startDate"
type=
"datetime"
type=
"datetime"
popper-class=
"date_picker"
popper-class=
"date_picker"
...
@@ -14,7 +14,7 @@
...
@@ -14,7 +14,7 @@
>
>
</el-date-picker>
</el-date-picker>
<el-date-picker
<el-date-picker
class=
"end
TimeP
icker"
class=
"end
_time_p
icker"
v-model=
"endDate"
v-model=
"endDate"
:clearable=
"false"
:clearable=
"false"
type=
"datetime"
type=
"datetime"
...
@@ -32,120 +32,125 @@
...
@@ -32,120 +32,125 @@
element-loading-spinner=
"el-icon-loading"
element-loading-spinner=
"el-icon-loading"
element-loading-background=
"rgba(0, 0, 0, 0.8)"
element-loading-background=
"rgba(0, 0, 0, 0.8)"
>
>
<el-card
class=
"card-block"
>
<!-- 自提点表单 -->
<p>
自提点设置
</p>
<div
class=
"search_form_wrapper"
>
<el-form
ref=
"form"
label-width=
"80px"
>
<p
class=
"title"
>
自提点设置
</p>
<el-form
ref=
"form"
label-width=
"80px"
inline
@
submit
.
prevent
>
<el-form-item>
<el-form-item>
<el-input
<el-input
style=
"width:250px"
class=
"set"
class=
"set"
v-model=
"selfLiftingPoint"
v-model=
"selfLiftingPoint"
placeholder=
"自提点名称/自提点联系人"
placeholder=
"自提点名称/自提点联系人"
></el-input>
></el-input>
</el-form-item>
<el-form-item>
<el-button
type=
"primary"
@
click=
"getPlaceList"
>
搜索
</el-button>
<el-button
type=
"primary"
@
click=
"getPlaceList"
>
搜索
</el-button>
<el-button
type=
"primary"
@
click=
"dialogFormVisible = true"
<el-button
type=
"primary"
@
click=
"dialogFormVisible = true"
>
添加自提点
</el-button
>
添加自提点
</el-button
>
>
</el-form-item>
</el-form-item>
<div
class=
"tabla-wrapper"
>
</el-form>
<p
class=
"checked"
>
{{
`已选 ${checkedNum
}
`
}}
<
/p
>
</div>
<!--
自提点列表
-->
<!-- 自提点列表 -->
<
el
-
table
<div
class=
"tabla-wrapper"
>
class
=
"tableList"
<p
class=
"checked"
>
{{
`已选 ${checkedNum
}
`
}}
<
/p
>
max
-
height
=
"350"
<
el
-
table
ref
=
"multipleTable"
class
=
"tableList"
:
data
=
"takePlacelist"
max
-
height
=
"450"
border
ref
=
"multipleTable"
tooltip
-
effect
=
"dark"
:
data
=
"takePlacelist"
style
=
"width: 100%"
border
@
selection
-
change
=
"handleSelectionChange"
tooltip
-
effect
=
"dark"
>
style
=
"width: 100%"
<
el
-
table
-
column
align
=
"center"
type
=
"selection"
width
=
"80"
>
@
selection
-
change
=
"handleSelectionChange"
<
/el-table-column
>
>
<
el
-
table
-
column
<
el
-
table
-
column
align
=
"center"
type
=
"selection"
width
=
"80"
>
prop
=
"name"
<
/el-table-column
>
label
=
"自提点名称"
<
el
-
table
-
column
align
=
"center"
prop
=
"name"
width
=
"width"
label
=
"自提点名称"
>
align
=
"center"
<
/el-table-column
>
width
=
"width"
<
el
-
table
-
column
>
prop
=
"location"
<
/el-table-column
>
align
=
"center"
<
el
-
table
-
column
label
=
"位置"
prop
=
"location"
width
=
"width"
align
=
"center"
>
label
=
"位置"
<
/el-table-column
>
width
=
"width"
<
el
-
table
-
column
>
prop
=
"address"
<
/el-table-column
>
align
=
"center"
<
el
-
table
-
column
label
=
"详细地址"
prop
=
"address"
width
=
"width"
align
=
"center"
>
label
=
"详细地址"
<
/el-table-column
>
width
=
"width"
<
el
-
table
-
column
>
prop
=
"contactor"
<
/el-table-column
>
align
=
"center"
<
el
-
table
-
column
label
=
"自提点联系人"
prop
=
"contactor"
width
=
"width"
align
=
"center"
>
label
=
"自提点联系人"
<
/el-table-column
>
width
=
"width"
<
el
-
table
-
column
>
prop
=
"name"
<
/el-table-column
>
align
=
"center"
<
el
-
table
-
column
label
=
"操作"
prop
=
"name"
width
=
"width"
align
=
"center"
label
=
"操作"
width
=
"width"
fixed
=
"right"
>
<
template
#
default
=
"scope"
>
<
el
-
popconfirm
title
=
"确定要删除此自提点吗?"
@
confirm
=
"deleteTakePlace"
>
>
<
template
#
default
=
"scope"
>
<
template
#
reference
>
<
el
-
popconfirm
<
el
-
button
title
=
"确定要删除此自提点吗?"
class
=
"delete_button"
@
confirm
=
"deleteTakePlace"
type
=
"primary"
size
=
"small"
@
click
=
"handleDelete(scope.row)"
>
删除
<
/el-butto
n
>
>
<
template
#
reference
>
<
el
-
button
type
=
"primary"
size
=
"small"
@
click
=
"handleDelete(scope.row)"
>
删除
<
/el-butto
n
>
<
/template
>
<
/el-popconfirm
>
<
/template
>
<
/template
>
<
/el-
table-column
>
<
/el-
popconfirm
>
<
/
el-tabl
e
>
<
/
templat
e
>
<
/
div
>
<
/
el-table-column
>
<!--
分页
--
>
<
/el-table
>
<
div
class
=
"pagination-wrapper"
>
<
/div
>
<
el
-
pagination
<!--
分页
-->
background
<
div
class
=
"pagination-wrapper"
>
layout
=
"prev, pager, next"
<
el
-
pagination
:
total
=
"pageCount"
background
:
page
-
size
=
"500
"
layout
=
"prev, pager, next
"
@
current
-
change
=
"handleCurrentChange
"
:
total
=
"pageCount
"
>
:
page
-
size
=
"500"
<
/el-pagination
>
@
current
-
change
=
"handleCurrentChange"
<
/div
>
>
<
/el-
form
>
<
/el-
pagination
>
<
/
el-card
>
<
/
div
>
<
/div
>
<
/div
>
<!--
添加自提点
dialog
-->
<!--
添加自提点
-->
<
el
-
dialog
<
el
-
dialog
:
close
-
on
-
click
-
modal
=
"false"
:
close
-
on
-
click
-
modal
=
"false"
:
center
=
"true"
title
=
"添加自提点"
title
=
"添加自提点"
v
-
model
=
"dialogFormVisible"
v
-
model
=
"dialogFormVisible"
:
show
-
close
=
"false"
:
show
-
close
=
"false"
custom
-
class
=
"add_takePlace_dialog"
>
>
<
el
-
form
<
el
-
form
style
=
"margin-left: 70px"
:
model
=
"form"
:
model
=
"form"
:
rules
=
"rules"
:
rules
=
"rules"
ref
=
"ruleForm"
ref
=
"ruleForm"
:
inline
=
"true"
label
-
position
=
"left"
label
-
width
=
"120px"
>
>
<
el
-
form
-
item
<
el
-
form
-
item
label
=
"自提点名称"
prop
=
"name"
>
label
=
"自提点名称"
prop
=
"name"
:
label
-
width
=
"formLabelWidth"
>
<
el
-
input
<
el
-
input
class
=
"dialog-input"
class
=
"dialog-input"
v
-
model
=
"form.name"
v
-
model
=
"form.name"
...
@@ -154,34 +159,34 @@
...
@@ -154,34 +159,34 @@
autocomplete
=
"off"
autocomplete
=
"off"
><
/el-input
>
><
/el-input
>
<
/el-form-item
>
<
/el-form-item
>
<
br
/>
<
el
-
form
-
item
<
el
-
form
-
item
label
=
"位置"
label
=
"位置"
prop
=
"location"
prop
=
"location"
:
label
-
width
=
"formLabelWidth"
class
=
"location_wrapper"
style
=
"width:100%"
>
>
<
el
-
input
<
div
class
=
"location_input_wrapper"
>
class
=
"dialog-input"
<
el
-
input
v
-
model
=
"form.location"
class
=
"dialog-input"
placeholder
=
""
v
-
model
=
"form.location"
:
disabled
=
"true"
placeholder
=
""
><
/el-input
>
:
disabled
=
"true"
<
el
-
button
type
=
"primary"
@
click
=
"mapDialogVisible = true"
><
/el-input
>
>
从高德获取坐标
<
/el-butto
n
<
/div
>
>
<
div
class
=
"location_text_wrapper"
>
<
el
-
button
type
=
"primary"
@
click
=
"mapDialogVisible = true"
>
从高德获取坐标
<
/el-butto
n
>
<
/div
>
<
/el-form-item
>
<
/el-form-item
>
<
br
/>
<
p
class
=
"location"
>
{{
form
.
location
}}
<
/p
>
<
p
class
=
"location"
>
{{
form
.
location
}}
<
/p
>
<
el
-
form
-
item
<
el
-
form
-
item
prop
=
"address"
label
=
"详细地址"
>
prop
=
"address"
label
=
"详细地址"
:
label
-
width
=
"formLabelWidth"
>
<
el
-
input
class
=
"dialog-input"
v
-
model
=
"form.address"
><
/el-input
>
<
el
-
input
class
=
"dialog-input"
v
-
model
=
"form.address"
><
/el-input
>
<
/el-form-item
>
<
/el-form-item
>
<
el
-
form
-
item
<
br
/>
label
=
"自提点联系人"
<
el
-
form
-
item
label
=
"自提点联系人"
prop
=
"contactor"
>
prop
=
"contactor"
:
label
-
width
=
"formLabelWidth"
>
<
el
-
input
<
el
-
input
class
=
"dialog-input"
class
=
"dialog-input"
v
-
model
=
"form.contactor"
v
-
model
=
"form.contactor"
...
@@ -189,14 +194,11 @@
...
@@ -189,14 +194,11 @@
show
-
word
-
limit
show
-
word
-
limit
><
/el-input
>
><
/el-input
>
<
/el-form-item
>
<
/el-form-item
>
<
el
-
form
-
item
<
br
/>
prop
=
"phone"
<
el
-
form
-
item
prop
=
"phone"
type
=
"tel"
label
=
"联系电话"
>
type
=
"tel"
label
=
"联系电话"
:
label
-
width
=
"formLabelWidth"
>
<
el
-
input
class
=
"dialog-input"
v
-
model
=
"form.phone"
><
/el-input
>
<
el
-
input
class
=
"dialog-input"
v
-
model
=
"form.phone"
><
/el-input
>
<
/el-form-item
>
<
/el-form-item
>
<
br
/>
<
/el-form
>
<
/el-form
>
<
template
#
footer
>
<
template
#
footer
>
<
span
class
=
"dialog-footer"
>
<
span
class
=
"dialog-footer"
>
...
@@ -205,7 +207,6 @@
...
@@ -205,7 +207,6 @@
<
/span
>
<
/span
>
<
/template
>
<
/template
>
<
/el-dialog
>
<
/el-dialog
>
<!--
地图
dialog
-->
<!--
地图
dialog
-->
<
el
-
dialog
custom
-
class
=
"mapDialog"
v
-
model
=
"mapDialogVisible"
width
=
"100%"
>
<
el
-
dialog
custom
-
class
=
"mapDialog"
v
-
model
=
"mapDialogVisible"
width
=
"100%"
>
<
my
-
map
<
my
-
map
...
@@ -242,6 +243,7 @@ export default {
...
@@ -242,6 +243,7 @@ export default {
.
add
(
7
,
"day"
)
.
add
(
7
,
"day"
)
.
format
(
"YYYY-MM-DD HH:mm:ss"
),
// 结束时间
.
format
(
"YYYY-MM-DD HH:mm:ss"
),
// 结束时间
pickerOptions
:
{
pickerOptions
:
{
// 规则
disabledDateStart
(
time
)
{
disabledDateStart
(
time
)
{
let
_now
=
Date
.
now
();
let
_now
=
Date
.
now
();
let
threeDays
=
_now
+
3
*
24
*
60
*
60
*
1000
;
let
threeDays
=
_now
+
3
*
24
*
60
*
60
*
1000
;
...
@@ -276,7 +278,8 @@ export default {
...
@@ -276,7 +278,8 @@ export default {
pageCount
:
0
,
// 总条数
pageCount
:
0
,
// 总条数
takePlacelist
:
[],
// 自提点列表
takePlacelist
:
[],
// 自提点列表
signal
:
false
,
signal
:
false
,
checkedTakePlacelist
:
[],
// 已选择自提点列表 活动详情中添加的自提点列表
checkedTakePlacelist
:
[],
// 已选择自提点列表 活动详情中添加的自提点列表(api)
currentCheckedTakePlacelist
:
[],
// 已选择自提点列表 用户本地操作勾选的+api
hasCheckedList
:
false
,
// 表示是否有选中的自提点列表 是编辑还是添加的区别
hasCheckedList
:
false
,
// 表示是否有选中的自提点列表 是编辑还是添加的区别
multipleSelection
:
[],
multipleSelection
:
[],
dialogFormVisible
:
false
,
dialogFormVisible
:
false
,
...
@@ -328,11 +331,11 @@ export default {
...
@@ -328,11 +331,11 @@ export default {
}
,
}
,
watch
:
{
watch
:
{
spellOrderSetArr
:
{
spellOrderSetArr
:
{
// 监听props属性 展示自提点列表
// 监听props属性 展示自提点列表
(APi默认勾选的)
handler
:
async
function
()
{
handler
:
async
function
(
newList
)
{
this
.
checkedTakePlacelist
=
this
.
setTableListData
(
this
.
checkedTakePlacelist
=
this
.
setTableListData
(
// 选中的自提点列表
// 选中的自提点列表
this
.
spellOrderSetArr
newList
);
);
if
(
this
.
$route
.
query
.
marketing_id
)
{
if
(
this
.
$route
.
query
.
marketing_id
)
{
await
this
.
getPlaceList
();
await
this
.
getPlaceList
();
...
@@ -341,14 +344,9 @@ export default {
...
@@ -341,14 +344,9 @@ export default {
this
.
endDate
=
this
.
endTime
;
this
.
endDate
=
this
.
endTime
;
this
.
checkedTakePlacelist
=
this
.
setTableListData
(
this
.
checkedTakePlacelist
=
this
.
setTableListData
(
this
.
spellOrderSetArr
this
.
spellOrderSetArr
);
// 选中的自提点列表
);
this
.
currentList
=
this
.
checkedTakePlacelist
.
map
(
item
=>
{
// 选中的自提点列表
return
item
.
id
;
this
.
mergeCheckedList
(
this
.
checkedTakePlacelist
);
}
);
let
list
=
this
.
takePlacelist
.
filter
(
item
=>
{
return
this
.
currentList
.
includes
(
item
.
id
);
}
);
this
.
toggleSelection
(
list
);
this
.
signal
=
true
;
this
.
signal
=
true
;
}
}
}
,
}
,
...
@@ -372,15 +370,8 @@ export default {
...
@@ -372,15 +370,8 @@ export default {
this
.
pageLoading
=
false
;
this
.
pageLoading
=
false
;
this
.
takePlacelist
=
this
.
setTableListData
(
data
.
result
.
list
);
this
.
takePlacelist
=
this
.
setTableListData
(
data
.
result
.
list
);
this
.
pageCount
=
data
.
result
.
total
;
this
.
pageCount
=
data
.
result
.
total
;
if
(
this
.
signal
===
true
)
{
if
(
this
.
signal
===
true
)
{
this
.
currentList
=
this
.
checkedTakePlacelist
.
map
(
item
=>
{
this
.
mergeCheckedList
(
this
.
currentCheckedTakePlacelist
);
return
item
.
id
;
}
);
let
list
=
this
.
takePlacelist
.
filter
(
item
=>
{
return
this
.
currentList
.
includes
(
item
.
id
);
}
);
this
.
toggleSelection
(
list
);
}
}
}
catch
{
}
catch
{
this
.
pageLoading
=
false
;
this
.
pageLoading
=
false
;
...
@@ -435,6 +426,19 @@ export default {
...
@@ -435,6 +426,19 @@ export default {
return
result
;
return
result
;
}
,
}
,
/* 自提点勾选的合并
@current 当前勾选
*/
mergeCheckedList
(
current
)
{
let
currentIdList
=
current
.
map
(
item
=>
{
return
item
.
id
;
}
);
let
list
=
this
.
takePlacelist
.
filter
(
item
=>
{
return
currentIdList
.
includes
(
item
.
id
);
}
);
this
.
toggleSelection
(
list
);
}
,
// 删除自提点操作
// 删除自提点操作
handleDelete
(
val
)
{
handleDelete
(
val
)
{
this
.
id
=
val
.
id
;
this
.
id
=
val
.
id
;
...
@@ -470,8 +474,10 @@ export default {
...
@@ -470,8 +474,10 @@ export default {
this
.
page
=
val
;
this
.
page
=
val
;
this
.
getPlaceList
();
this
.
getPlaceList
();
}
,
}
,
// 复选框
// 复选框(提供给父组件)
handleSelectionChange
(
val
)
{
handleSelectionChange
(
val
)
{
this
.
currentCheckedTakePlacelist
=
val
;
// 当前勾选的列表
this
.
checkedNum
=
val
.
length
;
this
.
checkedNum
=
val
.
length
;
this
.
multipleSelection
=
val
;
this
.
multipleSelection
=
val
;
let
takePlaceIds
=
""
;
let
takePlaceIds
=
""
;
...
@@ -484,6 +490,7 @@ export default {
...
@@ -484,6 +490,7 @@ export default {
}
);
}
);
this
.
$emit
(
"getTakeTakePlaceListFromChild"
,
takePlaceIds
);
this
.
$emit
(
"getTakeTakePlaceListFromChild"
,
takePlaceIds
);
}
,
}
,
// 勾选某些列表的操作
// 勾选某些列表的操作
toggleSelection
(
rows
)
{
toggleSelection
(
rows
)
{
if
(
rows
)
{
if
(
rows
)
{
...
@@ -516,12 +523,13 @@ export default {
...
@@ -516,12 +523,13 @@ export default {
created
()
{
created
()
{
if
(
!
this
.
$route
.
query
.
marketing_id
)
{
if
(
!
this
.
$route
.
query
.
marketing_id
)
{
this
.
getPlaceList
();
this
.
getPlaceList
();
this
.
signal
=
true
;
}
}
}
}
}
;
}
;
<
/script
>
<
/script
>
<
style
lang
=
"less"
scope
>
<
style
lang
=
"less"
scope
d
>
.
el
-
picker
-
panel
{
.
el
-
picker
-
panel
{
.
el
-
picker
-
panel__footer
{
.
el
-
picker
-
panel__footer
{
.
el
-
button
--
text
{
.
el
-
button
--
text
{
...
@@ -531,52 +539,84 @@ export default {
...
@@ -531,52 +539,84 @@ export default {
}
}
<
/style
>
<
/style
>
<
style
lang
=
"less"
>
<
style
lang
=
"less"
scoped
>
.
card
-
wrapper
{
.
spell_order_set_wrapper
{
width
:
100
%
;
//text-align: center;
//height: 500px;
// 时间选择
.
card
-
block
{
.
datepickerWrapper
{
width
:
100
%
;
display
:
flex
;
.
tabla
-
wrapper
{
justify
-
content
:
center
;
>
p
{
align
-
items
:
center
;
margin
-
left
:
10
px
;
flex
-
wrap
:
wrap
;
text
-
align
:
left
;
.
demonstration
{
margin
:
20
px
;
}
/deep/
.
start_time_picker
{
margin
:
20
px
;
}
/deep/
.
end_time_picker
{
margin
:
20
px
;
}
}
.
add_takePlace_dialog
{
.
location_wrapper
{
/
deep
/
.
el
-
form
-
item__content
{
width
:
calc
(
100
%
-
120
px
);
display
:
inline
-
flex
;
flex
-
wrap
:
wrap
;
}
}
.
tableList
{
height
:
500
px
;
.
location_input_wrapper
{
width
:
60
%
;
min
-
width
:
178
px
;
}
.
location_text_wrapper
{
width
:
40
%
;
}
}
}
}
}
}
.
pagination
-
wrapper
{
height
:
60
px
;
//添加自提点dialog
display
:
flex
;
@
media
screen
and
(
max
-
width
:
800
px
)
{
justify
-
content
:
center
;
/
deep
/
.
add_takePlace_dialog
{
align
-
items
:
center
;
width
:
100
%
!
important
;
}
}
}
}
}
.
spellOrderSet
{
.
card
-
wrapper
{
text
-
align
:
center
;
width
:
100
%
;
margin
:
50
px
0
;
.
search_form_wrapper
{
.
datepickerWrapper
{
text
-
align
:
center
;
margin
:
1
px
0
30
px
;
.
title
{
height
:
50
px
;
line
-
height
:
30
px
;
}
}
}
.
startTimePicker
{
// table 自提点表格
margin
-
right
:
50
px
;
.
tabla
-
wrapper
{
>
p
{
margin
-
left
:
10
px
;
text
-
align
:
left
;
}
.
tableList
{
height
:
600
px
;
.
delete_button
{
margin
:
0
;
}
}
}
}
}
}
.
set
{
.
pagination
-
wrapper
{
width
:
50
%
;
height
:
60
px
;
margin
-
top
:
40
px
;
display
:
flex
;
}
justify
-
content
:
center
;
.
el
-
button
{
align
-
items
:
center
;
margin
-
left
:
30
px
;
}
}
.
tabList
{
.
tabList
{
margin
-
top
:
10
px
;
margin
-
top
:
10
px
;
}
}
.
dialog
-
input
{
width
:
50
%
;
}
.
location
{
.
location
{
margin
-
bottom
:
10
px
;
margin
-
bottom
:
10
px
;
margin
-
left
:
14
%
;
margin
-
left
:
14
%
;
...
@@ -589,11 +629,12 @@ export default {
...
@@ -589,11 +629,12 @@ export default {
.
mapDialog
{
.
mapDialog
{
height
:
80
%
;
height
:
80
%
;
margin
-
top
:
10
vh
!
important
;
margin
-
top
:
10
vh
!
important
;
.
el
-
dialog__body
{
height
:
85
%
!
important
;
}
.
my
-
map
{
.
my
-
map
{
height
:
100
%
;
height
:
100
%
;
}
}
}
}
/deep/
.
el
-
dialog__body
{
height
:
85
%
!
important
;
}
<
/style
>
<
/style
>
src/pages/Activity/releaseProduc/index.vue
View file @
80f84ebc
...
@@ -60,13 +60,13 @@ import spellOrderSet from "./components/spellOrderSet.vue";
...
@@ -60,13 +60,13 @@ import spellOrderSet from "./components/spellOrderSet.vue";
import
{
import
{
addMarketing
,
addMarketing
,
marketingInfo
,
marketingInfo
,
updateMarketing
,
updateMarketing
}
from
"../../../service/Activity/index"
;
}
from
"../../../service/Activity/index"
;
export
default
{
export
default
{
components
:
{
components
:
{
infoEditing
,
infoEditing
,
addProduc
,
addProduc
,
spellOrderSet
,
spellOrderSet
},
},
data
()
{
data
()
{
return
{
return
{
...
@@ -80,7 +80,7 @@ export default {
...
@@ -80,7 +80,7 @@ export default {
takePlaceIDArr
:
[],
takePlaceIDArr
:
[],
startTime
:
""
,
startTime
:
""
,
endTime
:
""
,
endTime
:
""
,
stepTwoTitle
:
""
,
// 传给addProduct的title
stepTwoTitle
:
""
// 传给addProduct的title
};
};
},
},
...
@@ -146,7 +146,7 @@ export default {
...
@@ -146,7 +146,7 @@ export default {
}
}
let
params
=
{
let
params
=
{
marketing_id
:
marketingId
,
marketing_id
:
marketingId
,
marketing_type
:
"4"
,
marketing_type
:
"4"
};
};
const
res
=
await
marketingInfo
(
params
);
const
res
=
await
marketingInfo
(
params
);
this
.
infoEditArr
=
res
.
result
.
marketing_info
;
this
.
infoEditArr
=
res
.
result
.
marketing_info
;
...
@@ -169,7 +169,7 @@ export default {
...
@@ -169,7 +169,7 @@ export default {
if
(
reg
.
test
(
path
))
return
unescape
(
RegExp
.
$2
.
replace
(
/
\+
/g
,
" "
));
if
(
reg
.
test
(
path
))
return
unescape
(
RegExp
.
$2
.
replace
(
/
\+
/g
,
" "
));
return
""
;
return
""
;
}
}
let
list
=
this
.
$refs
.
infoEdit
.
picSubmitList
.
map
(
(
item
)
=>
{
let
list
=
this
.
$refs
.
infoEdit
.
picSubmitList
.
map
(
item
=>
{
let
rs
=
getUrlParms
(
item
.
url
,
"url"
);
let
rs
=
getUrlParms
(
item
.
url
,
"url"
);
return
rs
;
return
rs
;
});
});
...
@@ -192,14 +192,14 @@ export default {
...
@@ -192,14 +192,14 @@ export default {
end_time
:
dayJs
(
this
.
endDate
).
format
(
"YYYY-MM-DD HH:mm:ss"
),
end_time
:
dayJs
(
this
.
endDate
).
format
(
"YYYY-MM-DD HH:mm:ss"
),
pindan_pic
:
picList
,
pindan_pic
:
picList
,
pindan_desc
:
this
.
$refs
.
infoEdit
.
infoEditForm
.
desc
,
pindan_desc
:
this
.
$refs
.
infoEdit
.
infoEditForm
.
desc
,
take_place_ids
:
this
.
takePlaceIDArr
,
take_place_ids
:
this
.
takePlaceIDArr
};
};
if
(
this
.
$route
.
query
.
marketing_id
==
undefined
)
{
if
(
this
.
$route
.
query
.
marketing_id
==
undefined
)
{
const
res
=
await
addMarketing
(
params
);
const
res
=
await
addMarketing
(
params
);
if
(
res
.
code
===
0
)
{
if
(
res
.
code
===
0
)
{
ElMessage
.
success
({
ElMessage
.
success
({
message
:
"添加成功"
,
message
:
"添加成功"
,
type
:
"success"
,
type
:
"success"
});
});
this
.
$router
.
push
({
path
:
"/op/activity/manage"
});
this
.
$router
.
push
({
path
:
"/op/activity/manage"
});
}
else
{
}
else
{
...
@@ -210,7 +210,7 @@ export default {
...
@@ -210,7 +210,7 @@ export default {
if
(
res
.
code
===
0
)
{
if
(
res
.
code
===
0
)
{
ElMessage
.
success
({
ElMessage
.
success
({
message
:
"修改成功"
,
message
:
"修改成功"
,
type
:
"success"
,
type
:
"success"
});
});
this
.
$router
.
push
({
path
:
"/op/activity/manage"
});
this
.
$router
.
push
({
path
:
"/op/activity/manage"
});
}
else
{
}
else
{
...
@@ -220,28 +220,45 @@ export default {
...
@@ -220,28 +220,45 @@ export default {
},
},
getTakeTakePlaceListFromChild
(
val
)
{
getTakeTakePlaceListFromChild
(
val
)
{
this
.
takePlaceIDArr
=
val
;
this
.
takePlaceIDArr
=
val
;
}
,
}
},
},
created
()
{
created
()
{
this
.
marketingInfoMet
();
this
.
marketingInfoMet
();
}
,
}
};
};
</
script
>
</
script
>
<
style
scope
>
<
style
lang=
"less"
scope
>
.releaseProduc {
.releaseProduc {
height: 100%;
padding: 30px;
padding: 30px;
box-sizing: border-box;
box-sizing: border-box;
display: flex;
flex-direction: column;
}
@media screen and (max-width: 800px) {
// form表单
.releaseProduc {
padding: 0;
}
}
}
.headTitle {
.headTitle {
height: 30px;
width: 75%;
width: 75%;
font-size: 18px;
font-size: 18px;
margin: 0 auto 40px auto;
margin: 0 auto 40px auto;
}
}
.steps {
height: 60px;
}
/* 内容cotent */
.content {
flex-grow: 1;
}
.steps {
.steps {
display: flex;
display: flex;
justify-content: center;
justify-content: center;
margin-bottom
:
50
px
;
margin-bottom:
35
px;
}
}
.steps /deep/ .el-step__icon {
.steps /deep/ .el-step__icon {
width: 50px;
width: 50px;
...
@@ -250,15 +267,14 @@ export default {
...
@@ -250,15 +267,14 @@ export default {
.steps /deep/ .el-step.is-horizontal .el-step__line {
.steps /deep/ .el-step.is-horizontal .el-step__line {
top: 25px;
top: 25px;
}
}
.stepsBtn {
.stepsBtn {
width: 100%;
width: 100%;
height: 80px;
height: 80px;
line-height: 80px;
line-height: 80px;
background: white;
background: white;
position
:
fixed
;
/*
position: fixed;
bottom
:
0px
;
bottom: 0px;
*/
text-align: center;
text-align: center;
z-index
:
999
;
z-index:
999;
}
}
</
style
>
</
style
>
src/pages/Groupmeal/Distrib/index.vue
View file @
80f84ebc
<
template
>
<
template
>
<Layout>
<Layout>
<el-card
class=
"goods"
>
<el-card
class=
"goods"
v-loading=
"pageLoading"
>
<div
class=
"header"
>
<div
class=
"header"
>
<el-button
type=
"primary"
@
click=
"assignDeliverer"
<el-button
type=
"primary"
@
click=
"assignDeliverer"
>
分配配送员
</el-button
>
分配配送员
</el-button
...
@@ -32,10 +32,10 @@
...
@@ -32,10 +32,10 @@
<el-button
type=
"primary"
@
click=
"handleModify(scope.row)"
<el-button
type=
"primary"
@
click=
"handleModify(scope.row)"
>
修改
</el-button
>
修改
</el-button
>
>
<el-button
type=
"primary"
@
click=
"
handleDownload(scope.row.url
)"
<el-button
type=
"primary"
@
click=
"
downloadDeliveryRoute(scope.row
)"
>
下载配送路线
</el-button
>
下载配送路线
</el-button
>
>
<el-button
type=
"primary"
@
click=
"
handleDownload(scope.row.url
)"
<el-button
type=
"primary"
@
click=
"
getEmailRecord(scope.row
)"
>
发送记录
</el-button
>
发送记录
</el-button
>
>
</
template
>
</
template
>
...
@@ -234,7 +234,7 @@
...
@@ -234,7 +234,7 @@
>
>
<div
<div
class=
"emailListContent"
class=
"emailListContent"
v-loading=
"
true
"
v-loading=
"
emailRecordsLoading
"
element-loading-text=
"拼命加载中"
element-loading-text=
"拼命加载中"
element-loading-spinner=
"el-icon-loading"
element-loading-spinner=
"el-icon-loading"
>
>
...
@@ -261,7 +261,9 @@ import {
...
@@ -261,7 +261,9 @@ import {
getList
,
getList
,
getSaveDeliverer
,
getSaveDeliverer
,
getAddDeliverer
,
getAddDeliverer
,
newGetMarketingList
newGetMarketingList
,
getEmailRecords
,
getDeliveryRoutes
}
from
"../../../service/Groupmeal/groupmeal"
;
}
from
"../../../service/Groupmeal/groupmeal"
;
import
{
ElMessage
}
from
"element-plus"
;
import
{
ElMessage
}
from
"element-plus"
;
export
default
{
export
default
{
...
@@ -275,32 +277,13 @@ export default {
...
@@ -275,32 +277,13 @@ export default {
return
{
return
{
sendEmailDialogVisible
:
false
,
// 发送email弹窗
sendEmailDialogVisible
:
false
,
// 发送email弹窗
myEmialInput
:
""
,
// email地址
myEmialInput
:
""
,
// email地址
deliverer_xlsx_id
:
""
,
// 下载配送路线API参数
isEmailRequire
:
false
,
// 验证emial非空
isEmailRequire
:
false
,
// 验证emial非空
emialHasError
:
false
,
// 验证email格式
emialHasError
:
false
,
// 验证email格式
showEmailTableDialogVisible
:
false
,
// 展示email发送情况的dialog
showEmailTableDialogVisible
:
false
,
// 展示email发送情况的dialog
emailListTableData
:
[
emailRecordsLoading
:
false
,
// table-loading
{
pageLoading
:
false
,
email
:
"2016-05-02"
,
emailListTableData
:
[],
sendTime
:
"王小虎"
,
status
:
"上海市普陀区金沙江路 1518 弄"
},
{
email
:
"2016-05-02"
,
sendTime
:
"王小虎"
,
status
:
"上海市普陀区金沙江路 1518 弄"
},
{
email
:
"2016-05-02"
,
sendTime
:
"王小虎"
,
status
:
"上海市普陀区金沙江路 1518 弄"
},
{
email
:
"2016-05-02"
,
sendTime
:
"王小虎"
,
status
:
"上海市普陀区金沙江路 1518 弄"
}
],
rules
:
{
rules
:
{
name
:
[{
required
:
true
,
message
:
"请输入姓名"
,
trigger
:
"blur"
}],
name
:
[{
required
:
true
,
message
:
"请输入姓名"
,
trigger
:
"blur"
}],
max_capacity
:
[
max_capacity
:
[
...
@@ -442,17 +425,19 @@ export default {
...
@@ -442,17 +425,19 @@ export default {
}
}
},
},
// 下载路线
// 下载路线
handleDownload
(
url
)
{
downloadDeliveryRoute
(
rowInfo
)
{
this
.
deliverer_xlsx_id
=
rowInfo
.
deliverer_xlsx_id
;
this
.
sendEmailDialogVisible
=
true
;
// url && window.open("http://bp-dev.ini.yidian-inc.com" + url);
// url && window.open("http://bp-dev.ini.yidian-inc.com" + url);
var
ENV
;
//
var ENV;
if
(
process
.
env
.
NODE_ENV
==
"development"
)
{
//
if (process.env.NODE_ENV == "development") {
ENV
=
"http://bp-dev.ini.yidian-inc.com/"
;
//
ENV = "http://bp-dev.ini.yidian-inc.com/";
}
else
if
(
process
.
env
.
NODE_ENV
==
"test"
)
{
//
} else if (process.env.NODE_ENV == "test") {
ENV
=
"http://bp-test.ini.yidian-inc.com/"
;
//
ENV = "http://bp-test.ini.yidian-inc.com/";
}
else
{
//
} else {
ENV
=
"http://bp.ini.yidian-inc.com/"
;
//
ENV = "http://bp.ini.yidian-inc.com/";
}
//
}
url
&&
window
.
open
(
ENV
+
url
);
//
url && window.open(ENV + url);
},
},
// 分配保存
// 分配保存
async
save
()
{
async
save
()
{
...
@@ -508,15 +493,22 @@ export default {
...
@@ -508,15 +493,22 @@ export default {
}
}
},
},
/* 邮箱弹窗相关操作 */
/* 邮箱弹窗相关操作 */
// 取消
// 下载路线(API)
async
downloadDeliveryRoutesAPI
()
{
await
getDeliveryRoutes
({
deliverer_xlsx_id
:
this
.
deliverer_xlsx_id
,
email
:
this
.
myEmialInput
+
"@yidian-inc.com"
});
},
// 取消下载路线操作
sendEmailDialogCancel
()
{
sendEmailDialogCancel
()
{
this
.
sendEmailDialogVisible
=
false
;
this
.
myEmialInput
=
""
;
// 清空输入
this
.
myEmialInput
=
""
;
// 清空输入
this
.
isEmailRequire
=
false
;
this
.
isEmailRequire
=
false
;
this
.
emialHasError
=
false
;
this
.
emialHasError
=
false
;
this
.
sendEmailDialogVisible
=
false
;
},
},
// 确认
// 确认
下载路线操作
sendEmailDialogConfirm
()
{
async
sendEmailDialogConfirm
()
{
if
(
this
.
myEmialInput
.
trim
()
===
""
)
{
if
(
this
.
myEmialInput
.
trim
()
===
""
)
{
this
.
isEmailRequire
=
true
;
this
.
isEmailRequire
=
true
;
return
;
return
;
...
@@ -525,14 +517,79 @@ export default {
...
@@ -525,14 +517,79 @@ export default {
this
.
emialHasError
=
true
;
this
.
emialHasError
=
true
;
return
;
return
;
}
}
this
.
sendEmailDialogVisible
=
false
;
try
{
this
.
myEmialInput
=
""
;
// 清空输入
this
.
pageLoading
=
true
;
this
.
isEmailRequire
=
false
;
await
this
.
downloadDeliveryRoutesAPI
();
this
.
emialHasError
=
false
;
this
.
pageLoading
=
false
;
this
.
sendEmailDialogCancel
();
ElMessage
.
success
(
"操作成功"
);
}
catch
(
err
)
{
this
.
pageLoading
=
false
;
if
(
err
)
{
ElMessage
.
error
(
err
);
}
else
{
ElMessage
.
error
(
"请求错误"
);
}
}
// this.myEmialInput = ""; // 清空输入
// this.isEmailRequire = false;
// this.emialHasError = false;
// this.sendEmailDialogVisible = false;
},
// 查看邮箱记录(API)
async
getEmailRecordsAPI
()
{
let
data
=
await
getEmailRecords
({
deliverer_xlsx_id
:
this
.
deliverer_xlsx_id
});
this
.
emailListTableData
=
this
.
formatEmailRecord
(
data
.
result
);
},
// 查看发送记录
async
getEmailRecord
(
rowInfo
)
{
this
.
deliverer_xlsx_id
=
rowInfo
.
deliverer_xlsx_id
;
// 赋值 取参数
this
.
showEmailTableDialogVisible
=
true
;
try
{
this
.
emailRecordsLoading
=
true
;
await
this
.
getEmailRecordsAPI
();
this
.
emailRecordsLoading
=
false
;
}
catch
(
err
)
{
this
.
emailRecordsLoading
=
false
;
if
(
err
)
{
ElMessage
.
error
(
err
);
}
else
{
ElMessage
.
error
(
"请求错误"
);
}
}
},
},
//带emailtable的dialog
//带emailtable的dialog
showEmailDialogCancel
()
{
showEmailDialogCancel
()
{
this
.
showEmailTableDialogVisible
=
false
;
this
.
showEmailTableDialogVisible
=
false
;
},
// 数据转换(api-table展示)
// create_time: "2021-08-19 17:38:05"
// deliverer_xlsx_id: 49
// deliverer_xlsx_log_id: 4
// email: "asdasdasdf"
// send_status: 1
// send_time: ""
// update_time: "2021-08-19 17:38:13"
formatEmailRecord
(
initialData
)
{
let
matchRelation
=
{
"0"
:
"待生成"
,
"1"
:
"生成中"
,
"2"
:
"已发送"
,
"3"
:
"发送失败"
};
let
result
=
initialData
.
map
(
item
=>
{
let
res
=
{
email
:
item
.
email
,
sendTime
:
item
.
send_time
,
status
:
matchRelation
[
item
.
send_status
.
toString
()]
};
return
res
;
});
return
result
;
}
}
}
}
};
};
...
...
src/service/Groupmeal/groupmeal.js
View file @
80f84ebc
import
axios
from
"@/utils/request"
;
import
axios
from
"@/utils/request"
;
import
{
handlerSuccessResponse
}
from
"@/utils/handlerResponse"
;
// 获取主页配送员列表
// 获取主页配送员列表
export
async
function
getList
(
params
)
{
export
async
function
getList
(
params
)
{
const
res
=
await
axios
.
post
(
"/api/v1/order/deliverer/list_day_deliverer_conf"
,
params
);
const
res
=
await
axios
.
post
(
return
res
;
"/api/v1/order/deliverer/list_day_deliverer_conf"
,
}
params
);
return
res
;
}
// 获取分配配送员列表
// 获取分配配送员列表
export
async
function
getDelivererList
(
params
)
{
export
async
function
getDelivererList
(
params
)
{
const
res
=
await
axios
.
post
(
const
res
=
await
axios
.
post
(
...
@@ -26,6 +30,17 @@ export async function getSaveDeliverer(params) {
...
@@ -26,6 +30,17 @@ export async function getSaveDeliverer(params) {
);
);
return
res
;
return
res
;
}
}
// 下载配送路线 -lh
export
async
function
getDeliveryRoutes
(
params
)
{
const
res
=
await
axios
.
post
(
"/api/v1/order/deliverer/build_plan"
,
params
);
return
handlerSuccessResponse
(
res
);
}
// 查看邮件记录 -lh
export
async
function
getEmailRecords
(
params
)
{
const
res
=
await
axios
.
post
(
"/api/v1/order/deliverer/plan_down_log"
,
params
);
//return Promise.reject(res);
return
handlerSuccessResponse
(
res
);
}
// 老订单管理
// 老订单管理
...
@@ -53,7 +68,7 @@ export async function getGoodsList(params) {
...
@@ -53,7 +68,7 @@ export async function getGoodsList(params) {
// 获取自提点
// 获取自提点
export
async
function
getSubShopList
(
params
)
{
export
async
function
getSubShopList
(
params
)
{
const
res
=
await
axios
.
get
(
"/api/v1/order/oldbackground/sub_shop_list"
,{
const
res
=
await
axios
.
get
(
"/api/v1/order/oldbackground/sub_shop_list"
,
{
params
params
});
});
return
res
;
return
res
;
...
@@ -98,21 +113,24 @@ export async function refundOrder(orderId, itemsToRefund) {
...
@@ -98,21 +113,24 @@ export async function refundOrder(orderId, itemsToRefund) {
// 订单驳回
// 订单驳回
export
async
function
orderRefundReject
(
params
)
{
export
async
function
orderRefundReject
(
params
)
{
const
res
=
await
axios
.
get
(
"/api/v1/order/oldbackground/order_refund_reject"
,
{
const
res
=
await
axios
.
get
(
params
"/api/v1/order/oldbackground/order_refund_reject"
,
});
{
params
}
);
return
res
;
return
res
;
}
}
// 导出订单
// 导出订单
export
function
getOrderExportURL
(
eventId
,
type
)
{
export
function
getOrderExportURL
(
eventId
,
type
)
{
var
ENV
;
var
ENV
;
if
(
process
.
env
.
NODE_ENV
==
"development"
)
{
if
(
process
.
env
.
NODE_ENV
==
"development"
)
{
ENV
=
"http://bp-dev.ini.yidian-inc.com/"
ENV
=
"http://bp-dev.ini.yidian-inc.com/"
;
}
else
if
(
process
.
env
.
NODE_ENV
==
"test"
)
{
}
else
if
(
process
.
env
.
NODE_ENV
==
"test"
)
{
ENV
=
"http://bp-test.ini.yidian-inc.com/"
ENV
=
"http://bp-test.ini.yidian-inc.com/"
;
}
else
{
}
else
{
ENV
=
"http://bp.ini.yidian-inc.com/"
ENV
=
"http://bp.ini.yidian-inc.com/"
;
}
}
return
`
${
ENV
}
order/oldbackground/order_export?marketing_id=
${
eventId
}
&type=
${
type
}
`
;
return
`
${
ENV
}
order/oldbackground/order_export?marketing_id=
${
eventId
}
&type=
${
type
}
`
;
}
}
...
@@ -129,23 +147,31 @@ export async function newGetOrderList(params) {
...
@@ -129,23 +147,31 @@ export async function newGetOrderList(params) {
// 获取活动名称
// 获取活动名称
export
async
function
newGetMarketingList
()
{
export
async
function
newGetMarketingList
()
{
const
res
=
await
axios
.
get
(
"/api/v1/order/background/order_condition_marketing_list"
);
const
res
=
await
axios
.
get
(
"/api/v1/order/background/order_condition_marketing_list"
);
return
res
;
return
res
;
}
}
// 获取商品名称
// 获取商品名称
export
async
function
newGetGoodsList
(
params
)
{
export
async
function
newGetGoodsList
(
params
)
{
const
res
=
await
axios
.
get
(
"/api/v1/order/background/order_condition_goods_list"
,
{
const
res
=
await
axios
.
get
(
params
"/api/v1/order/background/order_condition_goods_list"
,
});
{
params
}
);
return
res
;
return
res
;
}
}
// 获取自提点
// 获取自提点
export
async
function
newGetSubShopList
(
params
)
{
export
async
function
newGetSubShopList
(
params
)
{
const
res
=
await
axios
.
get
(
"/api/v1/order/background/order_condition_take_place_list"
,{
const
res
=
await
axios
.
get
(
params
"/api/v1/order/background/order_condition_take_place_list"
,
});
{
params
}
);
return
res
;
return
res
;
}
}
...
@@ -185,12 +211,12 @@ export async function newOrderRefundReject(params) {
...
@@ -185,12 +211,12 @@ export async function newOrderRefundReject(params) {
// 导出订单
// 导出订单
export
function
newGetOrderExportURL
(
eventId
,
type
)
{
export
function
newGetOrderExportURL
(
eventId
,
type
)
{
var
ENV
;
var
ENV
;
if
(
process
.
env
.
NODE_ENV
==
"development"
)
{
if
(
process
.
env
.
NODE_ENV
==
"development"
)
{
ENV
=
"http://bp-dev.ini.yidian-inc.com/"
ENV
=
"http://bp-dev.ini.yidian-inc.com/"
;
}
else
if
(
process
.
env
.
NODE_ENV
==
"test"
)
{
}
else
if
(
process
.
env
.
NODE_ENV
==
"test"
)
{
ENV
=
"http://bp-test.ini.yidian-inc.com/"
ENV
=
"http://bp-test.ini.yidian-inc.com/"
;
}
else
{
}
else
{
ENV
=
"http://bp.ini.yidian-inc.com/"
ENV
=
"http://bp.ini.yidian-inc.com/"
;
}
}
return
`
${
ENV
}
order/background/order_export?marketing_id=
${
eventId
}
&type=
${
type
}
`
;
return
`
${
ENV
}
order/background/order_export?marketing_id=
${
eventId
}
&type=
${
type
}
`
;
}
}
src/utils/handlerResponse.js
0 → 100644
View file @
80f84ebc
export
const
handlerSuccessResponse
=
async
response
=>
{
if
(
!
response
||
response
.
code
!==
0
)
{
return
Promise
.
reject
(
response
.
reason
);
}
return
Promise
.
resolve
(
response
);
};
src/utils/tools.js
View file @
80f84ebc
//验证邮箱合法性 (验证头部信息)
//验证邮箱合法性 (验证头部信息)
export
const
checkEmailName
=
emailName
=>
{
export
const
checkEmailName
=
emailName
=>
{
let
str
=
/
[
a-zA-Z0-9_-
]
+/
;
let
str
=
/
[
a-zA-Z0-9_-
]
+/
;
if
(
str
.
test
(
emailName
))
{
if
(
!
str
.
test
(
emailName
))
{
return
false
;
return
false
;
}
else
{
}
else
{
return
true
;
return
true
;
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment