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
Expand all
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
This diff is collapsed.
Click to expand it.
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