Commit dfc262f4 authored by liwenhong's avatar liwenhong

Merge branch 'lwh/goods-add-time'

# Conflicts:
#	src/pages/Activity/releaseProduc/index.vue
parents c4870fa3 a310011d
......@@ -16,168 +16,179 @@ const req = require("../utils/request").httpReq;
* };
*/
// 获取分类
exports.getCategoryList = async ctx => {
exports.getCategoryList = async (ctx) => {
const url = `${GOODS_URI}/goods/background/get_goods_category_list`;
const opts = {
url,
method: "GET"
method: "GET",
};
ctx.body = await req(ctx, opts);
};
// 获取商品列表
exports.getList = async ctx => {
exports.getList = async (ctx) => {
const url = `${GOODS_URI}/goods/background/get_goods_list`;
const opts = {
url,
method: "GET",
qs: ctx.request.query
qs: ctx.request.query,
};
ctx.body = await req(ctx, opts);
};
// 商品上架
exports.putOnline = async ctx => {
exports.putOnline = async (ctx) => {
const url = `${GOODS_URI}/goods/background/online`;
const opts = {
url,
method: "POST",
json: true,
body: ctx.request.body
body: ctx.request.body,
};
ctx.body = await req(ctx, opts);
};
// 商品下架
exports.putOffline = async ctx => {
exports.putOffline = async (ctx) => {
const url = `${GOODS_URI}/goods/background/offline`;
const opts = {
url,
method: "POST",
json: true,
body: ctx.request.body
body: ctx.request.body,
};
ctx.body = await req(ctx, opts);
};
// 设置商品上架
exports.putOnlineSite = async (ctx) => {
const url = `${GOODS_URI}/goods/background/online_site`;
const opts = {
url,
method: "POST",
json: true,
body: ctx.request.body,
};
ctx.body = await req(ctx, opts);
};
// 获取商品详情列表
exports.getGoodsInfo = async ctx => {
exports.getGoodsInfo = async (ctx) => {
const url = `${GOODS_URI}/goods/background/get_goods_info`;
const opts = {
url,
method: "GET",
qs: ctx.request.query
qs: ctx.request.query,
};
ctx.body = await req(ctx, opts);
};
// 商品审核通过
exports.postSuccess = async ctx => {
exports.postSuccess = async (ctx) => {
const opts = {
url: `${GOODS_URI}/goods/background/audit_pass`,
method: "POST",
json: true,
body: ctx.request.body
body: ctx.request.body,
};
ctx.body = await req(ctx, opts);
};
// 营销活动列表
exports.getMarketingList = async ctx => {
exports.getMarketingList = async (ctx) => {
const url = `${GOODS_URI}/marketing/background/marketing_list`;
const opts = {
url,
method: "POST",
json: true,
body: ctx.request.body
body: ctx.request.body,
};
ctx.body = await req(ctx, opts);
};
// 检查商品名称是否被占用
exports.checkGoodsName = async ctx => {
exports.checkGoodsName = async (ctx) => {
const opts = {
url: `${GOODS_URI}/goods/background/check_goods_name`,
method: "POST",
json: true,
body: ctx.request.body
body: ctx.request.body,
};
ctx.body = await req(ctx, opts);
};
// 获取查询活动列表
exports.getFindGoodsList = async ctx => {
exports.getFindGoodsList = async (ctx) => {
const url = `${GOODS_URI}/marketing/background/goods_list`;
const opts = {
url,
method: "POST",
json: true,
body: ctx.request.body
body: ctx.request.body,
};
ctx.body = await req(ctx, opts);
};
// 审核拒绝
exports.auditReject = async ctx => {
exports.auditReject = async (ctx) => {
const opts = {
url: `${GOODS_URI}/goods/background/audit_reject`,
method: "POST",
json: true,
body: ctx.request.body
body: ctx.request.body,
};
ctx.body = await req(ctx, opts);
}
};
// 添加活动列表
exports.getAddMarketingList = async ctx => {
exports.getAddMarketingList = async (ctx) => {
const url = `${GOODS_URI}/marketing/background/add_marketing`;
const opts = {
url,
method: "POST",
json: true,
body: ctx.request.body
body: ctx.request.body,
};
ctx.body = await req(ctx, opts);
};
// 获取门店列表
exports.getShopsList = async ctx => {
exports.getShopsList = async (ctx) => {
const opts = {
url: `${GOODS_URI}/shop/background/shop_list`,
method: "GET",
qs: ctx.request.query
qs: ctx.request.query,
};
ctx.body = await req(ctx, opts);
};
// 添加门店
exports.addShop = async ctx => {
exports.addShop = async (ctx) => {
const opts = {
url: `${GOODS_URI}/shop/background/add_shop`,
method: "POST",
json: true,
body: ctx.request.body
body: ctx.request.body,
};
ctx.body = await req(ctx, opts);
}
};
// 查看列表详情
exports.getMarketingInfo = async ctx => {
exports.getMarketingInfo = async (ctx) => {
const url = `${GOODS_URI}/marketing/background/marketing_info`;
const opts = {
url,
method: "POST",
json: true,
body: ctx.request.body
body: ctx.request.body,
};
ctx.body = await req(ctx, opts);
};
// 修改商品
exports.editGoods = async ctx => {
exports.editGoods = async (ctx) => {
const opts = {
url: `${GOODS_URI}/goods/background/edit_goods`,
method: "POST",
json: true,
body: ctx.request.body
}
body: ctx.request.body,
};
ctx.body = await req(ctx, opts);
};
// 开启关闭状态
exports.updateMarketingList = async ctx => {
exports.updateMarketingList = async (ctx) => {
const url = `${GOODS_URI}/marketing/background/update_marketing`;
const opts = {
url,
method: "POST",
json: true,
body: ctx.request.body
body: ctx.request.body,
};
const res = await req(ctx, opts);
ctx.body = res;
......
......@@ -49,6 +49,7 @@ router.get(`${API_VERSION}/get_goods_category_list`, goods.getCategoryList);
router.get(`${API_VERSION}/goods/background/get_goods_list`, goods.getList);
router.post(`${API_VERSION}/goods/background/online`, goods.putOnline);
router.post(`${API_VERSION}/goods/background/offline`, goods.putOffline);
router.post(`${API_VERSION}/goods/background/putOnlineSite`, goods.putOnlineSite);
router.get(`${API_VERSION}/goods/background/get_goods_info`, goods.getGoodsInfo);
router.post(`${API_VERSION}/goods/background/audit_pass`, goods.postSuccess);
router.post(`${API_VERSION}/goods/background/check_goods_name`, goods.checkGoodsName);
......
......@@ -17,6 +17,9 @@
}
}
}
.pick-time {
margin-left: 10px;
}
.commodity_list {
margin-top: 30px;
}
......
......@@ -32,37 +32,17 @@
</el-form-item>
<!-- 审核状态 -->
<el-form-item label="审核状态">
<el-select
v-model="audit_status"
multiple
collapse-tags
@change="handleStatusChange"
>
<el-option
v-for="item in stateOption"
:key="item.value"
:label="item.label"
:value="item.value"
></el-option>
<el-select v-model="audit_status" multiple collapse-tags @change="handleStatusChange">
<el-option v-for="item in stateOption" :key="item.value" :label="item.label" :value="item.value"></el-option>
</el-select>
</el-form-item>
<el-form-item label="上架状态">
<el-select
v-model="onlineStatus"
multiple
collapse-tags
@change="handleOnlineStatusChange"
>
<el-option
v-for="item in onlineStateOptions"
:key="item.value"
:label="item.label"
:value="item.value"
></el-option>
<el-select v-model="onlineStatus" multiple collapse-tags @change="handleOnlineStatusChange">
<el-option v-for="item in onlineStateOptions" :key="item.value" :label="item.label" :value="item.value"></el-option>
</el-select>
</el-form-item>
<!-- 按钮操作 -->
<el-form-item style="justify-self: flex-end;">
<el-form-item style="justify-self: flex-end">
<el-button @click="searchList" type="primary">搜索</el-button>
<el-button @click="resetList">重置</el-button>
</el-form-item>
......@@ -70,97 +50,48 @@
<!-- 列表区 -->
<el-table class="goods_list" :data="goodsList" border stripe>
<el-table-column
label="商品id"
prop="goods_spu_id"
align="center"
></el-table-column>
<el-table-column
label="商品名称"
prop="goods_name"
align="center"
></el-table-column>
<el-table-column
label="一级分类"
prop="category_1_name"
align="center"
></el-table-column>
<el-table-column
label="二级分类"
prop="category_2_name"
align="center"
></el-table-column>
<el-table-column
label="生活号id"
prop="life_account_id"
align="center"
></el-table-column>
<el-table-column
label="生活号名称"
prop="life_account_name"
align="center"
></el-table-column>
<el-table-column
label="发布者"
prop="publish_user_id"
align="center"
></el-table-column>
<el-table-column label="商品id" prop="goods_spu_id" align="center"></el-table-column>
<el-table-column label="商品名称" prop="goods_name" align="center"></el-table-column>
<el-table-column label="一级分类" prop="category_1_name" align="center"></el-table-column>
<el-table-column label="二级分类" prop="category_2_name" align="center"></el-table-column>
<el-table-column label="生活号id" prop="life_account_id" align="center"></el-table-column>
<el-table-column label="生活号名称" prop="life_account_name" align="center"></el-table-column>
<el-table-column label="发布者" prop="publish_user_id" align="center"></el-table-column>
<el-table-column label="状态" align="center">
<template #default="scope">
<span v-if="scope.row.audit_status == 0" style="color:#FF982C;"
>待审核</span
>
<span v-if="scope.row.audit_status == 1" style="color:#5CC247;"
>审核通过</span
>
<span v-if="scope.row.audit_status == 2" style="color:#FD6B6F;"
>审核驳回</span
>
<span v-if="scope.row.audit_status == 0" style="color: #ff982c">待审核</span>
<span v-if="scope.row.audit_status == 1" style="color: #5cc247">审核通过</span>
<span v-if="scope.row.audit_status == 2" style="color: #fd6b6f">审核驳回</span>
&nbsp;&nbsp;&nbsp;
<span
v-if="scope.row.online_status == 0 && scope.row.audit_status != 2"
style="color:#FF982C;"
>未上架</span
>
<span
v-if="scope.row.online_status == 1 && scope.row.audit_status != 2"
style="color:#5CC247;"
>已上架</span
>
<span
v-if="scope.row.online_status == 2 && scope.row.audit_status != 2"
style="color:#FD6B6F;"
>已下架</span
>
<span v-if="scope.row.online_status == 0 && scope.row.audit_status != 2" style="color: #ff982c">未上架</span>
<span v-if="scope.row.online_status == 1 && scope.row.audit_status != 2" style="color: #5cc247">已上架</span>
<span v-if="scope.row.online_status == 2 && scope.row.audit_status != 2" style="color: #fd6b6f">已下架</span>
</template>
</el-table-column>
<el-table-column
label="状态更新时间"
prop="update_time"
align="center"
></el-table-column>
<el-table-column
label="商品创建时间"
prop="create_time"
<el-table-column label="状态更新时间" prop="update_time" align="center"></el-table-column>
<el-table-column label="商品创建时间" prop="create_time" align="center"></el-table-column>
<el-table-column label="上架类型" prop="online_type" align="center">
<template #default="scope">
{{ ["", "立即上架", "定点上架", "暂不上架"][scope.row.online_type] }}
</template>
</el-table-column>
<!-- <el-table-column
label="上架时间"
prop="online_start_time"
align="center"
></el-table-column>
>
<template #default="scope">
{{scope.row.online_start_time}} - {{scope.row.online_end_time}}
</template>
</el-table-column> -->
<!-- 操作快捷键 -->
<el-table-column label="操作" align="center" fixed="right" width="200">
<template #default="scope">
<el-button
type="text"
@click="goDetail(`EDIT`, scope.row.goods_spu_id)"
>编辑</el-button
>
<el-button type="text" @click="goDetail(`EDIT`, scope.row.goods_spu_id)">编辑</el-button>
<el-button
v-if="scope.row.audit_status == 0"
type="text"
@click="goDetail(`AUDIT`, scope.row.goods_spu_id)"
>审核</el-button
>
<el-button v-if="scope.row.audit_status == 0" type="text" @click="goDetail(`AUDIT`, scope.row.goods_spu_id)">审核</el-button>
<el-popconfirm
<!-- <el-popconfirm
v-if="scope.row.online_status == 2"
title="您确定要上架该商品吗?"
cancelButtonType="default"
......@@ -169,9 +100,9 @@
<template #reference>
<el-button type="text">上架</el-button>
</template>
</el-popconfirm>
</el-popconfirm> -->
<el-popconfirm
<!-- <el-popconfirm
v-if="
scope.row.online_status != 2 &&
(scope.row.audit_status == 1 || scope.row.online_status == 1)
......@@ -185,17 +116,43 @@
<template #reference>
<el-button type="text">下架</el-button>
</template>
</el-popconfirm>
</el-popconfirm> -->
<el-button
@click="goDetail(`DETAIL`, scope.row.goods_spu_id)"
type="text"
>详情</el-button
>
<el-button @click="goDetail(`DETAIL`, scope.row.goods_spu_id)" type="text">详情</el-button>
<el-button type="text" @click="handleGoodOnline(scope.row)">上架配置</el-button>
</template>
</el-table-column>
</el-table>
<el-dialog title="上架时间配置" width="50%" top="10%" center v-model="showGoodsAddTime">
<el-form-item>
上架时间:
<el-radio-group v-model="checkedAddTime.online_type">
<el-radio :label="1">立即上架</el-radio>
<el-radio :label="2">
定点上架
<span class="pick-time">
<el-date-picker
v-model="addTimeRange"
type="datetimerange"
start-placeholder="开始日期"
end-placeholder="结束日期"
format="YYYY-MM-DD HH:mm:ss"
value-format="YYYY-MM-DD HH:mm:ss"
:disabled="checkedAddTime.online_type != 2"
@change="pickAddTime"
></el-date-picker>
</span>
</el-radio>
<el-radio :label="3">暂不上架</el-radio>
</el-radio-group>
</el-form-item>
<template #footer>
<span>
<el-button type="primary" @click="handleConfirmRefund">确认</el-button>
<el-button @click="showGoodsAddTime = false">返回</el-button>
</span>
</template>
</el-dialog>
<!-- 页码区 -->
<el-pagination
class="pagination"
......@@ -204,8 +161,7 @@
:page-size="searchProps.page_size"
layout="total,prev, pager, next, jumper"
:total="totalCount"
>
</el-pagination>
></el-pagination>
</el-card>
</layout>
</template>
......@@ -213,18 +169,13 @@
<style lang="less" src="./index.less" scope></style>
<script>
import {
getGoodsList,
getList,
putOnline,
putOffline
} from "@/service/Goods/goods";
import Layout from "../layout/index.vue";
export default {
import { getGoodsList, getList, putOnline, putOffline, putOnlineSite } from "@/service/Goods/goods";
import Layout from "../layout/index.vue";
export default {
name: "GoodsList",
components: {
Layout
Layout,
},
created() {
......@@ -241,7 +192,7 @@ export default {
multiple: true, // 是否支持多选
value: "category_id", // 每一项选择的值
label: "name", // 每一项的名称
children: "sub_list" // 每一项子集的对应节点
children: "sub_list", // 每一项子集的对应节点
},
// 查询参数
......@@ -256,7 +207,7 @@ export default {
life_account_name: "",
audit_status: "", // 审核状态
online_status: "", // 上架状态
classValue: ""
classValue: "",
},
// 级联选择器
......@@ -266,13 +217,13 @@ export default {
stateOption: [
{ value: 0, label: "待审核" },
{ value: 1, label: "审核通过" },
{ value: 2, label: "审核驳回" }
{ value: 2, label: "审核驳回" },
],
// 上下架状态
onlineStateOptions: [
{ value: 0, label: "未上架" },
{ value: 1, label: "已上架" },
{ value: 2, label: "已下架" }
{ value: 2, label: "已下架" },
],
audit_status: [], // 审核状态
......@@ -281,7 +232,15 @@ export default {
// 商品列表
goodsList: [],
totalCount: 0 // 总条数
totalCount: 0, // 总条数
showGoodsAddTime: false, //商品添加弹窗
addTimeRange: [],
checkedAddTime: {
online_start_time: "",
online_end_time: "",
online_type: 3,
goods_spu_id: "",
},
};
},
......@@ -298,13 +257,13 @@ export default {
},
// 获取数组返回值并转换为字符串
getVal(value, index = 0) {
const valueArray = value.map(item => {
const valueArray = value.map((item) => {
return item[index];
});
return valueArray.join();
},
getValue(value) {
const values = value.map(item => {
const values = value.map((item) => {
return item;
});
return values.join();
......@@ -339,6 +298,12 @@ export default {
console.log(this.searchProps);
this.getCommodityList();
},
pickAddTime(val) {
if (val[1] < new Date()) {
this.addTimeRange[1] = new Date();
this.$message.warning("结束时间不能小于当前时间");
}
},
// 重置表单
resetList() {
this.searchProps = {
......@@ -352,7 +317,7 @@ export default {
life_account_name: "",
audit_status: "", // 审核状态
online_status: "", // 上架状态
classValue: ""
classValue: "",
};
this.audit_status = [];
this.onlineStatus = [];
......@@ -386,7 +351,39 @@ export default {
goDetail(operation, spuId) {
console.log(spuId);
this.$router.push({ name: "GoodsDetail", params: { operation, spuId } });
},
handleGoodOnline(item) {
item.online_start_time && item.online_end_time && (this.addTimeRange = [item.online_start_time, item.online_end_time]);
this.showGoodsAddTime = true;
this.checkedAddTime.online_type = item.online_type || 3;
this.checkedAddTime.goods_spu_id = item.goods_spu_id;
},
changeDate(dateA) {
let time = new Date(dateA).toJSON();
let date = new Date(+new Date(time) + 8 * 3600 * 1000)
.toISOString()
.replace(/T/g, " ")
.replace(/\.[\d]{3}Z/, "");
return date;
},
async handleConfirmRefund() {
if (this.checkedAddTime.online_type == 2) {
this.checkedAddTime.online_start_time = this.changeDate(this.addTimeRange[0]);
this.checkedAddTime.online_end_time = this.changeDate(this.addTimeRange[1]);
}
}
};
let res = await putOnlineSite(this.checkedAddTime);
await this.getCommodityList();
if (res.code !== 0) return this.$message.error(res.reason);
this.showGoodsAddTime = false;
this.addTimeRange = [];
this.checkedAddTime = {
online_start_time: "",
online_end_time: "",
online_type: 1,
goods_spu_id: "",
};
return this.$message.success("操作成功");
},
},
};
</script>
import axios from "@/utils/request";
// 获取商品分类项
export async function getGoodsList () {
export async function getGoodsList() {
const res = await axios.get("/api/v1/get_goods_category_list");
return res;
}
// 获取商品列表
export async function getList (params) {
export async function getList(params) {
const res = await axios.get("/api/v1/goods/background/get_goods_list", {
params
params,
});
return res;
}
// 商品上架
export async function putOnline (query) {
export async function putOnline(query) {
const res = await axios.post("/api/v1/goods/background/online", {
goods_spu_id: query
goods_spu_id: query,
});
return res;
}
// 商品下架
export async function putOffline (query) {
export async function putOffline(query) {
const res = await axios.post("/api/v1/goods/background/offline", {
goods_spu_id: query
goods_spu_id: query,
});
return res;
}
// 设置商品上架
export async function putOnlineSite(params) {
const res = await axios.post("/api/v1/goods/background/putOnlineSite", params);
return res;
}
// 获取商品详情列表
export async function getGoodsInfo (params) {
export async function getGoodsInfo(params) {
const res = await axios.get("/api/v1/goods/background/get_goods_info", {
params
params,
});
return res;
}
// 商品详情-审核通过
export async function postSuccess (query) {
export async function postSuccess(query) {
const res = await axios.post("/api/v1/goods/background/audit_pass", {
goods_spu_id: query
goods_spu_id: query,
});
return res;
}
// 审核拒绝
export async function auditReject (query) {
export async function auditReject(query) {
const res = await axios.post("/api/v1/goods/background/audit_reject", query);
return res;
}
// 商品详情-检查商品名称是否重复
export async function checkGoodsName (params) {
const res = await axios.post(
"/api/v1/goods/background/check_goods_name",
params
);
export async function checkGoodsName(params) {
const res = await axios.post("/api/v1/goods/background/check_goods_name", params);
return res;
}
// 获取门店表单
export async function getShopsList (params) {
export async function getShopsList(params) {
const res = await axios.get("/api/v1/shop/background/shop_list", { params });
return res;
}
// 添加门店信息
export async function postAddShop (query) {
export async function postAddShop(query) {
const res = await axios.post("/api/v1/shop/background/add_shop", query);
return res;
}
export async function editGoods (query) {
export async function editGoods(query) {
const res = await axios.post("/api/v1/goods/background/edit_goods", query);
return res;
}
// 获取营销活动列表
export async function getMarketingList (params) {
export async function getMarketingList(params) {
const res = await axios.post("/api/v1/get_marketing_list", params);
return res;
}
// 获取查询商品列表
export async function getFindGoodsList (params) {
export async function getFindGoodsList(params) {
const res = await axios.post("/api/v1/get_find_goods_list", params);
return res;
}
// 获取添加活动列表
export async function getAddMarketingList (params) {
export async function getAddMarketingList(params) {
const res = await axios.post("/api/v1/get_addmarketing_list", params);
return res;
}
// 获取查看列表
export async function getMarketingInfo (marketing_id) {
export async function getMarketingInfo(marketing_id) {
const res = await axios.post("/api/v1/get_marketing_info", marketing_id);
return res;
}
// 获取开启关闭
export async function updateMarketingList (params) {
export async function updateMarketingList(params) {
const res = await axios.post("/api/v1/update_marketing_list", params);
return res;
}
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