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
ec4be6d4
Commit
ec4be6d4
authored
Sep 10, 2021
by
jisiyu
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
add:商家管理
parent
ca2eeb0e
Changes
9
Hide whitespace changes
Inline
Side-by-side
Showing
9 changed files
with
843 additions
and
654 deletions
+843
-654
goods.js
server/controllers/goods.js
+51
-0
router.js
server/router.js
+6
-0
index.vue
src/pages/Groupmeal/Distrib/index.vue
+522
-620
config.js
src/pages/Groupmeal/components/PageHeader/config.js
+20
-16
index.less
src/pages/Groupmeal/merchantManagement/index.less
+45
-0
index.vue
src/pages/Groupmeal/merchantManagement/index.vue
+154
-0
index.js
src/router/Groupmeal/index.js
+21
-17
goods.js
src/service/Goods/goods.js
+23
-0
vue.config.js
vue.config.js
+1
-1
No files found.
server/controllers/goods.js
View file @
ec4be6d4
...
@@ -193,3 +193,54 @@ exports.updateMarketingList = async (ctx) => {
...
@@ -193,3 +193,54 @@ exports.updateMarketingList = async (ctx) => {
const
res
=
await
req
(
ctx
,
opts
);
const
res
=
await
req
(
ctx
,
opts
);
ctx
.
body
=
res
;
ctx
.
body
=
res
;
};
};
// 商家列表
exports
.
otaList
=
async
(
ctx
)
=>
{
const
url
=
`
${
GOODS_URI
}
/goods/background/ota_list`
;
const
opts
=
{
url
,
method
:
"POST"
,
json
:
true
,
body
:
ctx
.
request
.
body
,
};
const
res
=
await
req
(
ctx
,
opts
);
ctx
.
body
=
res
;
};
// 商家列表-add
exports
.
addOta
=
async
(
ctx
)
=>
{
const
url
=
`
${
GOODS_URI
}
/goods/background/add_ota`
;
const
opts
=
{
url
,
method
:
"POST"
,
json
:
true
,
body
:
ctx
.
request
.
body
,
};
const
res
=
await
req
(
ctx
,
opts
);
ctx
.
body
=
res
;
};
// 商家列表-禁用
exports
.
deleteOta
=
async
(
ctx
)
=>
{
const
url
=
`
${
GOODS_URI
}
/goods/background/delete_ota`
;
const
opts
=
{
url
,
method
:
"POST"
,
json
:
true
,
body
:
ctx
.
request
.
body
,
};
const
res
=
await
req
(
ctx
,
opts
);
ctx
.
body
=
res
;
};
// 商家列表-修改
exports
.
updateOta
=
async
(
ctx
)
=>
{
const
url
=
`
${
GOODS_URI
}
/goods/background/uodate_ota`
;
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 @
ec4be6d4
...
@@ -64,6 +64,12 @@ router.post(`${API_VERSION}/get_addmarketing_list`, goods.getAddMarketingList);
...
@@ -64,6 +64,12 @@ router.post(`${API_VERSION}/get_addmarketing_list`, goods.getAddMarketingList);
router
.
post
(
`
${
API_VERSION
}
/get_find_goods_list`
,
goods
.
getFindGoodsList
);
router
.
post
(
`
${
API_VERSION
}
/get_find_goods_list`
,
goods
.
getFindGoodsList
);
router
.
post
(
`
${
API_VERSION
}
/get_marketing_info`
,
goods
.
getMarketingInfo
);
router
.
post
(
`
${
API_VERSION
}
/get_marketing_info`
,
goods
.
getMarketingInfo
);
router
.
post
(
`
${
API_VERSION
}
/update_marketing_list`
,
goods
.
updateMarketingList
);
router
.
post
(
`
${
API_VERSION
}
/update_marketing_list`
,
goods
.
updateMarketingList
);
router
.
post
(
`
${
API_VERSION
}
/otaList`
,
goods
.
otaList
);
//商家管理
router
.
post
(
`
${
API_VERSION
}
/addOta`
,
goods
.
addOta
);
router
.
post
(
`
${
API_VERSION
}
/deleteOta`
,
goods
.
deleteOta
);
router
.
post
(
`
${
API_VERSION
}
/updateOta`
,
goods
.
updateOta
);
//生活号
//生活号
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/Groupmeal/Distrib/index.vue
View file @
ec4be6d4
<
template
>
<
template
>
<Layout>
<Layout>
<el-card
class=
"goods"
v-loading=
"pageLoading"
>
<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
<el-button
type=
"primary"
@
click=
"dialogFormAdd = true"
>
添加配送员
</el-button>
</div>
<el-table
:data=
"distribList"
border
stripe
fit
style=
"width: 100%"
>
<el-table-column
align=
"center"
prop=
"activeName"
label=
"活动名称"
></el-table-column>
<el-table-column
align=
"center"
label=
"配送员数量"
>
<template
#
default=
"scope"
>
{{
scope
.
row
.
list
.
length
}}
</
template
>
</el-table-column>
<el-table-column
align=
"center"
prop=
"deliverer_name"
label=
"配送人员"
>
<
template
#
default=
"scope"
>
{{
scope
.
row
.
list
.
map
((
item
)
=>
item
.
deliverer_name
).
join
(
"、"
)
}}
</
template
>
</el-table-column>
<el-table-column
prop=
"prop"
label=
"操作"
align=
"center"
min-width=
"100"
>
<
template
#
default=
"scope"
>
<el-button
type=
"primary"
@
click=
"handleModify(scope.row)"
>
修改
</el-button>
<el-button
type=
"primary"
@
click=
"downloadDeliveryRoute(scope.row)"
>
下载配送路线
</el-button>
<el-button
type=
"primary"
@
click=
"getEmailRecord(scope.row)"
>
发送记录
</el-button>
</
template
>
</el-table-column>
</el-table>
<!-- 页码区 -->
<Pagination
@
current-change=
"handleCurrentChange"
:current-page=
"page"
:page-size=
"pageSize"
:total=
"total"
></Pagination>
<!-- 添加配送员弹框 -->
<el-dialog
title=
"添加配送员"
v-model=
"dialogFormAdd"
width=
"70%"
:show-close=
"false"
>
<el-form
class=
"dioFor"
:model=
"addDeliverer"
:rules=
"rules"
>
<el-form-item
label=
"姓名"
label-width=
"100px"
prop=
"name"
>
<el-input
v-model=
"addDeliverer.name"
maxlength=
"10"
type=
"text"
show-word-limit
clearable
autocomplete=
"off"
@
input=
"addDeliverer.name = $event.replace(/[^a-z0-9A-Z\u4e00-\u9fa5()()\\-]+/g, '').replace(/\s/g, '')"
></el-input>
</el-form-item>
<el-form-item
label=
"配送上限"
label-width=
"100px"
prop=
"max_capacity"
>
<el-input
v-model
.
number=
"addDeliverer.max_capacity"
onkeyup=
"value=value.replace(/[^\d]/g,'')"
clearable
autocomplete=
"off"
@
input=
"addDeliverer.max_capacity = $event.replace(/[^a-z0-9A-Z\u4e00-\u9fa5()()\\-]+/g, '').replace(/\s/g, '')"
></el-input>
</el-form-item>
<el-form-item
label=
"最小配送量"
label-width=
"100px"
prop=
"min_capacity"
>
<el-input
v-model
.
number=
"addDeliverer.min_capacity"
onkeyup=
"value=value.replace(/[^\d]/g,'')"
clearable
autocomplete=
"off"
></el-input>
</el-form-item>
<el-form-item
label=
"配送工具"
label-width=
"100px"
prop=
"tool_type"
>
<el-select
v-model=
"addDeliverer.tool_type"
clearable
placeholder=
"请选择配送工具"
>
<el-option
label=
"电动车"
value=
"1"
></el-option>
<el-option
label=
"摩托车"
value=
"2"
></el-option>
</el-select>
</el-form-item>
</el-form>
<
template
#
footer
>
<span
class=
"dialog-footer"
>
<el-button
@
click=
"addCancel"
>
取 消
</el-button>
<el-button
type=
"primary"
@
click=
"addSave"
>
保 存
</el-button>
</span>
</
template
>
</el-dialog>
<!-- 分配配送员弹框 -->
<el-dialog
title=
"分配配送员"
v-model=
"dialogFormAssign"
width=
"70%"
:show-close=
"false"
>
<el-form
class=
"dioFor"
>
<el-form-item
label=
"活动名称"
label-width=
"100px"
>
<el-select
v-model=
"selectActivity"
:disabled=
"isEdit"
clearable
filterable
@
change=
"getSelectActivityInfo"
>
<el-option
:label=
"item.label"
:value=
"item.value"
v-for=
"item in marketingList"
:key=
"item.value"
></el-option>
</el-select>
</el-form-item>
<span
class=
"dioFor"
>
已选:{{ multipleSelection.length }}人
</span>
<el-table
ref=
"multipleTable"
class=
"diotab"
align=
"center"
:data=
"deliverer"
max-height=
"300"
border
size=
"small"
style=
"width: 100%"
@
selection-change=
"selectGoodsChange"
>
<el-table-column
width=
"60"
align=
"center"
type=
"selection"
></el-table-column>
<el-table-column
align=
"center"
prop=
"deliverer_name"
label=
"配送员姓名"
></el-table-column>
<el-table-column
align=
"center"
prop=
"deliverer_max_capacity"
label=
"配送上限"
width=
"130"
></el-table-column>
<el-table-column
align=
"center"
prop=
"deliverer_min_capacity"
label=
"最小配送量"
></el-table-column>
<el-table-column
align=
"center"
prop=
"deliverer_tool_type"
label=
"配送工具"
>
<
template
#
default=
"scope"
>
{{
scope
.
row
.
deliverer_tool_type
==
0
?
"电动车"
:
"摩托车"
}}
</
template
>
</el-table-column>
</el-table>
</el-form>
<
template
#
footer
>
<span
class=
"dialog-footer"
>
<el-button
@
click=
"assignCancel"
>
取 消
</el-button>
<el-button
type=
"primary"
@
click=
"save"
>
保 存
</el-button>
</span>
</
template
>
</el-dialog>
</el-card>
<!-- 发送邮件的dialog -->
<YDDialog
dialogTitle=
"下载配送路线"
cancelButtonText=
"关闭"
:dialogCenter=
"true"
:myDialogVisible=
"sendEmailDialogVisible"
cancelDialogMethodName=
"sendEmailDialogCancel"
confirmDialogMethodName=
"sendEmailDialogConfirm"
@
sendEmailDialogCancel=
"sendEmailDialogCancel"
@
sendEmailDialogConfirm=
"sendEmailDialogConfirm"
>
>
<el-button
type=
"primary"
@
click=
"dialogFormAdd = true"
<div
class=
"emailContent"
>
>
添加配送员
</el-button
<p>
生成配送路线大概需要两分钟,生成完毕后会发送到您的邮箱,请填写接受邮箱(一点邮箱)
</p>
<div
class=
"emialInputWrapper"
>
<el-input
class=
"myInput"
v-model=
"myEmialInput"
placeholder=
"请输入邮箱地址"
:class=
"{
myInputRequire: isEmailRequire,
myInputError: emialHasError,
}"
></el-input>
<span>
@yidian-inc.com
</span>
</div>
</div>
</YDDialog>
<!-- 显示email发送情况的列表 -->
<YDDialog
dialogTitle=
"发送记录"
cancelButtonText=
"关闭"
:dialogCenter=
"true"
:isShowConfirmButton=
"false"
:myDialogVisible=
"showEmailTableDialogVisible"
cancelDialogMethodName=
"showEmailDialogCancel"
@
showEmailDialogCancel=
"showEmailDialogCancel"
>
>
</div>
<div
class=
"emailListContent"
v-loading=
"emailRecordsLoading"
element-loading-text=
"拼命加载中"
element-loading-spinner=
"el-icon-loading"
>
<el-table
:data=
"distribList"
border
stripe
fit
style=
"width: 100%"
>
<el-table
:data=
"emailListTableData"
style=
"width: 100%"
>
<el-table-column
align=
"center"
prop=
"activeName"
label=
"活动名称"
>
<el-table-column
prop=
"email"
label=
"接收邮箱"
width=
"180"
></el-table-column>
</el-table-column>
<el-table-column
prop=
"sendTime"
label=
"发送时间"
width=
"180"
></el-table-column>
<el-table-column
align=
"center"
label=
"配送员数量"
>
<el-table-column
prop=
"status"
label=
"状态"
></el-table-column>
<template
#
default=
"scope"
>
</el-table>
{{
scope
.
row
.
list
.
length
}}
</div>
</
template
>
</YDDialog>
</el-table-column>
</Layout>
<el-table-column
align=
"center"
prop=
"deliverer_name"
label=
"配送人员"
>
<
template
#
default=
"scope"
>
{{
scope
.
row
.
list
.
map
(
item
=>
item
.
deliverer_name
).
join
(
"、"
)
}}
</
template
>
</el-table-column>
<el-table-column
prop=
"prop"
label=
"操作"
align=
"center"
min-width=
"100"
>
<
template
#
default=
"scope"
>
<el-button
type=
"primary"
@
click=
"handleModify(scope.row)"
>
修改
</el-button
>
<el-button
type=
"primary"
@
click=
"downloadDeliveryRoute(scope.row)"
>
下载配送路线
</el-button
>
<el-button
type=
"primary"
@
click=
"getEmailRecord(scope.row)"
>
发送记录
</el-button
>
</
template
>
</el-table-column>
</el-table>
<!-- 页码区 -->
<Pagination
@
current-change=
"handleCurrentChange"
:current-page=
"page"
:page-size=
"pageSize"
:total=
"total"
></Pagination>
<!-- 添加配送员弹框 -->
<el-dialog
title=
"添加配送员"
v-model=
"dialogFormAdd"
width=
"70%"
:show-close=
"false"
>
<el-form
class=
"dioFor"
:model=
"addDeliverer"
:rules=
"rules"
>
<el-form-item
label=
"姓名"
label-width=
"100px"
prop=
"name"
>
<el-input
v-model=
"addDeliverer.name"
maxlength=
"10"
type=
"text"
show-word-limit
clearable
autocomplete=
"off"
@
input=
"
addDeliverer.name = $event
.replace(/[^a-z0-9A-Z\u4e00-\u9fa5()()\\-]+/g, '')
.replace(/\s/g, '')
"
></el-input>
</el-form-item>
<el-form-item
label=
"配送上限"
label-width=
"100px"
prop=
"max_capacity"
>
<el-input
v-model
.
number=
"addDeliverer.max_capacity"
onkeyup=
"value=value.replace(/[^\d]/g,'')"
clearable
autocomplete=
"off"
@
input=
"
addDeliverer.max_capacity = $event
.replace(/[^a-z0-9A-Z\u4e00-\u9fa5()()\\-]+/g, '')
.replace(/\s/g, '')
"
></el-input>
</el-form-item>
<el-form-item
label=
"最小配送量"
label-width=
"100px"
prop=
"min_capacity"
>
<el-input
v-model
.
number=
"addDeliverer.min_capacity"
onkeyup=
"value=value.replace(/[^\d]/g,'')"
clearable
autocomplete=
"off"
></el-input>
</el-form-item>
<el-form-item
label=
"配送工具"
label-width=
"100px"
prop=
"tool_type"
>
<el-select
v-model=
"addDeliverer.tool_type"
clearable
placeholder=
"请选择配送工具"
>
<el-option
label=
"电动车"
value=
"1"
></el-option>
<el-option
label=
"摩托车"
value=
"2"
></el-option>
</el-select>
</el-form-item>
</el-form>
<
template
#
footer
>
<span
class=
"dialog-footer"
>
<el-button
@
click=
"addCancel"
>
取 消
</el-button>
<el-button
type=
"primary"
@
click=
"addSave"
>
保 存
</el-button>
</span>
</
template
>
</el-dialog>
<!-- 分配配送员弹框 -->
<el-dialog
title=
"分配配送员"
v-model=
"dialogFormAssign"
width=
"70%"
:show-close=
"false"
>
<el-form
class=
"dioFor"
>
<el-form-item
label=
"活动名称"
label-width=
"100px"
>
<el-select
v-model=
"selectActivity"
:disabled=
"isEdit"
clearable
filterable
@
change=
"getSelectActivityInfo"
>
<el-option
:label=
"item.label"
:value=
"item.value"
v-for=
"item in marketingList"
:key=
"item.value"
></el-option>
</el-select>
</el-form-item>
<span
class=
"dioFor"
>
已选:{{ multipleSelection.length }}人
</span>
<el-table
ref=
"multipleTable"
class=
"diotab"
align=
"center"
:data=
"deliverer"
max-height=
"300"
border
size=
"small"
style=
"width: 100%"
@
selection-change=
"selectGoodsChange"
>
<el-table-column
width=
"60"
align=
"center"
type=
"selection"
>
</el-table-column>
<el-table-column
align=
"center"
prop=
"deliverer_name"
label=
"配送员姓名"
>
</el-table-column>
<el-table-column
align=
"center"
prop=
"deliverer_max_capacity"
label=
"配送上限"
width=
"130"
>
</el-table-column>
<el-table-column
align=
"center"
prop=
"deliverer_min_capacity"
label=
"最小配送量"
>
</el-table-column>
<el-table-column
align=
"center"
prop=
"deliverer_tool_type"
label=
"配送工具"
>
<
template
#
default=
"scope"
>
{{
scope
.
row
.
deliverer_tool_type
==
0
?
"电动车"
:
"摩托车"
}}
</
template
>
</el-table-column>
</el-table>
</el-form>
<
template
#
footer
>
<span
class=
"dialog-footer"
>
<el-button
@
click=
"assignCancel"
>
取 消
</el-button>
<el-button
type=
"primary"
@
click=
"save"
>
保 存
</el-button>
</span>
</
template
>
</el-dialog>
</el-card>
<!-- 发送邮件的dialog -->
<YDDialog
dialogTitle=
"下载配送路线"
cancelButtonText=
"关闭"
:dialogCenter=
"true"
:myDialogVisible=
"sendEmailDialogVisible"
cancelDialogMethodName=
"sendEmailDialogCancel"
confirmDialogMethodName=
"sendEmailDialogConfirm"
@
sendEmailDialogCancel=
"sendEmailDialogCancel"
@
sendEmailDialogConfirm=
"sendEmailDialogConfirm"
>
<div
class=
"emailContent"
>
<p>
生成配送路线大概需要两分钟,生成完毕后会发送到您的邮箱,请填写接受邮箱(一点邮箱)
</p>
<div
class=
"emialInputWrapper"
>
<el-input
class=
"myInput"
v-model=
"myEmialInput"
placeholder=
"请输入邮箱地址"
:class=
"{
myInputRequire: isEmailRequire,
myInputError: emialHasError
}"
></el-input>
<span>
@yidian-inc.com
</span>
</div>
</div>
</YDDialog>
<!-- 显示email发送情况的列表 -->
<YDDialog
dialogTitle=
"发送记录"
cancelButtonText=
"关闭"
:dialogCenter=
"true"
:isShowConfirmButton=
"false"
:myDialogVisible=
"showEmailTableDialogVisible"
cancelDialogMethodName=
"showEmailDialogCancel"
@
showEmailDialogCancel=
"showEmailDialogCancel"
>
<div
class=
"emailListContent"
v-loading=
"emailRecordsLoading"
element-loading-text=
"拼命加载中"
element-loading-spinner=
"el-icon-loading"
>
<el-table
:data=
"emailListTableData"
style=
"width: 100%"
>
<el-table-column
prop=
"email"
label=
"接收邮箱"
width=
"180"
>
</el-table-column>
<el-table-column
prop=
"sendTime"
label=
"发送时间"
width=
"180"
>
</el-table-column>
<el-table-column
prop=
"status"
label=
"状态"
>
</el-table-column>
</el-table>
</div>
</YDDialog>
</Layout>
</template>
</template>
<
script
>
<
script
>
import
{
checkEmailName
}
from
"../../../utils/tools.js"
;
import
{
checkEmailName
}
from
"../../../utils/tools.js"
;
import
YDDialog
from
"@/components/Dialog/YDDialoag.vue"
;
import
YDDialog
from
"@/components/Dialog/YDDialoag.vue"
;
import
Layout
from
"../layout/index.vue"
;
import
Layout
from
"../layout/index.vue"
;
import
Pagination
from
"../components/Pagination/index.vue"
;
import
Pagination
from
"../components/Pagination/index.vue"
;
//import Pagination from "../components/Pagination/index.vue";
//import Pagination from "../components/Pagination/index.vue";
import
{
import
{
getDelivererList
,
getDelivererList
,
getList
,
getList
,
getSaveDeliverer
,
getSaveDeliverer
,
getAddDeliverer
,
getAddDeliverer
,
newGetMarketingList
,
newGetMarketingList
,
getEmailRecords
,
getEmailRecords
,
getDeliveryRoutes
getDeliveryRoutes
,
}
from
"../../../service/Groupmeal/groupmeal"
;
}
from
"../../../service/Groupmeal/groupmeal"
;
import
{
ElMessage
}
from
"element-plus"
;
import
{
ElMessage
}
from
"element-plus"
;
export
default
{
export
default
{
name
:
"Distrib"
,
name
:
"Distrib"
,
components
:
{
components
:
{
Layout
,
Layout
,
Pagination
,
Pagination
,
YDDialog
YDDialog
,
},
},
data
()
{
data
()
{
return
{
return
{
sendEmailDialogVisible
:
false
,
// 发送email弹窗
sendEmailDialogVisible
:
false
,
// 发送email弹窗
myEmialInput
:
""
,
// email地址
myEmialInput
:
""
,
// email地址
deliverer_xlsx_id
:
""
,
// 下载配送路线API参数
deliverer_xlsx_id
:
""
,
// 下载配送路线API参数
isEmailRequire
:
false
,
// 验证emial非空
isEmailRequire
:
false
,
// 验证emial非空
emialHasError
:
false
,
// 验证email格式
emialHasError
:
false
,
// 验证email格式
showEmailTableDialogVisible
:
false
,
// 展示email发送情况的dialog
showEmailTableDialogVisible
:
false
,
// 展示email发送情况的dialog
emailRecordsLoading
:
false
,
// table-loading
emailRecordsLoading
:
false
,
// table-loading
pageLoading
:
false
,
pageLoading
:
false
,
emailListTableData
:
[],
emailListTableData
:
[],
rules
:
{
rules
:
{
name
:
[{
required
:
true
,
message
:
"请输入姓名"
,
trigger
:
"blur"
}],
name
:
[{
required
:
true
,
message
:
"请输入姓名"
,
trigger
:
"blur"
}],
max_capacity
:
[
max_capacity
:
[
{
required
:
true
,
message
:
"请填写配送上限"
,
trigger
:
"blur"
}
{
required
:
true
,
message
:
"请填写配送上限"
,
trigger
:
"blur"
},
// { type: "number", message: "请填写数值哦", trigger: "change" },
// { type: "number", message: "请填写数值哦", trigger: "change" },
],
],
min_capacity
:
[
min_capacity
:
[{
type
:
"number"
,
message
:
"请填写数值哦"
,
trigger
:
"change"
}],
{
type
:
"number"
,
message
:
"请填写数值哦"
,
trigger
:
"change"
}
},
]
dialogFormAdd
:
false
,
},
// 列表
dialogFormAdd
:
false
,
distribList
:
[],
// 列表
// 添加配送员弹框
distribList
:
[],
addDeliverer
:
{
// 添加配送员弹框
name
:
""
,
addDeliverer
:
{
max_capacity
:
""
,
//配送上限
name
:
""
,
min_capacity
:
""
,
//最小配送量
max_capacity
:
""
,
//配送上限
tool_type
:
[],
//配送工具
min_capacity
:
""
,
//最小配送量
},
tool_type
:
[]
//配送工具
//分配配送员弹框
},
dialogFormAssign
:
false
,
//分配配送员弹框
deliverer
:
[],
dialogFormAssign
:
false
,
multipleSelection
:
[],
deliverer
:
[],
selectActivity
:
""
,
//活动下拉框
multipleSelection
:
[],
codeForModify
:
""
,
// 存储修改的code
selectActivity
:
""
,
//活动下拉框
total
:
0
,
codeForModify
:
""
,
// 存储修改的code
page
:
1
,
total
:
0
,
pageSize
:
20
,
page
:
1
,
isEdit
:
false
,
pageSize
:
20
,
marketingList
:
[],
isEdit
:
false
,
};
marketingList
:
[]
},
};
created
()
{
},
this
.
getList
();
created
()
{
this
.
getDelivererList
();
this
.
getList
();
this
.
newGetMarketingList
();
this
.
getDelivererList
();
},
this
.
newGetMarketingList
();
methods
:
{
},
selectGoodsChange
(
val
)
{
methods
:
{
this
.
multipleSelection
=
val
;
selectGoodsChange
(
val
)
{
},
this
.
multipleSelection
=
val
;
// 页码变化
},
handleCurrentChange
(
e
)
{
// 页码变化
this
.
page
=
e
;
handleCurrentChange
(
e
)
{
this
.
getList
();
this
.
page
=
e
;
},
this
.
getList
();
// 清空
},
resetDate
()
{
// 清空
// 添加配送员弹框
resetDate
()
{
(
this
.
addDeliverer
=
{
// 添加配送员弹框
name
:
""
,
(
this
.
addDeliverer
=
{
max_capacity
:
""
,
//配送上限
name
:
""
,
min_capacity
:
""
,
//最小配送量
max_capacity
:
""
,
//配送上限
tool_type
:
[],
//配送工具
min_capacity
:
""
,
//最小配送量
}),
tool_type
:
[]
//配送工具
(
this
.
deliverer
=
[]),
}),
(
this
.
multipleSelection
=
[]);
(
this
.
deliverer
=
[]),
this
.
selectActivity
=
""
;
//活动下拉框
(
this
.
multipleSelection
=
[]);
},
this
.
selectActivity
=
""
;
//活动下拉框
// 获取主页列表
},
async
getList
()
{
// 获取主页列表
const
{
page
,
pageSize
}
=
this
;
async
getList
()
{
const
params
=
{
const
{
page
,
pageSize
}
=
this
;
page
,
const
params
=
{
pageSize
,
page
,
};
pageSize
try
{
};
const
res
=
await
getList
(
params
);
try
{
this
.
distribList
=
res
.
response
.
list
;
const
res
=
await
getList
(
params
);
this
.
total
=
res
.
response
.
total
;
this
.
distribList
=
res
.
response
.
list
;
}
catch
(
error
)
{
this
.
total
=
res
.
response
.
total
;
console
.
log
(
error
);
}
catch
(
error
)
{
}
console
.
log
(
error
);
},
}
// 添加配送员
},
async
addSave
()
{
// 添加配送员
const
{
name
,
max_capacity
,
min_capacity
,
tool_type
}
=
this
.
addDeliverer
;
async
addSave
()
{
if
(
!
name
)
return
ElMessage
(
"请填写配送员姓名"
);
const
{
name
,
max_capacity
,
min_capacity
,
tool_type
}
=
this
.
addDeliverer
;
if
(
!
max_capacity
)
return
ElMessage
(
"请填写配送上限"
);
if
(
!
name
)
return
ElMessage
(
"请填写配送员姓名"
);
if
(
min_capacity
!==
""
&&
min_capacity
<=
0
)
return
ElMessage
(
"最小配送量不能为0或小于0"
);
if
(
!
max_capacity
)
return
ElMessage
(
"请填写配送上限"
);
if
(
!
min_capacity
)
return
ElMessage
(
"请填写最小配送量"
);
if
(
min_capacity
!==
""
&&
min_capacity
<=
0
)
if
(
!
tool_type
)
return
ElMessage
(
"请选择配送工具"
);
return
ElMessage
(
"最小配送量不能为0或小于0"
);
const
params
=
{
if
(
!
min_capacity
)
return
ElMessage
(
"请填写最小配送量"
);
name
,
if
(
!
tool_type
)
return
ElMessage
(
"请选择配送工具"
);
max_capacity
:
+
max_capacity
,
const
params
=
{
min_capacity
:
+
min_capacity
,
name
,
tool_type
:
+
tool_type
,
max_capacity
:
+
max_capacity
,
};
min_capacity
:
+
min_capacity
,
try
{
tool_type
:
+
tool_type
const
{
code
,
reason
}
=
await
getAddDeliverer
(
params
);
};
if
(
code
!==
0
)
return
this
.
$message
.
error
(
reason
||
"添加配送员失败"
);
try
{
ElMessage
(
"添加配送员成功"
);
const
{
code
,
reason
}
=
await
getAddDeliverer
(
params
);
this
.
getDelivererList
();
if
(
code
!==
0
)
return
this
.
$message
.
error
(
reason
||
"添加配送员失败"
);
this
.
dialogFormAdd
=
false
;
ElMessage
(
"添加配送员成功"
);
this
.
addDeliverer
=
{
this
.
getDelivererList
();
name
:
""
,
this
.
dialogFormAdd
=
false
;
max_capacity
:
""
,
//配送上限
this
.
addDeliverer
=
{
min_capacity
:
""
,
//最小配送量
name
:
""
,
tool_type
:
[],
//配送工具
max_capacity
:
""
,
//配送上限
};
min_capacity
:
""
,
//最小配送量
}
catch
(
error
)
{
tool_type
:
[]
//配送工具
ElMessage
(
"请求添加配送员失败"
);
};
}
}
catch
(
error
)
{
},
ElMessage
(
"请求添加配送员失败"
);
// 添加的取消
}
addCancel
()
{
},
this
.
dialogFormAdd
=
false
;
// 添加的取消
this
.
resetDate
();
addCancel
()
{
},
this
.
dialogFormAdd
=
false
;
// 分配配送员活动select改变
this
.
resetDate
();
getSelectActivityInfo
(
val
)
{
},
this
.
codeForModify
=
val
;
// 分配配送员活动select改变
},
getSelectActivityInfo
(
val
)
{
// 分配配送员
this
.
codeForModify
=
val
;
assignDeliverer
()
{
},
this
.
dialogFormAssign
=
true
;
// 分配配送员
this
.
getDelivererList
();
assignDeliverer
()
{
this
.
multipleSelection
=
[];
this
.
dialogFormAssign
=
true
;
this
.
deliverer
=
[];
this
.
getDelivererList
();
this
.
isEdit
=
false
;
this
.
multipleSelection
=
[];
},
this
.
deliverer
=
[];
// 修改
this
.
isEdit
=
false
;
async
handleModify
(
row
)
{
},
this
.
dialogFormAssign
=
true
;
// 修改
const
{
code
}
=
row
;
async
handleModify
(
row
)
{
this
.
codeForModify
=
row
.
code
;
this
.
dialogFormAssign
=
true
;
this
.
selectActivity
=
row
.
activeName
;
const
{
code
}
=
row
;
try
{
this
.
codeForModify
=
row
.
code
;
const
res
=
await
getDelivererList
({
code
});
this
.
selectActivity
=
row
.
activeName
;
this
.
deliverer
=
res
.
response
;
try
{
this
.
isEdit
=
true
;
const
res
=
await
getDelivererList
({
code
});
this
.
getList
();
this
.
deliverer
=
res
.
response
;
this
.
$nextTick
(()
=>
{
this
.
isEdit
=
true
;
this
.
$refs
.
multipleTable
.
clearSelection
();
this
.
getList
();
this
.
deliverer
.
forEach
((
row
)
=>
{
this
.
$nextTick
(()
=>
{
if
(
row
.
checked
)
{
this
.
$refs
.
multipleTable
.
clearSelection
();
this
.
$refs
.
multipleTable
.
toggleRowSelection
(
row
,
true
);
this
.
deliverer
.
forEach
(
row
=>
{
}
if
(
row
.
checked
)
{
});
this
.
$refs
.
multipleTable
.
toggleRowSelection
(
row
,
true
);
});
}
}
catch
(
error
)
{
});
console
.
log
(
error
);
});
}
}
catch
(
error
)
{
},
console
.
log
(
error
);
// 下载路线
}
downloadDeliveryRoute
(
rowInfo
)
{
},
this
.
deliverer_xlsx_id
=
rowInfo
.
deliverer_xlsx_id
;
// 下载路线
this
.
sendEmailDialogVisible
=
true
;
downloadDeliveryRoute
(
rowInfo
)
{
// url && window.open("http://bp-dev.ini.yidian-inc.com" + url);
this
.
deliverer_xlsx_id
=
rowInfo
.
deliverer_xlsx_id
;
// var ENV;
this
.
sendEmailDialogVisible
=
true
;
// if (process.env.NODE_ENV == "development") {
// url && window.open("http://bp-dev.ini.yidian-inc.com" + url);
// ENV = "http://bp-dev.ini.yidian-inc.com/";
// var ENV;
// } else if (process.env.NODE_ENV == "test") {
// if (process.env.NODE_ENV == "development") {
// ENV = "http://bp-test.ini.yidian-inc.com/";
// ENV = "http://bp-dev.ini.yidian-inc.com/";
// } else {
// } else if (process.env.NODE_ENV == "test") {
// ENV = "http://bp.ini.yidian-inc.com/";
// ENV = "http://bp-test.ini.yidian-inc.com/";
// }
// } else {
// url && window.open(ENV + url);
// ENV = "http://bp.ini.yidian-inc.com/";
},
// }
// 分配保存
// url && window.open(ENV + url);
async
save
()
{
},
const
{
selectActivity
,
multipleSelection
}
=
this
;
// 分配保存
const
uids
=
multipleSelection
.
map
((
item
)
=>
item
.
deliverer_id
);
async
save
()
{
if
(
!
selectActivity
)
return
ElMessage
(
"请选择活动姓名"
);
const
{
selectActivity
,
multipleSelection
}
=
this
;
const
codeForModify
=
this
.
codeForModify
;
const
uids
=
multipleSelection
.
map
(
item
=>
item
.
deliverer_id
);
try
{
if
(
!
selectActivity
)
return
ElMessage
(
"请选择活动姓名"
);
const
{
code
,
reason
}
=
await
getSaveDeliverer
({
const
codeForModify
=
this
.
codeForModify
;
code
:
codeForModify
,
try
{
uids
:
uids
.
join
(
","
),
const
{
code
,
reason
}
=
await
getSaveDeliverer
({
});
code
:
codeForModify
,
if
(
code
!==
0
)
return
this
.
$message
.
error
(
reason
||
(
this
.
isEdit
?
"修改配送员失败"
:
"分配配送员失败"
));
uids
:
uids
.
join
(
","
)
ElMessage
(
this
.
isEdit
?
"修改配送员成功"
:
"分配配送员成功"
);
});
this
.
dialogFormAssign
=
false
;
if
(
code
!==
0
)
this
.
isEdit
=
false
;
return
this
.
$message
.
error
(
this
.
getList
();
reason
||
(
this
.
isEdit
?
"修改配送员失败"
:
"分配配送员失败"
)
this
.
resetDate
();
);
}
catch
(
error
)
{
ElMessage
(
this
.
isEdit
?
"修改配送员成功"
:
"分配配送员成功"
);
ElMessage
(
"请求分配配送员失败"
);
this
.
dialogFormAssign
=
false
;
}
this
.
isEdit
=
false
;
},
this
.
getList
();
// 分配取消
this
.
resetDate
();
assignCancel
()
{
}
catch
(
error
)
{
this
.
dialogFormAssign
=
false
;
ElMessage
(
"请求分配配送员失败"
);
this
.
getDelivererList
();
}
this
.
resetDate
();
},
},
// 分配取消
// 活动名称列表
assignCancel
()
{
async
newGetMarketingList
()
{
this
.
dialogFormAssign
=
false
;
try
{
this
.
getDelivererList
();
const
res
=
await
newGetMarketingList
();
this
.
resetDate
();
this
.
marketingList
=
res
.
result
.
map
((
item
)
=>
{
},
return
{
// 活动名称列表
value
:
item
.
marketing_id
,
async
newGetMarketingList
()
{
label
:
item
.
marketing_name
,
try
{
};
const
res
=
await
newGetMarketingList
();
});
this
.
marketingList
=
res
.
result
.
map
(
item
=>
{
}
catch
(
error
)
{
return
{
console
.
log
(
error
);
value
:
item
.
marketing_id
,
}
label
:
item
.
marketing_name
},
};
// 分配配送员列表
});
async
getDelivererList
()
{
}
catch
(
error
)
{
try
{
console
.
log
(
error
);
const
res
=
await
getDelivererList
();
}
// this.deliverer.code = res.response.code;
},
this
.
deliverer
=
res
.
response
;
// 分配配送员列表
}
catch
(
error
)
{
async
getDelivererList
()
{
console
.
log
(
error
);
try
{
}
const
res
=
await
getDelivererList
();
},
// this.deliverer.code = res.response.code;
/* 邮箱弹窗相关操作 */
this
.
deliverer
=
res
.
response
;
// 下载路线(API)
}
catch
(
error
)
{
async
downloadDeliveryRoutesAPI
()
{
console
.
log
(
error
);
await
getDeliveryRoutes
({
}
deliverer_xlsx_id
:
this
.
deliverer_xlsx_id
,
},
email
:
this
.
myEmialInput
+
"@yidian-inc.com"
,
/* 邮箱弹窗相关操作 */
});
// 下载路线(API)
},
async
downloadDeliveryRoutesAPI
()
{
// 取消下载路线操作
await
getDeliveryRoutes
({
sendEmailDialogCancel
()
{
deliverer_xlsx_id
:
this
.
deliverer_xlsx_id
,
this
.
myEmialInput
=
""
;
// 清空输入
email
:
this
.
myEmialInput
+
"@yidian-inc.com"
this
.
isEmailRequire
=
false
;
});
this
.
emialHasError
=
false
;
},
this
.
sendEmailDialogVisible
=
false
;
// 取消下载路线操作
},
sendEmailDialogCancel
()
{
// 确认下载路线操作
this
.
myEmialInput
=
""
;
// 清空输入
async
sendEmailDialogConfirm
()
{
this
.
isEmailRequire
=
false
;
if
(
this
.
myEmialInput
.
trim
()
===
""
)
{
this
.
emialHasError
=
false
;
this
.
isEmailRequire
=
true
;
this
.
sendEmailDialogVisible
=
false
;
return
;
},
}
// 确认下载路线操作
if
(
!
checkEmailName
(
this
.
myEmialInput
))
{
async
sendEmailDialogConfirm
()
{
this
.
emialHasError
=
true
;
if
(
this
.
myEmialInput
.
trim
()
===
""
)
{
return
;
this
.
isEmailRequire
=
true
;
}
return
;
try
{
}
this
.
pageLoading
=
true
;
if
(
!
checkEmailName
(
this
.
myEmialInput
))
{
await
this
.
downloadDeliveryRoutesAPI
();
this
.
emialHasError
=
true
;
this
.
pageLoading
=
false
;
return
;
this
.
sendEmailDialogCancel
();
}
ElMessage
.
success
(
"操作成功"
);
try
{
}
catch
(
err
)
{
this
.
pageLoading
=
true
;
this
.
pageLoading
=
false
;
await
this
.
downloadDeliveryRoutesAPI
();
if
(
err
)
{
this
.
pageLoading
=
false
;
ElMessage
.
error
(
err
);
this
.
sendEmailDialogCancel
();
}
else
{
ElMessage
.
success
(
"操作成功"
);
ElMessage
.
error
(
"请求错误"
);
}
catch
(
err
)
{
}
this
.
pageLoading
=
false
;
}
if
(
err
)
{
ElMessage
.
error
(
err
);
}
else
{
ElMessage
.
error
(
"请求错误"
);
}
}
// this.myEmialInput = ""; // 清空输入
// this.myEmialInput = ""; // 清空输入
// this.isEmailRequire = false;
// this.isEmailRequire = false;
// this.emialHasError = false;
// this.emialHasError = false;
// this.sendEmailDialogVisible = false;
// this.sendEmailDialogVisible = false;
},
},
// 查看邮箱记录(API)
// 查看邮箱记录(API)
async
getEmailRecordsAPI
()
{
async
getEmailRecordsAPI
()
{
let
data
=
await
getEmailRecords
({
let
data
=
await
getEmailRecords
({
deliverer_xlsx_id
:
this
.
deliverer_xlsx_id
deliverer_xlsx_id
:
this
.
deliverer_xlsx_id
,
});
});
this
.
emailListTableData
=
this
.
formatEmailRecord
(
data
.
result
);
this
.
emailListTableData
=
this
.
formatEmailRecord
(
data
.
result
);
},
},
// 查看发送记录
// 查看发送记录
async
getEmailRecord
(
rowInfo
)
{
async
getEmailRecord
(
rowInfo
)
{
this
.
deliverer_xlsx_id
=
rowInfo
.
deliverer_xlsx_id
;
// 赋值 取参数
this
.
deliverer_xlsx_id
=
rowInfo
.
deliverer_xlsx_id
;
// 赋值 取参数
this
.
showEmailTableDialogVisible
=
true
;
this
.
showEmailTableDialogVisible
=
true
;
try
{
try
{
this
.
emailRecordsLoading
=
true
;
this
.
emailRecordsLoading
=
true
;
await
this
.
getEmailRecordsAPI
();
await
this
.
getEmailRecordsAPI
();
this
.
emailRecordsLoading
=
false
;
this
.
emailRecordsLoading
=
false
;
}
catch
(
err
)
{
}
catch
(
err
)
{
this
.
emailRecordsLoading
=
false
;
this
.
emailRecordsLoading
=
false
;
if
(
err
)
{
if
(
err
)
{
ElMessage
.
error
(
err
);
ElMessage
.
error
(
err
);
}
else
{
}
else
{
ElMessage
.
error
(
"请求错误"
);
ElMessage
.
error
(
"请求错误"
);
}
}
}
}
},
},
//带emailtable的dialog
//带emailtable的dialog
showEmailDialogCancel
()
{
showEmailDialogCancel
()
{
this
.
showEmailTableDialogVisible
=
false
;
this
.
showEmailTableDialogVisible
=
false
;
},
},
// 数据转换(api-table展示)
// 数据转换(api-table展示)
// create_time: "2021-08-19 17:38:05"
// create_time: "2021-08-19 17:38:05"
// deliverer_xlsx_id: 49
// deliverer_xlsx_id: 49
// deliverer_xlsx_log_id: 4
// deliverer_xlsx_log_id: 4
// email: "asdasdasdf"
// email: "asdasdasdf"
// send_status: 1
// send_status: 1
// send_time: ""
// send_time: ""
// update_time: "2021-08-19 17:38:13"
// update_time: "2021-08-19 17:38:13"
formatEmailRecord
(
initialData
)
{
formatEmailRecord
(
initialData
)
{
let
matchRelation
=
{
let
matchRelation
=
{
"0"
:
"待生成"
,
0
:
"待生成"
,
"1"
:
"生成中"
,
1
:
"生成中"
,
"2"
:
"已发送"
,
2
:
"已发送"
,
"3"
:
"发送失败"
3
:
"发送失败"
,
};
};
let
result
=
initialData
.
map
(
item
=>
{
let
result
=
initialData
.
map
((
item
)
=>
{
let
res
=
{
let
res
=
{
email
:
item
.
email
,
email
:
item
.
email
,
sendTime
:
item
.
send_time
,
sendTime
:
item
.
send_time
,
status
:
matchRelation
[
item
.
send_status
.
toString
()]
status
:
matchRelation
[
item
.
send_status
.
toString
()],
};
};
return
res
;
return
res
;
});
});
return
result
;
return
result
;
}
},
}
},
};
};
</
script
>
</
script
>
<
style
lang=
"less"
src=
"./index.less"
scope
></
style
>
<
style
lang=
"less"
src=
"./index.less"
scope
></
style
>
<
style
lang=
"less"
scoped
>
<
style
lang=
"less"
scoped
>
// 邮箱dialog
// 邮箱dialog
.emailContent {
.emailContent {
.emialInputWrapper {
.emialInputWrapper {
display: flex;
display: flex;
align-items: center;
align-items: center;
margin: 15px 0;
margin: 15px 0;
.myInput {
.myInput {
width: 50%;
width: 50%;
}
}
.myInputRequire::after {
.myInputRequire::after {
content: "输入不能为空";
content: "输入不能为空";
position: absolute;
position: absolute;
left: 2px;
left: 2px;
top: 35px;
top: 35px;
color: red;
color: red;
}
}
// 验证emial非空
// 验证emial非空
.myInputError::after {
.myInputError::after {
content: "输入邮箱不合法";
content: "输入邮箱不合法";
position: absolute;
position: absolute;
left: 2px;
left: 2px;
top: 35px;
top: 35px;
color: red;
color: red;
}
}
}
}
}
}
</
style
>
</
style
>
src/pages/Groupmeal/components/PageHeader/config.js
View file @
ec4be6d4
const
headerConfig
=
[
const
headerConfig
=
[
{
{
name
:
"活动管理"
,
name
:
"活动管理"
,
path
:
"/op/activity/manage"
path
:
"/op/activity/manage"
,
},
},
{
{
name
:
"订单管理"
,
name
:
"订单管理"
,
path
:
"/op/groupmeal/orderManagement"
path
:
"/op/groupmeal/orderManagement"
,
},
},
{
{
name
:
"新订单管理"
,
name
:
"新订单管理"
,
path
:
"/op/groupmeal/newOrderManagement"
path
:
"/op/groupmeal/newOrderManagement"
,
},
},
{
{
path
:
"/op/groupmeal/distrib"
,
path
:
"/op/groupmeal/distrib"
,
name
:
"配送员管理"
name
:
"配送员管理"
,
}
},
{
path
:
"/op/groupmeal/merchantManagement"
,
name
:
"商家管理"
,
},
];
];
export
default
headerConfig
;
export
default
headerConfig
;
src/pages/Groupmeal/merchantManagement/index.less
0 → 100644
View file @
ec4be6d4
.goods {
width: 100%;
height: 100%;
padding: 0 30px;
.header {
display: flex;
justify-content: flex-end;
margin-bottom: 30px;
}
.dioFor {
margin-left: 5%;
width: 70%;
}
.locationstyle {
display: flex;
}
.location {
margin-bottom: 10px;
// margin-left: 10%;
}
.diotab {
margin-left: 5%;
margin-top: 10px;
}
.dialog-footer {
display: flex;
align-items: center;
justify-content: center;
}
.commodity_list {
margin-top: 30px;
}
.pagination {
margin-top: 30px;
}
/deep/ .mapDialog {
margin-top: 10vh !important;
height: 80%;
display: flex !important;
flex-direction: column !important;
/deep/ .el-dialog__body {
height: 90%;
}
}
}
src/pages/Groupmeal/merchantManagement/index.vue
0 → 100644
View file @
ec4be6d4
<
template
>
<Layout>
<el-card
class=
"goods"
v-loading=
"pageLoading"
>
<div
class=
"header"
>
<el-button
type=
"primary"
@
click=
"modifyMerchant"
>
添加商家
</el-button>
</div>
<el-table
:data=
"merchantList"
border
stripe
fit
style=
"width: 100%"
>
<el-table-column
align=
"center"
prop=
"ota_name"
label=
"商家"
></el-table-column>
<el-table-column
align=
"center"
prop=
"printer_sn"
label=
"打印机SN"
></el-table-column>
<el-table-column
align=
"center"
prop=
"printer_key"
label=
"打印机KEY"
></el-table-column>
<el-table-column
align=
"center"
prop=
"label_printer_sn"
label=
"标签机SN"
></el-table-column>
<el-table-column
align=
"center"
prop=
"label_printer_key"
label=
"标签机KEY"
></el-table-column>
<el-table-column
align=
"center"
prop=
"state"
label=
"状态"
>
<template
#
default=
"scope"
>
{{
[
"正常"
,
"已禁用"
][
scope
.
row
.
status
]
}}
</
template
>
</el-table-column>
<el-table-column
align=
"center"
prop=
"operation"
label=
"操作"
>
<
template
#
default=
"scope"
>
<el-button
type=
"text"
:disabled=
"scope.row.status == 1"
@
click=
"modifyMerchant(scope.row.ota_id, scope.$index)"
>
修改
</el-button>
<el-button
type=
"text"
:disabled=
"scope.row.status == 1"
@
click=
"handleDisable(scope.row)"
>
禁用
</el-button>
</
template
>
</el-table-column>
</el-table>
<!-- 添加商家 -->
<el-dialog
title=
"商家编辑"
v-model=
"merchantAdd"
width=
"70%"
:show-close=
"false"
>
<el-form
class=
"dioFor"
:model=
"addMerchant"
:rules=
"rules"
>
<el-form-item
label=
"商家名称"
label-width=
"100px"
prop=
"ota_name"
>
<el-input
maxlength=
"30"
show-word-limit
clearable
autocomplete=
"off"
v-model=
"addMerchant.ota_name"
></el-input>
</el-form-item>
<el-form-item
label=
"打印机SN"
label-width=
"100px"
prop=
"printer_sn"
>
<el-input
type=
"text"
show-word-limit
clearable
autocomplete=
"off"
v-model=
"addMerchant.printer_sn"
></el-input>
</el-form-item>
<el-form-item
label=
"打印机KEY"
label-width=
"100px"
prop=
"printer_key"
>
<el-input
type=
"text"
show-word-limit
clearable
autocomplete=
"off"
v-model=
"addMerchant.printer_key"
></el-input>
</el-form-item>
<el-form-item
label=
"标签机SN"
label-width=
"100px"
prop=
"label_printer_sn"
>
<el-input
type=
"text"
show-word-limit
clearable
autocomplete=
"off"
v-model=
"addMerchant.label_printer_sn"
></el-input>
</el-form-item>
<el-form-item
label=
"标签机KEY"
label-width=
"100px"
prop=
"label_printer_key"
>
<el-input
type=
"text"
show-word-limit
clearable
autocomplete=
"off"
v-model=
"addMerchant.label_printer_key"
></el-input>
</el-form-item>
<el-form-item
label=
"位置"
label-width=
"100px"
prop=
"location"
>
<div
class=
"locationstyle"
>
<el-input
type=
"text"
show-word-limit
clearable
autocomplete=
"off"
v-model=
"addMerchant.location"
:disabled=
"true"
></el-input>
<el-button
type=
"text"
@
click=
"mapDialogVisible = true"
>
从高德获取坐标
</el-button>
</div>
<p
class=
"location"
>
{{ addMerchant.location }}
</p>
</el-form-item>
<el-form-item
label=
"详细地址"
label-width=
"100px"
prop=
"address"
>
<el-input
type=
"text"
show-word-limit
clearable
autocomplete=
"off"
v-model=
"addMerchant.address"
></el-input>
</el-form-item>
</el-form>
<
template
#
footer
>
<span
class=
"dialog-footer"
>
<el-button
@
click=
"addCancel"
>
取 消
</el-button>
<el-button
type=
"primary"
@
click=
"saveMerchant"
>
保 存
</el-button>
</span>
</
template
>
</el-dialog>
<!-- 地图 dialog -->
<el-dialog
custom-class=
"mapDialog"
v-model=
"mapDialogVisible"
width=
"100%"
>
<my-map
class=
"my-map"
@
getMapInfo=
"getMapInfo"
@
hideMapDialog=
"mapDialogVisible = false"
/>
</el-dialog>
</el-card>
</Layout>
</template>
<
script
>
import
Layout
from
"../layout/index.vue"
;
import
myMap
from
"@/pages/Activity/releaseProduc/components/myMap"
;
import
{
otaList
,
addOta
,
deleteOta
,
updateOta
}
from
"@/service/Goods/goods"
;
export
default
{
name
:
"merchantManagement"
,
components
:
{
Layout
,
myMap
,
},
created
()
{
this
.
getOtaList
();
},
data
()
{
return
{
mapDialogVisible
:
false
,
disabledIndex
:
null
,
rules
:
{
name
:
[{
required
:
true
,
message
:
"请输入商家名称"
,
trigger
:
"blur"
}],
},
//修改信息
merchantAdd
:
false
,
addMerchant
:
{
ota_name
:
""
,
printer_sn
:
""
,
printer_key
:
""
,
label_printer_sn
:
""
,
label_printer_key
:
""
,
location
:
""
,
address
:
""
,
},
// 列表
merchantList
:
[],
deep
:
true
,
};
},
methods
:
{
modifyMerchant
(
id
,
index
)
{
if
(
typeof
id
==
"number"
)
{
this
.
addMerchant
=
this
.
merchantList
[
index
];
}
this
.
merchantAdd
=
true
;
},
async
getOtaList
()
{
const
{
result
,
code
,
reason
}
=
await
otaList
();
this
.
merchantList
=
result
.
list
;
if
(
code
!==
0
)
return
this
.
$message
.
error
(
reason
);
},
//保存
async
saveMerchant
()
{
let
{
result
,
code
,
reason
}
=
this
.
addMerchant
.
ota_id
?
await
updateOta
(
this
.
addMerchant
)
:
await
addOta
(
this
.
addMerchant
);
if
(
code
!==
0
)
return
this
.
$message
.
error
(
reason
);
await
this
.
getOtaList
();
this
.
merchantAdd
=
false
;
},
// 取消
addCancel
()
{
this
.
merchantAdd
=
false
;
this
.
resetDate
();
},
resetDate
()
{
this
.
addMerchant
=
{};
},
//禁用
async
handleDisable
(
item
)
{
let
res
=
await
deleteOta
({
ota_id
:
item
.
ota_id
});
if
(
res
.
code
!==
0
)
return
this
.
$message
.
error
(
res
.
reason
);
this
.
getOtaList
();
},
// 获取地图信息
getMapInfo
(
mapInfo
)
{
console
.
log
(
mapInfo
);
this
.
addMerchant
.
location
=
mapInfo
.
address
;
this
.
addMerchant
.
longitude
=
mapInfo
.
lng
;
// longitude latitude contactor
this
.
addMerchant
.
latitude
=
mapInfo
.
lat
;
},
},
};
</
script
>
<
style
lang=
"less"
src=
"./index.less"
scope
></
style
>
src/router/Groupmeal/index.js
View file @
ec4be6d4
/**
/**
* 团餐运营管理
* 团餐运营管理
*/
*/
const
groupmealRouters
=
[
const
groupmealRouters
=
[
{
{
path
:
"/op/groupmeal/orderManagement"
,
path
:
"/op/groupmeal/orderManagement"
,
name
:
"orderManagement"
,
name
:
"orderManagement"
,
// redirect: "/op/groupmeal/orderManagement",
// redirect: "/op/groupmeal/orderManagement",
component
:
()
=>
import
(
/* webpackChunkName: "goods" */
"@/pages/Groupmeal/orderManagement"
)
component
:
()
=>
import
(
/* webpackChunkName: "goods" */
"@/pages/Groupmeal/orderManagement"
),
},
},
{
{
path
:
"/op/groupmeal/newOrderManagement"
,
path
:
"/op/groupmeal/newOrderManagement"
,
name
:
"newOrderManagement"
,
name
:
"newOrderManagement"
,
// redirect: "/op/groupmeal/orderManagement",
// redirect: "/op/groupmeal/orderManagement",
component
:
()
=>
import
(
/* webpackChunkName: "goods" */
"@/pages/Groupmeal/newOrderManagement"
)
component
:
()
=>
import
(
/* webpackChunkName: "goods" */
"@/pages/Groupmeal/newOrderManagement"
),
},
},
{
path
:
"/op/groupmeal/distrib"
,
name
:
"Distrib"
,
component
:
()
=>
import
(
/* webpackChunkName: "goods" */
"@/pages/Groupmeal/Distrib"
),
},
{
{
path
:
"/op/groupmeal/distrib
"
,
path
:
"/op/groupmeal/merchantManagement
"
,
name
:
"Distrib
"
,
name
:
"merchantManagement
"
,
component
:
()
=>
import
(
/* webpackChunkName: "goods" */
"@/pages/Groupmeal/Distrib"
)
component
:
()
=>
import
(
/* webpackChunkName: "goods" */
"@/pages/Groupmeal/merchantManagement"
),
},
},
];
];
export
default
groupmealRouters
;
export
default
groupmealRouters
;
\ No newline at end of file
src/service/Goods/goods.js
View file @
ec4be6d4
...
@@ -96,3 +96,26 @@ export async function updateMarketingList(params) {
...
@@ -96,3 +96,26 @@ export async function updateMarketingList(params) {
const
res
=
await
axios
.
post
(
"/api/v1/update_marketing_list"
,
params
);
const
res
=
await
axios
.
post
(
"/api/v1/update_marketing_list"
,
params
);
return
res
;
return
res
;
}
}
// 商家列表
export
async
function
otaList
(
params
)
{
const
res
=
await
axios
.
post
(
"/api/v1/otaList"
,
params
);
return
res
;
}
// 商家列表-add
export
async
function
addOta
(
params
)
{
const
res
=
await
axios
.
post
(
"/api/v1/addOta"
,
params
);
return
res
;
}
// 商家列表-禁用
export
async
function
deleteOta
(
params
)
{
const
res
=
await
axios
.
post
(
"/api/v1/deleteOta"
,
params
);
return
res
;
}
// 商家列表-修改
export
async
function
updateOta
(
params
)
{
const
res
=
await
axios
.
post
(
"/api/v1/updateOta"
,
params
);
return
res
;
}
vue.config.js
View file @
ec4be6d4
...
@@ -29,7 +29,7 @@ const CDN = {
...
@@ -29,7 +29,7 @@ const CDN = {
module
.
exports
=
{
module
.
exports
=
{
outputDir
:
isDev
?
"./dist"
:
path
.
resolve
(
"./public/dist/"
),
outputDir
:
isDev
?
"./dist"
:
path
.
resolve
(
"./public/dist/"
),
publicPath
:
isDev
?
"/"
:
"/dist"
,
publicPath
:
isDev
?
"/"
:
"/dist"
,
lintOnSave
:
isDev
,
lintOnSave
:
false
,
productionSourceMap
:
false
,
// 去掉生成环境的 sourceMap
productionSourceMap
:
false
,
// 去掉生成环境的 sourceMap
devServer
:
{
devServer
:
{
proxy
:
"http://127.0.0.1:8055"
,
//http://localhost:8055
proxy
:
"http://127.0.0.1:8055"
,
//http://localhost:8055
...
...
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