Commit ec4be6d4 authored by jisiyu's avatar jisiyu

add:商家管理

parent ca2eeb0e
...@@ -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;
};
...@@ -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);
......
This diff is collapsed.
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;
.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%;
}
}
}
<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>
/** /**
* 团餐运营管理 * 团餐运营管理
*/ */
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
...@@ -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;
}
...@@ -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
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment