gxd-uni-library-editx 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (215) hide show
  1. package/.editorconfig +14 -0
  2. package/README.md +447 -0
  3. package/index.js +3 -0
  4. package/package.json +104 -0
  5. package/postcss.config.js +22 -0
  6. package/settings.js.tpl +68 -0
  7. package/src/XdAppClass.1.0.js +257 -0
  8. package/src/XdAppClass.js +150 -0
  9. package/src/components/XdAddress/XdAddress.vue +579 -0
  10. package/src/components/XdAddressSelect/XdAddressSelect.vue +243 -0
  11. package/src/components/XdBaiduMap/XdBaiduMap.vue +204 -0
  12. package/src/components/XdBaiduOverlay/XdBaiduOverlay.vue +345 -0
  13. package/src/components/XdBaiduSearch/XdBaiduSearch.vue +354 -0
  14. package/src/components/XdBar/XdBar.vue +339 -0
  15. package/src/components/XdButton/XdButton.vue +288 -0
  16. package/src/components/XdCartList/XdCartList.vue +791 -0
  17. package/src/components/XdCartNoStoreList/XdCartNoStoreList.vue +747 -0
  18. package/src/components/XdCity/XdCity.vue +620 -0
  19. package/src/components/XdCity/city.js +93 -0
  20. package/src/components/XdCity/testData.js +124 -0
  21. package/src/components/XdCityLocation/XdCityLocation.vue +314 -0
  22. package/src/components/XdCityLocation/jweixin.js +72 -0
  23. package/src/components/XdCityShow/XdCityShow.vue +354 -0
  24. package/src/components/XdClipImage/XdClipImage.vue +879 -0
  25. package/src/components/XdCoins/XdCoins.vue +66 -0
  26. package/src/components/XdConfirm/XdConfirm.vue +240 -0
  27. package/src/components/XdContentXss/XdContentXss.vue +71 -0
  28. package/src/components/XdDailog/XdDailog.vue +258 -0
  29. package/src/components/XdDate/XdDataItemOne.vue +236 -0
  30. package/src/components/XdDate/XdDate.vue +1081 -0
  31. package/src/components/XdDate/XdDateItem.vue +316 -0
  32. package/src/components/XdDate/XdDateTime.vue +929 -0
  33. package/src/components/XdDate/i18n/en.json +19 -0
  34. package/src/components/XdDate/i18n/index.js +8 -0
  35. package/src/components/XdDate/i18n/zh-Hans.json +19 -0
  36. package/src/components/XdDate/i18n/zh-Hant.json +19 -0
  37. package/src/components/XdDate/keypress.js +45 -0
  38. package/src/components/XdDate/util.js +418 -0
  39. package/src/components/XdDownDrawer/XdDownDrawer.vue +176 -0
  40. package/src/components/XdEditPwd/XdEditPwd.vue +305 -0
  41. package/src/components/XdEnterOrderList/XdEnterOrderList.vue +413 -0
  42. package/src/components/XdExpressTimeLine/XdExpressTimeLine.vue +280 -0
  43. package/src/components/XdFilter/XdFilter.vue +541 -0
  44. package/src/components/XdFontIcon/XdFontIcon.vue +165 -0
  45. package/src/components/XdFontIcon/css/icon.less +498 -0
  46. package/src/components/XdFooterBar/XdFooterBar.vue +291 -0
  47. package/src/components/XdFooterTabbar/XdFooterTabbar.vue +284 -0
  48. package/src/components/XdForm/XdForm.vue +481 -0
  49. package/src/components/XdForm/validate.js +486 -0
  50. package/src/components/XdFormCheckbox/XdFormCheckbox.vue +858 -0
  51. package/src/components/XdFormDate.vue +187 -0
  52. package/src/components/XdFormInput/XdFormInput.vue +535 -0
  53. package/src/components/XdFormInput/common.js +56 -0
  54. package/src/components/XdFormItem/XdFormItem.vue +583 -0
  55. package/src/components/XdFormSelect/XdFormSelect.vue +119 -0
  56. package/src/components/XdImage/XdImage.vue +113 -0
  57. package/src/components/XdItemCardUser/XdItemCardUser.vue +232 -0
  58. package/src/components/XdItemFilmImage/XdItemFilmImage.vue +146 -0
  59. package/src/components/XdItemFilmText/XdItemFilmText.vue +83 -0
  60. package/src/components/XdItemPhysical/XdItemPhysical.vue +410 -0
  61. package/src/components/XdItemPhysicalPack/XdItemPhysicalPack.vue +240 -0
  62. package/src/components/XdItemStore/XdItemStore.vue +236 -0
  63. package/src/components/XdItemUserInfo/XdItemUserInfo.vue +175 -0
  64. package/src/components/XdJson/XdJson.vue +398 -0
  65. package/src/components/XdKeyValue/XdKeyValue.vue +150 -0
  66. package/src/components/XdLabelNew/XdLabelNew.vue +193 -0
  67. package/src/components/XdLayout/XdLayout.vue +634 -0
  68. package/src/components/XdLoading/XdLoading.vue +165 -0
  69. package/src/components/XdMore/XdMore.vue +66 -0
  70. package/src/components/XdMpHtml/XdMpHtml.vue +458 -0
  71. package/src/components/XdMpHtml/node/node.vue +536 -0
  72. package/src/components/XdMpHtml/parser.js +1260 -0
  73. package/src/components/XdMpHtml/static/js/handler.js +1 -0
  74. package/src/components/XdMpHtml/static/js/uni.webview.min.js +1 -0
  75. package/src/components/XdMpHtml/static/local.html +1 -0
  76. package/src/components/XdMy/XdMy.vue +294 -0
  77. package/src/components/XdMySuccess/XdMySuccess.vue +603 -0
  78. package/src/components/XdNavTab/XdNavTab.vue +147 -0
  79. package/src/components/XdNoData/XdNoData.vue +87 -0
  80. package/src/components/XdNoticeBar/XdNoticeBar.vue +501 -0
  81. package/src/components/XdNumber/XdNumber.vue +210 -0
  82. package/src/components/XdNumberUni/XdNumberUni.vue +270 -0
  83. package/src/components/XdNumberUni/readme.md +42 -0
  84. package/src/components/XdOnlineConfirm/XdOnlineConfirm.vue +385 -0
  85. package/src/components/XdOnlineDetail/XdOnlineDetail.vue +332 -0
  86. package/src/components/XdOnlinePay/XdOnlinePay.vue +349 -0
  87. package/src/components/XdOnlineSchedule/XdOnlineSchedule.vue +453 -0
  88. package/src/components/XdOnlineSeat/XdOnlineSeat.vue +796 -0
  89. package/src/components/XdOnlineSeatMove/XdOnlineSeatMove.vue +1012 -0
  90. package/src/components/XdPayCombo/XdPayCombo.vue +118 -0
  91. package/src/components/XdPreviewImage/XdPreviewImage.vue +372 -0
  92. package/src/components/XdPwPay/XdPwPay.vue +214 -0
  93. package/src/components/XdRadio/XdRadio.vue +151 -0
  94. package/src/components/XdRangeSlider/XdRangeSlider.vue +355 -0
  95. package/src/components/XdRedName/XdRedName.vue +35 -0
  96. package/src/components/XdSearchBar/XdSearchBar.vue +286 -0
  97. package/src/components/XdSelect/XdSelect.vue +382 -0
  98. package/src/components/XdSelectCity/XdSelectCity.vue +270 -0
  99. package/src/components/XdSelectTime/XdSelectTime.vue +342 -0
  100. package/src/components/XdStar/XdStar.vue +261 -0
  101. package/src/components/XdStoreCashier/XdStoreCashier.vue +526 -0
  102. package/src/components/XdStoreItem/XdStoreItem.vue +400 -0
  103. package/src/components/XdStoreOrderDetail/XdStoreOrderDetail.vue +1571 -0
  104. package/src/components/XdStoreOrderList/XdStoreOrderList.vue +450 -0
  105. package/src/components/XdStoreProductInfo/XdStoreProductInfo.vue +940 -0
  106. package/src/components/XdStoreProductType/XdStoreProductType.vue +307 -0
  107. package/src/components/XdSuccess/XdSuccess.vue +527 -0
  108. package/src/components/XdSwipeSelect/XdSwipeSelect.vue +99 -0
  109. package/src/components/XdSwiper/XdSwiper.vue +124 -0
  110. package/src/components/XdSwitch/XdSwitch.vue +204 -0
  111. package/src/components/XdTab/XdTab.vue +220 -0
  112. package/src/components/XdTabScroll/XdTabScroll.vue +212 -0
  113. package/src/components/XdTag/XdTag.vue +423 -0
  114. package/src/components/XdTimeLine/XdTimeLine.vue +121 -0
  115. package/src/components/XdTips/XdTips.vue +212 -0
  116. package/src/components/XdTipsBlock/XdTipsBlock.vue +141 -0
  117. package/src/components/XdTitleSection/XdTitleSection.vue +152 -0
  118. package/src/components/XdTitleTab/XdTitleTab.vue +227 -0
  119. package/src/components/XdUnit/XdUnit.vue +206 -0
  120. package/src/components/XdUpload/XdUpload.vue +197 -0
  121. package/src/components/XdUploadImage/XdUploadImage.vue +145 -0
  122. package/src/components/Xdlogs/XdLogs.vue +144 -0
  123. package/src/components/autoload.js +211 -0
  124. package/src/components/swipeAction/UniSwipeAction.vue +43 -0
  125. package/src/components/swipeActionItem/UniSwipeActionItem.vue +386 -0
  126. package/src/components/swipeActionItem/bindingx.js +298 -0
  127. package/src/components/swipeActionItem/index.wxs +321 -0
  128. package/src/components/swipeActionItem/isPC.js +18 -0
  129. package/src/components/swipeActionItem/mpalipay.js +210 -0
  130. package/src/components/swipeActionItem/mpother.js +252 -0
  131. package/src/components/swipeActionItem/mpwxs.js +140 -0
  132. package/src/dome/dome/address.vue +415 -0
  133. package/src/dome/dome/auth/login.vue +166 -0
  134. package/src/dome/dome/baidu_show.vue +20 -0
  135. package/src/dome/dome/cake.vue +186 -0
  136. package/src/dome/dome/cart.vue +205 -0
  137. package/src/dome/dome/cart_store.vue +149 -0
  138. package/src/dome/dome/cashier/cashier.vue +73 -0
  139. package/src/dome/dome/cashier/check_cashier.vue +469 -0
  140. package/src/dome/dome/cashier/success.vue +127 -0
  141. package/src/dome/dome/city.vue +148 -0
  142. package/src/dome/dome/cityData.js +9 -0
  143. package/src/dome/dome/clip.vue +82 -0
  144. package/src/dome/dome/date/date.vue +273 -0
  145. package/src/dome/dome/date/selected.js +315 -0
  146. package/src/dome/dome/dcom/app1.vue +13 -0
  147. package/src/dome/dome/dcom/app2.vue +13 -0
  148. package/src/dome/dome/dcom/app3.vue +13 -0
  149. package/src/dome/dome/dcom/app4.vue +13 -0
  150. package/src/dome/dome/dcom/app5.vue +13 -0
  151. package/src/dome/dome/dcom/index.vue +1 -0
  152. package/src/dome/dome/debug/debug.vue +95 -0
  153. package/src/dome/dome/docache/docache.vue +88 -0
  154. package/src/dome/dome/express.vue +269 -0
  155. package/src/dome/dome/form.vue +312 -0
  156. package/src/dome/dome/icon.js +125 -0
  157. package/src/dome/dome/icon.vue +93 -0
  158. package/src/dome/dome/index.vue +725 -0
  159. package/src/dome/dome/item.vue +236 -0
  160. package/src/dome/dome/json/json.vue +88 -0
  161. package/src/dome/dome/layout.vue +105 -0
  162. package/src/dome/dome/line.vue +113 -0
  163. package/src/dome/dome/map/search.vue +70 -0
  164. package/src/dome/dome/my.vue +171 -0
  165. package/src/dome/dome/notice.vue +93 -0
  166. package/src/dome/dome/online/confirm.vue +92 -0
  167. package/src/dome/dome/online/detail.vue +80 -0
  168. package/src/dome/dome/online/pay.vue +78 -0
  169. package/src/dome/dome/online/schedule.vue +73 -0
  170. package/src/dome/dome/online/seat.vue +98 -0
  171. package/src/dome/dome/order/detail.vue +166 -0
  172. package/src/dome/dome/order/enter_order.vue +294 -0
  173. package/src/dome/dome/order/list.vue +219 -0
  174. package/src/dome/dome/order/order.js +18 -0
  175. package/src/dome/dome/order/success.vue +68 -0
  176. package/src/dome/dome/product.vue +179 -0
  177. package/src/dome/dome/store_cashier.vue +67 -0
  178. package/src/dome/dome/swiper.vue +32 -0
  179. package/src/dome/dome/webview.vue +61 -0
  180. package/src/install.js +183 -0
  181. package/src/main/address/address.vue +251 -0
  182. package/src/main/cart/cart.vue +149 -0
  183. package/src/main/cashier/cashier.vue +72 -0
  184. package/src/main/cashier/check_cashier.vue +483 -0
  185. package/src/main/city/city.vue +149 -0
  186. package/src/main/date/date.vue +260 -0
  187. package/src/main/order/order.js +19 -0
  188. package/src/main/order/order.vue +222 -0
  189. package/src/main/product/detail.vue +121 -0
  190. package/src/main/product/type.vue +108 -0
  191. package/src/main/search/search.vue +501 -0
  192. package/src/pages.json +337 -0
  193. package/src/plugins/CreatedComponentsPlugin.js +19 -0
  194. package/src/plugins/JsonRename.js +72 -0
  195. package/src/plugins/SetAppParams.js +171 -0
  196. package/src/project.js +18 -0
  197. package/src/utils/Cookie.js +68 -0
  198. package/src/utils/Runtime.js +105 -0
  199. package/src/utils/Storage.js +104 -0
  200. package/src/utils/XdNetwork.js +133 -0
  201. package/src/utils/helper.js +1321 -0
  202. package/src/utils/nourl.js +95 -0
  203. package/src/utils/project.js +17 -0
  204. package/src/utils/xd.auth.js +61 -0
  205. package/src/utils/xd.base.js +474 -0
  206. package/src/utils/xd.common.js +240 -0
  207. package/src/utils/xd.event.js +99 -0
  208. package/src/utils/xd.frame.js +96 -0
  209. package/src/utils/xd.path.js +96 -0
  210. package/src/utils/xdAppLog.js +170 -0
  211. package/src/utils/xdWxLog.js +302 -0
  212. package/src/utils/xdh5log.js +307 -0
  213. package/src/websetting.js +64 -0
  214. package/tsconfig.json +9 -0
  215. package/xd.less +180 -0
