Merge branch 'master' of http://60.204.229.151:20080/chenkangxu/merchant-web
This commit is contained in:
commit
14ad1d4cb6
|
@ -0,0 +1,28 @@
|
||||||
|
import $http from "@/utils/httpRequest.js";
|
||||||
|
|
||||||
|
export const coupon = {
|
||||||
|
//优惠券列表
|
||||||
|
couponList: (data) => {
|
||||||
|
return $http.request({
|
||||||
|
url: `/merchant-api/coupon/page`,
|
||||||
|
method: "get",
|
||||||
|
params: data,
|
||||||
|
});
|
||||||
|
},
|
||||||
|
//添加优惠卷
|
||||||
|
addCoupon: (data) => {
|
||||||
|
return $http.post(`/merchant-api/coupon/save`, data);
|
||||||
|
},
|
||||||
|
//新增优惠卷数量
|
||||||
|
addNumCoupon: (data) => {
|
||||||
|
return $http.post(`/merchant-api/coupon/addNum`, data);
|
||||||
|
},
|
||||||
|
//优惠卷状态
|
||||||
|
couponStatus: (data) => {
|
||||||
|
return $http.post(`/merchant-api/coupon/update/status`, data);
|
||||||
|
},
|
||||||
|
//删除优惠卷
|
||||||
|
deleteCoupon: (data) => {
|
||||||
|
return $http.post(`/merchant-api/coupon/batch/delete`, data);
|
||||||
|
},
|
||||||
|
};
|
|
@ -0,0 +1,32 @@
|
||||||
|
import $http from "@/utils/httpRequest.js";
|
||||||
|
//
|
||||||
|
export const dataCenter = {
|
||||||
|
customerAnalysis: (data) => {
|
||||||
|
return $http.request({
|
||||||
|
url: `/merchant-api/pc/data/analyse/customer/analyse`,
|
||||||
|
method: "get",
|
||||||
|
params: data,
|
||||||
|
});
|
||||||
|
},
|
||||||
|
customerTrend: (data) => {
|
||||||
|
return $http.request({
|
||||||
|
url: `/merchant-api/pc/data/analyse/customer/trend`,
|
||||||
|
method: "get",
|
||||||
|
params: data,
|
||||||
|
});
|
||||||
|
},
|
||||||
|
updatePreSaleProducts: (data) => {
|
||||||
|
return $http.request({
|
||||||
|
url: `/merchant-api/product/save/advance/sell`,
|
||||||
|
method: "post",
|
||||||
|
data,
|
||||||
|
});
|
||||||
|
},
|
||||||
|
closePreSaleProducts: (data) => {
|
||||||
|
return $http.request({
|
||||||
|
url: `/merchant-api/product/update/advance/sell/status`,
|
||||||
|
method: "post",
|
||||||
|
data,
|
||||||
|
});
|
||||||
|
},
|
||||||
|
};
|
|
@ -0,0 +1,34 @@
|
||||||
|
import $http from "@/utils/httpRequest.js";
|
||||||
|
|
||||||
|
export const marketing = {
|
||||||
|
// 会员等级列表
|
||||||
|
marketingLevelPage: (data) => {
|
||||||
|
return $http.request({
|
||||||
|
url: `/merchant-api/memberUnitMemberLevel/list`,
|
||||||
|
method: "post",
|
||||||
|
data,
|
||||||
|
});
|
||||||
|
},
|
||||||
|
addMarketingLevel: (data) => {
|
||||||
|
return $http.request({
|
||||||
|
url: `/merchant-api/memberUnitMemberLevel/saveAll`,
|
||||||
|
method: "post",
|
||||||
|
data: data,
|
||||||
|
});
|
||||||
|
},
|
||||||
|
marketingUserPage: (data) => {
|
||||||
|
return $http.request({
|
||||||
|
url: `/merchant-api/memberUnitUser/page`,
|
||||||
|
method: "get",
|
||||||
|
params: data,
|
||||||
|
});
|
||||||
|
},
|
||||||
|
//积分列表
|
||||||
|
integralList: (data) => {
|
||||||
|
return $http.request({
|
||||||
|
url: `/merchant-api/memberUnitMemberTask/list`,
|
||||||
|
method: "post",
|
||||||
|
data,
|
||||||
|
});
|
||||||
|
},
|
||||||
|
};
|
|
@ -49,12 +49,12 @@ export const mer_admin = {
|
||||||
return $http.post(`/merchant-api/product/page`, data);
|
return $http.post(`/merchant-api/product/page`, data);
|
||||||
},
|
},
|
||||||
//商户商品分类
|
//商户商品分类
|
||||||
getProductCategory: () => {
|
getProductCategory: (data) => {
|
||||||
return $http.get(
|
return $http.request({
|
||||||
`/merchant-api/product/category/list?shopId=${
|
url: `/merchant-api/product/category/list`,
|
||||||
JSON.parse(sessionStorage.getItem("userInfo")).shopId
|
method: "get",
|
||||||
}`
|
params: data,
|
||||||
);
|
});
|
||||||
},
|
},
|
||||||
//上架或下架
|
//上架或下架
|
||||||
putOnShelvesProducts: (data) => {
|
putOnShelvesProducts: (data) => {
|
||||||
|
@ -142,9 +142,23 @@ export const mer_admin = {
|
||||||
params: data,
|
params: data,
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
//添加商家端银行卡
|
//添加商家端私账银行卡
|
||||||
bankCardAdd: (data) => {
|
bankCardAdd: (data) => {
|
||||||
return $http.post(`/merchant-api/bank/com-create`, data);
|
return $http.post(`/merchant-api/bank/pri-create`, data);
|
||||||
|
},
|
||||||
|
//添加商家端公账银行卡
|
||||||
|
publicAccountBankCardAdd: (data) => {
|
||||||
|
return $http.post(`/merchant-api/bank/pub-create`, data);
|
||||||
|
},
|
||||||
|
//删除银行卡
|
||||||
|
bankCardDelete: (data) => {
|
||||||
|
return $http.post(`/merchant-api/bank/delete?id=${data}`);
|
||||||
|
},
|
||||||
|
//设置默认银行卡
|
||||||
|
defaultBank: (data) => {
|
||||||
|
return $http.post(
|
||||||
|
`/merchant-api/bank/default-bank?linkId=${data.linkId}&bankId=${data.bankId}`
|
||||||
|
);
|
||||||
},
|
},
|
||||||
//获取银行卡详情
|
//获取银行卡详情
|
||||||
bankCardDetail: (id) => {
|
bankCardDetail: (id) => {
|
||||||
|
@ -154,6 +168,14 @@ export const mer_admin = {
|
||||||
params: { id },
|
params: { id },
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
//市场下的店铺列表
|
||||||
|
storeList: (data) => {
|
||||||
|
return $http.request({
|
||||||
|
method: "get",
|
||||||
|
url: `/merchant-api/market/shop_list`,
|
||||||
|
params: data,
|
||||||
|
});
|
||||||
|
},
|
||||||
//获取品牌信息
|
//获取品牌信息
|
||||||
getBrandInfo: () => {
|
getBrandInfo: () => {
|
||||||
return $http.request({
|
return $http.request({
|
||||||
|
@ -162,4 +184,24 @@ export const mer_admin = {
|
||||||
params: {},
|
params: {},
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
//编辑品牌信息
|
||||||
|
editBrandInfo: (data) => {
|
||||||
|
return $http.put(`/merchant-api/brand/edit`, data);
|
||||||
|
},
|
||||||
|
//修改密码
|
||||||
|
changePassword: (data) => {
|
||||||
|
return $http.put(`/merchant-api/auth/change/pwd`, data);
|
||||||
|
},
|
||||||
|
//修改管理员
|
||||||
|
editAdmin: (data) => {
|
||||||
|
return $http.put(`/merchant-api/brand/change/administrator`, data);
|
||||||
|
},
|
||||||
|
//获取验证码
|
||||||
|
getCaptcha: (data) => {
|
||||||
|
return $http.request({
|
||||||
|
method: "get",
|
||||||
|
url: `/merchant-api/brand/sms_code`,
|
||||||
|
params: data,
|
||||||
|
});
|
||||||
|
},
|
||||||
};
|
};
|
||||||
|
|
|
@ -0,0 +1,34 @@
|
||||||
|
import $http from "@/utils/httpRequest.js";
|
||||||
|
|
||||||
|
export const preSale = {
|
||||||
|
//预售商品列表
|
||||||
|
preSaleProducts: (data) => {
|
||||||
|
return $http.request({
|
||||||
|
url: `/merchant-api/product/advance/sell/page`,
|
||||||
|
method: "post",
|
||||||
|
data,
|
||||||
|
});
|
||||||
|
},
|
||||||
|
addPreSaleProducts: (data) => {
|
||||||
|
return $http.request({
|
||||||
|
url: `/merchant-api/product/batch/save/advance/sell`,
|
||||||
|
method: "post",
|
||||||
|
data,
|
||||||
|
});
|
||||||
|
},
|
||||||
|
updatePreSaleProducts: (data) => {
|
||||||
|
return $http.request({
|
||||||
|
url: `/merchant-api/product/save/advance/sell`,
|
||||||
|
method: "post",
|
||||||
|
data,
|
||||||
|
});
|
||||||
|
},
|
||||||
|
closePreSaleProducts: (data) => {
|
||||||
|
return $http.request({
|
||||||
|
url: `/merchant-api/product/update/advance/sell/status`,
|
||||||
|
method: "post",
|
||||||
|
data,
|
||||||
|
});
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
|
@ -0,0 +1,44 @@
|
||||||
|
import $http from "@/utils/httpRequest.js";
|
||||||
|
|
||||||
|
export const wallet = {
|
||||||
|
//钱包管理
|
||||||
|
myWallet: (data) => {
|
||||||
|
return $http.request({
|
||||||
|
url: `/merchant-api/wallet/wallet`,
|
||||||
|
method: "post",
|
||||||
|
data,
|
||||||
|
});
|
||||||
|
},
|
||||||
|
//钱包明细
|
||||||
|
Withdrawal: (data) => {
|
||||||
|
return $http.request({
|
||||||
|
url: `/merchant-api/walletDrawCashOrder/apply`,
|
||||||
|
method: "post",
|
||||||
|
data,
|
||||||
|
});
|
||||||
|
},
|
||||||
|
//钱包提现订单
|
||||||
|
WithdrawalRecord: (data) => {
|
||||||
|
return $http.request({
|
||||||
|
url: `/merchant-api/walletDrawCashOrder/page`,
|
||||||
|
method: "get",
|
||||||
|
params: data,
|
||||||
|
});
|
||||||
|
},
|
||||||
|
//钱包账单收支金额
|
||||||
|
totalAmount: (data) => {
|
||||||
|
return $http.request({
|
||||||
|
url: `/merchant-api/walletBill/totalAmount`,
|
||||||
|
method: "post",
|
||||||
|
data: data,
|
||||||
|
});
|
||||||
|
},
|
||||||
|
//钱包账单
|
||||||
|
getBankInfo: (data) => {
|
||||||
|
return $http.request({
|
||||||
|
url: `/merchant-api/walletBill/page`,
|
||||||
|
method: "get",
|
||||||
|
params: data,
|
||||||
|
});
|
||||||
|
},
|
||||||
|
};
|
|
@ -92,6 +92,7 @@ export default {
|
||||||
orderNum: 0,
|
orderNum: 0,
|
||||||
open: null,
|
open: null,
|
||||||
list: [],
|
list: [],
|
||||||
|
hideInMenu: true,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
menuId: getUUID(),
|
menuId: getUUID(),
|
||||||
|
@ -120,72 +121,323 @@ export default {
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
// {
|
{
|
||||||
// "menuId": getUUID(),
|
menuId: getUUID(),
|
||||||
// "parentId": 0,
|
parentId: 0,
|
||||||
// "parentName": null,
|
parentName: null,
|
||||||
// "name": "教务管理",
|
name: "优惠卷管理",
|
||||||
// "url": "local-affairs",
|
url: "coupon/index",
|
||||||
// "perms": "",
|
perms: "",
|
||||||
// "type": 0,
|
type: 0,
|
||||||
// "elIcon": "el-icon-office-building",
|
elIcon: "el-icon-document-remove",
|
||||||
// "orderNum": 0,
|
orderNum: 0,
|
||||||
// "open": null,
|
open: null,
|
||||||
// list: [
|
list: [],
|
||||||
// {
|
},
|
||||||
// "menuId": getUUID(),
|
{
|
||||||
// "parentId": 2,
|
menuId: getUUID(),
|
||||||
// "parentName": null,
|
parentId: 0,
|
||||||
// "name": "年级管理",
|
parentName: null,
|
||||||
// "url": "local-affairs/grade",
|
name: "预售管理",
|
||||||
// "perms": "",
|
url: "",
|
||||||
// "type": 1,
|
perms: "",
|
||||||
// "icon": "log",
|
type: 0,
|
||||||
// "orderNum": 0,
|
elIcon: "el-icon-data-analysis",
|
||||||
// "open": null,
|
orderNum: 0,
|
||||||
// "list": []
|
open: null,
|
||||||
// },
|
list: [
|
||||||
// {
|
{
|
||||||
// "menuId": getUUID(),
|
menuId: getUUID(),
|
||||||
// "parentId": 2,
|
parentId: 0,
|
||||||
// "parentName": null,
|
parentName: null,
|
||||||
// "name": "班级管理",
|
name: "预售商品",
|
||||||
// "url": "local-affairs/class",
|
url: "presale/products/index",
|
||||||
// "perms": "",
|
perms: "",
|
||||||
// "type": 1,
|
type: 1,
|
||||||
// "icon": "log",
|
elIcon: "el-icon-postcard",
|
||||||
// "orderNum": 0,
|
orderNum: 0,
|
||||||
// "open": null,
|
open: null,
|
||||||
// "list": []
|
list: [],
|
||||||
// },
|
},
|
||||||
// {
|
{
|
||||||
// "menuId": getUUID(),
|
menuId: getUUID(),
|
||||||
// "parentId": 2,
|
parentId: 0,
|
||||||
// "parentName": null,
|
parentName: null,
|
||||||
// "name": "教师管理",
|
name: "预售订单",
|
||||||
// "url": "local-teacher/teacher",
|
url: "presale/order/index",
|
||||||
// "perms": "",
|
perms: "",
|
||||||
// "type": 1,
|
type: 1,
|
||||||
// "icon": "log",
|
elIcon: "el-icon-postcard",
|
||||||
// "orderNum": 0,
|
orderNum: 0,
|
||||||
// "open": null,
|
open: null,
|
||||||
// "list": []
|
list: [],
|
||||||
// },
|
},
|
||||||
// {
|
],
|
||||||
// "menuId": getUUID(),
|
},
|
||||||
// "parentId": 0,
|
{
|
||||||
// "parentName": null,
|
menuId: getUUID(),
|
||||||
// "name": "学校管理",
|
parentId: 0,
|
||||||
// "url": "local-school/school",
|
parentName: null,
|
||||||
// "perms": "",
|
name: "数据中心",
|
||||||
// "type": 1,
|
url: "",
|
||||||
// "elIcon": "el-icon-school",
|
perms: "",
|
||||||
// "orderNum": 0,
|
type: 0,
|
||||||
// "open": null,
|
elIcon: "el-icon-tickets",
|
||||||
// list: []
|
orderNum: 0,
|
||||||
// },
|
open: null,
|
||||||
// ]
|
list: [
|
||||||
// },
|
{
|
||||||
|
menuId: getUUID(),
|
||||||
|
parentId: 0,
|
||||||
|
parentName: null,
|
||||||
|
name: "客户分析",
|
||||||
|
url: "datacenter/customer-analysis/index",
|
||||||
|
perms: "",
|
||||||
|
type: 1,
|
||||||
|
elIcon: "el-icon-user",
|
||||||
|
orderNum: 0,
|
||||||
|
open: null,
|
||||||
|
list: [],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
menuId: getUUID(),
|
||||||
|
parentId: 0,
|
||||||
|
parentName: null,
|
||||||
|
name: "商品分析",
|
||||||
|
url: "datacenter/product-analysis/index",
|
||||||
|
perms: "",
|
||||||
|
type: 1,
|
||||||
|
elIcon: "el-icon-data-analysis",
|
||||||
|
orderNum: 0,
|
||||||
|
open: null,
|
||||||
|
list: [],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
menuId: getUUID(),
|
||||||
|
parentId: 0,
|
||||||
|
parentName: null,
|
||||||
|
name: "订单统计分析",
|
||||||
|
url: "datacenter/order-analysis/index",
|
||||||
|
perms: "",
|
||||||
|
type: 1,
|
||||||
|
elIcon: "el-icon-shopping-cart-full",
|
||||||
|
orderNum: 0,
|
||||||
|
open: null,
|
||||||
|
list: [],
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
menuId: getUUID(),
|
||||||
|
parentId: 0,
|
||||||
|
parentName: null,
|
||||||
|
name: "营销管理",
|
||||||
|
url: "",
|
||||||
|
perms: "",
|
||||||
|
type: 0,
|
||||||
|
elIcon: "el-icon-tickets",
|
||||||
|
orderNum: 0,
|
||||||
|
open: null,
|
||||||
|
list: [
|
||||||
|
{
|
||||||
|
menuId: getUUID(),
|
||||||
|
parentId: 0,
|
||||||
|
parentName: null,
|
||||||
|
name: "会员等级管理",
|
||||||
|
url: "marketing/level/index",
|
||||||
|
perms: "",
|
||||||
|
type: 1,
|
||||||
|
elIcon: "el-icon-user",
|
||||||
|
orderNum: 0,
|
||||||
|
open: null,
|
||||||
|
list: [],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
menuId: getUUID(),
|
||||||
|
parentId: 0,
|
||||||
|
parentName: null,
|
||||||
|
name: "用户管理",
|
||||||
|
url: "marketing/user/index",
|
||||||
|
perms: "",
|
||||||
|
type: 1,
|
||||||
|
elIcon: "el-icon-data-analysis",
|
||||||
|
orderNum: 0,
|
||||||
|
open: null,
|
||||||
|
list: [],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
menuId: getUUID(),
|
||||||
|
parentId: 0,
|
||||||
|
parentName: null,
|
||||||
|
name: "积分设置",
|
||||||
|
url: "marketing/points-setting/index",
|
||||||
|
perms: "",
|
||||||
|
type: 1,
|
||||||
|
elIcon: "el-icon-shopping-cart-full",
|
||||||
|
orderNum: 0,
|
||||||
|
open: null,
|
||||||
|
list: [],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
menuId: getUUID(),
|
||||||
|
parentId: 0,
|
||||||
|
parentName: null,
|
||||||
|
name: "积分商城",
|
||||||
|
url: "marketing/points-mall/index",
|
||||||
|
perms: "",
|
||||||
|
type: 1,
|
||||||
|
elIcon: "el-icon-shopping-cart-full",
|
||||||
|
orderNum: 0,
|
||||||
|
open: null,
|
||||||
|
list: [],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
menuId: getUUID(),
|
||||||
|
parentId: 0,
|
||||||
|
parentName: null,
|
||||||
|
name: "积分订单",
|
||||||
|
url: "marketing/points-order/index",
|
||||||
|
perms: "",
|
||||||
|
type: 1,
|
||||||
|
elIcon: "el-icon-shopping-cart-full",
|
||||||
|
orderNum: 0,
|
||||||
|
open: null,
|
||||||
|
list: [],
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
menuId: getUUID(),
|
||||||
|
parentId: 0,
|
||||||
|
parentName: null,
|
||||||
|
name: "代理商",
|
||||||
|
url: "",
|
||||||
|
perms: "",
|
||||||
|
type: 0,
|
||||||
|
elIcon: "el-icon-tickets",
|
||||||
|
orderNum: 0,
|
||||||
|
open: null,
|
||||||
|
list: [
|
||||||
|
{
|
||||||
|
menuId: getUUID(),
|
||||||
|
parentId: 0,
|
||||||
|
parentName: null,
|
||||||
|
name: "数据面板",
|
||||||
|
url: "agent/data-panel/index",
|
||||||
|
perms: "",
|
||||||
|
type: 1,
|
||||||
|
elIcon: "el-icon-user",
|
||||||
|
orderNum: 0,
|
||||||
|
open: null,
|
||||||
|
list: [],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
menuId: getUUID(),
|
||||||
|
parentId: 0,
|
||||||
|
parentName: null,
|
||||||
|
name: "品牌管理",
|
||||||
|
url: "agent/brand/index",
|
||||||
|
perms: "",
|
||||||
|
type: 1,
|
||||||
|
elIcon: "el-icon-data-analysis",
|
||||||
|
orderNum: 0,
|
||||||
|
open: null,
|
||||||
|
list: [],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
menuId: getUUID(),
|
||||||
|
parentId: 0,
|
||||||
|
parentName: null,
|
||||||
|
name: "报表",
|
||||||
|
url: "agent/report-form/index",
|
||||||
|
perms: "",
|
||||||
|
type: 1,
|
||||||
|
elIcon: "el-icon-shopping-cart-full",
|
||||||
|
orderNum: 0,
|
||||||
|
open: null,
|
||||||
|
list: [],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
menuId: getUUID(),
|
||||||
|
parentId: 0,
|
||||||
|
parentName: null,
|
||||||
|
name: "市场列表",
|
||||||
|
url: "agent/market-list/index",
|
||||||
|
perms: "",
|
||||||
|
type: 1,
|
||||||
|
elIcon: "el-icon-shopping-cart-full",
|
||||||
|
orderNum: 0,
|
||||||
|
open: null,
|
||||||
|
list: [],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
menuId: getUUID(),
|
||||||
|
parentId: 0,
|
||||||
|
parentName: null,
|
||||||
|
name: "店铺列表",
|
||||||
|
url: "agent/shop-list/index",
|
||||||
|
perms: "",
|
||||||
|
type: 1,
|
||||||
|
elIcon: "el-icon-shopping-cart-full",
|
||||||
|
orderNum: 0,
|
||||||
|
open: null,
|
||||||
|
list: [],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
menuId: getUUID(),
|
||||||
|
parentId: 0,
|
||||||
|
parentName: null,
|
||||||
|
name: "分销商列表",
|
||||||
|
url: "agent/distributor/index",
|
||||||
|
perms: "",
|
||||||
|
type: 1,
|
||||||
|
elIcon: "el-icon-shopping-cart-full",
|
||||||
|
orderNum: 0,
|
||||||
|
open: null,
|
||||||
|
list: [],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
menuId: getUUID(),
|
||||||
|
parentId: 0,
|
||||||
|
parentName: null,
|
||||||
|
name: "权限管理",
|
||||||
|
url: "agent/jurisdiction/index",
|
||||||
|
perms: "",
|
||||||
|
type: 1,
|
||||||
|
elIcon: "el-icon-shopping-cart-full",
|
||||||
|
orderNum: 0,
|
||||||
|
open: null,
|
||||||
|
list: [],
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
menuId: getUUID(),
|
||||||
|
parentId: 0,
|
||||||
|
parentName: null,
|
||||||
|
name: "钱包管理",
|
||||||
|
url: "local-course/resources",
|
||||||
|
perms: "",
|
||||||
|
type: 0,
|
||||||
|
elIcon: "el-icon-menu",
|
||||||
|
orderNum: 0,
|
||||||
|
open: null,
|
||||||
|
list: [
|
||||||
|
{
|
||||||
|
menuId: getUUID(),
|
||||||
|
parentId: 0,
|
||||||
|
parentName: null,
|
||||||
|
name: "我的钱包",
|
||||||
|
url: "wallet/index",
|
||||||
|
perms: "",
|
||||||
|
type: 1,
|
||||||
|
elIcon: "el-icon-menu",
|
||||||
|
orderNum: 0,
|
||||||
|
open: null,
|
||||||
|
list: [],
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
],
|
],
|
||||||
code: 0,
|
code: 0,
|
||||||
permissions: [],
|
permissions: [],
|
||||||
|
|
|
@ -4,111 +4,183 @@
|
||||||
* 建议:
|
* 建议:
|
||||||
* 1. 代码中路由统一使用name属性跳转(不使用path属性)
|
* 1. 代码中路由统一使用name属性跳转(不使用path属性)
|
||||||
*/
|
*/
|
||||||
import Vue from 'vue'
|
import Vue from "vue";
|
||||||
import Router from 'vue-router'
|
import Router from "vue-router";
|
||||||
import http from '@/utils/httpRequest'
|
import http from "@/utils/httpRequest";
|
||||||
import { isURL } from '@/utils/validate'
|
import { isURL } from "@/utils/validate";
|
||||||
import { clearLoginInfo } from '@/utils'
|
import { clearLoginInfo } from "@/utils";
|
||||||
import FULL_ROUTERS from "./full-routers";
|
import FULL_ROUTERS from "./full-routers";
|
||||||
import $api from "@/api/index.js"
|
import $api from "@/api/index.js";
|
||||||
import { Loading } from 'element-ui';
|
import store from "@/store";
|
||||||
|
import { Loading } from "element-ui";
|
||||||
|
|
||||||
Vue.use(Router)
|
Vue.use(Router);
|
||||||
|
|
||||||
// 开发环境不使用懒加载, 因为懒加载页面太多的话会造成webpack热更新太慢, 所以只有生产环境使用懒加载
|
// 开发环境不使用懒加载, 因为懒加载页面太多的话会造成webpack热更新太慢, 所以只有生产环境使用懒加载
|
||||||
const _import = require('./import-' + process.env.NODE_ENV)
|
const _import = require("./import-" + process.env.NODE_ENV);
|
||||||
|
|
||||||
// 全局路由(无需嵌套上左右整体布局)
|
// 全局路由(无需嵌套上左右整体布局)
|
||||||
const globalRoutes = [
|
const globalRoutes = [
|
||||||
{ path: '/404', component: _import('common/404'), name: '404', meta: { title: '404未找到' } },
|
{
|
||||||
{ path: '/login', component: _import('common/login'), name: 'login', meta: { title: '登录' } },
|
path: "/404",
|
||||||
|
component: _import("common/404"),
|
||||||
|
name: "404",
|
||||||
|
meta: { title: "404未找到" },
|
||||||
|
},
|
||||||
|
{
|
||||||
|
path: "/login",
|
||||||
|
component: _import("common/login"),
|
||||||
|
name: "login",
|
||||||
|
meta: { title: "登录" },
|
||||||
|
},
|
||||||
//test用,会员管理
|
//test用,会员管理
|
||||||
]
|
];
|
||||||
|
|
||||||
// 主入口路由(需嵌套上左右整体布局)
|
// 主入口路由(需嵌套上左右整体布局)
|
||||||
const mainRoutes = {
|
const mainRoutes = {
|
||||||
path: '/',
|
path: "/",
|
||||||
component: _import('main'),
|
component: _import("main"),
|
||||||
name: 'main',
|
name: "main",
|
||||||
redirect: { name: 'home' },
|
redirect: { name: "home" },
|
||||||
meta: { title: '主入口整体布局' },
|
meta: { title: "主入口整体布局" },
|
||||||
children: [
|
children: [
|
||||||
// 通过meta对象设置路由展示方式
|
// 通过meta对象设置路由展示方式
|
||||||
// 1. isTab: 是否通过tab展示内容, true: 是, false: 否
|
// 1. isTab: 是否通过tab展示内容, true: 是, false: 否
|
||||||
// 2. iframeUrl: 是否通过iframe嵌套展示内容, '以http[s]://开头': 是, '': 否
|
// 2. iframeUrl: 是否通过iframe嵌套展示内容, '以http[s]://开头': 是, '': 否
|
||||||
// 提示: 如需要通过iframe嵌套展示内容, 但不通过tab打开, 请自行创建组件使用iframe处理!
|
// 提示: 如需要通过iframe嵌套展示内容, 但不通过tab打开, 请自行创建组件使用iframe处理!
|
||||||
{ path: '/home', component: _import('common/home'), name: 'home', meta: { title: '首页' } },
|
{
|
||||||
{ path: '/theme', component: _import('common/theme'), name: 'theme', meta: { title: '主题' } },
|
path: "/home",
|
||||||
{ path: '/demo-echarts', component: _import('demo/echarts'), name: 'demo-echarts', meta: { title: 'demo-echarts', isTab: true } }
|
component: _import("common/home"),
|
||||||
|
name: "home",
|
||||||
|
meta: { title: "首页" },
|
||||||
|
},
|
||||||
|
{
|
||||||
|
path: "/theme",
|
||||||
|
component: _import("common/theme"),
|
||||||
|
name: "theme",
|
||||||
|
meta: { title: "主题" },
|
||||||
|
},
|
||||||
|
{
|
||||||
|
path: "/demo-echarts",
|
||||||
|
component: _import("demo/echarts"),
|
||||||
|
name: "demo-echarts",
|
||||||
|
meta: { title: "demo-echarts", isTab: true },
|
||||||
|
},
|
||||||
],
|
],
|
||||||
beforeEnter(to, from, next) {
|
beforeEnter(to, from, next) {
|
||||||
let token = Vue.cookie.get('token')
|
let token = Vue.cookie.get("token");
|
||||||
if (!token || !/\S/.test(token)) {
|
if (!token || !/\S/.test(token)) {
|
||||||
clearLoginInfo()
|
clearLoginInfo();
|
||||||
next({ name: 'login' })
|
next({ name: "login" });
|
||||||
}
|
|
||||||
next()
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
next();
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
const router = new Router({
|
const router = new Router({
|
||||||
mode: 'hash',
|
mode: "hash",
|
||||||
// mode:"history",
|
// mode:"history",
|
||||||
scrollBehavior: () => ({ y: 0 }),
|
scrollBehavior: () => ({ y: 0 }),
|
||||||
isAddDynamicMenuRoutes: false, // 是否已经添加动态(菜单)路由
|
isAddDynamicMenuRoutes: false, // 是否已经添加动态(菜单)路由
|
||||||
routes: globalRoutes.concat(mainRoutes)
|
routes: globalRoutes.concat(mainRoutes),
|
||||||
})
|
});
|
||||||
|
|
||||||
router.beforeEach((to, from, next) => {
|
router.beforeEach((to, from, next) => {
|
||||||
console.log("beforeEach");
|
console.log("beforeEach");
|
||||||
// 添加动态(菜单)路由
|
// 添加动态(菜单)路由
|
||||||
// 1. 已经添加 or 全局路由, 直接访问
|
// 1. 已经添加 or 全局路由, 直接访问
|
||||||
// 2. 获取菜单列表, 添加并保存本地存储
|
// 2. 获取菜单列表, 添加并保存本地存储
|
||||||
if (router.options.isAddDynamicMenuRoutes || fnCurrentRouteType(to, globalRoutes) === 'global') {
|
if (
|
||||||
next()
|
router.options.isAddDynamicMenuRoutes ||
|
||||||
|
fnCurrentRouteType(to, globalRoutes) === "global"
|
||||||
|
) {
|
||||||
|
next();
|
||||||
} else {
|
} else {
|
||||||
let loadingInstance = Loading.service({
|
let loadingInstance = Loading.service({
|
||||||
text: "正在初始化中...",
|
text: "正在初始化中...",
|
||||||
background:'rgba(255,255,255,0.7)'
|
background: "rgba(255,255,255,0.7)",
|
||||||
});
|
});
|
||||||
$api.getUserInfo()
|
$api
|
||||||
|
.getUserInfo()
|
||||||
.then(({ data }) => {
|
.then(({ data }) => {
|
||||||
const filterTreeData = (data, permissions) => {
|
const filterTreeData = (data, permissions) => {
|
||||||
return data; //临时性返回所有菜单方便调试
|
return data; //临时性返回所有菜单方便调试
|
||||||
return data.reduce((filtered, node) => {
|
// return data.reduce((filtered, node) => {
|
||||||
// 如果节点的权限在权限数组中
|
// // 如果节点的权限在权限数组中
|
||||||
if (permissions.includes(node.url)) {
|
// if (permissions.includes(node.url)) {
|
||||||
// 递归过滤子节点
|
// // 递归过滤子节点
|
||||||
const list = filterTreeData(node.list || [], permissions);
|
// const list = filterTreeData(node.list || [], permissions);
|
||||||
// 创建一个新的节点,包含过滤后的子节点
|
// // 创建一个新的节点,包含过滤后的子节点
|
||||||
filtered.push({
|
// filtered.push({
|
||||||
...node,
|
// ...node,
|
||||||
list
|
// list,
|
||||||
|
// });
|
||||||
|
// }
|
||||||
|
// return filtered;
|
||||||
|
// }, []);
|
||||||
|
};
|
||||||
|
console.log(data);
|
||||||
|
if (data.data.markets?.length > 0) {
|
||||||
|
// 存在多个市场
|
||||||
|
$api.mer_admin
|
||||||
|
.storeList({ marketId: data.data.markets[0].marketId })
|
||||||
|
.then((res) => {
|
||||||
|
store.commit("userData/setState", {
|
||||||
|
isMerchant: true,
|
||||||
|
marketList: data.data.markets,
|
||||||
|
storeList: res.data.data,
|
||||||
|
marketId: data.data.markets[0].marketId,
|
||||||
|
shopId: res.data.data[0].shopId,
|
||||||
|
});
|
||||||
|
});
|
||||||
|
console.log(data.data.markets);
|
||||||
|
} else if (data.data.shopId) {
|
||||||
|
// 存在单个店铺
|
||||||
|
store.commit("userData/setState", {
|
||||||
|
isMerchant: true,
|
||||||
|
marketList: [],
|
||||||
|
storeList: [],
|
||||||
|
marketId: data.data.marketId,
|
||||||
|
shopId: data.data.shopId,
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
// 不存在店铺
|
||||||
|
store.commit("userData/setState", {
|
||||||
|
isMerchant: false,
|
||||||
|
marketList: [],
|
||||||
|
storeList: [],
|
||||||
|
marketId: "",
|
||||||
|
shopId: "",
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
return filtered;
|
|
||||||
}, []);
|
|
||||||
}
|
|
||||||
console.log(data);
|
|
||||||
sessionStorage.setItem("userInfo", JSON.stringify(data.data));
|
sessionStorage.setItem("userInfo", JSON.stringify(data.data));
|
||||||
sessionStorage.setItem('permissions', JSON.stringify(data.data.permissions || '[]'))
|
sessionStorage.setItem(
|
||||||
|
"permissions",
|
||||||
|
JSON.stringify(data.data.permissions || "[]")
|
||||||
|
);
|
||||||
//添加全量菜单,根据权限进行过滤
|
//添加全量菜单,根据权限进行过滤
|
||||||
let _menu=filterTreeData(FULL_ROUTERS.menuList, data.data.permissions);
|
let _menu = filterTreeData(
|
||||||
fnAddDynamicMenuRoutes(_menu)
|
FULL_ROUTERS.menuList,
|
||||||
sessionStorage.setItem('menuList', JSON.stringify(_menu))
|
data.data.permissions
|
||||||
router.options.isAddDynamicMenuRoutes = true
|
);
|
||||||
next({ ...to, replace: true })
|
fnAddDynamicMenuRoutes(_menu);
|
||||||
|
sessionStorage.setItem("menuList", JSON.stringify(_menu));
|
||||||
|
router.options.isAddDynamicMenuRoutes = true;
|
||||||
|
next({ ...to, replace: true });
|
||||||
})
|
})
|
||||||
.catch((e) => {
|
.catch((e) => {
|
||||||
sessionStorage.setItem('menuList', '[]')
|
sessionStorage.setItem("menuList", "[]");
|
||||||
sessionStorage.setItem('permissions', '[]')
|
sessionStorage.setItem("permissions", "[]");
|
||||||
console.log(`%c${e} 请求菜单列表和权限失败,跳转至登录页!!`, 'color:blue')
|
console.log(
|
||||||
router.push({ name: 'login' })
|
`%c${e} 请求菜单列表和权限失败,跳转至登录页!!`,
|
||||||
next()
|
"color:blue"
|
||||||
|
);
|
||||||
|
router.push({ name: "login" });
|
||||||
|
next();
|
||||||
})
|
})
|
||||||
.finally(() => {
|
.finally(() => {
|
||||||
loadingInstance.close();
|
loadingInstance.close();
|
||||||
})
|
});
|
||||||
// http({
|
// http({
|
||||||
// url: '/sys/menu/nav',
|
// url: '/sys/menu/nav',
|
||||||
// method: 'get',
|
// method: 'get',
|
||||||
|
@ -128,22 +200,25 @@ router.beforeEach((to, from, next) => {
|
||||||
// router.push({ name: 'login' })
|
// router.push({ name: 'login' })
|
||||||
// })
|
// })
|
||||||
}
|
}
|
||||||
})
|
});
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 判断当前路由类型, global: 全局路由, main: 主入口路由
|
* 判断当前路由类型, global: 全局路由, main: 主入口路由
|
||||||
* @param {*} route 当前路由
|
* @param {*} route 当前路由
|
||||||
*/
|
*/
|
||||||
function fnCurrentRouteType(route, globalRoutes = []) {
|
function fnCurrentRouteType(route, globalRoutes = []) {
|
||||||
var temp = []
|
var temp = [];
|
||||||
for (var i = 0; i < globalRoutes.length; i++) {
|
for (var i = 0; i < globalRoutes.length; i++) {
|
||||||
if (route.path === globalRoutes[i].path) {
|
if (route.path === globalRoutes[i].path) {
|
||||||
return 'global'
|
return "global";
|
||||||
} else if (globalRoutes[i].children && globalRoutes[i].children.length >= 1) {
|
} else if (
|
||||||
temp = temp.concat(globalRoutes[i].children)
|
globalRoutes[i].children &&
|
||||||
|
globalRoutes[i].children.length >= 1
|
||||||
|
) {
|
||||||
|
temp = temp.concat(globalRoutes[i].children);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return temp.length >= 1 ? fnCurrentRouteType(route, temp) : 'main'
|
return temp.length >= 1 ? fnCurrentRouteType(route, temp) : "main";
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -152,53 +227,59 @@ function fnCurrentRouteType(route, globalRoutes = []) {
|
||||||
* @param {*} routes 递归创建的动态(菜单)路由
|
* @param {*} routes 递归创建的动态(菜单)路由
|
||||||
*/
|
*/
|
||||||
function fnAddDynamicMenuRoutes(menuList = [], routes = []) {
|
function fnAddDynamicMenuRoutes(menuList = [], routes = []) {
|
||||||
var temp = []
|
var temp = [];
|
||||||
for (var i = 0; i < menuList.length; i++) {
|
for (var i = 0; i < menuList.length; i++) {
|
||||||
if (menuList[i].list && menuList[i].list.length >= 1) {
|
if (menuList[i].list && menuList[i].list.length >= 1) {
|
||||||
temp = temp.concat(menuList[i].list)
|
temp = temp.concat(menuList[i].list);
|
||||||
} else if (menuList[i].url && /\S/.test(menuList[i].url)) {
|
} else if (menuList[i].url && /\S/.test(menuList[i].url)) {
|
||||||
menuList[i].url = menuList[i].url.replace(/^\//, '')
|
menuList[i].url = menuList[i].url.replace(/^\//, "");
|
||||||
var route = {
|
var route = {
|
||||||
path: menuList[i].url.replace('/', '-'),
|
path: menuList[i].url.replace("/", "-"),
|
||||||
component: null,
|
component: null,
|
||||||
name: menuList[i].url.replace('/', '-'),
|
name: menuList[i].url.replace("/", "-"),
|
||||||
meta: {
|
meta: {
|
||||||
menuId: menuList[i].menuId,
|
menuId: menuList[i].menuId,
|
||||||
title: menuList[i].name,
|
title: menuList[i].name,
|
||||||
isDynamic: true,
|
isDynamic: true,
|
||||||
isTab: true,
|
isTab: true,
|
||||||
iframeUrl: '',
|
iframeUrl: "",
|
||||||
isMicroApp:menuList[i].isMicroApp
|
isMicroApp: menuList[i].isMicroApp,
|
||||||
}
|
},
|
||||||
}
|
};
|
||||||
// url以http[s]://开头, 通过iframe展示,或者启用microApp框架
|
// url以http[s]://开头, 通过iframe展示,或者启用microApp框架
|
||||||
if (isURL(menuList[i].url)) {
|
if (isURL(menuList[i].url)) {
|
||||||
route['path'] = `i-${menuList[i].menuId}`
|
route["path"] = `i-${menuList[i].menuId}`;
|
||||||
route['name'] = `i-${menuList[i].menuId}`
|
route["name"] = `i-${menuList[i].menuId}`;
|
||||||
route['meta']['iframeUrl'] = menuList[i].url
|
route["meta"]["iframeUrl"] = menuList[i].url;
|
||||||
} else {
|
} else {
|
||||||
try {
|
try {
|
||||||
route['component'] = _import(`modules/${menuList[i].url}`) || null
|
route["component"] = _import(`modules/${menuList[i].url}`) || null;
|
||||||
} catch (e) {}
|
} catch (e) {}
|
||||||
}
|
}
|
||||||
routes.push(route)
|
routes.push(route);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (temp.length >= 1) {
|
if (temp.length >= 1) {
|
||||||
fnAddDynamicMenuRoutes(temp, routes)
|
fnAddDynamicMenuRoutes(temp, routes);
|
||||||
} else {
|
} else {
|
||||||
mainRoutes.name = 'main-dynamic'
|
mainRoutes.name = "main-dynamic";
|
||||||
mainRoutes.children = routes
|
mainRoutes.children = routes;
|
||||||
router.addRoutes([
|
router.addRoutes([mainRoutes, { path: "*", redirect: { name: "404" } }]);
|
||||||
mainRoutes,
|
sessionStorage.setItem(
|
||||||
{ path: '*', redirect: { name: '404' } }
|
"dynamicMenuRoutes",
|
||||||
])
|
JSON.stringify(mainRoutes.children || "[]")
|
||||||
sessionStorage.setItem('dynamicMenuRoutes', JSON.stringify(mainRoutes.children || '[]'))
|
);
|
||||||
console.log('\n')
|
console.log("\n");
|
||||||
console.log('%c!<-------------------- 动态(菜单)路由 s -------------------->', 'color:blue')
|
console.log(
|
||||||
console.log(mainRoutes.children)
|
"%c!<-------------------- 动态(菜单)路由 s -------------------->",
|
||||||
console.log('%c!<-------------------- 动态(菜单)路由 e -------------------->', 'color:blue')
|
"color:blue"
|
||||||
|
);
|
||||||
|
console.log(mainRoutes.children);
|
||||||
|
console.log(
|
||||||
|
"%c!<-------------------- 动态(菜单)路由 e -------------------->",
|
||||||
|
"color:blue"
|
||||||
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
export default router
|
export default router;
|
||||||
|
|
|
@ -1,23 +1,25 @@
|
||||||
import Vue from 'vue'
|
import Vue from "vue";
|
||||||
import Vuex from 'vuex'
|
import Vuex from "vuex";
|
||||||
import cloneDeep from 'lodash/cloneDeep'
|
import cloneDeep from "lodash/cloneDeep";
|
||||||
import common from './modules/common'
|
import common from "./modules/common";
|
||||||
import user from './modules/user'
|
import user from "./modules/user";
|
||||||
|
import userData from "./modules/userData";
|
||||||
|
|
||||||
Vue.use(Vuex)
|
Vue.use(Vuex);
|
||||||
|
|
||||||
export default new Vuex.Store({
|
export default new Vuex.Store({
|
||||||
modules: {
|
modules: {
|
||||||
common,
|
common,
|
||||||
user
|
user,
|
||||||
|
userData,
|
||||||
},
|
},
|
||||||
mutations: {
|
mutations: {
|
||||||
// 重置vuex本地储存状态
|
// 重置vuex本地储存状态
|
||||||
resetStore(state) {
|
resetStore(state) {
|
||||||
Object.keys(state).forEach((key) => {
|
Object.keys(state).forEach((key) => {
|
||||||
state[key] = cloneDeep(window.SITE_CONFIG['storeState'][key])
|
state[key] = cloneDeep(window.SITE_CONFIG["storeState"][key]);
|
||||||
})
|
});
|
||||||
}
|
|
||||||
},
|
},
|
||||||
strict: process.env.NODE_ENV !== 'production'
|
},
|
||||||
})
|
strict: process.env.NODE_ENV !== "production",
|
||||||
|
});
|
||||||
|
|
|
@ -0,0 +1,30 @@
|
||||||
|
const state = {
|
||||||
|
isMerchant: false, //是否是经营者还是摊铺 不是就是为false
|
||||||
|
marketList: [], //经营的市场
|
||||||
|
storeList: [], //经营的店铺
|
||||||
|
marketId: "",
|
||||||
|
shopId: "",
|
||||||
|
};
|
||||||
|
|
||||||
|
// actions
|
||||||
|
const actions = {};
|
||||||
|
|
||||||
|
// mutations
|
||||||
|
const mutations = {
|
||||||
|
setState(state, data) {
|
||||||
|
console.log(data, "传过来的数据");
|
||||||
|
|
||||||
|
state.isMerchant = data.isMerchant;
|
||||||
|
state.marketList = data.marketList;
|
||||||
|
state.storeList = data.storeList;
|
||||||
|
state.marketId = data.marketId;
|
||||||
|
state.shopId = data.shopId;
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
export default {
|
||||||
|
namespaced: true,
|
||||||
|
state,
|
||||||
|
mutations,
|
||||||
|
actions,
|
||||||
|
};
|
|
@ -87,7 +87,7 @@
|
||||||
}
|
}
|
||||||
let filterMenu=filterMethod(JSON.parse(JSON.stringify(this.menuList)),this.keyWord);
|
let filterMenu=filterMethod(JSON.parse(JSON.stringify(this.menuList)),this.keyWord);
|
||||||
console.log(filterMenu);
|
console.log(filterMenu);
|
||||||
return filterMenu;
|
return filterMenu.filter(item=>item.hideInMenu!=true);
|
||||||
},
|
},
|
||||||
//是否展示菜单搜索界面
|
//是否展示菜单搜索界面
|
||||||
showSearchInput(){
|
showSearchInput(){
|
||||||
|
|
|
@ -0,0 +1,15 @@
|
||||||
|
<template>
|
||||||
|
<div>
|
||||||
|
品牌管理
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
export default {
|
||||||
|
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style>
|
||||||
|
|
||||||
|
</style>
|
|
@ -0,0 +1,15 @@
|
||||||
|
<template>
|
||||||
|
<div>
|
||||||
|
数据面板
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
export default {
|
||||||
|
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style>
|
||||||
|
|
||||||
|
</style>
|
|
@ -0,0 +1,15 @@
|
||||||
|
<template>
|
||||||
|
<div>
|
||||||
|
分销商
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
export default {
|
||||||
|
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style>
|
||||||
|
|
||||||
|
</style>
|
|
@ -0,0 +1,15 @@
|
||||||
|
<template>
|
||||||
|
<div>
|
||||||
|
权限管理
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
export default {
|
||||||
|
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style>
|
||||||
|
|
||||||
|
</style>
|
|
@ -0,0 +1,15 @@
|
||||||
|
<template>
|
||||||
|
<div>
|
||||||
|
市场列表
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
export default {
|
||||||
|
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style>
|
||||||
|
|
||||||
|
</style>
|
|
@ -0,0 +1,15 @@
|
||||||
|
<template>
|
||||||
|
<div>
|
||||||
|
报表
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
export default {
|
||||||
|
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style>
|
||||||
|
|
||||||
|
</style>
|
|
@ -0,0 +1,15 @@
|
||||||
|
<template>
|
||||||
|
<div>
|
||||||
|
店铺列表
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
export default {
|
||||||
|
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style>
|
||||||
|
|
||||||
|
</style>
|
|
@ -133,12 +133,25 @@ export default {
|
||||||
{
|
{
|
||||||
title: "银行卡号",
|
title: "银行卡号",
|
||||||
align: "center",
|
align: "center",
|
||||||
field: "cardId",
|
field: "cardNo",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: "账户类型",
|
||||||
|
align: "center",
|
||||||
|
field: "bankAcctType",
|
||||||
|
type: "jsx",
|
||||||
|
render: ({ row }) => {
|
||||||
|
if (row.bankAcctType == 2) {
|
||||||
|
return <span>对私</span>;
|
||||||
|
} else {
|
||||||
|
return <span>对公</span>;
|
||||||
|
}
|
||||||
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: "手机号",
|
title: "手机号",
|
||||||
align: "center",
|
align: "center",
|
||||||
field: "telNo",
|
field: "legalMp",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: "企业名称",
|
title: "企业名称",
|
||||||
|
@ -160,13 +173,65 @@ export default {
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
title: "默认银行卡",
|
||||||
|
align: "center",
|
||||||
|
field: "status",
|
||||||
|
type: "jsx",
|
||||||
|
render: ({ row }) => {
|
||||||
|
let defaultBank = () => {
|
||||||
|
if (row.default) {
|
||||||
|
this.$confirm("此操作将永久删除该文件, 是否继续?", "提示", {
|
||||||
|
confirmButtonText: "确定",
|
||||||
|
cancelButtonText: "取消",
|
||||||
|
type: "warning",
|
||||||
|
})
|
||||||
|
.then(() => {
|
||||||
|
this.$api.mer_admin
|
||||||
|
.defaultBank({
|
||||||
|
linkId: row.linkId,
|
||||||
|
bankId: row.id,
|
||||||
|
})
|
||||||
|
.then((res) => {
|
||||||
|
this.$refs.oTable.reload();
|
||||||
|
})
|
||||||
|
.catch((err) => {
|
||||||
|
this.$refs.oTable.reload();
|
||||||
|
});
|
||||||
|
})
|
||||||
|
.catch(() => {
|
||||||
|
this.$refs.oTable.reload();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
};
|
||||||
|
return (
|
||||||
|
<el-switch
|
||||||
|
onchange={defaultBank}
|
||||||
|
disabled={row.default}
|
||||||
|
v-model={row.default}
|
||||||
|
active-text="是"
|
||||||
|
inactive-text="否"
|
||||||
|
></el-switch>
|
||||||
|
);
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: "创建时间",
|
||||||
|
align: "center",
|
||||||
|
field: "createTime",
|
||||||
|
},
|
||||||
{
|
{
|
||||||
title: "操作",
|
title: "操作",
|
||||||
fixed: "right",
|
fixed: "right",
|
||||||
type: "jsx",
|
type: "jsx",
|
||||||
align: "center",
|
align: "center",
|
||||||
width: "140px",
|
width: "160px",
|
||||||
render: (row) => {
|
render: (row) => {
|
||||||
|
let deleteBank = () => {
|
||||||
|
this.$api.mer_admin.bankCardDelete(row.row.id).then((res) => {
|
||||||
|
this.$refs.oTable.reload();
|
||||||
|
});
|
||||||
|
};
|
||||||
let edit = () => {
|
let edit = () => {
|
||||||
this.$refs.viewDetails.toggle(row).update();
|
this.$refs.viewDetails.toggle(row).update();
|
||||||
};
|
};
|
||||||
|
@ -175,6 +240,13 @@ export default {
|
||||||
<el-button size="mini" type="primary" onClick={edit}>
|
<el-button size="mini" type="primary" onClick={edit}>
|
||||||
详情
|
详情
|
||||||
</el-button>
|
</el-button>
|
||||||
|
<span style={"margin-left:10px"}>
|
||||||
|
<el-popconfirm onConfirm={deleteBank} title="确定删除吗?">
|
||||||
|
<el-button size="mini" type="danger" slot="reference">
|
||||||
|
删除
|
||||||
|
</el-button>
|
||||||
|
</el-popconfirm>
|
||||||
|
</span>
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
},
|
},
|
||||||
|
|
|
@ -8,8 +8,8 @@
|
||||||
:modalHandles="modalHandles"
|
:modalHandles="modalHandles"
|
||||||
>
|
>
|
||||||
<template slot="dialog__content">
|
<template slot="dialog__content">
|
||||||
<el-form :model="modalData" ref="modalForm">
|
<el-form :rules="rules" :model="modalData" ref="modalForm">
|
||||||
<el-row v-show="process == 1 && modalData.bankAcctType == 1">
|
<el-row v-if="process == 1 && modalData.bankAcctType == 1">
|
||||||
<el-row>
|
<el-row>
|
||||||
<el-col :span="12">
|
<el-col :span="12">
|
||||||
<el-form-item
|
<el-form-item
|
||||||
|
@ -54,31 +54,19 @@
|
||||||
<el-col :span="12">
|
<el-col :span="12">
|
||||||
<el-form-item
|
<el-form-item
|
||||||
label-width="150px"
|
label-width="150px"
|
||||||
label="银行类型:"
|
label="银行卡号:"
|
||||||
prop="bankType"
|
prop="cardNo"
|
||||||
>
|
>
|
||||||
<el-select
|
<el-input
|
||||||
style="width: 300px"
|
style="width: 300px"
|
||||||
v-model="modalData.bankType"
|
v-model="modalData.cardNo"
|
||||||
placeholder="请选择"
|
placeholder="请输入银行卡号"
|
||||||
>
|
>
|
||||||
<el-option
|
</el-input>
|
||||||
v-for="item in [
|
|
||||||
{ label: '摊主银行卡', value: 1 },
|
|
||||||
{ label: '代理银行卡', value: 2 },
|
|
||||||
{ label: '专员银行卡', value: 3 },
|
|
||||||
{ label: '分销银行卡', value: 4 },
|
|
||||||
{ label: '用户银行卡', value: 5 },
|
|
||||||
]"
|
|
||||||
:label="item.label"
|
|
||||||
:value="item.value"
|
|
||||||
:key="item.value"
|
|
||||||
></el-option>
|
|
||||||
</el-select>
|
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="12">
|
<el-col :span="12">
|
||||||
<el-form-item label-width="150px" label="企业名称" prop="cas">
|
<el-form-item label-width="150px" label="企业名称" prop="name">
|
||||||
<el-input
|
<el-input
|
||||||
style="width: 300px"
|
style="width: 300px"
|
||||||
v-model="modalData.name"
|
v-model="modalData.name"
|
||||||
|
@ -93,7 +81,6 @@
|
||||||
<el-form-item label-width="150px" label="省份:" prop="prov">
|
<el-form-item label-width="150px" label="省份:" prop="prov">
|
||||||
<el-select
|
<el-select
|
||||||
style="width: 300px"
|
style="width: 300px"
|
||||||
@change="handleChange"
|
|
||||||
v-model="modalData.prov"
|
v-model="modalData.prov"
|
||||||
placeholder="请选择"
|
placeholder="请选择"
|
||||||
>
|
>
|
||||||
|
@ -105,22 +92,10 @@
|
||||||
>
|
>
|
||||||
</el-option>
|
</el-option>
|
||||||
</el-select>
|
</el-select>
|
||||||
<!-- <el-cascader
|
|
||||||
v-model="productPlace"
|
|
||||||
style="width: 300px"
|
|
||||||
:options="this.$api.mer_admin.getCityOptions()"
|
|
||||||
@change="handleChange"
|
|
||||||
clearable
|
|
||||||
:props="{
|
|
||||||
value: 'name',
|
|
||||||
label: 'name',
|
|
||||||
children: 'children',
|
|
||||||
}"
|
|
||||||
></el-cascader> -->
|
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="12">
|
<el-col :span="12">
|
||||||
<el-form-item label-width="150px" label="地级市:" prop="cas">
|
<el-form-item label-width="150px" label="地级市:" prop="area">
|
||||||
<el-input
|
<el-input
|
||||||
style="width: 300px"
|
style="width: 300px"
|
||||||
v-model="modalData.area"
|
v-model="modalData.area"
|
||||||
|
@ -135,7 +110,7 @@
|
||||||
<el-form-item
|
<el-form-item
|
||||||
label-width="150px"
|
label-width="150px"
|
||||||
label="社会信用码:"
|
label="社会信用码:"
|
||||||
prop="prov"
|
prop="socialCreditCode"
|
||||||
>
|
>
|
||||||
<el-input
|
<el-input
|
||||||
style="width: 300px"
|
style="width: 300px"
|
||||||
|
@ -258,19 +233,38 @@
|
||||||
<el-col :span="12">
|
<el-col :span="12">
|
||||||
<el-form-item
|
<el-form-item
|
||||||
label-width="150px"
|
label-width="150px"
|
||||||
label="银行代码:"
|
label="银行:"
|
||||||
prop="bankCode"
|
prop="bankCode"
|
||||||
|
:validate-on-rule-change="false"
|
||||||
>
|
>
|
||||||
<el-input
|
<el-select
|
||||||
style="width: 300px"
|
style="width: 300px"
|
||||||
v-model="modalData.bankCode"
|
v-model="modalData.bankCode"
|
||||||
placeholder="请输入银行代码"
|
placeholder="请输入银行卡类型"
|
||||||
>
|
>
|
||||||
</el-input>
|
<el-option
|
||||||
|
v-for="item in bankOptions"
|
||||||
|
:label="item.label"
|
||||||
|
:value="item.value"
|
||||||
|
:key="item.value"
|
||||||
|
></el-option>
|
||||||
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="12">
|
<el-col :span="12">
|
||||||
<el-form-item
|
<el-form-item
|
||||||
|
label-width="150px"
|
||||||
|
label="营业执照号:"
|
||||||
|
prop="licenseNumber"
|
||||||
|
>
|
||||||
|
<el-input
|
||||||
|
style="width: 300px"
|
||||||
|
v-model="modalData.licenseNumber"
|
||||||
|
placeholder="请输入营业执照号"
|
||||||
|
>
|
||||||
|
</el-input>
|
||||||
|
</el-form-item>
|
||||||
|
<!-- <el-form-item
|
||||||
label-width="150px"
|
label-width="150px"
|
||||||
label="银行卡号:"
|
label="银行卡号:"
|
||||||
prop="cardNo"
|
prop="cardNo"
|
||||||
|
@ -281,10 +275,10 @@
|
||||||
placeholder="请输入银行卡号"
|
placeholder="请输入银行卡号"
|
||||||
>
|
>
|
||||||
</el-input>
|
</el-input>
|
||||||
</el-form-item>
|
</el-form-item> -->
|
||||||
</el-col>
|
</el-col>
|
||||||
</el-row>
|
</el-row>
|
||||||
<el-row>
|
<!-- <el-row>
|
||||||
<el-col :span="24">
|
<el-col :span="24">
|
||||||
<el-form-item
|
<el-form-item
|
||||||
label-width="150px"
|
label-width="150px"
|
||||||
|
@ -299,9 +293,9 @@
|
||||||
</el-input>
|
</el-input>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
|
</el-row> -->
|
||||||
</el-row>
|
</el-row>
|
||||||
</el-row>
|
<el-row v-if="process == 2 && modalData.bankAcctType == 1">
|
||||||
<el-row v-show="process == 2 && modalData.bankAcctType == 1">
|
|
||||||
<el-row>
|
<el-row>
|
||||||
<el-col :span="12">
|
<el-col :span="12">
|
||||||
<el-form-item
|
<el-form-item
|
||||||
|
@ -325,7 +319,7 @@
|
||||||
<el-form-item
|
<el-form-item
|
||||||
label-width="150px"
|
label-width="150px"
|
||||||
label="法人身份证正面国徽:"
|
label="法人身份证正面国徽:"
|
||||||
prop="bankAcctType"
|
prop="idCardFront"
|
||||||
>
|
>
|
||||||
<el-upload
|
<el-upload
|
||||||
class="upload-demo"
|
class="upload-demo"
|
||||||
|
@ -345,7 +339,7 @@
|
||||||
<el-form-item
|
<el-form-item
|
||||||
label-width="150px"
|
label-width="150px"
|
||||||
label="法人身份证背面人像:"
|
label="法人身份证背面人像:"
|
||||||
prop="licensePicture"
|
prop="idCardBack"
|
||||||
>
|
>
|
||||||
<el-upload
|
<el-upload
|
||||||
class="upload-demo"
|
class="upload-demo"
|
||||||
|
@ -363,7 +357,7 @@
|
||||||
<el-form-item
|
<el-form-item
|
||||||
label-width="150px"
|
label-width="150px"
|
||||||
label="开户银行许可证照:"
|
label="开户银行许可证照:"
|
||||||
prop="bankAcctType"
|
prop="bankLicense"
|
||||||
>
|
>
|
||||||
<el-upload
|
<el-upload
|
||||||
class="upload-demo"
|
class="upload-demo"
|
||||||
|
@ -383,7 +377,6 @@
|
||||||
<el-form-item
|
<el-form-item
|
||||||
label-width="150px"
|
label-width="150px"
|
||||||
label="手持身份证正面国徽(选传):"
|
label="手持身份证正面国徽(选传):"
|
||||||
prop="licensePicture"
|
|
||||||
>
|
>
|
||||||
<el-upload
|
<el-upload
|
||||||
class="upload-demo"
|
class="upload-demo"
|
||||||
|
@ -401,7 +394,6 @@
|
||||||
<el-form-item
|
<el-form-item
|
||||||
label-width="150px"
|
label-width="150px"
|
||||||
label="手持身份证背面人像(选传):"
|
label="手持身份证背面人像(选传):"
|
||||||
prop="bankAcctType"
|
|
||||||
>
|
>
|
||||||
<el-upload
|
<el-upload
|
||||||
class="upload-demo"
|
class="upload-demo"
|
||||||
|
@ -417,7 +409,7 @@
|
||||||
</el-col>
|
</el-col>
|
||||||
</el-row>
|
</el-row>
|
||||||
</el-row>
|
</el-row>
|
||||||
<el-row v-show="modalData.bankAcctType == 2">
|
<el-row v-if="modalData.bankAcctType == 2">
|
||||||
<el-row>
|
<el-row>
|
||||||
<el-col :span="12">
|
<el-col :span="12">
|
||||||
<el-form-item
|
<el-form-item
|
||||||
|
@ -461,6 +453,18 @@
|
||||||
<el-row>
|
<el-row>
|
||||||
<el-col :span="12">
|
<el-col :span="12">
|
||||||
<el-form-item
|
<el-form-item
|
||||||
|
label-width="150px"
|
||||||
|
label="银行卡号:"
|
||||||
|
prop="cardId"
|
||||||
|
>
|
||||||
|
<el-input
|
||||||
|
style="width: 300px"
|
||||||
|
v-model="modalData.cardId"
|
||||||
|
placeholder="请输入银行卡号"
|
||||||
|
>
|
||||||
|
</el-input>
|
||||||
|
</el-form-item>
|
||||||
|
<!-- <el-form-item
|
||||||
label-width="150px"
|
label-width="150px"
|
||||||
label="银行类型:"
|
label="银行类型:"
|
||||||
prop="bankType"
|
prop="bankType"
|
||||||
|
@ -483,7 +487,7 @@
|
||||||
:key="item.value"
|
:key="item.value"
|
||||||
></el-option>
|
></el-option>
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item> -->
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="12">
|
<el-col :span="12">
|
||||||
<el-form-item
|
<el-form-item
|
||||||
|
@ -512,7 +516,7 @@
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="12">
|
<el-col :span="12">
|
||||||
<el-form-item
|
<!-- <el-form-item
|
||||||
label-width="150px"
|
label-width="150px"
|
||||||
label="银行卡号:"
|
label="银行卡号:"
|
||||||
prop="cardId"
|
prop="cardId"
|
||||||
|
@ -523,16 +527,12 @@
|
||||||
placeholder="请输入银行卡号"
|
placeholder="请输入银行卡号"
|
||||||
>
|
>
|
||||||
</el-input>
|
</el-input>
|
||||||
</el-form-item>
|
</el-form-item> -->
|
||||||
</el-col>
|
</el-col>
|
||||||
</el-row>
|
</el-row>
|
||||||
<el-row>
|
<el-row>
|
||||||
<el-col :span="12">
|
<el-col :span="12">
|
||||||
<el-form-item
|
<el-form-item label-width="150px" label="法人身份证正面国徽:">
|
||||||
label-width="150px"
|
|
||||||
label="法人身份证正面国徽:"
|
|
||||||
prop="bankAcctType"
|
|
||||||
>
|
|
||||||
<el-upload
|
<el-upload
|
||||||
class="upload-demo"
|
class="upload-demo"
|
||||||
:action="this.$api.mer_admin.uploadFile()"
|
:action="this.$api.mer_admin.uploadFile()"
|
||||||
|
@ -546,11 +546,7 @@
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="12">
|
<el-col :span="12">
|
||||||
<el-form-item
|
<el-form-item label-width="150px" label="法人身份证背面人像:">
|
||||||
label-width="150px"
|
|
||||||
label="法人身份证背面人像:"
|
|
||||||
prop="licensePicture"
|
|
||||||
>
|
|
||||||
<el-upload
|
<el-upload
|
||||||
class="upload-demo"
|
class="upload-demo"
|
||||||
:action="this.$api.mer_admin.uploadFile()"
|
:action="this.$api.mer_admin.uploadFile()"
|
||||||
|
@ -590,8 +586,225 @@ export default {
|
||||||
productPlace: "", //地区
|
productPlace: "", //地区
|
||||||
fileList: [],
|
fileList: [],
|
||||||
process: 1,
|
process: 1,
|
||||||
|
bankOptions: [
|
||||||
|
{ label: "工商银行", value: "01020000" },
|
||||||
|
{ label: "农业银行", value: "01030000" },
|
||||||
|
{ label: "中国银行", value: "01040000" },
|
||||||
|
{ label: "建设银行", value: "01050000" },
|
||||||
|
{ label: "交通银行", value: "03010000" },
|
||||||
|
{ label: "平安银行", value: "03134402" },
|
||||||
|
{ label: "中信银行", value: "03020000" },
|
||||||
|
{ label: "光大银行", value: "03030000" },
|
||||||
|
{ label: "华夏银行", value: "03040000" },
|
||||||
|
{ label: "民生银行", value: "03050000" },
|
||||||
|
{ label: "广发银行", value: "03060000" },
|
||||||
|
{ label: "招商银行", value: "03080000" },
|
||||||
|
{ label: "兴业银行", value: "03090000" },
|
||||||
|
{ label: "浦发银行", value: "03100000" },
|
||||||
|
{ label: "北京银行", value: "03130011" },
|
||||||
|
{ label: "天津银行", value: "03130012" },
|
||||||
|
{ label: "上海银行", value: "03130031" },
|
||||||
|
{ label: "江苏银行", value: "03130032" },
|
||||||
|
{ label: "重庆银行", value: "03130050" },
|
||||||
|
{ label: "大连银行", value: "03132102" },
|
||||||
|
{ label: "哈尔滨银行", value: "03132301" },
|
||||||
|
{ label: "南京银行", value: "03133201" },
|
||||||
|
{ label: "杭州银行", value: "03133301" },
|
||||||
|
{ label: "宁波银行", value: "03133302" },
|
||||||
|
{ label: "温州银行", value: "03133308" },
|
||||||
|
{ label: "恒丰银行", value: "03150000" },
|
||||||
|
{ label: "浙商银行", value: "03160000" },
|
||||||
|
],
|
||||||
|
rules: {
|
||||||
|
cardName: [
|
||||||
|
{ required: true, message: "请输入银行卡对应户名", trigger: "blur" },
|
||||||
|
],
|
||||||
|
//公卡
|
||||||
|
cardNo: [
|
||||||
|
{ required: true, message: "请输入银行卡号", trigger: "blur" },
|
||||||
|
{
|
||||||
|
validator: function (rule, value, callback) {
|
||||||
|
const strBin =
|
||||||
|
"10,18,30,35,37,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,58,60,62,65,68,69,84,87,88,94,95,98,99";
|
||||||
|
if (!value) {
|
||||||
|
return callback(new Error("请输入银行卡号"));
|
||||||
|
} else if (!Number.isInteger(+value)) {
|
||||||
|
callback(new Error("银行卡号必须全为数字"));
|
||||||
|
} else if (value.trim().length < 12 || value.trim().length > 19) {
|
||||||
|
callback(new Error("银行卡号长度必须在12到19之间"));
|
||||||
|
} else if (strBin.indexOf(value.substring(0, 2)) === -1) {
|
||||||
|
callback(new Error("银行卡号开头6位不符合规范"));
|
||||||
|
} else {
|
||||||
|
callback();
|
||||||
|
}
|
||||||
|
},
|
||||||
|
trigger: "blur",
|
||||||
|
},
|
||||||
|
],
|
||||||
|
//私卡
|
||||||
|
cardId: [
|
||||||
|
{ required: true, message: "请输入银行卡号", trigger: "blur" },
|
||||||
|
{
|
||||||
|
validator: function (rule, value, callback) {
|
||||||
|
const strBin =
|
||||||
|
"10,18,30,35,37,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,58,60,62,65,68,69,84,87,88,94,95,98,99";
|
||||||
|
if (!value) {
|
||||||
|
return callback(new Error("请输入银行卡号"));
|
||||||
|
} else if (!Number.isInteger(+value)) {
|
||||||
|
callback(new Error("银行卡号必须全为数字"));
|
||||||
|
} else if (value.trim().length < 12 || value.trim().length > 19) {
|
||||||
|
callback(new Error("银行卡号长度必须在12到19之间"));
|
||||||
|
} else if (strBin.indexOf(value.substring(0, 2)) === -1) {
|
||||||
|
callback(new Error("银行卡号开头6位不符合规范"));
|
||||||
|
} else {
|
||||||
|
callback();
|
||||||
|
}
|
||||||
|
},
|
||||||
|
trigger: "blur",
|
||||||
|
},
|
||||||
|
],
|
||||||
|
certId: [
|
||||||
|
{ required: true, message: "请输入身份证号", trigger: "blur" },
|
||||||
|
{
|
||||||
|
validator: function (rule, value, callback) {
|
||||||
|
const pattern =
|
||||||
|
/^\d{6}((((((19|20)\d{2})(0[13-9]|1[012])(0[1-9]|[12]\d|30))|(((19|20)\d{2})(0[13578]|1[02])31)|((19|20)\d{2})02(0[1-9]|1\d|2[0-8])|((((19|20)([13579][26]|[2468][048]|0[48]))|(2000))0229))\d{3})|((((\d{2})(0[13-9]|1[012])(0[1-9]|[12]\d|30))|((\d{2})(0[13578]|1[02])31)|((\d{2})02(0[1-9]|1\d|2[0-8]))|(([13579][26]|[2468][048]|0[048])0229))\d{2}))(\d|X|x)$/;
|
||||||
|
if (pattern.test(value)) {
|
||||||
|
callback();
|
||||||
|
} else {
|
||||||
|
callback(new Error("身份证格式错误"));
|
||||||
|
}
|
||||||
|
},
|
||||||
|
trigger: "blur",
|
||||||
|
},
|
||||||
|
],
|
||||||
|
telNo: [
|
||||||
|
{
|
||||||
|
required: true,
|
||||||
|
message: "请输入手机号",
|
||||||
|
trigger: "blur",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
validator: function (rule, value, callback) {
|
||||||
|
if (/^1[3456789]\d{9}$/.test(value) == false) {
|
||||||
|
callback(new Error("请输入正确的手机号"));
|
||||||
|
} else {
|
||||||
|
callback();
|
||||||
|
}
|
||||||
|
},
|
||||||
|
trigger: "blur",
|
||||||
|
},
|
||||||
|
],
|
||||||
|
socialCreditCode: [
|
||||||
|
{
|
||||||
|
required: true,
|
||||||
|
message: "请输入统一社会信用码",
|
||||||
|
trigger: ["blur", "change"],
|
||||||
|
},
|
||||||
|
],
|
||||||
|
socialCreditCodeExpires: [
|
||||||
|
{
|
||||||
|
required: true,
|
||||||
|
message: "请输入统一社会信用码有效期",
|
||||||
|
trigger: ["blur", "change"],
|
||||||
|
},
|
||||||
|
],
|
||||||
|
name: [{ required: true, message: "请输入企业名称", trigger: "blur" }],
|
||||||
|
prov: [
|
||||||
|
{
|
||||||
|
required: true,
|
||||||
|
message: "请选择省份",
|
||||||
|
trigger: ["blur", "change"],
|
||||||
|
},
|
||||||
|
],
|
||||||
|
area: [{ required: true, message: "请输入地级市", trigger: "blur" }],
|
||||||
|
businessScope: [
|
||||||
|
{ required: true, message: "请输入经营范围", trigger: "blur" },
|
||||||
|
],
|
||||||
|
legalPerson: [
|
||||||
|
{ required: true, message: "请输入法人姓名", trigger: "blur" },
|
||||||
|
],
|
||||||
|
legalCertId: [
|
||||||
|
{ required: true, message: "请输入法人身份证号", trigger: "blur" },
|
||||||
|
{
|
||||||
|
validator: function (rule, value, callback) {
|
||||||
|
const pattern =
|
||||||
|
/^\d{6}((((((19|20)\d{2})(0[13-9]|1[012])(0[1-9]|[12]\d|30))|(((19|20)\d{2})(0[13578]|1[02])31)|((19|20)\d{2})02(0[1-9]|1\d|2[0-8])|((((19|20)([13579][26]|[2468][048]|0[48]))|(2000))0229))\d{3})|((((\d{2})(0[13-9]|1[012])(0[1-9]|[12]\d|30))|((\d{2})(0[13578]|1[02])31)|((\d{2})02(0[1-9]|1\d|2[0-8]))|(([13579][26]|[2468][048]|0[048])0229))\d{2}))(\d|X|x)$/;
|
||||||
|
if (pattern.test(value)) {
|
||||||
|
callback();
|
||||||
|
} else {
|
||||||
|
callback(new Error("身份证格式错误"));
|
||||||
|
}
|
||||||
|
},
|
||||||
|
trigger: "blur",
|
||||||
|
},
|
||||||
|
],
|
||||||
|
legalCertIdExpires: [
|
||||||
|
{
|
||||||
|
required: true,
|
||||||
|
message: "请输入法人身份证有效期",
|
||||||
|
trigger: "change",
|
||||||
|
},
|
||||||
|
],
|
||||||
|
legalMp: [
|
||||||
|
{
|
||||||
|
required: true,
|
||||||
|
message: "请输入法人手机号",
|
||||||
|
trigger: "blur",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
validator: function (rule, value, callback) {
|
||||||
|
if (/^1[3456789]\d{9}$/.test(value) == false) {
|
||||||
|
callback(new Error("请输入正确的手机号"));
|
||||||
|
} else {
|
||||||
|
callback();
|
||||||
|
}
|
||||||
|
},
|
||||||
|
trigger: "blur",
|
||||||
|
},
|
||||||
|
],
|
||||||
|
address: [
|
||||||
|
{ required: true, message: "请输入详细企业地址", trigger: "blur" },
|
||||||
|
],
|
||||||
|
bankCode: [
|
||||||
|
{
|
||||||
|
required: true,
|
||||||
|
message: "请输入银行名称",
|
||||||
|
trigger: "change",
|
||||||
|
},
|
||||||
|
],
|
||||||
|
licenseNumber: [
|
||||||
|
{ required: true, message: "请输入营业执照号", trigger: "blur" },
|
||||||
|
],
|
||||||
|
licensePicture: [
|
||||||
|
{ required: true, message: "请输入营业执照", trigger: "blur" },
|
||||||
|
],
|
||||||
|
bankLicense: [
|
||||||
|
{
|
||||||
|
required: true,
|
||||||
|
message: "请上传开户银行许可证照",
|
||||||
|
trigger: "blur",
|
||||||
|
},
|
||||||
|
],
|
||||||
|
idCardFront: [
|
||||||
|
{ required: true, message: "请上传身份证正面", trigger: "blur" },
|
||||||
|
],
|
||||||
|
idCardBack: [
|
||||||
|
{ required: true, message: "请上传身份证反面", trigger: "blur" },
|
||||||
|
],
|
||||||
|
},
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
|
watch: {
|
||||||
|
"modalConfig.show"(newVal) {
|
||||||
|
if (!newVal) {
|
||||||
|
//关闭弹窗清空校验
|
||||||
|
setTimeout(() => {
|
||||||
|
this.$refs.modalForm?.resetFields();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
},
|
||||||
|
},
|
||||||
methods: {
|
methods: {
|
||||||
queryTableData(pageNo, pageSize) {},
|
queryTableData(pageNo, pageSize) {},
|
||||||
toggle(e) {
|
toggle(e) {
|
||||||
|
@ -614,7 +827,6 @@ export default {
|
||||||
linkId: JSON.parse(sessionStorage.getItem("userInfo")).managerId
|
linkId: JSON.parse(sessionStorage.getItem("userInfo")).managerId
|
||||||
? JSON.parse(sessionStorage.getItem("userInfo")).managerId
|
? JSON.parse(sessionStorage.getItem("userInfo")).managerId
|
||||||
: JSON.parse(sessionStorage.getItem("userInfo")).merchantId,
|
: JSON.parse(sessionStorage.getItem("userInfo")).merchantId,
|
||||||
bankType: "",
|
|
||||||
name: "",
|
name: "",
|
||||||
prov: "",
|
prov: "",
|
||||||
area: "",
|
area: "",
|
||||||
|
@ -638,7 +850,7 @@ export default {
|
||||||
bankAcctType: 1,
|
bankAcctType: 1,
|
||||||
licenseNumber: "",
|
licenseNumber: "",
|
||||||
};
|
};
|
||||||
this.$refs.modal.resetFields();
|
this.$refs.modalForm?.resetFields();
|
||||||
});
|
});
|
||||||
this.isAdd = true;
|
this.isAdd = true;
|
||||||
},
|
},
|
||||||
|
@ -648,24 +860,25 @@ export default {
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
init(row) {},
|
init(row) {},
|
||||||
handleChange(e) {
|
|
||||||
this.modalData.prov = e.join("-");
|
|
||||||
},
|
|
||||||
handleAvatarSuccess(res) {
|
handleAvatarSuccess(res) {
|
||||||
console.log(res);
|
console.log(res);
|
||||||
this.modalData.licensePicture = res.data;
|
this.modalData.licensePicture = res.data;
|
||||||
|
this.$refs.modalForm.validate();
|
||||||
},
|
},
|
||||||
idCardFrontImg(res) {
|
idCardFrontImg(res) {
|
||||||
console.log(res);
|
console.log(res);
|
||||||
this.modalData.idCardFront = res.data;
|
this.modalData.idCardFront = res.data;
|
||||||
|
this.$refs.modalForm.validate();
|
||||||
},
|
},
|
||||||
idCardBackImg(res) {
|
idCardBackImg(res) {
|
||||||
console.log(res);
|
console.log(res);
|
||||||
this.modalData.idCardBack = res.data;
|
this.modalData.idCardBack = res.data;
|
||||||
|
this.$refs.modalForm.validate();
|
||||||
},
|
},
|
||||||
bankLicenseImg(res) {
|
bankLicenseImg(res) {
|
||||||
console.log(res);
|
console.log(res);
|
||||||
this.modalData.bankLicense = res.data;
|
this.modalData.bankLicense = res.data;
|
||||||
|
this.$refs.modalForm.validate();
|
||||||
},
|
},
|
||||||
handIdCardFrontImg(res) {
|
handIdCardFrontImg(res) {
|
||||||
console.log(res);
|
console.log(res);
|
||||||
|
@ -681,7 +894,6 @@ export default {
|
||||||
linkId: JSON.parse(sessionStorage.getItem("userInfo")).managerId
|
linkId: JSON.parse(sessionStorage.getItem("userInfo")).managerId
|
||||||
? JSON.parse(sessionStorage.getItem("userInfo")).managerId
|
? JSON.parse(sessionStorage.getItem("userInfo")).managerId
|
||||||
: JSON.parse(sessionStorage.getItem("userInfo")).merchantId,
|
: JSON.parse(sessionStorage.getItem("userInfo")).merchantId,
|
||||||
bankType: "",
|
|
||||||
name: "",
|
name: "",
|
||||||
prov: "",
|
prov: "",
|
||||||
area: "",
|
area: "",
|
||||||
|
@ -711,7 +923,6 @@ export default {
|
||||||
linkId: JSON.parse(sessionStorage.getItem("userInfo")).managerId
|
linkId: JSON.parse(sessionStorage.getItem("userInfo")).managerId
|
||||||
? JSON.parse(sessionStorage.getItem("userInfo")).managerId
|
? JSON.parse(sessionStorage.getItem("userInfo")).managerId
|
||||||
: JSON.parse(sessionStorage.getItem("userInfo")).merchantId,
|
: JSON.parse(sessionStorage.getItem("userInfo")).merchantId,
|
||||||
bankType: "",
|
|
||||||
cardId: "",
|
cardId: "",
|
||||||
cardName: "",
|
cardName: "",
|
||||||
certId: "",
|
certId: "",
|
||||||
|
@ -720,6 +931,7 @@ export default {
|
||||||
idCardBack: "",
|
idCardBack: "",
|
||||||
bankAcctType: 2,
|
bankAcctType: 2,
|
||||||
};
|
};
|
||||||
|
this.$refs.modalForm?.resetFields();
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
@ -746,16 +958,24 @@ export default {
|
||||||
label: this.process == 1 ? "下一步" : "确认添加",
|
label: this.process == 1 ? "下一步" : "确认添加",
|
||||||
type: "primary",
|
type: "primary",
|
||||||
handle: () => {
|
handle: () => {
|
||||||
|
console.log(this.modalData);
|
||||||
|
|
||||||
|
this.$refs.modalForm.validate((valid) => {
|
||||||
|
if (valid) {
|
||||||
if (this.process == 1) {
|
if (this.process == 1) {
|
||||||
this.process = 2;
|
this.process = 2;
|
||||||
} else {
|
} else {
|
||||||
console.log(this.modalData);
|
console.log(this.modalData);
|
||||||
this.$api.mer_admin.bankCardAdd(this.modalData).then((res) => {
|
this.$api.mer_admin
|
||||||
|
.publicAccountBankCardAdd(this.modalData)
|
||||||
|
.then((res) => {
|
||||||
console.log(res);
|
console.log(res);
|
||||||
this.$emit("queryList");
|
this.$emit("queryList");
|
||||||
this.toggle();
|
this.toggle();
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
];
|
];
|
||||||
|
@ -772,11 +992,17 @@ export default {
|
||||||
type: "primary",
|
type: "primary",
|
||||||
handle: () => {
|
handle: () => {
|
||||||
console.log(this.modalData);
|
console.log(this.modalData);
|
||||||
this.$api.mer_admin.bankCardAdd(this.modalData).then((res) => {
|
this.$refs.modalForm.validate((valid) => {
|
||||||
|
if (valid) {
|
||||||
|
this.$api.mer_admin
|
||||||
|
.bankCardAdd(this.modalData)
|
||||||
|
.then((res) => {
|
||||||
console.log(res);
|
console.log(res);
|
||||||
this.$emit("queryList");
|
this.$emit("queryList");
|
||||||
this.toggle();
|
this.toggle();
|
||||||
});
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
];
|
];
|
||||||
|
|
|
@ -35,7 +35,7 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="info-item">
|
<div class="info-item">
|
||||||
品牌首页: {{ list.homepageStatus == 0 ? "禁用" : "启用" }}
|
品牌首页: {{ list.homepageStatus == 1 ? "启用" : "禁用" }}
|
||||||
</div>
|
</div>
|
||||||
<div class="info-item">宣传语: {{ list.tagline }}</div>
|
<div class="info-item">宣传语: {{ list.tagline }}</div>
|
||||||
<div class="info-item" style="display: flex">
|
<div class="info-item" style="display: flex">
|
||||||
|
@ -46,7 +46,6 @@
|
||||||
width="200px"
|
width="200px"
|
||||||
height="100px"
|
height="100px"
|
||||||
object-fit="fill"
|
object-fit="fill"
|
||||||
autoplay="true"
|
|
||||||
muted="muted"
|
muted="muted"
|
||||||
loop
|
loop
|
||||||
controls
|
controls
|
||||||
|
@ -62,8 +61,8 @@
|
||||||
</div>
|
</div>
|
||||||
<div class="info-content">
|
<div class="info-content">
|
||||||
<div class="info-item">
|
<div class="info-item">
|
||||||
管理员账号:{{ list.administrator.substr(0, 3) }}****{{
|
管理员账号:{{ list.administrator?.substr(0, 3) }}****{{
|
||||||
list.administrator.substr(7)
|
list.administrator?.substr(7)
|
||||||
}}
|
}}
|
||||||
<span @click="passwordUpdate(true)" class="brandInfo-update">修改</span>
|
<span @click="passwordUpdate(true)" class="brandInfo-update">修改</span>
|
||||||
</div>
|
</div>
|
||||||
|
@ -89,20 +88,23 @@
|
||||||
<div class="info-content">
|
<div class="info-content">
|
||||||
<div class="info-item">
|
<div class="info-item">
|
||||||
品牌分销推广:
|
品牌分销推广:
|
||||||
<span @click="infoUpdate" class="brandInfo-update">配置</span>
|
<span @click="getConfig" class="brandInfo-update">配置</span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<!-- 编辑品牌信息 -->
|
<!-- 编辑品牌信息 -->
|
||||||
<addOrUpdate ref="addOrUpdate"></addOrUpdate>
|
<addOrUpdate @getList="getList" ref="addOrUpdate"></addOrUpdate>
|
||||||
<!-- 修改密码 -->
|
<!-- 修改密码 -->
|
||||||
<changePassword ref="changePassword"></changePassword>
|
<changePassword ref="changePassword"></changePassword>
|
||||||
|
<!-- 配置 -->
|
||||||
|
<toConfigure @getList="getList" ref="toConfigure"></toConfigure>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
<script>
|
<script>
|
||||||
|
import toConfigure from "./popup/to-configure.vue";
|
||||||
import changePassword from "./popup/change-password.vue";
|
import changePassword from "./popup/change-password.vue";
|
||||||
import addOrUpdate from "./popup/add-or-update.vue";
|
import addOrUpdate from "./popup/add-or-update.vue";
|
||||||
export default {
|
export default {
|
||||||
components: { addOrUpdate, changePassword },
|
components: { addOrUpdate, changePassword, toConfigure },
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
list: [],
|
list: [],
|
||||||
|
@ -125,16 +127,12 @@ export default {
|
||||||
console.log("123");
|
console.log("123");
|
||||||
},
|
},
|
||||||
passwordUpdate(state) {
|
passwordUpdate(state) {
|
||||||
console.log("123");
|
this.$refs.changePassword.init(state);
|
||||||
if (state) {
|
},
|
||||||
|
getConfig() {
|
||||||
this.$nextTick(() => {
|
this.$nextTick(() => {
|
||||||
this.$refs.changePassword.toggle().add();
|
this.$refs.toConfigure.init(this.list);
|
||||||
});
|
});
|
||||||
} else {
|
|
||||||
this.$nextTick(() => {
|
|
||||||
this.$refs.changePassword.toggle().update();
|
|
||||||
});
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
|
@ -49,7 +49,11 @@ export default {
|
||||||
});
|
});
|
||||||
this.isAdd = true;
|
this.isAdd = true;
|
||||||
},
|
},
|
||||||
update: () => {
|
update: (row) => {
|
||||||
|
this.fileList = []
|
||||||
|
this.modalData = JSON.parse(JSON.stringify(row));
|
||||||
|
console.log(row);
|
||||||
|
|
||||||
this.isAdd = false;
|
this.isAdd = false;
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
@ -61,36 +65,38 @@ export default {
|
||||||
return [
|
return [
|
||||||
{
|
{
|
||||||
label: "品牌名称",
|
label: "品牌名称",
|
||||||
prop: "discount",
|
prop: "name",
|
||||||
type: "Input",
|
type: "Input",
|
||||||
width: "300px",
|
width: "300px",
|
||||||
rules: { required: true, message: "请输入品牌名称" },
|
rules: { required: true, message: "请输入品牌名称" },
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
label: "品牌ID",
|
label: "品牌ID",
|
||||||
prop: "limitCount",
|
prop: "id",
|
||||||
type: "Input",
|
type: "Input",
|
||||||
|
disabled: true,
|
||||||
width: "300px",
|
width: "300px",
|
||||||
rules: { required: true, message: "请输入品牌ID" },
|
rules: { required: true, message: "请输入品牌ID" },
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
label: "品牌LOGO",
|
label: "品牌LOGO",
|
||||||
prop: "DiscountTi",
|
prop: "logo",
|
||||||
type: "Input",
|
type: "Input",
|
||||||
width: "300px",
|
width: "300px",
|
||||||
rules: { required: true, message: "请上传品牌LOGO" },
|
|
||||||
type: "jsx",
|
type: "jsx",
|
||||||
render: () => {
|
render: () => {
|
||||||
const handleChange = (file, fileList) => {
|
const handleChange = (file, fileList) => {
|
||||||
// console.log(fileList);
|
// console.log(fileList);
|
||||||
};
|
};
|
||||||
const handleAvatarSuccess = (res, file, fileList) => {
|
const handleAvatarSuccess = (res, file, fileList) => {
|
||||||
|
this.modalData.logo = res.data;
|
||||||
console.log(res, fileList);
|
console.log(res, fileList);
|
||||||
};
|
};
|
||||||
const handleRemove = (file, fileList) => {
|
const handleRemove = (file, fileList) => {
|
||||||
console.log(file, fileList);
|
console.log(file, fileList);
|
||||||
};
|
};
|
||||||
return (
|
return (
|
||||||
|
<div style="display: flex;">
|
||||||
<el-upload
|
<el-upload
|
||||||
class="upload-demo"
|
class="upload-demo"
|
||||||
action={this.$api.mer_admin.uploadFile()}
|
action={this.$api.mer_admin.uploadFile()}
|
||||||
|
@ -106,7 +112,7 @@ export default {
|
||||||
}}
|
}}
|
||||||
multiple={true}
|
multiple={true}
|
||||||
file-list={this.fileList}
|
file-list={this.fileList}
|
||||||
list-type="picture"
|
// list-type="picture"
|
||||||
>
|
>
|
||||||
<el-button size="small" type="primary">
|
<el-button size="small" type="primary">
|
||||||
<i class="el-icon-upload"></i>点击上传
|
<i class="el-icon-upload"></i>点击上传
|
||||||
|
@ -115,20 +121,29 @@ export default {
|
||||||
只能上传jpg/png文件,且不超过500kb
|
只能上传jpg/png文件,且不超过500kb
|
||||||
</div>
|
</div>
|
||||||
</el-upload>
|
</el-upload>
|
||||||
|
<div style="margin-left:20px">
|
||||||
|
<el-image
|
||||||
|
style="width: 100px; height: 100px"
|
||||||
|
src={this.modalData.logo}
|
||||||
|
preview-src-list={[this.modalData.logo]}
|
||||||
|
></el-image>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
);
|
);
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
label: "品牌首页:",
|
label: "品牌首页:",
|
||||||
prop: "limitCoun",
|
prop: "status",
|
||||||
type: "Input",
|
type: "Input",
|
||||||
width: "300px",
|
width: "300px",
|
||||||
rules: { required: true, message: "请输入品牌ID" },
|
|
||||||
type: "jsx",
|
type: "jsx",
|
||||||
render: () => {
|
render: () => {
|
||||||
return (
|
return (
|
||||||
<el-switch
|
<el-switch
|
||||||
v-model={this.value1}
|
active-value="1"
|
||||||
|
inactive-value="0"
|
||||||
|
v-model={this.modalData.homepageStatus}
|
||||||
active-text="开启"
|
active-text="开启"
|
||||||
inactive-text="禁用"
|
inactive-text="禁用"
|
||||||
></el-switch>
|
></el-switch>
|
||||||
|
@ -137,29 +152,28 @@ export default {
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
label: "宣传语",
|
label: "宣传语",
|
||||||
prop: "limitCot",
|
prop: "tagline",
|
||||||
type: "Input",
|
type: "Input",
|
||||||
width: "300px",
|
width: "300px",
|
||||||
rules: { required: true, message: "请输入宣传语" },
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
label: "首页背景",
|
label: "首页背景",
|
||||||
prop: "DiscountTime",
|
prop: "background",
|
||||||
type: "Input",
|
type: "Input",
|
||||||
width: "300px",
|
width: "300px",
|
||||||
rules: { required: true, message: "请上传背景图" },
|
|
||||||
type: "jsx",
|
type: "jsx",
|
||||||
render: () => {
|
render: () => {
|
||||||
const handleChange = (file, fileList) => {
|
const handleChange = (file, fileList) => {
|
||||||
// console.log(fileList);
|
// console.log(fileList);
|
||||||
};
|
};
|
||||||
const handleAvatarSuccess = (res, file, fileList) => {
|
const handleAvatarSuccess = (res, file, fileList) => {
|
||||||
console.log(res, fileList);
|
this.modalData.background = res.data;
|
||||||
};
|
};
|
||||||
const handleRemove = (file, fileList) => {
|
const handleRemove = (file, fileList) => {
|
||||||
console.log(file, fileList);
|
console.log(file, fileList);
|
||||||
};
|
};
|
||||||
return (
|
return (
|
||||||
|
<div style="display: flex;">
|
||||||
<el-upload
|
<el-upload
|
||||||
class="upload-demo"
|
class="upload-demo"
|
||||||
action={this.$api.mer_admin.uploadFile()}
|
action={this.$api.mer_admin.uploadFile()}
|
||||||
|
@ -175,7 +189,7 @@ export default {
|
||||||
}}
|
}}
|
||||||
multiple={true}
|
multiple={true}
|
||||||
file-list={this.fileList}
|
file-list={this.fileList}
|
||||||
list-type="picture"
|
// list-type="picture"
|
||||||
>
|
>
|
||||||
<el-button size="small" type="primary">
|
<el-button size="small" type="primary">
|
||||||
<i class="el-icon-upload"></i>点击上传
|
<i class="el-icon-upload"></i>点击上传
|
||||||
|
@ -184,27 +198,36 @@ export default {
|
||||||
只能上传jpg/png文件,且不超过500kb
|
只能上传jpg/png文件,且不超过500kb
|
||||||
</div>
|
</div>
|
||||||
</el-upload>
|
</el-upload>
|
||||||
|
<div style="margin-left:20px">
|
||||||
|
<el-image
|
||||||
|
style="width: 100px; height: 100px"
|
||||||
|
src={this.modalData.background}
|
||||||
|
preview-src-list={[this.modalData.background]}
|
||||||
|
></el-image>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
);
|
);
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
label: "视频",
|
label: "视频",
|
||||||
prop: "DiscountTim",
|
prop: "video",
|
||||||
type: "Input",
|
type: "Input",
|
||||||
width: "300px",
|
width: "300px",
|
||||||
rules: { required: true, message: "请上传视频" },
|
|
||||||
type: "jsx",
|
type: "jsx",
|
||||||
render: () => {
|
render: () => {
|
||||||
const handleChange = (file, fileList) => {
|
const handleChange = (file, fileList) => {
|
||||||
// console.log(fileList);
|
// console.log(fileList);
|
||||||
};
|
};
|
||||||
const handleAvatarSuccess = (res, file, fileList) => {
|
const handleAvatarSuccess = (res, file, fileList) => {
|
||||||
|
this.modalData.video = res.data;
|
||||||
console.log(res, fileList);
|
console.log(res, fileList);
|
||||||
};
|
};
|
||||||
const handleRemove = (file, fileList) => {
|
const handleRemove = (file, fileList) => {
|
||||||
console.log(file, fileList);
|
console.log(file, fileList);
|
||||||
};
|
};
|
||||||
return (
|
return (
|
||||||
|
<div style="display: flex;">
|
||||||
<el-upload
|
<el-upload
|
||||||
class="upload-demo"
|
class="upload-demo"
|
||||||
action={this.$api.mer_admin.uploadFile()}
|
action={this.$api.mer_admin.uploadFile()}
|
||||||
|
@ -220,7 +243,7 @@ export default {
|
||||||
}}
|
}}
|
||||||
multiple={true}
|
multiple={true}
|
||||||
file-list={this.fileList}
|
file-list={this.fileList}
|
||||||
list-type="picture"
|
// list-type="picture"
|
||||||
>
|
>
|
||||||
<el-button size="small" type="primary">
|
<el-button size="small" type="primary">
|
||||||
<i class="el-icon-upload"></i>点击上传
|
<i class="el-icon-upload"></i>点击上传
|
||||||
|
@ -229,12 +252,26 @@ export default {
|
||||||
只能上传jpg/png文件,且不超过500kb
|
只能上传jpg/png文件,且不超过500kb
|
||||||
</div>
|
</div>
|
||||||
</el-upload>
|
</el-upload>
|
||||||
|
<div style="margin-left:20px">
|
||||||
|
<video
|
||||||
|
id="videoPlayer"
|
||||||
|
width="200px"
|
||||||
|
height="100px"
|
||||||
|
object-fit="fill"
|
||||||
|
muted="muted"
|
||||||
|
loop
|
||||||
|
controls
|
||||||
|
>
|
||||||
|
<source src={this.modalData.video} type="video/mp4" />
|
||||||
|
</video>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
);
|
);
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
label: "联系电话(仅用户可见)",
|
label: "联系电话(仅用户可见)",
|
||||||
prop: "limit",
|
prop: "contactPhone",
|
||||||
type: "Input",
|
type: "Input",
|
||||||
width: "300px",
|
width: "300px",
|
||||||
rules: { required: true, message: "请输入联系电话" },
|
rules: { required: true, message: "请输入联系电话" },
|
||||||
|
@ -254,7 +291,19 @@ export default {
|
||||||
type: "primary",
|
type: "primary",
|
||||||
loading: this.isLoading,
|
loading: this.isLoading,
|
||||||
submit: true,
|
submit: true,
|
||||||
handle: () => {},
|
handle: () => {
|
||||||
|
console.log(this.modalData);
|
||||||
|
this.$api.mer_admin
|
||||||
|
.editBrandInfo(this.modalData)
|
||||||
|
.then((res) => {
|
||||||
|
console.log(res);
|
||||||
|
this.toggle();
|
||||||
|
this.$emit("getList");
|
||||||
|
})
|
||||||
|
.catch((err) => {
|
||||||
|
console.log(err);
|
||||||
|
});
|
||||||
|
},
|
||||||
},
|
},
|
||||||
];
|
];
|
||||||
},
|
},
|
||||||
|
|
|
@ -1,141 +1,266 @@
|
||||||
<template>
|
<template>
|
||||||
<div>
|
<el-dialog
|
||||||
<obj-modal
|
:title="isAdd ? '修改管理员账号' : '修改密码'"
|
||||||
ref="modal"
|
:visible.sync="dialogFormVisible"
|
||||||
labelWidth="150px"
|
|
||||||
:modalCols="modalCols"
|
|
||||||
:modalConfig="modalConfig"
|
|
||||||
:modalData="modalData"
|
|
||||||
:modalHandles="modalHandles"
|
|
||||||
>
|
>
|
||||||
</obj-modal>
|
<el-form v-if="isAdd" ref="ruleForm" :model="form" :rules="rules">
|
||||||
|
<el-form-item
|
||||||
|
label="密码:"
|
||||||
|
prop="password"
|
||||||
|
:label-width="formLabelWidth"
|
||||||
|
>
|
||||||
|
<el-input
|
||||||
|
style="width: 240px"
|
||||||
|
type="password"
|
||||||
|
placeholder="请输入密码"
|
||||||
|
v-model="form.password"
|
||||||
|
autocomplete="off"
|
||||||
|
></el-input>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item
|
||||||
|
label="管理员账号"
|
||||||
|
:label-width="formLabelWidth"
|
||||||
|
prop="mobile"
|
||||||
|
>
|
||||||
|
<el-input
|
||||||
|
placeholder="请输入账号"
|
||||||
|
style="width: 240px; margin-right: 20px"
|
||||||
|
v-model="form.mobile"
|
||||||
|
></el-input
|
||||||
|
><el-button @click="getCode" v-if="this.isCode" type="primary"
|
||||||
|
>获取验证码</el-button
|
||||||
|
>
|
||||||
|
<el-button v-else :disabled="totalTime < 60" type="primary">{{
|
||||||
|
this.content
|
||||||
|
}}</el-button>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item prop="code" label="验证码:" :label-width="formLabelWidth">
|
||||||
|
<el-input
|
||||||
|
style="width: 240px"
|
||||||
|
placeholder="请输入验证码"
|
||||||
|
v-model="form.code"
|
||||||
|
></el-input>
|
||||||
|
</el-form-item>
|
||||||
|
</el-form>
|
||||||
|
<el-form v-else ref="ruleForm" :model="form" :rules="rules">
|
||||||
|
<el-form-item
|
||||||
|
label="旧密码:"
|
||||||
|
prop="oldPassword"
|
||||||
|
:label-width="formLabelWidth"
|
||||||
|
>
|
||||||
|
<el-input
|
||||||
|
style="width: 240px"
|
||||||
|
type="password"
|
||||||
|
placeholder="请输入密码"
|
||||||
|
v-model="form.oldPassword"
|
||||||
|
autocomplete="off"
|
||||||
|
></el-input>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item
|
||||||
|
label="新密码"
|
||||||
|
:label-width="formLabelWidth"
|
||||||
|
prop="newPassword"
|
||||||
|
>
|
||||||
|
<el-input
|
||||||
|
placeholder="请输入新密码"
|
||||||
|
style="width: 240px; margin-right: 20px"
|
||||||
|
v-model="form.newPassword"
|
||||||
|
show-password
|
||||||
|
></el-input>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item
|
||||||
|
prop="isPassword"
|
||||||
|
label="确认新密码:"
|
||||||
|
:label-width="formLabelWidth"
|
||||||
|
>
|
||||||
|
<el-input
|
||||||
|
style="width: 240px"
|
||||||
|
placeholder="请再次输入新密码"
|
||||||
|
v-model="form.isPassword"
|
||||||
|
show-password
|
||||||
|
></el-input>
|
||||||
|
</el-form-item>
|
||||||
|
</el-form>
|
||||||
|
<div slot="footer" class="dialog-footer">
|
||||||
|
<el-button @click="dialogFormVisible = false">取 消</el-button>
|
||||||
|
<el-button type="primary" @click="determine">确 定</el-button>
|
||||||
</div>
|
</div>
|
||||||
|
</el-dialog>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import { debounce, cloneDeep } from "lodash";
|
|
||||||
import { Divider } from "element-ui";
|
|
||||||
export default {
|
export default {
|
||||||
components: {},
|
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
|
dialogFormVisible: false,
|
||||||
isAdd: true,
|
isAdd: true,
|
||||||
//表格属性
|
formLabelWidth: "120px",
|
||||||
modalConfig: {
|
form: {},
|
||||||
title: "修改密码",
|
totalTime: 60,
|
||||||
show: false,
|
content: "获取验证码",
|
||||||
width: "60%",
|
isCode: true,
|
||||||
|
rules: {
|
||||||
|
password: [{ required: true, message: "请输入密码", trigger: "blur" }],
|
||||||
|
mobile: [
|
||||||
|
{
|
||||||
|
required: true,
|
||||||
|
message: "请输入手机号",
|
||||||
|
trigger: "blur",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
validator: function (rule, value, callback) {
|
||||||
|
if (/^1[3456789]\d{9}$/.test(value) == false) {
|
||||||
|
callback(new Error("请输入正确的手机号"));
|
||||||
|
} else {
|
||||||
|
callback();
|
||||||
|
}
|
||||||
|
},
|
||||||
|
trigger: "blur",
|
||||||
|
},
|
||||||
|
],
|
||||||
|
code: [
|
||||||
|
{
|
||||||
|
required: true,
|
||||||
|
min: 6,
|
||||||
|
max: 6,
|
||||||
|
message: "请输入正确的验证码",
|
||||||
|
trigger: "blur",
|
||||||
|
},
|
||||||
|
],
|
||||||
|
oldPassword: [
|
||||||
|
{ required: true, message: "请输入密码", trigger: "blur" },
|
||||||
|
],
|
||||||
|
newPassword: [
|
||||||
|
{
|
||||||
|
required: true,
|
||||||
|
message: "请输入密码",
|
||||||
|
trigger: "blur",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
min: 8,
|
||||||
|
max: 12,
|
||||||
|
message:
|
||||||
|
"密码由8-12位字母、数字、特殊符号(~、@、#、$、%、*)的组成,请重新输入",
|
||||||
|
trigger: "blur",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
trigger: "blur",
|
||||||
|
validator: (rule, value, callback) => {
|
||||||
|
var passwordreg =
|
||||||
|
/(?=.*\d)(?=.*[a-zA-Z])(?=.*[^a-zA-Z0-9]).{8,12}/;
|
||||||
|
if (!passwordreg.test(value)) {
|
||||||
|
callback(
|
||||||
|
new Error(
|
||||||
|
"密码由8-12位字母、数字、特殊符号(~、@、#、$、%、*)的组成,请重新输入"
|
||||||
|
)
|
||||||
|
);
|
||||||
|
} else {
|
||||||
|
callback();
|
||||||
|
}
|
||||||
|
},
|
||||||
|
},
|
||||||
|
],
|
||||||
|
isPassword: [
|
||||||
|
{
|
||||||
|
required: true,
|
||||||
|
message: "请输入确认密码",
|
||||||
|
trigger: "blur",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
trigger: "blur",
|
||||||
|
validator: (rule, value, callback) => {
|
||||||
|
if (value != this.form.newPassword) {
|
||||||
|
callback(new Error("密码输入不一致"));
|
||||||
|
} else {
|
||||||
|
callback();
|
||||||
|
}
|
||||||
|
},
|
||||||
|
},
|
||||||
|
],
|
||||||
},
|
},
|
||||||
modalData: {},
|
|
||||||
value1: "",
|
|
||||||
ProductData: {},
|
|
||||||
fileList: [],
|
|
||||||
isAdd: "",
|
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
|
watch: {
|
||||||
|
dialogFormVisible(newVal, oldVal) {
|
||||||
|
if (!newVal) {
|
||||||
|
this.$refs.ruleForm.resetFields();
|
||||||
|
}
|
||||||
|
},
|
||||||
|
},
|
||||||
methods: {
|
methods: {
|
||||||
queryTableData(pageNo, pageSize) {},
|
init(row) {
|
||||||
toggle(e) {
|
if (row) {
|
||||||
if (this.modalConfig.show == false) {
|
|
||||||
this.modalConfig.show = true;
|
|
||||||
} else {
|
|
||||||
this.modalConfig.show = false;
|
|
||||||
}
|
|
||||||
if (e) {
|
|
||||||
this.init(cloneDeep(e));
|
|
||||||
}
|
|
||||||
return {
|
|
||||||
add: () => {
|
|
||||||
this.$nextTick(() => {
|
|
||||||
this.modalData = {};
|
|
||||||
});
|
|
||||||
this.isAdd = true;
|
this.isAdd = true;
|
||||||
},
|
this.form = {
|
||||||
update: () => {
|
mobile: "",
|
||||||
this.isAdd = false;
|
code: "",
|
||||||
},
|
password: "",
|
||||||
};
|
};
|
||||||
},
|
|
||||||
init(row) {},
|
|
||||||
},
|
|
||||||
computed: {
|
|
||||||
modalCols() {
|
|
||||||
if (this.isAdd) {
|
|
||||||
return [
|
|
||||||
{
|
|
||||||
label: "密码",
|
|
||||||
prop: "discount",
|
|
||||||
type: "Input",
|
|
||||||
width: "300px",
|
|
||||||
rules: { required: true, message: "请输入旧密码" },
|
|
||||||
},
|
|
||||||
{
|
|
||||||
label: "管理员账号",
|
|
||||||
prop: "discoun",
|
|
||||||
type: "Input",
|
|
||||||
width: "300px",
|
|
||||||
rules: { required: true, message: "请输入管理员账号" },
|
|
||||||
type: "jsx",
|
|
||||||
render: () => {
|
|
||||||
return (
|
|
||||||
<div>
|
|
||||||
<div>
|
|
||||||
<el-input style="width:200px;margin-right:20px;margin-bottom:20px" placeholder="请输入管理员账号"></el-input>
|
|
||||||
<el-button type="primary">获取验证码</el-button>
|
|
||||||
</div>
|
|
||||||
<div>
|
|
||||||
<el-input style="width:300px" placeholder="请输入验证码"></el-input>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
);
|
|
||||||
},
|
|
||||||
},
|
|
||||||
];
|
|
||||||
} else {
|
} else {
|
||||||
return [
|
this.isAdd = false;
|
||||||
{
|
console.log(row);
|
||||||
label: "旧密码",
|
}
|
||||||
prop: "discount",
|
this.dialogFormVisible = true;
|
||||||
type: "Input",
|
|
||||||
width: "300px",
|
|
||||||
rules: { required: true, message: "请输入旧密码" },
|
|
||||||
},
|
},
|
||||||
{
|
getCode() {
|
||||||
label: "新密码",
|
console.log("发送验证码");
|
||||||
prop: "limitCount",
|
if (this.form.mobile && this.form.mobile.length == 11) {
|
||||||
type: "Input",
|
this.$api.mer_admin
|
||||||
width: "300px",
|
.getCaptcha({
|
||||||
rules: { required: true, message: "请输入新密码" },
|
mobile: this.form.mobile,
|
||||||
},
|
password: this.form.password,
|
||||||
{
|
})
|
||||||
label: "确认新密码",
|
.then((res) => {
|
||||||
prop: "limitCot",
|
console.log(res);
|
||||||
type: "Input",
|
});
|
||||||
width: "300px",
|
this.isCode = false;
|
||||||
rules: { required: true, message: "请输入新密码" },
|
this.countDown();
|
||||||
},
|
} else {
|
||||||
];
|
this.$message.error("请输入正确的手机号");
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
modalHandles() {
|
countDown() {
|
||||||
return [
|
console.log("123");
|
||||||
{
|
if (this.totalTime == 0) {
|
||||||
label: "取消",
|
this.content = "获取验证码";
|
||||||
handle: () => {
|
this.totalTime = 60;
|
||||||
this.toggle();
|
this.isCode = true;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
this.content = this.totalTime + "秒后重新获取";
|
||||||
|
this.totalTime--;
|
||||||
|
setTimeout(this.countDown, 1000);
|
||||||
|
},
|
||||||
|
determine() {
|
||||||
|
if (this.isAdd) {
|
||||||
|
this.$refs.ruleForm.validate((valid) => {
|
||||||
|
console.log(valid);
|
||||||
|
if (valid) {
|
||||||
|
this.$api.mer_admin.editAdmin(this.form).then((res) => {
|
||||||
|
console.log(res);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
this.$refs.ruleForm.validate((valid) => {
|
||||||
|
console.log(valid);
|
||||||
|
if (valid) {
|
||||||
|
this.$api.mer_admin
|
||||||
|
.changePassword({
|
||||||
|
oldPassword: this.form.oldPassword,
|
||||||
|
newPassword: this.form.newPassword,
|
||||||
|
})
|
||||||
|
.then((res) => {
|
||||||
|
this.$message.success("修改成功");
|
||||||
|
this.dialogFormVisible = false;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
|
||||||
label: this.isAdd ? "保存" : "确认",
|
|
||||||
type: "primary",
|
|
||||||
loading: this.isLoading,
|
|
||||||
submit: true,
|
|
||||||
handle: () => {},
|
|
||||||
},
|
|
||||||
];
|
|
||||||
},
|
|
||||||
},
|
|
||||||
asyncComputed: {},
|
|
||||||
};
|
};
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style lang="scss" scoped>
|
<style lang="scss" scoped>
|
||||||
</style>
|
</style>
|
|
@ -1,13 +1,158 @@
|
||||||
<template>
|
<template>
|
||||||
<div>配置</div>
|
<el-dialog title="品牌分销推广" :visible.sync="dialogFormVisible">
|
||||||
|
<el-form ref="ruleForm" :model="form" :rules="rules">
|
||||||
|
<div class="brandInfo">
|
||||||
|
<span class="pattern"></span>
|
||||||
|
推广营销工具
|
||||||
|
</div>
|
||||||
|
<div style="font-size: 14px; margin-bottom: 20px">
|
||||||
|
<i
|
||||||
|
class="el-icon-warning-outline"
|
||||||
|
style="width: 1em; height: 1em; margin-right: 4px"
|
||||||
|
></i>
|
||||||
|
分销推广功能开启后,平台的分销商有机会优先选择本品牌进行推广,推广成功分销商可获得佣金;品牌方可根据实际情况,对推广本品牌的分销商佣金比例进行调整;品牌分销和商铺分销不叠加同享,且优先按品牌分销佣金比例进行分销商分佣。
|
||||||
|
</div>
|
||||||
|
<el-form-item label="状态:" :label-width="formLabelWidth">
|
||||||
|
<el-switch
|
||||||
|
:active-value="1"
|
||||||
|
:inactive-value="0"
|
||||||
|
v-model="form.status"
|
||||||
|
active-text="开启"
|
||||||
|
inactive-text="禁用"
|
||||||
|
></el-switch>
|
||||||
|
<div style="font-size: 14px">
|
||||||
|
请勿频繁切换;已产生的关系&订单不受影响
|
||||||
|
</div>
|
||||||
|
</el-form-item>
|
||||||
|
<div class="brandInfo">
|
||||||
|
<span class="pattern"></span>
|
||||||
|
推广佣金配置
|
||||||
|
</div>
|
||||||
|
<div style="font-size: 14px; margin-bottom: 20px">
|
||||||
|
<i
|
||||||
|
class="el-icon-warning-outline"
|
||||||
|
style="width: 1em; height: 1em; margin-right: 4px"
|
||||||
|
></i>
|
||||||
|
配置推广成功分销商可获得的订单佣金奖励比例(订单实付金额);品牌分销订单无上级分佣。
|
||||||
|
</div>
|
||||||
|
<el-form-item
|
||||||
|
label="订单佣金比例 (单位:%)"
|
||||||
|
:label-width="formLabelWidth"
|
||||||
|
prop="sharingRatio"
|
||||||
|
>
|
||||||
|
<el-select
|
||||||
|
:disabled="form.status != 1"
|
||||||
|
v-model="form.sharingRatio"
|
||||||
|
filterable
|
||||||
|
placeholder="请选择"
|
||||||
|
style="width: 240px"
|
||||||
|
>
|
||||||
|
<el-option
|
||||||
|
v-for="item in proportion"
|
||||||
|
:key="item"
|
||||||
|
:label="item"
|
||||||
|
:value="item"
|
||||||
|
/>
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
<div class="brandInfo">
|
||||||
|
<span class="pattern"></span>
|
||||||
|
品牌分销商招募令配置
|
||||||
|
</div>
|
||||||
|
<div style="font-size: 14px; margin-bottom: 20px">
|
||||||
|
<i
|
||||||
|
class="el-icon-warning-outline"
|
||||||
|
style="width: 1em; height: 1em; margin-right: 4px"
|
||||||
|
></i>
|
||||||
|
此配置将展示在店铺页,吸引用户申请分销商并为店铺进行宣传推广。长度限制在100字内。
|
||||||
|
</div>
|
||||||
|
<el-form-item
|
||||||
|
prop="promotionWords"
|
||||||
|
label="推广文案:"
|
||||||
|
:label-width="formLabelWidth"
|
||||||
|
>
|
||||||
|
<el-input
|
||||||
|
:disabled="form.status != 1"
|
||||||
|
style="width: 80%"
|
||||||
|
type="textarea"
|
||||||
|
:rows="5"
|
||||||
|
placeholder="请输入内容"
|
||||||
|
maxlength="100"
|
||||||
|
show-word-limit
|
||||||
|
v-model="form.promotionWords"
|
||||||
|
>
|
||||||
|
</el-input>
|
||||||
|
</el-form-item>
|
||||||
|
</el-form>
|
||||||
|
<div slot="footer" class="dialog-footer">
|
||||||
|
<el-button @click="dialogFormVisible = false">取 消</el-button>
|
||||||
|
<el-button type="primary" @click="determine">确 定</el-button>
|
||||||
|
</div>
|
||||||
|
</el-dialog>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
export default {
|
export default {
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
dialogFormVisible: false,
|
||||||
|
formLabelWidth: "200px",
|
||||||
|
form: {},
|
||||||
|
proportion: [],
|
||||||
|
rules: {
|
||||||
|
sharingRatio: [
|
||||||
|
{ required: true, message: "请选择佣金比例", trigger: "change" },
|
||||||
|
],
|
||||||
|
promotionWords: [
|
||||||
|
{ required: true, message: "请输入推广文案", trigger: "blur" },
|
||||||
|
{ max: 100, message: "长度100个字符内", trigger: "blur" },
|
||||||
|
],
|
||||||
|
},
|
||||||
|
};
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
init(row) {
|
||||||
|
this.form = JSON.parse(JSON.stringify(row));
|
||||||
|
console.log(this.form);
|
||||||
|
this.proportion = [];
|
||||||
|
for (let i = row.minSharingRate; i <= row.maxSharingRate; i++) {
|
||||||
|
this.proportion.push(i);
|
||||||
}
|
}
|
||||||
|
console.log(this.proportion);
|
||||||
|
|
||||||
|
this.dialogFormVisible = true;
|
||||||
|
},
|
||||||
|
determine() {
|
||||||
|
if (this.form.status == 0) {
|
||||||
|
this.$api.mer_admin.editBrandInfo(this.form).then((res) => {
|
||||||
|
this.dialogFormVisible = false;
|
||||||
|
this.$emit("getList");
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
this.$refs.ruleForm.validate((valid) => {
|
||||||
|
if (valid) {
|
||||||
|
this.$api.mer_admin.editBrandInfo(this.form).then((res) => {
|
||||||
|
this.dialogFormVisible = false;
|
||||||
|
this.$emit("getList");
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
},
|
||||||
|
},
|
||||||
|
};
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style>
|
<style lang="scss" scoped>
|
||||||
|
.brandInfo {
|
||||||
|
margin-bottom: 20px;
|
||||||
|
font-size: 18px;
|
||||||
|
font-weight: 700;
|
||||||
|
}
|
||||||
|
.pattern {
|
||||||
|
display: inline-block;
|
||||||
|
width: 8px;
|
||||||
|
height: 16px;
|
||||||
|
background: rgba(28, 146, 152, 1);
|
||||||
|
}
|
||||||
</style>
|
</style>
|
|
@ -0,0 +1,443 @@
|
||||||
|
<template>
|
||||||
|
<div v-if="isMerchant" style="height: calc(100vh - 200px)">
|
||||||
|
<obj-table-plus
|
||||||
|
ref="oTable"
|
||||||
|
style="height: 100%"
|
||||||
|
:tableCols="tableCols"
|
||||||
|
:tableProp="tableProp"
|
||||||
|
@query="queryList"
|
||||||
|
v-model="dataList"
|
||||||
|
:tableEvent="tableEvent"
|
||||||
|
:enableAutoQuery="false"
|
||||||
|
>
|
||||||
|
<template slot="tableTop">
|
||||||
|
<el-form :inline="true" :model="formInline" class="demo-form-inline">
|
||||||
|
<el-form-item label="优惠卷名称">
|
||||||
|
<el-input
|
||||||
|
v-model="formInline.name"
|
||||||
|
placeholder="优惠卷名称搜索"
|
||||||
|
></el-input>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="状态">
|
||||||
|
<el-select
|
||||||
|
v-model="formInline.queryStatus"
|
||||||
|
placeholder="请选择状态"
|
||||||
|
>
|
||||||
|
<el-option
|
||||||
|
v-for="item in [
|
||||||
|
{ label: '已失效', value: '0' },
|
||||||
|
{
|
||||||
|
label: '生效中',
|
||||||
|
value: '1',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: '待生效',
|
||||||
|
value: '2',
|
||||||
|
},
|
||||||
|
]"
|
||||||
|
:key="item.value"
|
||||||
|
:label="item.label"
|
||||||
|
:value="item.value"
|
||||||
|
></el-option>
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item v-if="storeList.length > 1" label="店铺">
|
||||||
|
<el-select v-model="formInline.shopId" placeholder="请选择店铺">
|
||||||
|
<el-option
|
||||||
|
v-for="item in storeList"
|
||||||
|
:key="item.shopId"
|
||||||
|
:label="item.shopName"
|
||||||
|
:value="item.shopId"
|
||||||
|
></el-option>
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item>
|
||||||
|
<el-button type="primary" @click="$refs.oTable.reload()"
|
||||||
|
>查询</el-button
|
||||||
|
>
|
||||||
|
<el-button type="primary" @click="Reset">重置</el-button>
|
||||||
|
</el-form-item>
|
||||||
|
</el-form>
|
||||||
|
<div class="mb-2">
|
||||||
|
<el-popover placement="bottom" trigger="click">
|
||||||
|
<el-button
|
||||||
|
type="warning"
|
||||||
|
size="mini"
|
||||||
|
v-for="item in [
|
||||||
|
{ label: '无门槛商品优惠卷', value: '1' },
|
||||||
|
{ label: '满减卷', value: '2' },
|
||||||
|
{ label: '新粉优惠卷', value: '3' },
|
||||||
|
]"
|
||||||
|
:key="item.value"
|
||||||
|
@click="addProduct({ label: item.label })"
|
||||||
|
>{{ item.label }}
|
||||||
|
</el-button>
|
||||||
|
<el-button
|
||||||
|
size="small"
|
||||||
|
slot="reference"
|
||||||
|
type="primary"
|
||||||
|
class="link-left"
|
||||||
|
icon="el-icon-plus"
|
||||||
|
>添加优惠卷</el-button
|
||||||
|
>
|
||||||
|
</el-popover>
|
||||||
|
<el-button
|
||||||
|
style="margin-left: 20px"
|
||||||
|
:disabled="selectList.length <= 0"
|
||||||
|
type="danger"
|
||||||
|
size="small"
|
||||||
|
@click="deleteProduct"
|
||||||
|
>批量删除</el-button
|
||||||
|
>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
</obj-table-plus>
|
||||||
|
<!-- 添加或编辑 -->
|
||||||
|
<add-or-update
|
||||||
|
@queryList="$refs.oTable.reload()"
|
||||||
|
ref="addOrUpdate"
|
||||||
|
></add-or-update>
|
||||||
|
<!-- 满减卷 -->
|
||||||
|
<fullReductio
|
||||||
|
@queryList="$refs.oTable.reload()"
|
||||||
|
ref="fullReductio"
|
||||||
|
></fullReductio>
|
||||||
|
<!-- 新粉优惠卷 -->
|
||||||
|
<newPowder @queryList="$refs.oTable.reload()" ref="newPowder"></newPowder>
|
||||||
|
<!-- 查看详情 -->
|
||||||
|
<!-- <viewDetails ref="viewDetails"></viewDetails> -->
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import { mapState } from "vuex";
|
||||||
|
import fullReductio from "./popup/full-reduction.vue";
|
||||||
|
import AddOrUpdate from "./popup/add-or-update.vue";
|
||||||
|
import newPowder from "./popup/new-powder.vue";
|
||||||
|
// import viewDetails from "./popup/view-details.vue";
|
||||||
|
export default {
|
||||||
|
components: { AddOrUpdate, fullReductio, newPowder },
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
dataList: [],
|
||||||
|
formInline: {
|
||||||
|
marketId: "",
|
||||||
|
shopId: "",
|
||||||
|
queryStatus: "",
|
||||||
|
name: "",
|
||||||
|
},
|
||||||
|
tableProp: {
|
||||||
|
"auto-resize": true,
|
||||||
|
border: true,
|
||||||
|
height: "auto",
|
||||||
|
"row-id": "id",
|
||||||
|
"show-overflow": false,
|
||||||
|
},
|
||||||
|
productFilterType: "SALE",
|
||||||
|
selectList: [],
|
||||||
|
};
|
||||||
|
},
|
||||||
|
created() {
|
||||||
|
this.formInline = {
|
||||||
|
name: "",
|
||||||
|
queryStatus: "",
|
||||||
|
marketId: this.marketId,
|
||||||
|
shopId: this.shopId,
|
||||||
|
};
|
||||||
|
this.$nextTick(() => {
|
||||||
|
this.$refs.oTable.reload();
|
||||||
|
});
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
getData() {
|
||||||
|
// this.$api.mer_admin
|
||||||
|
// .storeList({ marketId: this.formInline.marketId })
|
||||||
|
// .then((res) => {
|
||||||
|
// this.storeList = res.data.data;
|
||||||
|
// this.formInline.shopId = res.data.data[0].shopId;
|
||||||
|
// this.$nextTick(() => {
|
||||||
|
// this.$refs.oTable.reload();
|
||||||
|
// });
|
||||||
|
// });
|
||||||
|
},
|
||||||
|
addProduct(row) {
|
||||||
|
console.log(row);
|
||||||
|
if (row.label == "无门槛商品优惠卷") {
|
||||||
|
this.$refs.addOrUpdate.toggle().add({
|
||||||
|
...row,
|
||||||
|
marketId: this.formInline.marketId,
|
||||||
|
shopId: this.formInline.shopId,
|
||||||
|
});
|
||||||
|
} else if (row.label == "满减卷") {
|
||||||
|
this.$refs.fullReductio.toggle().add({
|
||||||
|
...row,
|
||||||
|
marketId: this.formInline.marketId,
|
||||||
|
shopId: this.formInline.shopId,
|
||||||
|
});
|
||||||
|
} else if (row.label == "新粉优惠卷") {
|
||||||
|
this.$refs.newPowder.toggle().add({
|
||||||
|
...row,
|
||||||
|
marketId: this.formInline.marketId,
|
||||||
|
shopId: this.formInline.shopId,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
},
|
||||||
|
Reset() {
|
||||||
|
this.formInline = {
|
||||||
|
name: "",
|
||||||
|
queryStatus: "",
|
||||||
|
marketId: this.marketId,
|
||||||
|
shopId: this.shopId,
|
||||||
|
};
|
||||||
|
this.$refs.oTable.reload();
|
||||||
|
},
|
||||||
|
deleteProduct() {
|
||||||
|
console.log(this.selectList);
|
||||||
|
let integers = this.selectList.map((item) => {
|
||||||
|
return item.id;
|
||||||
|
});
|
||||||
|
this.$confirm("此操作将删除该优惠卷, 是否继续?", "提示", {
|
||||||
|
confirmButtonText: "确定",
|
||||||
|
cancelButtonText: "取消",
|
||||||
|
type: "warning",
|
||||||
|
})
|
||||||
|
.then(() => {
|
||||||
|
console.log("111");
|
||||||
|
this.$api.coupon.deleteCoupon(integers).then((res) => {
|
||||||
|
this.$refs.oTable.reload();
|
||||||
|
this.selectList = [];
|
||||||
|
});
|
||||||
|
})
|
||||||
|
.catch(() => {
|
||||||
|
this.$message({
|
||||||
|
type: "info",
|
||||||
|
message: "已取消删除",
|
||||||
|
});
|
||||||
|
});
|
||||||
|
},
|
||||||
|
queryList(pageNo, pageSize) {
|
||||||
|
this.$api.coupon
|
||||||
|
.couponList({
|
||||||
|
pageNumber: pageNo,
|
||||||
|
pageSize: pageSize,
|
||||||
|
...this.formInline,
|
||||||
|
})
|
||||||
|
.then((res) => {
|
||||||
|
console.log(res);
|
||||||
|
this.$refs.oTable.complete(
|
||||||
|
res.data.data.data,
|
||||||
|
Number(res.data.data.total)
|
||||||
|
);
|
||||||
|
})
|
||||||
|
.catch((err) => {
|
||||||
|
this.$refs.oTable.complete(false);
|
||||||
|
});
|
||||||
|
},
|
||||||
|
},
|
||||||
|
computed: {
|
||||||
|
tableCols() {
|
||||||
|
return [
|
||||||
|
{ type: "checkbox", width: "60px", fixed: "left" },
|
||||||
|
// { type: "seq", width: "60px", align: "center", title: "序号" },
|
||||||
|
{
|
||||||
|
title: "优惠券名称",
|
||||||
|
align: "center",
|
||||||
|
field: "name",
|
||||||
|
},
|
||||||
|
// {
|
||||||
|
// title: "发行方",
|
||||||
|
// align: "center",
|
||||||
|
// field: "publisher",
|
||||||
|
// type: "jsx",
|
||||||
|
// render: ({ row }) => {
|
||||||
|
// if (row.publisher === "MERCHANT") {
|
||||||
|
// return <span>店铺</span>;
|
||||||
|
// } else if (row.publisher == "PLATFORM") {
|
||||||
|
// return <span>平台</span>;
|
||||||
|
// }
|
||||||
|
// },
|
||||||
|
// },
|
||||||
|
{
|
||||||
|
title: "类别",
|
||||||
|
align: "center",
|
||||||
|
field: "category",
|
||||||
|
type: "jsx",
|
||||||
|
render: ({ row }) => {
|
||||||
|
if (row.category == "NO_THRESHOLD") {
|
||||||
|
return <span>无门槛优惠券</span>;
|
||||||
|
} else if (row.category == "MAX_OUT") {
|
||||||
|
return <span>满减优惠券</span>;
|
||||||
|
} else if (row.category == "FIRST_ATTENTION") {
|
||||||
|
return <span>首次关注优惠券</span>;
|
||||||
|
} else if (row.category == "BIRTHDAY") {
|
||||||
|
return <span>生日券</span>;
|
||||||
|
} else if (row.category == "PLATFORM") {
|
||||||
|
return <span>平台优惠券</span>;
|
||||||
|
}
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: "优惠券类型",
|
||||||
|
align: "center",
|
||||||
|
field: "couponType",
|
||||||
|
type: "jsx",
|
||||||
|
render: ({ row }) => {
|
||||||
|
if (row.couponType == "MONEY") {
|
||||||
|
return <span>满减券</span>;
|
||||||
|
} else if (row.couponType == "DISCOUNT") {
|
||||||
|
return <span>折扣券</span>;
|
||||||
|
}
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: "优惠金额",
|
||||||
|
align: "center",
|
||||||
|
field: "money",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: "折扣",
|
||||||
|
align: "center",
|
||||||
|
field: "discount",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: "最低消费",
|
||||||
|
align: "center",
|
||||||
|
field: "minPrice",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: "限量",
|
||||||
|
align: "center",
|
||||||
|
field: "limitedNum",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: "发放总数",
|
||||||
|
align: "center",
|
||||||
|
field: "total",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: "剩余数量",
|
||||||
|
align: "center",
|
||||||
|
field: "lastTotal",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: "可使用时间",
|
||||||
|
align: "center",
|
||||||
|
field: "useStartTime",
|
||||||
|
type: "jsx",
|
||||||
|
render: ({ row }) => {
|
||||||
|
return (
|
||||||
|
<span>
|
||||||
|
{row.useStartTime}至{row.useEndTime}
|
||||||
|
</span>
|
||||||
|
);
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: "状态",
|
||||||
|
align: "center",
|
||||||
|
field: "status",
|
||||||
|
type: "jsx",
|
||||||
|
width: "120px",
|
||||||
|
render: ({ row }) => {
|
||||||
|
let changeState = () => {
|
||||||
|
if (row.status == 1) {
|
||||||
|
this.$confirm("是否要启用此优惠卷?", "提示", {
|
||||||
|
confirmButtonText: "确定",
|
||||||
|
cancelButtonText: "取消",
|
||||||
|
type: "warning",
|
||||||
|
})
|
||||||
|
.then(() => {
|
||||||
|
this.$api.coupon
|
||||||
|
.couponStatus({
|
||||||
|
id: row.id,
|
||||||
|
status: 1,
|
||||||
|
})
|
||||||
|
.then((res) => {
|
||||||
|
this.$refs.oTable.reload();
|
||||||
|
})
|
||||||
|
.catch((err) => {
|
||||||
|
this.$refs.oTable.reload();
|
||||||
|
});
|
||||||
|
})
|
||||||
|
.catch(() => {
|
||||||
|
this.$refs.oTable.reload();
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
this.$confirm("是否要关闭此优惠卷?", "提示", {
|
||||||
|
confirmButtonText: "确定",
|
||||||
|
cancelButtonText: "取消",
|
||||||
|
type: "warning",
|
||||||
|
})
|
||||||
|
.then(() => {
|
||||||
|
this.$api.coupon
|
||||||
|
.couponStatus({
|
||||||
|
id: row.id,
|
||||||
|
status: 0,
|
||||||
|
})
|
||||||
|
.then((res) => {
|
||||||
|
this.$refs.oTable.reload();
|
||||||
|
})
|
||||||
|
.catch((err) => {
|
||||||
|
this.$refs.oTable.reload();
|
||||||
|
});
|
||||||
|
})
|
||||||
|
.catch(() => {
|
||||||
|
this.$refs.oTable.reload();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
};
|
||||||
|
return (
|
||||||
|
<el-switch
|
||||||
|
onchange={changeState}
|
||||||
|
v-model={row.status}
|
||||||
|
active-text="开"
|
||||||
|
inactive-text="关"
|
||||||
|
active-value={1}
|
||||||
|
inactive-value={0}
|
||||||
|
></el-switch>
|
||||||
|
);
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: "操作",
|
||||||
|
fixed: "right",
|
||||||
|
type: "jsx",
|
||||||
|
align: "center",
|
||||||
|
width: "140px",
|
||||||
|
render: (row) => {
|
||||||
|
let edit = () => {
|
||||||
|
// this.$refs.viewDetails.toggle(row).update();
|
||||||
|
};
|
||||||
|
return (
|
||||||
|
<div>
|
||||||
|
<el-button size="mini" type="primary" onClick={edit}>
|
||||||
|
详情
|
||||||
|
</el-button>
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
},
|
||||||
|
},
|
||||||
|
];
|
||||||
|
},
|
||||||
|
tableEvent() {
|
||||||
|
return {
|
||||||
|
"checkbox-all": ({ records, reserves }) => {
|
||||||
|
this.selectList = [...records, ...reserves];
|
||||||
|
},
|
||||||
|
"checkbox-change": ({ records, reserves }) => {
|
||||||
|
this.selectList = [...records, ...reserves];
|
||||||
|
},
|
||||||
|
};
|
||||||
|
},
|
||||||
|
...mapState("userData", [
|
||||||
|
"isMerchant",
|
||||||
|
"marketList",
|
||||||
|
"storeList",
|
||||||
|
"marketId",
|
||||||
|
"shopId",
|
||||||
|
]),
|
||||||
|
},
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss" scoped></style>
|
|
@ -0,0 +1,274 @@
|
||||||
|
<template>
|
||||||
|
<div>
|
||||||
|
<obj-modal
|
||||||
|
ref="modal"
|
||||||
|
labelWidth="150px"
|
||||||
|
:modalConfig="modalConfig"
|
||||||
|
:modalData="modalData"
|
||||||
|
:modalHandles="modalHandles"
|
||||||
|
>
|
||||||
|
<template slot="dialog__content">
|
||||||
|
<el-form :model="modalData" ref="modalForm">
|
||||||
|
<el-form-item label-width="150px" label="优惠券名称" prop="name">
|
||||||
|
<el-input
|
||||||
|
style="width: 350px"
|
||||||
|
v-model="modalData.name"
|
||||||
|
placeholder="请输入优惠券名称"
|
||||||
|
>
|
||||||
|
</el-input>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label-width="150px" label="使用日期" prop="name">
|
||||||
|
<el-date-picker
|
||||||
|
@change="usageDateChange"
|
||||||
|
v-model="usageDate"
|
||||||
|
value-format="yyyy-MM-dd"
|
||||||
|
type="daterange"
|
||||||
|
range-separator="至"
|
||||||
|
start-placeholder="开始日期"
|
||||||
|
end-placeholder="结束日期"
|
||||||
|
>
|
||||||
|
</el-date-picker>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label-width="150px" label="开放领取日期" prop="name">
|
||||||
|
<el-date-picker
|
||||||
|
@change="collectionDateChange"
|
||||||
|
v-model="collectionDate"
|
||||||
|
value-format="yyyy-MM-dd"
|
||||||
|
type="daterange"
|
||||||
|
range-separator="至"
|
||||||
|
start-placeholder="开始日期"
|
||||||
|
end-placeholder="结束日期"
|
||||||
|
>
|
||||||
|
</el-date-picker>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label-width="150px" label="选择商品" prop="targetIds">
|
||||||
|
<el-input
|
||||||
|
style="width: 350px"
|
||||||
|
placeholder="请选择选择商品"
|
||||||
|
v-model="modalData.targetIds"
|
||||||
|
>
|
||||||
|
<template slot="append">
|
||||||
|
<el-button @click="selectProduct">请选择</el-button>
|
||||||
|
</template>
|
||||||
|
</el-input>
|
||||||
|
<div v-if="product.name" class="product">
|
||||||
|
<div>
|
||||||
|
<el-image
|
||||||
|
style="width: 80px; height: 80px; margin-right: 10px"
|
||||||
|
:src="product.productPhotoList[0].url"
|
||||||
|
>
|
||||||
|
</el-image>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<div style="line-height: 20px">
|
||||||
|
商品名称:{{ product.name }}
|
||||||
|
</div>
|
||||||
|
<div style="line-height: 20px">
|
||||||
|
库存:{{ product.stockNum }}
|
||||||
|
</div>
|
||||||
|
<div style="line-height: 20px; color: rgba(255, 87, 51, 1)">
|
||||||
|
¥{{ product.minSalePrice }}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label-width="150px" label="优惠金额" prop="targetIds">
|
||||||
|
<el-input-number
|
||||||
|
v-model="modalData.money"
|
||||||
|
:min="0"
|
||||||
|
label="请输入"
|
||||||
|
></el-input-number>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label-width="150px" label="发放数量" prop="targetIds">
|
||||||
|
<el-input-number
|
||||||
|
v-model="modalData.total"
|
||||||
|
:min="0"
|
||||||
|
:max="99999"
|
||||||
|
label="请输入"
|
||||||
|
></el-input-number>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label-width="150px" label="每人限领" prop="targetIds">
|
||||||
|
<el-select v-model="modalData.limitedNum" placeholder="请选择">
|
||||||
|
<el-option
|
||||||
|
v-for="item in [
|
||||||
|
{
|
||||||
|
label: '不限',
|
||||||
|
value: 0,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: '1张',
|
||||||
|
value: 1,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: '2张',
|
||||||
|
value: 2,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: '3张',
|
||||||
|
value: 3,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: '4张',
|
||||||
|
value: 4,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: '5张',
|
||||||
|
value: 5,
|
||||||
|
},
|
||||||
|
]"
|
||||||
|
:key="item.value"
|
||||||
|
:label="item.label"
|
||||||
|
:value="item.value"
|
||||||
|
>
|
||||||
|
</el-option>
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
</el-form>
|
||||||
|
</template>
|
||||||
|
</obj-modal>
|
||||||
|
<!-- 选择商品 -->
|
||||||
|
<commodity @getProduct="getProduct" ref="commodity"></commodity>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
<script>
|
||||||
|
import commodity from "./commodity.vue";
|
||||||
|
import { debounce, cloneDeep } from "lodash";
|
||||||
|
import { Divider } from "element-ui";
|
||||||
|
import loginVue from "../../../common/login.vue";
|
||||||
|
export default {
|
||||||
|
components: { commodity },
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
isAdd: true,
|
||||||
|
//表格属性
|
||||||
|
modalConfig: {
|
||||||
|
title: "添加优惠卷",
|
||||||
|
show: false,
|
||||||
|
width: "800px",
|
||||||
|
},
|
||||||
|
formInline: {
|
||||||
|
marketId: "",
|
||||||
|
shopId: "",
|
||||||
|
},
|
||||||
|
modalData: {},
|
||||||
|
usageDate: [], //使用时间
|
||||||
|
collectionDate: [], //领取日期
|
||||||
|
product: {}, //商品
|
||||||
|
};
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
queryTableData(pageNo, pageSize) {},
|
||||||
|
toggle(e) {
|
||||||
|
if (this.modalConfig.show == false) {
|
||||||
|
this.modalConfig.show = true;
|
||||||
|
} else {
|
||||||
|
this.modalConfig.show = false;
|
||||||
|
}
|
||||||
|
if (e) {
|
||||||
|
this.init(cloneDeep(e));
|
||||||
|
}
|
||||||
|
return {
|
||||||
|
add: (row) => {
|
||||||
|
this.formInline = {
|
||||||
|
marketId: row.marketId,
|
||||||
|
shopId: row.shopId,
|
||||||
|
};
|
||||||
|
this.modalConfig.title = `添加${row.label}`;
|
||||||
|
this.$nextTick(() => {
|
||||||
|
this.modalData = {
|
||||||
|
category: "NO_THRESHOLD",
|
||||||
|
receiveType: "MANUAL",
|
||||||
|
couponType: "MONEY",
|
||||||
|
isTimeReceive: 1, //0-不限时,1-限时
|
||||||
|
name: "",
|
||||||
|
useStartTime: "",
|
||||||
|
useEndTime: "",
|
||||||
|
receiveStartTime: "",
|
||||||
|
receiveEndTime: "",
|
||||||
|
money: "",
|
||||||
|
total: 10000,
|
||||||
|
limitedNum: 0,
|
||||||
|
minPrice: 0,
|
||||||
|
usableRange: "PARTIAL_GOODS", //部分商品-PARTIAL_GOODS 所有商品-ALL_GOODS 部分摊位-PARTIAL_SHOP
|
||||||
|
};
|
||||||
|
// this.$refs.modal.resetFields();
|
||||||
|
});
|
||||||
|
this.isAdd = true;
|
||||||
|
},
|
||||||
|
update: () => {
|
||||||
|
this.isAdd = false;
|
||||||
|
},
|
||||||
|
};
|
||||||
|
},
|
||||||
|
init(row) {},
|
||||||
|
usageDateChange(e) {
|
||||||
|
if (e) {
|
||||||
|
this.modalData.useStartTime = e[0];
|
||||||
|
this.modalData.useEndTime = e[1];
|
||||||
|
} else {
|
||||||
|
this.modalData.useStartTime = "";
|
||||||
|
this.modalData.useEndTime = "";
|
||||||
|
}
|
||||||
|
},
|
||||||
|
collectionDateChange(e) {
|
||||||
|
if (e) {
|
||||||
|
this.modalData.receiveStartTime = e[0];
|
||||||
|
this.modalData.receiveEndTime = e[1];
|
||||||
|
} else {
|
||||||
|
this.modalData.receiveStartTime = "";
|
||||||
|
this.modalData.receiveEndTime = "";
|
||||||
|
}
|
||||||
|
},
|
||||||
|
//选择商品
|
||||||
|
selectProduct() {
|
||||||
|
console.log("123");
|
||||||
|
this.$refs.commodity.toggle().add(this.formInline);
|
||||||
|
},
|
||||||
|
//获取商品
|
||||||
|
getProduct(row) {
|
||||||
|
console.log(row);
|
||||||
|
this.modalData.targetIds = row.id;
|
||||||
|
this.product = row;
|
||||||
|
},
|
||||||
|
},
|
||||||
|
computed: {
|
||||||
|
modalHandles() {
|
||||||
|
return [
|
||||||
|
{
|
||||||
|
label: "取消",
|
||||||
|
handle: () => {
|
||||||
|
this.toggle();
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: "确认添加",
|
||||||
|
type: "primary",
|
||||||
|
handle: () => {
|
||||||
|
console.log(this.modalData);
|
||||||
|
let data = { ...this.modalData };
|
||||||
|
data.targetIds = [data.targetIds];
|
||||||
|
console.log(this.modalData, data);
|
||||||
|
this.$api.coupon
|
||||||
|
.addCoupon({ ...data, ...this.formInline })
|
||||||
|
.then((res) => {
|
||||||
|
console.log(res);
|
||||||
|
this.$emit("queryList");
|
||||||
|
this.toggle();
|
||||||
|
});
|
||||||
|
},
|
||||||
|
},
|
||||||
|
];
|
||||||
|
},
|
||||||
|
},
|
||||||
|
asyncComputed: {},
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
.product {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
margin-top: 10px;
|
||||||
|
border: 1px solid #ccc;
|
||||||
|
width: 350px;
|
||||||
|
}
|
||||||
|
</style>
|
|
@ -0,0 +1,230 @@
|
||||||
|
<template>
|
||||||
|
<obj-modal
|
||||||
|
ref="modal"
|
||||||
|
labelWidth="150px"
|
||||||
|
:modalConfig="modalConfig"
|
||||||
|
:modalData="modalData"
|
||||||
|
:modalHandles="modalHandles"
|
||||||
|
>
|
||||||
|
<template slot="dialog__content">
|
||||||
|
<obj-table-plus
|
||||||
|
ref="oTable"
|
||||||
|
style="height: 70vh"
|
||||||
|
:tableCols="tableCols"
|
||||||
|
:tableProp="tableProp"
|
||||||
|
@query="queryList"
|
||||||
|
v-model="dataList"
|
||||||
|
:tableEvent="tableEvent"
|
||||||
|
:enableAutoQuery="false"
|
||||||
|
>
|
||||||
|
<!-- <template slot="tableTop">
|
||||||
|
<el-form :inline="true" :model="formInline" class="demo-form-inline">
|
||||||
|
<el-form-item v-if="marketList.length > 0" label="菜市场">
|
||||||
|
<el-select
|
||||||
|
@change="getData"
|
||||||
|
v-model="formInline.marketId"
|
||||||
|
placeholder="请选择菜市场"
|
||||||
|
>
|
||||||
|
<el-option
|
||||||
|
v-for="item in marketList"
|
||||||
|
:key="item.marketId"
|
||||||
|
:label="item.marketName"
|
||||||
|
:value="item.marketId"
|
||||||
|
></el-option>
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item v-if="marketList.length > 0" label="店铺">
|
||||||
|
<el-select v-model="formInline.shopId" placeholder="请选择店铺">
|
||||||
|
<el-option
|
||||||
|
v-for="item in storeList"
|
||||||
|
:key="item.shopId"
|
||||||
|
:label="item.shopName"
|
||||||
|
:value="item.shopId"
|
||||||
|
></el-option>
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item>
|
||||||
|
<el-button type="primary" @click="$refs.oTable.reload()"
|
||||||
|
>查询</el-button
|
||||||
|
>
|
||||||
|
</el-form-item>
|
||||||
|
</el-form>
|
||||||
|
</template> -->
|
||||||
|
</obj-table-plus>
|
||||||
|
</template>
|
||||||
|
</obj-modal>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import { debounce, cloneDeep } from "lodash";
|
||||||
|
export default {
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
isAdd: true,
|
||||||
|
//表格属性
|
||||||
|
modalConfig: {
|
||||||
|
title: "请点击选择商品",
|
||||||
|
show: false,
|
||||||
|
width: "1000px",
|
||||||
|
},
|
||||||
|
modalData: {},
|
||||||
|
dataList: [], //表格数据
|
||||||
|
tableProp: {
|
||||||
|
"auto-resize": true,
|
||||||
|
border: true,
|
||||||
|
height: "auto",
|
||||||
|
"row-id": "id",
|
||||||
|
"show-overflow": false,
|
||||||
|
},
|
||||||
|
selectList: {},
|
||||||
|
tableEvent: {
|
||||||
|
"current-change": async (e) => {
|
||||||
|
console.log(e.row);
|
||||||
|
this.selectList = e.row;
|
||||||
|
},
|
||||||
|
},
|
||||||
|
formInline: {},
|
||||||
|
};
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
queryList(pageNo, pageSize) {
|
||||||
|
this.$api.mer_admin
|
||||||
|
.getProductPage({
|
||||||
|
p: {
|
||||||
|
pageNumber: pageNo,
|
||||||
|
pageSize: pageSize,
|
||||||
|
},
|
||||||
|
...this.formInline,
|
||||||
|
productFilterType: "SALE",
|
||||||
|
merchantId: JSON.parse(sessionStorage.getItem("userInfo")).merchantId,
|
||||||
|
productQuerySortParam: [],
|
||||||
|
})
|
||||||
|
.then((res) => {
|
||||||
|
console.log(res);
|
||||||
|
this.$refs.oTable.complete(
|
||||||
|
res.data.data.data,
|
||||||
|
Number(res.data.data.total)
|
||||||
|
);
|
||||||
|
})
|
||||||
|
.catch((err) => {
|
||||||
|
this.$refs.oTable.complete(false);
|
||||||
|
});
|
||||||
|
},
|
||||||
|
toggle(e) {
|
||||||
|
if (this.modalConfig.show == false) {
|
||||||
|
this.modalConfig.show = true;
|
||||||
|
} else {
|
||||||
|
this.modalConfig.show = false;
|
||||||
|
}
|
||||||
|
if (e) {
|
||||||
|
this.init(cloneDeep(e));
|
||||||
|
}
|
||||||
|
return {
|
||||||
|
add: (row) => {
|
||||||
|
this.formInline = row;
|
||||||
|
this.isAdd = true;
|
||||||
|
this.$nextTick(() => {
|
||||||
|
this.$refs.oTable.reload();
|
||||||
|
});
|
||||||
|
},
|
||||||
|
update: () => {
|
||||||
|
this.isAdd = false;
|
||||||
|
},
|
||||||
|
};
|
||||||
|
},
|
||||||
|
init(row) {},
|
||||||
|
},
|
||||||
|
computed: {
|
||||||
|
tableCols() {
|
||||||
|
return [
|
||||||
|
{ type: "seq", width: "60px", align: "center", title: "序号" },
|
||||||
|
{
|
||||||
|
title: "商品图",
|
||||||
|
field: "productPhotoList",
|
||||||
|
align: "center",
|
||||||
|
width: "100px",
|
||||||
|
type: "jsx",
|
||||||
|
render: ({ row }) => {
|
||||||
|
if (row.productPhotoList.length > 0) {
|
||||||
|
return (
|
||||||
|
<el-image
|
||||||
|
preview-src-list={row.productPhotoList.map((item) => {
|
||||||
|
return item.url;
|
||||||
|
})}
|
||||||
|
src={row.productPhotoList[0].url}
|
||||||
|
></el-image>
|
||||||
|
);
|
||||||
|
} else {
|
||||||
|
return <span>暂无商品图</span>;
|
||||||
|
}
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: "商品名称",
|
||||||
|
align: "center",
|
||||||
|
field: "name",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: "商品售价",
|
||||||
|
align: "center",
|
||||||
|
field: "minSalePrice",
|
||||||
|
type: "jsx",
|
||||||
|
render: ({ row }) => {
|
||||||
|
if (row.minSalePrice == row.maxSalePrice) {
|
||||||
|
return <span>¥{row.minSalePrice}</span>;
|
||||||
|
} else {
|
||||||
|
return (
|
||||||
|
<span>
|
||||||
|
¥{row.minSalePrice}~¥{row.maxSalePrice}
|
||||||
|
</span>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: "折扣",
|
||||||
|
align: "center",
|
||||||
|
field: "discountActivity",
|
||||||
|
type: "jsx",
|
||||||
|
render: ({ row }) => {
|
||||||
|
if (row.discountActivity) {
|
||||||
|
return <span>{row.discountActivity.ruleObject.discount}折</span>;
|
||||||
|
}
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: "销量",
|
||||||
|
align: "center",
|
||||||
|
field: "saleNum",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: "库存",
|
||||||
|
align: "center",
|
||||||
|
field: "stockNum",
|
||||||
|
},
|
||||||
|
];
|
||||||
|
},
|
||||||
|
modalHandles() {
|
||||||
|
return [
|
||||||
|
{
|
||||||
|
label: "取消",
|
||||||
|
handle: () => {
|
||||||
|
this.toggle();
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: "确认",
|
||||||
|
type: "primary",
|
||||||
|
handle: () => {
|
||||||
|
this.$emit("getProduct", this.selectList);
|
||||||
|
this.toggle();
|
||||||
|
},
|
||||||
|
},
|
||||||
|
];
|
||||||
|
},
|
||||||
|
},
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style>
|
||||||
|
</style>
|
|
@ -0,0 +1,307 @@
|
||||||
|
<template>
|
||||||
|
<div>
|
||||||
|
<obj-modal
|
||||||
|
ref="modal"
|
||||||
|
labelWidth="150px"
|
||||||
|
:modalConfig="modalConfig"
|
||||||
|
:modalData="modalData"
|
||||||
|
:modalHandles="modalHandles"
|
||||||
|
>
|
||||||
|
<template slot="dialog__content">
|
||||||
|
<el-form :model="modalData" ref="modalForm">
|
||||||
|
<el-form-item label-width="150px" label="可用范围" prop="name">
|
||||||
|
<div>
|
||||||
|
<el-radio
|
||||||
|
v-model="modalData.usableRange"
|
||||||
|
label="PARTIAL_GOODS"
|
||||||
|
border
|
||||||
|
size="medium"
|
||||||
|
>全部商品</el-radio
|
||||||
|
>
|
||||||
|
<el-radio
|
||||||
|
v-model="modalData.usableRange"
|
||||||
|
label="ALL_GOODS"
|
||||||
|
border
|
||||||
|
size="medium"
|
||||||
|
>部分商品</el-radio
|
||||||
|
>
|
||||||
|
<el-radio
|
||||||
|
v-model="modalData.usableRange"
|
||||||
|
label="PARTIAL_SHOP"
|
||||||
|
border
|
||||||
|
size="medium"
|
||||||
|
>部分摊位</el-radio
|
||||||
|
>
|
||||||
|
</div>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label-width="150px" label="优惠卷名称" prop="name">
|
||||||
|
<el-input
|
||||||
|
style="width: 350px"
|
||||||
|
v-model="modalData.name"
|
||||||
|
placeholder="请输入优惠券名称"
|
||||||
|
>
|
||||||
|
</el-input>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label-width="150px" label="使用日期" prop="name">
|
||||||
|
<el-date-picker
|
||||||
|
@change="usageDateChange"
|
||||||
|
v-model="usageDate"
|
||||||
|
value-format="yyyy-MM-dd"
|
||||||
|
type="daterange"
|
||||||
|
range-separator="至"
|
||||||
|
start-placeholder="开始日期"
|
||||||
|
end-placeholder="结束日期"
|
||||||
|
>
|
||||||
|
</el-date-picker>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label-width="150px" label="开放领取日期" prop="name">
|
||||||
|
<el-date-picker
|
||||||
|
@change="collectionDateChange"
|
||||||
|
v-model="collectionDate"
|
||||||
|
value-format="yyyy-MM-dd"
|
||||||
|
type="daterange"
|
||||||
|
range-separator="至"
|
||||||
|
start-placeholder="开始日期"
|
||||||
|
end-placeholder="结束日期"
|
||||||
|
>
|
||||||
|
</el-date-picker>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label-width="150px" label="优惠设置" prop="name">
|
||||||
|
<el-col class="line" :span="1">满</el-col>
|
||||||
|
<el-col :span="7">
|
||||||
|
<el-input placeholder="请输入" v-model="modalData.minPrice">
|
||||||
|
<template slot="append">元</template>
|
||||||
|
</el-input>
|
||||||
|
</el-col>
|
||||||
|
<el-col class="line" :span="1"></el-col>
|
||||||
|
<el-col class="line" :span="1">减</el-col>
|
||||||
|
<el-col :span="7">
|
||||||
|
<el-input placeholder="请输入" v-model="modalData.money">
|
||||||
|
<template slot="append">元</template>
|
||||||
|
</el-input>
|
||||||
|
</el-col>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label-width="150px" label="选择商品" prop="targetIds">
|
||||||
|
<el-input
|
||||||
|
style="width: 350px"
|
||||||
|
placeholder="请选择选择商品"
|
||||||
|
v-model="modalData.targetIds"
|
||||||
|
>
|
||||||
|
<template slot="append">
|
||||||
|
<el-button @click="selectProduct">请选择</el-button>
|
||||||
|
</template>
|
||||||
|
</el-input>
|
||||||
|
<div v-if="product.name" class="product">
|
||||||
|
<div>
|
||||||
|
<el-image
|
||||||
|
style="width: 80px; height: 80px; margin-right: 10px"
|
||||||
|
:src="product.productPhotoList[0].url"
|
||||||
|
>
|
||||||
|
</el-image>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<div style="line-height: 20px">
|
||||||
|
商品名称:{{ product.name }}
|
||||||
|
</div>
|
||||||
|
<div style="line-height: 20px">
|
||||||
|
库存:{{ product.stockNum }}
|
||||||
|
</div>
|
||||||
|
<div style="line-height: 20px; color: rgba(255, 87, 51, 1)">
|
||||||
|
¥{{ product.minSalePrice }}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label-width="150px" label="发放数量" prop="targetIds">
|
||||||
|
<el-input-number
|
||||||
|
v-model="modalData.total"
|
||||||
|
:min="0"
|
||||||
|
:max="99999"
|
||||||
|
label="请输入"
|
||||||
|
></el-input-number>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label-width="150px" label="每人限领" prop="targetIds">
|
||||||
|
<el-select v-model="modalData.limitedNum" placeholder="请选择">
|
||||||
|
<el-option
|
||||||
|
v-for="item in [
|
||||||
|
{
|
||||||
|
label: '不限',
|
||||||
|
value: 0,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: '1张',
|
||||||
|
value: 1,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: '2张',
|
||||||
|
value: 2,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: '3张',
|
||||||
|
value: 3,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: '4张',
|
||||||
|
value: 4,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: '5张',
|
||||||
|
value: 5,
|
||||||
|
},
|
||||||
|
]"
|
||||||
|
:key="item.value"
|
||||||
|
:label="item.label"
|
||||||
|
:value="item.value"
|
||||||
|
>
|
||||||
|
</el-option>
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
</el-form>
|
||||||
|
</template>
|
||||||
|
</obj-modal>
|
||||||
|
<!-- 选择商品 -->
|
||||||
|
<commodity @getProduct="getProduct" ref="commodity"></commodity>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
<script>
|
||||||
|
import commodity from "./commodity.vue";
|
||||||
|
import { debounce, cloneDeep } from "lodash";
|
||||||
|
import { Divider } from "element-ui";
|
||||||
|
import loginVue from "../../../common/login.vue";
|
||||||
|
export default {
|
||||||
|
components: { commodity },
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
isAdd: true,
|
||||||
|
//表格属性
|
||||||
|
modalConfig: {
|
||||||
|
title: "添加优惠卷",
|
||||||
|
show: false,
|
||||||
|
width: "800px",
|
||||||
|
},
|
||||||
|
formInline: {
|
||||||
|
marketId: "",
|
||||||
|
shopId: "",
|
||||||
|
},
|
||||||
|
modalData: {},
|
||||||
|
usageDate: [], //使用时间
|
||||||
|
collectionDate: [], //领取日期
|
||||||
|
product: {}, //商品
|
||||||
|
};
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
queryTableData(pageNo, pageSize) {},
|
||||||
|
toggle(e) {
|
||||||
|
if (this.modalConfig.show == false) {
|
||||||
|
this.modalConfig.show = true;
|
||||||
|
} else {
|
||||||
|
this.modalConfig.show = false;
|
||||||
|
}
|
||||||
|
if (e) {
|
||||||
|
this.init(cloneDeep(e));
|
||||||
|
}
|
||||||
|
return {
|
||||||
|
add: (row) => {
|
||||||
|
this.formInline = {
|
||||||
|
marketId: row.marketId,
|
||||||
|
shopId: row.shopId,
|
||||||
|
};
|
||||||
|
this.modalConfig.title = `添加${row.label}`;
|
||||||
|
this.$nextTick(() => {
|
||||||
|
this.modalData = {
|
||||||
|
category: "NO_THRESHOLD",
|
||||||
|
receiveType: "MANUAL",
|
||||||
|
couponType: "MONEY",
|
||||||
|
isTimeReceive: 1, //0-不限时,1-限时
|
||||||
|
name: "",
|
||||||
|
useStartTime: "",
|
||||||
|
useEndTime: "",
|
||||||
|
receiveStartTime: "",
|
||||||
|
receiveEndTime: "",
|
||||||
|
money: "",
|
||||||
|
total: 10000,
|
||||||
|
limitedNum: 0,
|
||||||
|
minPrice: 0,
|
||||||
|
usableRange: "PARTIAL_GOODS", //部分商品-PARTIAL_GOODS 所有商品-ALL_GOODS 部分摊位-PARTIAL_SHOP
|
||||||
|
};
|
||||||
|
// this.$refs.modal.resetFields();
|
||||||
|
});
|
||||||
|
this.isAdd = true;
|
||||||
|
},
|
||||||
|
update: () => {
|
||||||
|
this.isAdd = false;
|
||||||
|
},
|
||||||
|
};
|
||||||
|
},
|
||||||
|
init(row) {},
|
||||||
|
usageDateChange(e) {
|
||||||
|
if (e) {
|
||||||
|
this.modalData.useStartTime = e[0];
|
||||||
|
this.modalData.useEndTime = e[1];
|
||||||
|
} else {
|
||||||
|
this.modalData.useStartTime = "";
|
||||||
|
this.modalData.useEndTime = "";
|
||||||
|
}
|
||||||
|
},
|
||||||
|
collectionDateChange(e) {
|
||||||
|
if (e) {
|
||||||
|
this.modalData.receiveStartTime = e[0];
|
||||||
|
this.modalData.receiveEndTime = e[1];
|
||||||
|
} else {
|
||||||
|
this.modalData.receiveStartTime = "";
|
||||||
|
this.modalData.receiveEndTime = "";
|
||||||
|
}
|
||||||
|
},
|
||||||
|
//选择商品
|
||||||
|
selectProduct() {
|
||||||
|
console.log("123");
|
||||||
|
this.$refs.commodity.toggle().add(this.formInline);
|
||||||
|
},
|
||||||
|
//获取商品
|
||||||
|
getProduct(row) {
|
||||||
|
console.log(row);
|
||||||
|
this.modalData.targetIds = row.id;
|
||||||
|
this.product = row;
|
||||||
|
},
|
||||||
|
},
|
||||||
|
computed: {
|
||||||
|
modalHandles() {
|
||||||
|
return [
|
||||||
|
{
|
||||||
|
label: "取消",
|
||||||
|
handle: () => {
|
||||||
|
this.toggle();
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: "确认添加",
|
||||||
|
type: "primary",
|
||||||
|
handle: () => {
|
||||||
|
console.log(this.modalData);
|
||||||
|
let data = { ...this.modalData };
|
||||||
|
data.targetIds = [data.targetIds];
|
||||||
|
console.log(this.modalData, data);
|
||||||
|
this.$api.coupon
|
||||||
|
.addCoupon({ ...data, ...this.formInline })
|
||||||
|
.then((res) => {
|
||||||
|
console.log(res);
|
||||||
|
this.$emit("queryList");
|
||||||
|
this.toggle();
|
||||||
|
});
|
||||||
|
},
|
||||||
|
},
|
||||||
|
];
|
||||||
|
},
|
||||||
|
},
|
||||||
|
asyncComputed: {},
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
.product {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
margin-top: 10px;
|
||||||
|
border: 1px solid #ccc;
|
||||||
|
width: 350px;
|
||||||
|
}
|
||||||
|
</style>
|
|
@ -0,0 +1,307 @@
|
||||||
|
<template>
|
||||||
|
<div>
|
||||||
|
<obj-modal
|
||||||
|
ref="modal"
|
||||||
|
labelWidth="150px"
|
||||||
|
:modalConfig="modalConfig"
|
||||||
|
:modalData="modalData"
|
||||||
|
:modalHandles="modalHandles"
|
||||||
|
>
|
||||||
|
<template slot="dialog__content">
|
||||||
|
<el-form :model="modalData" :rules="rules" ref="modalForm">
|
||||||
|
<el-form-item label-width="150px" label="优惠卷名称:" prop="name">
|
||||||
|
<el-input
|
||||||
|
style="width: 350px"
|
||||||
|
v-model="modalData.name"
|
||||||
|
placeholder="请输入优惠券名称"
|
||||||
|
>
|
||||||
|
</el-input>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label-width="150px" label="使用时间:" prop="day">
|
||||||
|
<el-col class="line" :span="2">领取后</el-col>
|
||||||
|
<el-col :span="7">
|
||||||
|
<el-input-number
|
||||||
|
placeholder="请输入"
|
||||||
|
controls-position="right"
|
||||||
|
:precision="0"
|
||||||
|
v-model="modalData.day"
|
||||||
|
:min="0"
|
||||||
|
:max="365"
|
||||||
|
label="请输入"
|
||||||
|
></el-input-number>
|
||||||
|
</el-col>
|
||||||
|
<el-col style="margin-left: 8px" :span="5"
|
||||||
|
>(单位:天) 内可使用</el-col
|
||||||
|
>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label-width="150px" label="可用范围:" prop="name">
|
||||||
|
<div>
|
||||||
|
<el-radio
|
||||||
|
@change="changeThreshold"
|
||||||
|
v-model="threshold"
|
||||||
|
:label="false"
|
||||||
|
border
|
||||||
|
size="medium"
|
||||||
|
>无门槛</el-radio
|
||||||
|
>
|
||||||
|
<el-radio
|
||||||
|
@change="changeThreshold"
|
||||||
|
v-model="threshold"
|
||||||
|
:label="true"
|
||||||
|
border
|
||||||
|
size="medium"
|
||||||
|
>有门槛</el-radio
|
||||||
|
>
|
||||||
|
</div>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item
|
||||||
|
v-if="!threshold"
|
||||||
|
label-width="150px"
|
||||||
|
label="优惠金额:"
|
||||||
|
prop="money"
|
||||||
|
>
|
||||||
|
<el-col :span="7">
|
||||||
|
<el-input-number
|
||||||
|
placeholder="请输入"
|
||||||
|
controls-position="right"
|
||||||
|
:precision="0"
|
||||||
|
v-model="modalData.money"
|
||||||
|
:min="0"
|
||||||
|
:max="99999"
|
||||||
|
label="请输入"
|
||||||
|
></el-input-number>
|
||||||
|
</el-col>
|
||||||
|
<span>(单位:元)</span>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item
|
||||||
|
v-if="threshold"
|
||||||
|
label-width="150px"
|
||||||
|
label="优惠设置:"
|
||||||
|
prop="money"
|
||||||
|
>
|
||||||
|
<el-col class="line" :span="1">满</el-col>
|
||||||
|
<el-col :span="7">
|
||||||
|
<el-input-number
|
||||||
|
placeholder="请输入"
|
||||||
|
controls-position="right"
|
||||||
|
:precision="0"
|
||||||
|
v-model="modalData.minPrice"
|
||||||
|
:min="0"
|
||||||
|
:max="99999"
|
||||||
|
label="请输入"
|
||||||
|
></el-input-number>
|
||||||
|
</el-col>
|
||||||
|
<el-col class="line" :span="1"></el-col>
|
||||||
|
<el-col class="line" :span="1">减</el-col>
|
||||||
|
<el-col :span="7">
|
||||||
|
<el-input-number
|
||||||
|
placeholder="请输入"
|
||||||
|
controls-position="right"
|
||||||
|
:precision="0"
|
||||||
|
v-model="modalData.money"
|
||||||
|
:min="0"
|
||||||
|
:max="modalData.minPrice"
|
||||||
|
label="请输入"
|
||||||
|
></el-input-number>
|
||||||
|
</el-col>
|
||||||
|
<span>(单位:元)</span>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label-width="150px" label="发放数量:" prop="total">
|
||||||
|
<el-input-number
|
||||||
|
controls-position="right"
|
||||||
|
:precision="0"
|
||||||
|
v-model="modalData.total"
|
||||||
|
:min="0"
|
||||||
|
:max="99999"
|
||||||
|
label="请输入"
|
||||||
|
></el-input-number>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item
|
||||||
|
label-width="150px"
|
||||||
|
label="每人限领:"
|
||||||
|
prop="limitedNum"
|
||||||
|
>
|
||||||
|
<el-select v-model="modalData.limitedNum" placeholder="请选择">
|
||||||
|
<el-option
|
||||||
|
v-for="item in [
|
||||||
|
{
|
||||||
|
label: '不限',
|
||||||
|
value: 0,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: '1张',
|
||||||
|
value: 1,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: '2张',
|
||||||
|
value: 2,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: '3张',
|
||||||
|
value: 3,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: '4张',
|
||||||
|
value: 4,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: '5张',
|
||||||
|
value: 5,
|
||||||
|
},
|
||||||
|
]"
|
||||||
|
:key="item.value"
|
||||||
|
:label="item.label"
|
||||||
|
:value="item.value"
|
||||||
|
>
|
||||||
|
</el-option>
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
</el-form>
|
||||||
|
</template>
|
||||||
|
</obj-modal>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
<script>
|
||||||
|
import { debounce, cloneDeep } from "lodash";
|
||||||
|
export default {
|
||||||
|
components: {},
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
isAdd: true,
|
||||||
|
//表格属性
|
||||||
|
threshold: false, //有无门槛
|
||||||
|
modalConfig: {
|
||||||
|
title: "添加优惠卷",
|
||||||
|
show: false,
|
||||||
|
width: "800px",
|
||||||
|
},
|
||||||
|
formInline: {
|
||||||
|
marketId: "",
|
||||||
|
shopId: "",
|
||||||
|
},
|
||||||
|
modalData: {},
|
||||||
|
usageDate: [], //使用时间
|
||||||
|
collectionDate: [], //领取日期
|
||||||
|
rules: {
|
||||||
|
name: [
|
||||||
|
{
|
||||||
|
required: true,
|
||||||
|
message: "请输入优惠卷名称",
|
||||||
|
trigger: "blur",
|
||||||
|
},
|
||||||
|
{ min: 1, max: 10, message: "长度10字符以内", trigger: "blur" },
|
||||||
|
],
|
||||||
|
day: [
|
||||||
|
{
|
||||||
|
required: true,
|
||||||
|
message: "请输入领取后有效天数",
|
||||||
|
trigger: "blur",
|
||||||
|
},
|
||||||
|
],
|
||||||
|
money: [
|
||||||
|
{
|
||||||
|
required: true,
|
||||||
|
message: "请输入优惠金额",
|
||||||
|
trigger: "blur",
|
||||||
|
},
|
||||||
|
],
|
||||||
|
total: [
|
||||||
|
{
|
||||||
|
required: true,
|
||||||
|
message: "请输入发放数量",
|
||||||
|
trigger: "blur",
|
||||||
|
},
|
||||||
|
],
|
||||||
|
limitedNum: [
|
||||||
|
{
|
||||||
|
required: true,
|
||||||
|
message: "请输入每人限领数量",
|
||||||
|
trigger: "change",
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
};
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
queryTableData(pageNo, pageSize) {},
|
||||||
|
toggle(e) {
|
||||||
|
if (this.modalConfig.show == false) {
|
||||||
|
this.modalConfig.show = true;
|
||||||
|
} else {
|
||||||
|
this.modalConfig.show = false;
|
||||||
|
}
|
||||||
|
if (e) {
|
||||||
|
this.init(cloneDeep(e));
|
||||||
|
}
|
||||||
|
return {
|
||||||
|
add: (row) => {
|
||||||
|
this.formInline = {
|
||||||
|
marketId: row.marketId,
|
||||||
|
shopId: row.shopId,
|
||||||
|
};
|
||||||
|
this.modalConfig.title = `添加${row.label}`;
|
||||||
|
this.$nextTick(() => {
|
||||||
|
this.modalData = {
|
||||||
|
category: "FIRST_ATTENTION",
|
||||||
|
receiveType: "MANUAL",
|
||||||
|
couponType: "MONEY",
|
||||||
|
isTimeReceive: 0, //0-不限时,1-限时
|
||||||
|
name: "",
|
||||||
|
day: "7",
|
||||||
|
money: "",
|
||||||
|
total: 10000,
|
||||||
|
limitedNum: 0,
|
||||||
|
minPrice: 0,
|
||||||
|
usableRange: "ALL_GOODS", //部分商品-PARTIAL_GOODS 所有商品-ALL_GOODS 部分摊位-PARTIAL_SHOP
|
||||||
|
};
|
||||||
|
// this.$refs.modal.resetFields();
|
||||||
|
});
|
||||||
|
this.isAdd = true;
|
||||||
|
},
|
||||||
|
update: () => {
|
||||||
|
this.isAdd = false;
|
||||||
|
},
|
||||||
|
};
|
||||||
|
},
|
||||||
|
init(row) {},
|
||||||
|
changeThreshold(e) {
|
||||||
|
if (e) {
|
||||||
|
this.modalData.minPrice = 0;
|
||||||
|
this.modalData.money = 0;
|
||||||
|
} else {
|
||||||
|
this.modalData.minPrice = 0;
|
||||||
|
this.modalData.money = 0;
|
||||||
|
}
|
||||||
|
},
|
||||||
|
},
|
||||||
|
computed: {
|
||||||
|
modalHandles() {
|
||||||
|
return [
|
||||||
|
{
|
||||||
|
label: "取消",
|
||||||
|
handle: () => {
|
||||||
|
this.toggle();
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: "确认添加",
|
||||||
|
type: "primary",
|
||||||
|
handle: () => {
|
||||||
|
console.log(this.modalData);
|
||||||
|
this.$api.coupon
|
||||||
|
.addCoupon({ ...this.modalData, ...this.formInline })
|
||||||
|
.then((res) => {
|
||||||
|
console.log(res);
|
||||||
|
this.$emit("queryList");
|
||||||
|
this.toggle();
|
||||||
|
});
|
||||||
|
},
|
||||||
|
},
|
||||||
|
];
|
||||||
|
},
|
||||||
|
},
|
||||||
|
asyncComputed: {},
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
</style>
|
|
@ -0,0 +1,301 @@
|
||||||
|
<template>
|
||||||
|
<div>
|
||||||
|
<div>
|
||||||
|
<el-select
|
||||||
|
style="margin-right: 20px"
|
||||||
|
v-model="value1"
|
||||||
|
placeholder="请选择统计类型"
|
||||||
|
>
|
||||||
|
<el-option
|
||||||
|
v-for="item in [
|
||||||
|
{ value: '1', label: '1' },
|
||||||
|
{ value: '2', label: '2' },
|
||||||
|
]"
|
||||||
|
:key="item.value"
|
||||||
|
:label="item.label"
|
||||||
|
:value="item.value"
|
||||||
|
>
|
||||||
|
</el-option>
|
||||||
|
</el-select>
|
||||||
|
<el-select
|
||||||
|
style="margin-right: 20px"
|
||||||
|
v-model="value"
|
||||||
|
placeholder="请选择"
|
||||||
|
>
|
||||||
|
<el-option
|
||||||
|
v-for="item in [
|
||||||
|
{ value: '1', label: '日' },
|
||||||
|
{ value: '2', label: '周' },
|
||||||
|
{ value: '3', label: '月' },
|
||||||
|
{ value: '4', label: '年' },
|
||||||
|
]"
|
||||||
|
:key="item.value"
|
||||||
|
:label="item.label"
|
||||||
|
:value="item.value"
|
||||||
|
>
|
||||||
|
</el-option>
|
||||||
|
</el-select>
|
||||||
|
<el-button @click="getList" type="primary">查询</el-button>
|
||||||
|
<el-button type="success">导出</el-button>
|
||||||
|
</div>
|
||||||
|
<div class="stat-list">
|
||||||
|
<div class="stat-item">
|
||||||
|
<i style="font-size: 22px" class="el-icon-camera-solid"></i>
|
||||||
|
<div class="stat-right">
|
||||||
|
<div class="stat-title">展现量 (次)</div>
|
||||||
|
<div class="stat-value">
|
||||||
|
<span style="font-size: 20px">{{
|
||||||
|
analysis.viewCount ? analysis.viewCount : "0"
|
||||||
|
}}</span>
|
||||||
|
<span
|
||||||
|
v-if="analysis.viewCountRatio < 0"
|
||||||
|
style="font-size: 16px; margin: 0 5px; color: green"
|
||||||
|
>↓</span
|
||||||
|
>
|
||||||
|
<span style="font-size: 16px; margin: 0 5px; color: red" v-else
|
||||||
|
>↑</span
|
||||||
|
>
|
||||||
|
<span style="font-size: 16px">{{
|
||||||
|
absoluteValue(analysis.viewCountRatio)
|
||||||
|
}}</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="stat-item">
|
||||||
|
<i style="font-size: 22px" class="el-icon-user-solid"></i>
|
||||||
|
<div class="stat-right">
|
||||||
|
<div class="stat-title">浏览人数 (人)</div>
|
||||||
|
<div class="stat-value">
|
||||||
|
<span style="font-size: 20px">62</span>
|
||||||
|
<span
|
||||||
|
v-if="analysis.peopleCountRatio < 0"
|
||||||
|
style="font-size: 16px; margin: 0 5px; color: green"
|
||||||
|
>↓</span
|
||||||
|
>
|
||||||
|
<span style="font-size: 16px; margin: 0 5px; color: red" v-else
|
||||||
|
>↑</span
|
||||||
|
>
|
||||||
|
<span style="font-size: 16px">{{
|
||||||
|
absoluteValue(analysis.peopleCountRatio)
|
||||||
|
}}</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="stat-item">
|
||||||
|
<i style="font-size: 22px" class="el-icon-user-solid"></i>
|
||||||
|
<div class="stat-right">
|
||||||
|
<div class="stat-title">新客数量 (人)</div>
|
||||||
|
<div class="stat-value">
|
||||||
|
<span style="font-size: 20px">{{
|
||||||
|
analysis.newPeopleCount ? analysis.newPeopleCount : "0"
|
||||||
|
}}</span>
|
||||||
|
<span
|
||||||
|
v-if="analysis.newPeopleCountRatio"
|
||||||
|
style="font-size: 16px; margin: 0 5px; color: green"
|
||||||
|
>↓</span
|
||||||
|
>
|
||||||
|
<span style="font-size: 16px; margin: 0 5px; color: red" v-else
|
||||||
|
>↑</span
|
||||||
|
>
|
||||||
|
<span style="font-size: 16px">{{
|
||||||
|
absoluteValue(analysis.newPeopleCountRatio)
|
||||||
|
}}</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="stat-item">
|
||||||
|
<i style="font-size: 22px" class="el-icon-user-solid"></i>
|
||||||
|
<div class="stat-right">
|
||||||
|
<div class="stat-title">支付订单人数 (人)</div>
|
||||||
|
<div style="font-size: 20px" class="stat-value">
|
||||||
|
{{ analysis.payCount ? analysis.payCount : "0" }}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="stat-item">
|
||||||
|
<i style="font-size: 22px" class="el-icon-s-order"></i>
|
||||||
|
<div class="stat-right">
|
||||||
|
<div class="stat-title">支付订单转化率 (%)</div>
|
||||||
|
<div style="font-size: 20px" class="stat-value">
|
||||||
|
{{ analysis.payConversion ? analysis.payConversion : "0" }}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="stat-item">
|
||||||
|
<i style="font-size: 22px" class="el-icon-s-order"></i>
|
||||||
|
<div class="stat-right">
|
||||||
|
<div class="stat-title">客户复购率 (%)</div>
|
||||||
|
<div style="font-size: 20px" class="stat-value">
|
||||||
|
{{ analysis.repurchaseRate ? analysis.repurchaseRate : "0" }}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<el-row class="echarts-line">
|
||||||
|
<div
|
||||||
|
id="echarts-LineChart"
|
||||||
|
style="
|
||||||
|
width: 100%;
|
||||||
|
height: calc(100vh - 500px);
|
||||||
|
margin-top: 20px;
|
||||||
|
border: 1px solid #ccc;
|
||||||
|
"
|
||||||
|
/>
|
||||||
|
</el-row>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import { mapState } from "vuex";
|
||||||
|
import * as echarts from "echarts";
|
||||||
|
export default {
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
value1: "",
|
||||||
|
value: "",
|
||||||
|
formInline: {
|
||||||
|
marketId: "",
|
||||||
|
shopId: "",
|
||||||
|
brandId: "",
|
||||||
|
countType: "",
|
||||||
|
dataType: "",
|
||||||
|
provinceCode: "",
|
||||||
|
cityCode: "",
|
||||||
|
},
|
||||||
|
analysis: {},
|
||||||
|
trend: [],
|
||||||
|
};
|
||||||
|
},
|
||||||
|
mounted() {
|
||||||
|
this.formInline = {
|
||||||
|
marketId: this.marketId,
|
||||||
|
shopId: this.shopId,
|
||||||
|
brandId: JSON.parse(sessionStorage.getItem("userInfo")).brandId,
|
||||||
|
};
|
||||||
|
this.getList();
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
getList() {
|
||||||
|
console.log("1213");
|
||||||
|
this.$api.dataCenter.customerAnalysis(this.formInline).then((res) => {
|
||||||
|
this.analysis = res.data.data;
|
||||||
|
});
|
||||||
|
this.$api.dataCenter.customerTrend(this.formInline).then((res) => {
|
||||||
|
console.log(res);
|
||||||
|
});
|
||||||
|
this.init();
|
||||||
|
},
|
||||||
|
init() {
|
||||||
|
this.$nextTick(() => {
|
||||||
|
// 折线图
|
||||||
|
const myChat = echarts.init(
|
||||||
|
document.getElementById("echarts-LineChart")
|
||||||
|
);
|
||||||
|
myChat.setOption(this.LineChart());
|
||||||
|
window.addEventListener("resize", () => {
|
||||||
|
myChat.resize();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
},
|
||||||
|
LineChart() {
|
||||||
|
return {
|
||||||
|
title: {
|
||||||
|
text: "交易趋势分析",
|
||||||
|
},
|
||||||
|
tooltip: {
|
||||||
|
trigger: "axis",
|
||||||
|
},
|
||||||
|
legend: {
|
||||||
|
data: ["订单金额", "订单数", "订单商品数"],
|
||||||
|
},
|
||||||
|
grid: {
|
||||||
|
left: "3%",
|
||||||
|
right: "4%",
|
||||||
|
bottom: "3%",
|
||||||
|
containLabel: true,
|
||||||
|
},
|
||||||
|
toolbox: {
|
||||||
|
feature: {
|
||||||
|
saveAsImage: {},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
xAxis: {
|
||||||
|
type: "category",
|
||||||
|
boundaryGap: false,
|
||||||
|
data: ["Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"],
|
||||||
|
},
|
||||||
|
yAxis: {
|
||||||
|
type: "value",
|
||||||
|
},
|
||||||
|
series: [
|
||||||
|
{
|
||||||
|
name: "订单金额",
|
||||||
|
type: "line",
|
||||||
|
stack: "Total",
|
||||||
|
data: [120, 132, 101, 134, 90, 230, 210],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "订单数",
|
||||||
|
type: "line",
|
||||||
|
stack: "Total",
|
||||||
|
data: [220, 182, 191, 234, 290, 330, 310],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "订单商品数",
|
||||||
|
type: "line",
|
||||||
|
stack: "Total",
|
||||||
|
data: [150, 232, 201, 154, 190, 330, 410],
|
||||||
|
},
|
||||||
|
],
|
||||||
|
};
|
||||||
|
},
|
||||||
|
absoluteValue(row) {
|
||||||
|
if (row === 0) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
return Math.abs(row);
|
||||||
|
},
|
||||||
|
},
|
||||||
|
computed: {
|
||||||
|
...mapState("userData", [
|
||||||
|
"isMerchant",
|
||||||
|
"marketList",
|
||||||
|
"storeList",
|
||||||
|
"marketId",
|
||||||
|
"shopId",
|
||||||
|
]),
|
||||||
|
},
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
.stat-list {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
/* justify-content: space-between; */
|
||||||
|
flex-wrap: wrap;
|
||||||
|
margin-top: 20px;
|
||||||
|
padding: 10px;
|
||||||
|
border: 1px solid #ccc;
|
||||||
|
}
|
||||||
|
.stat-item {
|
||||||
|
width: 25%;
|
||||||
|
margin: 30px 30px;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
}
|
||||||
|
.stat-icon {
|
||||||
|
background: rgb(99 152 252);
|
||||||
|
width: 60px;
|
||||||
|
height: 60px;
|
||||||
|
border-radius: 3px;
|
||||||
|
}
|
||||||
|
.stat-right {
|
||||||
|
margin-left: 12px;
|
||||||
|
font-size: 18px;
|
||||||
|
}
|
||||||
|
.stat-title {
|
||||||
|
color: #969696;
|
||||||
|
margin-bottom: 10px;
|
||||||
|
}
|
||||||
|
</style>
|
|
@ -0,0 +1,285 @@
|
||||||
|
<template>
|
||||||
|
<div>
|
||||||
|
<div>
|
||||||
|
<el-select
|
||||||
|
style="margin-right: 20px"
|
||||||
|
v-model="value1"
|
||||||
|
placeholder="请选择统计类型"
|
||||||
|
>
|
||||||
|
<el-option
|
||||||
|
v-for="item in [
|
||||||
|
{ value: '1', label: '1' },
|
||||||
|
{ value: '2', label: '2' },
|
||||||
|
]"
|
||||||
|
:key="item.value"
|
||||||
|
:label="item.label"
|
||||||
|
:value="item.value"
|
||||||
|
>
|
||||||
|
</el-option>
|
||||||
|
</el-select>
|
||||||
|
<el-button type="primary">查询</el-button>
|
||||||
|
</div>
|
||||||
|
<div class="product">
|
||||||
|
<div style="font-size: 18px">订单分析</div>
|
||||||
|
<div class="stat-list">
|
||||||
|
<div class="stat-item">
|
||||||
|
<div class="stat-right">
|
||||||
|
<div class="stat-title">下单订单数量</div>
|
||||||
|
<div style="font-size: 20px" class="stat-value">435</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="stat-item">
|
||||||
|
<div class="stat-right">
|
||||||
|
<div class="stat-title">支付订单数量</div>
|
||||||
|
<div style="font-size: 20px" class="stat-value">45</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="stat-item">
|
||||||
|
<div class="stat-right">
|
||||||
|
<div class="stat-title">有效订单数量</div>
|
||||||
|
<div style="font-size: 20px" class="stat-value">34</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="stat-item">
|
||||||
|
<div class="stat-right">
|
||||||
|
<div class="stat-title">有效订单率</div>
|
||||||
|
<div style="font-size: 20px" class="stat-value">199</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="stat-item">
|
||||||
|
<div class="stat-right">
|
||||||
|
<div class="stat-title">订单实付金额(元)</div>
|
||||||
|
<div style="font-size: 20px" class="stat-value">1256</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="stat-item">
|
||||||
|
<div class="stat-right">
|
||||||
|
<div class="stat-title">订单退款金额(元)</div>
|
||||||
|
<div style="font-size: 20px" class="stat-value">1256</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="stat-item">
|
||||||
|
<div class="stat-right">
|
||||||
|
<div class="stat-title">售后订单数量</div>
|
||||||
|
<div style="font-size: 20px" class="stat-value">34</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="stat-item">
|
||||||
|
<div class="stat-right">
|
||||||
|
<div class="stat-title">售后订单率(%)</div>
|
||||||
|
<div style="font-size: 20px" class="stat-value">199</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div style="padding: 20px; border: 1px solid #ccc; margin-top: 20px">
|
||||||
|
<div style="font-size: 18px; margin-bottom: 40px">订单结算明细</div>
|
||||||
|
<el-form :inline="true" :model="formInline" class="demo-form-inline">
|
||||||
|
<el-form-item label="下单时间">
|
||||||
|
<el-date-picker
|
||||||
|
v-model="value"
|
||||||
|
type="datetimerange"
|
||||||
|
start-placeholder="开始日期"
|
||||||
|
end-placeholder="结束日期"
|
||||||
|
>
|
||||||
|
</el-date-picker>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="结算时间">
|
||||||
|
<el-date-picker
|
||||||
|
v-model="value"
|
||||||
|
type="datetimerange"
|
||||||
|
start-placeholder="开始日期"
|
||||||
|
end-placeholder="结束日期"
|
||||||
|
>
|
||||||
|
</el-date-picker>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="状态:">
|
||||||
|
<el-select v-model="formInline.marketId" placeholder="请选择状态">
|
||||||
|
<el-option
|
||||||
|
v-for="item in [
|
||||||
|
{ label: '全部', value: '' },
|
||||||
|
{ label: '进行中', value: '1' },
|
||||||
|
{ label: '已结算', value: '2' },
|
||||||
|
]"
|
||||||
|
:key="item.value"
|
||||||
|
:label="item.label"
|
||||||
|
:value="item.value"
|
||||||
|
></el-option>
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item>
|
||||||
|
<el-button type="primary">查询</el-button>
|
||||||
|
<el-button type="primary">导出</el-button>
|
||||||
|
</el-form-item>
|
||||||
|
</el-form>
|
||||||
|
<div
|
||||||
|
style="
|
||||||
|
background: #edf4ff;
|
||||||
|
height: 80px;
|
||||||
|
margin-bottom: 10px;
|
||||||
|
font-size: 16px;
|
||||||
|
"
|
||||||
|
class="stat-list"
|
||||||
|
>
|
||||||
|
<div>
|
||||||
|
<span>退款金额</span><span style="margin-left: 10px">¥</span
|
||||||
|
><span style="font-weight: 600; font-size: 22px">999</span>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<span>订单支出</span><span style="margin-left: 10px">¥</span
|
||||||
|
><span style="font-weight: 600; font-size: 22px">999</span>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<span>待入账金额</span><span style="margin-left: 10px">¥</span
|
||||||
|
><span style="font-weight: 600; font-size: 22px">888</span>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<span>已入账金额</span><span style="margin-left: 10px">¥</span
|
||||||
|
><span style="font-weight: 600; font-size: 22px">888</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<el-table :data="tableData" border style="width: 100%">
|
||||||
|
<el-table-column align="center" type="index" label="排名" width="50">
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column prop="date" label="订单编号"> </el-table-column>
|
||||||
|
<el-table-column
|
||||||
|
align="center"
|
||||||
|
prop="name"
|
||||||
|
label="下单时间"
|
||||||
|
width="140"
|
||||||
|
>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column
|
||||||
|
align="center"
|
||||||
|
prop="name"
|
||||||
|
label="结算时间"
|
||||||
|
>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column
|
||||||
|
align="center"
|
||||||
|
prop="name"
|
||||||
|
label="实付金额(元)"
|
||||||
|
>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column
|
||||||
|
align="center"
|
||||||
|
prop="name"
|
||||||
|
label="退款金额(元)"
|
||||||
|
width="140"
|
||||||
|
>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column
|
||||||
|
align="center"
|
||||||
|
prop="name"
|
||||||
|
label="订单支出(元)"
|
||||||
|
width="140"
|
||||||
|
>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column
|
||||||
|
align="center"
|
||||||
|
prop="name"
|
||||||
|
label="入账金额(元)"
|
||||||
|
width="140"
|
||||||
|
>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column align="center" prop="name" label="状态" width="140">
|
||||||
|
</el-table-column>
|
||||||
|
</el-table>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
export default {
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
value1: "",
|
||||||
|
value: "",
|
||||||
|
formInline: {
|
||||||
|
marketId: "",
|
||||||
|
shopId: "",
|
||||||
|
name: "",
|
||||||
|
},
|
||||||
|
tableData: [
|
||||||
|
{
|
||||||
|
date: "2016-05-02",
|
||||||
|
name: "王小虎",
|
||||||
|
address: "上海市普陀区金沙江路 1518 弄",
|
||||||
|
url: "https://fuss10.elemecdn.com/e/5d/4a731a90594a4af544c0c25941171jpeg.jpeg",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
date: "2016-05-04",
|
||||||
|
name: "王小虎",
|
||||||
|
address: "上海市普陀区金沙江路 1517 弄",
|
||||||
|
url: "https://fuss10.elemecdn.com/e/5d/4a731a90594a4af544c0c25941171jpeg.jpeg",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
date: "2016-05-01",
|
||||||
|
name: "王小虎",
|
||||||
|
address: "上海市普陀区金沙江路 1519 弄",
|
||||||
|
url: "https://fuss10.elemecdn.com/e/5d/4a731a90594a4af544c0c25941171jpeg.jpeg",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
date: "2016-05-03",
|
||||||
|
name: "王小虎",
|
||||||
|
address: "上海市普陀区金沙江路 1516 弄",
|
||||||
|
url: "https://fuss10.elemecdn.com/e/5d/4a731a90594a4af544c0c25941171jpeg.jpeg",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
date: "2016-05-03",
|
||||||
|
name: "王小虎",
|
||||||
|
address: "上海市普陀区金沙江路 1516 弄",
|
||||||
|
url: "https://fuss10.elemecdn.com/e/5d/4a731a90594a4af544c0c25941171jpeg.jpeg",
|
||||||
|
},
|
||||||
|
],
|
||||||
|
};
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
init() {},
|
||||||
|
},
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
.product {
|
||||||
|
margin-top: 20px;
|
||||||
|
padding: 10px;
|
||||||
|
// border: 1px solid #ccc;
|
||||||
|
background: #edf4ff;
|
||||||
|
}
|
||||||
|
.stat-list {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: space-between;
|
||||||
|
flex-wrap: wrap;
|
||||||
|
// margin-top: 20px;
|
||||||
|
padding: 10px;
|
||||||
|
// border: 1px solid #ccc;
|
||||||
|
}
|
||||||
|
.stat-item {
|
||||||
|
width: 21%;
|
||||||
|
margin: 30px 0;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
}
|
||||||
|
.stat-icon {
|
||||||
|
background: rgb(99 152 252);
|
||||||
|
width: 60px;
|
||||||
|
height: 60px;
|
||||||
|
border-radius: 3px;
|
||||||
|
}
|
||||||
|
.stat-right {
|
||||||
|
margin-left: 12px;
|
||||||
|
font-size: 18px;
|
||||||
|
}
|
||||||
|
.stat-title {
|
||||||
|
// color: #969696;
|
||||||
|
font-weight: 600;
|
||||||
|
margin-bottom: 10px;
|
||||||
|
}
|
||||||
|
.grid-content {
|
||||||
|
margin-bottom: 20px;
|
||||||
|
font-size: 20px;
|
||||||
|
font-weight: 600;
|
||||||
|
}
|
||||||
|
</style>
|
|
@ -0,0 +1,242 @@
|
||||||
|
<template>
|
||||||
|
<div>
|
||||||
|
<div>
|
||||||
|
<el-select
|
||||||
|
style="margin-right: 20px"
|
||||||
|
v-model="value1"
|
||||||
|
placeholder="请选择统计类型"
|
||||||
|
>
|
||||||
|
<el-option
|
||||||
|
v-for="item in [
|
||||||
|
{ value: '1', label: '1' },
|
||||||
|
{ value: '2', label: '2' },
|
||||||
|
]"
|
||||||
|
:key="item.value"
|
||||||
|
:label="item.label"
|
||||||
|
:value="item.value"
|
||||||
|
>
|
||||||
|
</el-option>
|
||||||
|
</el-select>
|
||||||
|
<el-select
|
||||||
|
style="margin-right: 20px"
|
||||||
|
v-model="value"
|
||||||
|
placeholder="请选择"
|
||||||
|
>
|
||||||
|
<el-option
|
||||||
|
v-for="item in [
|
||||||
|
{ value: '1', label: '日' },
|
||||||
|
{ value: '2', label: '周' },
|
||||||
|
{ value: '3', label: '月' },
|
||||||
|
{ value: '4', label: '年' },
|
||||||
|
]"
|
||||||
|
:key="item.value"
|
||||||
|
:label="item.label"
|
||||||
|
:value="item.value"
|
||||||
|
>
|
||||||
|
</el-option>
|
||||||
|
</el-select>
|
||||||
|
<el-button type="primary">查询</el-button>
|
||||||
|
<el-button type="success">导出</el-button>
|
||||||
|
</div>
|
||||||
|
<div class="product">
|
||||||
|
<div style="font-size: 18px">商品整体概况</div>
|
||||||
|
<div class="stat-list">
|
||||||
|
<div class="stat-item">
|
||||||
|
<div class="stat-right">
|
||||||
|
<div class="stat-title">在售商品数</div>
|
||||||
|
<div style="font-size: 20px" class="stat-value">435</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="stat-item">
|
||||||
|
<div class="stat-right">
|
||||||
|
<div class="stat-title">被访问商品数</div>
|
||||||
|
<div style="font-size: 20px" class="stat-value">45</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="stat-item">
|
||||||
|
<div class="stat-right">
|
||||||
|
<div class="stat-title">折扣商品数</div>
|
||||||
|
<div style="font-size: 20px" class="stat-value">34</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="stat-item">
|
||||||
|
<div class="stat-right">
|
||||||
|
<div class="stat-title">预售商品数</div>
|
||||||
|
<div style="font-size: 20px" class="stat-value">199</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="stat-item">
|
||||||
|
<div class="stat-right">
|
||||||
|
<div class="stat-title">商品浏览量</div>
|
||||||
|
<div style="font-size: 20px" class="stat-value">1256</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="stat-item">
|
||||||
|
<div class="stat-right">
|
||||||
|
<div class="stat-title">商品浏览人数</div>
|
||||||
|
<div style="font-size: 20px" class="stat-value">1256</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="stat-item">
|
||||||
|
<div class="stat-right">
|
||||||
|
<div class="stat-title">商品加购件数</div>
|
||||||
|
<div style="font-size: 20px" class="stat-value">34</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="stat-item">
|
||||||
|
<div class="stat-right">
|
||||||
|
<div class="stat-title">商品点赞件数</div>
|
||||||
|
<div style="font-size: 20px" class="stat-value">199</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="stat-item">
|
||||||
|
<div class="stat-right">
|
||||||
|
<div class="stat-title">商品支付件数</div>
|
||||||
|
<div style="font-size: 20px" class="stat-value">1256</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div style="padding: 10px; border: 1px solid #ccc; margin-top: 20px">
|
||||||
|
<div style="font-size: 18px; margin-bottom: 40px">商品排行榜</div>
|
||||||
|
<el-row style="" type="flex" justify="space-between">
|
||||||
|
<el-col :span="11"
|
||||||
|
><div class="grid-content bg-purple">商品访客数TOP</div>
|
||||||
|
<el-table :data="tableData" border style="width: 100%;" >
|
||||||
|
<el-table-column align="center" type="index" label="排名" width="50">
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column prop="date" label="商品名称">
|
||||||
|
<template slot-scope="scope">
|
||||||
|
<div style="display: flex; align-items: center">
|
||||||
|
<div>
|
||||||
|
<el-image
|
||||||
|
style="width: 60px; height: 60px"
|
||||||
|
:src="scope.row.url"
|
||||||
|
:preview-src-list="[scope.row.url]"
|
||||||
|
>
|
||||||
|
</el-image>
|
||||||
|
</div>
|
||||||
|
<div style="margin-left:10px;color:blue">{{ scope.row.name }}</div>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column align="center" prop="name" label="访客数" width="140">
|
||||||
|
</el-table-column> </el-table
|
||||||
|
></el-col>
|
||||||
|
<el-col :span="11"
|
||||||
|
><div class="grid-content bg-purple">商品支付转化率TOP</div>
|
||||||
|
<el-table :data="tableData" border style="width: 100%">
|
||||||
|
<el-table-column align="center" type="index" label="排名" width="50">
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column prop="date" label="商品名称">
|
||||||
|
<template slot-scope="scope">
|
||||||
|
<div style="display: flex; align-items: center">
|
||||||
|
<div>
|
||||||
|
<el-image
|
||||||
|
style="width: 60px; height: 60px"
|
||||||
|
:src="scope.row.url"
|
||||||
|
:preview-src-list="[scope.row.url]"
|
||||||
|
>
|
||||||
|
</el-image>
|
||||||
|
</div>
|
||||||
|
<div style="margin-left:10px;color:blue">{{ scope.row.name }}</div>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column align="center" prop="name" label="支付转化率(%)" width="140">
|
||||||
|
</el-table-column> </el-table
|
||||||
|
>
|
||||||
|
</el-col>
|
||||||
|
</el-row>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
export default {
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
value1: "",
|
||||||
|
value: "",
|
||||||
|
tableData: [
|
||||||
|
{
|
||||||
|
date: "2016-05-02",
|
||||||
|
name: "王小虎",
|
||||||
|
address: "上海市普陀区金沙江路 1518 弄",
|
||||||
|
url: "https://fuss10.elemecdn.com/e/5d/4a731a90594a4af544c0c25941171jpeg.jpeg",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
date: "2016-05-04",
|
||||||
|
name: "王小虎",
|
||||||
|
address: "上海市普陀区金沙江路 1517 弄",
|
||||||
|
url: "https://fuss10.elemecdn.com/e/5d/4a731a90594a4af544c0c25941171jpeg.jpeg",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
date: "2016-05-01",
|
||||||
|
name: "王小虎",
|
||||||
|
address: "上海市普陀区金沙江路 1519 弄",
|
||||||
|
url: "https://fuss10.elemecdn.com/e/5d/4a731a90594a4af544c0c25941171jpeg.jpeg",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
date: "2016-05-03",
|
||||||
|
name: "王小虎",
|
||||||
|
address: "上海市普陀区金沙江路 1516 弄",
|
||||||
|
url: "https://fuss10.elemecdn.com/e/5d/4a731a90594a4af544c0c25941171jpeg.jpeg",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
date: "2016-05-03",
|
||||||
|
name: "王小虎",
|
||||||
|
address: "上海市普陀区金沙江路 1516 弄",
|
||||||
|
url: "https://fuss10.elemecdn.com/e/5d/4a731a90594a4af544c0c25941171jpeg.jpeg",
|
||||||
|
},
|
||||||
|
],
|
||||||
|
};
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
init() {},
|
||||||
|
},
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
.product {
|
||||||
|
margin-top: 20px;
|
||||||
|
padding: 10px;
|
||||||
|
border: 1px solid #ccc;
|
||||||
|
}
|
||||||
|
.stat-list {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
/* justify-content: space-between; */
|
||||||
|
flex-wrap: wrap;
|
||||||
|
// margin-top: 20px;
|
||||||
|
padding: 10px;
|
||||||
|
// border: 1px solid #ccc;
|
||||||
|
}
|
||||||
|
.stat-item {
|
||||||
|
width: 25%;
|
||||||
|
margin: 30px 30px;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
}
|
||||||
|
.stat-icon {
|
||||||
|
background: rgb(99 152 252);
|
||||||
|
width: 60px;
|
||||||
|
height: 60px;
|
||||||
|
border-radius: 3px;
|
||||||
|
}
|
||||||
|
.stat-right {
|
||||||
|
margin-left: 12px;
|
||||||
|
font-size: 18px;
|
||||||
|
}
|
||||||
|
.stat-title {
|
||||||
|
// color: #969696;
|
||||||
|
font-weight: 600;
|
||||||
|
margin-bottom: 10px;
|
||||||
|
}
|
||||||
|
.grid-content {
|
||||||
|
margin-bottom: 20px;
|
||||||
|
font-size: 20px;
|
||||||
|
font-weight: 600;
|
||||||
|
}
|
||||||
|
</style>
|
|
@ -1,6 +1,6 @@
|
||||||
<template>
|
<template>
|
||||||
<div>
|
<div>
|
||||||
<div v-if="shopId">
|
<div v-if="isMerchant">
|
||||||
<obj-table-plus
|
<obj-table-plus
|
||||||
style="height: calc(100vh - 132px)"
|
style="height: calc(100vh - 132px)"
|
||||||
ref="oTable"
|
ref="oTable"
|
||||||
|
@ -8,6 +8,7 @@
|
||||||
:tableCols="tableCols"
|
:tableCols="tableCols"
|
||||||
v-model="dataList"
|
v-model="dataList"
|
||||||
@query="queryList"
|
@query="queryList"
|
||||||
|
:enableAutoQuery="false"
|
||||||
>
|
>
|
||||||
<template slot="flexEmpty">
|
<template slot="flexEmpty">
|
||||||
<el-empty description="暂无数据"></el-empty>
|
<el-empty description="暂无数据"></el-empty>
|
||||||
|
@ -52,6 +53,7 @@
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
|
import { mapState } from "vuex";
|
||||||
import addTemplate from "./popup/add-template.vue";
|
import addTemplate from "./popup/add-template.vue";
|
||||||
export default {
|
export default {
|
||||||
components: { addTemplate },
|
components: { addTemplate },
|
||||||
|
@ -62,26 +64,16 @@ export default {
|
||||||
name: "",
|
name: "",
|
||||||
linkId: "",
|
linkId: "",
|
||||||
},
|
},
|
||||||
shopId: "",
|
|
||||||
marketList: "",
|
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
created() {
|
created() {
|
||||||
if (JSON.parse(sessionStorage.getItem("userInfo")).markets.length > 0) {
|
this.searchForm = {
|
||||||
this.shopId = true;
|
name: "",
|
||||||
this.searchForm.linkId = JSON.parse(
|
linkId: this.marketId ? this.marketId : this.shopId,
|
||||||
sessionStorage.getItem("userInfo")
|
};
|
||||||
).markets[0].marketId;
|
this.$nextTick(() => {
|
||||||
this.marketList = JSON.parse(sessionStorage.getItem("userInfo")).markets;
|
this.$refs.oTable.reload();
|
||||||
console.log(this.marketList);
|
});
|
||||||
} else if (JSON.parse(sessionStorage.getItem("userInfo")).shopId) {
|
|
||||||
this.searchForm.linkId = JSON.parse(
|
|
||||||
sessionStorage.getItem("userInfo")
|
|
||||||
).shopId;
|
|
||||||
this.shopId = true;
|
|
||||||
} else {
|
|
||||||
this.shopId = false;
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
queryList(pageNo, pageSize) {
|
queryList(pageNo, pageSize) {
|
||||||
|
@ -105,8 +97,7 @@ export default {
|
||||||
Reset() {
|
Reset() {
|
||||||
this.searchForm = {
|
this.searchForm = {
|
||||||
name: "",
|
name: "",
|
||||||
linkId: JSON.parse(sessionStorage.getItem("userInfo")).markets[0]
|
linkId: this.marketId ? this.marketId : this.shopId,
|
||||||
.marketId,
|
|
||||||
};
|
};
|
||||||
this.$refs.oTable.reload();
|
this.$refs.oTable.reload();
|
||||||
},
|
},
|
||||||
|
@ -330,6 +321,13 @@ export default {
|
||||||
},
|
},
|
||||||
];
|
];
|
||||||
},
|
},
|
||||||
|
...mapState("userData", [
|
||||||
|
"isMerchant",
|
||||||
|
"marketList",
|
||||||
|
"storeList",
|
||||||
|
"marketId",
|
||||||
|
"shopId",
|
||||||
|
]),
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
</script>
|
</script>
|
||||||
|
|
|
@ -0,0 +1,232 @@
|
||||||
|
<template>
|
||||||
|
<div>
|
||||||
|
<div class="tips">
|
||||||
|
<div>请谨慎操作此页面数据,避免频繁修改导致会员流失等不必要的损失。</div>
|
||||||
|
<div style="margin-top: 10px">
|
||||||
|
请注意,用户一旦达到某会员等级,后续修改会员等级要求不会影响用户已达到的会员等级,但可享有该等级对应的会员权益
|
||||||
|
</div>
|
||||||
|
<div style="margin-top: 20px">
|
||||||
|
举例:24年2月,用户在本商铺的成长值达到500升级为VIP2,此时,VIP2会员权益享有的生日优惠卷1;
|
||||||
|
</div>
|
||||||
|
<div style="margin-top: 10px">
|
||||||
|
24年3月,本商铺修改VIP2所需成长值为700,并新增会员生日优惠卷2;修改提交后,该用户会员等级保持VIP2不变且享有会员优惠卷1和会员优惠卷2;
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<!-- <el-form :inline="true" :model="formInline" class="demo-form-inline">
|
||||||
|
<el-form-item label="单位类型:">
|
||||||
|
<el-select
|
||||||
|
v-model="formInline.unitType"
|
||||||
|
placeholder="请选择单位类型:"
|
||||||
|
>
|
||||||
|
<el-option
|
||||||
|
v-for="item in [
|
||||||
|
{ label: '市场', value: '1' },
|
||||||
|
{ label: '摊主', value: '2' },
|
||||||
|
{ label: '云店', value: '3' },
|
||||||
|
]"
|
||||||
|
:key="item.value"
|
||||||
|
:label="item.label"
|
||||||
|
:value="item.value"
|
||||||
|
></el-option>
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item>
|
||||||
|
<el-button @click="getData" type="primary">查询</el-button>
|
||||||
|
<el-button @click="getData" type="primary">导出</el-button>
|
||||||
|
</el-form-item>
|
||||||
|
</el-form> -->
|
||||||
|
</div>
|
||||||
|
<div class="tipsLevel">
|
||||||
|
<div>
|
||||||
|
<span style="margin-right: 30px">全部等级({{list.length}})</span
|
||||||
|
><el-button @click="add(null)" type="primary">+新增套餐</el-button>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<!-- <span style="margin-right: 30px">会员快要到期了</span>
|
||||||
|
<el-button @click="add(null)" type="primary">购买工具</el-button> -->
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<el-table :data="list" :border="true" style="width: 100%">
|
||||||
|
<el-table-column
|
||||||
|
width="140"
|
||||||
|
align="center"
|
||||||
|
label="等级名称"
|
||||||
|
prop="levelName"
|
||||||
|
/>
|
||||||
|
<el-table-column
|
||||||
|
width="140"
|
||||||
|
align="center"
|
||||||
|
label="所需成长值"
|
||||||
|
prop="requiredGrowthValue"
|
||||||
|
/>
|
||||||
|
<el-table-column
|
||||||
|
width="140"
|
||||||
|
align="center"
|
||||||
|
label="会员人数"
|
||||||
|
prop="memberCount"
|
||||||
|
>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column
|
||||||
|
align="center"
|
||||||
|
label="会员权益"
|
||||||
|
prop="packageEffectiveTimeQuantity"
|
||||||
|
>
|
||||||
|
<template slot-scope="scope">
|
||||||
|
<div>
|
||||||
|
<span>{{scope.row.enableMemberDiscount ? '会员折扣,' :''}}</span>
|
||||||
|
<span>{{scope.row.enablePointsRedemption ? '积分兑换,' : ''}}</span>
|
||||||
|
<span>{{scope.row.enableBirthdayCoupons ? '生日优惠卷,' : ''}}</span>
|
||||||
|
<span>{{scope.row.enableBirthdayReward ? '生日双倍积分' : ''}}</span>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
|
||||||
|
<!-- <el-table-column align="center" label="操作" fixed="right" width="240"> -->
|
||||||
|
<!-- <template v-slot="scope">
|
||||||
|
<el-button @click="add(scope.row)" type="primary">编辑</el-button>
|
||||||
|
<el-button @click="add(scope.row)" type="primary">转移</el-button>
|
||||||
|
<el-popconfirm
|
||||||
|
confirm-button-text="确定"
|
||||||
|
cancel-button-text="取消"
|
||||||
|
icon-color="#626AEF"
|
||||||
|
title="确定删除吗?"
|
||||||
|
@confirm="confirmEvent(scope.row)"
|
||||||
|
@cancel="cancelEvent"
|
||||||
|
>
|
||||||
|
<template #reference>
|
||||||
|
<el-button type="danger">删除</el-button>
|
||||||
|
</template>
|
||||||
|
</el-popconfirm>
|
||||||
|
</template> -->
|
||||||
|
<!-- </el-table-column> -->
|
||||||
|
</el-table>
|
||||||
|
<!-- 添加 -->
|
||||||
|
<addOrUpdate ref="addOrUpdate"></addOrUpdate>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import addOrUpdate from "./popup/add-or-update.vue";
|
||||||
|
import { mapState } from "vuex";
|
||||||
|
export default {
|
||||||
|
components: {
|
||||||
|
addOrUpdate,
|
||||||
|
},
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
list: [],
|
||||||
|
formInline: {
|
||||||
|
unitType: "1",
|
||||||
|
marketId: "",
|
||||||
|
shopId: "",
|
||||||
|
},
|
||||||
|
};
|
||||||
|
},
|
||||||
|
created() {
|
||||||
|
this.formInline = {
|
||||||
|
unitType: JSON.parse(sessionStorage.getItem("userInfo")).unitType,
|
||||||
|
marketId: this.marketId,
|
||||||
|
shopId: "",
|
||||||
|
};
|
||||||
|
this.getList();
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
// getData() {
|
||||||
|
// this.$api.mer_admin
|
||||||
|
// .storeList({ marketId: this.formInline.marketId })
|
||||||
|
// .then((res) => {
|
||||||
|
// this.storeList = res.data.data;
|
||||||
|
// this.formInline.shopId = res.data.data[0].shopId;
|
||||||
|
// this.$nextTick(() => {
|
||||||
|
// this.getList();
|
||||||
|
// });
|
||||||
|
// });
|
||||||
|
// },
|
||||||
|
getList() {
|
||||||
|
this.$api.marketing.marketingLevelPage(this.formInline).then((res) => {
|
||||||
|
this.list = res.data.data;
|
||||||
|
});
|
||||||
|
},
|
||||||
|
add() {
|
||||||
|
// this.$api.marketing
|
||||||
|
// .addMarketingLevel({
|
||||||
|
// marketId: this.marketId,
|
||||||
|
// unitType: this.formInline.unitType,
|
||||||
|
// levelList: [
|
||||||
|
// {
|
||||||
|
// levelName: "青铜级",
|
||||||
|
// requiredGrowthValue: 0,
|
||||||
|
// growthValueUpperLimit: 99,
|
||||||
|
// enableMemberDiscount: true,
|
||||||
|
// enablePointsRedemption: true,
|
||||||
|
// enableBirthdayCoupons: true,
|
||||||
|
// enableBirthdayReward: true,
|
||||||
|
// discountRate: "9",
|
||||||
|
// rewardEffectiveTimeType: 1,
|
||||||
|
// memberLevelCouponsList: [
|
||||||
|
// {
|
||||||
|
// couponsName: "生日优惠券",
|
||||||
|
// couponsThreshold: "10",
|
||||||
|
// couponsMinus: 8,
|
||||||
|
// couponsEffectiveTimeType: 2,
|
||||||
|
// },
|
||||||
|
// ],
|
||||||
|
// },
|
||||||
|
// {
|
||||||
|
// levelName: "白银",
|
||||||
|
// requiredGrowthValue: 100,
|
||||||
|
// growthValueUpperLimit: 999999999,
|
||||||
|
// enableMemberDiscount: true,
|
||||||
|
// enablePointsRedemption: true,
|
||||||
|
// enableBirthdayCoupons: true,
|
||||||
|
// enableBirthdayReward: true,
|
||||||
|
// discountRate: "8",
|
||||||
|
// rewardEffectiveTimeType: 1,
|
||||||
|
// memberLevelCouponsList: [
|
||||||
|
// {
|
||||||
|
// couponsName: "生日优惠券",
|
||||||
|
// couponsThreshold: "20",
|
||||||
|
// couponsMinus: 10,
|
||||||
|
// couponsEffectiveTimeType: 2,
|
||||||
|
// },
|
||||||
|
// ],
|
||||||
|
// },
|
||||||
|
// ],
|
||||||
|
// })
|
||||||
|
// .then((res) => {
|
||||||
|
// console.log(res);
|
||||||
|
// });
|
||||||
|
this.$refs.addOrUpdate.toggle().add();
|
||||||
|
},
|
||||||
|
confirmEvent() {},
|
||||||
|
cancelEvent() {},
|
||||||
|
},
|
||||||
|
computed: {
|
||||||
|
...mapState("userData", [
|
||||||
|
"isMerchant",
|
||||||
|
"marketList",
|
||||||
|
"storeList",
|
||||||
|
"marketId",
|
||||||
|
"shopId",
|
||||||
|
]),
|
||||||
|
},
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style scoped lang="scss" >
|
||||||
|
.tips {
|
||||||
|
padding: 15px;
|
||||||
|
margin-bottom: 20px;
|
||||||
|
border-radius: 10px;
|
||||||
|
width: 100%;
|
||||||
|
font-size: 16px;
|
||||||
|
background: #e5e5e5;
|
||||||
|
color: #faa639;
|
||||||
|
}
|
||||||
|
.tipsLevel {
|
||||||
|
margin: 20px 0;
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-between;
|
||||||
|
}
|
||||||
|
</style>
|
|
@ -0,0 +1,191 @@
|
||||||
|
<template>
|
||||||
|
<div>
|
||||||
|
<obj-modal
|
||||||
|
ref="modal"
|
||||||
|
labelWidth="150px"
|
||||||
|
:modalCols="modalCols"
|
||||||
|
:modalConfig="modalConfig"
|
||||||
|
:modalData="modalData"
|
||||||
|
:modalHandles="modalHandles"
|
||||||
|
>
|
||||||
|
<template slot="dialog__after"> </template>
|
||||||
|
</obj-modal>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
<script>
|
||||||
|
import { debounce, cloneDeep } from "lodash";
|
||||||
|
import { Divider } from "element-ui";
|
||||||
|
export default {
|
||||||
|
components: {},
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
isAdd: true,
|
||||||
|
//表格属性
|
||||||
|
modalConfig: {
|
||||||
|
title: "添加优惠卷",
|
||||||
|
show: false,
|
||||||
|
width: "60%",
|
||||||
|
},
|
||||||
|
modalData: {},
|
||||||
|
value1: [],
|
||||||
|
};
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
queryTableData(pageNo, pageSize) {},
|
||||||
|
toggle(e) {
|
||||||
|
if (this.modalConfig.show == false) {
|
||||||
|
this.modalConfig.show = true;
|
||||||
|
} else {
|
||||||
|
this.modalConfig.show = false;
|
||||||
|
this.$refs.modal.resetFields();
|
||||||
|
}
|
||||||
|
if (e) {
|
||||||
|
this.init(cloneDeep(e));
|
||||||
|
}
|
||||||
|
return {
|
||||||
|
add: (row) => {
|
||||||
|
this.modalConfig.title = "添加优惠卷";
|
||||||
|
this.$nextTick(() => {
|
||||||
|
this.$refs.modal?.resetFields();
|
||||||
|
});
|
||||||
|
this.isAdd = true;
|
||||||
|
if (row) {
|
||||||
|
this.modalData = row[0];
|
||||||
|
console.log("111");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
this.modalData = {
|
||||||
|
couponsName: "",
|
||||||
|
couponsThreshold: 0,
|
||||||
|
couponsMinus: 0,
|
||||||
|
couponsEffectiveTimeType: "1",
|
||||||
|
};
|
||||||
|
console.log("qqw");
|
||||||
|
},
|
||||||
|
update: () => {
|
||||||
|
this.isAdd = false;
|
||||||
|
},
|
||||||
|
};
|
||||||
|
},
|
||||||
|
init(row) {
|
||||||
|
if (row) {
|
||||||
|
this.modalData = row;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
console.log("123");
|
||||||
|
},
|
||||||
|
},
|
||||||
|
computed: {
|
||||||
|
modalCols() {
|
||||||
|
return [
|
||||||
|
{
|
||||||
|
label: "优惠卷名称",
|
||||||
|
prop: "couponsName",
|
||||||
|
type: "Input",
|
||||||
|
width: "300px",
|
||||||
|
rules: { required: true, message: "请优惠卷名称" },
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: "优惠券门槛金额",
|
||||||
|
prop: "couponsThreshold",
|
||||||
|
type: "Input",
|
||||||
|
width: "300px",
|
||||||
|
rules: { required: true, message: "请输入优惠券门槛金额" },
|
||||||
|
type: "jsx",
|
||||||
|
render: () => {
|
||||||
|
return (
|
||||||
|
<el-input-number
|
||||||
|
controls-position="right"
|
||||||
|
precision={0}
|
||||||
|
v-model={this.modalData.couponsThreshold}
|
||||||
|
min={0}
|
||||||
|
max={99999}
|
||||||
|
label="请输入"
|
||||||
|
></el-input-number>
|
||||||
|
);
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: "优惠券减免金额",
|
||||||
|
prop: "couponsMinus",
|
||||||
|
type: "Input",
|
||||||
|
width: "300px",
|
||||||
|
rules: { required: true, message: "请输入优惠券减免金额" },
|
||||||
|
type: "jsx",
|
||||||
|
render: () => {
|
||||||
|
return (
|
||||||
|
<el-input-number
|
||||||
|
controls-position="right"
|
||||||
|
precision={0}
|
||||||
|
v-model={this.modalData.couponsMinus}
|
||||||
|
min={0}
|
||||||
|
max={99999}
|
||||||
|
label="请输入"
|
||||||
|
></el-input-number>
|
||||||
|
);
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: "优惠券有效时间",
|
||||||
|
prop: "couponsEffectiveTimeType",
|
||||||
|
type: "Input",
|
||||||
|
width: "300px",
|
||||||
|
rules: { required: true, message: "请输入优惠券有效时间" },
|
||||||
|
type: "jsx",
|
||||||
|
render: () => {
|
||||||
|
return (
|
||||||
|
<el-select
|
||||||
|
v-model={this.modalData.couponsEffectiveTimeType}
|
||||||
|
placeholder="请选择"
|
||||||
|
>
|
||||||
|
{[
|
||||||
|
{ label: "当天", value: "1" },
|
||||||
|
{
|
||||||
|
label: "当周",
|
||||||
|
value: "2",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: "当月",
|
||||||
|
value: "2",
|
||||||
|
},
|
||||||
|
].map((item) => {
|
||||||
|
return (
|
||||||
|
<el-option
|
||||||
|
label={item.label}
|
||||||
|
value={item.value}
|
||||||
|
></el-option>
|
||||||
|
);
|
||||||
|
})}
|
||||||
|
</el-select>
|
||||||
|
);
|
||||||
|
},
|
||||||
|
},
|
||||||
|
];
|
||||||
|
},
|
||||||
|
modalHandles() {
|
||||||
|
return [
|
||||||
|
{
|
||||||
|
label: "取消",
|
||||||
|
handle: () => {
|
||||||
|
this.toggle();
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: this.isAdd ? "确认添加" : "确认",
|
||||||
|
type: "primary",
|
||||||
|
loading: this.isLoading,
|
||||||
|
submit: true,
|
||||||
|
handle: () => {
|
||||||
|
console.log(this.modalData);
|
||||||
|
this.$emit("addCouponData", this.modalData);
|
||||||
|
this.toggle();
|
||||||
|
},
|
||||||
|
},
|
||||||
|
];
|
||||||
|
},
|
||||||
|
},
|
||||||
|
asyncComputed: {},
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
</style>
|
|
@ -0,0 +1,485 @@
|
||||||
|
<template>
|
||||||
|
<div>
|
||||||
|
<obj-modal
|
||||||
|
ref="modal"
|
||||||
|
labelWidth="150px"
|
||||||
|
:modalConfig="modalConfig"
|
||||||
|
:modalCols="modalCols"
|
||||||
|
:modalData="modalData"
|
||||||
|
:modalHandles="modalHandles"
|
||||||
|
>
|
||||||
|
<div slot="dialog__content">
|
||||||
|
<el-form :model="modalData" ref="modalForm">
|
||||||
|
<obj-table-plus
|
||||||
|
style="height: 70vh"
|
||||||
|
ref="oTableThree"
|
||||||
|
v-model="modalData.tableData"
|
||||||
|
:tableCols="tableCols"
|
||||||
|
:tableProp="tableProp"
|
||||||
|
:toolbarProp="toolbarProp"
|
||||||
|
:tableEvent="tableEvent"
|
||||||
|
>
|
||||||
|
<div slot="tableTop" class="mb-2"></div>
|
||||||
|
</obj-table-plus>
|
||||||
|
</el-form>
|
||||||
|
</div>
|
||||||
|
</obj-modal>
|
||||||
|
<addCoupon @addCouponData="addCouponData" ref="addCoupon"></addCoupon>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
<script>
|
||||||
|
import addCoupon from "./add-coupon.vue";
|
||||||
|
import { debounce, cloneDeep } from "lodash";
|
||||||
|
export default {
|
||||||
|
components: { addCoupon },
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
isAdd: true,
|
||||||
|
isLoading: false,
|
||||||
|
//表格属性
|
||||||
|
//表格属性
|
||||||
|
tableProp: {
|
||||||
|
height: "auto",
|
||||||
|
border: true,
|
||||||
|
"auto-resize": false,
|
||||||
|
"print-config": {},
|
||||||
|
},
|
||||||
|
toolbarProp: {},
|
||||||
|
tableEvent: {},
|
||||||
|
modalConfig: {
|
||||||
|
title: "新增等级",
|
||||||
|
show: false,
|
||||||
|
width: "1300px",
|
||||||
|
fullscreen: true,
|
||||||
|
},
|
||||||
|
modalCols: [],
|
||||||
|
couponIndex: 0,
|
||||||
|
modalData: {
|
||||||
|
marketId: "",
|
||||||
|
shopId: "",
|
||||||
|
unitType: "",
|
||||||
|
tableData: [
|
||||||
|
{
|
||||||
|
levelName: "",
|
||||||
|
requiredGrowthValue: 0,
|
||||||
|
growthValueUpperLimit: 999999999,
|
||||||
|
enableMemberDiscount: false,
|
||||||
|
enablePointsRedemption: false,
|
||||||
|
enableBirthdayCoupons: false,
|
||||||
|
enableBirthdayReward: false,
|
||||||
|
discountRate: "",
|
||||||
|
rewardEffectiveTimeType: "",
|
||||||
|
memberLevelCouponsList: "",
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
};
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
queryTableData(pageNo, pageSize) {
|
||||||
|
setTimeout(() => {
|
||||||
|
setTimeout(() => {
|
||||||
|
this.$refs.oTableThree.complete([
|
||||||
|
{
|
||||||
|
levelName: "",
|
||||||
|
requiredGrowthValue: 0,
|
||||||
|
growthValueUpperLimit: 999999999,
|
||||||
|
enableMemberDiscount: false,
|
||||||
|
enablePointsRedemption: false,
|
||||||
|
enableBirthdayCoupons: false,
|
||||||
|
enableBirthdayReward: false,
|
||||||
|
discountRate: "",
|
||||||
|
rewardEffectiveTimeType: "",
|
||||||
|
memberLevelCouponsList: "",
|
||||||
|
},
|
||||||
|
]);
|
||||||
|
});
|
||||||
|
}, 10);
|
||||||
|
},
|
||||||
|
toggle(e) {
|
||||||
|
if (this.modalConfig.show == false) {
|
||||||
|
this.modalConfig.show = true;
|
||||||
|
this.$nextTick(() => {
|
||||||
|
this.$refs.oTableThree.doLayout();
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
this.modalConfig.show = false;
|
||||||
|
}
|
||||||
|
if (e) {
|
||||||
|
this.init(cloneDeep(e.row));
|
||||||
|
}
|
||||||
|
return {
|
||||||
|
add: () => {
|
||||||
|
this.modalData = {};
|
||||||
|
this.queryTableData();
|
||||||
|
this.isAdd = true;
|
||||||
|
},
|
||||||
|
update: (id) => {
|
||||||
|
this.isAdd = false;
|
||||||
|
},
|
||||||
|
};
|
||||||
|
},
|
||||||
|
init(row) {
|
||||||
|
this.modalData = row;
|
||||||
|
},
|
||||||
|
addCouponData(data) {
|
||||||
|
console.log(data);
|
||||||
|
let row = JSON.parse(JSON.stringify(data));
|
||||||
|
this.modalData.tableData[this.couponIndex].memberLevelCouponsList = [row];
|
||||||
|
},
|
||||||
|
},
|
||||||
|
computed: {
|
||||||
|
tableCols() {
|
||||||
|
return [
|
||||||
|
{
|
||||||
|
title: "序号",
|
||||||
|
type: "seq",
|
||||||
|
align: "center",
|
||||||
|
width: "60px",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: "等级名称",
|
||||||
|
field: "typeName",
|
||||||
|
align: "center",
|
||||||
|
width: "150px",
|
||||||
|
type: "jsx",
|
||||||
|
render: (e) => {
|
||||||
|
let row = e.row;
|
||||||
|
return (
|
||||||
|
<el-form-item
|
||||||
|
prop={`tableData.${e.$rowIndex}.levelName`}
|
||||||
|
rules={{
|
||||||
|
required: true,
|
||||||
|
message: "请输入等级名称",
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
<el-input
|
||||||
|
v-model={row.levelName}
|
||||||
|
placeholder="请输入等级名称"
|
||||||
|
></el-input>
|
||||||
|
</el-form-item>
|
||||||
|
);
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: "所需成长值",
|
||||||
|
field: "requiredGrowthValue",
|
||||||
|
align: "center",
|
||||||
|
width: "170px",
|
||||||
|
type: "jsx",
|
||||||
|
render: (e) => {
|
||||||
|
return (
|
||||||
|
<el-form-item
|
||||||
|
prop={`tableData.${e.$rowIndex}.requiredGrowthValue`}
|
||||||
|
rules={{
|
||||||
|
required: true,
|
||||||
|
message: "请输入所需成长值",
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
<el-input-number
|
||||||
|
disabled={e.$rowIndex == 0}
|
||||||
|
style="width:150px"
|
||||||
|
controls-position="right"
|
||||||
|
precision={0}
|
||||||
|
v-model={e.row.requiredGrowthValue}
|
||||||
|
min={0}
|
||||||
|
max={999999999}
|
||||||
|
label="请输入"
|
||||||
|
></el-input-number>
|
||||||
|
</el-form-item>
|
||||||
|
);
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: "成长值上限",
|
||||||
|
field: "growthValueUpperLimit",
|
||||||
|
align: "center",
|
||||||
|
width: "170px",
|
||||||
|
type: "jsx",
|
||||||
|
render: (e) => {
|
||||||
|
return (
|
||||||
|
<el-form-item
|
||||||
|
prop={`tableData.${e.$rowIndex}.requiredGrowthValue`}
|
||||||
|
rules={{
|
||||||
|
required: true,
|
||||||
|
message: "请输入所需成长值",
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
<el-input-number
|
||||||
|
disabled={this.modalData.tableData.length == e.$rowIndex + 1}
|
||||||
|
style="width:150px"
|
||||||
|
controls-position="right"
|
||||||
|
precision={0}
|
||||||
|
v-model={e.row.growthValueUpperLimit}
|
||||||
|
min={0}
|
||||||
|
max={999999999}
|
||||||
|
label="请输入"
|
||||||
|
></el-input-number>
|
||||||
|
</el-form-item>
|
||||||
|
);
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: "开启会员折扣",
|
||||||
|
field: "enableMemberDiscount",
|
||||||
|
align: "center",
|
||||||
|
width: "120px",
|
||||||
|
type: "jsx",
|
||||||
|
render: ({ row }) => {
|
||||||
|
let changeDiscountRate = () => {
|
||||||
|
if (!row.enableMemberDiscount) {
|
||||||
|
row.discountRate = "";
|
||||||
|
}
|
||||||
|
};
|
||||||
|
return (
|
||||||
|
<el-switch
|
||||||
|
onchange={changeDiscountRate}
|
||||||
|
v-model={row.enableMemberDiscount}
|
||||||
|
></el-switch>
|
||||||
|
);
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: "折扣率(折)",
|
||||||
|
field: "discountRate",
|
||||||
|
align: "center",
|
||||||
|
width: "170px",
|
||||||
|
type: "jsx",
|
||||||
|
render: (e) => {
|
||||||
|
if (e.row.enableMemberDiscount) {
|
||||||
|
return (
|
||||||
|
<el-form-item
|
||||||
|
prop={`tableData.${e.$rowIndex}.discountRate`}
|
||||||
|
rules={{
|
||||||
|
required: true,
|
||||||
|
message: "请输入所需成长值",
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
<el-input-number
|
||||||
|
style="width:150px"
|
||||||
|
controls-position="right"
|
||||||
|
precision={1}
|
||||||
|
v-model={e.row.discountRate}
|
||||||
|
min={0}
|
||||||
|
max={9.9}
|
||||||
|
label="请输入"
|
||||||
|
></el-input-number>
|
||||||
|
</el-form-item>
|
||||||
|
);
|
||||||
|
} else {
|
||||||
|
return <div></div>;
|
||||||
|
}
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: "开启积分兑换",
|
||||||
|
field: "enableMemberDiscount",
|
||||||
|
align: "center",
|
||||||
|
width: "120px",
|
||||||
|
type: "jsx",
|
||||||
|
render: ({ row }) => {
|
||||||
|
return <el-switch v-model={row.enablePointsRedemption}></el-switch>;
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: "开启生日优惠券",
|
||||||
|
field: "enableBirthdayCoupons",
|
||||||
|
align: "center",
|
||||||
|
width: "120px",
|
||||||
|
type: "jsx",
|
||||||
|
render: ({ row }) => {
|
||||||
|
let changeCouponsList = () => {
|
||||||
|
if (!row.enableBirthdayCoupons) {
|
||||||
|
row.memberLevelCouponsList = "";
|
||||||
|
}
|
||||||
|
};
|
||||||
|
return (
|
||||||
|
<el-switch
|
||||||
|
onchange={changeCouponsList}
|
||||||
|
v-model={row.enableBirthdayCoupons}
|
||||||
|
></el-switch>
|
||||||
|
);
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: "添加生日优惠卷",
|
||||||
|
field: "memberLevelCouponsList",
|
||||||
|
align: "center",
|
||||||
|
width: "150px",
|
||||||
|
type: "jsx",
|
||||||
|
render: (e) => {
|
||||||
|
let addCouponsList = () => {
|
||||||
|
this.couponIndex = e.$rowIndex;
|
||||||
|
this.$refs.addCoupon.toggle().add(e.row.memberLevelCouponsList);
|
||||||
|
console.log(e.row.memberLevelCouponsList);
|
||||||
|
};
|
||||||
|
if (e.row.enableBirthdayCoupons) {
|
||||||
|
return (
|
||||||
|
<el-form-item
|
||||||
|
prop={`tableData.${e.$rowIndex}.memberLevelCouponsList`}
|
||||||
|
rules={{
|
||||||
|
required: true,
|
||||||
|
message: "请添加优惠卷",
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
<el-button
|
||||||
|
size="mini"
|
||||||
|
onClick={addCouponsList}
|
||||||
|
type="primary"
|
||||||
|
>
|
||||||
|
添加优惠卷
|
||||||
|
</el-button>
|
||||||
|
</el-form-item>
|
||||||
|
);
|
||||||
|
} else {
|
||||||
|
return <div></div>;
|
||||||
|
}
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: "开启生日双倍积分",
|
||||||
|
field: "enableBirthdayReward",
|
||||||
|
align: "center",
|
||||||
|
width: "120px",
|
||||||
|
type: "jsx",
|
||||||
|
render: ({ row }) => {
|
||||||
|
let changeReward = () => {
|
||||||
|
if (!row.enableBirthdayReward) {
|
||||||
|
row.rewardEffectiveTimeType = "";
|
||||||
|
}
|
||||||
|
};
|
||||||
|
return (
|
||||||
|
<el-switch
|
||||||
|
onchange={changeReward}
|
||||||
|
v-model={row.enableBirthdayReward}
|
||||||
|
></el-switch>
|
||||||
|
);
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: "双倍积分有效时间",
|
||||||
|
field: "rewardEffectiveTimeType",
|
||||||
|
align: "center",
|
||||||
|
width: "120px",
|
||||||
|
type: "jsx",
|
||||||
|
render: (e) => {
|
||||||
|
if (e.row.enableBirthdayReward) {
|
||||||
|
return (
|
||||||
|
<el-form-item
|
||||||
|
prop={`tableData.${e.$rowIndex}.rewardEffectiveTimeType`}
|
||||||
|
rules={{
|
||||||
|
required: true,
|
||||||
|
message: "请输入所需成长值",
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
<el-select
|
||||||
|
size="mini"
|
||||||
|
v-model={e.row.rewardEffectiveTimeType}
|
||||||
|
placeholder="请选择"
|
||||||
|
>
|
||||||
|
{[
|
||||||
|
{ label: "当天", value: "1" },
|
||||||
|
{
|
||||||
|
label: "当月",
|
||||||
|
value: "2",
|
||||||
|
},
|
||||||
|
].map((item) => {
|
||||||
|
return (
|
||||||
|
<el-option
|
||||||
|
label={item.label}
|
||||||
|
value={item.value}
|
||||||
|
></el-option>
|
||||||
|
);
|
||||||
|
})}
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
);
|
||||||
|
} else {
|
||||||
|
return <div></div>;
|
||||||
|
}
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: "操作",
|
||||||
|
fixed: "right",
|
||||||
|
type: "jsx",
|
||||||
|
width: "200px",
|
||||||
|
align: "center",
|
||||||
|
render: (e) => {
|
||||||
|
let add = () => {
|
||||||
|
console.log(e);
|
||||||
|
this.modalData.tableData.splice(e.$rowIndex + 1, 0, {
|
||||||
|
levelName: "",
|
||||||
|
requiredGrowthValue: "0",
|
||||||
|
growthValueUpperLimit: "999999999",
|
||||||
|
enableMemberDiscount: false,
|
||||||
|
enablePointsRedemption: false,
|
||||||
|
enableBirthdayCoupons: false,
|
||||||
|
enableBirthdayReward: false,
|
||||||
|
discountRate: "",
|
||||||
|
rewardEffectiveTimeType: "",
|
||||||
|
memberLevelCouponsList: "",
|
||||||
|
});
|
||||||
|
};
|
||||||
|
let remove = () => {
|
||||||
|
this.modalData.tableData.splice(e.$rowIndex, 1);
|
||||||
|
};
|
||||||
|
return (
|
||||||
|
<div>
|
||||||
|
<el-button
|
||||||
|
v-show={this.modalData.tableData.length == e.$rowIndex + 1}
|
||||||
|
style="margin-right: 10px"
|
||||||
|
type="primary"
|
||||||
|
size="mini"
|
||||||
|
onClick={add}
|
||||||
|
slot="reference"
|
||||||
|
>
|
||||||
|
添加
|
||||||
|
</el-button>
|
||||||
|
{this.modalData.tableData.length > 1 && e.$rowIndex != 0 ? (
|
||||||
|
<el-popconfirm title="确认要删除吗?" onConfirm={remove}>
|
||||||
|
<el-button
|
||||||
|
class="ml-1"
|
||||||
|
type="danger"
|
||||||
|
size="mini"
|
||||||
|
slot="reference"
|
||||||
|
>
|
||||||
|
删除
|
||||||
|
</el-button>
|
||||||
|
</el-popconfirm>
|
||||||
|
) : null}
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
},
|
||||||
|
},
|
||||||
|
];
|
||||||
|
},
|
||||||
|
modalHandles() {
|
||||||
|
return [
|
||||||
|
{
|
||||||
|
label: "取消",
|
||||||
|
handle: debounce(() => {
|
||||||
|
this.toggle();
|
||||||
|
}, 300),
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: this.isAdd ? "确认添加" : "确认修改",
|
||||||
|
type: "primary",
|
||||||
|
handle: debounce(() => {
|
||||||
|
this.modalData.marketId = this.marketId;
|
||||||
|
this.modalData.shopId = this.shopId;
|
||||||
|
this.modalData.unitType = JSON.parse(
|
||||||
|
sessionStorage.getItem("userInfo")
|
||||||
|
).unitType;
|
||||||
|
console.log(this.modalData);
|
||||||
|
this.$refs.modalForm.validate((valid) => {
|
||||||
|
console.log(valid);
|
||||||
|
});
|
||||||
|
}, 300),
|
||||||
|
},
|
||||||
|
];
|
||||||
|
},
|
||||||
|
},
|
||||||
|
asyncComputed: {},
|
||||||
|
};
|
||||||
|
</script>
|
|
@ -0,0 +1,226 @@
|
||||||
|
<template>
|
||||||
|
<div style="height: calc(100vh - 200px)">
|
||||||
|
<obj-table-plus
|
||||||
|
ref="oTable"
|
||||||
|
style="height: 100%"
|
||||||
|
:tableCols="tableCols"
|
||||||
|
:tableProp="tableProp"
|
||||||
|
@query="queryList"
|
||||||
|
v-model="dataList"
|
||||||
|
:tableEvent="tableEvent"
|
||||||
|
:enableAutoQuery="false"
|
||||||
|
>
|
||||||
|
<template slot="tableTop">
|
||||||
|
<el-form :inline="true" :model="formInline" class="demo-form-inline">
|
||||||
|
<el-form-item label="商品ID">
|
||||||
|
<el-input
|
||||||
|
placeholder="请输入商品ID"
|
||||||
|
v-model="formInline.name"
|
||||||
|
></el-input>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="商品名称">
|
||||||
|
<el-input
|
||||||
|
placeholder="请输入商品名称"
|
||||||
|
v-model="formInline.name"
|
||||||
|
></el-input>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="商品状态">
|
||||||
|
<el-select
|
||||||
|
@change="getData"
|
||||||
|
v-model="formInline.marketId"
|
||||||
|
placeholder="请选择"
|
||||||
|
>
|
||||||
|
<el-option
|
||||||
|
v-for="item in marketList"
|
||||||
|
:key="item.marketId"
|
||||||
|
:label="item.marketName"
|
||||||
|
:value="item.marketId"
|
||||||
|
></el-option>
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="积分数量">
|
||||||
|
<el-input
|
||||||
|
placeholder="请输入手机号"
|
||||||
|
v-model="formInline.name"
|
||||||
|
></el-input>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item>
|
||||||
|
<el-button type="primary" @click="$refs.oTable.reload()"
|
||||||
|
>查询</el-button
|
||||||
|
>
|
||||||
|
<el-button type="primary" @click="$refs.oTable.reload()"
|
||||||
|
>重置</el-button
|
||||||
|
>
|
||||||
|
</el-form-item>
|
||||||
|
</el-form>
|
||||||
|
<div class="mb-2">
|
||||||
|
<el-button type="primary" size="small">+添加</el-button>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
</obj-table-plus>
|
||||||
|
<!-- 添加或编辑 -->
|
||||||
|
<!-- <add-or-update
|
||||||
|
@queryList="$refs.oTable.reload()"
|
||||||
|
ref="addOrUpdate"
|
||||||
|
></add-or-update> -->
|
||||||
|
<!-- 查看详情 -->
|
||||||
|
<!-- <viewDetails ref="viewDetails"></viewDetails> -->
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
// import AddOrUpdate from "./popup/add-or-update.vue";
|
||||||
|
// import viewDetails from "./popup/view-details.vue";
|
||||||
|
import { mapState } from "vuex";
|
||||||
|
export default {
|
||||||
|
// components: { AddOrUpdate },
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
dataList: [],
|
||||||
|
formInline: {
|
||||||
|
marketId: "",
|
||||||
|
shopId: "",
|
||||||
|
unitType: "",
|
||||||
|
},
|
||||||
|
tableProp: {
|
||||||
|
"auto-resize": true,
|
||||||
|
border: true,
|
||||||
|
height: "auto",
|
||||||
|
"row-id": "id",
|
||||||
|
"show-overflow": false,
|
||||||
|
},
|
||||||
|
productFilterType: "SALE",
|
||||||
|
selectList: [],
|
||||||
|
value1: [],
|
||||||
|
};
|
||||||
|
},
|
||||||
|
created() {
|
||||||
|
this.formInline = {
|
||||||
|
unitType: JSON.parse(sessionStorage.getItem("userInfo")).unitType,
|
||||||
|
marketId: this.marketId,
|
||||||
|
shopId: "",
|
||||||
|
};
|
||||||
|
this.$nextTick(() => {
|
||||||
|
this.$refs.oTable.reload();
|
||||||
|
});
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
getData() {
|
||||||
|
this.$api.mer_admin
|
||||||
|
.storeList({ marketId: this.formInline.marketId })
|
||||||
|
.then((res) => {
|
||||||
|
this.storeList = res.data.data;
|
||||||
|
// this.formInline.shopId = res.data.data[0].shopId;
|
||||||
|
this.$nextTick(() => {
|
||||||
|
this.$refs.oTable.reload();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
},
|
||||||
|
queryList(pageNo, pageSize) {
|
||||||
|
this.$api.marketing
|
||||||
|
.marketingUserPage({
|
||||||
|
pageNumber: pageNo,
|
||||||
|
pageSize: pageSize,
|
||||||
|
...this.formInline,
|
||||||
|
})
|
||||||
|
.then((res) => {
|
||||||
|
console.log(res);
|
||||||
|
this.$refs.oTable.complete(
|
||||||
|
res.data.data.data,
|
||||||
|
Number(res.data.data.total)
|
||||||
|
);
|
||||||
|
})
|
||||||
|
.catch((err) => {
|
||||||
|
this.$refs.oTable.complete(false);
|
||||||
|
});
|
||||||
|
},
|
||||||
|
},
|
||||||
|
computed: {
|
||||||
|
tableCols() {
|
||||||
|
return [
|
||||||
|
{ type: "checkbox", width: "60px", fixed: "left" },
|
||||||
|
// { type: "seq", width: "60px", align: "center", title: "序号" },
|
||||||
|
{
|
||||||
|
title: "商品ID",
|
||||||
|
align: "center",
|
||||||
|
field: "name",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: "商品名称",
|
||||||
|
align: "center",
|
||||||
|
field: "publisher",
|
||||||
|
type: "jsx",
|
||||||
|
render: ({ row }) => {
|
||||||
|
if (row.publisher === "MERCHANT") {
|
||||||
|
return <span>店铺</span>;
|
||||||
|
} else if (row.publisher == "PLATFORM") {
|
||||||
|
return <span>平台</span>;
|
||||||
|
}
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: "兑换积分",
|
||||||
|
align: "center",
|
||||||
|
field: "name",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: "剩余兑换库存",
|
||||||
|
align: "center",
|
||||||
|
field: "name",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: "兑换状态",
|
||||||
|
align: "center",
|
||||||
|
field: "name",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: "已兑换数",
|
||||||
|
align: "center",
|
||||||
|
field: "name",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: "操作",
|
||||||
|
fixed: "right",
|
||||||
|
type: "jsx",
|
||||||
|
align: "center",
|
||||||
|
width: "140px",
|
||||||
|
render: (row) => {
|
||||||
|
let edit = () => {
|
||||||
|
// this.$refs.viewDetails.toggle(row).update();
|
||||||
|
};
|
||||||
|
return (
|
||||||
|
<div>
|
||||||
|
<el-button size="mini" type="primary" onClick={edit}>
|
||||||
|
编辑
|
||||||
|
</el-button>
|
||||||
|
<el-button size="mini" type="danger" onClick={edit}>
|
||||||
|
删除
|
||||||
|
</el-button>
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
},
|
||||||
|
},
|
||||||
|
];
|
||||||
|
},
|
||||||
|
tableEvent() {
|
||||||
|
return {
|
||||||
|
"checkbox-all": ({ records, reserves }) => {
|
||||||
|
this.selectList = [...records, ...reserves];
|
||||||
|
},
|
||||||
|
"checkbox-change": ({ records, reserves }) => {
|
||||||
|
this.selectList = [...records, ...reserves];
|
||||||
|
},
|
||||||
|
};
|
||||||
|
},
|
||||||
|
...mapState("userData", [
|
||||||
|
"isMerchant",
|
||||||
|
"marketList",
|
||||||
|
"storeList",
|
||||||
|
"marketId",
|
||||||
|
"shopId",
|
||||||
|
]),
|
||||||
|
},
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss" scoped></style>
|
|
@ -0,0 +1,375 @@
|
||||||
|
<template>
|
||||||
|
<div>
|
||||||
|
<div v-if="isShopId" style="height: calc(100vh - 200px)">
|
||||||
|
<obj-table-plus
|
||||||
|
ref="oTable"
|
||||||
|
style="height: 100%"
|
||||||
|
:tableCols="tableCols"
|
||||||
|
:tableProp="tableProp"
|
||||||
|
@query="queryList"
|
||||||
|
v-model="dataList"
|
||||||
|
:tableEvent="tableEvent"
|
||||||
|
:enableAutoQuery="false"
|
||||||
|
>
|
||||||
|
<template slot="tableTop">
|
||||||
|
<el-form :inline="true" :model="formInline" class="demo-form-inline">
|
||||||
|
<el-form-item label="订单号">
|
||||||
|
<el-input
|
||||||
|
v-model="formInline.name"
|
||||||
|
placeholder="订单号搜索"
|
||||||
|
></el-input>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="商品名称">
|
||||||
|
<el-input
|
||||||
|
v-model="formInline.name"
|
||||||
|
placeholder="商品名称或id"
|
||||||
|
></el-input>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="下单时间">
|
||||||
|
<el-date-picker
|
||||||
|
v-model="value1"
|
||||||
|
type="datetimerange"
|
||||||
|
start-placeholder="开始日期"
|
||||||
|
end-placeholder="结束日期"
|
||||||
|
>
|
||||||
|
</el-date-picker>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item>
|
||||||
|
<el-button type="primary" @click="$refs.oTable.reload()"
|
||||||
|
>查询</el-button
|
||||||
|
>
|
||||||
|
<el-button type="primary" @click="Reset">重置</el-button>
|
||||||
|
</el-form-item>
|
||||||
|
</el-form>
|
||||||
|
<el-tabs v-model="activeName" @tab-click="handleClick">
|
||||||
|
<el-tab-pane
|
||||||
|
v-for="item in statusList"
|
||||||
|
:key="item.value"
|
||||||
|
:label="item.label"
|
||||||
|
:name="item.value"
|
||||||
|
></el-tab-pane>
|
||||||
|
</el-tabs>
|
||||||
|
<div class="mb-2">
|
||||||
|
<el-button type="primary" size="small" @click="addProduct"
|
||||||
|
>批量导出</el-button
|
||||||
|
>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
</obj-table-plus>
|
||||||
|
<!-- 添加或编辑 -->
|
||||||
|
<!-- <add-or-update
|
||||||
|
:marketId="formInline.marketId"
|
||||||
|
:shopId="formInline.shopId"
|
||||||
|
@queryList="$refs.oTable.reload()"
|
||||||
|
ref="addOrUpdate"
|
||||||
|
></add-or-update> -->
|
||||||
|
</div>
|
||||||
|
<div style="height: calc(100vh - 200px)" v-else>
|
||||||
|
<el-empty :image-size="200" description="您不是摊主哦"></el-empty>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
// import AddDiscount from "./popup/add-discount.vue";
|
||||||
|
// import AddPrice from "./popup/add-price.vue";
|
||||||
|
// import AddOrUpdate from "./popup/add-or-update.vue";
|
||||||
|
// import earlyWarning from "./popup/early-warning.vue";
|
||||||
|
export default {
|
||||||
|
// components: { earlyWarning, AddOrUpdate },
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
activeName: "5",
|
||||||
|
value1: "1",
|
||||||
|
advanceSellStatus: "",
|
||||||
|
dataList: [],
|
||||||
|
formInline: {
|
||||||
|
name: "",
|
||||||
|
marketId: "",
|
||||||
|
shopId: "",
|
||||||
|
},
|
||||||
|
marketList: [],
|
||||||
|
tableProp: {
|
||||||
|
"auto-resize": true,
|
||||||
|
border: true,
|
||||||
|
height: "auto",
|
||||||
|
"row-id": "id",
|
||||||
|
"show-overflow": false,
|
||||||
|
},
|
||||||
|
statusList: [
|
||||||
|
{
|
||||||
|
label: "全部",
|
||||||
|
value: "5",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: "代发货",
|
||||||
|
value: "0",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: "带收货",
|
||||||
|
value: "1",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: "待评价",
|
||||||
|
value: "2",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: "已取消",
|
||||||
|
value: "3",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: "交易关闭",
|
||||||
|
value: "3",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: "已完成",
|
||||||
|
value: "3",
|
||||||
|
},
|
||||||
|
],
|
||||||
|
productFilterType: "SALE",
|
||||||
|
selectList: [],
|
||||||
|
isShopId: "",
|
||||||
|
storeList: [],
|
||||||
|
};
|
||||||
|
},
|
||||||
|
created() {
|
||||||
|
if (JSON.parse(sessionStorage.getItem("userInfo")).markets?.length > 0) {
|
||||||
|
this.isShopId = true;
|
||||||
|
this.formInline.marketId = JSON.parse(
|
||||||
|
sessionStorage.getItem("userInfo")
|
||||||
|
).markets[0].marketId;
|
||||||
|
this.marketList = JSON.parse(sessionStorage.getItem("userInfo")).markets;
|
||||||
|
console.log(this.marketList);
|
||||||
|
this.getData();
|
||||||
|
} else if (JSON.parse(sessionStorage.getItem("userInfo")).shopId) {
|
||||||
|
(this.formInline.shopId = JSON.parse(
|
||||||
|
sessionStorage.getItem("userInfo")
|
||||||
|
).shopId),
|
||||||
|
(this.isShopId = true);
|
||||||
|
this.$nextTick(() => {
|
||||||
|
this.$refs.oTable.reload();
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
this.isShopId = false;
|
||||||
|
}
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
getData() {
|
||||||
|
this.$api.mer_admin
|
||||||
|
.storeList({ marketId: this.formInline.marketId })
|
||||||
|
.then((res) => {
|
||||||
|
this.storeList = res.data.data;
|
||||||
|
this.formInline.shopId = res.data.data[0].shopId;
|
||||||
|
this.$nextTick(() => {
|
||||||
|
this.$refs.oTable.reload();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
},
|
||||||
|
addProduct() {
|
||||||
|
this.$refs.addOrUpdate.toggle().add();
|
||||||
|
},
|
||||||
|
deleteProduct() {
|
||||||
|
console.log(this.selectList);
|
||||||
|
let integers = this.selectList.map((item) => {
|
||||||
|
return item.id;
|
||||||
|
});
|
||||||
|
this.$confirm("此操作将删除该商品, 是否继续?", "提示", {
|
||||||
|
confirmButtonText: "确定",
|
||||||
|
cancelButtonText: "取消",
|
||||||
|
type: "warning",
|
||||||
|
})
|
||||||
|
.then(() => {
|
||||||
|
console.log("111");
|
||||||
|
this.$api.mer_admin.BatchDeleteProducts(integers).then((res) => {
|
||||||
|
this.$refs.oTable.reload();
|
||||||
|
});
|
||||||
|
})
|
||||||
|
.catch(() => {
|
||||||
|
this.$message({
|
||||||
|
type: "info",
|
||||||
|
message: "已取消删除",
|
||||||
|
});
|
||||||
|
});
|
||||||
|
},
|
||||||
|
queryList(pageNo, pageSize) {
|
||||||
|
this.$api.preSale
|
||||||
|
.preSaleProducts({
|
||||||
|
pageNumber: pageNo,
|
||||||
|
pageSize: pageSize,
|
||||||
|
...this.formInline,
|
||||||
|
advanceSellStatus: this.advanceSellStatus,
|
||||||
|
merchantId: JSON.parse(sessionStorage.getItem("userInfo")).merchantId,
|
||||||
|
productQuerySortParam: [],
|
||||||
|
})
|
||||||
|
.then((res) => {
|
||||||
|
console.log(res);
|
||||||
|
this.$refs.oTable.complete(
|
||||||
|
res.data.data.data,
|
||||||
|
Number(res.data.data.total)
|
||||||
|
);
|
||||||
|
})
|
||||||
|
.catch((err) => {
|
||||||
|
this.$refs.oTable.complete(false);
|
||||||
|
});
|
||||||
|
},
|
||||||
|
Reset() {
|
||||||
|
this.formInline = {
|
||||||
|
name: "",
|
||||||
|
marketId: JSON.parse(sessionStorage.getItem("userInfo")).markets[0]
|
||||||
|
.marketId,
|
||||||
|
};
|
||||||
|
this.$refs.oTable.reload();
|
||||||
|
},
|
||||||
|
handleClick(e) {
|
||||||
|
console.log(e.name);
|
||||||
|
if (e.name == "5") {
|
||||||
|
this.advanceSellStatus = "";
|
||||||
|
} else {
|
||||||
|
this.advanceSellStatus = e.name;
|
||||||
|
}
|
||||||
|
this.$refs.oTable.reload();
|
||||||
|
},
|
||||||
|
addEarlyWarning() {
|
||||||
|
this.$refs.earlyWarning.toggle().add();
|
||||||
|
},
|
||||||
|
},
|
||||||
|
computed: {
|
||||||
|
tableCols() {
|
||||||
|
return [
|
||||||
|
{ type: "checkbox", width: "60px", fixed: "left" },
|
||||||
|
// { type: "seq", width: "60px", align: "center", title: "序号" },
|
||||||
|
{
|
||||||
|
title: "订单号",
|
||||||
|
align: "center",
|
||||||
|
field: "id",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: "订单商品",
|
||||||
|
field: "productPhotoList",
|
||||||
|
align: "center",
|
||||||
|
width: "80px",
|
||||||
|
type: "jsx",
|
||||||
|
render: ({ row }) => {
|
||||||
|
if (row.productPhotoList.length > 0) {
|
||||||
|
return (
|
||||||
|
<el-image
|
||||||
|
preview-src-list={row.productPhotoList.map((item) => {
|
||||||
|
return item.url;
|
||||||
|
})}
|
||||||
|
src={row.productPhotoList[0].url}
|
||||||
|
></el-image>
|
||||||
|
);
|
||||||
|
} else {
|
||||||
|
return <span>暂无商品图</span>;
|
||||||
|
}
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: "规格/数量",
|
||||||
|
align: "center",
|
||||||
|
field: "startTime",
|
||||||
|
type: "jsx",
|
||||||
|
render: ({ row }) => {
|
||||||
|
return (
|
||||||
|
<span>
|
||||||
|
{row.startTime}至{row.endTime}
|
||||||
|
</span>
|
||||||
|
);
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: "兑换积分",
|
||||||
|
align: "center",
|
||||||
|
field: "minSalePrice",
|
||||||
|
type: "jsx",
|
||||||
|
render: ({ row }) => {
|
||||||
|
return (
|
||||||
|
<span>
|
||||||
|
{row.balancePaymentStartTime}至{row.balancePaymentEndTime}
|
||||||
|
</span>
|
||||||
|
);
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: "下单时间",
|
||||||
|
align: "center",
|
||||||
|
field: "presalePrice",
|
||||||
|
type: "jsx",
|
||||||
|
render: ({ row }) => {
|
||||||
|
if (
|
||||||
|
Math.min.apply(
|
||||||
|
Math,
|
||||||
|
row.productSpecificationList.map((item) => item.presalePrice)
|
||||||
|
) ==
|
||||||
|
Math.max.apply(
|
||||||
|
Math,
|
||||||
|
row.productSpecificationList.map((item) => item.presalePrice)
|
||||||
|
)
|
||||||
|
) {
|
||||||
|
return (
|
||||||
|
<span>
|
||||||
|
{Math.min.apply(
|
||||||
|
Math,
|
||||||
|
row.productSpecificationList.map(
|
||||||
|
(item) => item.presalePrice
|
||||||
|
)
|
||||||
|
)}
|
||||||
|
</span>
|
||||||
|
);
|
||||||
|
} else {
|
||||||
|
return (
|
||||||
|
<span>
|
||||||
|
{Math.min.apply(
|
||||||
|
Math,
|
||||||
|
row.productSpecificationList.map(
|
||||||
|
(item) => item.presalePrice
|
||||||
|
)
|
||||||
|
)}
|
||||||
|
至
|
||||||
|
{Math.max.apply(
|
||||||
|
Math,
|
||||||
|
row.productSpecificationList.map(
|
||||||
|
(item) => item.presalePrice
|
||||||
|
)
|
||||||
|
)}
|
||||||
|
</span>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: "操作",
|
||||||
|
fixed: "right",
|
||||||
|
type: "jsx",
|
||||||
|
align: "center",
|
||||||
|
width: "100px",
|
||||||
|
render: ({ row }) => {
|
||||||
|
let changeInventory = () => {
|
||||||
|
this.$refs.addStock.toggle(row).update();
|
||||||
|
};
|
||||||
|
return (
|
||||||
|
<div>
|
||||||
|
<el-button size="mini" type="primary" onClick={changeInventory}>
|
||||||
|
查看
|
||||||
|
</el-button>
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
},
|
||||||
|
},
|
||||||
|
];
|
||||||
|
},
|
||||||
|
tableEvent() {
|
||||||
|
return {
|
||||||
|
"checkbox-all": ({ records, reserves }) => {
|
||||||
|
this.selectList = [...records, ...reserves];
|
||||||
|
},
|
||||||
|
"checkbox-change": ({ records, reserves }) => {
|
||||||
|
this.selectList = [...records, ...reserves];
|
||||||
|
},
|
||||||
|
};
|
||||||
|
},
|
||||||
|
},
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss" scoped></style>
|
|
@ -0,0 +1,129 @@
|
||||||
|
<template>
|
||||||
|
<div>
|
||||||
|
<div class="tips">
|
||||||
|
此页面数据在每日0点提交并生效;请勿频繁操作,以免影响用户体验。
|
||||||
|
</div>
|
||||||
|
<div class="tipsLevel">积分/成长值任务(9)</div>
|
||||||
|
<div class="tipsLevel" v-if="storeList.length > 0">
|
||||||
|
<el-select v-model="formInline.shopId" placeholder="请选择">
|
||||||
|
<el-option
|
||||||
|
v-for="item in storeList"
|
||||||
|
:key="item.shopId"
|
||||||
|
:label="item.shopName"
|
||||||
|
:value="item.shopId"
|
||||||
|
>
|
||||||
|
</el-option>
|
||||||
|
</el-select>
|
||||||
|
<el-button style="margin-left: 20px" @click="getList" type="primary"
|
||||||
|
>查询</el-button
|
||||||
|
>
|
||||||
|
</div>
|
||||||
|
<el-table :data="list" :border="true" style="width: 100%">
|
||||||
|
<el-table-column align="center" label="任务名称" prop="taskName" />
|
||||||
|
<el-table-column align="center" label="任务描述" prop="taskConfigDetail" />
|
||||||
|
<el-table-column
|
||||||
|
align="center"
|
||||||
|
label="排序"
|
||||||
|
prop="taskSort"
|
||||||
|
/>
|
||||||
|
<el-table-column
|
||||||
|
align="center"
|
||||||
|
label="状态"
|
||||||
|
prop="packageEffectiveTimeUnit"
|
||||||
|
>
|
||||||
|
<template v-slot="scope">
|
||||||
|
<span>{{
|
||||||
|
scope.row.packageEffectiveTimeUnit == 1 ? "年" : "月"
|
||||||
|
}}</span>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column align="center" label="操作" fixed="right" width="240">
|
||||||
|
<template v-slot="scope">
|
||||||
|
<el-button @click="add(scope.row)" type="primary">编辑</el-button>
|
||||||
|
<el-button @click="add(scope.row)" type="primary">转移</el-button>
|
||||||
|
<el-popconfirm
|
||||||
|
confirm-button-text="确定"
|
||||||
|
cancel-button-text="取消"
|
||||||
|
icon-color="#626AEF"
|
||||||
|
title="确定删除吗?"
|
||||||
|
@confirm="confirmEvent(scope.row)"
|
||||||
|
@cancel="cancelEvent"
|
||||||
|
>
|
||||||
|
<template #reference>
|
||||||
|
<el-button type="danger">删除</el-button>
|
||||||
|
</template>
|
||||||
|
</el-popconfirm>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
</el-table>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import { mapState } from "vuex";
|
||||||
|
export default {
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
list: [],
|
||||||
|
formInline: {
|
||||||
|
unitType: "1",
|
||||||
|
marketId: "",
|
||||||
|
shopId: "",
|
||||||
|
},
|
||||||
|
};
|
||||||
|
},
|
||||||
|
created() {
|
||||||
|
this.formInline = {
|
||||||
|
unitType: JSON.parse(sessionStorage.getItem("userInfo")).unitType,
|
||||||
|
marketId: this.marketId,
|
||||||
|
shopId: this.shopId,
|
||||||
|
};
|
||||||
|
this.getList();
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
// getData() {
|
||||||
|
// this.$api.mer_admin
|
||||||
|
// .storeList({ marketId: this.formInline.marketId })
|
||||||
|
// .then((res) => {
|
||||||
|
// this.storeList = res.data.data;
|
||||||
|
// this.formInline.shopId = res.data.data[0].shopId;
|
||||||
|
// this.$nextTick(() => {
|
||||||
|
// this.getList();
|
||||||
|
// });
|
||||||
|
// });
|
||||||
|
// },
|
||||||
|
getList() {
|
||||||
|
this.$api.marketing.integralList(this.formInline).then((res) => {
|
||||||
|
this.list = res.data.data;
|
||||||
|
});
|
||||||
|
},
|
||||||
|
add() {},
|
||||||
|
confirmEvent() {},
|
||||||
|
cancelEvent() {},
|
||||||
|
},
|
||||||
|
computed: {
|
||||||
|
...mapState("userData", [
|
||||||
|
"isMerchant",
|
||||||
|
"marketList",
|
||||||
|
"storeList",
|
||||||
|
"marketId",
|
||||||
|
"shopId",
|
||||||
|
]),
|
||||||
|
},
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style scoped lang="scss" >
|
||||||
|
.tips {
|
||||||
|
padding: 15px;
|
||||||
|
margin-bottom: 20px;
|
||||||
|
border-radius: 10px;
|
||||||
|
width: 100%;
|
||||||
|
font-size: 16px;
|
||||||
|
background: #e5e5e5;
|
||||||
|
color: #faa639;
|
||||||
|
}
|
||||||
|
.tipsLevel {
|
||||||
|
margin: 20px 0;
|
||||||
|
}
|
||||||
|
</style>
|
|
@ -0,0 +1,315 @@
|
||||||
|
<template>
|
||||||
|
<div style="height: calc(100vh - 200px)">
|
||||||
|
<obj-table-plus
|
||||||
|
ref="oTable"
|
||||||
|
style="height: 100%"
|
||||||
|
:tableCols="tableCols"
|
||||||
|
:tableProp="tableProp"
|
||||||
|
@query="queryList"
|
||||||
|
v-model="dataList"
|
||||||
|
:tableEvent="tableEvent"
|
||||||
|
:enableAutoQuery="false"
|
||||||
|
>
|
||||||
|
<template slot="tableTop">
|
||||||
|
<el-form :inline="true" :model="formInline" class="demo-form-inline">
|
||||||
|
<el-form-item label="用户ID">
|
||||||
|
<el-input
|
||||||
|
placeholder="请输入用户ID"
|
||||||
|
v-model="formInline.name"
|
||||||
|
></el-input>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="用户昵称">
|
||||||
|
<el-input
|
||||||
|
placeholder="请输入用户昵称"
|
||||||
|
v-model="formInline.name"
|
||||||
|
></el-input>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="会员等级">
|
||||||
|
<el-select
|
||||||
|
@change="getData"
|
||||||
|
v-model="formInline.marketId"
|
||||||
|
placeholder="请选择会员等级"
|
||||||
|
>
|
||||||
|
<el-option
|
||||||
|
v-for="item in marketList"
|
||||||
|
:key="item.marketId"
|
||||||
|
:label="item.marketName"
|
||||||
|
:value="item.marketId"
|
||||||
|
></el-option>
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="手机号">
|
||||||
|
<el-input
|
||||||
|
placeholder="请输入手机号"
|
||||||
|
v-model="formInline.name"
|
||||||
|
></el-input>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="会员状态">
|
||||||
|
<el-select
|
||||||
|
@change="getData"
|
||||||
|
v-model="formInline.marketId"
|
||||||
|
placeholder="请选择会员状态"
|
||||||
|
>
|
||||||
|
<el-option
|
||||||
|
v-for="item in marketList"
|
||||||
|
:key="item.marketId"
|
||||||
|
:label="item.marketName"
|
||||||
|
:value="item.marketId"
|
||||||
|
></el-option>
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="注册时间">
|
||||||
|
<el-date-picker
|
||||||
|
v-model="value1"
|
||||||
|
type="datetimerange"
|
||||||
|
start-placeholder="开始日期"
|
||||||
|
end-placeholder="结束日期"
|
||||||
|
>
|
||||||
|
</el-date-picker>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="生日">
|
||||||
|
<el-date-picker
|
||||||
|
v-model="value1"
|
||||||
|
type="datetimerange"
|
||||||
|
start-placeholder="开始日期"
|
||||||
|
end-placeholder="结束日期"
|
||||||
|
>
|
||||||
|
</el-date-picker>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="会员性别">
|
||||||
|
<el-select
|
||||||
|
@change="getData"
|
||||||
|
v-model="formInline.marketId"
|
||||||
|
placeholder="全部"
|
||||||
|
>
|
||||||
|
<el-option
|
||||||
|
v-for="item in marketList"
|
||||||
|
:key="item.marketId"
|
||||||
|
:label="item.marketName"
|
||||||
|
:value="item.marketId"
|
||||||
|
></el-option>
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
<!-- <el-form-item v-if="marketList.length > 0" label="菜市场">
|
||||||
|
<el-select
|
||||||
|
@change="getData"
|
||||||
|
v-model="formInline.marketId"
|
||||||
|
placeholder="请选择菜市场"
|
||||||
|
>
|
||||||
|
<el-option
|
||||||
|
v-for="item in marketList"
|
||||||
|
:key="item.marketId"
|
||||||
|
:label="item.marketName"
|
||||||
|
:value="item.marketId"
|
||||||
|
></el-option>
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item v-if="marketList.length > 0" label="店铺">
|
||||||
|
<el-select v-model="formInline.shopId" placeholder="请选择店铺">
|
||||||
|
<el-option
|
||||||
|
v-for="item in storeList"
|
||||||
|
:key="item.shopId"
|
||||||
|
:label="item.shopName"
|
||||||
|
:value="item.shopId"
|
||||||
|
></el-option>
|
||||||
|
</el-select>
|
||||||
|
</el-form-item> -->
|
||||||
|
<el-form-item>
|
||||||
|
<el-button type="primary" @click="$refs.oTable.reload()"
|
||||||
|
>查询</el-button
|
||||||
|
>
|
||||||
|
<el-button type="primary" @click="$refs.oTable.reload()"
|
||||||
|
>重置</el-button
|
||||||
|
>
|
||||||
|
</el-form-item>
|
||||||
|
</el-form>
|
||||||
|
</template>
|
||||||
|
</obj-table-plus>
|
||||||
|
<!-- 添加或编辑 -->
|
||||||
|
<!-- <add-or-update
|
||||||
|
@queryList="$refs.oTable.reload()"
|
||||||
|
ref="addOrUpdate"
|
||||||
|
></add-or-update> -->
|
||||||
|
<!-- 查看详情 -->
|
||||||
|
<!-- <viewDetails ref="viewDetails"></viewDetails> -->
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
// import AddOrUpdate from "./popup/add-or-update.vue";
|
||||||
|
// import viewDetails from "./popup/view-details.vue";
|
||||||
|
import { mapState } from "vuex";
|
||||||
|
export default {
|
||||||
|
// components: { AddOrUpdate },
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
dataList: [],
|
||||||
|
formInline: {
|
||||||
|
marketId: "",
|
||||||
|
shopId: "",
|
||||||
|
unitType: "",
|
||||||
|
},
|
||||||
|
tableProp: {
|
||||||
|
"auto-resize": true,
|
||||||
|
border: true,
|
||||||
|
height: "auto",
|
||||||
|
"row-id": "id",
|
||||||
|
"show-overflow": false,
|
||||||
|
},
|
||||||
|
productFilterType: "SALE",
|
||||||
|
selectList: [],
|
||||||
|
value1: [],
|
||||||
|
};
|
||||||
|
},
|
||||||
|
created() {
|
||||||
|
this.formInline = {
|
||||||
|
unitType: JSON.parse(sessionStorage.getItem("userInfo")).unitType,
|
||||||
|
marketId: this.marketId,
|
||||||
|
shopId: "",
|
||||||
|
};
|
||||||
|
this.$nextTick(() => {
|
||||||
|
this.$refs.oTable.reload();
|
||||||
|
});
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
getData() {
|
||||||
|
this.$api.mer_admin
|
||||||
|
.storeList({ marketId: this.formInline.marketId })
|
||||||
|
.then((res) => {
|
||||||
|
this.storeList = res.data.data;
|
||||||
|
// this.formInline.shopId = res.data.data[0].shopId;
|
||||||
|
this.$nextTick(() => {
|
||||||
|
this.$refs.oTable.reload();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
},
|
||||||
|
queryList(pageNo, pageSize) {
|
||||||
|
this.$api.marketing
|
||||||
|
.marketingUserPage({
|
||||||
|
pageNumber: pageNo,
|
||||||
|
pageSize: pageSize,
|
||||||
|
...this.formInline,
|
||||||
|
})
|
||||||
|
.then((res) => {
|
||||||
|
console.log(res);
|
||||||
|
this.$refs.oTable.complete(
|
||||||
|
res.data.data.data,
|
||||||
|
Number(res.data.data.total)
|
||||||
|
);
|
||||||
|
})
|
||||||
|
.catch((err) => {
|
||||||
|
this.$refs.oTable.complete(false);
|
||||||
|
});
|
||||||
|
},
|
||||||
|
},
|
||||||
|
computed: {
|
||||||
|
tableCols() {
|
||||||
|
return [
|
||||||
|
{ type: "checkbox", width: "60px", fixed: "left" },
|
||||||
|
// { type: "seq", width: "60px", align: "center", title: "序号" },
|
||||||
|
{
|
||||||
|
title: "用戶ID",
|
||||||
|
align: "center",
|
||||||
|
field: "name",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: "用戶头像",
|
||||||
|
align: "center",
|
||||||
|
field: "publisher",
|
||||||
|
type: "jsx",
|
||||||
|
render: ({ row }) => {
|
||||||
|
if (row.publisher === "MERCHANT") {
|
||||||
|
return <span>店铺</span>;
|
||||||
|
} else if (row.publisher == "PLATFORM") {
|
||||||
|
return <span>平台</span>;
|
||||||
|
}
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: "用戶昵称",
|
||||||
|
align: "center",
|
||||||
|
field: "name",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: "手机号",
|
||||||
|
align: "center",
|
||||||
|
field: "name",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: "进行中订单数",
|
||||||
|
align: "center",
|
||||||
|
field: "name",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: "完成订单数",
|
||||||
|
align: "center",
|
||||||
|
field: "name",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: "消费金额(元)",
|
||||||
|
align: "center",
|
||||||
|
field: "name",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: "会员等级",
|
||||||
|
align: "center",
|
||||||
|
field: "money",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: "生日",
|
||||||
|
align: "center",
|
||||||
|
field: "discount",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: "注册时间",
|
||||||
|
align: "center",
|
||||||
|
field: "minPrice",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: "限量",
|
||||||
|
align: "center",
|
||||||
|
field: "limitedNum",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: "操作",
|
||||||
|
fixed: "right",
|
||||||
|
type: "jsx",
|
||||||
|
align: "center",
|
||||||
|
width: "140px",
|
||||||
|
render: (row) => {
|
||||||
|
let edit = () => {
|
||||||
|
// this.$refs.viewDetails.toggle(row).update();
|
||||||
|
};
|
||||||
|
return (
|
||||||
|
<div>
|
||||||
|
<el-button size="mini" type="primary" onClick={edit}>
|
||||||
|
详情
|
||||||
|
</el-button>
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
},
|
||||||
|
},
|
||||||
|
];
|
||||||
|
},
|
||||||
|
tableEvent() {
|
||||||
|
return {
|
||||||
|
"checkbox-all": ({ records, reserves }) => {
|
||||||
|
this.selectList = [...records, ...reserves];
|
||||||
|
},
|
||||||
|
"checkbox-change": ({ records, reserves }) => {
|
||||||
|
this.selectList = [...records, ...reserves];
|
||||||
|
},
|
||||||
|
};
|
||||||
|
},
|
||||||
|
...mapState("userData", [
|
||||||
|
"isMerchant",
|
||||||
|
"marketList",
|
||||||
|
"storeList",
|
||||||
|
"marketId",
|
||||||
|
"shopId",
|
||||||
|
]),
|
||||||
|
},
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss" scoped></style>
|
|
@ -0,0 +1,12 @@
|
||||||
|
<template>
|
||||||
|
<div style="height: calc(100vh - 200px)">
|
||||||
|
预售订单
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
export default {}
|
||||||
|
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss" scoped></style>
|
|
@ -0,0 +1,562 @@
|
||||||
|
<template>
|
||||||
|
<div>
|
||||||
|
<div v-if="isShopId" style="height: calc(100vh - 200px)">
|
||||||
|
<obj-table-plus
|
||||||
|
ref="oTable"
|
||||||
|
style="height: 100%"
|
||||||
|
:tableCols="tableCols"
|
||||||
|
:tableProp="tableProp"
|
||||||
|
@query="queryList"
|
||||||
|
v-model="dataList"
|
||||||
|
:tableEvent="tableEvent"
|
||||||
|
:enableAutoQuery="false"
|
||||||
|
>
|
||||||
|
<template slot="tableTop">
|
||||||
|
<el-form :inline="true" :model="formInline" class="demo-form-inline">
|
||||||
|
<el-row v-if="marketList.length > 0">
|
||||||
|
<el-col :span="24">
|
||||||
|
<el-form-item label="菜市场">
|
||||||
|
<el-select
|
||||||
|
@change="getData"
|
||||||
|
v-model="formInline.marketId"
|
||||||
|
placeholder="请选择菜市场"
|
||||||
|
>
|
||||||
|
<el-option
|
||||||
|
v-for="item in marketList"
|
||||||
|
:key="item.marketId"
|
||||||
|
:label="item.marketName"
|
||||||
|
:value="item.marketId"
|
||||||
|
></el-option>
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="店铺">
|
||||||
|
<el-select
|
||||||
|
v-model="formInline.shopId"
|
||||||
|
placeholder="请选择店铺"
|
||||||
|
>
|
||||||
|
<el-option
|
||||||
|
v-for="item in storeList"
|
||||||
|
:key="item.shopId"
|
||||||
|
:label="item.shopName"
|
||||||
|
:value="item.shopId"
|
||||||
|
></el-option>
|
||||||
|
</el-select> </el-form-item
|
||||||
|
></el-col>
|
||||||
|
</el-row>
|
||||||
|
<el-form-item label="商品ID">
|
||||||
|
<el-input
|
||||||
|
v-model="formInline.name"
|
||||||
|
placeholder="商品ID搜索"
|
||||||
|
></el-input>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="商品名称">
|
||||||
|
<el-input
|
||||||
|
v-model="formInline.name"
|
||||||
|
placeholder="商品名称搜索"
|
||||||
|
></el-input>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="状态">
|
||||||
|
<el-select v-model="formInline.status" placeholder="请选择状态">
|
||||||
|
<el-option
|
||||||
|
v-for="item in statusList"
|
||||||
|
:key="item.value"
|
||||||
|
:label="item.label"
|
||||||
|
:value="item.value"
|
||||||
|
></el-option>
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item>
|
||||||
|
<el-button type="primary" @click="$refs.oTable.reload()"
|
||||||
|
>查询</el-button
|
||||||
|
>
|
||||||
|
<el-button type="primary" @click="Reset">重置</el-button>
|
||||||
|
</el-form-item>
|
||||||
|
</el-form>
|
||||||
|
<el-tabs v-model="activeName" @tab-click="handleClick">
|
||||||
|
<el-tab-pane
|
||||||
|
v-for="item in statusList"
|
||||||
|
:key="item.value"
|
||||||
|
:label="item.label"
|
||||||
|
:name="item.value"
|
||||||
|
></el-tab-pane>
|
||||||
|
</el-tabs>
|
||||||
|
<div class="mb-2">
|
||||||
|
<el-button @click="addEarlyWarning" type="primary" size="small"
|
||||||
|
>库存预警设置</el-button
|
||||||
|
>
|
||||||
|
<el-button
|
||||||
|
:disabled="selectList.length <= 0"
|
||||||
|
type="danger"
|
||||||
|
size="small"
|
||||||
|
@click="deleteProduct"
|
||||||
|
>批量关闭</el-button
|
||||||
|
>
|
||||||
|
<el-button type="primary" size="small" @click="addProduct"
|
||||||
|
>添加商品</el-button
|
||||||
|
>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
</obj-table-plus>
|
||||||
|
<!-- 添加或编辑 -->
|
||||||
|
<add-or-update
|
||||||
|
:marketId="formInline.marketId"
|
||||||
|
:shopId="formInline.shopId"
|
||||||
|
@queryList="$refs.oTable.reload()"
|
||||||
|
ref="addOrUpdate"
|
||||||
|
></add-or-update>
|
||||||
|
<!-- 改价格 -->
|
||||||
|
<!-- <AddPrice ref="AddPrice" @queryList="$refs.oTable.reload()"></AddPrice> -->
|
||||||
|
<!-- 改库存 -->
|
||||||
|
<!-- <addStock ref="addStock" @queryList="$refs.oTable.reload()"></addStock> -->
|
||||||
|
<!-- 打折扣 -->
|
||||||
|
<earlyWarning
|
||||||
|
ref="earlyWarning"
|
||||||
|
@queryList="$refs.oTable.reload()"
|
||||||
|
></earlyWarning>
|
||||||
|
</div>
|
||||||
|
<div style="height: calc(100vh - 200px)" v-else>
|
||||||
|
<el-empty :image-size="200" description="您不是摊主哦"></el-empty>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
// import AddDiscount from "./popup/add-discount.vue";
|
||||||
|
// import AddPrice from "./popup/add-price.vue";
|
||||||
|
import AddOrUpdate from "./popup/add-or-update.vue";
|
||||||
|
import earlyWarning from "./popup/early-warning.vue";
|
||||||
|
export default {
|
||||||
|
components: { earlyWarning, AddOrUpdate },
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
activeName: "5",
|
||||||
|
advanceSellStatus: "",
|
||||||
|
dataList: [],
|
||||||
|
formInline: {
|
||||||
|
name: "",
|
||||||
|
marketId: "",
|
||||||
|
shopId: "",
|
||||||
|
},
|
||||||
|
marketList: [],
|
||||||
|
tableProp: {
|
||||||
|
"auto-resize": true,
|
||||||
|
border: true,
|
||||||
|
height: "auto",
|
||||||
|
"row-id": "id",
|
||||||
|
"show-overflow": false,
|
||||||
|
},
|
||||||
|
statusList: [
|
||||||
|
{
|
||||||
|
label: "全部",
|
||||||
|
value: "5",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: "未开始",
|
||||||
|
value: "0",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: "进行中",
|
||||||
|
value: "1",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: "已结束",
|
||||||
|
value: "2",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: "已关闭",
|
||||||
|
value: "3",
|
||||||
|
},
|
||||||
|
],
|
||||||
|
productFilterType: "SALE",
|
||||||
|
selectList: [],
|
||||||
|
isShopId: "",
|
||||||
|
storeList: [],
|
||||||
|
};
|
||||||
|
},
|
||||||
|
created() {
|
||||||
|
if (JSON.parse(sessionStorage.getItem("userInfo")).markets?.length > 0) {
|
||||||
|
this.isShopId = true;
|
||||||
|
this.formInline.marketId = JSON.parse(
|
||||||
|
sessionStorage.getItem("userInfo")
|
||||||
|
).markets[0].marketId;
|
||||||
|
this.marketList = JSON.parse(sessionStorage.getItem("userInfo")).markets;
|
||||||
|
console.log(this.marketList);
|
||||||
|
this.getData();
|
||||||
|
} else if (JSON.parse(sessionStorage.getItem("userInfo")).shopId) {
|
||||||
|
(this.formInline.shopId = JSON.parse(
|
||||||
|
sessionStorage.getItem("userInfo")
|
||||||
|
).shopId),
|
||||||
|
(this.isShopId = true);
|
||||||
|
this.$nextTick(() => {
|
||||||
|
this.$refs.oTable.reload();
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
this.isShopId = false;
|
||||||
|
}
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
getData() {
|
||||||
|
this.$api.mer_admin
|
||||||
|
.storeList({ marketId: this.formInline.marketId })
|
||||||
|
.then((res) => {
|
||||||
|
this.storeList = res.data.data;
|
||||||
|
this.formInline.shopId = res.data.data[0].shopId;
|
||||||
|
this.$nextTick(() => {
|
||||||
|
this.$refs.oTable.reload();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
},
|
||||||
|
addProduct() {
|
||||||
|
this.$refs.addOrUpdate.toggle().add();
|
||||||
|
},
|
||||||
|
deleteProduct() {
|
||||||
|
console.log(this.selectList);
|
||||||
|
let integers = this.selectList.map((item) => {
|
||||||
|
return item.id;
|
||||||
|
});
|
||||||
|
this.$confirm("此操作将删除该商品, 是否继续?", "提示", {
|
||||||
|
confirmButtonText: "确定",
|
||||||
|
cancelButtonText: "取消",
|
||||||
|
type: "warning",
|
||||||
|
})
|
||||||
|
.then(() => {
|
||||||
|
console.log("111");
|
||||||
|
this.$api.mer_admin.BatchDeleteProducts(integers).then((res) => {
|
||||||
|
this.$refs.oTable.reload();
|
||||||
|
});
|
||||||
|
})
|
||||||
|
.catch(() => {
|
||||||
|
this.$message({
|
||||||
|
type: "info",
|
||||||
|
message: "已取消删除",
|
||||||
|
});
|
||||||
|
});
|
||||||
|
},
|
||||||
|
queryList(pageNo, pageSize) {
|
||||||
|
this.$api.preSale
|
||||||
|
.preSaleProducts({
|
||||||
|
pageNumber: pageNo,
|
||||||
|
pageSize: pageSize,
|
||||||
|
...this.formInline,
|
||||||
|
advanceSellStatus: this.advanceSellStatus,
|
||||||
|
merchantId: JSON.parse(sessionStorage.getItem("userInfo")).merchantId,
|
||||||
|
productQuerySortParam: [],
|
||||||
|
})
|
||||||
|
.then((res) => {
|
||||||
|
console.log(res);
|
||||||
|
this.$refs.oTable.complete(
|
||||||
|
res.data.data.data,
|
||||||
|
Number(res.data.data.total)
|
||||||
|
);
|
||||||
|
})
|
||||||
|
.catch((err) => {
|
||||||
|
this.$refs.oTable.complete(false);
|
||||||
|
});
|
||||||
|
},
|
||||||
|
Reset() {
|
||||||
|
this.formInline = {
|
||||||
|
name: "",
|
||||||
|
marketId: JSON.parse(sessionStorage.getItem("userInfo")).markets[0]
|
||||||
|
.marketId,
|
||||||
|
};
|
||||||
|
this.$refs.oTable.reload();
|
||||||
|
},
|
||||||
|
handleClick(e) {
|
||||||
|
console.log(e.name);
|
||||||
|
if (e.name == "5") {
|
||||||
|
this.advanceSellStatus = "";
|
||||||
|
} else {
|
||||||
|
this.advanceSellStatus = e.name;
|
||||||
|
}
|
||||||
|
this.$refs.oTable.reload();
|
||||||
|
},
|
||||||
|
addEarlyWarning() {
|
||||||
|
this.$refs.earlyWarning.toggle().add();
|
||||||
|
},
|
||||||
|
},
|
||||||
|
computed: {
|
||||||
|
tableCols() {
|
||||||
|
return [
|
||||||
|
{ type: "checkbox", width: "60px", fixed: "left" },
|
||||||
|
// { type: "seq", width: "60px", align: "center", title: "序号" },
|
||||||
|
{
|
||||||
|
title: "商品ID",
|
||||||
|
align: "center",
|
||||||
|
field: "id",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: "商品图",
|
||||||
|
field: "productPhotoList",
|
||||||
|
align: "center",
|
||||||
|
width: "80px",
|
||||||
|
type: "jsx",
|
||||||
|
render: ({ row }) => {
|
||||||
|
if (row.productPhotoList.length > 0) {
|
||||||
|
return (
|
||||||
|
<el-image
|
||||||
|
preview-src-list={row.productPhotoList.map((item) => {
|
||||||
|
return item.url;
|
||||||
|
})}
|
||||||
|
src={row.productPhotoList[0].url}
|
||||||
|
></el-image>
|
||||||
|
);
|
||||||
|
} else {
|
||||||
|
return <span>暂无商品图</span>;
|
||||||
|
}
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: "定金支付时间",
|
||||||
|
align: "center",
|
||||||
|
field: "startTime",
|
||||||
|
type: "jsx",
|
||||||
|
render: ({ row }) => {
|
||||||
|
return (
|
||||||
|
<span>
|
||||||
|
{row.startTime}至{row.endTime}
|
||||||
|
</span>
|
||||||
|
);
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: "尾款支付时间",
|
||||||
|
align: "center",
|
||||||
|
field: "minSalePrice",
|
||||||
|
type: "jsx",
|
||||||
|
render: ({ row }) => {
|
||||||
|
return (
|
||||||
|
<span>
|
||||||
|
{row.balancePaymentStartTime}至{row.balancePaymentEndTime}
|
||||||
|
</span>
|
||||||
|
);
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: "预售价",
|
||||||
|
align: "center",
|
||||||
|
field: "presalePrice",
|
||||||
|
type: "jsx",
|
||||||
|
render: ({ row }) => {
|
||||||
|
if (
|
||||||
|
Math.min.apply(
|
||||||
|
Math,
|
||||||
|
row.productSpecificationList.map((item) => item.presalePrice)
|
||||||
|
) ==
|
||||||
|
Math.max.apply(
|
||||||
|
Math,
|
||||||
|
row.productSpecificationList.map((item) => item.presalePrice)
|
||||||
|
)
|
||||||
|
) {
|
||||||
|
return (
|
||||||
|
<span>
|
||||||
|
{Math.min.apply(
|
||||||
|
Math,
|
||||||
|
row.productSpecificationList.map(
|
||||||
|
(item) => item.presalePrice
|
||||||
|
)
|
||||||
|
)}
|
||||||
|
</span>
|
||||||
|
);
|
||||||
|
} else {
|
||||||
|
return (
|
||||||
|
<span>
|
||||||
|
{Math.min.apply(
|
||||||
|
Math,
|
||||||
|
row.productSpecificationList.map(
|
||||||
|
(item) => item.presalePrice
|
||||||
|
)
|
||||||
|
)}
|
||||||
|
至
|
||||||
|
{Math.max.apply(
|
||||||
|
Math,
|
||||||
|
row.productSpecificationList.map(
|
||||||
|
(item) => item.presalePrice
|
||||||
|
)
|
||||||
|
)}
|
||||||
|
</span>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: "定金",
|
||||||
|
align: "center",
|
||||||
|
field: "earnestMoney",
|
||||||
|
type: "jsx",
|
||||||
|
render: ({ row }) => {
|
||||||
|
if (
|
||||||
|
Math.min.apply(
|
||||||
|
Math,
|
||||||
|
row.productSpecificationList.map((item) => item.earnestMoney)
|
||||||
|
) ==
|
||||||
|
Math.max.apply(
|
||||||
|
Math,
|
||||||
|
row.productSpecificationList.map((item) => item.earnestMoney)
|
||||||
|
)
|
||||||
|
) {
|
||||||
|
return (
|
||||||
|
<span>
|
||||||
|
{Math.min.apply(
|
||||||
|
Math,
|
||||||
|
row.productSpecificationList.map(
|
||||||
|
(item) => item.earnestMoney
|
||||||
|
)
|
||||||
|
)}
|
||||||
|
</span>
|
||||||
|
);
|
||||||
|
} else {
|
||||||
|
return (
|
||||||
|
<span>
|
||||||
|
{Math.min.apply(
|
||||||
|
Math,
|
||||||
|
row.productSpecificationList.map(
|
||||||
|
(item) => item.earnestMoney
|
||||||
|
)
|
||||||
|
)}
|
||||||
|
至
|
||||||
|
{Math.max.apply(
|
||||||
|
Math,
|
||||||
|
row.productSpecificationList.map(
|
||||||
|
(item) => item.earnestMoney
|
||||||
|
)
|
||||||
|
)}
|
||||||
|
</span>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: "尾款",
|
||||||
|
align: "center",
|
||||||
|
field: "balancePayment",
|
||||||
|
type: "jsx",
|
||||||
|
render: ({ row }) => {
|
||||||
|
if (
|
||||||
|
Math.min.apply(
|
||||||
|
Math,
|
||||||
|
row.productSpecificationList.map((item) => item.balancePayment)
|
||||||
|
) ==
|
||||||
|
Math.max.apply(
|
||||||
|
Math,
|
||||||
|
row.productSpecificationList.map((item) => item.balancePayment)
|
||||||
|
)
|
||||||
|
) {
|
||||||
|
return (
|
||||||
|
<span>
|
||||||
|
{Math.min.apply(
|
||||||
|
Math,
|
||||||
|
row.productSpecificationList.map(
|
||||||
|
(item) => item.balancePayment
|
||||||
|
)
|
||||||
|
)}
|
||||||
|
</span>
|
||||||
|
);
|
||||||
|
} else {
|
||||||
|
return (
|
||||||
|
<span>
|
||||||
|
{Math.min.apply(
|
||||||
|
Math,
|
||||||
|
row.productSpecificationList.map(
|
||||||
|
(item) => item.balancePayment
|
||||||
|
)
|
||||||
|
)}
|
||||||
|
至
|
||||||
|
{Math.max.apply(
|
||||||
|
Math,
|
||||||
|
row.productSpecificationList.map(
|
||||||
|
(item) => item.balancePayment
|
||||||
|
)
|
||||||
|
)}
|
||||||
|
</span>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: "状态",
|
||||||
|
align: "center",
|
||||||
|
field: "status",
|
||||||
|
type: "jsx",
|
||||||
|
render: ({ row }) => {
|
||||||
|
if (row.advanceSellStatus == "0") {
|
||||||
|
return <span>未开始</span>;
|
||||||
|
} else if (row.advanceSellStatus == "1") {
|
||||||
|
return <span>进行中</span>;
|
||||||
|
} else if (row.advanceSellStatus == "2") {
|
||||||
|
return <span>已结束</span>;
|
||||||
|
} else if (row.advanceSellStatus == "3") {
|
||||||
|
return <span>已关闭</span>;
|
||||||
|
}
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: "操作",
|
||||||
|
fixed: "right",
|
||||||
|
type: "jsx",
|
||||||
|
align: "center",
|
||||||
|
width: "300px",
|
||||||
|
render: ({ row }) => {
|
||||||
|
let edit = () => {
|
||||||
|
console.log(row);
|
||||||
|
this.$refs.addOrUpdate.toggle(row).update();
|
||||||
|
};
|
||||||
|
let close = () => {
|
||||||
|
this.$api.preSale
|
||||||
|
.closePreSaleProducts({
|
||||||
|
productIds: [row.id],
|
||||||
|
advanceSellStatus: 3,
|
||||||
|
})
|
||||||
|
.then((res) => {
|
||||||
|
this.$refs.oTable.reload();
|
||||||
|
});
|
||||||
|
};
|
||||||
|
let changeInventory = () => {
|
||||||
|
this.$refs.addStock.toggle(row).update();
|
||||||
|
};
|
||||||
|
let setDiscounts = () => {
|
||||||
|
this.$refs.AddDiscount.toggle(row).update();
|
||||||
|
};
|
||||||
|
return (
|
||||||
|
<div>
|
||||||
|
<el-button size="mini" type="primary" onClick={changeInventory}>
|
||||||
|
查看
|
||||||
|
</el-button>
|
||||||
|
<el-button
|
||||||
|
v-show={
|
||||||
|
row.advanceSellStatus == "0" || row.advanceSellStatus == "1"
|
||||||
|
}
|
||||||
|
size="mini"
|
||||||
|
type="primary"
|
||||||
|
onClick={edit}
|
||||||
|
>
|
||||||
|
编辑
|
||||||
|
</el-button>
|
||||||
|
<el-button
|
||||||
|
v-show={row.advanceSellStatus == "1"}
|
||||||
|
size="mini"
|
||||||
|
type="primary"
|
||||||
|
onClick={close}
|
||||||
|
>
|
||||||
|
关闭
|
||||||
|
</el-button>
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
},
|
||||||
|
},
|
||||||
|
];
|
||||||
|
},
|
||||||
|
tableEvent() {
|
||||||
|
return {
|
||||||
|
"checkbox-all": ({ records, reserves }) => {
|
||||||
|
this.selectList = [...records, ...reserves];
|
||||||
|
},
|
||||||
|
"checkbox-change": ({ records, reserves }) => {
|
||||||
|
this.selectList = [...records, ...reserves];
|
||||||
|
},
|
||||||
|
};
|
||||||
|
},
|
||||||
|
},
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss" scoped></style>
|
|
@ -0,0 +1,593 @@
|
||||||
|
<template>
|
||||||
|
<div>
|
||||||
|
<obj-modal
|
||||||
|
ref="modal"
|
||||||
|
labelWidth="150px"
|
||||||
|
:modalConfig="modalConfig"
|
||||||
|
:modalData="modalData"
|
||||||
|
:modalHandles="modalHandles"
|
||||||
|
>
|
||||||
|
<div slot="dialog__content">
|
||||||
|
<el-form
|
||||||
|
:model="ruleForm"
|
||||||
|
:rules="rules"
|
||||||
|
ref="ruleForm"
|
||||||
|
label-width="150px"
|
||||||
|
class="demo-ruleForm"
|
||||||
|
>
|
||||||
|
<el-row>
|
||||||
|
<el-col :span="12">
|
||||||
|
<el-form-item label="订金支付时间:" prop="startTime">
|
||||||
|
<el-date-picker
|
||||||
|
@change="getOrderTime"
|
||||||
|
format="yyyy-MM-dd HH:mm"
|
||||||
|
data-format="yyyy-MM-dd HH:mm"
|
||||||
|
value-format="yyyy-MM-dd HH:mm:ss"
|
||||||
|
v-model="orderTime"
|
||||||
|
type="datetimerange"
|
||||||
|
range-separator="至"
|
||||||
|
start-placeholder="开始日期"
|
||||||
|
end-placeholder="结束日期"
|
||||||
|
:editable="false"
|
||||||
|
>
|
||||||
|
</el-date-picker> </el-form-item
|
||||||
|
></el-col>
|
||||||
|
<el-col :span="12">
|
||||||
|
<el-form-item
|
||||||
|
label="尾款支付时间:"
|
||||||
|
prop="balancePaymentStartTime"
|
||||||
|
>
|
||||||
|
<el-date-picker
|
||||||
|
@change="getArrearsTime"
|
||||||
|
format="yyyy-MM-dd"
|
||||||
|
data-format="yyyy-MM-dd"
|
||||||
|
value-format="yyyy-MM-dd HH:mm:ss"
|
||||||
|
v-model="arrears"
|
||||||
|
type="datetimerange"
|
||||||
|
range-separator="至"
|
||||||
|
start-placeholder="开始日期"
|
||||||
|
end-placeholder="结束日期"
|
||||||
|
:picker-options="pickerOptions"
|
||||||
|
>
|
||||||
|
</el-date-picker> </el-form-item
|
||||||
|
></el-col>
|
||||||
|
</el-row>
|
||||||
|
<el-form-item
|
||||||
|
label="预计发货时间:"
|
||||||
|
prop="estimatedStartDeliveryTime"
|
||||||
|
>
|
||||||
|
<el-date-picker
|
||||||
|
format="yyyy-MM-dd HH:mm"
|
||||||
|
data-format="yyyy-MM-dd HH:mm"
|
||||||
|
value-format="yyyy-MM-dd HH:mm:ss"
|
||||||
|
@change="deliveryTime"
|
||||||
|
v-model="delivery"
|
||||||
|
type="datetimerange"
|
||||||
|
range-separator="至"
|
||||||
|
start-placeholder="开始日期"
|
||||||
|
end-placeholder="结束日期"
|
||||||
|
:picker-options="pickerOptions"
|
||||||
|
>
|
||||||
|
</el-date-picker>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="定金可退:" prop="isRefundEarnestMoney">
|
||||||
|
<el-radio v-model="ruleForm.isRefundEarnestMoney" :label="1"
|
||||||
|
>是</el-radio
|
||||||
|
>
|
||||||
|
<el-radio v-model="ruleForm.isRefundEarnestMoney" :label="2"
|
||||||
|
>否</el-radio
|
||||||
|
>
|
||||||
|
<span>
|
||||||
|
选择是,用户可在付尾款前申请退定金(申请后自动退,无需审核),或付尾款时间结束后系统自动退定金
|
||||||
|
</span>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item v-if="isAdd" label="选择商品:">
|
||||||
|
<el-button type="primary" @click="selectProduct"
|
||||||
|
>点击请选择商品</el-button
|
||||||
|
>
|
||||||
|
<span> 备注:一次最多添加五个商品 </span>
|
||||||
|
</el-form-item>
|
||||||
|
|
||||||
|
<div style="padding: 0 0 0 20px; font-size: 16px; font-weight: 600">
|
||||||
|
已选择商品
|
||||||
|
</div>
|
||||||
|
<div v-if="isAdd" style="padding: 20px">
|
||||||
|
<div
|
||||||
|
v-for="item in ruleForm.productList"
|
||||||
|
:key="item.id"
|
||||||
|
style="border-top: 1px solid #ccc; padding: 10px 0 0 0"
|
||||||
|
>
|
||||||
|
<div style="font-size: 16px; margin-bottom: 20px">
|
||||||
|
<span>商品ID:{{ item.productId }}</span>
|
||||||
|
<span style="margin-left: 20px">商品名称:{{ item.name }}</span>
|
||||||
|
</div>
|
||||||
|
<el-table
|
||||||
|
border
|
||||||
|
ref="multipleTable"
|
||||||
|
:data="item.productSpecificationList"
|
||||||
|
tooltip-effect="dark"
|
||||||
|
style="width: 100%"
|
||||||
|
@selection-change="handleSelectionChange"
|
||||||
|
>
|
||||||
|
<el-table-column align="center" label="是否预售" width="80">
|
||||||
|
<template slot-scope="scope">
|
||||||
|
<el-checkbox
|
||||||
|
:true-label="1"
|
||||||
|
:false-label="0"
|
||||||
|
v-model="scope.row.isAdvanceSell"
|
||||||
|
></el-checkbox>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column align="center" label="SKU-ID" prop="id" />
|
||||||
|
<el-table-column
|
||||||
|
align="center"
|
||||||
|
label="规格"
|
||||||
|
prop="attributeList"
|
||||||
|
>
|
||||||
|
<template slot-scope="scope">
|
||||||
|
<span>{{ scope.row.attributeValue }}</span>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column align="center" label="属性" prop="address">
|
||||||
|
<template slot-scope="scope">
|
||||||
|
<span>{{
|
||||||
|
scope.row.attributeList
|
||||||
|
? scope.row.attributeList[0].attributeName
|
||||||
|
: "无"
|
||||||
|
}}</span>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column
|
||||||
|
align="center"
|
||||||
|
label="销售价"
|
||||||
|
prop="marketPrice"
|
||||||
|
width="120"
|
||||||
|
/>
|
||||||
|
<el-table-column align="center" label="*是否预售" width="200">
|
||||||
|
<template slot="header">
|
||||||
|
<span style="color: red">*预售价</span>
|
||||||
|
</template>
|
||||||
|
<template slot-scope="scope">
|
||||||
|
<el-input-number
|
||||||
|
v-if="scope.row.isAdvanceSell"
|
||||||
|
@change="
|
||||||
|
scope.row.balancePayment =
|
||||||
|
scope.row.presalePrice - scope.row.earnestMoney
|
||||||
|
"
|
||||||
|
v-model="scope.row.presalePrice"
|
||||||
|
:min="0"
|
||||||
|
:max="scope.row.marketPrice"
|
||||||
|
label="请输入销售价"
|
||||||
|
></el-input-number>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column align="center" label="*定金" width="200">
|
||||||
|
<template slot="header">
|
||||||
|
<span style="color: red">*定金</span>
|
||||||
|
</template>
|
||||||
|
<template slot-scope="scope">
|
||||||
|
<el-input-number
|
||||||
|
@change="
|
||||||
|
scope.row.balancePayment =
|
||||||
|
scope.row.presalePrice - scope.row.earnestMoney
|
||||||
|
"
|
||||||
|
v-if="scope.row.isAdvanceSell"
|
||||||
|
v-model="scope.row.earnestMoney"
|
||||||
|
:min="0"
|
||||||
|
:max="scope.row.presalePrice"
|
||||||
|
label="请输入订金"
|
||||||
|
></el-input-number>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column align="center" label="尾款" width="200">
|
||||||
|
<template slot-scope="scope">
|
||||||
|
<span v-if="scope.row.isAdvanceSell">{{
|
||||||
|
scope.row.presalePrice
|
||||||
|
? scope.row.presalePrice - scope.row.earnestMoney
|
||||||
|
: ""
|
||||||
|
}}</span>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column align="center" label="*预售库存" width="200">
|
||||||
|
<template slot="header">
|
||||||
|
<span style="color: red">*预售库存</span>
|
||||||
|
</template>
|
||||||
|
<template slot-scope="scope">
|
||||||
|
<el-input-number
|
||||||
|
v-if="scope.row.isAdvanceSell"
|
||||||
|
v-model="scope.row.advanceSellStockNum"
|
||||||
|
:min="0"
|
||||||
|
:max="999999"
|
||||||
|
:step="10"
|
||||||
|
:precision="0"
|
||||||
|
label="请输入预售库存"
|
||||||
|
></el-input-number>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
</el-table>
|
||||||
|
</div>
|
||||||
|
<el-empty
|
||||||
|
v-show="ruleForm.productList.length == 0"
|
||||||
|
description="请选择商品"
|
||||||
|
></el-empty>
|
||||||
|
</div>
|
||||||
|
<div v-else style="padding: 20px">
|
||||||
|
<div style="border-top: 1px solid #ccc; padding: 10px 0 0 0">
|
||||||
|
<div style="font-size: 16px; margin-bottom: 20px">
|
||||||
|
<span>商品ID:{{ ruleForm.productId }}</span>
|
||||||
|
<span style="margin-left: 20px"
|
||||||
|
>商品名称:{{ ruleForm.name }}</span
|
||||||
|
>
|
||||||
|
</div>
|
||||||
|
<el-table
|
||||||
|
border
|
||||||
|
ref="multipleTable"
|
||||||
|
:data="ruleForm.productSpecificationList"
|
||||||
|
tooltip-effect="dark"
|
||||||
|
style="width: 100%"
|
||||||
|
@selection-change="handleSelectionChange"
|
||||||
|
>
|
||||||
|
<el-table-column align="center" label="是否预售" width="80">
|
||||||
|
<template slot-scope="scope">
|
||||||
|
<el-checkbox
|
||||||
|
:true-label="1"
|
||||||
|
:false-label="0"
|
||||||
|
v-model="scope.row.isAdvanceSell"
|
||||||
|
></el-checkbox>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column align="center" label="SKU-ID" prop="id" />
|
||||||
|
<el-table-column
|
||||||
|
align="center"
|
||||||
|
label="规格"
|
||||||
|
prop="attributeList"
|
||||||
|
>
|
||||||
|
<template slot-scope="scope">
|
||||||
|
<span>{{ scope.row.attributeValue }}</span>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column align="center" label="属性" prop="address">
|
||||||
|
<template slot-scope="scope">
|
||||||
|
<span>{{
|
||||||
|
scope.row.attributeList
|
||||||
|
? scope.row.attributeList[0].attributeName
|
||||||
|
: "无"
|
||||||
|
}}</span>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column
|
||||||
|
align="center"
|
||||||
|
label="销售价"
|
||||||
|
prop="marketPrice"
|
||||||
|
width="120"
|
||||||
|
/>
|
||||||
|
<el-table-column align="center" label="*是否预售" width="200">
|
||||||
|
<template slot="header">
|
||||||
|
<span style="color: red">*预售价</span>
|
||||||
|
</template>
|
||||||
|
<template slot-scope="scope">
|
||||||
|
<el-input-number
|
||||||
|
v-if="scope.row.isAdvanceSell"
|
||||||
|
@change="
|
||||||
|
scope.row.balancePayment =
|
||||||
|
scope.row.presalePrice - scope.row.earnestMoney
|
||||||
|
"
|
||||||
|
v-model="scope.row.presalePrice"
|
||||||
|
:min="0"
|
||||||
|
:max="scope.row.marketPrice"
|
||||||
|
label="请输入销售价"
|
||||||
|
></el-input-number>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column align="center" label="*定金" width="200">
|
||||||
|
<template slot="header">
|
||||||
|
<span style="color: red">*定金</span>
|
||||||
|
</template>
|
||||||
|
<template slot-scope="scope">
|
||||||
|
<el-input-number
|
||||||
|
@change="
|
||||||
|
scope.row.balancePayment =
|
||||||
|
scope.row.presalePrice - scope.row.earnestMoney
|
||||||
|
"
|
||||||
|
v-if="scope.row.isAdvanceSell"
|
||||||
|
v-model="scope.row.earnestMoney"
|
||||||
|
:min="0"
|
||||||
|
:max="scope.row.presalePrice"
|
||||||
|
label="请输入订金"
|
||||||
|
></el-input-number>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column align="center" label="尾款" width="200">
|
||||||
|
<template slot-scope="scope">
|
||||||
|
<span v-if="scope.row.isAdvanceSell">{{
|
||||||
|
scope.row.presalePrice
|
||||||
|
? scope.row.presalePrice - scope.row.earnestMoney
|
||||||
|
: ""
|
||||||
|
}}</span>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column align="center" label="*预售库存" width="200">
|
||||||
|
<template slot="header">
|
||||||
|
<span style="color: red">*预售库存</span>
|
||||||
|
</template>
|
||||||
|
<template slot-scope="scope">
|
||||||
|
<el-input-number
|
||||||
|
v-if="scope.row.isAdvanceSell"
|
||||||
|
v-model="scope.row.advanceSellStockNum"
|
||||||
|
:min="0"
|
||||||
|
:max="999999"
|
||||||
|
:step="10"
|
||||||
|
:precision="0"
|
||||||
|
label="请输入预售库存"
|
||||||
|
></el-input-number>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
</el-table>
|
||||||
|
</div>
|
||||||
|
<el-empty
|
||||||
|
v-show="ruleForm.productList?.length == 0"
|
||||||
|
description="请选择商品"
|
||||||
|
></el-empty>
|
||||||
|
</div>
|
||||||
|
</el-form>
|
||||||
|
</div>
|
||||||
|
<!-- 选择商品 -->
|
||||||
|
</obj-modal>
|
||||||
|
<commodity @getProduct="getProduct" ref="commodity"></commodity>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
<script>
|
||||||
|
import commodity from "./commodity.vue";
|
||||||
|
import { debounce, cloneDeep } from "lodash";
|
||||||
|
export default {
|
||||||
|
components: { commodity },
|
||||||
|
props: {
|
||||||
|
marketId: {
|
||||||
|
type: String,
|
||||||
|
default: "",
|
||||||
|
},
|
||||||
|
shopId: {
|
||||||
|
type: String,
|
||||||
|
default: "",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
isAdd: true,
|
||||||
|
//表格属性
|
||||||
|
modalConfig: {
|
||||||
|
title: "库存预警设置",
|
||||||
|
show: false,
|
||||||
|
width: "1200px",
|
||||||
|
fullscreen: true,
|
||||||
|
},
|
||||||
|
modalData: {},
|
||||||
|
ruleForm: {
|
||||||
|
productList: [],
|
||||||
|
isRefundEarnestMoney: 1, //定金可退 1是 2否
|
||||||
|
},
|
||||||
|
pickerOptions: {
|
||||||
|
disabledDate(time) {
|
||||||
|
return time.getTime() < Date.now();
|
||||||
|
},
|
||||||
|
},
|
||||||
|
orderTime: [], //订单支付时间
|
||||||
|
arrears: [], //尾款时间
|
||||||
|
delivery: [], //发货时间
|
||||||
|
tableData: [],
|
||||||
|
rules: {
|
||||||
|
startTime: [
|
||||||
|
{
|
||||||
|
required: true,
|
||||||
|
message: "请选择支付时间",
|
||||||
|
trigger: ["blur", "change"],
|
||||||
|
},
|
||||||
|
],
|
||||||
|
balancePaymentStartTime: [
|
||||||
|
{
|
||||||
|
required: true,
|
||||||
|
message: "请选择尾款支付时间",
|
||||||
|
trigger: "change",
|
||||||
|
},
|
||||||
|
],
|
||||||
|
estimatedStartDeliveryTime: [
|
||||||
|
{
|
||||||
|
required: true,
|
||||||
|
message: "请选择预计发货时间",
|
||||||
|
trigger: "change",
|
||||||
|
},
|
||||||
|
],
|
||||||
|
isRefundEarnestMoney: [
|
||||||
|
{
|
||||||
|
required: true,
|
||||||
|
message: "请选择定金可退",
|
||||||
|
trigger: "change",
|
||||||
|
},
|
||||||
|
],
|
||||||
|
presalePrice: [
|
||||||
|
{
|
||||||
|
required: true,
|
||||||
|
message: "请输入预售价格",
|
||||||
|
trigger: ["blur", "change"],
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
};
|
||||||
|
},
|
||||||
|
watch: {
|
||||||
|
"modalConfig.show"(newVal) {
|
||||||
|
if (newVal) {
|
||||||
|
//关闭弹窗清空校验
|
||||||
|
setTimeout(() => {
|
||||||
|
this.$refs.ruleForm.resetFields();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
},
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
queryTableData(pageNo, pageSize) {},
|
||||||
|
toggle(e) {
|
||||||
|
if (this.modalConfig.show == false) {
|
||||||
|
this.modalConfig.show = true;
|
||||||
|
} else {
|
||||||
|
this.modalConfig.show = false;
|
||||||
|
}
|
||||||
|
if (e) {
|
||||||
|
this.init(cloneDeep(e));
|
||||||
|
}
|
||||||
|
return {
|
||||||
|
add: () => {
|
||||||
|
this.orderTime = [];
|
||||||
|
this.arrears = [];
|
||||||
|
this.delivery = [];
|
||||||
|
this.ruleForm = {
|
||||||
|
startTime: "",
|
||||||
|
endTime: "",
|
||||||
|
balancePaymentStartTime: "",
|
||||||
|
balancePaymentEndTime: "",
|
||||||
|
estimatedStartDeliveryTime: "",
|
||||||
|
estimatedEndDeliveryTime: "",
|
||||||
|
productList: [],
|
||||||
|
isRefundEarnestMoney: 1, //定金可退 1是 2否
|
||||||
|
};
|
||||||
|
this.modalConfig.title = "新增预售";
|
||||||
|
this.isAdd = true;
|
||||||
|
},
|
||||||
|
update: () => {
|
||||||
|
this.modalConfig.title = "编辑预售";
|
||||||
|
this.isAdd = false;
|
||||||
|
},
|
||||||
|
};
|
||||||
|
},
|
||||||
|
init(row) {
|
||||||
|
console.log(row.startTime, row.endTime);
|
||||||
|
this.orderTime = [row.startTime, row.endTime];
|
||||||
|
this.arrears = [row.balancePaymentStartTime, row.balancePaymentEndTime];
|
||||||
|
this.delivery = [
|
||||||
|
row.estimatedStartDeliveryTime,
|
||||||
|
row.estimatedEndDeliveryTime,
|
||||||
|
];
|
||||||
|
(this.ruleForm = {
|
||||||
|
productId: row.id,
|
||||||
|
advanceSellId: row.advanceSellId,
|
||||||
|
startTime: row.startTime,
|
||||||
|
name: row.name,
|
||||||
|
endTime: row.endTime,
|
||||||
|
balancePaymentStartTime: row.balancePaymentStartTime,
|
||||||
|
balancePaymentEndTime: row.balancePaymentEndTime,
|
||||||
|
estimatedStartDeliveryTime: row.estimatedStartDeliveryTime,
|
||||||
|
estimatedEndDeliveryTime: row.estimatedEndDeliveryTime,
|
||||||
|
isRefundEarnestMoney: row.isRefundEarnestMoney,
|
||||||
|
productSpecificationList: row.productSpecificationList,
|
||||||
|
}),
|
||||||
|
console.log(this.orderTime, this.arrears, this.delivery);
|
||||||
|
|
||||||
|
// this.ruleForm = row;
|
||||||
|
},
|
||||||
|
//订单支付时间
|
||||||
|
getOrderTime(e) {
|
||||||
|
if (e) {
|
||||||
|
console.log(e);
|
||||||
|
this.ruleForm.startTime = e[0];
|
||||||
|
this.ruleForm.endTime = e[1];
|
||||||
|
} else {
|
||||||
|
this.ruleForm.startTime = "";
|
||||||
|
this.ruleForm.endTime = "";
|
||||||
|
}
|
||||||
|
},
|
||||||
|
//尾款支付时间
|
||||||
|
getArrearsTime(e) {
|
||||||
|
if (e) {
|
||||||
|
console.log(e);
|
||||||
|
this.ruleForm.balancePaymentStartTime = e[0];
|
||||||
|
this.ruleForm.balancePaymentEndTime = e[1];
|
||||||
|
} else {
|
||||||
|
this.ruleForm.balancePaymentStartTime = "";
|
||||||
|
this.ruleForm.balancePaymentEndTime = "";
|
||||||
|
}
|
||||||
|
},
|
||||||
|
//发货时间
|
||||||
|
deliveryTime(e) {
|
||||||
|
if (e) {
|
||||||
|
console.log(e);
|
||||||
|
this.ruleForm.estimatedStartDeliveryTime = e[0];
|
||||||
|
this.ruleForm.estimatedEndDeliveryTime = e[1];
|
||||||
|
} else {
|
||||||
|
this.ruleForm.estimatedStartDeliveryTime = "";
|
||||||
|
this.ruleForm.estimatedEndDeliveryTime = "";
|
||||||
|
}
|
||||||
|
},
|
||||||
|
selectProduct() {
|
||||||
|
console.log("选择商品", this.marketId, this.shopId);
|
||||||
|
this.$nextTick(() => {
|
||||||
|
this.$refs.commodity.toggle().add({
|
||||||
|
marketId: this.marketId,
|
||||||
|
shopId: this.shopId,
|
||||||
|
});
|
||||||
|
});
|
||||||
|
},
|
||||||
|
handleSelectionChange(e) {
|
||||||
|
console.log(e);
|
||||||
|
},
|
||||||
|
getProduct(row) {
|
||||||
|
this.ruleForm.productList = row.map((item) => {
|
||||||
|
return {
|
||||||
|
productId: item.id,
|
||||||
|
name: item.name,
|
||||||
|
productSpecificationList: item.productSpecificationList,
|
||||||
|
};
|
||||||
|
});
|
||||||
|
console.log(this.ruleForm.productList, this.ruleForm.productList.length);
|
||||||
|
|
||||||
|
console.log("获取商品");
|
||||||
|
},
|
||||||
|
},
|
||||||
|
computed: {
|
||||||
|
modalHandles() {
|
||||||
|
return [
|
||||||
|
{
|
||||||
|
label: "取消",
|
||||||
|
handle: () => {
|
||||||
|
this.toggle();
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: "确认",
|
||||||
|
type: "primary",
|
||||||
|
// submit: true,
|
||||||
|
handle: () => {
|
||||||
|
if (this.isAdd) {
|
||||||
|
this.$refs.ruleForm.validate((valid) => {
|
||||||
|
if (valid) {
|
||||||
|
console.log(valid);
|
||||||
|
this.$api.preSale
|
||||||
|
.addPreSaleProducts(this.ruleForm)
|
||||||
|
.then((res) => {
|
||||||
|
this.$emit("queryList");
|
||||||
|
this.toggle();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
this.$refs.ruleForm.validate((valid) => {
|
||||||
|
if (valid) {
|
||||||
|
console.log(valid);
|
||||||
|
this.$api.preSale
|
||||||
|
.updatePreSaleProducts(this.ruleForm)
|
||||||
|
.then((res) => {
|
||||||
|
this.$emit("queryList");
|
||||||
|
this.toggle();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
},
|
||||||
|
},
|
||||||
|
];
|
||||||
|
},
|
||||||
|
},
|
||||||
|
asyncComputed: {},
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
</style>
|
|
@ -0,0 +1,230 @@
|
||||||
|
<template>
|
||||||
|
<obj-modal
|
||||||
|
ref="modal"
|
||||||
|
labelWidth="150px"
|
||||||
|
:modalConfig="modalConfig"
|
||||||
|
:modalData="modalData"
|
||||||
|
:modalHandles="modalHandles"
|
||||||
|
>
|
||||||
|
<template slot="dialog__content">
|
||||||
|
<el-form :inline="true" :model="formInline" class="demo-form-inline">
|
||||||
|
<el-form-item label="商品搜索">
|
||||||
|
<el-input v-model="formList.name" placeholder="商品搜索"></el-input>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item>
|
||||||
|
<el-button type="primary" @click="queryList">查询</el-button>
|
||||||
|
<el-button type="primary" @click="Reset">重置</el-button>
|
||||||
|
</el-form-item>
|
||||||
|
</el-form>
|
||||||
|
<el-table
|
||||||
|
border
|
||||||
|
ref="multipleTable"
|
||||||
|
:data="dataList"
|
||||||
|
tooltip-effect="dark"
|
||||||
|
style="width: 100%"
|
||||||
|
@select="select"
|
||||||
|
@select-all="selectAll"
|
||||||
|
>
|
||||||
|
<el-table-column type="selection" width="55"> </el-table-column>
|
||||||
|
<el-table-column label="商品图" width="100">
|
||||||
|
<template slot-scope="scope">
|
||||||
|
<el-image
|
||||||
|
:preview-src-list="[scope.row.productPhotoList[0].url]"
|
||||||
|
:src="scope.row.productPhotoList[0].url"
|
||||||
|
></el-image
|
||||||
|
></template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column prop="name" label="商品名称" />
|
||||||
|
<el-table-column prop="name" label="商品售价">
|
||||||
|
<template slot-scope="scope">
|
||||||
|
<span>¥{{ getSalePrice(scope.row) }}</span>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column prop="address" label="折扣">
|
||||||
|
<template slot-scope="scope">
|
||||||
|
<span>{{ scope.row.discountActivity?.ruleObject.discount }}</span>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column prop="saleNum" label="销量" />
|
||||||
|
<el-table-column prop="stockNum" label="库存" />
|
||||||
|
</el-table>
|
||||||
|
<div class="pagination-container">
|
||||||
|
<el-pagination
|
||||||
|
:current-page="query.pageNumber"
|
||||||
|
:page-sizes="[10, 20, 30, 50]"
|
||||||
|
:page-size="query.pageSize"
|
||||||
|
:total="total"
|
||||||
|
background
|
||||||
|
layout="total, sizes, prev, pager, next, jumper"
|
||||||
|
@size-change="handleSizeChange"
|
||||||
|
@current-change="handleCurrentChange"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
</obj-modal>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import { debounce, cloneDeep } from "lodash";
|
||||||
|
export default {
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
isAdd: true,
|
||||||
|
//表格属性
|
||||||
|
modalConfig: {
|
||||||
|
title: "请点击选择商品 (提示:最多选择5个商品)",
|
||||||
|
show: false,
|
||||||
|
width: "1000px",
|
||||||
|
},
|
||||||
|
query: {
|
||||||
|
pageNumber: 1,
|
||||||
|
pageSize: 10,
|
||||||
|
},
|
||||||
|
total: 0,
|
||||||
|
modalData: {},
|
||||||
|
dataList: [], //表格数据
|
||||||
|
selectList: [],
|
||||||
|
formInline: {},
|
||||||
|
formList: {
|
||||||
|
name: "",
|
||||||
|
},
|
||||||
|
};
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
queryList() {
|
||||||
|
this.$api.mer_admin
|
||||||
|
.getProductPage({
|
||||||
|
p: {
|
||||||
|
pageNumber: this.query.pageNumber,
|
||||||
|
pageSize: this.query.pageSize,
|
||||||
|
},
|
||||||
|
...this.formInline,
|
||||||
|
...this.formList,
|
||||||
|
productFilterType: "SALE",
|
||||||
|
merchantId: JSON.parse(sessionStorage.getItem("userInfo")).merchantId,
|
||||||
|
productQuerySortParam: [],
|
||||||
|
})
|
||||||
|
.then((res) => {
|
||||||
|
console.log(res);
|
||||||
|
this.dataList = res.data.data.data;
|
||||||
|
this.total = Number(res.data.data.total);
|
||||||
|
})
|
||||||
|
.catch((err) => {
|
||||||
|
this.dataList = [];
|
||||||
|
});
|
||||||
|
},
|
||||||
|
toggle(e) {
|
||||||
|
if (this.modalConfig.show == false) {
|
||||||
|
this.modalConfig.show = true;
|
||||||
|
} else {
|
||||||
|
this.modalConfig.show = false;
|
||||||
|
}
|
||||||
|
if (e) {
|
||||||
|
this.init(cloneDeep(e));
|
||||||
|
}
|
||||||
|
return {
|
||||||
|
add: (row) => {
|
||||||
|
console.log(row);
|
||||||
|
this.formInline = row;
|
||||||
|
this.isAdd = true;
|
||||||
|
this.$nextTick(() => {
|
||||||
|
this.queryList();
|
||||||
|
});
|
||||||
|
},
|
||||||
|
update: () => {
|
||||||
|
this.isAdd = false;
|
||||||
|
},
|
||||||
|
};
|
||||||
|
},
|
||||||
|
init(row) {},
|
||||||
|
toggleSelection(rows) {
|
||||||
|
if (rows) {
|
||||||
|
rows.forEach((row) => {
|
||||||
|
this.$refs.multipleTable.toggleRowSelection(row);
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
this.$refs.multipleTable.clearSelection();
|
||||||
|
}
|
||||||
|
},
|
||||||
|
select(selection, row) {
|
||||||
|
if (selection.length > 5) {
|
||||||
|
this.$message.error("最多选择5个商品");
|
||||||
|
this.$refs.multipleTable.toggleRowSelection(row, false);
|
||||||
|
} else {
|
||||||
|
this.selectList = selection;
|
||||||
|
}
|
||||||
|
},
|
||||||
|
selectAll(selection) {
|
||||||
|
if (selection.length > 5) {
|
||||||
|
this.$message.error("最多选择5个商品");
|
||||||
|
selection.length = 5;
|
||||||
|
this.selectList = selection;
|
||||||
|
console.log(selection);
|
||||||
|
} else {
|
||||||
|
this.selectList = selection;
|
||||||
|
}
|
||||||
|
},
|
||||||
|
getSalePrice(row) {
|
||||||
|
if (row.minSalePrice == row.maxSalePrice) {
|
||||||
|
return row.minSalePrice;
|
||||||
|
} else {
|
||||||
|
return `${row.minSalePrice}~${row.maxSalePrice}`;
|
||||||
|
}
|
||||||
|
},
|
||||||
|
handleSizeChange(val) {
|
||||||
|
this.query.pageSize = val;
|
||||||
|
this.getList();
|
||||||
|
},
|
||||||
|
handleCurrentChange(val) {
|
||||||
|
this.query.pageNumber = val;
|
||||||
|
this.getList();
|
||||||
|
},
|
||||||
|
Reset() {
|
||||||
|
this.formList = {};
|
||||||
|
this.queryList();
|
||||||
|
},
|
||||||
|
},
|
||||||
|
computed: {
|
||||||
|
modalHandles() {
|
||||||
|
return [
|
||||||
|
{
|
||||||
|
label: "取消",
|
||||||
|
handle: () => {
|
||||||
|
this.toggle();
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: "确认",
|
||||||
|
type: "primary",
|
||||||
|
handle: () => {
|
||||||
|
this.$emit("getProduct", this.selectList);
|
||||||
|
this.toggle();
|
||||||
|
},
|
||||||
|
},
|
||||||
|
];
|
||||||
|
},
|
||||||
|
tableEvent() {
|
||||||
|
return {
|
||||||
|
"checkbox-all": ({ records, reserves }) => {
|
||||||
|
console.log(records, reserves);
|
||||||
|
this.selectList = [...records, ...reserves];
|
||||||
|
},
|
||||||
|
"checkbox-change": ({ records, reserves }) => {
|
||||||
|
console.log(records, reserves);
|
||||||
|
if (records.length > 5) {
|
||||||
|
this.$message.error("最多选择5个商品");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
this.selectList = [...records, ...reserves];
|
||||||
|
},
|
||||||
|
};
|
||||||
|
},
|
||||||
|
},
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
::v-deep .selectAllbtnDis .cell .el-checkbox__inner {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
</style>
|
|
@ -0,0 +1,123 @@
|
||||||
|
<template>
|
||||||
|
<div>
|
||||||
|
<obj-modal
|
||||||
|
ref="modal"
|
||||||
|
labelWidth="150px"
|
||||||
|
:modalConfig="modalConfig"
|
||||||
|
:modalData="modalData"
|
||||||
|
:modalHandles="modalHandles"
|
||||||
|
>
|
||||||
|
<div slot="dialog__content">
|
||||||
|
<el-form
|
||||||
|
:model="ruleForm"
|
||||||
|
:rules="rules"
|
||||||
|
ref="ruleForm"
|
||||||
|
label-width="150px"
|
||||||
|
class="demo-ruleForm"
|
||||||
|
>
|
||||||
|
<el-form-item label="预售剩余库存:" prop="name">
|
||||||
|
<span style="font-size: 20px; margin-right: 20px">≤</span>
|
||||||
|
<el-input-number
|
||||||
|
v-model="ruleForm.name"
|
||||||
|
:min="1"
|
||||||
|
:max="9999"
|
||||||
|
:precision="0"
|
||||||
|
:step="1"
|
||||||
|
label="请输入数量"
|
||||||
|
></el-input-number>
|
||||||
|
<span style="font-size: 20px; margin-left: 14px">时通知我</span>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="通知方式:" prop="value">
|
||||||
|
<el-radio v-model="ruleForm.value" label="1">系统通知</el-radio>
|
||||||
|
<el-radio v-model="ruleForm.value" label="2">短信通知</el-radio>
|
||||||
|
</el-form-item>
|
||||||
|
</el-form>
|
||||||
|
</div>
|
||||||
|
</obj-modal>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
<script>
|
||||||
|
import { debounce, cloneDeep } from "lodash";
|
||||||
|
export default {
|
||||||
|
components: {},
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
isAdd: true,
|
||||||
|
//表格属性
|
||||||
|
modalConfig: {
|
||||||
|
title: "库存预警设置",
|
||||||
|
show: false,
|
||||||
|
width: "800px",
|
||||||
|
},
|
||||||
|
modalData: {},
|
||||||
|
ruleForm: {
|
||||||
|
name: "",
|
||||||
|
value: "1",
|
||||||
|
},
|
||||||
|
rules: {
|
||||||
|
name: [{ required: true, message: "请输入属性名称", trigger: "blur" }],
|
||||||
|
value: [
|
||||||
|
{
|
||||||
|
required: true,
|
||||||
|
message: "请输入属性内容",
|
||||||
|
trigger: "blur",
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
};
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
queryTableData(pageNo, pageSize) {},
|
||||||
|
toggle(e) {
|
||||||
|
if (this.modalConfig.show == false) {
|
||||||
|
this.modalConfig.show = true;
|
||||||
|
} else {
|
||||||
|
this.modalConfig.show = false;
|
||||||
|
}
|
||||||
|
if (e) {
|
||||||
|
this.init(cloneDeep(e.row));
|
||||||
|
}
|
||||||
|
return {
|
||||||
|
add: (data) => {
|
||||||
|
this.modalConfig.title = "库存预警设置";
|
||||||
|
this.isAdd = true;
|
||||||
|
},
|
||||||
|
update: () => {
|
||||||
|
this.isAdd = false;
|
||||||
|
},
|
||||||
|
};
|
||||||
|
},
|
||||||
|
init(row) {
|
||||||
|
this.modalData = row;
|
||||||
|
},
|
||||||
|
},
|
||||||
|
computed: {
|
||||||
|
modalHandles() {
|
||||||
|
return [
|
||||||
|
{
|
||||||
|
label: "取消",
|
||||||
|
handle: () => {
|
||||||
|
this.toggle();
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: "确认",
|
||||||
|
type: "primary",
|
||||||
|
// submit: true,
|
||||||
|
handle: () => {
|
||||||
|
this.$refs.ruleForm.validate((valid) => {
|
||||||
|
if (valid) {
|
||||||
|
this.$emit("getAttribute", this.ruleForm);
|
||||||
|
this.toggle();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
},
|
||||||
|
},
|
||||||
|
];
|
||||||
|
},
|
||||||
|
},
|
||||||
|
asyncComputed: {},
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
</style>
|
|
@ -1,6 +1,6 @@
|
||||||
<template>
|
<template>
|
||||||
<div>
|
<div>
|
||||||
<div v-if="shopId" style="height: calc(100vh - 200px)">
|
<div v-if="isMerchant" style="height: calc(100vh - 200px)">
|
||||||
<obj-table-plus
|
<obj-table-plus
|
||||||
ref="oTable"
|
ref="oTable"
|
||||||
style="height: 100%"
|
style="height: 100%"
|
||||||
|
@ -9,6 +9,7 @@
|
||||||
@query="queryList"
|
@query="queryList"
|
||||||
v-model="dataList"
|
v-model="dataList"
|
||||||
:tableEvent="tableEvent"
|
:tableEvent="tableEvent"
|
||||||
|
:enableAutoQuery="false"
|
||||||
>
|
>
|
||||||
<template slot="tableTop">
|
<template slot="tableTop">
|
||||||
<el-form :inline="true" :model="formInline" class="demo-form-inline">
|
<el-form :inline="true" :model="formInline" class="demo-form-inline">
|
||||||
|
@ -30,8 +31,12 @@
|
||||||
placeholder="商品搜索"
|
placeholder="商品搜索"
|
||||||
></el-input>
|
></el-input>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item v-if="marketList.length > 0" label="摊铺">
|
<el-form-item v-if="marketList.length > 0" label="菜市场">
|
||||||
<el-select v-model="formInline.marketId" placeholder="请选择摊铺">
|
<el-select
|
||||||
|
@change="getData"
|
||||||
|
v-model="formInline.marketId"
|
||||||
|
placeholder="请选择菜市场"
|
||||||
|
>
|
||||||
<el-option
|
<el-option
|
||||||
v-for="item in marketList"
|
v-for="item in marketList"
|
||||||
:key="item.marketId"
|
:key="item.marketId"
|
||||||
|
@ -40,6 +45,16 @@
|
||||||
></el-option>
|
></el-option>
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
<el-form-item v-if="marketList.length > 0" label="店铺">
|
||||||
|
<el-select v-model="formInline.shopId" placeholder="请选择店铺">
|
||||||
|
<el-option
|
||||||
|
v-for="item in storeList"
|
||||||
|
:key="item.shopId"
|
||||||
|
:label="item.shopName"
|
||||||
|
:value="item.shopId"
|
||||||
|
></el-option>
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
<el-form-item>
|
<el-form-item>
|
||||||
<el-button type="primary" @click="$refs.oTable.reload()"
|
<el-button type="primary" @click="$refs.oTable.reload()"
|
||||||
>查询</el-button
|
>查询</el-button
|
||||||
|
@ -88,6 +103,7 @@
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
|
import { mapState } from "vuex";
|
||||||
import AddDiscount from "./popup/add-discount.vue";
|
import AddDiscount from "./popup/add-discount.vue";
|
||||||
import AddPrice from "./popup/add-price.vue";
|
import AddPrice from "./popup/add-price.vue";
|
||||||
import AddOrUpdate from "./popup/add-or-update.vue";
|
import AddOrUpdate from "./popup/add-or-update.vue";
|
||||||
|
@ -101,8 +117,8 @@ export default {
|
||||||
formInline: {
|
formInline: {
|
||||||
name: "",
|
name: "",
|
||||||
marketId: "",
|
marketId: "",
|
||||||
|
shopId: "",
|
||||||
},
|
},
|
||||||
marketList: [],
|
|
||||||
tableProp: {
|
tableProp: {
|
||||||
"auto-resize": true,
|
"auto-resize": true,
|
||||||
border: true,
|
border: true,
|
||||||
|
@ -112,26 +128,32 @@ export default {
|
||||||
},
|
},
|
||||||
productFilterType: "SALE",
|
productFilterType: "SALE",
|
||||||
selectList: [],
|
selectList: [],
|
||||||
shopId: "",
|
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
created() {
|
created() {
|
||||||
if (JSON.parse(sessionStorage.getItem("userInfo")).markets.length > 0) {
|
this.formInline = {
|
||||||
this.shopId = true;
|
name: "",
|
||||||
this.formInline.marketId = JSON.parse(
|
marketId: this.marketId,
|
||||||
sessionStorage.getItem("userInfo")
|
shopId: this.shopId,
|
||||||
).markets[0].marketId;
|
};
|
||||||
this.marketList = JSON.parse(sessionStorage.getItem("userInfo")).markets;
|
this.$nextTick(() => {
|
||||||
console.log(this.marketList);
|
this.$refs.oTable.reload();
|
||||||
} else if (JSON.parse(sessionStorage.getItem("userInfo")).shopId) {
|
});
|
||||||
this.shopId = true;
|
|
||||||
} else {
|
|
||||||
this.shopId = false;
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
|
//如果有多个菜市场调用
|
||||||
|
getData() {
|
||||||
|
this.$api.mer_admin
|
||||||
|
.storeList({ marketId: this.formInline.marketId })
|
||||||
|
.then((res) => {
|
||||||
|
this.formInline.shopId = res.data.data[0].shopId;
|
||||||
|
this.$nextTick(() => {
|
||||||
|
this.$refs.oTable.reload();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
},
|
||||||
addProduct() {
|
addProduct() {
|
||||||
this.$refs.addOrUpdate.toggle().add();
|
this.$refs.addOrUpdate.toggle().add(this.formInline.shopId);
|
||||||
},
|
},
|
||||||
deleteProduct() {
|
deleteProduct() {
|
||||||
console.log(this.selectList);
|
console.log(this.selectList);
|
||||||
|
@ -157,6 +179,8 @@ export default {
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
queryList(pageNo, pageSize) {
|
queryList(pageNo, pageSize) {
|
||||||
|
console.log(this.formInline);
|
||||||
|
|
||||||
this.$api.mer_admin
|
this.$api.mer_admin
|
||||||
.getProductPage({
|
.getProductPage({
|
||||||
p: {
|
p: {
|
||||||
|
@ -166,7 +190,6 @@ export default {
|
||||||
...this.formInline,
|
...this.formInline,
|
||||||
productFilterType: this.productFilterType,
|
productFilterType: this.productFilterType,
|
||||||
merchantId: JSON.parse(sessionStorage.getItem("userInfo")).merchantId,
|
merchantId: JSON.parse(sessionStorage.getItem("userInfo")).merchantId,
|
||||||
shopId: JSON.parse(sessionStorage.getItem("userInfo")).shopId,
|
|
||||||
productQuerySortParam: [],
|
productQuerySortParam: [],
|
||||||
})
|
})
|
||||||
.then((res) => {
|
.then((res) => {
|
||||||
|
@ -183,8 +206,8 @@ export default {
|
||||||
Reset() {
|
Reset() {
|
||||||
this.formInline = {
|
this.formInline = {
|
||||||
name: "",
|
name: "",
|
||||||
marketId: JSON.parse(sessionStorage.getItem("userInfo")).markets[0]
|
marketId: this.marketId,
|
||||||
.marketId,
|
shopId: this.shopId,
|
||||||
};
|
};
|
||||||
this.$refs.oTable.reload();
|
this.$refs.oTable.reload();
|
||||||
},
|
},
|
||||||
|
@ -393,6 +416,13 @@ export default {
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
|
...mapState("userData", [
|
||||||
|
"isMerchant",
|
||||||
|
"marketList",
|
||||||
|
"storeList",
|
||||||
|
"marketId",
|
||||||
|
"shopId",
|
||||||
|
]),
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
</script>
|
</script>
|
||||||
|
|
|
@ -150,6 +150,9 @@ export default {
|
||||||
fileListTwo: [], //视频
|
fileListTwo: [], //视频
|
||||||
place: "", //场地
|
place: "", //场地
|
||||||
passCheck: [], //通行证
|
passCheck: [], //通行证
|
||||||
|
shopId: "",
|
||||||
|
getProductCategory: [],
|
||||||
|
getSaleUnit: [],
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
mounted() {},
|
mounted() {},
|
||||||
|
@ -174,7 +177,10 @@ export default {
|
||||||
this.init(cloneDeep(e));
|
this.init(cloneDeep(e));
|
||||||
}
|
}
|
||||||
return {
|
return {
|
||||||
add: () => {
|
add: (shopId) => {
|
||||||
|
this.shopId = shopId;
|
||||||
|
this.getData();
|
||||||
|
console.log(this.shopId);
|
||||||
this.$nextTick(() => {
|
this.$nextTick(() => {
|
||||||
this.modalConfig.title = "添加商品";
|
this.modalConfig.title = "添加商品";
|
||||||
this.modalData = {
|
this.modalData = {
|
||||||
|
@ -192,17 +198,15 @@ export default {
|
||||||
productVideo: "",
|
productVideo: "",
|
||||||
shelfLife: "",
|
shelfLife: "",
|
||||||
shopId: "",
|
shopId: "",
|
||||||
singlePrice: "",
|
|
||||||
singleStock: "",
|
singleStock: "",
|
||||||
specType: 0,
|
specType: 0,
|
||||||
|
minCostPrice: "",
|
||||||
status: "UP",
|
status: "UP",
|
||||||
};
|
};
|
||||||
this.modalData.merchantId = JSON.parse(
|
this.modalData.merchantId = JSON.parse(
|
||||||
sessionStorage.getItem("userInfo")
|
sessionStorage.getItem("userInfo")
|
||||||
).merchantId;
|
).merchantId;
|
||||||
this.modalData.shopId = JSON.parse(
|
this.modalData.shopId = shopId;
|
||||||
sessionStorage.getItem("userInfo")
|
|
||||||
).shopId;
|
|
||||||
this.passCheck = [];
|
this.passCheck = [];
|
||||||
this.place = [];
|
this.place = [];
|
||||||
});
|
});
|
||||||
|
@ -218,6 +222,8 @@ export default {
|
||||||
},
|
},
|
||||||
init(row) {
|
init(row) {
|
||||||
console.log(row);
|
console.log(row);
|
||||||
|
this.shopId = row.shopId;
|
||||||
|
this.getData();
|
||||||
this.fileList = row.productPhotoList.map((item) => {
|
this.fileList = row.productPhotoList.map((item) => {
|
||||||
return {
|
return {
|
||||||
name: "",
|
name: "",
|
||||||
|
@ -246,14 +252,22 @@ export default {
|
||||||
}
|
}
|
||||||
this.place = row.productPlace.split("-");
|
this.place = row.productPlace.split("-");
|
||||||
this.modalData = row;
|
this.modalData = row;
|
||||||
this.$set(this.modalData, "singleStock", row.stockNum);
|
if (row.minCostPrice == row.maxCostPrice) {
|
||||||
if (row.minSalePrice == row.maxSalePrice) {
|
this.$set(this.modalData, "costPrice", row.minCostPrice);
|
||||||
this.$set(this.modalData, "singlePrice", row.maxSalePrice);
|
|
||||||
} else {
|
} else {
|
||||||
this.$set(
|
this.$set(
|
||||||
this.modalData,
|
this.modalData,
|
||||||
"singlePrice",
|
"costPrice",
|
||||||
row.minSalePrice + "~" + row.maxSalePrice
|
row.minCostPrice + "~" + row.maxCostPrice
|
||||||
|
);
|
||||||
|
}
|
||||||
|
if (row.minMarketPrice == row.maxMarketPrice) {
|
||||||
|
this.$set(this.modalData, "marketPrice", row.minMarketPrice);
|
||||||
|
} else {
|
||||||
|
this.$set(
|
||||||
|
this.modalData,
|
||||||
|
"marketPrice",
|
||||||
|
row.minMarketPrice + "~" + row.maxMarketPrice
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
if (!row.productAttributeList) {
|
if (!row.productAttributeList) {
|
||||||
|
@ -264,6 +278,8 @@ export default {
|
||||||
} else {
|
} else {
|
||||||
this.modalData.otherAttribute = [];
|
this.modalData.otherAttribute = [];
|
||||||
}
|
}
|
||||||
|
console.log(this.modalData);
|
||||||
|
|
||||||
},
|
},
|
||||||
addSpecs() {
|
addSpecs() {
|
||||||
console.log("123");
|
console.log("123");
|
||||||
|
@ -288,9 +304,8 @@ export default {
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
//获取属性
|
//获取属性
|
||||||
getSpecs(tableData, AttributeData, salePrice, stockNum) {
|
getSpecs(tableData, AttributeData) {
|
||||||
console.log(tableData);
|
console.log(tableData);
|
||||||
|
|
||||||
this.modalData.specType = 1;
|
this.modalData.specType = 1;
|
||||||
let AttributeList = AttributeData.map((item) => {
|
let AttributeList = AttributeData.map((item) => {
|
||||||
return {
|
return {
|
||||||
|
@ -300,8 +315,6 @@ export default {
|
||||||
});
|
});
|
||||||
this.$set(this.modalData, "productSpecificationList", tableData);
|
this.$set(this.modalData, "productSpecificationList", tableData);
|
||||||
this.$set(this.modalData, "productAttributeList", AttributeList);
|
this.$set(this.modalData, "productAttributeList", AttributeList);
|
||||||
this.$set(this.modalData, "singlePrice", salePrice);
|
|
||||||
this.$set(this.modalData, "singleStock", stockNum);
|
|
||||||
},
|
},
|
||||||
addAttribute() {
|
addAttribute() {
|
||||||
if (this.isAdd) {
|
if (this.isAdd) {
|
||||||
|
@ -335,6 +348,18 @@ export default {
|
||||||
});
|
});
|
||||||
return state;
|
return state;
|
||||||
},
|
},
|
||||||
|
getData() {
|
||||||
|
this.$api.mer_admin
|
||||||
|
.getProductCategory({ shopId: this.shopId })
|
||||||
|
.then((res) => {
|
||||||
|
this.getProductCategory = res.data.data;
|
||||||
|
console.log(res);
|
||||||
|
});
|
||||||
|
this.$api.mer_admin.getSaleUnit({ shopId: this.shopId }).then((res) => {
|
||||||
|
this.getSaleUnit = res.data.data;
|
||||||
|
console.log(res);
|
||||||
|
});
|
||||||
|
},
|
||||||
},
|
},
|
||||||
computed: {
|
computed: {
|
||||||
modalCols() {
|
modalCols() {
|
||||||
|
@ -530,12 +555,6 @@ export default {
|
||||||
{
|
{
|
||||||
label: "规格",
|
label: "规格",
|
||||||
prop: "productSpecificationList",
|
prop: "productSpecificationList",
|
||||||
// required: true,
|
|
||||||
// rules: {
|
|
||||||
// required: true,
|
|
||||||
// message: "请选择销售单位",
|
|
||||||
// trigger: "blur",
|
|
||||||
// },
|
|
||||||
type: "jsx",
|
type: "jsx",
|
||||||
render: () => {
|
render: () => {
|
||||||
return (
|
return (
|
||||||
|
@ -547,14 +566,14 @@ export default {
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
label: "成本",
|
label: "成本",
|
||||||
prop: "minCostPrice",
|
prop: "costPrice",
|
||||||
type: "jsx",
|
type: "jsx",
|
||||||
render: () => {
|
render: () => {
|
||||||
return (
|
return (
|
||||||
<el-input
|
<el-input
|
||||||
readonly={this.modalData.specType != 0}
|
readonly={this.modalData.specType != 0}
|
||||||
placeholder="请输入价格"
|
placeholder="请输入价格"
|
||||||
v-model={this.modalData.minCostPrice}
|
v-model={this.modalData.costPrice}
|
||||||
>
|
>
|
||||||
<template slot="append">单位(元)</template>
|
<template slot="append">单位(元)</template>
|
||||||
</el-input>
|
</el-input>
|
||||||
|
@ -562,15 +581,15 @@ export default {
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
label: "价格",
|
label: "市场价",
|
||||||
prop: "singlePrice",
|
prop: "marketPrice",
|
||||||
type: "jsx",
|
type: "jsx",
|
||||||
render: () => {
|
render: () => {
|
||||||
return (
|
return (
|
||||||
<el-input
|
<el-input
|
||||||
readonly={this.modalData.specType != 0}
|
readonly={this.modalData.specType != 0}
|
||||||
placeholder="请输入价格"
|
placeholder="请输入市场价"
|
||||||
v-model={this.modalData.singlePrice}
|
v-model={this.modalData.marketPrice}
|
||||||
>
|
>
|
||||||
<template slot="append">单位(元)</template>
|
<template slot="append">单位(元)</template>
|
||||||
</el-input>
|
</el-input>
|
||||||
|
@ -579,14 +598,14 @@ export default {
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
label: "库存",
|
label: "库存",
|
||||||
prop: "singleStock",
|
prop: "stockNum",
|
||||||
type: "jsx",
|
type: "jsx",
|
||||||
render: () => {
|
render: () => {
|
||||||
return (
|
return (
|
||||||
<el-input
|
<el-input
|
||||||
readonly={this.modalData.specType != 0}
|
readonly={this.modalData.specType != 0}
|
||||||
placeholder="请输入库存"
|
placeholder="请输入库存"
|
||||||
v-model={this.modalData.singleStock}
|
v-model={this.modalData.stockNum}
|
||||||
></el-input>
|
></el-input>
|
||||||
);
|
);
|
||||||
},
|
},
|
||||||
|
@ -818,9 +837,9 @@ export default {
|
||||||
this.modalData.productSpecificationList = [
|
this.modalData.productSpecificationList = [
|
||||||
{
|
{
|
||||||
attributeValue: "默认",
|
attributeValue: "默认",
|
||||||
costPrice: this.modalData.minCostPrice,
|
costPrice: this.modalData.costPrice,
|
||||||
salePrice: this.modalData.singlePrice,
|
marketPrice: this.modalData.marketPrice,
|
||||||
stockNum: this.modalData.singleStock,
|
stockNum: this.modalData.stockNum,
|
||||||
weight: this.modalData.weight,
|
weight: this.modalData.weight,
|
||||||
volume: this.modalData.volume,
|
volume: this.modalData.volume,
|
||||||
},
|
},
|
||||||
|
@ -852,9 +871,9 @@ export default {
|
||||||
this.modalData.productSpecificationList = [
|
this.modalData.productSpecificationList = [
|
||||||
{
|
{
|
||||||
attributeValue: "默认",
|
attributeValue: "默认",
|
||||||
costPrice: this.modalData.minCostPrice,
|
costPrice: this.modalData.costPrice,
|
||||||
salePrice: this.modalData.singlePrice,
|
marketPrice: this.modalData.marketPrice,
|
||||||
stockNum: this.modalData.singleStock,
|
stockNum: this.modalData.stockNum,
|
||||||
weight: this.modalData.weight,
|
weight: this.modalData.weight,
|
||||||
volume: this.modalData.volume,
|
volume: this.modalData.volume,
|
||||||
},
|
},
|
||||||
|
@ -872,18 +891,17 @@ export default {
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
asyncComputed: {
|
asyncComputed: {
|
||||||
async getProductCategory() {
|
// async getProductCategory() {
|
||||||
let res = await this.$api.mer_admin.getProductCategory();
|
// let res = await this.$api.mer_admin.getProductCategory();
|
||||||
return res.data.data;
|
// return res.data.data;
|
||||||
},
|
// },
|
||||||
async getSaleUnit() {
|
// async getSaleUnit() {
|
||||||
let res = await this.$api.mer_admin.getSaleUnit({
|
// let res = await this.$api.mer_admin.getSaleUnit({
|
||||||
shopId: JSON.parse(sessionStorage.getItem("userInfo")).shopId,
|
// shopId: JSON.parse(sessionStorage.getItem("userInfo")).shopId,
|
||||||
});
|
// });
|
||||||
console.log(res);
|
// console.log(res);
|
||||||
|
// return res.data.data;
|
||||||
return res.data.data;
|
// },
|
||||||
},
|
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
</script>
|
</script>
|
||||||
|
|
|
@ -268,6 +268,7 @@ export default {
|
||||||
attributeValue: item.name,
|
attributeValue: item.name,
|
||||||
salePrice: 0,
|
salePrice: 0,
|
||||||
costPrice: 0,
|
costPrice: 0,
|
||||||
|
marketPrice: 0,
|
||||||
stockNum: 0,
|
stockNum: 0,
|
||||||
weight: 0,
|
weight: 0,
|
||||||
volume: 0,
|
volume: 0,
|
||||||
|
@ -286,25 +287,6 @@ export default {
|
||||||
align: "center",
|
align: "center",
|
||||||
"min-width": "160px",
|
"min-width": "160px",
|
||||||
},
|
},
|
||||||
{
|
|
||||||
title: "价格(元)",
|
|
||||||
field: "salePrice",
|
|
||||||
align: "center",
|
|
||||||
"min-width": "160px",
|
|
||||||
type: "jsx",
|
|
||||||
render: ({ row }) => {
|
|
||||||
return (
|
|
||||||
<div>
|
|
||||||
<el-input-number
|
|
||||||
min={0}
|
|
||||||
size="small"
|
|
||||||
v-model={row.salePrice}
|
|
||||||
placeholder="请输入价格"
|
|
||||||
></el-input-number>
|
|
||||||
</div>
|
|
||||||
);
|
|
||||||
},
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
title: "成本(元)",
|
title: "成本(元)",
|
||||||
field: "costPrice",
|
field: "costPrice",
|
||||||
|
@ -316,7 +298,6 @@ export default {
|
||||||
<div>
|
<div>
|
||||||
<el-input-number
|
<el-input-number
|
||||||
min={0}
|
min={0}
|
||||||
max={row.salePrice}
|
|
||||||
size="small"
|
size="small"
|
||||||
v-model={row.costPrice}
|
v-model={row.costPrice}
|
||||||
placeholder="请输入成本"
|
placeholder="请输入成本"
|
||||||
|
@ -325,6 +306,25 @@ export default {
|
||||||
);
|
);
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
title: "市场价(元)",
|
||||||
|
field: "marketPrice",
|
||||||
|
align: "center",
|
||||||
|
"min-width": "160px",
|
||||||
|
type: "jsx",
|
||||||
|
render: ({ row }) => {
|
||||||
|
return (
|
||||||
|
<div>
|
||||||
|
<el-input-number
|
||||||
|
min={0}
|
||||||
|
size="small"
|
||||||
|
v-model={row.marketPrice}
|
||||||
|
placeholder="请输入成本"
|
||||||
|
></el-input-number>
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
},
|
||||||
|
},
|
||||||
{
|
{
|
||||||
title: "库存",
|
title: "库存",
|
||||||
field: "stockNum",
|
field: "stockNum",
|
||||||
|
@ -418,51 +418,10 @@ export default {
|
||||||
disabled: () => this.tableData.length <= 0,
|
disabled: () => this.tableData.length <= 0,
|
||||||
// submit: true,
|
// submit: true,
|
||||||
handle: () => {
|
handle: () => {
|
||||||
let volume = ""; //重量
|
|
||||||
let weight = ""; //体积
|
|
||||||
let salePrice = ""; //价格范围
|
|
||||||
let stockNum = ""; //库存范围
|
|
||||||
let minSalePrice = Math.min.apply(
|
|
||||||
Math,
|
|
||||||
this.tableData.map((item) => {
|
|
||||||
return item.salePrice;
|
|
||||||
})
|
|
||||||
);
|
|
||||||
let maxSalePrice = Math.max.apply(
|
|
||||||
Math,
|
|
||||||
this.tableData.map((item) => {
|
|
||||||
return item.salePrice;
|
|
||||||
})
|
|
||||||
);
|
|
||||||
let minStockNum = Math.min.apply(
|
|
||||||
Math,
|
|
||||||
this.tableData.map((item) => {
|
|
||||||
return item.stockNum;
|
|
||||||
})
|
|
||||||
);
|
|
||||||
let maxStockNum = Math.max.apply(
|
|
||||||
Math,
|
|
||||||
this.tableData.map((item) => {
|
|
||||||
return item.stockNum;
|
|
||||||
})
|
|
||||||
);
|
|
||||||
if (minSalePrice == maxSalePrice) {
|
|
||||||
salePrice = maxSalePrice;
|
|
||||||
} else {
|
|
||||||
salePrice = minSalePrice + "~" + maxSalePrice;
|
|
||||||
}
|
|
||||||
if (minStockNum == maxStockNum) {
|
|
||||||
stockNum = maxStockNum;
|
|
||||||
} else {
|
|
||||||
stockNum = minStockNum + "~" + maxStockNum;
|
|
||||||
}
|
|
||||||
|
|
||||||
this.$emit(
|
this.$emit(
|
||||||
"getSpecs",
|
"getSpecs",
|
||||||
this.tableData,
|
this.tableData,
|
||||||
this.AttributeData,
|
this.AttributeData,
|
||||||
salePrice,
|
|
||||||
stockNum
|
|
||||||
);
|
);
|
||||||
this.toggle();
|
this.toggle();
|
||||||
},
|
},
|
||||||
|
|
|
@ -0,0 +1,477 @@
|
||||||
|
<template>
|
||||||
|
<div>
|
||||||
|
<el-row :gutter="20">
|
||||||
|
<el-col :span="15"
|
||||||
|
><div class="grid-content bg-purple">
|
||||||
|
<div class="userInfo">
|
||||||
|
<div class="userInfo">
|
||||||
|
<el-avatar
|
||||||
|
:size="60"
|
||||||
|
src="https://cube.elemecdn.com/0/88/03b0d39583f48206768a7534e55bcpng.png"
|
||||||
|
></el-avatar>
|
||||||
|
<span class="userName">用户名:{{ userInfo.userName }}</span>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<el-button
|
||||||
|
@click="$router.push({ path: 'bank-card-index' })"
|
||||||
|
type="primary"
|
||||||
|
round
|
||||||
|
>绑定银行卡</el-button
|
||||||
|
>
|
||||||
|
<el-button @click="addWithdrawal" type="primary" round
|
||||||
|
>发起提现</el-button
|
||||||
|
>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="userInfo">
|
||||||
|
<el-card class="box-card">
|
||||||
|
<div style="font-size: 18px; font-weight: 600">可用金额</div>
|
||||||
|
<div style="margin-top: 20px; font-size: 18px">
|
||||||
|
¥{{
|
||||||
|
userInfo.availableAmount ? userInfo.availableAmount : "0"
|
||||||
|
}}
|
||||||
|
</div>
|
||||||
|
<div class="userTime">{{ userInfo.updateTime }}</div>
|
||||||
|
</el-card>
|
||||||
|
<el-card class="box-card">
|
||||||
|
<div style="font-size: 18px; font-weight: 600">冻结金额</div>
|
||||||
|
<div style="margin-top: 20px; font-size: 18px">
|
||||||
|
¥{{ userInfo.freezeAmount ? userInfo.freezeAmount : "0" }}
|
||||||
|
</div>
|
||||||
|
<div class="userTime">{{ userInfo.updateTime }}</div>
|
||||||
|
</el-card>
|
||||||
|
</div>
|
||||||
|
<div style="margin: 10px">
|
||||||
|
<div style="font-size: 16px; margin: 0 0 20px 0; font-weight: 600">
|
||||||
|
钱包提现记录
|
||||||
|
</div>
|
||||||
|
<el-form
|
||||||
|
:inline="true"
|
||||||
|
:model="formInline"
|
||||||
|
class="demo-form-inline"
|
||||||
|
>
|
||||||
|
<el-form-item label="申请状态">
|
||||||
|
<el-select
|
||||||
|
style="width: 140px"
|
||||||
|
size="mini"
|
||||||
|
v-model="formInline.cashOutStatus"
|
||||||
|
placeholder="请选择"
|
||||||
|
>
|
||||||
|
<el-option
|
||||||
|
v-for="item in [
|
||||||
|
{
|
||||||
|
label: '审核中',
|
||||||
|
value: '1',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: '审核不通过',
|
||||||
|
value: '2',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: '审核成功',
|
||||||
|
value: '3',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: '提现中',
|
||||||
|
value: '4',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: '提现失败',
|
||||||
|
value: '5',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: '提现成功',
|
||||||
|
value: '6',
|
||||||
|
},
|
||||||
|
]"
|
||||||
|
:key="item.value"
|
||||||
|
:label="item.label"
|
||||||
|
:value="item.value"
|
||||||
|
>
|
||||||
|
</el-option>
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="申请时间">
|
||||||
|
<el-date-picker
|
||||||
|
value-format="yyyy-MM-dd HH:mm:ss"
|
||||||
|
size="mini"
|
||||||
|
style="width: 260px"
|
||||||
|
@change="changeTime"
|
||||||
|
v-model="value1"
|
||||||
|
type="datetimerange"
|
||||||
|
start-placeholder="开始日期"
|
||||||
|
end-placeholder="结束日期"
|
||||||
|
>
|
||||||
|
</el-date-picker>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item>
|
||||||
|
<el-button
|
||||||
|
size="mini"
|
||||||
|
type="primary"
|
||||||
|
@click="getWithdrawalRecord"
|
||||||
|
>查询</el-button
|
||||||
|
>
|
||||||
|
<el-button size="mini" type="primary" @click="Reset"
|
||||||
|
>重置</el-button
|
||||||
|
>
|
||||||
|
</el-form-item>
|
||||||
|
</el-form>
|
||||||
|
<div>
|
||||||
|
<el-table
|
||||||
|
border
|
||||||
|
height="47vh"
|
||||||
|
:data="tableData"
|
||||||
|
style="width: 100%"
|
||||||
|
>
|
||||||
|
<el-table-column
|
||||||
|
align="center"
|
||||||
|
prop="cashOutOrderNumber"
|
||||||
|
label="提现申请订单号"
|
||||||
|
width="180"
|
||||||
|
>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column
|
||||||
|
align="center"
|
||||||
|
prop="cashOutAmount"
|
||||||
|
label="提现申请金额"
|
||||||
|
width="120"
|
||||||
|
>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column
|
||||||
|
align="center"
|
||||||
|
prop="cashOutStatus"
|
||||||
|
label="申请状态"
|
||||||
|
>
|
||||||
|
<template slot-scope="scope">
|
||||||
|
<span>{{ getStatus(scope.row.cashOutStatus) }}</span>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column
|
||||||
|
align="center"
|
||||||
|
prop="cashOutTime"
|
||||||
|
label="提现申请时间"
|
||||||
|
>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column
|
||||||
|
align="center"
|
||||||
|
prop="tradeReceivedTime"
|
||||||
|
label="交易到账时间"
|
||||||
|
>
|
||||||
|
</el-table-column>
|
||||||
|
</el-table>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="pagination-container">
|
||||||
|
<el-pagination
|
||||||
|
:current-page="query.pageNumber"
|
||||||
|
:page-sizes="[10, 20, 30, 50]"
|
||||||
|
:page-size="query.pageSize"
|
||||||
|
:total="total"
|
||||||
|
background
|
||||||
|
layout="total, sizes, prev, pager, next, jumper"
|
||||||
|
@size-change="handleSizeChange"
|
||||||
|
@current-change="handleCurrentChange"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="9"
|
||||||
|
><div class="grid-content bg-purple">
|
||||||
|
<div style="margin: 9px 0">
|
||||||
|
<el-form
|
||||||
|
:inline="true"
|
||||||
|
:model="formInline"
|
||||||
|
class="demo-form-inline"
|
||||||
|
>
|
||||||
|
<el-form-item label="订单时间">
|
||||||
|
<el-date-picker
|
||||||
|
value-format="yyyy-MM-dd HH:mm:ss"
|
||||||
|
size="mini"
|
||||||
|
style="width: 260px"
|
||||||
|
@change="changeTimeTwo"
|
||||||
|
v-model="value2"
|
||||||
|
type="datetimerange"
|
||||||
|
start-placeholder="开始日期"
|
||||||
|
end-placeholder="结束日期"
|
||||||
|
>
|
||||||
|
</el-date-picker>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item>
|
||||||
|
<el-button size="mini" type="primary" @click="init"
|
||||||
|
>查询</el-button
|
||||||
|
>
|
||||||
|
</el-form-item>
|
||||||
|
</el-form>
|
||||||
|
</div>
|
||||||
|
<el-card class="box-cardTwo">
|
||||||
|
<div class="cardTwo-item">
|
||||||
|
<div>
|
||||||
|
<div style="font-size: 18px; font-weight: 600">总收入</div>
|
||||||
|
<div style="margin-top: 20px; font-size: 18px">
|
||||||
|
¥{{ TotalData.totalIncome ? TotalData.totalIncome : "0" }}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<div style="font-size: 18px; font-weight: 600">总支出</div>
|
||||||
|
<div style="margin-top: 20px; font-size: 18px">
|
||||||
|
¥{{
|
||||||
|
TotalData.totalExpenditure
|
||||||
|
? TotalData.totalExpenditure
|
||||||
|
: "0"
|
||||||
|
}}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</el-card>
|
||||||
|
<div style="margin: 10px 0">
|
||||||
|
<div style="font-size: 16px; margin: 0 0 20px 0; font-weight: 600">
|
||||||
|
钱包账单
|
||||||
|
</div>
|
||||||
|
<div style="background: #fff; padding: 10px; height: 51vh;min-width: 400px;
|
||||||
|
overflow-y:scroll;">
|
||||||
|
<div
|
||||||
|
v-for="item in billList"
|
||||||
|
:key="item.id"
|
||||||
|
style="
|
||||||
|
min-width: 380px;
|
||||||
|
background: #f1f8fe;
|
||||||
|
padding: 10px;
|
||||||
|
border-radius: 10px;
|
||||||
|
margin-bottom: 10px;
|
||||||
|
"
|
||||||
|
>
|
||||||
|
<div style="font-size: 18px">{{ item.billOrderTime }}</div>
|
||||||
|
<div class="wallet-item">
|
||||||
|
<div>订单号:{{ item.billOrderNumber }}</div>
|
||||||
|
<div>订单状态:{{ getBillStatus(item.billStatus) }}</div>
|
||||||
|
</div>
|
||||||
|
<div class="wallet-item">
|
||||||
|
<div>{{ item.billTypeName }}</div>
|
||||||
|
<div>余额:{{ item.amountAfterChange }}</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="pagination-container">
|
||||||
|
<el-pagination
|
||||||
|
:current-page="form.pageNumber"
|
||||||
|
:page-sizes="[10, 20, 30, 50]"
|
||||||
|
:page-size="form.pageSize"
|
||||||
|
:total="totalTwo"
|
||||||
|
background
|
||||||
|
layout="total, sizes, prev, pager, next, jumper"
|
||||||
|
@size-change="handleSizeChangeTwo"
|
||||||
|
@current-change="handleCurrentChangeTwo"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</el-col>
|
||||||
|
</el-row>
|
||||||
|
<!-- 提现 -->
|
||||||
|
<withdrawal @init="init" ref="withdrawal"></withdrawal>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import withdrawal from "./popup/withdrawal";
|
||||||
|
export default {
|
||||||
|
components: { withdrawal },
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
value2: [],
|
||||||
|
value1: [],
|
||||||
|
userInfo: {},
|
||||||
|
tableData: [],
|
||||||
|
TotalData: {},
|
||||||
|
billList: [],
|
||||||
|
query: {
|
||||||
|
pageNumber: 1,
|
||||||
|
pageSize: 10,
|
||||||
|
},
|
||||||
|
formInline: {
|
||||||
|
cashOutStatus: "",
|
||||||
|
startCashOutTime: "",
|
||||||
|
endCashOutTime: "",
|
||||||
|
},
|
||||||
|
form: {
|
||||||
|
pageNumber: 1,
|
||||||
|
pageSize: 10,
|
||||||
|
},
|
||||||
|
formTimeData: {},
|
||||||
|
total: 0,
|
||||||
|
totalTwo: 0,
|
||||||
|
};
|
||||||
|
},
|
||||||
|
created() {
|
||||||
|
this.init();
|
||||||
|
this.getWithdrawalRecord();
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
init() {
|
||||||
|
console.log("1213");
|
||||||
|
this.$api.wallet.myWallet().then((res) => {
|
||||||
|
this.userInfo = res.data.data;
|
||||||
|
});
|
||||||
|
this.$api.wallet
|
||||||
|
.totalAmount({ amountChangeType: "", ...this.formTimeData })
|
||||||
|
.then((res) => {
|
||||||
|
this.TotalData = res.data.data;
|
||||||
|
});
|
||||||
|
this.$api.wallet
|
||||||
|
.getBankInfo({ ...this.form, ...this.formTimeData })
|
||||||
|
.then((res) => {
|
||||||
|
console.log(res, "bull");
|
||||||
|
this.billList = res.data.data.data;
|
||||||
|
this.totalTwo = Number(res.data.data.total);
|
||||||
|
});
|
||||||
|
},
|
||||||
|
getWithdrawalRecord() {
|
||||||
|
this.$api.wallet
|
||||||
|
.WithdrawalRecord({ ...this.query, ...this.formInline })
|
||||||
|
.then((res) => {
|
||||||
|
this.tableData = res.data.data.data;
|
||||||
|
this.total = Number(res.data.data.total);
|
||||||
|
});
|
||||||
|
},
|
||||||
|
handleSizeChange(val) {
|
||||||
|
this.query.pageSize = val;
|
||||||
|
this.getWithdrawalRecord();
|
||||||
|
},
|
||||||
|
handleCurrentChange(val) {
|
||||||
|
this.query.pageNumber = val;
|
||||||
|
this.getWithdrawalRecord();
|
||||||
|
},
|
||||||
|
handleSizeChangeTwo(val) {
|
||||||
|
this.form.pageSize = val;
|
||||||
|
this.init();
|
||||||
|
},
|
||||||
|
handleCurrentChangeTwo(val) {
|
||||||
|
this.form.pageNumber = val;
|
||||||
|
this.init();
|
||||||
|
},
|
||||||
|
Reset() {
|
||||||
|
this.value1 = [];
|
||||||
|
this.formInline = {};
|
||||||
|
this.getWithdrawalRecord();
|
||||||
|
},
|
||||||
|
addWithdrawal() {
|
||||||
|
this.$api.mer_admin
|
||||||
|
.bankCardPage({
|
||||||
|
pageNumber: 1,
|
||||||
|
pageSize: 10,
|
||||||
|
linkId: JSON.parse(sessionStorage.getItem("userInfo")).managerId
|
||||||
|
? JSON.parse(sessionStorage.getItem("userInfo")).managerId
|
||||||
|
: JSON.parse(sessionStorage.getItem("userInfo")).merchantId,
|
||||||
|
status: "1",
|
||||||
|
})
|
||||||
|
.then((res) => {
|
||||||
|
if (res.data.data.data.length > 0) {
|
||||||
|
this.$refs.withdrawal.toggle().add(this.userInfo.availableAmount);
|
||||||
|
} else {
|
||||||
|
this.$message.error("请先绑定银行卡");
|
||||||
|
}
|
||||||
|
})
|
||||||
|
.catch((err) => {
|
||||||
|
this.$message.error("获取银行卡失败");
|
||||||
|
});
|
||||||
|
},
|
||||||
|
getStatus(row) {
|
||||||
|
if (row == 1) {
|
||||||
|
return "审核中";
|
||||||
|
} else if (row == 2) {
|
||||||
|
return "审核不通过";
|
||||||
|
} else if (row == 3) {
|
||||||
|
return "审核成功";
|
||||||
|
} else if (row == 4) {
|
||||||
|
return "提现中";
|
||||||
|
} else if (row == 5) {
|
||||||
|
return "提现失败";
|
||||||
|
} else if (row == 6) {
|
||||||
|
return "提现成功";
|
||||||
|
}
|
||||||
|
},
|
||||||
|
changeTime(e) {
|
||||||
|
if (e) {
|
||||||
|
this.formInline.startCashOutTime = e[0];
|
||||||
|
this.formInline.endCashOutTime = e[1];
|
||||||
|
} else {
|
||||||
|
this.formInline.startCashOutTime = "";
|
||||||
|
this.formInline.endCashOutTime = "";
|
||||||
|
}
|
||||||
|
},
|
||||||
|
changeTimeTwo(e) {
|
||||||
|
if (e) {
|
||||||
|
this.formTimeData.startBillOrderTime = e[0];
|
||||||
|
this.formTimeData.endBillOrderTime = e[1];
|
||||||
|
} else {
|
||||||
|
this.formTimeData.startBillOrderTime = "";
|
||||||
|
this.formTimeData.endBillOrderTime = "";
|
||||||
|
}
|
||||||
|
},
|
||||||
|
getBillStatus(row) {
|
||||||
|
if (row == 1) {
|
||||||
|
return "待同步";
|
||||||
|
} else if (row == 2) {
|
||||||
|
return "同步中";
|
||||||
|
} else if (row == 3) {
|
||||||
|
return "同步成功";
|
||||||
|
} else if (row == 4) {
|
||||||
|
return "同步失败";
|
||||||
|
}
|
||||||
|
},
|
||||||
|
},
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
.el-col {
|
||||||
|
border-radius: 4px;
|
||||||
|
}
|
||||||
|
.bg-purple {
|
||||||
|
background: #f1f8fe;
|
||||||
|
}
|
||||||
|
.grid-content {
|
||||||
|
border-radius: 4px;
|
||||||
|
padding: 20px;
|
||||||
|
height: 85vh;
|
||||||
|
overflow: auto;
|
||||||
|
}
|
||||||
|
.userInfo {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: space-between;
|
||||||
|
}
|
||||||
|
.userName {
|
||||||
|
margin-left: 30px;
|
||||||
|
font-size: 16px;
|
||||||
|
color: #303e9f;
|
||||||
|
}
|
||||||
|
.box-card {
|
||||||
|
margin: 20px;
|
||||||
|
width: 50%;
|
||||||
|
height: 200px;
|
||||||
|
border-radius: 10px;
|
||||||
|
position: relative;
|
||||||
|
}
|
||||||
|
.userTime {
|
||||||
|
position: absolute;
|
||||||
|
bottom: 10px;
|
||||||
|
right: 20px;
|
||||||
|
font-size: 16px;
|
||||||
|
}
|
||||||
|
.box-cardTwo {
|
||||||
|
margin-bottom: 30px;
|
||||||
|
height: 200px;
|
||||||
|
border-radius: 10px;
|
||||||
|
}
|
||||||
|
.cardTwo-item {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: space-evenly;
|
||||||
|
}
|
||||||
|
.wallet-item {
|
||||||
|
margin: 10px 0;
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-between;
|
||||||
|
}
|
||||||
|
</style>
|
|
@ -0,0 +1,144 @@
|
||||||
|
<template>
|
||||||
|
<div>
|
||||||
|
<obj-modal
|
||||||
|
ref="modal"
|
||||||
|
labelWidth="150px"
|
||||||
|
:modalConfig="modalConfig"
|
||||||
|
:modalData="modalData"
|
||||||
|
:modalHandles="modalHandles"
|
||||||
|
>
|
||||||
|
<div slot="dialog__content">
|
||||||
|
<el-form
|
||||||
|
:model="ruleForm"
|
||||||
|
:rules="rules"
|
||||||
|
ref="ruleForm"
|
||||||
|
label-width="150px"
|
||||||
|
class="demo-ruleForm"
|
||||||
|
>
|
||||||
|
<el-form-item label="提现金额:" prop="amount">
|
||||||
|
<div>
|
||||||
|
<el-input-number
|
||||||
|
v-model="ruleForm.amount"
|
||||||
|
:min="0"
|
||||||
|
:max="this.amountSum"
|
||||||
|
:step="1"
|
||||||
|
label="描述文字"
|
||||||
|
></el-input-number>
|
||||||
|
</div>
|
||||||
|
<div>可提现金额:{{ amountSum }}</div>
|
||||||
|
</el-form-item>
|
||||||
|
</el-form>
|
||||||
|
</div>
|
||||||
|
<!-- 选择商品 -->
|
||||||
|
</obj-modal>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
<script>
|
||||||
|
import { debounce, cloneDeep } from "lodash";
|
||||||
|
export default {
|
||||||
|
components: {},
|
||||||
|
props: {},
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
isAdd: true,
|
||||||
|
//表格属性
|
||||||
|
modalConfig: {
|
||||||
|
title: "提现",
|
||||||
|
show: false,
|
||||||
|
width: "600px",
|
||||||
|
},
|
||||||
|
amountSum: 0,
|
||||||
|
modalData: {},
|
||||||
|
ruleForm: {
|
||||||
|
amount: "",
|
||||||
|
},
|
||||||
|
rules: {
|
||||||
|
amount: [
|
||||||
|
{
|
||||||
|
required: true,
|
||||||
|
message: "请输入提现金额",
|
||||||
|
trigger: ["blur", "change"],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
validator: (rule, value, callback) => {
|
||||||
|
if (value > this.amountSum) {
|
||||||
|
callback(new Error("提现金额不能大于可提现金额"));
|
||||||
|
} else {
|
||||||
|
callback();
|
||||||
|
}
|
||||||
|
},
|
||||||
|
trigger: ["blur", "change"],
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
};
|
||||||
|
},
|
||||||
|
watch: {
|
||||||
|
"modalConfig.show"(newVal) {
|
||||||
|
if (newVal) {
|
||||||
|
//关闭弹窗清空校验
|
||||||
|
setTimeout(() => {
|
||||||
|
this.$refs.ruleForm.resetFields();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
},
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
queryTableData(pageNo, pageSize) {},
|
||||||
|
toggle(e) {
|
||||||
|
if (this.modalConfig.show == false) {
|
||||||
|
this.modalConfig.show = true;
|
||||||
|
} else {
|
||||||
|
this.modalConfig.show = false;
|
||||||
|
}
|
||||||
|
if (e) {
|
||||||
|
this.init(cloneDeep(e));
|
||||||
|
}
|
||||||
|
return {
|
||||||
|
add: (row) => {
|
||||||
|
this.amountSum = row ? row : 0;
|
||||||
|
this.modalConfig.title = "提现金额";
|
||||||
|
this.isAdd = true;
|
||||||
|
},
|
||||||
|
update: () => {
|
||||||
|
this.isAdd = false;
|
||||||
|
},
|
||||||
|
};
|
||||||
|
},
|
||||||
|
init(row) {},
|
||||||
|
},
|
||||||
|
computed: {
|
||||||
|
modalHandles() {
|
||||||
|
return [
|
||||||
|
{
|
||||||
|
label: "取消",
|
||||||
|
handle: () => {
|
||||||
|
this.toggle();
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: "确认",
|
||||||
|
type: "primary",
|
||||||
|
// submit: true,
|
||||||
|
handle: () => {
|
||||||
|
if (this.isAdd) {
|
||||||
|
this.$refs.ruleForm.validate((valid) => {
|
||||||
|
if (valid) {
|
||||||
|
console.log(valid);
|
||||||
|
this.$api.wallet.Withdrawal(this.ruleForm).then((res) => {
|
||||||
|
this.$emit("init");
|
||||||
|
this.toggle();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
},
|
||||||
|
},
|
||||||
|
];
|
||||||
|
},
|
||||||
|
},
|
||||||
|
asyncComputed: {},
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
</style>
|
Loading…
Reference in New Issue