Commit 3b82b1ca authored by gengshaojing's avatar gengshaojing

add: 自提点管理

parent d181c7c3
const ACTIVITY_URI = require("../config.js").ACTIVITY_URI;
const req = require("../utils/request").httpReq;
// 获取商家列表
exports.edit = async (ctx) => {
const url = `${ACTIVITY_URI}/marketing/background/business_circle_edit`;
const opts = {
url,
method: "GET",
};
ctx.body = await req(ctx, opts);
};
// 商品库列表
exports.list = async (ctx) => {
const url = `${ACTIVITY_URI}/marketing/background/business_circle_list`;
const opts = {
url,
method: "GET",
};
ctx.body = await req(ctx, opts);
};
// 查看商品详情
exports.delete = async (ctx) => {
const url = `${ACTIVITY_URI}/marketing/background/business_circle_delete`;
const opts = {
url,
method: "GET",
};
ctx.body = await req(ctx, opts);
};
const ACTIVITY_URI = require("../config.js").ACTIVITY_URI;
const req = require("../utils/request").httpReq;
// 获取商家列表
exports.edit = async (ctx) => {
const url = `${ACTIVITY_URI}/marketing/background/tag_edit`;
const opts = {
url,
method: "GET",
};
ctx.body = await req(ctx, opts);
};
// 商品库列表
exports.list = async (ctx) => {
const url = `${ACTIVITY_URI}/marketing/background/tag_list`;
const opts = {
url,
method: "GET",
};
ctx.body = await req(ctx, opts);
};
// 查看商品详情
exports.delete = async (ctx) => {
const url = `${ACTIVITY_URI}/marketing/background/tag_delete`;
const opts = {
url,
method: "GET",
};
ctx.body = await req(ctx, opts);
};
......@@ -11,6 +11,8 @@ const withdrawal = require("./controllers/withdrawal");
const groupmeal = require("./controllers/groupmeal");
const qr_code = require("./controllers/qr-code");
const relay = require("./controllers/relay");
const tag = require("./controllers/tag");
const business_circle = require("./controllers/business_circle");
const router = Router();
const API_VERSION = "/api/v1";
......@@ -157,4 +159,14 @@ router.post(`${API_VERSION}/relay/ks3api_upload`, relay.uploadPic);
router.get(`${API_VERSION}/relay/order_export`, relay.orderExport);
router.get(`${API_VERSION}/relay/old_order_export`, relay.oldOrderExport);
// 分类
router.get(`${API_VERSION}/marketing/background/tag_edit`, tag.edit);
router.get(`${API_VERSION}/marketing/background/tag_list`, tag.list);
router.get(`${API_VERSION}/marketing/background/tag_delete`, tag.delete);
// 分类
router.get(`${API_VERSION}/marketing/background/business_circle_edit`, business_circle.edit);
router.get(`${API_VERSION}/marketing/background/business_circle_list`, business_circle.list);
router.get(`${API_VERSION}/marketing/background/business_circle_delete`, business_circle.delete);
module.exports = router;
This diff is collapsed.
This diff is collapsed.
<template>
<div class="type_dialog">
<el-dialog title="分类管理" v-model="comDialogVisible" width="70%" @closed="closeFormDialog">
<el-form :inline="true" :model="addForm">
<el-form-item label="分类名称:" label-width="100px">
<el-input v-model="addForm.type_name" placeholder="请输入分类名称" clearable style="min-width: 300px"></el-input>
</el-form-item>
<el-form-item>
<el-button type="primary" @click="addType" :loading="addBtnLoading">添加</el-button>
</el-form-item>
</el-form>
<el-table class="dialog_table" align="center" :data="type_list" border v-loading="loading">
<el-table-column align="center" label="分类名称">
<template #default="{ row }">
<div v-if="row.edit" class="inline_edit">
<el-input size="small" v-model="row.tag_name"></el-input>
</div>
<p v-else>{{ row.tag_name }}</p>
</template>
</el-table-column>
<el-table-column prop="prop" label="操作" align="center" min-width="60">
<template #default="{ row, $index }">
<template v-if="row.edit">
<el-button size="small" @click="onRowCancel(row, $index)" class="inline_edit--cancel">取消</el-button>
<el-button type="primary" size="small" @click="onTagEdit(row)" v-loading="row.loading">保存</el-button>
</template>
<template v-else>
<el-popconfirm
confirmButtonText="确定"
cancelButtonText="取消"
icon="el-icon-info"
iconColor="red"
title="请确认是否要删除该分类?"
@confirm="onTagDelete(row)"
>
<template #reference>
<el-button type="primary" size="small">删除</el-button>
</template>
</el-popconfirm>
<el-button type="primary" size="small" @click="onRowEdit(row)">修改</el-button>
</template>
</template>
</el-table-column>
</el-table>
<template #footer>
<div class="dialog-footer">
<el-button @click="closeFormDialog">关 闭</el-button>
</div>
</template>
</el-dialog>
</div>
</template>
<script>
import { onMounted, reactive, toRefs, watch } from "vue";
import { getTagList, handleTag, tagDelete } from "@/service/point";
import { ElMessage } from "element-plus";
export default {
props: {
dialogVisible: {
type: Boolean,
default: false,
},
},
setup(props, { emit }) {
const dataMap = reactive({
loading: false,
addBtnLoading: false,
comDialogVisible: false,
addForm: {
type_name: "",
},
type_list: [],
edit_row: {},
});
// 获取 分类标签列表
const onGetTagList = async () => {
dataMap.loading = true;
try {
const { result } = await getTagList();
console.log("分类标签列表", result);
const newArr = result.map((item) => {
item.edit = false;
item.loading = false;
return { ...item };
});
console.log("newArr", newArr);
dataMap.type_list = newArr;
} catch (e) {
console.log(e);
ElMessage.error("获取分类列表失败");
} finally {
dataMap.loading = false;
}
};
// 添加分类
const addType = async () => {
if (!dataMap.addForm.type_name) {
ElMessage.error("请输入分类名称");
return;
}
dataMap.addBtnLoading = true;
try {
const { code, reason } = await handleTag({ tag_name: dataMap.addForm.type_name });
console.log("添加标签列表code", code);
console.log("添加标签列表reason", reason);
if (+code === 0) {
ElMessage.success("添加成功");
onGetTagList();
onReset();
} else {
ElMessage.error(reason);
}
} catch (e) {
console.log(e);
ElMessage.error("添加分类失败");
} finally {
dataMap.addBtnLoading = false;
}
};
const onTagDelete = async (row) => {
console.log(row);
try {
const { code, reason } = await tagDelete({ tag_id: row.tag_id, is_delete: 1 });
console.log("删除标签code", code);
console.log("删除标签reason", reason);
if (+code === 0) {
ElMessage.success("删除成功");
onGetTagList();
} else {
ElMessage.error(reason);
}
} catch (e) {
console.log(e);
ElMessage.error("删除失败");
}
};
// 修改
const onTagEdit = async (row) => {
console.log(row);
row.loading = true;
try {
const { code, reason } = await handleTag({ tag_id: row.tag_id, tag_name: row.tag_name });
console.log("修改标签code", code);
console.log("修改标签reason", reason);
if (+code === 0) {
ElMessage.success("修改成功");
row.edit = false;
onGetTagList();
} else {
ElMessage.error(reason);
}
} catch (e) {
console.log(e);
ElMessage.error("修改失败");
} finally {
row.loading = false;
}
};
watch(
() => props.dialogVisible,
(newValue) => {
console.log("props.dialogVisible", newValue);
dataMap.comDialogVisible = newValue;
if (newValue) onGetTagList();
},
);
// 关闭dialog
const closeFormDialog = () => {
console.log("关闭dialog");
dataMap.comDialogVisible = false;
emit("closeDialog");
onReset();
emit("onGetTagList");
};
const onReset = () => {
dataMap.addForm = {
type_name: "",
};
};
const onRowEdit = (row) => {
row.edit = true;
dataMap.edit_row = Object.assign({}, row);
};
const onRowCancel = (row, index) => {
console.log(index);
dataMap.edit_row.edit = false;
dataMap.type_list[index] = dataMap.edit_row;
};
return {
...toRefs(dataMap),
addType,
onTagDelete,
onTagEdit,
closeFormDialog,
onRowEdit,
onRowCancel,
};
},
};
</script>
<style lang="less" scoped>
.courier_dialog {
.dialog_header {
display: flex;
.num {
margin-left: 30px;
}
}
.dialog_form {
.dialog_form-item {
display: flex;
align-items: center;
.courier_name {
}
.courier_input {
width: 300px;
margin-left: 10px;
}
.courier_btn {
margin-left: 10px;
}
}
}
.dialog_selection,
.dialog_table,
.dialog_form {
margin-top: 20px;
}
}
.inline_edit {
display: flex;
align-items: center;
.inline_edit--cancel {
margin-left: 20px;
}
}
</style>
.type_list-box {
display: flex;
align-items: center;
.tag_list {
}
}
.item_label {
width: 100px;
text-align: right;
}
.business_circle-btn {
margin: 0 20px;
}
.el-check-tag.is-checked {
background: #409eff;
color: #ffffff;
border: 1px solid #409eff;
}
.el-check-tag {
background: #ffffff;
color: #606266;
border: 1px solid #dcdfe6;
}
.goods {
width: 100%;
height: 100%;
padding: 0 30px;
.header {
display: flex;
justify-content: flex-end;
margin-bottom: 30px;
}
.dioFor {
margin-left: 5%;
width: 70%;
}
.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;
}
}
This diff is collapsed.
......@@ -15,6 +15,10 @@ const headerConfig = [
path: "/op/groupmeal/distrib",
name: "配送员管理",
},
{
path: "/op/groupmeal/point",
name: "自提点管理",
},
{
path: "/op/groupmeal/merchantManagement",
name: "商家管理",
......
......@@ -39,6 +39,11 @@ const groupmealRouters = [
name: "couponManagement",
component: () => import(/* webpackChunkName: "couponManagement" */ "@/pages/Groupmeal/couponManagement"),
},
{
path: "/op/groupmeal/point",
name: "point",
component: () => import(/* webpackChunkName: "goods" */ "@/pages/Groupmeal/Point"),
},
];
export default groupmealRouters;
import axios from "../utils/request";
// 分类--列表
export async function getTagList(params) {
const res = await axios.get(`/api/v1/marketing/background/tag_list`, {
params,
});
return res.result;
}
// 分类--添加 || 编辑
export async function handleTag(params) {
return await axios.get(`/api/v1/marketing/background/tag_edit`, {
params,
});
}
// 分类--删除
export async function tagDelete(params) {
return await axios.get(`/api/v1/marketing/background/tag_delete`, {
params,
});
}
// 商圈--列表
export async function getBusinessCircleList(params) {
const res = await axios.get(`/api/v1/marketing/background/business_circle_list`, {
params,
});
return res.result;
}
// 分类--添加 || 编辑
export async function handleBusinessCircle(params) {
return await axios.get(`/api/v1/marketing/background/business_circle_edit`, {
params,
});
}
// 分类--删除
export async function businessCircleDelete(params) {
return await axios.get(`/api/v1/marketing/background/business_circle_delete`, {
params,
});
}
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