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 ? '启用' : '禁用') + '失败'); } }, sort: async ({ dispatch }, data) => { let res = await api.sort(data); if (res) { ElMessage.success('排序成功'); dispatch('search'); } else { ElMessage.error('排序失败'); } }, }; export default { state, getters, mutations, actions, };