diff --git a/src/api/SpecialAnalize/index.js b/src/api/SpecialAnalize/index.js new file mode 100644 index 0000000..9a96826 --- /dev/null +++ b/src/api/SpecialAnalize/index.js @@ -0,0 +1,50 @@ +import httpService from "@/request" + +// 专项分析列表页 - 专题列表 +export function getSchemeDataToSpecial(params) { + let obj = Object.assign({action: 'getSchemeDataToSpecial'}, params) + return httpService({ + url: `/api/v6.ashx`, + method: 'post', + data: obj, + headers: { + 'content-type': 'application/x-www-form-urlencoded' + } + }) +} +// 专项分析列表页 - 添加修改 +export function setSchemeDataSpecial(params) { + let obj = Object.assign({action: 'setSchemeDataSpecial'}, params) + return httpService({ + url: `/api/v6.ashx`, + method: 'post', + data: obj, + headers: { + 'content-type': 'application/x-www-form-urlencoded' + } + }) +} +// 专项分析列表页 - 获取品牌和车型 +export function getSchemeDataToBrandOrSeries(params) { + let obj = Object.assign({action: 'getSchemeDataToBrandOrSeries'}, params) + return httpService({ + url: `/api/v6.ashx`, + method: 'post', + data: obj, + headers: { + 'content-type': 'application/x-www-form-urlencoded' + } + }) +} +// 专项分析列表页 - 删除专题 +export function delSchemeDataSpecial(params) { + let obj = Object.assign({action: 'delSchemeDataSpecial'}, params) + return httpService({ + url: `/api/v6.ashx`, + method: 'post', + data: obj, + headers: { + 'content-type': 'application/x-www-form-urlencoded' + } + }) +} \ No newline at end of file diff --git a/src/lycomponents/iHeader/index.vue b/src/lycomponents/iHeader/index.vue index 95ea4b7..ba3fda6 100644 --- a/src/lycomponents/iHeader/index.vue +++ b/src/lycomponents/iHeader/index.vue @@ -23,6 +23,9 @@ 销量排行 + + 专项分析 + 菜单 @@ -144,7 +147,7 @@ export default { obj.key === "eventInsight" ) { this.setHeaderType(3); - } else if (obj.key === "saleRank") { + } else if (obj.key === "saleRank" || obj.key === "specialAnalize") { this.setHeaderType(4); } else { @@ -165,6 +168,8 @@ export default { // 退出的方法 layout() { LS.remove("token"); + LS.remove("userInfo"); + LS.remove("account"); LS.remove("menu"); LS.remove("levelBtn"); LS.remove("user"); @@ -181,6 +186,7 @@ export default { LS.remove("mComparison"); LS.remove("tComparison"); LS.remove("mcStatus"); + LS.remove("specialGuid"); this.$router.replace("/login"); }, }, diff --git a/src/lycomponents/iHeaderBrand/index.vue b/src/lycomponents/iHeaderBrand/index.vue index edb1629..e33db11 100644 --- a/src/lycomponents/iHeaderBrand/index.vue +++ b/src/lycomponents/iHeaderBrand/index.vue @@ -23,6 +23,9 @@ 销量排行 + + 专项分析 + 菜单 @@ -185,7 +188,7 @@ export default { obj.key === "eventInsight" ) { this.setHeaderType(3); - } else if (obj.key === "saleRank") { + } else if (obj.key === "saleRank" || obj.key === "specialAnalize") { this.setHeaderType(4); } else { this.setHeaderType(1); @@ -211,6 +214,7 @@ export default { LS.remove("mComparison"); LS.remove("tComparison"); LS.remove("mcStatus"); + LS.remove("specialGuid"); this.$router.replace("/login"); }, //根据选择的开始时间/结束时间,动态渲染要禁用的日期 diff --git a/src/lycomponents/iHeaderMa/index.vue b/src/lycomponents/iHeaderMa/index.vue index 62b5435..bf6da42 100644 --- a/src/lycomponents/iHeaderMa/index.vue +++ b/src/lycomponents/iHeaderMa/index.vue @@ -23,6 +23,9 @@ 销量排行 + + 专项分析 + 菜单 @@ -152,7 +155,7 @@ export default { this.setHeaderType(2); } else if(obj.key === 'brandInsight' || obj.key === 'modelInsight' || obj.key === "eventInsight") { this.setHeaderType(3); - } else if (obj.key === "saleRank") { + } else if (obj.key === "saleRank" || obj.key === "specialAnalize") { this.setHeaderType(4); } else { this.setHeaderType(1); @@ -178,6 +181,7 @@ export default { LS.remove("mComparison"); LS.remove("tComparison"); LS.remove("mcStatus"); + LS.remove("specialGuid"); this.$router.replace("/login"); } }, diff --git a/src/lycomponents/iHeaderMyself/index.vue b/src/lycomponents/iHeaderMyself/index.vue index f4b7e44..b265ba8 100644 --- a/src/lycomponents/iHeaderMyself/index.vue +++ b/src/lycomponents/iHeaderMyself/index.vue @@ -23,6 +23,9 @@ 销量排行 + + 专项分析 + 菜单 @@ -146,7 +149,7 @@ export default { this.setHeaderType(2); } else if(obj.key === 'brandInsight' || obj.key === 'modelInsight' || obj.key === "eventInsight") { this.setHeaderType(3); - } else if (obj.key === "saleRank") { + } else if (obj.key === "saleRank" || obj.key === "specialAnalize") { this.setHeaderType(4); } else { this.setHeaderType(1); @@ -172,6 +175,7 @@ export default { LS.remove("mComparison"); LS.remove("tComparison"); LS.remove("mcStatus"); + LS.remove("specialGuid"); this.$router.replace("/login"); } }, diff --git a/src/lycomponents/iSpecialBrandChoose/index.vue b/src/lycomponents/iSpecialBrandChoose/index.vue new file mode 100644 index 0000000..ebb292f --- /dev/null +++ b/src/lycomponents/iSpecialBrandChoose/index.vue @@ -0,0 +1,271 @@ + + + + + + diff --git a/src/lycomponents/iSpecialSeriesChoose/index.vue b/src/lycomponents/iSpecialSeriesChoose/index.vue new file mode 100644 index 0000000..2a8f3bb --- /dev/null +++ b/src/lycomponents/iSpecialSeriesChoose/index.vue @@ -0,0 +1,352 @@ + + + + + + diff --git a/src/lycomponents/index.js b/src/lycomponents/index.js index 128cfc7..803d7f4 100644 --- a/src/lycomponents/index.js +++ b/src/lycomponents/index.js @@ -10,6 +10,8 @@ import iHeader from "@/lycomponents/iHeader"; import iSwitchBrand from "@/lycomponents/iSwitchBrand"; import iSwitchModel from "@/lycomponents/iSwitchModel"; import iSaleModelChoose from "@/lycomponents/iSaleModelChoose"; +import iSpecialBrandChoose from "@/lycomponents/iSpecialBrandChoose"; +import iSpecialSeriesChoose from "@/lycomponents/iSpecialSeriesChoose"; import iHeaderMa from "@/lycomponents/iHeaderMa" import iHeaderBrand from "@/lycomponents/iHeaderBrand" import iHeaderMyself from "@/lycomponents/iHeaderMyself"; @@ -23,7 +25,9 @@ export default { iSwitchModel, iHeaderBrand, iHeaderMyself, - iSaleModelChoose + iSaleModelChoose, + iSpecialBrandChoose, + iSpecialSeriesChoose } }) } diff --git a/src/mixins/index.js b/src/mixins/index.js index b4d3c0c..fb056a9 100644 --- a/src/mixins/index.js +++ b/src/mixins/index.js @@ -128,11 +128,11 @@ export default { }, computed: { ...mapGetters(['getZoom', 'getLoading', 'getToken', 'getUser', 'getAccount', 'getCommTime', 'getCtime', 'getCtime2', 'getHeaderType', 'getBrand', 'getModel', 'getSComparison', 'getBComparison','getTComparison', 'getMComparison', 'getEComparison', 'getLevelBtn', 'getMenu', - 'getChangeSTime', 'getMcStatus','getBcStatus','getScStatus','getTcStatus','getIsLight','getCarCircle']) + 'getChangeSTime', 'getMcStatus','getBcStatus','getScStatus','getTcStatus','getIsLight','getCarCircle','getSpecialGuid']) }, methods: { ...mapActions(["setZoom", 'setLoading', 'setToken', 'setUser', 'setAccount', 'setCommTime', 'setCtime', 'setCtime2', 'setHeaderType', 'setBrand', 'setModel', 'setSComparison', 'setBComparison','setTComparison', 'setMComparison', 'setEComparison', 'setLevelBtn', 'setMenu', - 'setChangeSTime','setMcStatus','setBcStatus','setScStatus','setTcStatus','setIsLight','setCarCircle']), + 'setChangeSTime','setMcStatus','setBcStatus','setScStatus','setTcStatus','setIsLight','setCarCircle','setSpecialGuid']), // 获取当前日期时间 getDatetime() { let now = new Date(); diff --git a/src/permission.js b/src/permission.js index a276b10..c5047b6 100644 --- a/src/permission.js +++ b/src/permission.js @@ -29,7 +29,7 @@ router.afterEach(() => { // 检查菜单权限 function checkMenu(path, next) { let menuStr = store.getters.getMenu || []; - let arr = ['/modelInsight', '/eventInsight', '/marketingAnalysis', '/saleRank']; + let arr = ['/modelInsight', '/eventInsight', '/marketingAnalysis', '/saleRank', '/specialAnalize']; let n = menuStr.findIndex(ele => ele.link === path); if(arr.includes(path) && n === -1) next('/index') else next() diff --git a/src/router/index.js b/src/router/index.js index 8c6ca22..bd896b8 100644 --- a/src/router/index.js +++ b/src/router/index.js @@ -18,13 +18,8 @@ Router.prototype.push = function push(location) { import Login from "@/views/Login" import mcIndex from "@/views/MarketingComparison" import ModelComparison from "@/views/ModelComparison" -import SaleRank from "@/views/SaleRank" // 销量排行 -import ThemeAnalize from "@/views/ThemeAnalize" -import ThemeData from "@/views/ThemeData" -import ThemeBoard from "@/views/ThemeBoard" import ThemeComparison from "@/views/ThemeComparison" -import iSwitchEvent from "@/lycomponents/iSwitchEvent" const router = [ { path: '/login', @@ -397,6 +392,18 @@ const router = [ desc: "主题对比", component: ThemeComparison }, + { + path: '/specialAnalize', + name: "specialAnalize", + desc: "专项分析", + component: resolve => require(["@/views/SpecialAnalize"], resolve), + }, + { + path: '/specialAnalizeChoose', + name: "specialAnalizeChoose", + desc: "专项分析-选择", + component: resolve => require(["@/views/SpecialAnalizeChoose"], resolve), + }, ] }, diff --git a/src/store/actions.js b/src/store/actions.js index a224496..17794b6 100644 --- a/src/store/actions.js +++ b/src/store/actions.js @@ -83,5 +83,8 @@ const actions = { setCarCircle: ({commit}, log) => { commit('setCarCircle', log) }, + setSpecialGuid: ({commit}, log) => { + commit('setSpecialGuid', log) + }, } export default actions diff --git a/src/store/getters.js b/src/store/getters.js index fcbc6cb..5138168 100644 --- a/src/store/getters.js +++ b/src/store/getters.js @@ -85,6 +85,9 @@ const getters = { }, getCarCircle(state) { return state.carCircle + }, + getSpecialGuid(state) { + return state.specialGuid } } export default getters diff --git a/src/store/mutations.js b/src/store/mutations.js index 48ed246..7e6ea28 100644 --- a/src/store/mutations.js +++ b/src/store/mutations.js @@ -136,6 +136,11 @@ const mutations = { state.carCircle = log; let str = JSON.stringify(log); LS.put('carCircle', str, 1/8); + }, + setSpecialGuid: (state, log) => { + state.specialGuid = log; + let str = JSON.stringify(log); + LS.put('specialGuid', str, 1/8); } } diff --git a/src/store/state.js b/src/store/state.js index 9ff5218..597ef24 100644 --- a/src/store/state.js +++ b/src/store/state.js @@ -33,5 +33,6 @@ const state = { menu: LS.get('menu') ? JSON.parse(LS.get('menu')) : [], isLight: LS.get('isLight') || false, //浅色背景 carCircle: LS.get('carCircle') || 0, // 0全部 1车友圈 + specialGuid: LS.get('specialGuid') || '', //专项分析 } export default state; diff --git a/src/views/Login/loginForm/index.vue b/src/views/Login/loginForm/index.vue index 0f38eaf..1e5606a 100644 --- a/src/views/Login/loginForm/index.vue +++ b/src/views/Login/loginForm/index.vue @@ -127,8 +127,13 @@ export default { let obj = { link:'/saleRank', text:'销量排行' - } - data.meun.push(obj) + }; + let obj2 = { + link:'/specialAnalize', + text:'专项分析' + }; + data.meun.push(obj); + data.meun.push(obj2); //// this.setMenu(data.meun); if(this.remCheck) { diff --git a/src/views/SpecialAnalize/index.vue b/src/views/SpecialAnalize/index.vue new file mode 100644 index 0000000..08070dc --- /dev/null +++ b/src/views/SpecialAnalize/index.vue @@ -0,0 +1,191 @@ + + + + + \ No newline at end of file diff --git a/src/views/SpecialAnalize/tbEvent.js b/src/views/SpecialAnalize/tbEvent.js new file mode 100644 index 0000000..299210d --- /dev/null +++ b/src/views/SpecialAnalize/tbEvent.js @@ -0,0 +1,55 @@ +import {getSchemeDataToSpecial} from "@/api/SpecialAnalize" +import {delSchemeDataSpecial} from "@/api/SpecialAnalize" +export default { + getNowData() { + getSchemeDataToSpecial(this.form).then(res => { + this.myThemeArr = res.data; + }) + }, + //回退 + goBack() { + this.setHeaderType(3); + this.$router.go(-1); + }, + handlerChangeTheme(n) { + if(n == 1) { + this.form.sType = 'former'; + } + if(n == 0) { + this.form.sType = 'now'; + }; + this.getNowData(); + }, + //新增按钮 + handlerAdd() { + this.$router.push('/specialAnalizeChoose') + }, + //编辑修改 + handlerEdit(guids) { + this.$router.push({path: '/specialAnalizeChoose', query: {sSpecialGuid: guids}}); + }, + //删除 + handlerDel(guids) { + let obj = { + token: this.getToken, + sGuids: guids + } + delSchemeDataSpecial(obj).then(() => { + this.getNowData(); + }) + }, + //前往详情页 + toThemeData(guids,name) { + + }, + //日期 + calendarPriceRangeChange(date) { + + }, + handlerChangeTime(val) { + + }, + disabledDate(current) { + return false; + }, +} \ No newline at end of file diff --git a/src/views/SpecialAnalizeChoose/index.vue b/src/views/SpecialAnalizeChoose/index.vue new file mode 100644 index 0000000..4c6dd0e --- /dev/null +++ b/src/views/SpecialAnalizeChoose/index.vue @@ -0,0 +1,245 @@ + + + + + \ No newline at end of file