You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
175 lines
4.8 KiB
175 lines
4.8 KiB
import * as api from '@/api/operation/advertise/index.js';
|
|
import * as categoryAPI from '@/api/sales/category.js';
|
|
import { ElMessage, ElMessageBox } from '@/plugins/element-plus';
|
|
const state = () => ({
|
|
code: 'AdvertiseManagement',
|
|
condition: {},
|
|
list: [],
|
|
total: 0,
|
|
opts: {
|
|
init: false,
|
|
location: [
|
|
{
|
|
label: '首页轮播',
|
|
value: 1,
|
|
},
|
|
{
|
|
label: '首页金刚区',
|
|
value: 2,
|
|
},
|
|
{
|
|
label: '商品分类广告',
|
|
value: 3,
|
|
},
|
|
],
|
|
platform: [
|
|
{
|
|
label: '移动端',
|
|
value: 1,
|
|
},
|
|
{
|
|
label: 'PC端',
|
|
value: 2,
|
|
},
|
|
],
|
|
jumpType: [
|
|
{
|
|
label: '商品详情',
|
|
value: 1,
|
|
},
|
|
{
|
|
label: '分类商品列表',
|
|
value: 2,
|
|
},
|
|
{
|
|
label: '链接',
|
|
value: 3,
|
|
},
|
|
{
|
|
label: '不跳转',
|
|
value: 4,
|
|
},
|
|
],
|
|
status: [
|
|
{
|
|
label: '未启用',
|
|
value: 0,
|
|
},
|
|
{
|
|
label: '已启用',
|
|
value: 1,
|
|
},
|
|
],
|
|
category: [],
|
|
},
|
|
});
|
|
const getters = {};
|
|
const mutations = {
|
|
setCode: (state, data) => (state.code = data),
|
|
setCondition: (state, data) => (state.condition = data),
|
|
setList: (state, data) => (state.list = data),
|
|
setTotal: (state, data) => (state.total = data),
|
|
setOpts: (state, data) => (state.opts = data),
|
|
};
|
|
const actions = {
|
|
search: async ({ state, commit, rootGetters }) => {
|
|
let data = {
|
|
...state.condition,
|
|
};
|
|
if (data.dateRange?.length) {
|
|
data.advertisementEndTime = data.dateRange[0];
|
|
data.advertisementEndTimeEnd = data.dateRange[1];
|
|
}
|
|
delete data.dateRange;
|
|
let res = await api.search({ ...rootGetters['local/page'](state.code), ...data });
|
|
if (res) {
|
|
commit('setList', res.records);
|
|
commit('setTotal', res.total);
|
|
} else {
|
|
ElMessage.error('查询失败');
|
|
commit('setList', []);
|
|
}
|
|
return res;
|
|
},
|
|
load: async ({ state, commit }) => {
|
|
const deep = (arr) =>
|
|
arr.map((item) => {
|
|
return {
|
|
...item,
|
|
id: item.id + '',
|
|
childList: deep(item.childList || []),
|
|
};
|
|
});
|
|
|
|
commit('setOpts', {
|
|
...state.opts,
|
|
init: true,
|
|
category: deep(await categoryAPI.search()),
|
|
});
|
|
},
|
|
detail: async (context, id) => {
|
|
let res = await api.detail(id);
|
|
if (!res) {
|
|
ElMessage.error('加载详情失败');
|
|
}
|
|
return res;
|
|
},
|
|
save: async (context, data) => {
|
|
let save = data.id ? api.update : api.create;
|
|
data = {
|
|
...data,
|
|
};
|
|
if (data.dateRange?.length) {
|
|
data.advertisementStartTime = data.dateRange[0];
|
|
data.advertisementEndTime = data.dateRange[1];
|
|
} else {
|
|
delete data.advertisementStartTime;
|
|
delete data.advertisementEndTime;
|
|
}
|
|
delete data.dateRange;
|
|
if (data.jumpType === 1) {
|
|
data.jumpUrl = data.jumpUrl.id;
|
|
}
|
|
let res = await save(data);
|
|
if (res) {
|
|
ElMessage.success('保存成功');
|
|
} else {
|
|
ElMessage.error('保存失败');
|
|
}
|
|
return res;
|
|
},
|
|
remove: async ({ dispatch }, idList) => {
|
|
if (!idList.length) {
|
|
ElMessage.warning('请选择要删除的数据');
|
|
} else {
|
|
try {
|
|
await ElMessageBox.confirm('数据删除后无法恢复,确定要删除吗?', '危险操作');
|
|
let res = await api.remove(idList.join(','));
|
|
if (res) {
|
|
ElMessage.success('删除成功');
|
|
dispatch('search');
|
|
} else {
|
|
ElMessage.error('删除失败');
|
|
}
|
|
} catch (e) {
|
|
console.info('取消删除', e);
|
|
}
|
|
}
|
|
},
|
|
enable: async ({ dispatch }, data) => {
|
|
let res = await api.update(data);
|
|
if (res) {
|
|
ElMessage.success((data.isEnable ? '启用' : '禁用') + '成功');
|
|
dispatch('search');
|
|
} else {
|
|
ElMessage.error((data.isEnable ? '启用' : '禁用') + '失败');
|
|
}
|
|
},
|
|
};
|
|
export default {
|
|
state,
|
|
getters,
|
|
mutations,
|
|
actions,
|
|
};
|