invite-new-user-rule.vue 6.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269
  1. <template>
  2. <layoutBack>
  3. <layout title="活动规则" padding="0">
  4. <div class="rule-container">
  5. <div class="rule-wrap" v-html="rule">
  6. </div>
  7. </div>
  8. </layout>
  9. </layoutBack>
  10. </template>
  11. <script>
  12. import layoutBack from '@/components/layout';
  13. import layout from './components/layout';
  14. export default {
  15. auth: false,
  16. name: 'OemInviteNewUserRule',
  17. head: {
  18. // title: '活动规则', // 删除title, 因为title修改时,安卓返nav会重新显示
  19. },
  20. // 页面初始化后触发
  21. async fetch() {
  22. // 获取参数
  23. let activityId = this.$route.query.activityId;
  24. if(!activityId) {return Toast('获取活动规则失败')}
  25. await this.getActivityRule(activityId);
  26. },
  27. components: { layout, layoutBack},
  28. data() {
  29. return {
  30. rule: ''
  31. }
  32. },
  33. methods: {
  34. // 获取活动规则
  35. async getActivityRule(id) {
  36. let {status, success, data} = await this.$axios.$get('/activity/activity/basic/getDetailsById',{
  37. params: { id }
  38. });
  39. if(status === 0 && success) {
  40. this.rule = data?.activityInviteNewUser?.activityRule;
  41. }
  42. },
  43. // 转换html实体
  44. decodeHtmlEntities(content) {
  45. // 创建一个更全面的 HTML 实体映射表
  46. const entityMap = {
  47. '&amp;': '&',
  48. '&lt;': '<',
  49. '&gt;': '>',
  50. '&quot;': '"',
  51. '&#39;': "'",
  52. '&nbsp;': ' ',
  53. '&iexcl;': '¡',
  54. '&cent;': '¢',
  55. '&pound;': '£',
  56. '&curren;': '¤',
  57. '&yen;': '¥',
  58. '&brvbar;': '¦',
  59. '&sect;': '§',
  60. '&uml;': '¨',
  61. '&copy;': '©',
  62. '&ordf;': 'ª',
  63. '&laquo;': '«',
  64. '&not;': '¬',
  65. '&shy;': '­',
  66. '&reg;': '®',
  67. '&macr;': '¯',
  68. '&deg;': '°',
  69. '&plusmn;': '±',
  70. '&sup2;': '²',
  71. '&sup3;': '³',
  72. '&acute;': '´',
  73. '&micro;': 'µ',
  74. '&para;': '¶',
  75. '&middot;': '·',
  76. '&cedil;': '¸',
  77. '&sup1;': '¹',
  78. '&ordm;': 'º',
  79. '&raquo;': '»',
  80. '&frac14;': '¼',
  81. '&frac12;': '½',
  82. '&frac34;': '¾',
  83. '&iquest;': '¿',
  84. '&Agrave;': 'À',
  85. '&Aacute;': 'Á',
  86. '&Acirc;': 'Â',
  87. '&Atilde;': 'Ã',
  88. '&Auml;': 'Ä',
  89. '&Aring;': 'Å',
  90. '&AElig;': 'Æ',
  91. '&Ccedil;': 'Ç',
  92. '&Egrave;': 'È',
  93. '&Eacute;': 'É',
  94. '&Ecirc;': 'Ê',
  95. '&Euml;': 'Ë',
  96. '&Igrave;': 'Ì',
  97. '&Iacute;': 'Í',
  98. '&Icirc;': 'Î',
  99. '&Iuml;': 'Ï',
  100. '&ETH;': 'Ð',
  101. '&Ntilde;': 'Ñ',
  102. '&Ograve;': 'Ò',
  103. '&Oacute;': 'Ó',
  104. '&Ocirc;': 'Ô',
  105. '&Otilde;': 'Õ',
  106. '&Ouml;': 'Ö',
  107. '&times;': '×',
  108. '&Oslash;': 'Ø',
  109. '&Ugrave;': 'Ù',
  110. '&Uacute;': 'Ú',
  111. '&Ucirc;': 'Û',
  112. '&Uuml;': 'Ü',
  113. '&Yacute;': 'Ý',
  114. '&THORN;': 'Þ',
  115. '&szlig;': 'ß',
  116. '&agrave;': 'à',
  117. '&aacute;': 'á',
  118. '&acirc;': 'â',
  119. '&atilde;': 'ã',
  120. '&auml;': 'ä',
  121. '&aring;': 'å',
  122. '&aelig;': 'æ',
  123. '&ccedil;': 'ç',
  124. '&egrave;': 'è',
  125. '&eacute;': 'é',
  126. '&ecirc;': 'ê',
  127. '&euml;': 'ë',
  128. '&igrave;': 'ì',
  129. '&iacute;': 'í',
  130. '&icirc;': 'î',
  131. '&iuml;': 'ï',
  132. '&eth;': 'ð',
  133. '&ntilde;': 'ñ',
  134. '&ograve;': 'ò',
  135. '&oacute;': 'ó',
  136. '&ocirc;': 'ô',
  137. '&otilde;': 'õ',
  138. '&ouml;': 'ö',
  139. '&divide;': '÷',
  140. '&oslash;': 'ø',
  141. '&ugrave;': 'ù',
  142. '&uacute;': 'ú',
  143. '&ucirc;': 'û',
  144. '&uuml;': 'ü',
  145. '&yacute;': 'ý',
  146. '&thorn;': 'þ',
  147. '&yuml;': 'ÿ',
  148. '&OElig;': 'Œ',
  149. '&oelig;': 'œ',
  150. '&Scaron;': 'Š',
  151. '&scaron;': 'š',
  152. '&Yuml;': 'Ÿ',
  153. '&fnof;': 'ƒ',
  154. '&circ;': 'ˆ',
  155. '&tilde;': '˜',
  156. '&Alpha;': 'Α',
  157. '&Beta;': 'Β',
  158. '&Gamma;': 'Γ',
  159. '&Delta;': 'Δ',
  160. '&Epsilon;': 'Ε',
  161. '&Zeta;': 'Ζ',
  162. '&Eta;': 'Η',
  163. '&Theta;': 'Θ',
  164. '&Iota;': 'Ι',
  165. '&Kappa;': 'Κ',
  166. '&Lambda;': 'Λ',
  167. '&Mu;': 'Μ',
  168. '&Nu;': 'Ν',
  169. '&Xi;': 'Ξ',
  170. '&Omicron;': 'Ο',
  171. '&Pi;': 'Π',
  172. '&Rho;': 'Ρ',
  173. '&Sigma;': 'Σ',
  174. '&Tau;': 'Τ',
  175. '&Upsilon;': 'Υ',
  176. '&Phi;': 'Φ',
  177. '&Chi;': 'Χ',
  178. '&Psi;': 'Ψ',
  179. '&Omega;': 'Ω',
  180. '&alpha;': 'α',
  181. '&beta;': 'β',
  182. '&gamma;': 'γ',
  183. '&delta;': 'δ',
  184. '&epsilon;': 'ε',
  185. '&zeta;': 'ζ',
  186. '&eta;': 'η',
  187. '&theta;': 'θ',
  188. '&iota;': 'ι',
  189. '&kappa;': 'κ',
  190. '&lambda;': 'λ',
  191. '&mu;': 'μ',
  192. '&nu;': 'ν',
  193. '&xi;': 'ξ',
  194. '&omicron;': 'ο',
  195. '&pi;': 'π',
  196. '&rho;': 'ρ',
  197. '&sigmaf;': 'ς',
  198. '&sigma;': 'σ',
  199. '&tau;': 'τ',
  200. '&upsilon;': 'υ',
  201. '&phi;': 'φ',
  202. '&chi;': 'χ',
  203. '&psi;': 'ψ',
  204. '&omega;': 'ω',
  205. '&thetasym;': 'ϑ',
  206. '&upsih;': 'ϒ',
  207. '&piv;': 'ϖ',
  208. '&ensp;': ' ',
  209. '&emsp;': ' ',
  210. '&thinsp;': ' ',
  211. '&zwnj;': '‌',
  212. '&zwj;': '‍',
  213. '&lrm;': '‎',
  214. '&rlm;': '‏',
  215. '&ndash;': '–',
  216. '&mdash;': '—',
  217. '&lsquo;': '‘',
  218. '&rsquo;': '’',
  219. '&sbquo;': '‚',
  220. '&ldquo;': '“',
  221. '&rdquo;': '”',
  222. '&bdquo;': '„',
  223. '&dagger;': '†',
  224. '&Dagger;': '‡',
  225. '&bull;': '•',
  226. '&hellip;': '…',
  227. '&permil;': '‰',
  228. '&prime;': '′',
  229. '&Prime;': '″',
  230. '&lsaquo;': '‹',
  231. '&rsaquo;': '›',
  232. '&euro;': '€'
  233. };
  234. // 使用正则表达式匹配所有可能的 HTML 实体
  235. return content.replace(/&[a-zA-Z0-9#]+;/g, (match) => {
  236. return entityMap[match] || match; // 如果匹配到的实体在映射表中有对应值,则替换,否则返回原值
  237. })
  238. },
  239. }
  240. }
  241. </script>
  242. <style lang="scss" scoped>
  243. .rule-container {
  244. font-size: 12px;
  245. height: 100%;
  246. width: 100%;
  247. display: flex;
  248. flex-direction: column;
  249. background-color: #EB3043;
  250. padding: 16px;
  251. .rule-wrap {
  252. min-height: 100px;
  253. padding: 16px;
  254. background-color: #FFFDF1;
  255. border-radius: 8px;
  256. }
  257. }
  258. </style>