cardfunc.js 10 KB

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