template.js 24 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643
  1. import {getSiteInfo,getSiteCategory,selectWebsiteDepartment,selectWebsiteArea,getWebsiteArticlesList,
  2. selectWebsiteArticleInfo,getWebsiteCategory} from '@/api/cms'
  3. import { Message } from 'element-ui'; //注意在这里引入是非常不符合规范的
  4. import Vue from 'vue'; //导入Vue 因为我们要进行深层次的json修改,深拷贝的数据无法令视图更新
  5. //所以我们需要使用Vue的$set方法来强制视图更新,在vuex中没有this,这里我们需要通过引入vue来使用vue.$set
  6. //引入随机模板json
  7. import randomTemplateJson from '@/utils/templateJson/index/1.js';//首页
  8. const state = {
  9. //0.全局配置 start------------------------------------------------------------>
  10. editWebsiteId: "",//当前编辑网站的id
  11. stepStatus: true,//是否显示现在进行到哪一步:true=显示 false=不显示
  12. //0.全局配置 end------------------------------------------------------------>
  13. //1.画布数据 start------------------------------------------------------------>
  14. pageStatus:1,//当前编辑哪个页面 1=首页 2=分类页 3=列表页 4=详情页 5=搜索页 6=自定义列表页 7=自定义详情页
  15. menuType:1, //当前菜单显示板块还是组件 1=板块 2=组件
  16. previewStatus:false,//是否预览
  17. pageData: { //自助建站拖拽板块的数据,注意,这里并不是提交到后台的数据
  18. index:[
  19. ],//首页
  20. class:[],//分类页
  21. list:[],//列表页
  22. article:[],//详情页
  23. search:[],//搜索页
  24. aloneList:[],//自定义列表页
  25. aloneArticle:[],//自定义详情页
  26. },
  27. // layout: [
  28. // // i = id
  29. // // w = 最大宽度是12
  30. // // { i: "0", x: 0, y: 0, w: 12, h: 2, content:""},
  31. // // { i: "1", x: 0, y: 0, w: 12, h: 2, content:""},
  32. // ],
  33. //1.画布数据 end------------------------------------------------------------>
  34. //2.站点数据 start------------------------------------------------------------>
  35. webSiteInfo:"",//网站信息
  36. webSiteMenu:"",//网站包含的导航池
  37. area:{//地区
  38. economize:[],//省区
  39. market:[],//市区
  40. county:[]//县区
  41. },
  42. departmentList:"",//职能部门
  43. //2.站点数据 end------------------------------------------------------------>
  44. //3.网站数据 start------------------------------------------------------------>
  45. editWindowStatus:false,//编辑组件弹出框是否显示
  46. editComponentWindowStatus:false,//选择组件样式弹出框是否显示
  47. editWindowTitle:"",//编辑弹出框标题
  48. editSectorId:0,//当前正在编辑的板块id
  49. editDataSort:0,//当前正在编辑的数据位置
  50. editComponentSort:0,//当前正在编辑的组件id
  51. editComponentType:0,//当前正在编辑的组件类型
  52. editComponentSize:0,//当前组件展示的条数
  53. editComponentStyle:0,//当前编辑的组件样式
  54. editWebsiteCategory:[],//当前网站全部关联导航
  55. webSiteData:{
  56. //1.base网站基本信息
  57. base:{
  58. websiteId:1,//网站id
  59. },
  60. //2.style信息
  61. style:{
  62. styleId:1,//风格id
  63. },
  64. //3.板块信息 header,menu,footer 是页面自带的无需构建
  65. template:{
  66. //index = 首页 class=分类页 list=列表页 article=详情页 search=搜索页 aloneList=自定义列表页 aloneArticle=自定义详情页
  67. index:[],
  68. class:[],//分类页
  69. list:[],//列表页
  70. article:[],//详情页
  71. search:[],//搜索页
  72. aloneList:[],//自定义列表页
  73. aloneArticle:[],//自定义详情页
  74. }
  75. },
  76. //3.网站数据 end------------------------------------------------------------>
  77. //4.组件回显数据 start------------------------------------------------------------>
  78. componentViewData:{
  79. pid_arr:[],//导航池
  80. pageSize:"",//展示条数
  81. adName:"",//广告名称
  82. titleName:"",//标题名称
  83. }
  84. //4.组件回显数据 start------------------------------------------------------------>
  85. }
  86. const mutations = {
  87. //0.全局配置 start------------------------------------------------------------>
  88. //设置网站的id
  89. setEditWebsiteId(state,id){
  90. state.editWebsiteId = id;
  91. },
  92. //展示步骤
  93. showStepStatus(state){
  94. state.stepStatus = true;
  95. },
  96. //隐藏步骤
  97. hiddenStepStatus(state){
  98. state.stepStatus = false;
  99. },
  100. //设置步骤
  101. setPageStatus(state,num){
  102. state.pageStatus = num;
  103. },
  104. //设置预览状态
  105. setPreviewStatus(state){
  106. state.previewStatus = !state.previewStatus;
  107. },
  108. //打开编辑组件弹出框
  109. setEditWindowStatus(state,data){
  110. state.editWindowStatus = true;
  111. state.editSectorId = data.id;
  112. state.editDataSort = data.dataSort;
  113. state.editComponentSort = data.sort;
  114. state.editComponentType = data.type;
  115. state.editComponentSize = data.size;
  116. },
  117. //关闭编辑组件弹出框
  118. closeEditWindowStatus(state){
  119. state.editWindowStatus = false;
  120. },
  121. //打开选择组件样式弹出框
  122. setComponentStyleStatus(state,data){
  123. state.editComponentWindowStatus = true;
  124. state.editSectorId = data.id;
  125. state.editDataSort = data.dataSort;
  126. state.editComponentSort = data.sort;
  127. state.editComponentType = data.type;
  128. state.editComponentStyle = data.style;
  129. },
  130. //关闭选择组件样式弹出框
  131. closeComponentStyleStatus(state){
  132. state.editComponentWindowStatus = false;
  133. },
  134. //选择组件样式
  135. selectComponentStyleNumber(state,data){
  136. state.editComponentStyle = data;
  137. },
  138. //设置组件回显数据
  139. setComponentViewData(state,data){
  140. //首页
  141. if(state.pageStatus == 1){
  142. //找到要修改的板块
  143. const targetModuleIndex = state.pageData.index.findIndex(module => module.i === data.id);
  144. //判断组件类型 1=普通新闻 2=tabs新闻选项卡 3=广告 4=友情链接 6=静态组件 7=文本 8=评论
  145. if(state.editComponentType == 1){
  146. state.componentViewData.pid_arr = state.pageData.index[targetModuleIndex].content.componentList[data.sort].componentData.category_id;
  147. state.componentViewData.pageSize = state.editComponentSize;
  148. }
  149. //2=tabs新闻选项卡
  150. if(state.editComponentType == 2){
  151. state.componentViewData.pid_arr = state.pageData.index[targetModuleIndex].content.componentList[data.sort].componentData.category_id;
  152. state.componentViewData.pageSize = state.editComponentSize;
  153. }
  154. //3=广告名称
  155. if(state.editComponentType == 3){
  156. state.componentViewData.adName = state.pageData.index[targetModuleIndex].content.componentList[data.sort].componentData.text;
  157. }
  158. //7=标题
  159. if(state.editComponentType == 7){
  160. state.componentViewData.titleName = state.pageData.index[targetModuleIndex].content.componentList[data.sort].componentData.text;
  161. }
  162. }
  163. //pageStatus==2 分类页
  164. if(state.pageStatus == 2){}
  165. //pageStatus==3 列表页
  166. if(state.pageStatus == 3){}
  167. //pageStatus==4 详情页
  168. if(state.pageStatus == 4){}
  169. //pageStatus==5 搜索页
  170. if(state.pageStatus == 5){}
  171. //pageStatus==6 自定义列表页
  172. if(state.pageStatus == 6){}
  173. //pageStatus==7 自定义详情页
  174. if(state.pageStatus == 7){}
  175. },
  176. //0.全局配置 start------------------------------------------------------------>
  177. //1.配置模块 start------------------------------------------------------------>
  178. //添加板块
  179. addModule(state,data){
  180. //pageStatus==1 首页
  181. if(state.pageStatus == 1){
  182. //判断当前一共有多少个模块最多能添加10个
  183. if(state.pageData.index.length >= 10){
  184. Message.error('最多只能添加10个模块!');
  185. return;
  186. }else{
  187. //通过时间戳生成id
  188. const currentTimestamp = Date.now();
  189. let id = currentTimestamp;
  190. //data.type 组件名称 data.h 模块高度
  191. //计算当前布局的最大 y 值
  192. const maxY = Math.max(...state.pageData.index.map(item => item.y), 0);
  193. console.log(data);
  194. //设置数据在构建json中的位置
  195. let dataSort = state.pageData.index.length;
  196. //添加板块id
  197. state.pageData.index.push({
  198. //i: state.pageData.index.length, //base 0.0.1 此方法会导致重复的id出现
  199. i: id,
  200. x: 0,
  201. y: maxY + 1,
  202. w: 12,
  203. h: data.h,
  204. type: data.type,
  205. //sectorData:data.jsonData //base 0.0.1 此问题导致深层数据无法被视图渲染
  206. content:data.jsonData,
  207. dataSort:dataSort
  208. });
  209. console.log("当前添加模块的dataSort为:" + dataSort);
  210. //当前的页面构建数据
  211. console.log(state.pageData.index);
  212. }
  213. }
  214. //pageStatus==2 分类页
  215. if(state.pageStatus == 2){}
  216. //pageStatus==3 列表页
  217. if(state.pageStatus == 3){}
  218. //pageStatus==4 详情页
  219. if(state.pageStatus == 4){}
  220. //pageStatus==5 搜索页
  221. if(state.pageStatus == 5){}
  222. //pageStatus==6 自定义列表页
  223. if(state.pageStatus == 6){}
  224. //pageStatus==7 自定义详情页
  225. if(state.pageStatus == 7){}
  226. },
  227. //删除板块
  228. deleteModule(state,data){
  229. //data.i = id
  230. //data.dataSort = dataSort
  231. //pageStatus==1 首页
  232. if(state.pageStatus == 1){
  233. //必须通过重新查找id的方式来删除
  234. const indexToRemove = state.pageData.index.findIndex(item => item.i === data.i);
  235. if (indexToRemove !== -1) {
  236. state.pageData.index.splice(indexToRemove, 1);
  237. Message.success('模块已删除!');
  238. console.log('模块已删除,当前的页面构建数据为:', state.pageData.index);
  239. } else {
  240. Message.warning('未找到要删除的模块!');
  241. }
  242. // base 0.0.2 如果使用splice方法删除sort,当你就剩下最后一个的时候,会出现找不到那个元素的问题
  243. // state.pageData.index.splice(data.dataSort,1);
  244. // Message.success('模块已删除!');
  245. // console.log(state.pageData.index);
  246. }
  247. //pageStatus==2 分类页
  248. if(state.pageStatus == 2){}
  249. //pageStatus==3 列表页
  250. if(state.pageStatus == 3){}
  251. //pageStatus==4 详情页
  252. if(state.pageStatus == 4){}
  253. //pageStatus==5 搜索页
  254. if(state.pageStatus == 5){}
  255. //pageStatus==6 自定义列表页
  256. if(state.pageStatus == 6){}
  257. //pageStatus==7 自定义详情页
  258. if(state.pageStatus == 7){}
  259. },
  260. //设置组件样式
  261. setComponentStyleNumber(state,data){
  262. let id = state.editSectorId;
  263. let dataSort = state.editDataSort;
  264. let sort = state.editComponentSort;
  265. let num = state.editComponentStyle;
  266. console.log(id,dataSort,sort,num);
  267. //pageStatus==1 首页
  268. if(state.pageStatus == 1){
  269. // 获取当前模块数据并进行深拷贝
  270. let module = JSON.parse(JSON.stringify(state.pageData.index[dataSort]));
  271. //module.content.componentList[sort].component_style = num;
  272. //确保修改属性时 Vue 能监控到变化
  273. Vue.set(module.content.componentList, sort, {
  274. ...module.content.componentList[sort],
  275. component_style: num
  276. });
  277. // 拷贝后直接替换原来的板块
  278. //state.pageData.index[id] = module;
  279. // 使用Vue.set来强制视图更新
  280. Vue.set(state.pageData.index, dataSort, module);
  281. console.log("当前的板块数据为:");
  282. console.log(state.pageData.index);
  283. }
  284. //pageStatus==2 分类页
  285. if(state.pageStatus == 2){}
  286. //pageStatus==3 列表页
  287. if(state.pageStatus == 3){}
  288. //pageStatus==4 详情页
  289. if(state.pageStatus == 4){}
  290. //pageStatus==5 搜索页
  291. if(state.pageStatus == 5){}
  292. //pageStatus==6 自定义列表页
  293. if(state.pageStatus == 6){}
  294. //pageStatus==7 自定义详情页
  295. if(state.pageStatus == 7){}
  296. },
  297. //保存组件设置的数据
  298. saveComponentData(state,data){
  299. //传入的板块id
  300. console.log("当前编辑板块:" + data.id)
  301. //pageStatus==1 首页
  302. if(state.pageStatus == 1){
  303. const targetModuleIndex = state.pageData.index.findIndex(module => module.i === data.id);
  304. console.log("要修改的模块id为:") //找到要修改的板块
  305. console.log(data.sort) //找到要修改的板块
  306. console.log(targetModuleIndex) //找到要修改的板块
  307. //console.log(targetModuleIndex) //找到要修改的板块
  308. //state.pageData.index[targetModuleIndex].content.componentList[data.sort] //当前编辑的组件
  309. //data.data.pid_arr //导航池
  310. //state.editComponentSize //展示条数
  311. //判断数据的类型 1=普通新闻 2=tabs新闻选项卡 3=广告 4=友情链接 6=静态组件 7=文本 8=评论
  312. //1=普通新闻
  313. //注意,vue有一个bug就是,当你修改复杂对象的时候,如果对象的内部是数组
  314. //vue可能无法检测到变化,而当你修改无法被检测变化的数据时,就会把所有数据都修改成相同的值
  315. //解决办法是通过vue的set方法将整个对象,即你的数组外层那个对象进行深拷贝,然后修改完再替换回去
  316. if(state.editComponentType == 1){
  317. // 获取当前模块数据并进行深拷贝
  318. let module = JSON.parse(JSON.stringify(state.pageData.index[targetModuleIndex])); // 深拷贝整个模块
  319. // 更新 category_id 和 pageSize
  320. module.content.componentList[data.sort].componentData.category_id = data.data.pid_arr; // 设置 category_id
  321. module.content.componentList[data.sort].componentData.pageSize = state.editComponentSize; // 设置 pageSize
  322. // 使用Vue.set来强制视图更新
  323. Vue.set(state.pageData.index, targetModuleIndex, module); // 替换为深拷贝的模块
  324. console.log("当前的板块数据为:");
  325. console.log(state.pageData.index);
  326. }
  327. //2=tabs新闻选项卡
  328. if(state.editComponentType == 2){
  329. // 获取当前模块数据并进行深拷贝
  330. let module = JSON.parse(JSON.stringify(state.pageData.index[targetModuleIndex])); // 深拷贝整个模块
  331. // 更新 category_id 和 pageSize
  332. module.content.componentList[data.sort].componentData.category_id = data.data.pid_arr; // 设置 category_id
  333. module.content.componentList[data.sort].componentData.pageSize = state.editComponentSize; // 设置 pageSize
  334. // 使用Vue.set来强制视图更新
  335. Vue.set(state.pageData.index, targetModuleIndex, module); // 替换为深拷贝的模块
  336. console.log("当前的板块数据为:");
  337. console.log(state.pageData.index);
  338. }
  339. //3=广告
  340. if(state.editComponentType == 3){;
  341. let module = JSON.parse(JSON.stringify(state.pageData.index[targetModuleIndex]));
  342. module.content.componentList[data.sort].componentData.text = data.data.adName;
  343. Vue.set(state.pageData.index, targetModuleIndex, module);
  344. console.log("当前的板块数据为:");
  345. console.log(state.pageData.index);
  346. }
  347. //4=友情链接
  348. //if(state.editComponentType == 4){}
  349. //6=静态组件
  350. //if(state.editComponentType == 6){}
  351. //7=文本
  352. if(state.editComponentType == 7){
  353. let module = JSON.parse(JSON.stringify(state.pageData.index[targetModuleIndex]));
  354. module.content.componentList[data.sort].componentData.text = data.data.titleName;
  355. Vue.set(state.pageData.index, targetModuleIndex, module);
  356. console.log("当前的板块数据为:");
  357. console.log(state.pageData.index);
  358. }
  359. //8=评论
  360. //if(state.editComponentType == 8){}
  361. }
  362. //pageStatus==2 分类页
  363. if(state.pageStatus == 2){}
  364. //pageStatus==3 列表页
  365. if(state.pageStatus == 3){}
  366. //pageStatus==4 详情页
  367. if(state.pageStatus == 4){}
  368. //pageStatus==5 搜索页
  369. if(state.pageStatus == 5){}
  370. //pageStatus==6 自定义列表页
  371. if(state.pageStatus == 6){}
  372. //pageStatus==7 自定义详情页
  373. if(state.pageStatus == 7){}
  374. },
  375. //移动板块 (暂时停用)
  376. moveModule(state, data) {
  377. Message.error('移动板块功能暂时停用!');
  378. // pageStatus == 1 首页
  379. // if (state.pageStatus == 1) {
  380. // const moveType = data.moveType;
  381. // const moduleId = data.i;
  382. // const modules = state.pageData.index;
  383. // // 查找模块在数组中的实际索引
  384. // const thisIndex = modules.findIndex(module => module.i === moduleId);
  385. // if (thisIndex === -1) {
  386. // Message.error('模块未找到!');
  387. // return;
  388. // }
  389. // const thisY = modules[thisIndex].y;
  390. // let thatY;
  391. // if (moveType === 'up') {
  392. // thatY = Math.max(
  393. // ...modules.filter(item => item.y < thisY).map(item => item.y)
  394. // );
  395. // if (thatY === -Infinity) {
  396. // Message.error('已经是顶部了!');
  397. // return;
  398. // }
  399. // const thatIndex = modules.findIndex(item => item.y === thatY);
  400. // if (thatIndex === -1) {
  401. // Message.error('上方模块未找到!');
  402. // return;
  403. // }
  404. // [modules[thisIndex].y, modules[thatIndex].y] = [modules[thatIndex].y, modules[thisIndex].y];
  405. // } else if (moveType === 'down') {
  406. // thatY = Math.min(
  407. // ...modules.filter(item => item.y > thisY).map(item => item.y)
  408. // );
  409. // if (thatY === Infinity) {
  410. // Message.error('已经是底部了!');
  411. // return;
  412. // }
  413. // const thatIndex = modules.findIndex(item => item.y === thatY);
  414. // if (thatIndex === -1) {
  415. // Message.error('下方模块未找到!');
  416. // return;
  417. // }
  418. // [modules[thisIndex].y, modules[thatIndex].y] = [modules[thatIndex].y, modules[thisIndex].y];
  419. // } else {
  420. // Message.error('未知的移动类型!');
  421. // return;
  422. // }
  423. // // 交换后对模块进行排序以确保顺序一致
  424. // modules.sort((a, b) => a.y - b.y);
  425. // // 使用 Vue.set 强制更新数组,确保视图更新
  426. // Vue.set(state.pageData, 'index', [...modules]);
  427. // console.log(state.pageData.index); //打印查看是否已修改
  428. // }
  429. // pageStatus == 2 分类页
  430. // if (state.pageStatus == 2) {}
  431. // // pageStatus == 3 列表页
  432. // if (state.pageStatus == 3) {}
  433. // // pageStatus == 4 详情页
  434. // if (state.pageStatus == 4) {}
  435. // // pageStatus == 5 搜索页
  436. // if (state.pageStatus == 5) {}
  437. // // pageStatus == 6 自定义列表页
  438. // if (state.pageStatus == 6) {}
  439. // // pageStatus == 7 自定义详情页
  440. // if (state.pageStatus == 7) {}
  441. },
  442. //修改首页板块高度
  443. setModuleHeight(state,data){
  444. // pageStatus == 1 首页
  445. if (state.pageStatus == 1) {
  446. console.log(data);
  447. state.pageData.index[data.i].h = data.h;
  448. console.log(state.pageData.index[data.i]);
  449. }
  450. // pageStatus == 2 分类页
  451. if (state.pageStatus == 2) {}
  452. // pageStatus == 3 列表页
  453. if (state.pageStatus == 3) {}
  454. // pageStatus == 4 详情页
  455. if (state.pageStatus == 4) {}
  456. // pageStatus == 5 搜索页
  457. if (state.pageStatus == 5) {}
  458. // pageStatus == 6 自定义列表页
  459. if (state.pageStatus == 6) {}
  460. // pageStatus == 7 自定义详情页
  461. if (state.pageStatus == 7) {}
  462. },
  463. //格式化模板信息
  464. formatTemplateInfo(state, data) {
  465. //console.log(data.type);
  466. //按照data.data.y的大小排序
  467. data.data.sort((a, b) => a.y - b.y);
  468. console.log(data,data);
  469. let websiteData = [];
  470. //获取板块的sort
  471. for (let index in data.data) {
  472. console.log(data.data[index].content);
  473. data.data[index].content.sort = Number(index)+1;
  474. if(data.type=="index"){
  475. //不要把数据直接保存到state.webSiteData.template中,否则无法删除
  476. websiteData.push(data.data[index].content)
  477. }
  478. }
  479. //保存到对应的页面json中
  480. if(data.type=="index"){
  481. state.webSiteData.template.index = websiteData;
  482. }
  483. },
  484. //保存模板
  485. saveTemplate(state) {
  486. //调用mutations中的方法无需使用$store
  487. //格式化index的信息
  488. this.commit('template/formatTemplateInfo',{data:state.pageData.index,type:"index"});
  489. console.log(state.webSiteData);
  490. },
  491. //随机生成模板
  492. randomTemplate(state){
  493. console.log("随机生成模板");
  494. const randomIndex = Math.floor(Math.random() * 3); // Generates a random number between 1 and 2
  495. console.log(`随机生成的数字是: ${randomIndex}`);
  496. // pageStatus == 1 首页
  497. if (state.pageStatus == 1) {}
  498. // pageStatus == 2 分类页
  499. if (state.pageStatus == 2) {}
  500. // pageStatus == 3 列表页
  501. if (state.pageStatus == 3) {}
  502. // pageStatus == 4 详情页
  503. if (state.pageStatus == 4) {}
  504. // pageStatus == 5 搜索页
  505. if (state.pageStatus == 5) {}
  506. // pageStatus == 6 自定义列表页
  507. if (state.pageStatus == 6) {}
  508. // pageStatus == 7 自定义详情页
  509. if (state.pageStatus == 7) {}
  510. },
  511. //1.配置模块 end------------------------------------------------------------>
  512. //2.获取站点信息 start------------------------------------------------------------>
  513. //获取站点详情
  514. setWebsiteInfo(state,data){
  515. state.webSiteInfo = data;
  516. },
  517. //获取站点导航池
  518. setGetSiteCategory(state,data) {
  519. state.webSiteMenu = data;
  520. },
  521. //设置地区
  522. setArea(state,data){
  523. //都没有的时候返回的是省
  524. if(data.province==undefined){
  525. state.area.economize = data;
  526. }
  527. //没有region的时候返回的是市
  528. if(data.province!=undefined&&data.city!=undefined&&data.region==undefined){
  529. state.area.market = data.city;
  530. }
  531. //有region的时候返回的是县
  532. if(data.province!=undefined&&data.city!=undefined&&data.region!=undefined){
  533. state.area.county = data.region;
  534. }
  535. },
  536. //获取全部导航
  537. setWebsiteCategory(state,data){
  538. let arrayData = []
  539. for(let item of data){
  540. let options = {
  541. key:item.id,
  542. label:item.name,
  543. value:item.id
  544. }
  545. arrayData.push(options);
  546. }
  547. state.editWebsiteCategory = arrayData;
  548. },
  549. //2.获取站点信息 end------------------------------------------------------------>
  550. }
  551. const actions = {
  552. //1.站点数据 start------------------------------------------------------------>
  553. //获取网站基本信息
  554. getSiteInfo({commit},data){
  555. return new Promise((resolve, reject) => {
  556. getSiteInfo(data).then(response => {
  557. commit('setWebsiteInfo', response.data);
  558. resolve(response)
  559. }).catch(error => {
  560. reject(error)
  561. })
  562. })
  563. },
  564. //获取网站导航池
  565. getSiteCategory({commit},data){
  566. return new Promise((resolve, reject) => {
  567. getSiteCategory(data).then(response => {
  568. commit('setGetSiteCategory', response.data);
  569. resolve(response)
  570. }).catch(error => {
  571. reject(error)
  572. })
  573. })
  574. },
  575. //设置行政区划
  576. selectWebsiteArea({commit},data){
  577. return new Promise((resolve, reject) => {
  578. selectWebsiteArea(data).then(response => {
  579. commit('setArea', response.data);
  580. resolve(response)
  581. }).catch(error => {
  582. reject(error)
  583. })
  584. })
  585. },
  586. //获取新闻列表
  587. getWebsiteArticlesList({commit},data){
  588. return new Promise((resolve, reject) => {
  589. getWebsiteArticlesList(data).then(response => {
  590. resolve(response)
  591. }).catch(error => {
  592. reject(error)
  593. })
  594. })
  595. },
  596. //获取新闻详情
  597. selectWebsiteArticleInfo({commit},data){
  598. return new Promise((resolve, reject) => {
  599. selectWebsiteArticleInfo(data).then(response => {
  600. resolve(response)
  601. }).catch(error => {
  602. reject(error)
  603. })
  604. })
  605. },
  606. //获取全部导航池
  607. getWebsiteCategory({commit},data){
  608. return new Promise((resolve, reject) => {
  609. getWebsiteCategory(data).then(response => {
  610. commit('setWebsiteCategory', response.data);
  611. resolve(response)
  612. }).catch(error => {
  613. reject(error)
  614. })
  615. })
  616. },
  617. //1.站点数据 end------------------------------------------------------------>
  618. }
  619. export default {
  620. namespaced: true,
  621. state,
  622. mutations,
  623. actions
  624. }