Ver código fonte

Merge branch '12_4_dangyunlong' into dev

dangyunlong 3 meses atrás
pai
commit
9da075098d

+ 1 - 10
src/api/cms.js

@@ -83,16 +83,7 @@ export function selectWebsiteArticleInfo(params) {
   })
 }
 
-//2.0 获取所有职能
-export function getAllDepartment(params) {
-  return request({
-    url: '/public/getAllDepartment',
-    method: 'get',
-    params
-  })
-}
-
-//2.1 获得所有1级网站导航
+//2.0 获得所有1级网站导航
 export function getWebsiteCategory(params) {
   return request({
     url: '/web/getWebsiteCategory',

+ 44 - 0
src/api/template.js

@@ -74,4 +74,48 @@ export function getWebsiteTemplateclassintel(data) {
   })
 }
 
+//1.9 保存模板配置
+export function addWebsiteTemplate(data) {
+  return request({
+    url: '/website/addWebsiteTemplate',
+    method: 'post',
+    data
+  })
+}
+
+//1.10 获取模板配置信息
+export function getWebsiteTemplateInfo(params) {
+  return request({
+    url: '/website/getWebsiteTemplateInfo',
+    method: 'get',
+    params
+  })
+}
+
+//1.11 预览数据
+export function getWebsiteTemplateData(params) {
+  return request({
+    url: '/website/getWebsiteTemplateData',
+    method: 'get',
+    params
+  })
+}
+
+//1.12 板块列表
+export function templateSectorList(params) {
+  return request({
+    url: '/website/templateSectorList',
+    method: 'get',
+    params
+  })
+}
+
+//1.13 组件列表
+export function sectorComponentList(params) {
+  return request({
+    url: '/website/sectorComponentList',
+    method: 'get',
+    params
+  })
+}
 //自助建站 end ------------------------------------->

+ 1 - 0
src/layout/components/template/pages/article/sector.vue

@@ -47,6 +47,7 @@ export default {
             component_name:"",
             sort:1,
             componentData:{
+              ad_id:"",//广告位id
               text:"通栏广告", //广告位名称
               width:1200, //广告位宽度
               height:60, //广告位高度

+ 1 - 0
src/layout/components/template/pages/index/sector.vue

@@ -83,6 +83,7 @@ export default {
             component_name:"",
             sort:1,
             componentData:{
+              ad_id:"",//广告位id
               text:"通栏广告", //广告位名称
               width:1200, //广告位宽度
               height:60, //广告位高度

+ 1 - 0
src/layout/components/template/pages/list/sector.vue

@@ -47,6 +47,7 @@ export default {
             component_name:"",
             sort:1,
             componentData:{
+              ad_id:"",//广告位id
               text:"通栏广告", //广告位名称
               width:1200, //广告位宽度
               height:60, //广告位高度

+ 2 - 1
src/store/getters.js

@@ -12,6 +12,7 @@ const getters = {
   roles: state => state.user.roles,
   permission_routes: state => state.permission.routes,
   errorLogs: state => state.errorLog.logs,
-  SiteId: state => state.template.editWebsiteId
+  SiteId: state => state.template.editWebsiteId,
+  userurl: state => state.user.userurl
 }
 export default getters

+ 394 - 125
src/store/modules/template.js

@@ -1,8 +1,8 @@
-//cms中的接口 用于模板中的职能,导航池
-import {getSiteInfo,getSiteCategory,selectWebsiteDepartment,selectWebsiteArea,getWebsiteArticlesList,selectWebsiteArticleInfo,getWebsiteCategory} from '@/api/cms'
+//cms中的接口 获取网站基本信息,网站导航,网站底部导航,网站行政区划,行政职能
+import {getSiteInfo,getSiteCategory,getFooterCategoryList,selectWebsiteArea,selectWebsiteDepartment } from '@/api/cms'
 //自助建站的接口 用于添加基本信息
 import {getWebsiteintel,addWebsiteTemplateintel,getWebsiteTemplateintel,upWebsiteTemplateintel,getAllTemplateClass,getWebsiteTemplateList,addWebsiteTemplateclassintel,
-  getWebsiteTemplateclassintel} from '@/api/template'
+  getWebsiteTemplateclassintel,addWebsiteTemplate,getWebsiteTemplateInfo,getWebsiteTemplateData} from '@/api/template'
 
 import { Message } from 'element-ui'; //注意在这里引入是非常不符合规范的
 
@@ -10,11 +10,15 @@ import Vue from 'vue';  //导入Vue 因为我们要进行深层次的json修改
 //所以我们需要使用Vue的$set方法来强制视图更新,在vuex中没有this,这里我们需要通过引入vue来使用vue.$set
 
 //引入随机模板json
-import randomTemplateJson from '@/utils/templateJson/index/1.js';//首页
+//首页 风格1
+import randomIndex1 from '@/utils/templateJson/index/style1/1.js';
+//首页 风格2
+import randomIndex2 from '@/utils/templateJson/index/style1/2.js';
 
 const state = {
   //0.全局配置 start------------------------------------------------------------> 
   editWebsiteId: "",//当前编辑网站的id
+  editWebsiteClass:"",//当前编辑网站的风格
   stepStatus: true,//是否显示现在进行到哪一步:true=显示 false=不显示
   //0.全局配置 end------------------------------------------------------------>
   
@@ -23,12 +27,23 @@ const state = {
   menuType:1, //当前菜单显示板块还是组件 1=板块 2=组件 
   previewStatus:false,//是否预览
   gridKey:0,//使用gridKey来强制更新视图
+  loading:false,//是否显示加载中
+  ad_id:"",//生成储存的广告id
+  showPage:{ //哪些页面可以被展示
+    index:true,
+    class:false,
+    list:true,
+    article:true,
+    search:false,
+    aloneList:false,
+    aloneArticle:false
+  },
   pageData: { //自助建站拖拽板块的数据,注意,这里并不是提交到后台的数据
     index:[
       
     ],//首页
     class:[],//分类页
-    list:[],//列表页bang
+    list:[],//列表页
     article:[],//详情页
     search:[],//搜索页
     aloneList:[],//自定义列表页
@@ -50,7 +65,7 @@ const state = {
     market:[],//市区
     county:[]//县区
   },
-  departmentList:"",//职能部门
+  departmentList:[],//职能部门
   //2.站点数据 end------------------------------------------------------------>
 
   //3.画布构造 start------------------------------------------------------------>
@@ -85,11 +100,11 @@ const state = {
   webSiteData:{
     //1.base网站基本信息
     base:{
-      websiteId:1,//网站id
+      websiteId:"",//网站id
     },
     //2.style信息
     style:{
-      styleId:1,//风格id
+      styleId:"",//风格id
     },
     //3.板块信息 header,menu,footer 是页面自带的无需构建
     template:{  
@@ -103,6 +118,7 @@ const state = {
       aloneArticle:[],//自定义详情页
     }
   },
+  canSubmit:false,//当前数据是否可以被提交
   //4.构造的网站数据 end------------------------------------------------------------>
 
   //5.组件回显数据 start------------------------------------------------------------>
@@ -121,6 +137,10 @@ const mutations = {
   setEditWebsiteId(state,id){
     state.editWebsiteId = id;
   },
+  //设置网站的风格
+  setClassNumber(state,id){
+    state.editWebsiteClass = id;
+  },
   //展示步骤
   showStepStatus(state){
     state.stepStatus = true;
@@ -251,6 +271,20 @@ const mutations = {
     //pageStatus==7 自定义详情页
     if(state.pageStatus == 7){}
   },
+  //生成一个随机的广告id
+  getRandomAdid(state){
+    //网站id
+    const websiteId = state.editWebsiteId;
+    // 生成 3 个随机字母 (a-z)
+    const randomLettersOne = Math.random().toString(36).substring(2, 5);  // 生成随机字母并去除前面的 "0."
+    // 获取当前时间戳(毫秒级)
+    const timestamp = Date.now();
+    // 生成 5 个随机字母 (a-z)
+    const randomLettersTwo = Math.random().toString(36).substring(2, 7);  // 生成随机字母并去除前面的 "0."
+    // 拼接时间戳和随机字母生成唯一 ID
+    const ad_id = `${websiteId}${randomLettersOne}${timestamp}${randomLettersTwo}`;
+    state.ad_id = ad_id;
+  },
   //0.全局配置 start------------------------------------------------------------>
   //1.配置模块 start------------------------------------------------------------>
   //获得gridlayout对象
@@ -267,6 +301,7 @@ const mutations = {
         Message.error('最多只能添加10个模块!');
         return;
       }else{
+        console.log(data.jsonData)
         //判断是拖拽的还是点击添加进来的 click=点击
         if(data.source == "click"){
           console.log("通过点击添加一个板块");
@@ -279,19 +314,37 @@ const mutations = {
           console.log(data);
           //设置数据在构建json中的位置
           let dataSort = state.pageData.index.length;
-          //添加板块id  
-          state.pageData.index.push({
-            //i: state.pageData.index.length, //base 0.0.1 此方法会导致重复的id出现
-            i: id,
-            x: 0, 
-            y: maxY + 1, 
-            w: 12, 
-            h: data.h, 
-            type: data.type,
-            //sectorData:data.jsonData //base 0.0.1 此问题导致深层数据无法被视图渲染
-            content:data.jsonData,
-            dataSort:dataSort
-          });
+          //判断添加的是否为广告模块 如果是 添加一个ad_id
+          if(data.jsonData.componentList[0].component_type==3){
+            this.commit("template/getRandomAdid")
+            //添加板块id  
+            state.pageData.index.push({
+              //i: state.pageData.index.length, //base 0.0.1 此方法会导致重复的id出现
+              i: id,
+              x: 0, 
+              y: maxY + 1, 
+              w: 12, 
+              h: data.h, 
+              type: data.type,
+              adid: state.ad_id,
+              //sectorData:data.jsonData //base 0.0.1 此问题导致深层数据无法被视图渲染
+              content:data.jsonData,
+              dataSort:dataSort,
+            });
+          }else{
+            state.pageData.index.push({
+              //i: state.pageData.index.length, //base 0.0.1 此方法会导致重复的id出现
+              i: id,
+              x: 0, 
+              y: maxY + 1, 
+              w: 12, 
+              h: data.h, 
+              type: data.type,
+              //sectorData:data.jsonData //base 0.0.1 此问题导致深层数据无法被视图渲染
+              content:data.jsonData,
+              dataSort:dataSort,
+            });
+          }
           console.log("当前添加模块的dataSort为:" + dataSort);
           //当前的页面构建数据
           console.log(state.pageData.index);
@@ -310,19 +363,37 @@ const mutations = {
           console.log(data);
           //设置数据在构建json中的位置
           let dataSort = state.pageData.index.length;
-          //添加板块id  
-          state.pageData.index.push({
-            //i: state.pageData.index.length, //base 0.0.1 此方法会导致重复的id出现
-            i: id,
-            x: data.x, 
-            y: data.y, 
-            w: 12, 
-            h: data.h, 
-            type: data.type,
-            //sectorData:data.jsonData //base 0.0.1 此问题导致深层数据无法被视图渲染
-            content:data.jsonData,
-            dataSort:dataSort
-          });
+          //判断添加的是否为广告模块 如果是 添加一个ad_id
+          if(data.jsonData.componentList[0].component_type==3){
+            this.commit("template/getRandomAdid")
+            //添加板块id  
+            state.pageData.index.push({
+              //i: state.pageData.index.length, //base 0.0.1 此方法会导致重复的id出现
+              i: id,
+              x: 0, 
+              y: maxY + 1, 
+              w: 12, 
+              h: data.h, 
+              type: data.type,
+              adid: state.ad_id,
+              //sectorData:data.jsonData //base 0.0.1 此问题导致深层数据无法被视图渲染
+              content:data.jsonData,
+              dataSort:dataSort,
+            });
+          }else{
+            state.pageData.index.push({
+              //i: state.pageData.index.length, //base 0.0.1 此方法会导致重复的id出现
+              i: id,
+              x: 0, 
+              y: maxY + 1, 
+              w: 12, 
+              h: data.h, 
+              type: data.type,
+              //sectorData:data.jsonData //base 0.0.1 此问题导致深层数据无法被视图渲染
+              content:data.jsonData,
+              dataSort:dataSort,
+            });
+          }
           console.log("当前添加模块的dataSort为:" + dataSort);
           //当前的页面构建数据
           console.log(state.pageData.index);
@@ -357,19 +428,37 @@ const mutations = {
           console.log(data);
           //设置数据在构建json中的位置
           let dataSort = state.pageData.list.length;
-
-          //添加板块id  
-          state.pageData.list.push({
-            i: id,
-            x: 0, 
-            y: maxY + 1, 
-            w: 12, 
-            h: data.h, 
-            type: data.type,
-            content:data.jsonData,
-            dataSort:dataSort
-          });
-
+          //判断添加的是否为广告模块 如果是 添加一个ad_id
+          if(data.jsonData.componentList[0].component_type==3){
+            this.commit("template/getRandomAdid")
+            //添加板块id  
+            state.pageData.list.push({
+              //i: state.pageData.index.length, //base 0.0.1 此方法会导致重复的id出现
+              i: id,
+              x: 0, 
+              y: maxY + 1, 
+              w: 12, 
+              h: data.h, 
+              type: data.type,
+              adid: state.ad_id,
+              //sectorData:data.jsonData //base 0.0.1 此问题导致深层数据无法被视图渲染
+              content:data.jsonData,
+              dataSort:dataSort,
+            });
+          }else{
+            state.pageData.list.push({
+              //i: state.pageData.index.length, //base 0.0.1 此方法会导致重复的id出现
+              i: id,
+              x: 0, 
+              y: maxY + 1, 
+              w: 12, 
+              h: data.h, 
+              type: data.type,
+              //sectorData:data.jsonData //base 0.0.1 此问题导致深层数据无法被视图渲染
+              content:data.jsonData,
+              dataSort:dataSort,
+            });
+          }
         }
 
         //drag=拖拽
@@ -385,19 +474,37 @@ const mutations = {
           console.log(data);
           //设置数据在构建json中的位置
           let dataSort = state.pageData.list.length;
-          //添加板块id  
-          state.pageData.list.push({
-            //i: state.pageData.list.length, //base 0.0.1 此方法会导致重复的id出现
-            i: id,
-            x: data.x, 
-            y: data.y, 
-            w: 12, 
-            h: data.h, 
-            type: data.type,
-            //sectorData:data.jsonData //base 0.0.1 此问题导致深层数据无法被视图渲染
-            content:data.jsonData,
-            dataSort:dataSort
-          });
+          //判断添加的是否为广告模块 如果是 添加一个ad_id
+          if(data.jsonData.componentList[0].component_type==3){
+            this.commit("template/getRandomAdid")
+            //添加板块id  
+            state.pageData.list.push({
+              //i: state.pageData.index.length, //base 0.0.1 此方法会导致重复的id出现
+              i: id,
+              x: 0, 
+              y: maxY + 1, 
+              w: 12, 
+              h: data.h, 
+              type: data.type,
+              adid: state.ad_id,
+              //sectorData:data.jsonData //base 0.0.1 此问题导致深层数据无法被视图渲染
+              content:data.jsonData,
+              dataSort:dataSort,
+            });
+          }else{
+            state.pageData.list.push({
+              //i: state.pageData.index.length, //base 0.0.1 此方法会导致重复的id出现
+              i: id,
+              x: 0, 
+              y: maxY + 1, 
+              w: 12, 
+              h: data.h, 
+              type: data.type,
+              //sectorData:data.jsonData //base 0.0.1 此问题导致深层数据无法被视图渲染
+              content:data.jsonData,
+              dataSort:dataSort,
+            });
+          }
           console.log("当前添加模块的dataSort为:" + dataSort);
           //当前的页面构建数据
           console.log(state.pageData.list);
@@ -418,6 +525,14 @@ const mutations = {
         Message.error('最多只能添加10个模块!');
         return;
       }else{
+        //判断添加的是否为广告模块 如果是 添加一个ad_id
+        if(data.jsonData.componentList[0].component_type==3){
+          //生成一个随机的ad_id给广告模块
+          this.commit("template/getRandomAdid");
+          console.log("添加广告模块!id为:" + state.ad_id)
+          data.jsonData.componentList[0].componentData.ad_id = state.ad_id;
+        }
+        
         //判断是拖拽的还是点击添加进来的 click=点击
         if(data.source == "click"){
           console.log("通过点击添加一个板块");
@@ -430,19 +545,37 @@ const mutations = {
           console.log(data);
           //设置数据在构建json中的位置
           let dataSort = state.pageData.article.length;
-
-          //添加板块id  
-          state.pageData.article.push({
-            i: id,
-            x: 0, 
-            y: maxY + 1, 
-            w: 12, 
-            h: data.h, 
-            type: data.type,
-            content:data.jsonData,
-            dataSort:dataSort
-          });
-
+          //判断添加的是否为广告模块 如果是 添加一个ad_id
+          if(data.jsonData.componentList[0].component_type==3){
+            this.commit("template/getRandomAdid")
+            //添加板块id  
+            state.pageData.article.push({
+              //i: state.pageData.index.length, //base 0.0.1 此方法会导致重复的id出现
+              i: id,
+              x: 0, 
+              y: maxY + 1, 
+              w: 12, 
+              h: data.h, 
+              type: data.type,
+              adid: state.ad_id,
+              //sectorData:data.jsonData //base 0.0.1 此问题导致深层数据无法被视图渲染
+              content:data.jsonData,
+              dataSort:dataSort,
+            });
+          }else{
+            state.pageData.article.push({
+              //i: state.pageData.index.length, //base 0.0.1 此方法会导致重复的id出现
+              i: id,
+              x: 0, 
+              y: maxY + 1, 
+              w: 12, 
+              h: data.h, 
+              type: data.type,
+              //sectorData:data.jsonData //base 0.0.1 此问题导致深层数据无法被视图渲染
+              content:data.jsonData,
+              dataSort:dataSort,
+            });
+          }
         }
 
         //drag=拖拽
@@ -458,19 +591,37 @@ const mutations = {
           console.log(data);
           //设置数据在构建json中的位置
           let dataSort = state.pageData.article.length;
-          //添加板块id  
-          state.pageData.article.push({
-            //i: state.pageData.article.length, //base 0.0.1 此方法会导致重复的id出现
-            i: id,
-            x: data.x, 
-            y: data.y, 
-            w: 12, 
-            h: data.h, 
-            type: data.type,
-            //sectorData:data.jsonData //base 0.0.1 此问题导致深层数据无法被视图渲染
-            content:data.jsonData,
-            dataSort:dataSort
-          });
+          //判断添加的是否为广告模块 如果是 添加一个ad_id
+          if(data.jsonData.componentList[0].component_type==3){
+            this.commit("template/getRandomAdid")
+            //添加板块id  
+            state.pageData.article.push({
+              //i: state.pageData.index.length, //base 0.0.1 此方法会导致重复的id出现
+              i: id,
+              x: 0, 
+              y: maxY + 1, 
+              w: 12, 
+              h: data.h, 
+              type: data.type,
+              adid: state.ad_id,
+              //sectorData:data.jsonData //base 0.0.1 此问题导致深层数据无法被视图渲染
+              content:data.jsonData,
+              dataSort:dataSort,
+            });
+          }else{
+            state.pageData.article.push({
+              //i: state.pageData.index.length, //base 0.0.1 此方法会导致重复的id出现
+              i: id,
+              x: 0, 
+              y: maxY + 1, 
+              w: 12, 
+              h: data.h, 
+              type: data.type,
+              //sectorData:data.jsonData //base 0.0.1 此问题导致深层数据无法被视图渲染
+              content:data.jsonData,
+              dataSort:dataSort,
+            });
+          }
           console.log("当前添加模块的dataSort为:" + dataSort);
           //当前的页面构建数据
           console.log(state.pageData.article);
@@ -1167,6 +1318,12 @@ const mutations = {
   formatTemplateInfo(state, data) {
     // 深拷贝数据,避免直接修改原数据
     let clonedData = JSON.parse(JSON.stringify(data));
+    // 把ad_id传进去
+    for(let item of clonedData.data){
+      if(item.adid){
+        item.content.componentList[0].componentData.ad_id = item.adid;
+      }
+    }
     // 按照 clonedData.data.y 的大小排序
     clonedData.data.sort((a, b) => a.y - b.y);
     //console.log(clonedData, clonedData);
@@ -1204,24 +1361,48 @@ const mutations = {
     this.commit('template/formatTemplateInfo',{data:state.pageData.list,type:"list"});
     //格式化article的信息
     this.commit('template/formatTemplateInfo',{data:state.pageData.article,type:"article"});
-    console.log(state.webSiteData);
+    // console.log(state.webSiteData);
+    // console.log(state.editWebsiteId)
+    //给与网站id和模板风格id
+    state.webSiteData.base.websiteId = state.editWebsiteId;
+    state.webSiteData.style.styleId = state.editWebsiteClass;
   },
   //随机生成模板
   randomTemplate(state){
-    console.log("随机生成模板");
-    const randomIndex = Math.floor(Math.random() * 3); // Generates a random number between 1 and 2
+    state.loading = true;
+    const randomIndex = Math.floor(Math.random() * 2); // Generates a random number between 1 and 2
     console.log(`随机生成的数字是: ${randomIndex}`);
-
-    Message.warning("该功能研发中");
+    //console.log(randomIndex1)
+    //console.log(randomIndex2)
+    //Message.warning("该功能研发中");
 
     // pageStatus == 1 首页
-    if (state.pageStatus == 1) {}
+    if (state.pageStatus == 1) {
+      // 先清空里面的内容
+      Vue.set(state.pageData, 'index', []);
+      // 深拷贝 randomIndex1 和 randomIndex2
+      const newData1 = JSON.parse(JSON.stringify(randomIndex1));
+      const newData2 = JSON.parse(JSON.stringify(randomIndex2));
+      if (randomIndex == 0) {
+        Vue.set(state.pageData, 'index', newData1);
+      }
+      if (randomIndex == 1) {
+        Vue.set(state.pageData, 'index', newData2);
+      }
+      state.loading = false;
+    }
     // pageStatus == 2 分类页
     if (state.pageStatus == 2) {}
     // pageStatus == 3 列表页
-    if (state.pageStatus == 3) {}
+    if (state.pageStatus == 3) {
+      Message.warning("暂无模板可用!");
+      state.loading = false;
+    }
     // pageStatus == 4 详情页
-    if (state.pageStatus == 4) {}
+    if (state.pageStatus == 4) {
+      Message.warning("暂无模板可用!");
+      state.loading = false;
+    }
     // pageStatus == 5 搜索页
     if (state.pageStatus == 5) {}
     // pageStatus == 6 自定义列表页
@@ -1229,6 +1410,63 @@ const mutations = {
     // pageStatus == 7 自定义详情页
     if (state.pageStatus == 7) {}
   },
+  //提交数据之前执行完整度检查
+  IntegrityCheck(state){
+    //先设置为true看能否通过判断
+    state.canSubmit = true;
+    //先判断当前有哪几个板块可用
+    //state.canSubmit == false 不可以提交
+    //state.canSubmit == true 可以提交
+    //首页
+    if(state.showPage.index == true){
+      if(state.template.index == []){
+        state.canSubmit = false;
+      }
+    }
+    //分类页
+    if(state.showPage.class == true){
+      if(state.template.class == []){
+        state.canSubmit = false;
+      }
+    }
+    //列表页
+    if(state.showPage.list == true){
+      if(state.template.list == []){
+        state.canSubmit = false;
+      }
+    }
+    //详情页
+    if(state.showPage.article == true){
+      if(state.template.article == []){
+        state.canSubmit = false;
+      }
+    }
+    //搜索页
+    if(state.showPage.search == true){
+      if(state.template.search == []){
+        state.canSubmit = false;
+      }
+    }
+    //自定义列表页
+    if(state.showPage.aloneList == true){
+      if(state.template.aloneList == []){
+        state.canSubmit = false;
+      }
+    }
+    //自定义详情页
+    if(state.showPage.aloneArticle == true){
+      if(state.template.aloneArticle == []){
+        state.canSubmit = false;
+      }
+    }
+
+    //最后判断一下是否可以提交
+    if(state.canSubmit == ture){
+
+    }else{
+      Message.error('您还有未构建的页面,请检查!');
+    }
+  },
   //1.配置模块 end------------------------------------------------------------>
 
   //2.获取站点信息 start------------------------------------------------------------>
@@ -1255,6 +1493,17 @@ const mutations = {
       state.area.county = data.region;
     }
   },
+  //设置职能
+  setDepartment(state,data){
+    for(let item of data){
+      let options = {
+        value: item.id,
+        label: item.name
+      }
+      state.departmentList.push(options)
+    }
+    console.log(state.departmentList)
+  },
   //获取全部导航
   setWebsiteCategory(state,data){
     let arrayData = []
@@ -1273,7 +1522,7 @@ const mutations = {
 
 const actions = {
   //1.显示画板组件数据 start------------------------------------------------------------>
-  //获取网站基本信息
+  //1.1 获取网站基本信息
   getSiteInfo({commit},data){
     return new Promise((resolve, reject) => {
       getSiteInfo(data).then(response => {
@@ -1284,7 +1533,7 @@ const actions = {
       })
     })
   },
-  //获取网站导航池
+  //1.2 获取网站导航池
   getSiteCategory({commit},data){
     return new Promise((resolve, reject) => {
       getSiteCategory(data).then(response => {
@@ -1295,42 +1544,32 @@ const actions = {
       })
     })
   },
-  //设置行政区划
-  selectWebsiteArea({commit},data){
+  //1.3 获取网站底部导航
+  getFooterCategoryList({commit},data){
     return new Promise((resolve, reject) => {
-      selectWebsiteArea(data).then(response => {
-        commit('setArea', response.data);
+      getFooterCategoryList(data).then(response => {
         resolve(response)
       }).catch(error => {
         reject(error)
       })
     })
   },
-  //获取新闻列表
-  getWebsiteArticlesList({commit},data){
-    return new Promise((resolve, reject) => {
-      getWebsiteArticlesList(data).then(response => {
-        resolve(response)
-      }).catch(error => {
-        reject(error)
-      })
-    })
-  },
-  //获取新闻详情
-  selectWebsiteArticleInfo({commit},data){
+  //1.4 获取行政区划
+  selectWebsiteArea({commit},data){
     return new Promise((resolve, reject) => {
-      selectWebsiteArticleInfo(data).then(response => {
+      selectWebsiteArea(data).then(response => {
+        commit('setArea', response.data);
         resolve(response)
       }).catch(error => {
         reject(error)
       })
     })
   },
-  //获取全部导航池
-  getWebsiteCategory({commit},data){
+  //1.5 获取所有职能部门
+  selectWebsiteDepartment({commit},data){
     return new Promise((resolve, reject) => {
-      getWebsiteCategory(data).then(response => {
-        commit('setWebsiteCategory', response.data);
+      selectWebsiteDepartment(data).then(response => {
+        commit('setDepartment', response.data);
         resolve(response)
       }).catch(error => {
         reject(error)
@@ -1340,7 +1579,7 @@ const actions = {
   //1.显示画板组件数据 end------------------------------------------------------------>
   
   //2.构建网站json start------------------------------------------------------------>
-  //搜索网站
+  //2.1 搜索网站
   getWebsiteintel({commit},data){
     return new Promise((resolve, reject) => {
       getWebsiteintel(data).then(response => {
@@ -1350,7 +1589,7 @@ const actions = {
       })
     })
   },
-  //添加网站基本信息 如果只传入website_id,则验证是否已经关联导航池
+  //2.2 添加网站基本信息 如果只传入website_id,则验证是否已经关联导航池
   addWebsiteTemplateintel({commit},data){
     return new Promise((resolve, reject) => {
       addWebsiteTemplateintel(data).then(response => {
@@ -1360,7 +1599,7 @@ const actions = {
       })
     })
   },
-  //获取网站基本信息
+  //2.3 获取网站基本信息
   getWebsiteTemplateintel({commit},data){
     return new Promise((resolve, reject) => {
       getWebsiteTemplateintel(data).then(response => {
@@ -1370,7 +1609,7 @@ const actions = {
       })
     })
   },
-  //修改网站基本信息
+  //2.4 修改网站基本信息
   upWebsiteTemplateintel({commit},data){
     return new Promise((resolve, reject) => {
       upWebsiteTemplateintel(data).then(response => {
@@ -1380,7 +1619,7 @@ const actions = {
       })
     })
   },
-  //获取所有风格
+  //2.5 获取所有风格
   getAllTemplateClass({commit},data){
     return new Promise((resolve, reject) => {
       getAllTemplateClass(data).then(response => {
@@ -1390,7 +1629,7 @@ const actions = {
       })
     })
   },
-  //搜索并获取所有网站模板
+  //2.6 搜索并获取所有网站风格
   getWebsiteTemplateList({commit},data){
     return new Promise((resolve, reject) => {
       getWebsiteTemplateList(data).then(response => {
@@ -1400,7 +1639,7 @@ const actions = {
       })
     })
   },
-  //保存用户选择的模板
+  //2.7 保存用户选择的风格
   addWebsiteTemplateclassintel({commit},data){
     return new Promise((resolve, reject) => {
       addWebsiteTemplateclassintel(data).then(response => {
@@ -1410,7 +1649,7 @@ const actions = {
       })
     })
   },
-  //获取用户选择的模板
+  //2.8 获取用户选择的风格
   getWebsiteTemplateclassintel({commit},data){
     return new Promise((resolve, reject) => {
       getWebsiteTemplateclassintel(data).then(response => {
@@ -1420,6 +1659,36 @@ const actions = {
       })
     })
   },
+  //2.9 保存模板
+  addWebsiteTemplate({commit},data){
+    return new Promise((resolve, reject) => {
+      addWebsiteTemplate(data).then(response => {
+        resolve(response)
+      }).catch(error => {
+        reject(error)
+      })
+    })
+  },
+  //2.10 获取模板配置
+  getWebsiteTemplateInfo({commit},data){
+    return new Promise((resolve, reject) => {
+      getWebsiteTemplateInfo(data).then(response => {
+        resolve(response)
+      }).catch(error => {
+        reject(error)
+      })
+    })
+  },
+  //2.11 预览模板信息
+  getWebsiteTemplateData({commit},data){
+    return new Promise((resolve, reject) => {
+      getWebsiteTemplateData(data).then(response => {
+        resolve(response)
+      }).catch(error => {
+        reject(error)
+      })
+    })
+  },
   //2.构建网站json end------------------------------------------------------------>
 }
 

+ 27 - 8
src/store/modules/user.js

@@ -1,5 +1,5 @@
 import { login, logout, getInfo, getMenu ,getImgCode,updateUserAvatarNickname } from '@/api/user'
-import { getToken, setToken, removeToken } from '@/utils/auth'
+import { getToken, setToken, setUserUrl, removeToken ,removUserUrl,getUserUrl } from '@/utils/auth'
 import router, { resetRouter } from '@/router'
 
 const state = {
@@ -9,13 +9,17 @@ const state = {
   introduction: '',
   roles: [],
   userid:'',
-  role_id:''
+  role_id:'',
+  userurl: getUserUrl(),
 }
 
 const mutations = {
   SET_TOKEN: (state, token) => {
     state.token = token
   },
+  SET_URL: (state, url) => {
+    state.userurl = url
+  },
   SET_INTRODUCTION: (state, introduction) => {
     state.introduction = introduction
   },
@@ -36,10 +40,17 @@ const mutations = {
   },
   // 退出登录逻辑直接放在 mutations 中
   LOGOUT(state) {
-    state.token = ''
-    state.roles = []
-    removeToken()
-    resetRouter()
+    state.token = '';
+    state.userurl = '';
+    state.roles = [];
+    state.userid = '';
+    state.role_id = '';
+    state.name = '';
+    state.avatar = '';
+    state.introduction = '';
+    removeToken();
+    removUserUrl();
+    resetRouter();
   }
 }
 
@@ -49,9 +60,17 @@ const actions = {
     const { username, password, type, captcha } = userInfo
     return new Promise((resolve, reject) => {
       login({ username: username.trim(), password: password, type: type, captcha: captcha.trim() }).then(response => {
-        const { data } = response
-        commit('SET_TOKEN', data.token)
+        const { data } = response;
+        //设置token
         setToken(data.token,data.exp)
+        commit('SET_TOKEN',data.token)
+        //如果用户登录携带了userurl 就存起来
+        if(userInfo.userurl){
+          //设置backurl
+          setUserUrl(userInfo.userurl,data.exp)
+          commit('SET_URL',userInfo.userurl)
+        }
+      
         resolve(response)
       }).catch(error => {
         reject(error)

+ 14 - 0
src/utils/auth.js

@@ -1,6 +1,7 @@
 import Cookies from 'js-cookie'
 
 const TokenKey = 'Admin-Token'
+const useUrl = 'Back-Url'
 
 export function getToken() {
   return Cookies.get(TokenKey)
@@ -11,10 +12,23 @@ export function setToken(token,exp) {
   return Cookies.set(TokenKey, token, { expires: expdays })
 }
 
+export function setUserUrl(url,exp) {
+  const expdays = convertSecondsToDays(exp)
+  return Cookies.set(useUrl, url, { expires: expdays })
+}
+
+export function getUserUrl() {
+  return Cookies.get(useUrl)
+}
+
 export function removeToken() {
   return Cookies.remove(TokenKey)
 }
 
+export function removUserUrl() {
+  return Cookies.remove(useUrl)
+}
+
 //把秒转换成天
 function convertSecondsToDays(seconds) {
   return seconds/(60*60*24); //1天=60秒*60分钟*24小时

+ 7 - 3
src/utils/request.js

@@ -1,7 +1,7 @@
 import axios from 'axios'
 import { MessageBox, Message } from 'element-ui'
 import store from '@/store'
-import { getToken } from '@/utils/auth'
+import { getToken,getUserUrl } from '@/utils/auth'
 import URL from '@/utils/baseUrl';
 
 // create an axios instance
@@ -23,9 +23,13 @@ service.interceptors.request.use(
       // please modify it according to the actual situation
       config.headers['token'] = getToken()
     }
-    if (store.getters.SiteId) {
-      config.headers['SiteId'] = store.getters.SiteId
+    if(store.getters.userurl){
+      //如果用户登录携带了userurl 就存起来
+      config.headers['userurl'] = getUserUrl()
     }
+    // if (store.getters.SiteId) {
+    //   config.headers['SiteId'] = store.getters.SiteId
+    // }
     return config
   },
   error => {

+ 0 - 994
src/utils/templateJson/index/1.js

@@ -1,994 +0,0 @@
-const json = [
-  //1.正常布局
-  [
-    {
-      "i": 0,
-      "x": 0,
-      "y": 0,
-      "w": 12,
-      "h": 33,
-      "type": "bannerSector",
-      "content": {
-        "sectorName": "bannerSector",
-        "componentList": [
-          {
-            "component_type": 1,
-            "component_style": 1,
-            "component_name": "mainTitle",
-            "sort": 1,
-            "componentData": {
-              "category_id": [],
-              "page": 1,
-              "pageSize": 1,
-              "listType": [
-                "title"
-              ]
-            }
-          },
-          {
-            "component_type": 1,
-            "component_style": 1,
-            "component_name": "banner",
-            "sort": 2,
-            "componentData": {
-              "category_id": [],
-              "page": 1,
-              "pageSize": 3,
-              "listType": [
-                "imgUrl"
-              ]
-            }
-          },
-          {
-            "component_type": 1,
-            "component_style": 1,
-            "component_name": "tabsNews",
-            "sort": 3,
-            "componentData": {
-              "category_id": [],
-              "page": 1,
-              "pageSize": 5,
-              "listType": [
-                "imgUrl",
-                "created_time"
-              ]
-            }
-          }
-        ],
-        "sort": 1
-      },
-      "moved": false
-    },
-    {
-      "i": 1,
-      "x": 0,
-      "y": 33,
-      "w": 12,
-      "h": 8,
-      "type": "imgTitleSector",
-      "content": {
-        "sectorName": "imgTitleSector",
-        "componentList": [
-          {
-            "component_type": 3,
-            "component_style": 1,
-            "component_name": "",
-            "sort": 1,
-            "componentData": []
-          }
-        ],
-        "sort": 8
-      },
-      "moved": false
-    },
-    {
-      "i": 2,
-      "x": 0,
-      "y": 41,
-      "w": 12,
-      "h": 49,
-      "type": "manyPictureSector",
-      "content": {
-        "sectorName": "manyPictureSector",
-        "componentList": [
-          {
-            "component_type": 7,
-            "component_style": 1,
-            "component_name": "styleTitle",
-            "sort": 1,
-            "componentData": {
-              "text": "板块标题"
-            }
-          },
-          {
-            "component_type": 6,
-            "component_style": 1,
-            "component_name": "fivePicture",
-            "sort": 2,
-            "componentData": {}
-          },
-          {
-            "component_type": 1,
-            "component_style": 1,
-            "component_name": "tabsNews",
-            "sort": 3,
-            "componentData": {
-              "category_id": [],
-              "page": 1,
-              "pageSize": 3,
-              "listType": [
-                "title",
-                "created_time"
-              ]
-            }
-          },
-          {
-            "component_type": 1,
-            "component_style": 1,
-            "component_name": "tabsNews",
-            "sort": 4,
-            "componentData": {
-              "category_id": [],
-              "page": 1,
-              "pageSize": 3,
-              "listType": [
-                "title",
-                "created_time"
-              ]
-            }
-          }
-        ],
-        "sort": 3
-      },
-      "moved": false
-    },
-    {
-      "i": 3,
-      "x": 0,
-      "y": 90,
-      "w": 12,
-      "h": 44,
-      "type": "commentSector",
-      "content": {
-        "sectorName": "commentSector",
-        "componentList": [
-          {
-            "component_type": 7,
-            "component_style": 1,
-            "component_name": "styleTitle",
-            "sort": 1,
-            "componentData": {
-              "text": "板块标题"
-            }
-          },
-          {
-            "component_type": 1,
-            "component_style": 2,
-            "component_name": "tabsCalendarNews",
-            "sort": 2,
-            "componentData": {
-              "category_id": [],
-              "page": 1,
-              "pageSize": 6,
-              "listType": [
-                "title",
-                "created_time",
-                "introduce"
-              ]
-            }
-          },
-          {
-            "component_type": 8,
-            "component_style": 1,
-            "component_name": "calendar",
-            "sort": 3,
-            "componentData": {}
-          }
-        ],
-        "sort": 4
-      },
-      "moved": false
-    },
-    {
-      "i": 4,
-      "x": 0,
-      "y": 134,
-      "w": 12,
-      "h": 8,
-      "type": "imgTitleSector",
-      "content": {
-        "sectorName": "imgTitleSector",
-        "componentList": [
-          {
-            "component_type": 3,
-            "component_style": 2,
-            "component_name": "",
-            "sort": 1,
-            "componentData": []
-          }
-        ],
-        "sort": 5
-      },
-      "moved": false
-    },
-    {
-      "i": 5,
-      "x": 0,
-      "y": 142,
-      "w": 12,
-      "h": 33,
-      "type": "listSector",
-      "content": {
-        "sectorName": "listSector",
-        "componentList": [
-          {
-            "component_type": 7,
-            "component_style": 1,
-            "component_name": "styleTitle",
-            "sort": 1,
-            "componentData": {
-              "text": "板块标题"
-            }
-          },
-          {
-            "component_type": 1,
-            "component_style": 1,
-            "component_name": "listNews",
-            "sort": 2,
-            "componentData": {
-              "category_id": [],
-              "page": 1,
-              "pageSize": 5,
-              "listType": [
-                "title",
-                "created_time"
-              ]
-            }
-          },
-          {
-            "component_type": 1,
-            "component_style": 1,
-            "component_name": "listNews",
-            "sort": 3,
-            "componentData": {
-              "category_id": [],
-              "page": 1,
-              "pageSize": 5,
-              "listType": [
-                "title",
-                "created_time"
-              ]
-            }
-          }
-        ],
-        "sort": 6
-      },
-      "moved": false
-    },
-    {
-      "i": 6,
-      "x": 0,
-      "y": 175,
-      "w": 12,
-      "h": 32,
-      "type": "onlyImgSector",
-      "content": {
-        "sectorName": "onlyImgSector",
-        "componentList": [
-          {
-            "component_type": 1,
-            "component_style": 1,
-            "component_name": "",
-            "sort": 1,
-            "componentData": {
-              "category_id": [],
-              "page": 1,
-              "pageSize": 7,
-              "listType": [
-                "title",
-                "imgUrl"
-              ]
-            }
-          }
-        ],
-        "sort": 7
-      },
-      "moved": false
-    },
-    {
-      "i": 7,
-      "x": 0,
-      "y": 207,
-      "w": 12,
-      "h": 8,
-      "type": "imgTitleSector",
-      "content": {
-        "sectorName": "imgTitleSector",
-        "componentList": [
-          {
-            "component_type": 3,
-            "component_style": 1,
-            "component_name": "",
-            "sort": 1,
-            "componentData": []
-          }
-        ],
-        "sort": 8
-      },
-      "moved": false
-    },
-    {
-      "i": 8,
-      "x": 0,
-      "y": 215,
-      "w": 12,
-      "h": 20,
-      "type": "friendShipLinkSector",
-      "content": {
-        "sectorName": "friendShipLinkSector",
-        "componentList": [
-          {
-            "component_type": 7,
-            "component_style": 1,
-            "component_name": "styleTitle",
-            "sort": 1,
-            "componentData": {
-              "text": "板块标题"
-            }
-          },
-          {
-            "component_type": 4,
-            "component_style": 1,
-            "component_name": "",
-            "sort": 1,
-            "componentData": {}
-          }
-        ],
-        "sort": 9
-      },
-      "moved": false
-    }
-  ],
-  //2.绿色布局
-  [
-    {
-      "i": 2,
-      "x": 0,
-      "y": 0,
-      "w": 12,
-      "h": 49,
-      "type": "manyPictureSector",
-      "content": {
-        "sectorName": "manyPictureSector",
-        "componentList": [
-          {
-            "component_type": 7,
-            "component_style": 1,
-            "component_name": "styleTitle",
-            "sort": 1,
-            "componentData": {
-              "text": "板块标题"
-            }
-          },
-          {
-            "component_type": 6,
-            "component_style": 1,
-            "component_name": "fivePicture",
-            "sort": 2,
-            "componentData": {}
-          },
-          {
-            "component_type": 1,
-            "component_style": 1,
-            "component_name": "tabsNews",
-            "sort": 3,
-            "componentData": {
-              "category_id": [],
-              "page": 1,
-              "pageSize": 3,
-              "listType": [
-                "title",
-                "created_time"
-              ]
-            }
-          },
-          {
-            "component_type": 1,
-            "component_style": 1,
-            "component_name": "tabsNews",
-            "sort": 4,
-            "componentData": {
-              "category_id": [],
-              "page": 1,
-              "pageSize": 3,
-              "listType": [
-                "title",
-                "created_time"
-              ]
-            }
-          }
-        ],
-        "sort": 1
-      },
-      "moved": false
-    },
-    {
-      "i": 0,
-      "x": 0,
-      "y": 49,
-      "w": 12,
-      "h": 33,
-      "type": "bannerSector",
-      "content": {
-        "sectorName": "bannerSector",
-        "componentList": [
-          {
-            "component_type": 1,
-            "component_style": 2,
-            "component_name": "mainTitle",
-            "sort": 1,
-            "componentData": {
-              "category_id": [],
-              "page": 1,
-              "pageSize": 1,
-              "listType": [
-                "title"
-              ]
-            }
-          },
-          {
-            "component_type": 1,
-            "component_style": 1,
-            "component_name": "banner",
-            "sort": 2,
-            "componentData": {
-              "category_id": [],
-              "page": 1,
-              "pageSize": 3,
-              "listType": [
-                "imgUrl"
-              ]
-            }
-          },
-          {
-            "component_type": 1,
-            "component_style": 1,
-            "component_name": "tabsNews",
-            "sort": 3,
-            "componentData": {
-              "category_id": [],
-              "page": 1,
-              "pageSize": 5,
-              "listType": [
-                "imgUrl",
-                "created_time"
-              ]
-            }
-          }
-        ],
-        "sort": 2
-      },
-      "moved": false
-    },
-    {
-      "i": 1,
-      "x": 0,
-      "y": 82,
-      "w": 12,
-      "h": 8,
-      "type": "imgTitleSector",
-      "content": {
-        "sectorName": "imgTitleSector",
-        "componentList": [
-          {
-            "component_type": 3,
-            "component_style": 3,
-            "component_name": "",
-            "sort": 1,
-            "componentData": []
-          }
-        ],
-        "sort": 3
-      },
-      "moved": false
-    },
-    {
-      "i": 3,
-      "x": 0,
-      "y": 90,
-      "w": 12,
-      "h": 44,
-      "type": "commentSector",
-      "content": {
-        "sectorName": "commentSector",
-        "componentList": [
-          {
-            "component_type": 7,
-            "component_style": 1,
-            "component_name": "styleTitle",
-            "sort": 1,
-            "componentData": {
-              "text": "板块标题"
-            }
-          },
-          {
-            "component_type": 1,
-            "component_style": 2,
-            "component_name": "tabsCalendarNews",
-            "sort": 2,
-            "componentData": {
-              "category_id": [],
-              "page": 1,
-              "pageSize": 6,
-              "listType": [
-                "title",
-                "created_time",
-                "introduce"
-              ]
-            }
-          },
-          {
-            "component_type": 8,
-            "component_style": 1,
-            "component_name": "calendar",
-            "sort": 3,
-            "componentData": {}
-          }
-        ],
-        "sort": 4
-      },
-      "moved": false
-    },
-    {
-      "i": 4,
-      "x": 0,
-      "y": 134,
-      "w": 12,
-      "h": 8,
-      "type": "imgTitleSector",
-      "content": {
-        "sectorName": "imgTitleSector",
-        "componentList": [
-          {
-            "component_type": 3,
-            "component_style": 4,
-            "component_name": "",
-            "sort": 1,
-            "componentData": []
-          }
-        ],
-        "sort": 5
-      },
-      "moved": false
-    },
-    {
-      "i": 6,
-      "x": 0,
-      "y": 142,
-      "w": 12,
-      "h": 32,
-      "type": "onlyImgSector",
-      "content": {
-        "sectorName": "onlyImgSector",
-        "componentList": [
-          {
-            "component_type": 1,
-            "component_style": 1,
-            "component_name": "",
-            "sort": 1,
-            "componentData": {
-              "category_id": [],
-              "page": 1,
-              "pageSize": 7,
-              "listType": [
-                "title",
-                "imgUrl"
-              ]
-            }
-          }
-        ],
-        "sort": 6
-      },
-      "moved": false
-    },
-    {
-      "i": 5,
-      "x": 0,
-      "y": 174,
-      "w": 12,
-      "h": 33,
-      "type": "listSector",
-      "content": {
-        "sectorName": "listSector",
-        "componentList": [
-          {
-            "component_type": 7,
-            "component_style": 1,
-            "component_name": "styleTitle",
-            "sort": 1,
-            "componentData": {
-              "text": "板块标题"
-            }
-          },
-          {
-            "component_type": 1,
-            "component_style": 1,
-            "component_name": "listNews",
-            "sort": 2,
-            "componentData": {
-              "category_id": [],
-              "page": 1,
-              "pageSize": 5,
-              "listType": [
-                "title",
-                "created_time"
-              ]
-            }
-          },
-          {
-            "component_type": 1,
-            "component_style": 1,
-            "component_name": "listNews",
-            "sort": 3,
-            "componentData": {
-              "category_id": [],
-              "page": 1,
-              "pageSize": 5,
-              "listType": [
-                "title",
-                "created_time"
-              ]
-            }
-          }
-        ],
-        "sort": 7
-      },
-      "moved": false
-    },
-    {
-      "i": 7,
-      "x": 0,
-      "y": 207,
-      "w": 12,
-      "h": 8,
-      "type": "imgTitleSector",
-      "content": {
-        "sectorName": "imgTitleSector",
-        "componentList": [
-          {
-            "component_type": 3,
-            "component_style": 3,
-            "component_name": "",
-            "sort": 1,
-            "componentData": []
-          }
-        ],
-        "sort": 8
-      },
-      "moved": false
-    },
-    {
-      "i": 8,
-      "x": 0,
-      "y": 215,
-      "w": 12,
-      "h": 20,
-      "type": "friendShipLinkSector",
-      "content": {
-        "sectorName": "friendShipLinkSector",
-        "componentList": [
-          {
-            "component_type": 7,
-            "component_style": 1,
-            "component_name": "styleTitle",
-            "sort": 1,
-            "componentData": {
-              "text": "板块标题"
-            }
-          },
-          {
-            "component_type": 4,
-            "component_style": 1,
-            "component_name": "",
-            "sort": 1,
-            "componentData": {}
-          }
-        ],
-        "sort": 9
-      },
-      "moved": false
-    }
-  ],
-  //3.广告放到顶部
-  [
-    {
-      "i": 1,
-      "x": 0,
-      "y": 0,
-      "w": 12,
-      "h": 8,
-      "type": "imgTitleSector",
-      "content": {
-        "sectorName": "imgTitleSector",
-        "componentList": [
-          {
-            "component_type": 3,
-            "component_style": 3,
-            "component_name": "",
-            "sort": 1,
-            "componentData": []
-          }
-        ],
-        "sort": 1
-      },
-      "moved": false
-    },
-    {
-      "i": 0,
-      "x": 0,
-      "y": 8,
-      "w": 12,
-      "h": 33,
-      "type": "bannerSector",
-      "content": {
-        "sectorName": "bannerSector",
-        "componentList": [
-          {
-            "component_type": 1,
-            "component_style": 2,
-            "component_name": "mainTitle",
-            "sort": 1,
-            "componentData": {
-              "category_id": [],
-              "page": 1,
-              "pageSize": 1,
-              "listType": [
-                "title"
-              ]
-            }
-          },
-          {
-            "component_type": 1,
-            "component_style": 1,
-            "component_name": "banner",
-            "sort": 2,
-            "componentData": {
-              "category_id": [],
-              "page": 1,
-              "pageSize": 3,
-              "listType": [
-                "imgUrl"
-              ]
-            }
-          },
-          {
-            "component_type": 1,
-            "component_style": 1,
-            "component_name": "tabsNews",
-            "sort": 3,
-            "componentData": {
-              "category_id": [],
-              "page": 1,
-              "pageSize": 5,
-              "listType": [
-                "imgUrl",
-                "created_time"
-              ]
-            }
-          }
-        ],
-        "sort": 2
-      },
-      "moved": false
-    },
-    {
-      "i": 6,
-      "x": 0,
-      "y": 41,
-      "w": 12,
-      "h": 32,
-      "type": "onlyImgSector",
-      "content": {
-        "sectorName": "onlyImgSector",
-        "componentList": [
-          {
-            "component_type": 1,
-            "component_style": 4,
-            "component_name": "",
-            "sort": 1,
-            "componentData": {
-              "category_id": [],
-              "page": 1,
-              "pageSize": 7,
-              "listType": [
-                "title",
-                "imgUrl"
-              ]
-            }
-          }
-        ],
-        "sort": 3
-      },
-      "moved": false
-    },
-    {
-      "i": 4,
-      "x": 0,
-      "y": 73,
-      "w": 12,
-      "h": 8,
-      "type": "imgTitleSector",
-      "content": {
-        "sectorName": "imgTitleSector",
-        "componentList": [
-          {
-            "component_type": 3,
-            "component_style": 4,
-            "component_name": "",
-            "sort": 1,
-            "componentData": []
-          }
-        ],
-        "sort": 4
-      },
-      "moved": false
-    },
-    {
-      "i": 3,
-      "x": 0,
-      "y": 81,
-      "w": 12,
-      "h": 44,
-      "type": "commentSector",
-      "content": {
-        "sectorName": "commentSector",
-        "componentList": [
-          {
-            "component_type": 7,
-            "component_style": 1,
-            "component_name": "styleTitle",
-            "sort": 1,
-            "componentData": {
-              "text": "板块标题"
-            }
-          },
-          {
-            "component_type": 1,
-            "component_style": 2,
-            "component_name": "tabsCalendarNews",
-            "sort": 2,
-            "componentData": {
-              "category_id": [],
-              "page": 1,
-              "pageSize": 6,
-              "listType": [
-                "title",
-                "created_time",
-                "introduce"
-              ]
-            }
-          },
-          {
-            "component_type": 8,
-            "component_style": 1,
-            "component_name": "calendar",
-            "sort": 3,
-            "componentData": {}
-          }
-        ],
-        "sort": 5
-      },
-      "moved": false
-    },
-    {
-      "i": 7,
-      "x": 0,
-      "y": 125,
-      "w": 12,
-      "h": 8,
-      "type": "imgTitleSector",
-      "content": {
-        "sectorName": "imgTitleSector",
-        "componentList": [
-          {
-            "component_type": 3,
-            "component_style": 3,
-            "component_name": "",
-            "sort": 1,
-            "componentData": []
-          }
-        ],
-        "sort": 6
-      },
-      "moved": false
-    },
-    {
-      "i": 5,
-      "x": 0,
-      "y": 133,
-      "w": 12,
-      "h": 33,
-      "type": "listSector",
-      "content": {
-        "sectorName": "listSector",
-        "componentList": [
-          {
-            "component_type": 7,
-            "component_style": 1,
-            "component_name": "styleTitle",
-            "sort": 1,
-            "componentData": {
-              "text": "板块标题"
-            }
-          },
-          {
-            "component_type": 1,
-            "component_style": 1,
-            "component_name": "listNews",
-            "sort": 2,
-            "componentData": {
-              "category_id": [],
-              "page": 1,
-              "pageSize": 5,
-              "listType": [
-                "title",
-                "created_time"
-              ]
-            }
-          },
-          {
-            "component_type": 1,
-            "component_style": 1,
-            "component_name": "listNews",
-            "sort": 3,
-            "componentData": {
-              "category_id": [],
-              "page": 1,
-              "pageSize": 5,
-              "listType": [
-                "title",
-                "created_time"
-              ]
-            }
-          }
-        ],
-        "sort": 7
-      },
-      "moved": false
-    },
-    {
-      "i": 8,
-      "x": 0,
-      "y": 166,
-      "w": 12,
-      "h": 20,
-      "type": "friendShipLinkSector",
-      "content": {
-        "sectorName": "friendShipLinkSector",
-        "componentList": [
-          {
-            "component_type": 7,
-            "component_style": 3,
-            "component_name": "styleTitle",
-            "sort": 1,
-            "componentData": {
-              "text": "板块标题"
-            }
-          },
-          {
-            "component_type": 4,
-            "component_style": 1,
-            "component_name": "",
-            "sort": 1,
-            "componentData": {}
-          }
-        ],
-        "sort": 8
-      },
-      "moved": false
-    }
-  ]
-
-]
-
-export default json;

+ 287 - 0
src/utils/templateJson/index/style1/1.js

@@ -0,0 +1,287 @@
+const json = [
+    {
+        "i": 1738997535959,
+        "x": 0,
+        "y": 0,
+        "w": 12,
+        "h": 33,
+        "type": "bannerSector",
+        "content": {
+            "sectorName": "bannerSector",
+            "componentList": [
+                {
+                    "component_type": 1,
+                    "component_style": 1,
+                    "component_name": "mainTitle",
+                    "sort": 1,
+                    "componentData": {
+                        "category_id": [],
+                        "page": 1,
+                        "pageSize": 1,
+                        "listType": [
+                            "title"
+                        ]
+                    }
+                },
+                {
+                    "component_type": 1,
+                    "component_style": 1,
+                    "component_name": "banner",
+                    "sort": 2,
+                    "componentData": {
+                        "category_id": [],
+                        "page": 1,
+                        "pageSize": 3,
+                        "listType": [
+                            "title",
+                            "imgUrl"
+                        ]
+                    }
+                },
+                {
+                    "component_type": 1,
+                    "component_style": 1,
+                    "component_name": "tabsNews",
+                    "sort": 3,
+                    "componentData": {
+                        "category_id": [],
+                        "page": 1,
+                        "pageSize": 5,
+                        "listType": [
+                            "title",
+                            "created_time",
+                            "introduce"
+                        ]
+                    }
+                }
+            ]
+        },
+        "dataSort": 0,
+        "moved": false
+    },
+    {
+        "i": 1738997538031,
+        "x": 0,
+        "y": 33,
+        "w": 12,
+        "h": 49,
+        "type": "manyPictureSector",
+        "content": {
+            "sectorName": "manyPictureSector",
+            "componentList": [
+                {
+                    "component_type": 7,
+                    "component_style": 1,
+                    "component_name": "styleTitle",
+                    "sort": 1,
+                    "componentData": {
+                        "text": "板块标题"
+                    }
+                },
+                {
+                    "component_type": 6,
+                    "component_style": 1,
+                    "component_name": "fivePicture",
+                    "sort": 2,
+                    "componentData": {}
+                },
+                {
+                    "component_type": 1,
+                    "component_style": 1,
+                    "component_name": "tabsNews",
+                    "sort": 3,
+                    "componentData": {
+                        "category_id": [],
+                        "page": 1,
+                        "pageSize": 3,
+                        "listType": [
+                            "title",
+                            "created_time"
+                        ]
+                    }
+                },
+                {
+                    "component_type": 1,
+                    "component_style": 1,
+                    "component_name": "tabsNews",
+                    "sort": 4,
+                    "componentData": {
+                        "category_id": [],
+                        "page": 1,
+                        "pageSize": 3,
+                        "listType": [
+                            "title",
+                            "created_time"
+                        ]
+                    }
+                }
+            ]
+        },
+        "dataSort": 1,
+        "moved": false
+    },
+    {
+        "i": 1738997540254,
+        "x": 0,
+        "y": 82,
+        "w": 12,
+        "h": 44,
+        "type": "commentSector",
+        "content": {
+            "sectorName": "commentSector",
+            "componentList": [
+                {
+                    "component_type": 7,
+                    "component_style": 1,
+                    "component_name": "styleTitle",
+                    "sort": 1,
+                    "componentData": {
+                        "text": "板块标题"
+                    }
+                },
+                {
+                    "component_type": 1,
+                    "component_style": 2,
+                    "component_name": "tabsCalendarNews",
+                    "sort": 2,
+                    "componentData": {
+                        "category_id": [],
+                        "page": 1,
+                        "pageSize": 6,
+                        "listType": [
+                            "title",
+                            "created_time",
+                            "introduce"
+                        ]
+                    }
+                },
+                {
+                    "component_type": 8,
+                    "component_style": 1,
+                    "component_name": "calendar",
+                    "sort": 3,
+                    "componentData": {}
+                }
+            ]
+        },
+        "dataSort": 2,
+        "moved": false
+    },
+    {
+        "i": 1738997543774,
+        "x": 0,
+        "y": 126,
+        "w": 12,
+        "h": 33,
+        "type": "listSector",
+        "content": {
+            "sectorName": "listSector",
+            "componentList": [
+                {
+                    "component_type": 7,
+                    "component_style": 1,
+                    "component_name": "styleTitle",
+                    "sort": 1,
+                    "componentData": {
+                        "text": "板块标题"
+                    }
+                },
+                {
+                    "component_type": 1,
+                    "component_style": 1,
+                    "component_name": "listNews",
+                    "sort": 2,
+                    "componentData": {
+                        "category_id": [],
+                        "page": 1,
+                        "pageSize": 5,
+                        "listType": [
+                            "title",
+                            "created_time"
+                        ]
+                    }
+                },
+                {
+                    "component_type": 1,
+                    "component_style": 1,
+                    "component_name": "listNews",
+                    "sort": 3,
+                    "componentData": {
+                        "category_id": [],
+                        "page": 1,
+                        "pageSize": 5,
+                        "listType": [
+                            "title",
+                            "created_time"
+                        ]
+                    }
+                }
+            ]
+        },
+        "dataSort": 3,
+        "moved": false
+    },
+    {
+        "i": 1738997544958,
+        "x": 0,
+        "y": 159,
+        "w": 12,
+        "h": 32,
+        "type": "onlyImgSector",
+        "content": {
+            "sectorName": "onlyImgSector",
+            "componentList": [
+                {
+                    "component_type": 1,
+                    "component_style": 1,
+                    "component_name": "",
+                    "sort": 1,
+                    "componentData": {
+                        "category_id": [],
+                        "page": 1,
+                        "pageSize": 7,
+                        "listType": [
+                            "title",
+                            "imgUrl"
+                        ]
+                    }
+                }
+            ]
+        },
+        "dataSort": 4,
+        "moved": false
+    },
+    {
+        "i": 1738997545726,
+        "x": 0,
+        "y": 191,
+        "w": 12,
+        "h": 20,
+        "type": "friendShipLinkSector",
+        "content": {
+            "sectorName": "friendShipLinkSector",
+            "componentList": [
+                {
+                    "component_type": 7,
+                    "component_style": 1,
+                    "component_name": "styleTitle",
+                    "sort": 1,
+                    "componentData": {
+                        "text": "板块标题"
+                    }
+                },
+                {
+                    "component_type": 4,
+                    "component_style": 1,
+                    "component_name": "",
+                    "sort": 1,
+                    "componentData": {}
+                }
+            ]
+        },
+        "dataSort": 5,
+        "moved": false
+    }
+]
+
+export default json;

+ 227 - 0
src/utils/templateJson/index/style1/2.js

@@ -0,0 +1,227 @@
+const json = [
+    {
+        "i": 1738997623000,
+        "x": 0,
+        "y": 0,
+        "w": 12,
+        "h": 49,
+        "type": "manyPictureSector",
+        "content": {
+            "sectorName": "manyPictureSector",
+            "componentList": [
+                {
+                    "component_type": 7,
+                    "component_style": 1,
+                    "component_name": "styleTitle",
+                    "sort": 1,
+                    "componentData": {
+                        "text": "板块标题"
+                    }
+                },
+                {
+                    "component_type": 6,
+                    "component_style": 1,
+                    "component_name": "fivePicture",
+                    "sort": 2,
+                    "componentData": {}
+                },
+                {
+                    "component_type": 1,
+                    "component_style": 1,
+                    "component_name": "tabsNews",
+                    "sort": 3,
+                    "componentData": {
+                        "category_id": [],
+                        "page": 1,
+                        "pageSize": 3,
+                        "listType": [
+                            "title",
+                            "created_time"
+                        ]
+                    }
+                },
+                {
+                    "component_type": 1,
+                    "component_style": 1,
+                    "component_name": "tabsNews",
+                    "sort": 4,
+                    "componentData": {
+                        "category_id": [],
+                        "page": 1,
+                        "pageSize": 3,
+                        "listType": [
+                            "title",
+                            "created_time"
+                        ]
+                    }
+                }
+            ]
+        },
+        "dataSort": 0,
+        "moved": false
+    },
+    {
+        "i": 1738997626974,
+        "x": 0,
+        "y": 49,
+        "w": 12,
+        "h": 33,
+        "type": "listSector",
+        "content": {
+            "sectorName": "listSector",
+            "componentList": [
+                {
+                    "component_type": 7,
+                    "component_style": 1,
+                    "component_name": "styleTitle",
+                    "sort": 1,
+                    "componentData": {
+                        "text": "板块标题"
+                    }
+                },
+                {
+                    "component_type": 1,
+                    "component_style": 1,
+                    "component_name": "listNews",
+                    "sort": 2,
+                    "componentData": {
+                        "category_id": [],
+                        "page": 1,
+                        "pageSize": 5,
+                        "listType": [
+                            "title",
+                            "created_time"
+                        ]
+                    }
+                },
+                {
+                    "component_type": 1,
+                    "component_style": 1,
+                    "component_name": "listNews",
+                    "sort": 3,
+                    "componentData": {
+                        "category_id": [],
+                        "page": 1,
+                        "pageSize": 5,
+                        "listType": [
+                            "title",
+                            "created_time"
+                        ]
+                    }
+                }
+            ]
+        },
+        "dataSort": 1,
+        "moved": false
+    },
+    {
+        "i": 1738997629824,
+        "x": 0,
+        "y": 82,
+        "w": 12,
+        "h": 44,
+        "type": "commentSector",
+        "content": {
+            "sectorName": "commentSector",
+            "componentList": [
+                {
+                    "component_type": 7,
+                    "component_style": 1,
+                    "component_name": "styleTitle",
+                    "sort": 1,
+                    "componentData": {
+                        "text": "板块标题"
+                    }
+                },
+                {
+                    "component_type": 1,
+                    "component_style": 2,
+                    "component_name": "tabsCalendarNews",
+                    "sort": 2,
+                    "componentData": {
+                        "category_id": [],
+                        "page": 1,
+                        "pageSize": 6,
+                        "listType": [
+                            "title",
+                            "created_time",
+                            "introduce"
+                        ]
+                    }
+                },
+                {
+                    "component_type": 8,
+                    "component_style": 1,
+                    "component_name": "calendar",
+                    "sort": 3,
+                    "componentData": {}
+                }
+            ]
+        },
+        "dataSort": 2,
+        "moved": false
+    },
+    {
+        "i": 1738997631878,
+        "x": 0,
+        "y": 126,
+        "w": 12,
+        "h": 32,
+        "type": "onlyImgSector",
+        "content": {
+            "sectorName": "onlyImgSector",
+            "componentList": [
+                {
+                    "component_type": 1,
+                    "component_style": 1,
+                    "component_name": "",
+                    "sort": 1,
+                    "componentData": {
+                        "category_id": [],
+                        "page": 1,
+                        "pageSize": 7,
+                        "listType": [
+                            "title",
+                            "imgUrl"
+                        ]
+                    }
+                }
+            ]
+        },
+        "dataSort": 3,
+        "moved": false
+    },
+    {
+        "i": 1738997637782,
+        "x": 0,
+        "y": 158,
+        "w": 12,
+        "h": 20,
+        "type": "friendShipLinkSector",
+        "content": {
+            "sectorName": "friendShipLinkSector",
+            "componentList": [
+                {
+                    "component_type": 7,
+                    "component_style": 1,
+                    "component_name": "styleTitle",
+                    "sort": 1,
+                    "componentData": {
+                        "text": "板块标题"
+                    }
+                },
+                {
+                    "component_type": 4,
+                    "component_style": 1,
+                    "component_name": "",
+                    "sort": 1,
+                    "componentData": {}
+                }
+            ]
+        },
+        "dataSort": 4,
+        "moved": false
+    }
+]
+
+export default json;

+ 21 - 0
src/views/dashboard/admin/index.vue

@@ -1,5 +1,6 @@
 <template>
   <div class="dashboard-editor-container">
+    <!--超级管理员-->
     <div v-if="userType==10000">
       <!--网站,内容,公共栏目数量 start------------------------------------------>
       <el-row :gutter="32">
@@ -62,6 +63,7 @@
       </el-row>
       <!--chart end------------------------------------------>
     </div>
+    <!--调研员-->
     <div v-if="userType==4">
       <el-row :gutter="32">
         <el-col :xs="24" :sm="24" :lg="24">
@@ -74,6 +76,16 @@
         </el-col>
       </el-row>
     </div>
+    <!--个人会员-->
+    <div v-if="userType==1">
+      <el-row :gutter="32">
+        <el-col :xs="24" :sm="24" :lg="24">
+          <div class="noData">
+            欢迎使用恒星管理平台
+          </div>
+        </el-col>
+      </el-row>
+    </div>
   </div>
 </template>
 
@@ -240,6 +252,15 @@ export default {
     }
   }
 
+  .noData {
+    color: #CCCCCC;
+    font-size: 32px;
+    font-weight: bold;
+    text-align: center;
+    height: 740px;
+    line-height: 740px;
+  }
+
   .dashboard-editor-container {
     padding: 32px;
     background-color: rgb(240, 242, 245);

+ 113 - 17
src/views/login/index.vue

@@ -258,21 +258,89 @@ export default {
       }
       return null; // 如果没有找到 backurl 参数,返回 null
     },
-    //测试单点登录
+    //登录分路器 start ---------------------------------------->
     singleLogin() {
-      // 获取当前页面的 URL
-      const currentUrl = window.location.href;
+      // 获得当前域名
+      const urlString = window.location.href;
+      // 创建一个URL对象
+      const url = new URL(urlString);
+      // 获取hash部分(即#后面的部分)
+      const hash = url.hash;
+      // 从hash中提取查询参数
+      const hashParams = new URLSearchParams(hash.split('?')[1]);
+      // 获取backurl参数的值
+      const backurl = hashParams.get('backurl');
+      // 获取backurl参数的值
+      const userurl = hashParams.get('userurl');
 
-      const backurlValue = this.getBackUrl(currentUrl);
-      if (backurlValue) {
-        //console.log('backurl:', backurlValue); // 打印 backurl 的值
-        //存在backurl 准备进行单点登录
-        //回调地址backurlValue
+      // 解码backurl
+      const decodedBackurl = decodeURIComponent(backurl);
+      const decodedUserurl = decodeURIComponent(userurl);
+
+      // 第一种情况, 不含有backUrl或者userUrl 说明登录者是超级管理员
+      if(hashParams.size==0){
+        console.log("执行超级管理员登录!")
+        this.login(1)
+      }else{
+        // 第二种情况,含有backurl 说明是单点登录
+        if(backurl!=null){
+          console.log("执行单点登录!")
+          const backurlObj = new URL(decodedBackurl);
+          const back_url = backurlObj.hostname;
+          this.login(2)
+
+        }else if(userurl!=null){
+          console.log("执行会员登录!")
+          const backurlObj = new URL(decodedUserurl);
+          const user_url = backurlObj.hostname;
+          this.login(3,user_url)
+
+        }else{
+          this.$message.error("检查登录链接失败,请从正规渠道登录!")
+        }
+      }
+
+    },
+    // 登录分路器 end ---------------------------------------->
+    // 登录 start ---------------------------------------->
+    login(type,url){
+      //超级管理员登录
+      if(type==1){
+        this.$refs.loginForm.validate(valid => {
+          if (valid) {
+            this.loading = true
+            this.$store.dispatch('user/login', this.loginForm).then( res => {
+              this.loading = false
+              console.log(res)
+              if(res.code==0){
+                this.$message({
+                  type:'error',
+                  message:res.message
+                })
+              }else if(res.code==200){
+                console.log("登录成功,将跳转至详情页面!")
+                this.$router.push({ path: this.redirect || '/', query: this.otherQuery })
+              }else if(res.code!=0&&res.code!=200){
+                this.$message({
+                  type:'error',
+                  message:"用户不存在!"
+                })
+              }
+            })
+          }else {
+            console.log('表单填写错误!请检查!')
+            return false;
+          }
+        })
+      }
+      //单点登录
+      if(type==2){
+        // 获取当前页面的 URL
+        const currentUrl = window.location.href;
+        const backurlValue = this.getBackUrl(currentUrl);
         
         this.$refs.loginForm.validate(valid => {
-        if (valid) {
-            //console.log(this.loginForm)
-            //开始登录
+          if (valid) {
             this.loading = true
             this.$store.dispatch('user/login', this.loginForm)
               .then( res => {
@@ -285,8 +353,6 @@ export default {
                   })
                 }else if(res.code==200){
                   console.log("单点登录成功,开始启动跳转!")
-                  // res.data.token
-                  // backurlValue
                   window.location.href = 'http://admindev.bjzxtw.org.cn/auth/back_login.php?backurl=' + backurlValue + '&token='+res.data.token;
 
                 }else if(res.code!=0&&res.code!=200){
@@ -304,12 +370,42 @@ export default {
             return false
           }
         })
-      } else {
-        //没有backurl 直接走登录接口
-        this.handleLogin()
+
+      }
+      //会员登录
+      if(type==3){
+        this.$refs.loginForm.validate(valid => {
+          if (valid) {
+            this.loading = true;
+            this.loginForm.userurl = url;
+            //console.log(this.loginForm)
+            this.$store.dispatch('user/login', this.loginForm).then( res => {
+              this.loading = false
+              console.log(res)
+              if(res.code==0){
+                this.$message({
+                  type:'error',
+                  message:res.message
+                })
+              }else if(res.code==200){
+                console.log("登录成功,将跳转至详情页面!")
+                this.$router.push({ path: this.redirect || '/', query: this.otherQuery })
+              }else if(res.code!=0&&res.code!=200){
+                this.$message({
+                  type:'error',
+                  message:"用户不存在!"
+                })
+              }
+            })
+
+          }else {
+            console.log('表单填写错误!请检查!')
+            return false;
+          }
+        })
       }
     }
-    // 单点登录 end ---------------------------------------->
+    // 登录 end ---------------------------------------->
   }
 }
 </script>

+ 34 - 1
src/views/role/components/userDefault.vue

@@ -180,6 +180,16 @@
           <el-form-item label="提示词:" :label-width="formLabelWidth" prop="" class="custom-align-right">
             <el-input type="textarea" v-model="form.remark" class="custom-textarea" placeholder="请输入提示词"></el-input>
           </el-form-item>
+          <el-form-item label="网站选择" :label-width="formLabelWidth" prop="sszq" class="custom-align-right">
+            <el-select v-model="form.sszq" multiple filterable placeholder="请选择">
+              <el-option
+                v-for="item in webSiteList"
+                :key="item.value"
+                :label="item.label"
+                :value="item.value">
+              </el-option>
+            </el-select>
+          </el-form-item>
         </div>
       </el-form>
     </div>  
@@ -286,10 +296,13 @@ export default {
         other:[],//相关资料
         remark:"",//提示词
         zip_code:"",//邮编
+        sszq:[]//网站选择
       },
       timeList:[],//时间段
       otherList:[],//相关资料列表
       role_idArr:[],//角色id池
+      //网站列表
+      webSiteList: [],
       //上传照片
       photoUrl:'',
       hovering: false, // 鼠标悬浮状态 悬浮时显示删除
@@ -322,7 +335,9 @@ export default {
         //11.出生年月
         birthday: [{ required: true, trigger: 'blur', validator: validateTime }],
         //12.有效期
-        timeList:[{ required: true, trigger: 'blur', validator: validateTimeTo }]
+        timeList:[{ required: true, trigger: 'blur', validator: validateTimeTo }],
+        //13.网站选择
+        sszq: [{ required: true, trigger: 'blur', validator: validateArray }]
       },
       //时间跨度
       pickerOptions: {
@@ -511,6 +526,22 @@ export default {
     },
     //提交表单 start ------------------------------------------------------------>
     //3.编辑表单 start ------------------------------------------------------------>
+    //获得网站列表
+    getWebsiteList(){
+      this.$store.dispatch('pool/getWebList',{page:1,pageSize:1000}).then(res=>{
+        if(res.code!=200){
+          this.$message.error(res.message)
+        }else{
+          for(let item of res.data.rows){
+            let data = {
+              value:item.id,
+              label:item.website_name
+            }
+            this.webSiteList.push(data)
+          }
+        }
+      })
+    },
     //获得用户信息
     getUserInfo(){
       this.$store.dispatch('userMember/getUser',{id:this.editId}).then(res=>{
@@ -664,6 +695,8 @@ export default {
     }
     //设置token
     this.setHeaders(); // 在组件挂载时设置 headers
+    //获取所有网站列表
+    this.getWebsiteList();
   }
 };
 </script>

+ 35 - 2
src/views/role/components/userEnterprise.vue

@@ -4,7 +4,7 @@
       <el-form ref="form" :model="form" :rules="loginRules" class="login-form" autocomplete="on" label-position="left" label-width="120px">
         <div class="formDiv">
           <!--选择角色 start------------------------------------------>
-          <el-form-item label="所属角色:" :label-width="formLabelWidth" prop="role_id" class="custom-align-right">
+          <el-form-item label="所属角色2:" :label-width="formLabelWidth" prop="role_id" class="custom-align-right">
             <div class="formLabelFloatBox">
               <el-select v-model="form.role_id" placeholder="请选择..">
                 <el-option
@@ -140,6 +140,16 @@
           <el-form-item label="提示词:" :label-width="formLabelWidth" prop="" class="custom-align-right">
             <el-input type="textarea" v-model="form.remark" class="custom-textarea" placeholder="请输入提示词"></el-input>
           </el-form-item>
+          <el-form-item label="网站选择" :label-width="formLabelWidth" prop="sszq" class="custom-align-right">
+            <el-select v-model="form.sszq" multiple filterable placeholder="请选择">
+              <el-option
+                v-for="item in webSiteList"
+                :key="item.value"
+                :label="item.label"
+                :value="item.value">
+              </el-option>
+            </el-select>
+          </el-form-item>
         </div>
       </el-form>
     </div>  
@@ -240,10 +250,13 @@ export default {
         legal_person_real_name:"",//法人姓名
         legal_person_mobile:"",//法人手机号
         legal_person_id_card:"",//法人身份证号
+        sszq:[]//网站选择
       },
       timeList:[],//时间段
       otherList:[],//相关资料列表
       role_idArr:[],//角色id池
+      //网站列表
+      webSiteList: [],
       //密码验证
       capsTooltip1: false,
       capsTooltip2: false,
@@ -283,7 +296,9 @@ export default {
         //14.法人身份证号
         legal_person_id_card: [{ required: true, trigger: 'blur', validator: validateEmpty }],
         //15.有效期
-        timeList:[{ required: true, trigger: 'blur', validator: validateTimeTo }]
+        timeList:[{ required: true, trigger: 'blur', validator: validateTimeTo }],
+        //16.网站选择
+        sszq: [{ required: true, trigger: 'blur', validator: validateArray }]
       },
       //时间跨度
       pickerOptions: {
@@ -437,6 +452,22 @@ export default {
     },
     //提交表单 start ------------------------------------------------------------>
     //3.编辑表单 start ------------------------------------------------------------>
+    //获得网站列表
+    getWebsiteList(){
+      this.$store.dispatch('pool/getWebList',{page:1,pageSize:1000}).then(res=>{
+        if(res.code!=200){
+          this.$message.error(res.message)
+        }else{
+          for(let item of res.data.rows){
+            let data = {
+              value:item.id,
+              label:item.website_name
+            }
+            this.webSiteList.push(data)
+          }
+        }
+      })
+    },
     //获得用户信息
     getUserInfo(){
       this.$store.dispatch('userMember/getUser',{id:this.editId}).then(res=>{
@@ -575,6 +606,8 @@ export default {
     }
     //设置token
     this.setHeaders(); // 在组件挂载时设置 headers
+    //获取所有网站列表
+    this.getWebsiteList();
   }
 };
 </script>

+ 42 - 1
src/views/role/components/userInvestigate.vue

@@ -177,6 +177,16 @@
           <el-form-item label="提示词:" :label-width="formLabelWidth" prop="" class="custom-align-right">
             <el-input type="textarea" v-model="form.remark" class="custom-textarea" placeholder="请输入提示词"></el-input>
           </el-form-item>
+          <!-- <el-form-item label="网站选择" :label-width="formLabelWidth" prop="sszq" class="custom-align-right">
+            <el-select v-model="form.sszq" multiple filterable placeholder="请选择">
+              <el-option
+                v-for="item in webSiteList"
+                :key="item.value"
+                :label="item.label"
+                :value="item.value">
+              </el-option>
+            </el-select>
+          </el-form-item> -->
         </div>
       </el-form>
     </div>  
@@ -297,11 +307,14 @@ export default {
         other:[],//相关资料
         remark:"",//提示词
         zip_code:"",//邮编
+        //sszq: [],//所属网站
       },
       timeList:[],//时间段
       otherList:[],//相关资料列表
       role_idArr:[],//角色id池
       isNational:0,//是否为全国
+      //网站列表
+      webSiteList: [],
       //上传照片
       photoUrl:'',
       hovering: false, // 鼠标悬浮状态 悬浮时显示删除
@@ -338,7 +351,9 @@ export default {
         //12.出生年月
         birthday: [{ required: true, trigger: 'blur', validator: validateEmpty }],
         //13.有效期
-        timeList:[{ required: true, trigger: 'blur', validator: validateTimeTo }]
+        timeList:[{ required: true, trigger: 'blur', validator: validateTimeTo }],
+        //14.网站选择
+        sszq: [{ required: true, trigger: 'blur', validator: validateArray }]
       },
       //时间跨度
       pickerOptions: {
@@ -540,6 +555,27 @@ export default {
     },
     //提交表单 start ------------------------------------------------------------>
     //3.编辑表单 start ------------------------------------------------------------>
+    //获得网站列表
+    getWebsiteList(userWebList){
+      this.$store.dispatch('pool/getWebList',{page:1,pageSize:1000}).then(res=>{
+        if(res.code!=200){
+          this.$message.error(res.message)
+        }else{
+          for(let item of res.data.rows){
+            let data = {
+              value:item.id,
+              label:item.website_name
+            }
+            this.webSiteList.push(data)
+          }
+          //如果有数据可以回显
+          if(userWebList){
+            console.log("显示编辑用户的所属网站!")
+            this.form.sszq = userWebList;
+          }
+        }
+      })
+    },
     //获得用户信息
     getUserInfo(){
       this.$store.dispatch('userMember/getUser',{id:this.editId}).then(res=>{
@@ -597,6 +633,9 @@ export default {
           url: url,                // 文件的 URL
           status: 'success'        // 设置状态为 success
         }));
+
+        //获取所有网站列表
+        this.getWebsiteList(res.data.sszq);
       })
     },
     //修改用户
@@ -709,6 +748,8 @@ export default {
       this.getUserInfo();
     }else{
       console.log("添加用户!")
+      //获取所有网站列表
+      this.getWebsiteList();
     }
     //设置token
     this.setHeaders(); // 在组件挂载时设置 headers

+ 34 - 1
src/views/role/components/userPolitician.vue

@@ -143,6 +143,16 @@
           <el-form-item label="提示词:" :label-width="formLabelWidth" prop="" class="custom-align-right">
             <el-input type="textarea" v-model="form.remark" class="custom-textarea" placeholder="请输入提示词"></el-input>
           </el-form-item>
+          <el-form-item label="网站选择" :label-width="formLabelWidth" prop="sszq" class="custom-align-right">
+            <el-select v-model="form.sszq" multiple filterable placeholder="请选择">
+              <el-option
+                v-for="item in webSiteList"
+                :key="item.value"
+                :label="item.label"
+                :value="item.value">
+              </el-option>
+            </el-select>
+          </el-form-item>
         </div>
       </el-form>
     </div>  
@@ -232,10 +242,13 @@ export default {
         legal_person_real_name:"",//法人姓名
         legal_person_mobile:"",//法人手机号
         legal_person_id_card:"",//法人身份证号
+        sszq:[]//网站选择
       },
       timeList:[],//时间段
       otherList:[],//相关资料列表
       role_idArr:[],//角色id池
+      //网站列表
+      webSiteList: [],
       //密码验证
       capsTooltip1: false,
       capsTooltip2: false,
@@ -279,7 +292,9 @@ export default {
         //16.详细地址
         address_arr_id: [{ required: true, trigger: 'blur', validator: validateArray }],
         //17.有效期
-        timeList: [{ required: true, trigger: 'blur', validator: validateTimeTo }]
+        timeList: [{ required: true, trigger: 'blur', validator: validateTimeTo }],
+        //18.网站选择
+        sszq: [{ required: true, trigger: 'blur', validator: validateArray }]
       },
       //时间跨度
       pickerOptions: {
@@ -426,6 +441,22 @@ export default {
     },
     //提交表单 start ------------------------------------------------------------>
     //3.编辑表单 start ------------------------------------------------------------>
+    //获得网站列表
+    getWebsiteList(){
+      this.$store.dispatch('pool/getWebList',{page:1,pageSize:1000}).then(res=>{
+        if(res.code!=200){
+          this.$message.error(res.message)
+        }else{
+          for(let item of res.data.rows){
+            let data = {
+              value:item.id,
+              label:item.website_name
+            }
+            this.webSiteList.push(data)
+          }
+        }
+      })
+    },
     //获得用户信息
     getUserInfo(){
       this.$store.dispatch('userMember/getUser',{id:this.editId}).then(res=>{
@@ -565,6 +596,8 @@ export default {
     }
     //设置token
     this.setHeaders(); // 在组件挂载时设置 headers
+    //获取所有网站列表
+    this.getWebsiteList();
   }
 };
 </script>

+ 3 - 3
src/views/template/style/1/sector/2.vue

@@ -12,9 +12,9 @@
         <el-select v-model="departments" filterable placeholder="请选择职能部门">
           <el-option
             v-for="item in this.$store.state.template.departmentList"
-            :key="item.id"
-            :label="item.name"
-            :value="item.id">
+            :key="item.value"
+            :label="item.label"
+            :value="item.value">
           </el-option>
         </el-select>
       </div>

+ 12 - 12
src/views/template/templateBase.vue

@@ -55,12 +55,12 @@
           </el-form-item>
           <el-form-item label="联系电话:" :label-width="formLabelWidth" prop="contact_number" class="custom-align-right">
             <div class="formLabelFloatBox">
-              <el-input type="text" v-model="form.contact_number" placeholder="请输入.."></el-input>
+              <el-input type="text" v-model="form.contact_number" placeholder="请输入.." maxlength="255"></el-input>
             </div>
           </el-form-item>
           <el-form-item label="公司地址:" :label-width="formLabelWidth" prop="company_address" class="custom-align-right">
             <div class="formLabelFloatBox">
-              <el-input type="text" v-model="form.company_address" placeholder="请输入.."></el-input>
+              <el-input type="text" v-model="form.company_address" placeholder="请输入.." maxlength="255"></el-input>
             </div>
           </el-form-item>
           <el-form-item label="项目LOGO:" class="custom-align-right" prop="project_logo">
@@ -80,12 +80,12 @@
           </el-form-item>
           <el-form-item label="项目名称:" :label-width="formLabelWidth" prop="project_name" class="custom-align-right">
             <div class="formLabelFloatBox">
-              <el-input type="text" v-model="form.project_name" placeholder="请输入.."></el-input>
+              <el-input type="text" v-model="form.project_name" placeholder="请输入.." maxlength="100"></el-input>
             </div>
           </el-form-item>
           <el-form-item label="项目网址:" :label-width="formLabelWidth" prop="project_url" class="custom-align-right">
             <div class="formLabelFloatBox">
-              <el-input type="text" v-model="form.project_url" placeholder="请输入.."></el-input>
+              <el-input type="text" v-model="form.project_url" placeholder="请输入.."  maxlength="100"></el-input>
             </div>
           </el-form-item>
           <el-form-item label="公司LOGO:" class="custom-align-right" prop="company_logo">
@@ -105,42 +105,42 @@
           </el-form-item>
           <el-form-item label="公司名称:" :label-width="formLabelWidth" prop="company_name" class="custom-align-right">
             <div class="formLabelFloatBox">
-              <el-input type="text" v-model="form.company_name" placeholder="请输入.."></el-input>
+              <el-input type="text" v-model="form.company_name" placeholder="请输入.." maxlength="100"></el-input>
             </div>
           </el-form-item>
           <el-form-item label="公司网址:" :label-width="formLabelWidth" prop="company_url" class="custom-align-right">
             <div class="formLabelFloatBox">
-              <el-input type="text" v-model="form.company_url" placeholder="请输入.."></el-input>
+              <el-input type="text" v-model="form.company_url" placeholder="请输入.." maxlength="100"></el-input>
             </div>
           </el-form-item>
           <el-form-item label="网站备案号:" :label-width="formLabelWidth" prop="icp_number" class="custom-align-right">
             <div class="formLabelFloatBox">
-              <el-input type="text" v-model="form.icp_number" placeholder="请输入.."></el-input>
+              <el-input type="text" v-model="form.icp_number" placeholder="请输入.." maxlength="50"></el-input>
             </div>  
           </el-form-item>
           <el-form-item label="网站备链接:" :label-width="formLabelWidth" prop="icp_number_url" class="custom-align-right">
             <div class="formLabelFloatBox">
-              <el-input type="text" v-model="form.icp_number_url" placeholder="请输入.."></el-input>
+              <el-input type="text" v-model="form.icp_number_url" placeholder="请输入.." maxlength="100"></el-input>
             </div>  
           </el-form-item>
           <el-form-item label="网安备案号:" :label-width="formLabelWidth" prop="record_number" class="custom-align-right">
             <div class="formLabelFloatBox">
-              <el-input type="text" v-model="form.record_number" placeholder="请输入.."></el-input>
+              <el-input type="text" v-model="form.record_number" placeholder="请输入.." maxlength="50"></el-input>
             </div>
           </el-form-item>
           <el-form-item label="网安备案号链接" :label-width="formLabelWidth" prop="record_number_url" class="custom-align-right">
             <div class="formLabelFloatBox">
-              <el-input type="text" v-model="form.record_number_url" placeholder="请输入.."></el-input>
+              <el-input type="text" v-model="form.record_number_url" placeholder="请输入.." maxlength="100"></el-input>
             </div>
           </el-form-item>
           <el-form-item label="客服QQ号:" :label-width="formLabelWidth" prop="customer_service_qq" class="custom-align-right">
             <div class="formLabelFloatBox">
-              <el-input type="text" v-model="form.customer_service_qq" placeholder="请输入.."></el-input>
+              <el-input type="text" v-model="form.customer_service_qq" placeholder="请输入.." maxlength="50"></el-input>
             </div>
           </el-form-item>
           <el-form-item label="通联QQ号:" :label-width="formLabelWidth" prop="communications" class="custom-align-right">
             <div class="formLabelFloatBox">
-              <el-input type="text" v-model="form.communications" placeholder="请输入.."></el-input>
+              <el-input type="text" v-model="form.communications" placeholder="请输入.." maxlength="50"></el-input>
             </div>
           </el-form-item>
         </div>

+ 48 - 15
src/views/template/templateCreat.vue

@@ -1,9 +1,13 @@
 <template>
-  <div class="mainBox">
+  <div class="mainBox" v-loading="this.$store.state.template.loading==true" element-loading-text="请稍等">
     <!-- 顶部菜单 start ---------------------------------------->
     <div class="topMenuBox">
       <div>
-        <el-button icon="el-icon-refresh" type="primary" @click="randomTemplate">随机生成</el-button>
+        <el-button icon="el-icon-refresh" type="primary" @click="randomTemplate">
+          <span v-if="this.$store.state.template.pageStatus == 1">随机生成首页</span>
+          <span v-if="this.$store.state.template.pageStatus == 3">随机生成列表页</span>
+          <span v-if="this.$store.state.template.pageStatus == 4">随机生成详情页</span>
+        </el-button>
       </div>
       <div class="topMenuRightBox">
         <img src="@/assets/template/preview.png" class="previewImg" @click="setPreviewStatus" v-if="this.$store.state.template.previewStatus==false"/>
@@ -16,13 +20,13 @@
     <!-- 画布 start ---------------------------------------->
     <div class="websiteBox">
       <div class="pageTabsBox">
-        <div :class="['pageTabsItem', this.$store.state.template.pageStatus === 1 ? 'active' : '']" @click="openPage(1)">首页</div>
-        <!-- <div :class="['pageTabsItem', this.$store.state.template.pageStatus === 2 ? 'active' : '']" @click="openPage(2)">分类页</div> -->
-        <div :class="['pageTabsItem', this.$store.state.template.pageStatus === 3 ? 'active' : '']" @click="openPage(3)">列表页</div>
-        <div :class="['pageTabsItem', this.$store.state.template.pageStatus === 4 ? 'active' : '']" @click="openPage(4)">详情页</div>
-        <!-- <div :class="['pageTabsItem', this.$store.state.template.pageStatus === 5 ? 'active' : '']" @click="openPage(5)">搜索页</div>
-        <div :class="['pageTabsItem', this.$store.state.template.pageStatus === 6 ? 'active' : '']" @click="openPage(6)">自定义列表页</div>
-        <div :class="['pageTabsItem', this.$store.state.template.pageStatus === 7 ? 'active' : '']" @click="openPage(7)">自定义详情页</div> -->
+        <div v-if="this.$store.state.template.showPage.index==true" :class="['pageTabsItem', this.$store.state.template.pageStatus === 1 ? 'active' : '']" @click="openPage(1)">首页</div>
+        <div v-if="this.$store.state.template.showPage.class==true" :class="['pageTabsItem', this.$store.state.template.pageStatus === 2 ? 'active' : '']" @click="openPage(2)">分类页</div>
+        <div v-if="this.$store.state.template.showPage.list==true" :class="['pageTabsItem', this.$store.state.template.pageStatus === 3 ? 'active' : '']" @click="openPage(3)">列表页</div>
+        <div v-if="this.$store.state.template.showPage.article==true" :class="['pageTabsItem', this.$store.state.template.pageStatus === 4 ? 'active' : '']" @click="openPage(4)">详情页</div>
+        <div v-if="this.$store.state.template.showPage.search==true" :class="['pageTabsItem', this.$store.state.template.pageStatus === 5 ? 'active' : '']" @click="openPage(5)">搜索页</div>
+        <div v-if="this.$store.state.template.showPage.aloneList==true" :class="['pageTabsItem', this.$store.state.template.pageStatus === 6 ? 'active' : '']" @click="openPage(6)">自定义列表页</div>
+        <div v-if="this.$store.state.template.showPage.aloneArticle==true" :class="['pageTabsItem', this.$store.state.template.pageStatus === 7 ? 'active' : '']" @click="openPage(7)">自定义详情页</div>
       </div>
       <pageIndex v-if="this.$store.state.template.pageStatus == 1"/>
       <pageList v-if="this.$store.state.template.pageStatus == 3"/>
@@ -100,17 +104,26 @@ export default {
         this.$router.push({
           path: '/templateStyle',
           query: {
-            id: this.editId
+            website_id:this.$route.query.website_id,
+            step:this.$route.query.step
           }
         }); 
       })
     },
     //下一步
     gotoList(){
-      this.$store.commit('template/closeEditWebsiteTemplateJsonWindow');
-      this.$router.push({
-        path: '/templateList'
-      });
+      this.$store.dispatch('template/addWebsiteTemplate',{webSiteData:this.$store.state.template.webSiteData}).then(res=>{
+        if(res.code==200){
+          
+        }else{
+          this.$message.error(res.message);
+        }
+      })
+
+      // this.$store.commit('template/closeEditWebsiteTemplateJsonWindow');
+      // this.$router.push({
+      //   path: '/templateList'
+      // });
     },
     //保存模板
     saveTemplate(){
@@ -150,6 +163,21 @@ export default {
       this.$store.commit('template/randomTemplate');
     },
     //0.全局操作 end ------------------------------------------------------------>
+
+    //1.查询网站基本信息 start ------------------------------------------------------------>
+    getWebsiteBase(){
+      this.$store.dispatch('template/getWebsiteTemplateclassintel',{website_id:this.$route.query.website_id}).then(res=>{
+        if(res.code==200){
+          //console.log(res.data.tid)
+          //console.log(res.data.website_id)
+          this.$store.commit('template/setEditWebsiteId',res.data.website_id);
+          this.$store.commit('template/setClassNumber',res.data.tid);
+        }else{
+          this.$message.error(res.message);
+        }
+      })
+    }
+    //1.查询网站基本信息 end ------------------------------------------------------------>
   },
   mounted(){
     //设置网站id
@@ -159,8 +187,13 @@ export default {
     this.$store.dispatch('template/getSiteCategory',{website_id:this.websiteId});
     //获取网站详情
     this.$store.dispatch('template/getSiteInfo',{id:this.websiteId});
-    //获取地区
+    //获取行政区划
     this.$store.dispatch('template/selectWebsiteArea',{});
+    //获取行政职能
+    this.$store.dispatch('template/selectWebsiteDepartment',{});
+
+
+    
   }
 }
 </script>

+ 2 - 2
src/views/website/editNavigation.vue

@@ -6,8 +6,8 @@
         <el-row>
           <el-col :span="8">
             <div class="searchBox">
-              <div class="searchTitle">网站导航:</div>
-              <el-input placeholder="请输入网站导航" autocomplete="off" v-model="getApiData.alias"/>
+              <div class="searchTitle">导航池名称:</div>
+              <el-input placeholder="请输入导航池名称" autocomplete="off" v-model="getApiData.alias"/>
             </div>
           </el-col>
           <el-col :span="8">