base.js 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146
  1. window.ss = {
  2. dom: {
  3. TYPE: {
  4. INPUT: 1,
  5. OBJP: 2,
  6. DATE: 3,
  7. TIME: 4,
  8. DATETIME: 5,
  9. ONOFFBTN: 6,
  10. PIC: 7,
  11. HTML: 9,
  12. CCPSINGLE: 51, //只对应一个对象属性的,带编码规则的级联菜单,如“出生地区码”(对应省、市、区)
  13. CCPMUTIPLE: 52, //对应多个对象属性的级联菜单
  14. SEARCHINPUT: 31, //查询页用到的文本框
  15. SEARCHDATE: 33, //查询页用到的日期选择
  16. SEARCHTIME: 34, //查询页用到的时间选择
  17. SEARCHDATETIME: 35, //查询页用到的日期时间选择
  18. },
  19. },
  20. config: {},
  21. };
  22. window.SS = window.ss; //最终都用小写ss,暂时先兼容大写SS
  23. (function () {
  24. // ========== 移动端适配:设置根元素font-size ==========
  25. // 设计稿宽度430px,分成10份,1rem = 43px(在430px屏幕上)
  26. function setRootFontSize() {
  27. const designWidth = 430; // 设计稿宽度
  28. const rootValue = designWidth / 10; // 43px
  29. const clientWidth = document.documentElement.clientWidth || window.innerWidth;
  30. // 计算当前屏幕对应的根font-size
  31. const rootFontSize = (clientWidth / designWidth) * rootValue;
  32. // 设置根元素font-size
  33. document.documentElement.style.fontSize = rootFontSize + 'px';
  34. // 调试信息(可选)
  35. // console.log(`屏幕宽度: ${clientWidth}px, 根font-size: ${rootFontSize}px, 1rem = ${rootFontSize}px`);
  36. }
  37. // 立即执行
  38. setRootFontSize();
  39. // 监听窗口大小变化
  40. window.addEventListener('resize', setRootFontSize);
  41. // 监听屏幕旋转
  42. window.addEventListener('orientationchange', setRootFontSize);
  43. // ========== 移动端适配结束 ==========
  44. const _deps = [
  45. ['script', '/js/mp_jq/jquery1.11.3.min.js', ''],
  46. ['script', '/js/mp_vue/vue.global.js', ''],
  47. ['script', '/js/mp_axios/axios.min.js', ''],
  48. ['script', '/js/mp_jweixin/jweixin-1.6.0.js', ''],
  49. ['script', '/js/mp_common/common.js', ''],
  50. ['script', '/js/mp_toast/toast.js', ''],
  51. ['script', '/js/mp_request/request.js', ''],
  52. ['script', '/js/mp_user_api/user-api.js', ''],
  53. ['script', '/js/mp_validator/validator-rules.js', ''],
  54. ['script', '/js/mp_validation/validation-manager.js', ''],
  55. ['script', '/js/mp_ss_components/mp-ss-components.js', ''],
  56. ['script', '/js/mp_bridge/bridge.js', ''],
  57. ['script', '/js/mp_utils/field-formatter.js', ''],
  58. ['script', '/js/mp_utils/navigation.js', ''],
  59. // 引入 Vant UI 库
  60. ['script', '/js/mp_vant/vant.min.js'],
  61. ['style', '/skin/mp_easy/vant.min.css'],
  62. // 引入 Day.js 日期处理库
  63. ['script', '/js/mp_dayjs/dayjs.min.js'],
  64. // 引入 Cropper.js 图片裁剪库
  65. ['script', '/js/mp_cropper/cropper.min.js'],
  66. ['style', '/skin/mp_easy/cropper.min.css'],
  67. // ['style', '/skin/mp_easy/base.css'],
  68. ['style', '/skin/mp_easy/base.css'],
  69. ['style', '/skin/mp_easy/iconfont.css'],
  70. ];
  71. function loadResource(type, src, module) {
  72. return new Promise((resolve, reject) => {
  73. const elem = document.createElement(
  74. type === 'script' ? 'script' : 'link'
  75. );
  76. if (type === 'script') {
  77. elem.src = src;
  78. elem.type = module ? 'module' : '';
  79. } else {
  80. elem.rel = 'stylesheet';
  81. elem.href = src;
  82. }
  83. elem.onload = () => {
  84. if (type === 'script') {
  85. // elem.remove();
  86. }
  87. resolve();
  88. };
  89. elem.onerror = reject;
  90. document.head.appendChild(elem);
  91. });
  92. }
  93. // 等待所有依赖加载完成后再执行回调
  94. window.SS.ready = function (callback) {
  95. if (window.SS && window.SS.dom && window.SS.dom.initializeFormApp) {
  96. callback();
  97. } else {
  98. document.addEventListener('SSReady', () => {
  99. // 确保组件初始化完成后再执行回调
  100. if (
  101. window.SS &&
  102. window.SS.dom &&
  103. window.SS.dom.initializeFormApp
  104. ) {
  105. callback();
  106. }
  107. });
  108. }
  109. };
  110. async function loadAll() {
  111. // 然后加载资源
  112. for (const [type, src, module] of _deps) {
  113. await loadResource(type, src, module);
  114. if (src.includes('ace.js')) {
  115. window.ace.require('ace/config').set('workerPath', null);
  116. }
  117. }
  118. document.dispatchEvent(new Event('SSReady'));
  119. }
  120. // 当 DOM 加载完成后执行清理和加载
  121. if (document.readyState === 'loading') {
  122. document.addEventListener('DOMContentLoaded', loadAll);
  123. console.log('DOMContentLoaded');
  124. } else {
  125. loadAll();
  126. }
  127. })();