guide.js 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323
  1. /**
  2. * intro.js新手指引工具
  3. * introOption.steps = steps[title]
  4. * this.$intro().setOptions(introOption).start()
  5. */
  6. // const introOption= { // 参数对象
  7. // prevLabel: '上一步',
  8. // nextLabel: '下一步',
  9. // skipLabel: '跳过',
  10. // doneLabel: '完成',
  11. // tooltipClass: 'intro-tooltip', /* 引导说明文本框的样式 */
  12. // // highlightClass: 'intro-highlight', /* 说明高亮区域的样式 */
  13. // exitOnEsc: true, /* 是否使用键盘Esc退出 */
  14. // exitOnOverlayClick: false, /* 是否允许点击空白处退出 */
  15. // keyboardNavigation: true, /* 是否允许键盘来操作 */
  16. // showBullets: true, /* 是否使用点显示进度 */
  17. // showProgress: false, /* 是否显示进度条 */
  18. // showStepNumbers: false,//是否显示说明的数据步骤
  19. // scrollToElement: true, /* 是否滑动到高亮的区域 */
  20. // overlayOpacity: 0.75, // 遮罩层的透明度 0-1之间
  21. // positionPrecedence: ['bottom', 'top', 'right', 'left'], /* 当位置选择自动的时候,位置排列的优先级 */
  22. // disableInteraction: false, /* 是否禁止与元素的相互关联 */
  23. // hidePrev: true, /* 是否在第一步隐藏上一步 */
  24. // hideNext: true, /* 是否在最后一步隐藏下一步 */
  25. // steps: [], /* steps步骤,可以写个工具类保存起来 */
  26. // helperElementPadding: 2,//提示边框的 padding
  27. // disableInteraction: false,//是否禁止与元素的相互关联
  28. // }
  29. // const steps = {
  30. // '首页':[
  31. // { title: '系统使用指导', element: '#step1', intro: `鼠标悬浮在各个功能模块上,可快速查找系统对应操作SOP以及运维人员。`},
  32. // { title: '个人信息', element: '#step2', intro: `点击个人头像/下拉图标,选择个人信息,初始密码为******,建议修改为个人账号密码。`, },
  33. // { title: '重新引导', element: '#step3', intro: '点击此处可重新查看引导流程。', },
  34. // ],
  35. // }
  36. const steps = {
  37. 'home':[
  38. {
  39. element: "#step1", // 需要引导展示的iD
  40. popover: {
  41. title: "轮播图", //展示模块标题
  42. description: "介绍系统的功能。", // 展示模块类容
  43. side: "right" // 模块的位置 可以定位 看自己了
  44. }
  45. },
  46. {
  47. element: "#step2", // 需要引导展示的iD
  48. popover: {
  49. title: "检索框", //展示模块标题
  50. description: "可以搜索想要搜索的信息。", // 展示模块类容
  51. side: "right" // 模块的位置 可以定位 看自己了
  52. }
  53. },
  54. {
  55. element: "#step3", // 需要引导展示的iD
  56. popover: {
  57. title: "报告统计", //展示模块标题
  58. description: "统计各种类型报告的数量。", // 展示模块类容
  59. side: "right" // 模块的位置 可以定位 看自己了
  60. }
  61. },
  62. {
  63. element: "#step4", // 需要引导展示的iD
  64. popover: {
  65. title: "任务统计", //展示模块标题
  66. description: "统计自己完成与未完成的任务数量。", // 展示模块类容
  67. side: "right" // 模块的位置 可以定位 看自己了
  68. }
  69. },
  70. {
  71. element: "#step5", // 需要引导展示的iD
  72. popover: {
  73. title: "事件统计", //展示模块标题
  74. description: "统计八大应用场景下事件的数量。", // 展示模块类容
  75. side: "right" // 模块的位置 可以定位 看自己了
  76. }
  77. },
  78. ],
  79. //场景可视化
  80. 'visual':[],
  81. //专利数据库首页
  82. 'project':[
  83. {
  84. element: "#step1",
  85. popover: {
  86. title: "检索专利数据库",
  87. description: "选择需要检索的字段,填入检索信息后点击搜索按钮",
  88. side: "right"
  89. }
  90. },
  91. {
  92. element: "#step2",
  93. popover: {
  94. title: "分组",
  95. description: "选择需要分组的字段进行分组查看",
  96. side: "right"
  97. }
  98. },
  99. {
  100. element: "#step3",
  101. popover: {
  102. title: "视图",
  103. description: "有两种查看专利数据库类别的视图方式可以查看",
  104. side: "right"
  105. }
  106. },
  107. {
  108. element: "#step4",
  109. popover: {
  110. title: "操作按钮",
  111. description: "",
  112. side: "right"
  113. }
  114. },
  115. ],
  116. //产品首页
  117. 'product':[
  118. {
  119. element: "#step1",
  120. popover: {
  121. title: "检索",
  122. description: "选择需要检索的字段,填入检索信息后点击搜索按钮",
  123. side: "right"
  124. }
  125. },
  126. {
  127. element: "#step2",
  128. popover: {
  129. title: "新增类别",
  130. description: "点击按钮会弹出弹窗添加需要添加的产品类别",
  131. side: "right"
  132. }
  133. },
  134. ],
  135. //事件首页
  136. 'event':[
  137. {
  138. element: "#step1",
  139. popover: {
  140. title: "检索",
  141. description: "选择需要检索的字段,填入检索信息后点击搜索按钮",
  142. side: "right"
  143. }
  144. },
  145. {
  146. element: "#step2",
  147. popover: {
  148. title: "分组",
  149. description: "选择需要分组的字段进行分组查看",
  150. side: "right"
  151. }
  152. },
  153. {
  154. element: "#step3",
  155. popover: {
  156. title: "视图",
  157. description: "有三种查看事件的视图方式可以查看",
  158. side: "right"
  159. }
  160. },
  161. {
  162. element: "#step4",
  163. popover: {
  164. title: "操作按钮",
  165. description: "",
  166. side: "right"
  167. }
  168. },
  169. ],
  170. //报告首页
  171. 'report':[
  172. {
  173. element: "#step1",
  174. popover: {
  175. title: "检索",
  176. description: "选择需要检索的字段,填入检索信息后点击搜索按钮",
  177. side: "right"
  178. }
  179. },
  180. {
  181. element: "#step2",
  182. popover: {
  183. title: "分组",
  184. description: "选择需要分组的字段进行分组查看",
  185. side: "right"
  186. }
  187. },
  188. {
  189. element: "#step3",
  190. popover: {
  191. title: "视图",
  192. description: "有三种查看报告的视图方式可以查看",
  193. side: "right"
  194. }
  195. },
  196. {
  197. element: "#step4",
  198. popover: {
  199. title: "操作按钮",
  200. description: "",
  201. side: "right"
  202. }
  203. },
  204. ],
  205. //专利挖掘首页
  206. 'patentMining':[
  207. {
  208. element: "#step1",
  209. popover: {
  210. title: "检索",
  211. description: "选择需要检索的字段,填入检索信息后点击搜索按钮",
  212. side: "right"
  213. }
  214. },
  215. {
  216. element: "#step2",
  217. popover: {
  218. title: "分组",
  219. description: "选择需要分组的字段进行分组查看",
  220. side: "right"
  221. }
  222. },
  223. {
  224. element: "#step3",
  225. popover: {
  226. title: "视图",
  227. description: "有三种查看专利挖掘项目的视图方式可以查看",
  228. side: "right"
  229. }
  230. },
  231. {
  232. element: "#step4",
  233. popover: {
  234. title: "操作按钮",
  235. description: "",
  236. side: "right"
  237. }
  238. },
  239. ],
  240. }
  241. /**
  242. * driver.js v1.3.0 新手指引工具
  243. */
  244. import {driver} from 'driver.js'
  245. import 'driver.js/dist/driver.css'
  246. //配置
  247. const config ={
  248. overlayOpacity: 0.75,
  249. popoverClass: "scoped-class",
  250. stagePadding: 10,
  251. // showButtons: [ 'next','prev', 'close'], //1 pass an array of buttons to show
  252. allowKeyboardControl:true,
  253. allowClose: true, // 禁止点击外部关闭
  254. showProgress:true,
  255. progressText:'{{current}}/{{total}}',
  256. doneBtnText: '完成', // 结束按钮的文字
  257. animate: true, // 动画
  258. stageBackground: '#ffffff', // 突出显示元素的背景颜色
  259. nextBtnText: '下一步', // 下一步按钮的文字
  260. prevBtnText: '上一步', // 上一步按钮的文字
  261. closeBtnText: '关闭', // 关闭按钮的文字
  262. // overlayColor:'#f40',
  263. smoothScroll:true,
  264. }
  265. export const guide = {
  266. methods: {
  267. //打开新手指引
  268. openGuide(title){
  269. var userinfo = this.$store.state.user.userinfo
  270. var firstRoute = localStorage.firstRoute
  271. if(firstRoute){
  272. var arr = JSON.parse(firstRoute)
  273. if(arr[userinfo.id]){
  274. var index = arr[userinfo.id].indexOf(title)
  275. if(index != -1){
  276. return false
  277. }
  278. }else{
  279. arr[userinfo.id] = []
  280. }
  281. }else{
  282. var arr = {}
  283. arr[userinfo.id] = []
  284. }
  285. this.startGuide(title,arr,userinfo)
  286. },
  287. //开始新手指引(title:当前路由标识,arr:需要展示的指引步骤,userinfo:用户信息)
  288. startGuide(title,arr,userinfo){
  289. this.$nextTick(()=>{
  290. if(!steps[title]){
  291. return false
  292. }
  293. var step = steps[title].filter(item=>{
  294. return !item.sign || this.$permission(item.sign)
  295. })
  296. const drivers = driver({
  297. ...config,
  298. steps:step,
  299. // onCloseClick:() => {
  300. // arr.push(title)
  301. // localStorage.firstRoute = JSON.stringify(arr)
  302. // drivers.destroy();
  303. // },
  304. onDestroyed:()=>{
  305. if(userinfo){
  306. if(arr[userinfo.id]){
  307. arr[userinfo.id].push(title)
  308. localStorage.firstRoute = JSON.stringify(arr)
  309. }
  310. }
  311. drivers.destroy();
  312. }
  313. })
  314. drivers.drive()
  315. })
  316. }
  317. }
  318. }