vip-subscribe-set-template.js 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430
  1. var subScribeTemplate = `
  2. <div class="sub-scribe">
  3. <ul style="border-radius:.16rem;overflow:hidden">
  4. <li class="body-item area">
  5. <a class="item-container" :href="linkobj.area">
  6. <div class="item">
  7. <span class="item-l">
  8. <span class="leading jy-icon-loaction"></span>
  9. <span class="item-label">区域</span>
  10. </span>
  11. <span class="item-r">
  12. <span class="keywords-text ellipsis">已选:{{info.area}}</span>
  13. <span class="iconfont icon-arrow"></span>
  14. </span>
  15. </div>
  16. </a>
  17. </li>
  18. <li class="body-item industry">
  19. <a class="item-container" :href="linkobj.industry">
  20. <div class="item">
  21. <span class="item-l">
  22. <span class="leading jy-icon-industry"></span>
  23. <span class="item-label">采购单位行业</span>
  24. </span>
  25. <span class="item-r">
  26. <span class="keywords-text ellipsis">已选:{{info.industry}}</span>
  27. <span class="iconfont icon-arrow"></span>
  28. </span>
  29. </div>
  30. </a>
  31. </li>
  32. <li class="body-item keywords">
  33. <a class="item-container" :href="linkobj.keyword">
  34. <div class="item">
  35. <span class="item-l">
  36. <span class="leading jy-icon-keywords"></span>
  37. <span class="item-label">关键词</span>
  38. </span>
  39. <span class="item-r">
  40. <span class="keywords-text ellipsis">未分类</span>
  41. <span class="iconfont icon-arrow"></span>
  42. </span>
  43. </div>
  44. </a>
  45. </li>
  46. <li class="body-item match-way" @click="matchWay">
  47. <a class="item-container" href="javascript:;">
  48. <div class="item">
  49. <span class="item-l">
  50. <span class="leading jy-icon-matchkeywords"></span>
  51. <span class="item-label" style="white-space: nowrap;">关键词匹配方式</span>
  52. </span>
  53. <span class="item-r">
  54. <span class="keywords-text ellipsis match-way-value">{{info.defaultVal}}</span>
  55. <span class="iconfont icon-arrow"></span>
  56. </span>
  57. </div>
  58. </a>
  59. </li>
  60. <li class="body-item info-type">
  61. <a class="item-container" :href="linkobj.infotype">
  62. <div class="item">
  63. <span class="item-l">
  64. <span class="leading jy-icon-info-type"></span>
  65. <span class="item-label">信息类型</span>
  66. </span>
  67. <span class="item-r">
  68. <span class="info-type-text ellipsis">{{info.infoType}}</span>
  69. <span class="iconfont icon-arrow"></span>
  70. </span>
  71. </div>
  72. </a>
  73. </li>
  74. <li class="body-item project-match">
  75. <a class="item-container" href="javascript:;">
  76. <div class="item">
  77. <span class="item-l">
  78. <span class="leading jy-icon-project-match"></span>
  79. <span class="item-label">
  80. <span class="label-text">项目匹配</span>
  81. <i class="iconfont icon-bangzhu" @click="projectNotice"></i>
  82. </span>
  83. </span>
  84. <span class="item-r media_switch">
  85. <div class="weui-cell__ft">
  86. <button class="jy-switch switch" :class="{checked:checkedflag}" @click="switchs"></button>
  87. </div>
  88. </span>
  89. </div>
  90. </a>
  91. </li>
  92. <li class="body-item resultpreview">
  93. <a class="item-container" :href="linkobj.resultview">
  94. <div class="item">
  95. <span class="item-l">
  96. <span class="leading_ jy-icon-resultpreview-match"></span>
  97. <span class="item-label-other">
  98. <span class="label-text">推送结果预览<span class="threeInfo">{{resultTime}}</span></span>
  99. <span v-if="littleShow" class="info-little">当前匹配信息过少,请适当修改订阅条件</span>
  100. </span>
  101. </span>
  102. <span class="item-r media_switch">
  103. <span class="info-type-text ellipsis"></span>
  104. <span class="iconfont icon-arrow"></span>
  105. </span>
  106. </div>
  107. </a>
  108. </li>
  109. <li class="body-item push-set" v-if="pushsetShow">
  110. <a class="item-container" :href="linkobj.pushsetting">
  111. <div class="item">
  112. <span class="item-l">
  113. <span class="leading_ jy-icon-push-set"></span>
  114. <span class="item-label-other">
  115. <span class="label-text">推送设置</span>
  116. </span>
  117. </span>
  118. <span class="item-r media_switch">
  119. <span class="info-type-text ellipsis"></span>
  120. <span class="iconfont icon-arrow"></span>
  121. </span>
  122. </div>
  123. </a>
  124. </li>
  125. </ul>
  126. <!-- 匹配方式 -->
  127. <div class="match-keywords-actionsheet">
  128. <div class="weui-mask" id="iosMask" @click="iosMask" style="opacity: 1;display: none;"></div>
  129. <div class="weui-actionsheet" id="iosActionsheet">
  130. <div class="weui-actionsheet__title">
  131. <p class="weui-actionsheet__title-text">关键词匹配方式</p>
  132. <i class="weui-icon-clear" id="iosActionsheetCancel" @click="iosActionsheetCancel"></i>
  133. </div>
  134. <div class="weui-actionsheet__menu">
  135. <div class="weui-actionsheet__cell" :class="{active:active==0}" @click="actionSheet('按标题匹配', 0)">
  136. <p class="cell_title">按标题匹配</p>
  137. </div>
  138. <div class="weui-actionsheet__cell" :class="{active:active==1}" @click="actionSheet('按全文匹配', 1)">
  139. <p class="cell_title">按全文匹配</p>
  140. <p class="small-title">会产生无效信息,请根据需要选择</p>
  141. </div>
  142. </div>
  143. <!-- <div class="weui-actionsheet__action">
  144. <div class="weui-actionsheet__cell" id="iosActionsheetCancel" @click="iosActionsheetCancel">取消</div>
  145. </div> -->
  146. </div>
  147. </div>
  148. </div>
  149. `
  150. var subComponent = {
  151. name: 'vip-subscribe-set-template',
  152. template: subScribeTemplate,
  153. props: {
  154. 'linkobj': {
  155. type: Object,
  156. default: function() {
  157. return {}
  158. }
  159. },
  160. "initdata": {
  161. type: Object,
  162. default: function() {
  163. return {}
  164. }
  165. },
  166. "type": {
  167. type: String,
  168. default: function() {
  169. return ''
  170. }
  171. }
  172. },
  173. data: function() {
  174. return {
  175. info: {
  176. area: '',
  177. industry: '',
  178. defaultVal: '按标题匹配',
  179. infoType: '全部类型'
  180. },
  181. // 匹配方式
  182. active: 1,
  183. pushsetShow: true,
  184. resultTime: '(近3个月内共条信息)',
  185. checkedflag: false,
  186. littleShow: false
  187. }
  188. },
  189. mounted () {
  190. this.getData()
  191. this.getResultView()
  192. },
  193. watch: {
  194. initdata: function(newVal, oldVal) {
  195. if(newVal) {
  196. this.getData()
  197. }
  198. }
  199. },
  200. methods: {
  201. getData: function() {
  202. this.setArea()
  203. this.setIndustry()
  204. this.setKeyword()
  205. this.getActionDefault()
  206. this.getIndustryType()
  207. this.getProjectMatch()
  208. },
  209. // 设置区域
  210. setArea: function() {
  211. let _this = this
  212. if(this.initdata.area) {
  213. if(JSON.stringify(this.initdata.area) == '{}') {
  214. this.info.area = '全国'
  215. } else {
  216. let proStr = ''
  217. Object.keys(this.initdata.area).forEach(function(item,index) {
  218. console.log(_this.initdata.area[item])
  219. if(_this.initdata.area[item].length == 0) {
  220. proStr += item + '、'
  221. } else {
  222. let cityStr = ''
  223. _this.initdata.area[item].forEach(function(data, i) {
  224. console.log(data)
  225. cityStr += data + '、'
  226. })
  227. if (cityStr.length > 0) {
  228. cityStr = cityStr.substr(0,cityStr.length - 1);
  229. }
  230. proStr += item+ '(' + cityStr + ')' + '、'
  231. }
  232. })
  233. if(proStr[proStr.length - 1] == '、') {
  234. proStr = proStr.substr(0,proStr.length - 1);
  235. }
  236. _this.info.area = proStr
  237. }
  238. }
  239. },
  240. // 设置行业
  241. setIndustry: function() {
  242. let _this = this
  243. if(this.initdata.industry) {
  244. if(this.initdata.industry.length == 0) {
  245. this.info.industry = '全部行业'
  246. } else {
  247. this.info.industry = this.initdata.industry + ''
  248. }
  249. }
  250. },
  251. // 设置关键词
  252. setKeyword: function() {
  253. let state = this.initdata
  254. if(state) {
  255. if(state.items) {
  256. if (state.items.length === 0) {
  257. $('.body-item.keywords .keywords-text').text('已设置' +arr.length+ '组关键词')
  258. } else {
  259. var arr = []
  260. state.items.forEach(function (item, index) {
  261. arr.push(item['s_item'])
  262. })
  263. // $('.body-item.keywords .keywords-text').text(arr.join('、'))
  264. $('.body-item.keywords .keywords-text').text('已设置' +arr.length+ '组关键词')
  265. }
  266. }
  267. } else {
  268. $('.body-item.keywords .keywords-text').text('已设置' +arr.length+ '组关键词')
  269. }
  270. },
  271. // 信息类型
  272. getIndustryType: function() {
  273. if(this.initdata) {
  274. if(this.initdata.infotype) {
  275. if (this.initdata.infotype.length === 0) {
  276. this.info.infoType = '全部类型'
  277. } else {
  278. this.info.infoType = this.initdata.infotype.join('、')
  279. }
  280. }
  281. }
  282. },
  283. // 项目匹配
  284. getProjectMatch: function() {
  285. if (this.initdata.projectmatch) {
  286. $('.switch').addClass('checked')
  287. } else {
  288. $('.switch').removeClass('checked')
  289. }
  290. },
  291. switchs: function() {
  292. // switch点击切换
  293. var $this = $(this);
  294. var hasChecked = this.checkedflag;
  295. console.log(hasChecked)
  296. if (!hasChecked) {
  297. this.checkedflag = true;
  298. this.setprojectmatch(1);
  299. } else {
  300. this.checkedflag = false;
  301. this.setprojectmatch(0);
  302. weui.toast('项目匹配已关闭', {
  303. duration: 1500,
  304. className: 'jy-toast',
  305. callback: function () {
  306. console.log('close')
  307. }
  308. });
  309. }
  310. },
  311. setprojectmatch(index) {
  312. console.log(this.checkedflag)
  313. let _this = this
  314. if (this.checkedflag) {
  315. this.checkedflag = false;
  316. $.post("/subscribepay/afterPay/setUserInfo", {pageType: "projectMatch", pmindex: index}, function (r) {
  317. if (r.flag) {
  318. var subVipState = sessionStorage.getItem('sub_vip_state');
  319. var reqData = JSON.parse(subVipState);
  320. _this.checkedflag = true;
  321. reqData.projectmatch = index;
  322. sessionStorage.setItem('sub_vip_state', JSON.stringify(reqData))
  323. }
  324. })
  325. }
  326. },
  327. // 关键词匹配方式
  328. getActionDefault: function() {
  329. let _this = this
  330. let defaultTitle = ''
  331. if(this.initdata.matchWay == 1) {
  332. defaultTitle = '按标题匹配'
  333. } else if(this.initdata.matchWay == 2) {
  334. defaultTitle = '按全文匹配'
  335. }
  336. $('#iosActionsheet .weui-actionsheet__cell').each(function (index, item) {
  337. var t = $(item).children().text().trim();
  338. console.log(t, defaultTitle)
  339. if (t == defaultTitle) {
  340. $(this).addClass('active')
  341. }
  342. })
  343. },
  344. hideActionSheet: function() {
  345. var $iosMask = $('#iosMask');
  346. var $iosActionsheet = $('#iosActionsheet');
  347. $iosActionsheet.removeClass('weui-actionsheet_toggle');
  348. $iosMask.fadeOut(200);
  349. },
  350. iosMask: function() {
  351. this.hideActionSheet()
  352. },
  353. iosActionsheetCancel: function() {
  354. this.hideActionSheet()
  355. },
  356. matchWay: function() {
  357. var $iosMask = $('#iosMask');
  358. var $iosActionsheet = $('#iosActionsheet');
  359. $iosActionsheet.addClass('weui-actionsheet_toggle');
  360. $iosMask.fadeIn(200);
  361. },
  362. actionSheet: function(title, i) {
  363. this.active = i
  364. this.info.defaultVal = title
  365. var $iosMask = $('#iosMask');
  366. var $iosActionsheet = $('#iosActionsheet');
  367. $iosActionsheet.removeClass('weui-actionsheet_toggle');
  368. $iosMask.fadeOut(200);
  369. $('.match-way-value').text(title)
  370. var nowMode = title
  371. var ModeArr = ['按标题匹配', '按全文匹配']
  372. var nowIndex = ModeArr.indexOf(nowMode)
  373. if (nowIndex !== -1) {
  374. this.setMatchway(ModeArr.indexOf(nowMode) + 1)
  375. } else {
  376. // $(this).removeClass('active').siblings().addClass('active');
  377. $('.match-way-value').text($(this).siblings().children('.cell_title').text())
  378. weui.toast('关键词匹配方式修改失败', {
  379. duration: 1500,
  380. className: 'jy-toast',
  381. callback: function () {
  382. console.log('close')
  383. }
  384. });
  385. }
  386. },
  387. setMatchway(index) {
  388. $.post("/subscribepay/afterPay/setUserInfo", {pageType: "saveSeniorset", matchtype: index}, function (r) {
  389. if (r.flag) {
  390. var subVipState = sessionStorage.getItem('sub_vip_state');
  391. var reqData = JSON.parse(subVipState);
  392. reqData.matchway = index;
  393. sessionStorage.setItem('sub_vip_state', JSON.stringify(reqData))
  394. }
  395. })
  396. },
  397. // 项目匹配问号点击事件
  398. projectNotice: function () {
  399. var str = '开启后,系统将根据你订阅的关键词自动匹配出相关联的项目,并将相关联项目的后续动态在超级订阅内一并推送。'
  400. weui.alert(str, {
  401. title: '项目匹配',
  402. className: 'jy-alert',
  403. buttons: [{
  404. label: '我知道了'
  405. }]
  406. });
  407. },
  408. // 最近三个月推送结果预览总数
  409. getResultView: function() {
  410. let _this = this
  411. $.ajax({
  412. type: 'POST',
  413. url: '/subscribepay/afterPay/getPushCount',
  414. success: function(res) {
  415. console.log(res)
  416. if(_this.type == 'introduce') {
  417. _this.pushsetShow = false
  418. _this.resultTime = '(近三个月)'
  419. } else {
  420. if(res.count < 30) {
  421. _this.littleShow = true
  422. }
  423. _this.resultTime = '(近3个月内共' + res.count + '条信息)'
  424. }
  425. }
  426. })
  427. }
  428. },
  429. }