@@ -0,0 +1,95 @@
1
+ 'use strict';
2
+
3
+ import request from '@/common/request';
4
+
5
+ import {
6
+ compilePath,
7
+ returnData
8
+ } from '@/utils/xd.path';
9
+
10
+ const {isOpenNoResultKey} = require('./../../settings');
11
+
12
+
13
+ import store from "@/store";
14
+
15
+ /**
16
+ * @description 检查变量类型
17
+ * @param obj
18
+ * @returns {*}
19
+ */
20
+ function checkVarType(obj) {
21
+ let toString = Object.prototype.toString;
22
+ let map = {
23
+ '[object Boolean]': 'boolean',
24
+ '[object Number]': 'number',
25
+ '[object String]': 'string',
26
+ '[object Array]': 'array',
27
+ '[object Null]': 'null',
28
+ '[object Object]': 'object',
29
+ '[object Promise]': 'promise',
30
+ };
31
+ return map[toString.call(obj)];
32
+ }
33
+
34
+
35
+ /**
36
+ * @description 获取选项卡和自定义模糊搜索功能
37
+ * @param params { Object }
38
+ * @param params.url { String } 引用模块名称 (必选)
39
+ * @param params.params {Object} 当为自定义模糊搜索功能 必选参数:{page_size: 10}
40
+ * @param params.data {Object} 当为自定义模糊搜索功能 必选参数:{page_size: 10}
41
+ * @returns { Promise | * }
42
+ */
43
+ function handleNoUrl(params) {
44
+ if(!params.url){
45
+ throw new Error(`【url】参数不能为空,\n params=>${JSON.stringify(params, null, 2)}`);
46
+ }
47
+
48
+ //请求api
49
+ let path = params.url, obj = {}, data = params.params;
50
+ delete params.url;
51
+
52
+ //设置请求方法
53
+ let method = 'get';
54
+ if(params.data){
55
+ data = params.data;
56
+ method = 'post';
57
+ }
58
+ obj['method'] = method;
59
+
60
+ //获取公共参数
61
+ let commonParams = store.state['commonParams'] || {};
62
+ data = {...data, ...commonParams};
63
+
64
+ //设置页码参数
65
+ data['page_size'] = data['page_size'] || 10;
66
+
67
+ //设置参数
68
+ let {url, result} = compilePath(path, data);
69
+ obj['url'] = url;
70
+ if(method === 'get') obj['params'] = result;
71
+ else obj['data'] = result;
72
+ return request(obj)
73
+ }
74
+
75
+
76
+ /**
77
+ * @description 获取选项卡列表
78
+ * @param params
79
+ */
80
+ export function getNoUrl(params){
81
+ if(checkVarType(params) === 'object') params = [params];
82
+ let arr = params.map(item => {
83
+ if (checkVarType(item) === 'promise') return item;
84
+ return new Promise((resolve, reject) => {
85
+ handleNoUrl(item)
86
+ .then(res => {
87
+ resolve(returnData(res, isOpenNoResultKey));
88
+ })
89
+ .catch(error => {
90
+ reject(error)
91
+ })
92
+ });
93
+ });
94
+ return Promise.all(arr);
95
+ }
@@ -0,0 +1,17 @@
1
+ 'use strict';
2
+
3
+ /**
4
+ * @description 平台参数配置
5
+ * @type {{EVENT_PARAM_NAM: *}}
6
+ */
7
+ export const PLATFORM_PARAM_SETTING = {
8
+ EVENT_PARAM_NAME: 'event', //地址栏活动参数名
9
+ EVENT_PARAM_SAVE_KEY: 'XD_EVENT_KEY', //保存本地键名
10
+ }
11
+
12
+ /***
13
+ * @description 项目入口页面
14
+ * @type {string}
15
+ */
16
+ export const ROOT_ENTRY = 'pages/loading/loading';
17
+
@@ -0,0 +1,61 @@
1
+ 'use strict';
2
+
3
+ //#ifdef H5
4
+ import cookie from "@/common/cookie";
5
+ //#endif
6
+ import storage from "@/common/storage";
7
+ const setting = require('./../../settings');
8
+
9
+ export default {
10
+ methods: {
11
+
12
+ /**
13
+ * @description 获取token信息
14
+ * @param type
15
+ * @param site_id
16
+ * @return {null|String}
17
+ */
18
+ getCrsfToken(type, site_id){
19
+ let obj = {
20
+ card: 'cardCrsfToken',
21
+ user: 'crsfToken'
22
+ };
23
+ let tokenKey = `${setting[obj[type]]}${site_id}`;
24
+ let token = storage.get(tokenKey);
25
+ //#ifdef H5
26
+ token = cookie.get(tokenKey);
27
+ //#endif
28
+ return token
29
+ },
30
+
31
+ /**
32
+ * @description 用户是否已登录卡信息
33
+ */
34
+ jfbCheckCardLogin(site_id){
35
+ if(setting.isCardAuth) return true;
36
+ if (!this.getCrsfToken('card', site_id)) {
37
+ this.$xdUniHelper.redirectTo({
38
+ url: '/pages/card/card',
39
+ });
40
+ return false;
41
+ }
42
+ return true;
43
+ },
44
+
45
+ /**
46
+ * @description 用户已登录信息
47
+ */
48
+ jfbCheckUserLogin(site_id) {
49
+ if (setting.isUserAuth) return true;
50
+ if (!this.getCrsfToken('user', site_id)) {
51
+ this.$xdUniHelper.redirectTo({
52
+ url: '/pages/login/login',
53
+ });
54
+ return false;
55
+ }
56
+ return true;
57
+ },
58
+ }
59
+ }
60
+
61
+
@@ -0,0 +1,474 @@
1
+ 'use strict';
2
+
3
+ const settings = require('./../../settings');
4
+ export const baseEnvTypeReg = /^(localhost)|(192\.168\.).*$/;
5
+
6
+ /**
7
+ * @description 设置vuex缓存
8
+ * @param state
9
+ * @param attr
10
+ * @returns {*}
11
+ */
12
+ export function setVuexCache(state, attr) {
13
+ return new Promise((resolve, reject) => {
14
+ if (state[attr] !== null) {
15
+ resolve(state[attr])
16
+ } else {
17
+ let time = setInterval(() => {
18
+ if (state[attr] !== null) {
19
+ resolve(state[attr]);
20
+ clearInterval(time);
21
+ }
22
+ }, 100)
23
+ }
24
+ });
25
+ }
26
+
27
+ /**
28
+ * @description 获取host
29
+ */
30
+ export function baseGetHost(){
31
+ //#ifdef H5
32
+ if (settings.platform === 'h5') {
33
+ let host = window.location.host;
34
+
35
+ //设置开发环境
36
+ if (baseEnvTypeReg.test(host)) {
37
+ host = settings.devBaseHost;
38
+ }
39
+ return host;
40
+ }
41
+ //#endif
42
+
43
+ //#ifdef MP-WEIXIN
44
+ if (settings.platform === 'mp-weixin') {
45
+ return settings.host;
46
+ }
47
+ //#endif
48
+ }
49
+
50
+ /**
51
+ * @description 返回配置信息
52
+ * @param key {String|null} 查询关键字
53
+ * @returns {{apiWhiteList, defaultCity, uploadApi, needLoginKey, index, noPrevPageToIndex, payUrl, title, getBrandBaseUrl, version, isTimeLog, isCloseEslint, isDebug, chatWss, apiPlaceholder, tokenKey, system, isTestData, port, pageWhiteList, devBaseHost}|*}
54
+ */
55
+ export function getSetting(key=null){
56
+ if(!key) return settings;
57
+ return settings[key] || null
58
+ }
59
+
60
+
61
+ /**
62
+ * @description 检查变量类型
63
+ * @param obj
64
+ * @returns {*}
65
+ */
66
+ export function baseCheckVarType(obj) {
67
+ let toString = Object.prototype.toString;
68
+ let map = {
69
+ '[object Boolean]': 'boolean',
70
+ '[object Number]': 'number',
71
+ '[object String]': 'string',
72
+ '[object Function]': 'function',
73
+ '[object Array]': 'array',
74
+ '[object Date]': 'date',
75
+ '[object RegExp]': 'regExp',
76
+ '[object Undefined]': 'undefined',
77
+ '[object Null]': 'null',
78
+ '[object Object]': 'object',
79
+ '[object Error]': 'error'
80
+ };
81
+ return map[toString.call(obj)];
82
+ }
83
+
84
+ /**
85
+ * @description 初始化请求对象
86
+ * @param obj
87
+ * @returns {*|URLSearchParams}
88
+ */
89
+ export function baseFormDataSendParam(obj) {
90
+ let params = new URLSearchParams();
91
+ if (baseCheckVarType(obj) === 'object') {
92
+ Object.keys(obj).map((key) => {
93
+ if (baseCheckVarType(obj[key]) === 'object'
94
+ || baseCheckVarType(obj[key]) === 'array'
95
+ ) {
96
+ params.append(key, JSON.stringify(obj[key]));
97
+ } else {
98
+ params.append(key, obj[key]);
99
+ }
100
+ });
101
+
102
+ return params;
103
+ }
104
+ return obj;
105
+ }
106
+
107
+
108
+ /**
109
+ * @description 简单深拷贝
110
+ * @param json
111
+ * @returns {any}
112
+ */
113
+ export function baseCloneDeep(json) {
114
+ if (baseCheckVarType(json) === 'object'
115
+ || baseCheckVarType(json) === 'array'
116
+ ) {
117
+ return JSON.parse(JSON.stringify(json));
118
+ }
119
+ return json;
120
+ }
121
+
122
+ /**
123
+ * @description 检查对象或者数组是否为空
124
+ * @param obj
125
+ * @return boolean
126
+ */
127
+ export function baseIsEmpty(obj) {
128
+ if (baseCheckVarType(obj) === 'array' ||
129
+ baseCheckVarType(obj) === 'object'
130
+ ) {
131
+ let str = JSON.stringify(obj);
132
+ return str === '{}' || str === '[]';
133
+ } else {
134
+ console.log('isEmpty.error', obj);
135
+ throw new Error('只支持数组与JSON对象格式');
136
+ }
137
+ }
138
+
139
+ /**
140
+ * @description 时间戳转年月日
141
+ * @param time {String|Number} 时间戳 (秒)
142
+ */
143
+ export function baseJsDateToTime(time) {
144
+ let date = new Date(Number(time) * 1000);
145
+ let y = date.getFullYear();
146
+ let m = date.getMonth() + 1;
147
+ m = m < 10 ? ('0' + m) : m;
148
+ let d = date.getDate();
149
+ d = d < 10 ? ('0' + d) : d;
150
+ let h = date.getHours();
151
+ h = h < 10 ? ('0' + h) : h;
152
+ let minute = date.getMinutes();
153
+ let second = date.getSeconds();
154
+ minute = minute < 10 ? ('0' + minute) : minute;
155
+ second = second < 10 ? ('0' + second) : second;
156
+ return y + '-' + m + '-' + d + ' ' + h + ':' + minute + ':' + second;
157
+ }
158
+
159
+
160
+ /**
161
+ * @description 检测查找数组是否在原数组中
162
+ * @param sourceArray 原数组
163
+ * @param findArray 查找数组
164
+ * @returns {boolean}
165
+ */
166
+ export function baseInArray(sourceArray = [], findArray = []) {
167
+ if (baseCheckVarType(sourceArray) === 'array'
168
+ && baseCheckVarType(findArray) === 'array') {
169
+ let sourceArraylen = sourceArray.length;
170
+ let find = JSON.parse(JSON.stringify(findArray));
171
+ let temp = [];
172
+ for (let i = 0; i < sourceArraylen; i++) {
173
+ let sourceVal = sourceArray[i];
174
+ for (let k = 0; k < find.length; k++) {
175
+ if (find[k] === sourceVal) {
176
+ temp.push(true);
177
+ find.splice(k, 1);
178
+ break;
179
+ }
180
+ }
181
+ }
182
+ return findArray.length === temp.length;
183
+ } else {
184
+ return false;
185
+ }
186
+ }
187
+
188
+ /**
189
+ * @description 中间键公共处理
190
+ * @param xdApp {XdAppClass}
191
+ * @param PLATFORM_PARAM_SETTING
192
+ */
193
+ export function baseMiddleware(xdApp, PLATFORM_PARAM_SETTING) {
194
+ xdApp.use('all', 'eventID', (app, next) => {
195
+ /**有活动ID=**/
196
+ if (app.$page['params'][PLATFORM_PARAM_SETTING.EVENT_PARAM_NAME]) {
197
+ app.$storage.set(PLATFORM_PARAM_SETTING.EVENT_PARAM_SAVE_KEY, app.$page['params'][PLATFORM_PARAM_SETTING.EVENT_PARAM_NAME]);
198
+ }
199
+ /**有活动ID=**/
200
+ else {
201
+ app.$storage.remove(PLATFORM_PARAM_SETTING.EVENT_PARAM_SAVE_KEY);
202
+ }
203
+ next();
204
+ });
205
+ }
206
+
207
+ /**
208
+ * @description 把特定数组键值对中的值转化为真实值
209
+ * @example [{key: 'key1', value: '2341', value_type: 'number'},{key: 'key1', value: 'true', value_type: 'boolean'}]
210
+ * @param items {Array}
211
+ * @return {Array}
212
+ */
213
+ export function AttrToTargetValues(items){
214
+ return items.map(item => {
215
+ return AttrToTargetValue(item);
216
+ })
217
+ }
218
+
219
+
220
+ /**
221
+ * @description 把特定键值对中的值转化为真实值
222
+ * @example {key: 'key1', value: '2341', value_type: 'number'} =》{key: 'key1', value_type: 2341, value_type: 'number'}
223
+ * @param item {Object}
224
+ * @param item.key {String} 键值
225
+ * @param item.value {String} 值
226
+ * @param item.value_type {String} 值类型,其值:number|object|array|string|null|boolean
227
+ * @return {Object}
228
+ */
229
+ export function AttrToTargetValue(item) {
230
+ const toHandle = (data, type) => {
231
+ let typeStr = '数组';
232
+ if (type === 'object') typeStr = '对象';
233
+ try {
234
+ let json = JSON.parse(data.value);
235
+ if (baseCheckVarType(json) === type) {
236
+ return json;
237
+ } else throw new Error(`数据类型不是${typeStr},你给的数据是:${data.value},期望的数据为:${typeStr}`);
238
+ } catch (e) {
239
+ throw new Error(`数据类型不是${typeStr},你给的数据是:${data.value},期望的数据为:${typeStr}`);
240
+ }
241
+ };
242
+ let temp = {key: item.key, value_type: item.value_type,};
243
+ switch (item.value_type) {
244
+ case 'number':
245
+ if (isNaN(Number(item.value))) throw new Error(`数据类型不是number,你给的数据是:${item.value},期望的数据为:'number'`);
246
+ else temp['value'] = Number(item.value);
247
+ break;
248
+ case 'object':
249
+ temp['value'] = toHandle(item, 'object');
250
+ break;
251
+ case 'array':
252
+ temp['value'] = toHandle(item, 'array');
253
+ break;
254
+ case 'null':
255
+ if (/^(null)$/.test(item.value)) temp['value'] = null;
256
+ else throw new Error(`数据类型不是null,你给的数据是:${item.value},期望的数据为:'null'`);
257
+ break;
258
+ case 'boolean':
259
+ if (/^(true|false)$/.test(item.value)) temp['value'] = item.value === 'true';
260
+ else throw new Error(`数据类型不是boolean,你给的数据是:${item.value},期望的数据为:'true|false'`);
261
+ break;
262
+ case 'string':
263
+ temp['value'] = item['value'];
264
+ break;
265
+ default:
266
+ temp['value'] = item['value'];
267
+ }
268
+ return temp
269
+ }
270
+
271
+ /**
272
+ * @description 获取特定数组键值队的真实值
273
+ * @example items = [{key: 'key1', value: '2341', value_type: 'number'}, {key: 'key2', value: 'true', value_type: 'booleab'}]
274
+ * @param items {Array}
275
+ * @param key
276
+ * @return {Object|null}
277
+ */
278
+ export function getAttrKeyForValue (items, key) {
279
+ let data = AttrToTargetValue(items);
280
+ let select =data.filter(item=>{
281
+ return item.key === key;
282
+ })
283
+ if(select.length > 0) return select[0];
284
+ else return null
285
+ }
286
+
287
+
288
+ /**
289
+ * @description 把特定键值对中的值转化为字符串
290
+ * @example {key: 'key1', value: 234, value_type: 'number'} =》{key: 'key1', value_type: '234', value_type: 'number'}
291
+ * @param item {Object}
292
+ * @param item.key {String} 键值
293
+ * @param item.value {String} 值
294
+ * @param item.value_type {String} 值
295
+ * @return {Object}
296
+ */
297
+ export function setAttrToValue(item) {
298
+ switch (item.value_type) {
299
+ case 'number':
300
+ if (baseCheckVarType(item.value) !== 'number') throw new Error(`数据类型不是number,你给的数据是:${item.value},期望的数据为:'number'`);
301
+ else item['value'] = String(item.value);
302
+ break;
303
+ case 'object':
304
+ if (baseCheckVarType(item.value) === 'object') item['value'] = JSON.stringify(item['value']);
305
+ else throw new Error(`数据类型不是object,你给的数据是:${item.value},期望的数据为:object`);
306
+ break;
307
+ case 'array':
308
+ if (baseCheckVarType(item.value) === 'array') item['value'] = JSON.stringify(item['value']);
309
+ else throw new Error(`数据类型不是array,你给的数据是:${item.value},期望的数据为:array`);
310
+ break;
311
+ case 'null':
312
+ if (item['value'] === null) item['value'] = 'null';
313
+ else throw new Error(`数据类型不是null,你给的数据是:${item.value},期望的数据为:null`);
314
+ break;
315
+ case 'boolean':
316
+ if (baseCheckVarType(item.value) === 'boolean') item['value'] = item['value']? 'true': 'false';
317
+ else throw new Error(`数据类型不是boolean,你给的数据是:${item.value},期望的数据为:boolean`);
318
+ break;
319
+ case 'string':
320
+ if (baseCheckVarType(item.value) !== 'string') {
321
+ throw new Error(`数据类型不是string,你给的数据是:${item.value},期望的数据为:string`)
322
+ }
323
+ break;
324
+ default:
325
+ }
326
+ return item
327
+ }
328
+
329
+ /**
330
+ * @description 转换数据格式
331
+ * @param containers {Object} 当前也能已经使用的业务组件
332
+ * @return {Array|Object}
333
+ */
334
+ export function parseContainers (containers) {
335
+ //数据类型
336
+ let isArray = true;
337
+ if(baseCheckVarType(containers) === 'object') {
338
+ isArray = false;
339
+ containers = [containers];
340
+ }
341
+ const handle = (str) => {
342
+ if(baseCheckVarType(str) === 'object') return str;
343
+ try {
344
+ return JSON.parse(str)
345
+ } catch (e) {
346
+ return {}
347
+ }
348
+ };
349
+ let temp = [];
350
+ containers.map(item => {
351
+ item['component']['attrs'] = AttrToTargetValues(item['component']['attrs']);
352
+ item['component']['props'] = {
353
+ advanced: handle(item['component']['props']['advanced']),
354
+ style: handle(item['component']['props']['style']),
355
+ content: handle(item['component']['props']['content']),
356
+ };
357
+ temp.push(item);
358
+ });
359
+ if(isArray) return temp;
360
+ else return temp[0];
361
+ }
362
+
363
+ /**
364
+ * @description 获取属性中的值
365
+ * @param container {Object} 当前也能已经使用的业务组件
366
+ * @param keys {String|Array}
367
+ * 获取Props数据键值为字符串String,其格式:xxxx.yyyy或者xxxx(默认:content)
368
+ * 例如: style.color, content.height,advanced.height
369
+ *
370
+ * 获取Props数据键值为字符串Array,其格式:['content',['color','height']] 或者 ['color','height']
371
+ * 例如: ['content',['color','height']], ['content'.'height'],
372
+ *
373
+ * @param defaultValue {*} 设置默认值
374
+ * @return {*}
375
+ */
376
+ export function getContainerPropsValue(container , keys, defaultValue = null) {
377
+ container = parseContainers(container);
378
+ let props = container['component']['props'];
379
+
380
+ //String
381
+ if(baseCheckVarType(keys) === 'string') {
382
+ let key = keys;
383
+ let type = 'content';
384
+ if (/^.+(\.).+$/.test(keys)) {
385
+ let temparr = keys.split('.');
386
+ key = temparr[1];
387
+ type = temparr[0]
388
+ }
389
+ if (props[type][key]) return props[type][key];
390
+ else return defaultValue;
391
+ }
392
+
393
+ //Array, 忽略defaultValue
394
+ if (baseCheckVarType(keys) === 'array') {
395
+ let type = 'content';
396
+ let kys = keys;
397
+ if(keys.length === 2 && baseCheckVarType(keys[1]) === 'array') {
398
+ type = keys[0];
399
+ kys = keys[1];
400
+ }
401
+ let propsData = props[type];
402
+ let temp = {};
403
+ kys.map(item=>{
404
+ temp[item] = propsData[item];
405
+ });
406
+ return temp;
407
+ }
408
+
409
+ }
410
+
411
+ /**
412
+ * @description 获取业务插件对象属性值
413
+ * @param attr {Array} 对象属性数组
414
+ * @param key {String} 键值名称
415
+ * @returns {null|*}
416
+ */
417
+ export function getComponentAttr(attr = [], key) {
418
+ if(baseCheckVarType(attr) !== 'array') return null;
419
+ if(attr.length === 0) return null;
420
+ let temp = attr.filter(item=>{
421
+ return item['key'] === key;
422
+ });
423
+
424
+ if(temp.length === 0) return null;
425
+ else return temp[0].value;
426
+ }
427
+
428
+ /**
429
+ * @description 根据键值获取业务插件中的风格值
430
+ * @param parent {*} 对象属性数组
431
+ * @param key {String} 键值名称
432
+ * @returns {Promise}
433
+ */
434
+ export function getParentsStyle(parent, key) {
435
+ let handle = (resolve, parent)=>{
436
+ if (!parent) resolve(null);
437
+ else if (parent.getParentThemes && typeof parent.getParentThemes === 'function') {
438
+ let theme = parent.getParentThemes();
439
+ resolve(theme[key])
440
+ }
441
+ else {
442
+ handle(resolve, parent.$parent)
443
+ }
444
+ };
445
+
446
+ return new Promise((resolve)=>{
447
+ handle(resolve, parent)
448
+ });
449
+ }
450
+
451
+ /**
452
+ * @description 获取业务插件中的风格列表
453
+ * @param parent {*} 对象属性数组
454
+ * @returns {Promise}
455
+ */
456
+ export function getParentsStyles(parent) {
457
+ let handle = (resolve, parent) => {
458
+ if (!parent) resolve(null);
459
+ else if (parent.getParentThemes && typeof parent.getParentThemes === 'function') {
460
+ resolve(parent.getParentThemes())
461
+ } else {
462
+ handle(resolve, parent.$parent)
463
+ }
464
+ };
465
+
466
+ return new Promise((resolve) => {
467
+ handle(resolve, parent)
468
+ });
469
+ }
470
+
471
+
472
+
473
+
474
+