cardfunc.js 9.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311
  1. import tools from '/common/tools';
  2. import {
  3. apiCardConfigQuery,
  4. apiWarnMessageQuery,
  5. apiUnReadMessageQuery,
  6. checkResCode
  7. } from '/common/api';
  8. import {
  9. defaultPopUpDataList,
  10. defaultPopUpDataList2
  11. } from '/common/define';
  12. var cardfunc = {
  13. caller: null,
  14. token: "",
  15. ecId: 0, // 卡片id
  16. cardConfigData: {
  17. tabActiveColor: "#81cd00",
  18. popupRuleConfig: {}, // 规则弹窗配置
  19. popupRuleList: [], // 规则弹窗数据
  20. popupExchgConfig: {}, // 兑换地址弹窗配置
  21. popupExchgList: [], // 兑换地址弹窗数据
  22. popupHelpConfig: {}, // 帮助弹窗配置
  23. popupHelpList: [],
  24. popupMessageConfig: {}, // 通知弹窗配置
  25. popupMessageList: [], // 通知弹窗数据
  26. popupWarnConfig: {}, // 警告弹窗配置
  27. popupWarnList: [], // 警告弹窗数据
  28. },
  29. init(caller, token, ecId) {
  30. this.caller = caller;
  31. this.token = token;
  32. this.ecId = ecId;
  33. this.removeCss();
  34. },
  35. // 清除css
  36. removeCss() {
  37. tools.removeCssCode("css-common");
  38. tools.removeCssCode("css-custom");
  39. },
  40. getCardConfig(loadConfig, testconfig) {
  41. const cardconfigType = getApp().$cardconfigType;
  42. // console.log("[getConfig] cardconfigType:", cardconfigType);
  43. if (cardconfigType == "local") {
  44. loadConfig(testconfig);
  45. // this.testCardConfig(testconfig, loadConfig);
  46. } else {
  47. this.cardConfigQuery(loadConfig);
  48. }
  49. },
  50. parseCardConfig(cardconfig) {
  51. // console.log("[parseCardConfig] cardconfig:", cardconfig);
  52. if (cardconfig == undefined || cardconfig == "") {
  53. return;
  54. }
  55. if (typeof cardconfig == "string") {
  56. cardconfig = cardconfig.replace(/[\r|\n|\t]/g, "");
  57. const config = JSON.parse(cardconfig);
  58. // console.log("[parseCardConfig] config:", config);
  59. return config;
  60. } else {
  61. return cardconfig;
  62. }
  63. },
  64. // 加载卡片通用配置
  65. loadCardCommonConfig(config_common) {
  66. // console.log("[loadCardCommonConfig] config_common:", config_common);
  67. config_common = this.parseCardConfig(config_common);
  68. if (config_common == undefined || config_common == "") {
  69. return;
  70. }
  71. if (config_common.css != undefined && config_common.css.length > 0) {
  72. tools.loadCssCode(config_common.css, "css-common");
  73. }
  74. if (config_common.tabActiveColor != undefined && config_common.tabActiveColor.length > 0) {
  75. this.cardConfigData.tabActiveColor = config_common.tabActiveColor;
  76. }
  77. // 加载规则弹窗配置
  78. if (config_common.popupRuleConfig != undefined) {
  79. this.cardConfigData.popupRuleConfig = config_common.popupRuleConfig;
  80. }
  81. // 加载帮助弹窗配置
  82. if (config_common.popupHelpConfig != undefined) {
  83. this.cardConfigData.popupHelpConfig = config_common.popupHelpConfig;
  84. }
  85. // 加载警告弹窗配置
  86. if (config_common.popupWarnConfig != undefined) {
  87. this.cardConfigData.popupWarnConfig = config_common.popupWarnConfig;
  88. }
  89. // 加载兑换地址弹窗配置
  90. if (config_common.popupExchgConfig != undefined) {
  91. this.cardConfigData.popupExchgConfig = config_common.popupExchgConfig;
  92. }
  93. // 加载通知弹窗配置
  94. if (config_common.popupMessageConfig != undefined) {
  95. this.cardConfigData.popupMessageConfig = config_common.popupMessageConfig;
  96. }
  97. // 加载弹窗(规则)数据
  98. const popupRuleList = config_common.popupRuleList;
  99. // console.log("[loadCardCommonConfig] popupRuleList:", popupRuleList);
  100. if (popupRuleList != undefined && popupRuleList.length > 0) {
  101. this.cardConfigData.popupRuleList.length = 0;
  102. for (var i = 0; i < popupRuleList.length; i++) {
  103. // console.log("[loadCardCommonConfig] popupRuleList", i, popupRuleList[i]);
  104. if (popupRuleList[i] == 'default') {
  105. for (var j = 0; j < defaultPopUpDataList.length; j++) {
  106. this.cardConfigData.popupRuleList.push(defaultPopUpDataList[j]);
  107. }
  108. } else if (popupRuleList[i] == 'default2') {
  109. for (var j = 0; j < defaultPopUpDataList2.length; j++) {
  110. this.cardConfigData.popupRuleList.push(defaultPopUpDataList2[j]);
  111. }
  112. } else {
  113. this.cardConfigData.popupRuleList.push(popupRuleList[i]);
  114. }
  115. }
  116. } else {
  117. this.cardConfigData.popupRuleList = defaultPopUpDataList2;
  118. // console.log("[loadCardCommonConfig] popupRuleList 加载默认列表");
  119. }
  120. // 加载弹窗(兑换地址)数据
  121. const popupExchgList = config_common.popupExchgList;
  122. if (popupExchgList != undefined && popupExchgList.length > 0) {
  123. this.cardConfigData.popupExchgList.length = 0;
  124. for (var i = 0; i < popupExchgList.length; i++) {
  125. // console.log("[loadCardCommonConfig] popupExchgList", i, popupExchgList[i]);
  126. this.cardConfigData.popupExchgList.push(popupExchgList[i]);
  127. }
  128. }
  129. // 加载弹窗(帮助)数据
  130. const popupHelpList = config_common.popupHelpList;
  131. if (popupHelpList != undefined && popupHelpList.length > 0) {
  132. this.cardConfigData.popupHelpList.length = 0;
  133. for (var i = 0; i < popupHelpList.length; i++) {
  134. // console.log("[loadCardCommonConfig] popupHelpList", i, popupHelpList[i]);
  135. this.cardConfigData.popupHelpList.push(popupHelpList[i]);
  136. }
  137. }
  138. // console.log("[loadCardCommonConfig] cardConfigData:", this.cardConfigData);
  139. },
  140. // 卡片配置信息查询
  141. cardConfigQuery(callback) {
  142. uni.request({
  143. url: apiCardConfigQuery,
  144. header: {
  145. "Content-Type": "application/x-www-form-urlencoded",
  146. "token": this.token,
  147. },
  148. method: "POST",
  149. data: {
  150. ecId: this.ecId,
  151. pageName: "all"
  152. },
  153. success: (res) => {
  154. // console.log("[cardConfigQuery]", res);
  155. const data = res.data.data;
  156. const config = data.configJson;
  157. // console.log("[cardConfigQuery] config", config);
  158. callback(config);
  159. },
  160. fail: (err) => {
  161. console.log("[cardConfigQuery] err", err)
  162. },
  163. });
  164. },
  165. // 警告列表查询
  166. warnMessageQuery(callback=null) {
  167. uni.request({
  168. url: apiWarnMessageQuery,
  169. header: {
  170. "Content-Type": "application/x-www-form-urlencoded",
  171. "token": this.token,
  172. },
  173. method: "POST",
  174. data: {
  175. ecId: this.ecId
  176. },
  177. success: (res) => {
  178. // console.log("warnMessageQuery", res);
  179. if (checkResCode(res)) {
  180. const warnRs = res.data.data;
  181. this.cardConfigData.popupWarnList.length = 0;
  182. for (var i = 0; i < warnRs.length; i++) {
  183. let popupData = {
  184. type: 9, // 9: 警告
  185. data: {}
  186. };
  187. popupData.data.warnType = warnRs[i].warnType;
  188. popupData.data.title = warnRs[i].warnTitle;
  189. popupData.data.iconUrl = warnRs[i].iconUrl;
  190. popupData.data.iconNum = warnRs[i].iconNum;
  191. popupData.data.message = warnRs[i].warnMessage;
  192. popupData.data.qrCodeUrl = warnRs[i].qrCodeUrl;
  193. this.cardConfigData.popupWarnList.push(popupData);
  194. }
  195. /* this.cardConfigData.popupWarnList.push(
  196. {
  197. type: 9, // 9: 警告
  198. data: {
  199. warnType: 1,
  200. title: "黄牌",
  201. iconUrl: "/static/common/card_yellows.png",
  202. iconNum: 1,
  203. message: `亲爱的参赛者:
  204.    收到此黄牌,说明您的比赛数据被系统判定为存在异常,此次比赛(活动)为徒步定向校园文化主题活动,请自觉遵守规则,如果您收到的黄牌数量过多<span style='color: red'>(超过2张)</span>,您的成绩将影响到您的院系/单位成绩,同时您的个人成绩也有可能根据规则被取消。如果您坚持您的比赛数据没有问题,请联系我们的客服人员,谢谢!
  205.   让我们一起创造文明、和谐的校园生活,感谢您的支持!`,
  206. qrCodeUrl: "https://orienteering.beswell.com/shanda/%E8%AD%A6%E5%91%8A%E4%BA%8C%E7%BB%B4%E7%A0%81%402x.png"
  207. }
  208. }
  209. ); */
  210. // console.log("popupWarnList", this.cardConfigData.popupWarnList);
  211. // console.log("caller.popupWarnList length:", this.caller.cardConfigData.popupWarnList.length);
  212. if (callback != null) {
  213. callback(this.cardConfigData.popupWarnList);
  214. }
  215. }
  216. },
  217. fail: (err) => {
  218. console.log("warnMessageQuery err", err)
  219. },
  220. });
  221. },
  222. // 未读消息列表查询
  223. unReadMessageQuery(callback=null) {
  224. uni.request({
  225. url: apiUnReadMessageQuery,
  226. header: {
  227. "Content-Type": "application/x-www-form-urlencoded",
  228. "token": this.token,
  229. },
  230. method: "POST",
  231. data: {
  232. relationType: 2, // 类型 1 成就 2 卡片
  233. relationId: this.ecId
  234. },
  235. success: (res) => {
  236. // console.log("getUnReadMessageQuery", res);
  237. if (checkResCode(res)) {
  238. const unReadMessageRs = res.data.data;
  239. this.cardConfigData.popupMessageList.length = 0;
  240. let mqIdListStr = "";
  241. for (var i = 0; i < unReadMessageRs.length; i++) {
  242. let popupData = {
  243. type: 6, // 6: 通知
  244. data: {}
  245. };
  246. mqIdListStr += "-" + unReadMessageRs[i].mqId;
  247. popupData.data.mqType = unReadMessageRs[i].mqType;
  248. popupData.data.title = unReadMessageRs[i].mqTitle;
  249. popupData.data.message = unReadMessageRs[i].mqMessage;
  250. this.cardConfigData.popupMessageList.push(popupData);
  251. }
  252. /* this.cardConfigData.popupMessageList.push(
  253. {
  254. type: 6, // 6: 通知
  255. data: {
  256. mqType: 3,
  257. title: "特别提醒",
  258. message: `本次比赛的目的为体验校园文化,提升身体素质,让大家感受和熟悉定向运动魅力及技巧。<br>
  259. 在此特别提醒:<br>
  260. 无论是驰骋校园,还是漫步秋色,<b>“勿以轮带步,唯愿步量途”。让我们用脚步来丈量这片共同热爱的家园</b>,见证山大123周年的辉煌时刻!<br>
  261. <div style='text-align: right;'>山东大学体育委员会</div>`
  262. }
  263. }
  264. ); */
  265. // console.log("popupMessageList", this.cardConfigData.popupMessageList);
  266. if (callback != null) {
  267. callback(this.cardConfigData.popupMessageList, mqIdListStr);
  268. }
  269. }
  270. },
  271. fail: (err) => {
  272. console.log("getUnReadMessageQuery err", err);
  273. },
  274. });
  275. },
  276. }
  277. export default cardfunc;