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,227 @@
1
+ <template>
2
+ <view class="xd-tab-title" :style="'background:' + background">
3
+ <view class="xd-tab-title__line" :style="getLineStyle"></view>
4
+ <view class="xd-tab-title__body" :style="getStyle">
5
+ <scroll-view
6
+ class="tab-scroll"
7
+ scroll-x
8
+ :scroll-into-view="toView"
9
+ >
10
+ <view class="tab-scroll__box">
11
+ <view
12
+ :id="`tab-scroll__index-${index}`"
13
+ v-for="(item, index) in tabList"
14
+ :key="index"
15
+ :style="{
16
+ color: activeIndex === index? activeColor: color,
17
+ marginRight: itemPaddingRight + 'rpx'
18
+ }"
19
+ class="tab-scroll__item"
20
+ :class="{active:activeIndex === index}"
21
+ @click="clickTab(item, index)"
22
+ >
23
+ <text>{{item.name}}</text>
24
+ <view v-if="activeIndex === index && tabList.length > 1" class="xd-tab-title__body-line" :style="{borderColor:$mainColor }"></view>
25
+ </view>
26
+ </view>
27
+ </scroll-view>
28
+ </view>
29
+ <view class="xd-tab-title__more" v-if="isMore">
30
+ <xd-button btn-type="primary" size="small" @click="handleMoreClick">更多></xd-button>
31
+ </view>
32
+ </view>
33
+ </template>
34
+
35
+ <script>
36
+ import XdButton from "@/components/XdButton/XdButton";
37
+
38
+ /**
39
+ * XdTabTitle 全局Ui
40
+ * @description 标题样式ui
41
+ * @tutorial
42
+ * @property {number|string} intoView 显示当前第几个
43
+ * @property {Boolean} isLeftLine 是否显示标题左侧竖线 (选填)
44
+ * @property {Number} margin tab标签两端边距 (选填)
45
+ * @property {Number} itemPaddingRight 标签边边距 (选填)
46
+ * @property {String} activeColor 标签当前选中颜色值 (选填)默认:#333
47
+ * @property {String} color 标签文本颜色值 (选填)默认:#999
48
+ * @property {Boolean} isMore 右侧是否显示更多按钮 (选填)
49
+ * @property {Array} list 标签列表 (必填)
50
+ * list[n]['id'] 标签ID,唯一值(必要字段)
51
+ * list[n]['id'] 标签名称(必要字段)
52
+ *
53
+ * @property {String} background 背景样式值 默认:#fff
54
+ *
55
+ * @event {Function} onTab 点击标签事件
56
+ * @event {Function} onMore 点击更多事件
57
+ */
58
+
59
+ export default {
60
+ name: "XdTabTitle",
61
+ components: {XdButton},
62
+ props: {
63
+ value: Number|String,
64
+ intoView: {
65
+ type: Number | String,
66
+ default: 0,
67
+ },
68
+ isLeftLine:{
69
+ type: Boolean,
70
+ default: true
71
+ },
72
+ margin: {
73
+ type: Number,
74
+ default: 0
75
+ },
76
+ itemPaddingRight: {
77
+ type: Number,
78
+ default: 56
79
+ },
80
+ activeColor: {
81
+ type: String,
82
+ default: '#333'
83
+ },
84
+ color: {
85
+ type: String,
86
+ default: '#999'
87
+ },
88
+ isMore: {
89
+ type: Boolean,
90
+ default: true
91
+ },
92
+ list:{
93
+ type: Array,
94
+ required: true
95
+ },
96
+ background: {
97
+ type: String,
98
+ default: '#fff'
99
+ }
100
+ },
101
+ data(){
102
+ return {
103
+ activeIndex:0,
104
+ toView: 'tab-scroll__index-0',
105
+ tabList: [],
106
+ }
107
+ },
108
+ watch:{
109
+ list(val){
110
+ this.setTitleValue(val)
111
+ },
112
+ },
113
+
114
+ created(){
115
+ this.setTitleValue(this.list);
116
+ },
117
+
118
+ mounted(){
119
+ this.$nextTick(() => {
120
+ setTimeout(() => {
121
+ this.activeIndex = this.intoView;
122
+ this.toView = `tab-scroll__index-${this.intoView}`;
123
+ this.$emit('onInit', this.list[this.activeIndex], this.activeIndex);
124
+ }, 10);
125
+ });
126
+ },
127
+
128
+ computed:{
129
+ getLineStyle(){
130
+ if(this.isLeftLine) {
131
+ return `background: ${this.$mainColor}; height:31rpx; width: 8rpx; border-radius: 4rpx; margin: 0 19rpx 0 13rpx;`
132
+ }else{
133
+ return `width: 0;`
134
+ }
135
+ },
136
+ getStyle(){
137
+ let line = (this.isLeftLine? 40 : 0) * this.$rpxNum ;
138
+ let more = 110 * this.$rpxNum;
139
+ let margin = this.margin * this.$rpxNum * 2;
140
+ if(!this.isMore) more = 0;
141
+
142
+ let leftMargin = this.margin * this.$rpxNum;
143
+ let rightMargin = this.margin * this.$rpxNum ;
144
+ return `width: calc(100vw - ${line + more + leftMargin + rightMargin}px); padding-left: ${leftMargin}px; padding-right: ${rightMargin}px;`;
145
+ },
146
+ },
147
+
148
+ methods:{
149
+ setTitleValue(val){
150
+ if (this.value) {
151
+ this.activeIndex = this.value;
152
+ this.scrollIntoViewId = `tab-scroll__index-${this.activeIndex}`;
153
+ }else{
154
+ this.scrollIntoViewId = `tab-scroll__index-${this.activeIndex}`;
155
+ }
156
+ if(val.length > 0) {
157
+ this.tabList = val;
158
+ this.$emit('onTab', this.list[this.activeIndex], this.activeIndex, false);
159
+ }
160
+ },
161
+ clickTab(item, index) {
162
+ this.activeIndex = index;
163
+ this.$emit('onTab', item, index, true);
164
+ },
165
+ handleMoreClick(){
166
+ this.$emit('onMore', this.activeIndex);
167
+ },
168
+ }
169
+ }
170
+ </script>
171
+
172
+ <style scoped lang="less">
173
+ .xd-tab-title {
174
+ display: flex;
175
+ justify-content: flex-start;
176
+ align-items: center;
177
+ height: unit(100,rpx);
178
+
179
+ &__body {
180
+ height: unit(80,rpx);
181
+
182
+ .tab-scroll {
183
+ width: 100%;
184
+ height: 100%;
185
+
186
+ &__box {
187
+ display: flex;
188
+ align-items: center;
189
+ flex-wrap: nowrap;
190
+ height: unit(80, rpx);
191
+ box-sizing: border-box;
192
+ }
193
+
194
+ &__item {
195
+ flex-shrink: 0;
196
+ color: #333;
197
+ font-size: unit(30, rpx);
198
+ position: relative;
199
+ }
200
+
201
+ &__item:last-child{
202
+ padding-right: 0!important;
203
+ }
204
+ }
205
+ @lineW: 40;
206
+ &-line {
207
+ position: absolute;
208
+ width: unit(@lineW,rpx);
209
+ bottom: unit(-8,rpx);
210
+ left: 50%;
211
+ margin-left: unit(-(@lineW/2),rpx);
212
+ height: 0;
213
+ border-bottom-style: solid;
214
+ border-bottom-width: unit(6,rpx);
215
+ border-radius: unit(4,rpx);
216
+ }
217
+ }
218
+
219
+ &__more {
220
+ width: unit(120,rpx);
221
+ margin-left: unit(10,rpx);
222
+ /deep/ .xd-button {
223
+ padding: 0 unit(20,rpx);
224
+ }
225
+ }
226
+ }
227
+ </style>
@@ -0,0 +1,206 @@
1
+ <template>
2
+ <view
3
+ class="xd-unit"
4
+ :style="{height: fontSize *1.5 + 'rpx'}"
5
+ :class="{'xd-unit__show': !(uiIcon && isShowIcon)}"
6
+ >
7
+ <view
8
+ class="xd-unit__price"
9
+ :style="{
10
+ lineHeight: fontSize + 'rpx',
11
+ fontSize: fontSize + 'rpx',
12
+ fontWeight: fontWeight,
13
+ textDecoration: deleteLine ? 'line-through': 'none',
14
+ color: uiColor
15
+ }"
16
+ >{{uiPrice}}</view>
17
+ <template v-if="uiIcon && isShowIcon">
18
+ <xd-image :is-gray="isGray" :src="uiIcon" :size="iconSize || iocnSize"></xd-image>
19
+ </template>
20
+ <template v-else>
21
+ <template v-if="unit !== null">
22
+ <view
23
+ class="xd-unit__unit"
24
+ :style=" {
25
+ lineHeight: fontSize + 'rpx',
26
+ fontSize: unitFontSize > 0 ? (unitFontSize + 'rpx') :(fontSize - 8) + 'rpx',
27
+ color: uiColor
28
+ }"
29
+ v-if="unit">{{unit}}</view>
30
+ <view v-else>
31
+ <xd-coins :size="iconSize || iocnSize"></xd-coins>
32
+ </view>
33
+ </template>
34
+ </template>
35
+ </view>
36
+ </template>
37
+
38
+ <script>
39
+ /**
40
+ * @name XdUnit
41
+ * @description 单位显示插件(自定义unitIcon单位图片大小100*100)
42
+ * @tutorial
43
+ * @property {Number} fontSize 支付金额文字大小 (选填) 默认:32rpx
44
+ * @property {Number|String} price 支付金额 (必选)
45
+ * @property {String} color 支付金额文本颜色 (选填) 默认:主色调
46
+ * @property {String} unit 支付金额单位 (选填) 默认:空,选上元宝样式
47
+ * @property {Boolean} isGray 支付icon标是否显示为灰色 (选填) 默认:false
48
+ * @property {Number} iocnSize 支付元宝样式大小 (选填) 默认:0.35 备注:unit单位为空时候生效(不推荐使用)
49
+ * @property {Number} iconSize 支付元宝样式大小 (选填) 默认:null 备注:unit单位为空时候生效
50
+ */
51
+ import XdCoins from "@/components/XdCoins/XdCoins";
52
+ import XdImage from "@/components/XdImage/XdImage";
53
+ import {
54
+ getParentsStyle,
55
+ } from '@/utils/xd.base';
56
+
57
+ export default {
58
+ name: "XdUnit",
59
+ components: {
60
+ XdCoins,
61
+ XdImage
62
+ },
63
+ props: {
64
+ fontSize: {
65
+ type: Number,
66
+ default: 32
67
+ },
68
+
69
+ isGray: {
70
+ type: Boolean,
71
+ default: false,
72
+ },
73
+
74
+ isShowIcon: {
75
+ type: Boolean,
76
+ default: true,
77
+ },
78
+ price: {
79
+ type: String | Number,
80
+ required: true,
81
+ },
82
+ color: {
83
+ type: String,
84
+ default: ''
85
+ },
86
+ unit: {
87
+ type: String | null,
88
+ default: null
89
+ },
90
+
91
+ iocnSize: {
92
+ type: Number,
93
+ default: 0.35
94
+ },
95
+ iconSize: {
96
+ type: Number | null,
97
+ default: null
98
+ },
99
+
100
+ deleteLine: {
101
+ type: Boolean,
102
+ default: false,
103
+ },
104
+
105
+ fontWeight: {
106
+ type: String | Number,
107
+ default: 'bold' //normal,bold, 100-700
108
+ },
109
+
110
+ unitFontSize: {
111
+ type: Number,
112
+ default: 0
113
+ },
114
+
115
+ isOld: {
116
+ type: Boolean,
117
+ default: false,
118
+ }
119
+
120
+ },
121
+ data() {
122
+ return {
123
+ uiColor: '', //金额显示颜色
124
+ uiIcon: null, //金额显示icon
125
+ uiPrice: null, //金额
126
+ }
127
+ },
128
+ watch:{
129
+ price(value) {
130
+ this.initPrice()
131
+ },
132
+ },
133
+ async created() {
134
+ this.uiColor = this.$mainColor;
135
+
136
+ //设置显示数字
137
+ this.initPrice();
138
+
139
+ //使用配置文件里面的单位颜色
140
+ if(this.webSetting['unitTextColor']) {
141
+ this.uiColor = this.webSetting['unitTextColor'];
142
+ }
143
+
144
+ //自定义单位自定义颜色
145
+ if(this.webSetting['unitTextColor']) {
146
+ this.uiColor = this.webSetting['unitTextColor'];
147
+ }
148
+
149
+ //配置中获取
150
+ let optionsIcon = null;
151
+ if (this.webSetting['unitIcon']) {
152
+ optionsIcon = this.webSetting['unitIcon'];
153
+ }
154
+
155
+ //brand中获取
156
+ let brandIncon = null;
157
+ if (getApp().globalData.$xd && getApp().globalData.$xd.brandInfo['unit_icon']) {
158
+ brandIncon = getApp().globalData.$xd.brandInfo['unit_icon'];
159
+ }
160
+
161
+ //项目配置中获取
162
+ let projectIcon;
163
+ if (getApp().globalData.$xd && getApp().globalData.$xd.project['unit_icon']) {
164
+ brandIncon = getApp().globalData.$xd.project['unit_icon'];
165
+ }
166
+
167
+ //风格文件中获取主色
168
+ let styleColor = await getParentsStyle(this.$parent, '$mainColor');
169
+ if(styleColor) this.uiColor = styleColor;
170
+
171
+ this.uiIcon = projectIcon || brandIncon || optionsIcon;
172
+ if (this.color) this.uiColor = this.color;
173
+
174
+ if(this.unit === null) {
175
+ this.uiIcon = projectIcon || brandIncon || optionsIcon;
176
+ }
177
+ },
178
+ methods: {
179
+ initPrice(){
180
+ //设置显示数字
181
+ if (this.isOld) this.uiPrice = this.price;
182
+ else this.uiPrice = this.$xdUniHelper.divisionFloatNumber(this.price, 100);
183
+ }
184
+ }
185
+ }
186
+ </script>
187
+
188
+ <style scoped lang="less">
189
+ .xd-unit {
190
+ display: flex;
191
+ justify-content: flex-start;
192
+ align-items: center;
193
+ align-content: center;
194
+
195
+ &__show {
196
+ align-items: center;
197
+ align-content: center;
198
+ }
199
+
200
+ &__price {
201
+ margin-right: unit(8, rpx);
202
+ font-weight: normal;
203
+ }
204
+
205
+ }
206
+ </style>
@@ -0,0 +1,197 @@
1
+ <template>
2
+ <view
3
+ class="up-upload"
4
+ :style="{
5
+ backgroundColor:backgroundColor,
6
+ borderWidth: borderWidth,
7
+ borderColor: borderColor,
8
+ borderStyle: borderStyle,
9
+ borderRadius: borderRadius
10
+ }"
11
+ >
12
+ <view
13
+ class="up-upload__image"
14
+ :style="{
15
+ width:width + 'rpx',
16
+ height:height + 'rpx'
17
+ }"
18
+ @click="upload"
19
+ >
20
+ <view v-if="!url" class="up-upload__image-icon">
21
+ <slot>
22
+ <xd-font-icon :icon="icon" :size="size" :color="color"></xd-font-icon>
23
+ </slot>
24
+ </view>
25
+ <view
26
+ v-else
27
+ class="up-upload__image-url"
28
+ :style="{
29
+ width:width + 'rpx',
30
+ height:height + 'rpx'
31
+ }"
32
+ >
33
+ <image :style="{borderRadius: borderRadius}" :src="url" mode="aspectFit"></image>
34
+ </view>
35
+ </view>
36
+ <view class="up-upload__title" v-if="title">{{title}}</view>
37
+ </view>
38
+ </template>
39
+
40
+ <script>
41
+ import XdFontIcon from "@/components/XdFontIcon/XdFontIcon";
42
+
43
+ export default {
44
+ name: "XdUpload",
45
+ components: {
46
+ XdFontIcon
47
+ },
48
+ props: {
49
+ keyword: {
50
+ type: String,
51
+ required: false
52
+ },
53
+
54
+ defaultValue: {
55
+ type: String | null,
56
+ default: null
57
+ },
58
+
59
+ title: {
60
+ type: String,
61
+ default: ''
62
+ },
63
+
64
+ width: {
65
+ type: String | Number,
66
+ default: '200'
67
+ },
68
+ height: {
69
+ type: String | Number,
70
+ default: '200'
71
+ },
72
+ borderWidth: {
73
+ type: String | Number,
74
+ default: ''
75
+ },
76
+ borderColor: {
77
+ type: String,
78
+ default: ''
79
+ },
80
+ borderStyle: {
81
+ type: String,
82
+ default: ''
83
+ },
84
+ borderRadius: {
85
+ type: String | Number,
86
+ default: ''
87
+ },
88
+ backgroundColor: {
89
+ type: String,
90
+ default: '#e5e5e5'
91
+ },
92
+
93
+ icon: {
94
+ type: String,
95
+ default: 'iconlovefont iconlovetupian'
96
+ },
97
+ color: {
98
+ type: String,
99
+ default: '#fff'
100
+ },
101
+ size: {
102
+ type: String | Number,
103
+ default: '80'
104
+ }
105
+ },
106
+
107
+ data() {
108
+ return {
109
+ url: null, //上传图片地址
110
+ id: '',//图片ID
111
+ titleHeight: 50,
112
+ }
113
+ },
114
+
115
+ watch: {
116
+ defaultValue(value) {
117
+ if (value !== null) {
118
+ this.url = value['url'];
119
+ this.id = value['id'];
120
+ }
121
+ }
122
+ },
123
+
124
+ created() {
125
+ if (this.defaultValue !== null) {
126
+ this.url = this.defaultValue['url'];
127
+ this.id = this.defaultValue['id'];
128
+ }
129
+ },
130
+
131
+ methods: {
132
+ select(files) {
133
+ //if(files['tempFilePaths']) this.url = files['tempFilePaths'];
134
+ this.$emit('select', {
135
+ files,
136
+ keyword: this.keyword,
137
+ /**
138
+ * @description
139
+ * @param image 图片地址
140
+ * @param id
141
+ */
142
+ resolve: ({image, id}) => {
143
+ this.url = image
144
+ this.id = id;
145
+ }
146
+ })
147
+ },
148
+ upload() {
149
+ uni.chooseImage({
150
+ count: 1,
151
+ success: (files) => {
152
+ console.log('chooseImage', files);
153
+ this.select(files);
154
+ },
155
+ fail: (error) => {
156
+ throw new Error('选中图片失败')
157
+ },
158
+ })
159
+ }
160
+ }
161
+
162
+ }
163
+ </script>
164
+
165
+ <style scoped lang="less">
166
+ .up-upload {
167
+ border-radius: unit(10, rpx);
168
+ padding: unit(10, rpx);
169
+
170
+ &__image {
171
+
172
+ &-icon {
173
+ position: relative;
174
+ width: 100%;
175
+ height: 100%;
176
+ display: flex;
177
+ justify-content: center;
178
+ align-items: center;
179
+ }
180
+
181
+ &-url {
182
+ width: 100%;
183
+
184
+ & > image {
185
+ width: 100%;
186
+ height: 100%;
187
+ }
188
+ }
189
+ }
190
+
191
+ &__title {
192
+ text-align: center;
193
+ padding-top: unit(10, rpx);
194
+ line-height: unit(40, rpx);
195
+ }
196
+ }
197
+ </style>