Showing
15 changed files
with
77 additions
and
39 deletions
| @@ -6,7 +6,7 @@ | @@ -6,7 +6,7 @@ | ||
| 6 | <image src="/static/shaixuan.png" /> | 6 | <image src="/static/shaixuan.png" /> |
| 7 | </view> | 7 | </view> |
| 8 | <!-- 告警分页 --> | 8 | <!-- 告警分页 --> |
| 9 | - <mescroll-uni height="700px" ref="mescrollRef" @init="mescrollInit" :up="upOption" :down="downOption" | 9 | + <mescroll-uni height="700rpx;" ref="mescrollRef" @init="mescrollInit" :up="upOption" :down="downOption" |
| 10 | @down="downCallback" @up="upCallback"> | 10 | @down="downCallback" @up="upCallback"> |
| 11 | <alarm-item :list="list" @openAlertDetail="openAlertDetail"></alarm-item> | 11 | <alarm-item :list="list" @openAlertDetail="openAlertDetail"></alarm-item> |
| 12 | <mescroll-empty v-if="!list.length" /> | 12 | <mescroll-empty v-if="!list.length" /> |
| @@ -17,7 +17,6 @@ | @@ -17,7 +17,6 @@ | ||
| 17 | </view> | 17 | </view> |
| 18 | </template> | 18 | </template> |
| 19 | <script> | 19 | <script> |
| 20 | - import FilterItem from '@/pages/device/components/query-item.vue'; | ||
| 21 | import MescrollMixin from '@/uni_modules/mescroll-uni/components/mescroll-uni/mescroll-mixins.js'; | 20 | import MescrollMixin from '@/uni_modules/mescroll-uni/components/mescroll-uni/mescroll-mixins.js'; |
| 22 | import api from '@/api/index.js' | 21 | import api from '@/api/index.js' |
| 23 | import alarmItem from '@/pages/alarm/components/alarm-item.vue' | 22 | import alarmItem from '@/pages/alarm/components/alarm-item.vue' |
| @@ -29,7 +28,6 @@ | @@ -29,7 +28,6 @@ | ||
| 29 | export default { | 28 | export default { |
| 30 | mixins: [MescrollMixin], | 29 | mixins: [MescrollMixin], |
| 31 | components: { | 30 | components: { |
| 32 | - FilterItem, | ||
| 33 | alarmItem, | 31 | alarmItem, |
| 34 | alarmPopup | 32 | alarmPopup |
| 35 | }, | 33 | }, |
| @@ -69,7 +67,9 @@ | @@ -69,7 +67,9 @@ | ||
| 69 | }, | 67 | }, |
| 70 | resetQuery() { | 68 | resetQuery() { |
| 71 | this.page.num = 1; | 69 | this.page.num = 1; |
| 72 | - this.$refs.alarmPopupRef.resetQuery() | 70 | + this.$nextTick(() => { |
| 71 | + this.$refs.alarmPopupRef.resetQuery() | ||
| 72 | + }) | ||
| 73 | this.conditions = {} | 73 | this.conditions = {} |
| 74 | }, | 74 | }, |
| 75 | downCallback() { | 75 | downCallback() { |
| @@ -60,7 +60,7 @@ | @@ -60,7 +60,7 @@ | ||
| 60 | </view> | 60 | </view> |
| 61 | <!-- 命令下发 --> | 61 | <!-- 命令下发 --> |
| 62 | <!-- #ifdef APP-PLUS --> | 62 | <!-- #ifdef APP-PLUS --> |
| 63 | - <app-command-issuance :showModal="appShowModal"></app-command-issuance> | 63 | + <app-command-issuance></app-command-issuance> |
| 64 | <!-- #endif --> | 64 | <!-- #endif --> |
| 65 | <!-- #ifdef MP --> | 65 | <!-- #ifdef MP --> |
| 66 | <!-- u-modal在app端弹窗层级无法覆盖 --> | 66 | <!-- u-modal在app端弹窗层级无法覆盖 --> |
| @@ -80,13 +80,11 @@ | @@ -80,13 +80,11 @@ | ||
| 80 | import api from '@/api/index.js' | 80 | import api from '@/api/index.js' |
| 81 | import mpCommandIssuance from './mp-command-issuance.vue' | 81 | import mpCommandIssuance from './mp-command-issuance.vue' |
| 82 | import appCommandIssuance from './app-command-issuance.vue' | 82 | import appCommandIssuance from './app-command-issuance.vue' |
| 83 | - import nextModal from '@/components/module/next-modal_1.0.2/components/next-modal/next-modal.vue' | ||
| 84 | 83 | ||
| 85 | export default { | 84 | export default { |
| 86 | components: { | 85 | components: { |
| 87 | mpCommandIssuance, | 86 | mpCommandIssuance, |
| 88 | appCommandIssuance, | 87 | appCommandIssuance, |
| 89 | - nextModal | ||
| 90 | }, | 88 | }, |
| 91 | props: { | 89 | props: { |
| 92 | deviceDetail: { | 90 | deviceDetail: { |
| @@ -137,7 +135,7 @@ | @@ -137,7 +135,7 @@ | ||
| 137 | latitude: this.deviceDetail.deviceInfo.latitude || 0 | 135 | latitude: this.deviceDetail.deviceInfo.latitude || 0 |
| 138 | }; | 136 | }; |
| 139 | uni.navigateTo({ | 137 | uni.navigateTo({ |
| 140 | - url: '/deviceSubPage/deviceDetailPage/devicePosition?data=' + JSON.stringify(data) | 138 | + url: '/device-subpackage/device-detail/device-position?data=' + JSON.stringify(data) |
| 141 | }); | 139 | }); |
| 142 | }, | 140 | }, |
| 143 | disabledScroll() { | 141 | disabledScroll() { |
| @@ -145,6 +143,7 @@ | @@ -145,6 +143,7 @@ | ||
| 145 | }, | 143 | }, |
| 146 | handleAppShowModal() { | 144 | handleAppShowModal() { |
| 147 | this.appShowModal = true | 145 | this.appShowModal = true |
| 146 | + this.$refs.appCommandIssuanceRef.open() | ||
| 148 | }, | 147 | }, |
| 149 | handleMpShowModal() { | 148 | handleMpShowModal() { |
| 150 | const { | 149 | const { |
| @@ -103,7 +103,7 @@ | @@ -103,7 +103,7 @@ | ||
| 103 | 103 | ||
| 104 | <style lang="scss" scoped> | 104 | <style lang="scss" scoped> |
| 105 | .command-detail { | 105 | .command-detail { |
| 106 | - padding: 0 30rpx; | 106 | + padding: 5rpx 30rpx; |
| 107 | height: 100vh; | 107 | height: 100vh; |
| 108 | background-color: #f8f9fa; | 108 | background-color: #f8f9fa; |
| 109 | 109 |
| @@ -39,15 +39,17 @@ | @@ -39,15 +39,17 @@ | ||
| 39 | </view> | 39 | </view> |
| 40 | </mescroll-uni> | 40 | </mescroll-uni> |
| 41 | <!-- 命令记录弹窗筛选 --> | 41 | <!-- 命令记录弹窗筛选 --> |
| 42 | - <u-popup @close="close" closeable bgColor="#fff" :show="show" mode="bottom" :round="20" | ||
| 43 | - @touchmove.stop.prevent="disabledScroll"> | 42 | + <u-popup @close="close" closeable bgColor="#fff" :show="show" mode="bottom" :round="20"> |
| 44 | <view class="filter" @touchmove.stop.prevent="disabledScroll"> | 43 | <view class="filter" @touchmove.stop.prevent="disabledScroll"> |
| 45 | <view class="filter-title"><text>筛选条件</text></view> | 44 | <view class="filter-title"><text>筛选条件</text></view> |
| 46 | <query-item :filterList="issueStatus" title="下发状态" | 45 | <query-item :filterList="issueStatus" title="下发状态" |
| 47 | @clickTag="currentIndex => handleClickTag(currentIndex, issueStatus)"></query-item> | 46 | @clickTag="currentIndex => handleClickTag(currentIndex, issueStatus)"></query-item> |
| 48 | - <view class="mt-3"> | ||
| 49 | - <uni-datetime-picker return-type="timestamp" v-model="range" type="datetimerange" | ||
| 50 | - rangeSeparator="至" /> | 47 | + <view class="flex-column"> |
| 48 | + <view class="mt-3 command-time-text">命令下发时间</view> | ||
| 49 | + <view class="mt-3"> | ||
| 50 | + <uni-datetime-picker return-type="timestamp" v-model="range" type="datetimerange" | ||
| 51 | + rangeSeparator="至" /> | ||
| 52 | + </view> | ||
| 51 | </view> | 53 | </view> |
| 52 | <view class="h-30"></view> | 54 | <view class="h-30"></view> |
| 53 | <view class="button-group"> | 55 | <view class="button-group"> |
| @@ -147,7 +149,9 @@ | @@ -147,7 +149,9 @@ | ||
| 147 | const condition = Object.values(this.formTime) | 149 | const condition = Object.values(this.formTime) |
| 148 | if (condition.length === 0) { | 150 | if (condition.length === 0) { |
| 149 | this.page.num += 1; | 151 | this.page.num += 1; |
| 150 | - this.loadData(this.page.num); | 152 | + this.loadData(this.page.num, { |
| 153 | + ...tbDeviceId | ||
| 154 | + }); | ||
| 151 | } else if (condition.filter(Boolean).length > 0) { | 155 | } else if (condition.filter(Boolean).length > 0) { |
| 152 | this.page.num += 1; | 156 | this.page.num += 1; |
| 153 | this.loadData(this.page.num, { | 157 | this.loadData(this.page.num, { |
| @@ -156,7 +160,9 @@ | @@ -156,7 +160,9 @@ | ||
| 156 | }); | 160 | }); |
| 157 | } else { | 161 | } else { |
| 158 | this.page.num += 1; | 162 | this.page.num += 1; |
| 159 | - this.loadData(this.page.num); | 163 | + this.loadData(this.page.num, { |
| 164 | + ...tbDeviceId | ||
| 165 | + }); | ||
| 160 | } | 166 | } |
| 161 | }, | 167 | }, |
| 162 | async loadData(pageNo, params = {}) { | 168 | async loadData(pageNo, params = {}) { |
| @@ -321,5 +327,11 @@ | @@ -321,5 +327,11 @@ | ||
| 321 | width: 330rpx; | 327 | width: 330rpx; |
| 322 | } | 328 | } |
| 323 | } | 329 | } |
| 330 | + | ||
| 331 | + .command-time-text { | ||
| 332 | + color: #333; | ||
| 333 | + font-size: 14px; | ||
| 334 | + font-weight: 700; | ||
| 335 | + } | ||
| 324 | } | 336 | } |
| 325 | </style> | 337 | </style> |
| @@ -96,7 +96,6 @@ | @@ -96,7 +96,6 @@ | ||
| 96 | alarmStatus, | 96 | alarmStatus, |
| 97 | lastOnlineTime, | 97 | lastOnlineTime, |
| 98 | }; | 98 | }; |
| 99 | - | ||
| 100 | // 设备类型不是网关子设备的添加一个命令记录的选项卡 | 99 | // 设备类型不是网关子设备的添加一个命令记录的选项卡 |
| 101 | if (this.deviceDetail.deviceType !== "SENSOR") { | 100 | if (this.deviceDetail.deviceType !== "SENSOR") { |
| 102 | this.list.push({ | 101 | this.list.push({ |
| @@ -180,7 +179,6 @@ | @@ -180,7 +179,6 @@ | ||
| 180 | }; | 179 | }; |
| 181 | }); | 180 | }); |
| 182 | }); | 181 | }); |
| 183 | - | ||
| 184 | const keys = await getDeviceKeys(tbDeviceId); | 182 | const keys = await getDeviceKeys(tbDeviceId); |
| 185 | this.keys = [keys]; | 183 | this.keys = [keys]; |
| 186 | // 昨天 | 184 | // 昨天 |
| @@ -204,7 +202,6 @@ | @@ -204,7 +202,6 @@ | ||
| 204 | }); | 202 | }); |
| 205 | this.timeDiff = "30分钟"; | 203 | this.timeDiff = "30分钟"; |
| 206 | if (!Object.keys(data).length) return; | 204 | if (!Object.keys(data).length) return; |
| 207 | - | ||
| 208 | this.historyData = data[keys[0]].map((item) => { | 205 | this.historyData = data[keys[0]].map((item) => { |
| 209 | return { | 206 | return { |
| 210 | value: item.value, | 207 | value: item.value, |
| @@ -16,17 +16,23 @@ | @@ -16,17 +16,23 @@ | ||
| 16 | <u--textarea placeholder="请输入反馈信息" v-model="feedbackData.feedbackInfo.message" count> | 16 | <u--textarea placeholder="请输入反馈信息" v-model="feedbackData.feedbackInfo.message" count> |
| 17 | </u--textarea> | 17 | </u--textarea> |
| 18 | </u-form-item> | 18 | </u-form-item> |
| 19 | - <view class="feed-back-text" style="margin: 15px 0px 0px -16rpx;">上传图片(最多6张)</view> | ||
| 20 | - <view class="info" style="margin-top: 15rpx;background: rgba(1, 1, 1, 0);"> | 19 | + <view class="feed-back-text upload-text">上传图片(最多6张)</view> |
| 20 | + <view class="info"> | ||
| 21 | <view class="info-contain"> | 21 | <view class="info-contain"> |
| 22 | <u-form-item label="图片" prop="feedbackInfo.images" borderBottom> | 22 | <u-form-item label="图片" prop="feedbackInfo.images" borderBottom> |
| 23 | <u-upload :capture="capture" :fileList="fileList1" @afterRead="afterRead" | 23 | <u-upload :capture="capture" :fileList="fileList1" @afterRead="afterRead" |
| 24 | @delete="deletePic" name="1" multiple :maxCount="6"></u-upload> | 24 | @delete="deletePic" name="1" multiple :maxCount="6"></u-upload> |
| 25 | </u-form-item> | 25 | </u-form-item> |
| 26 | </view> | 26 | </view> |
| 27 | - <view style="width:427rpx;margin:0 auto;"> | 27 | + <view class="info-button"> |
| 28 | + <!-- #ifdef MP --> | ||
| 28 | <u-button class="buttonSty button-sty" shape="circle" type="primary" text="提交" | 29 | <u-button class="buttonSty button-sty" shape="circle" type="primary" text="提交" |
| 29 | - customStyle="margin-top: 200rpx" @click="submit"></u-button> | 30 | + customStyle="margin-top: 280rpx" @click="submit"></u-button> |
| 31 | + <!-- #endif --> | ||
| 32 | + <!-- #ifdef APP-PLUS --> | ||
| 33 | + <u-button class="buttonSty button-sty" shape="circle" type="primary" text="提交" | ||
| 34 | + customStyle="margin-top: 880rpx" @click="submit"></u-button> | ||
| 35 | + <!-- #endif --> | ||
| 30 | </view> | 36 | </view> |
| 31 | </view> | 37 | </view> |
| 32 | </u--form> | 38 | </u--form> |
| @@ -15,6 +15,9 @@ | @@ -15,6 +15,9 @@ | ||
| 15 | padding-left: 15rpx; | 15 | padding-left: 15rpx; |
| 16 | padding: 0 20rpx; | 16 | padding: 0 20rpx; |
| 17 | height: 860rpx; | 17 | height: 860rpx; |
| 18 | + .upload-text{ | ||
| 19 | + margin: 15px 0px 0px -16rpx; | ||
| 20 | + } | ||
| 18 | 21 | ||
| 19 | .info { | 22 | .info { |
| 20 | width: 700rpx; | 23 | width: 700rpx; |
| @@ -23,6 +26,8 @@ | @@ -23,6 +26,8 @@ | ||
| 23 | margin-top: 100rpx; | 26 | margin-top: 100rpx; |
| 24 | height: 256rpx; | 27 | height: 256rpx; |
| 25 | margin-left: -20rpx; | 28 | margin-left: -20rpx; |
| 29 | + margin-top: 15rpx; | ||
| 30 | + background: rgba(1, 1, 1, 0); | ||
| 26 | 31 | ||
| 27 | .info-contain { | 32 | .info-contain { |
| 28 | margin: 0rpx 27rpx; | 33 | margin: 0rpx 27rpx; |
| @@ -43,6 +48,10 @@ | @@ -43,6 +48,10 @@ | ||
| 43 | border: none !important; | 48 | border: none !important; |
| 44 | } | 49 | } |
| 45 | } | 50 | } |
| 51 | + .info-button{ | ||
| 52 | + width:427rpx; | ||
| 53 | + margin:0 auto; | ||
| 54 | + } | ||
| 46 | } | 55 | } |
| 47 | 56 | ||
| 48 | /deep/.u-button--primary { | 57 | /deep/.u-button--primary { |
| @@ -38,8 +38,7 @@ | @@ -38,8 +38,7 @@ | ||
| 38 | <u-form-item labelWidth="80px" label="邮箱地址" prop="email" borderBottom> | 38 | <u-form-item labelWidth="80px" label="邮箱地址" prop="email" borderBottom> |
| 39 | <u--input placeholder="请输入邮箱地址" v-model="myInfoModel.email" border="none"></u--input> | 39 | <u--input placeholder="请输入邮箱地址" v-model="myInfoModel.email" border="none"></u--input> |
| 40 | </u-form-item> | 40 | </u-form-item> |
| 41 | - <u-form-item @click="showDate = true;hideKeyboard();" labelWidth="80px" label="有效期" | ||
| 42 | - prop="accountExpireTime"> | 41 | + <u-form-item @click="hideKeyboard" labelWidth="80px" label="有效期" prop="accountExpireTime"> |
| 43 | <u--input v-model="myInfoModel.accountExpireTime" placeholder="请选择有效期" border="none"></u--input> | 42 | <u--input v-model="myInfoModel.accountExpireTime" placeholder="请选择有效期" border="none"></u--input> |
| 44 | <u-datetime-picker :formatter="formatter" :show="showDate" :value="datetime" mode="dateTime" | 43 | <u-datetime-picker :formatter="formatter" :show="showDate" :value="datetime" mode="dateTime" |
| 45 | closeOnClickOverlay @confirm="dateConfirm" @cancel="dateClose" @close="dateClose"> | 44 | closeOnClickOverlay @confirm="dateConfirm" @cancel="dateClose" @close="dateClose"> |
| @@ -383,6 +382,7 @@ | @@ -383,6 +382,7 @@ | ||
| 383 | }, | 382 | }, |
| 384 | //隐藏输入框 | 383 | //隐藏输入框 |
| 385 | hideKeyboard() { | 384 | hideKeyboard() { |
| 385 | + this.showDate = true; | ||
| 386 | uni.hideKeyboard(); | 386 | uni.hideKeyboard(); |
| 387 | } | 387 | } |
| 388 | } | 388 | } |
| @@ -139,7 +139,7 @@ | @@ -139,7 +139,7 @@ | ||
| 139 | useShowToast(toastText).then(async (res) => { | 139 | useShowToast(toastText).then(async (res) => { |
| 140 | this.saveUserInfo(); | 140 | this.saveUserInfo(); |
| 141 | await this.getAlarmTotalData(); | 141 | await this.getAlarmTotalData(); |
| 142 | - useReLaunch("/pages/index/index") | 142 | + useReLaunch("../../pages/index/index") |
| 143 | }); | 143 | }); |
| 144 | }, | 144 | }, |
| 145 | //微信授权登录 | 145 | //微信授权登录 |
| @@ -130,7 +130,9 @@ | @@ -130,7 +130,9 @@ | ||
| 130 | resetQuery() { | 130 | resetQuery() { |
| 131 | this.queryCondition.searchAlarmText = ''; | 131 | this.queryCondition.searchAlarmText = ''; |
| 132 | this.page.num = 1; | 132 | this.page.num = 1; |
| 133 | - this.$refs.alarmPopupRef.resetQuery() | 133 | + this.$nextTick(() => { |
| 134 | + this.$refs.alarmPopupRef.resetQuery() | ||
| 135 | + }) | ||
| 134 | this.conditions = {} | 136 | this.conditions = {} |
| 135 | }, | 137 | }, |
| 136 | topBack() { | 138 | topBack() { |
| @@ -185,7 +187,9 @@ | @@ -185,7 +187,9 @@ | ||
| 185 | }, | 187 | }, |
| 186 | openSearchDialog() { | 188 | openSearchDialog() { |
| 187 | this.show = true; | 189 | this.show = true; |
| 188 | - this.resetQuery(); | 190 | + this.$nextTick(() => { |
| 191 | + this.resetQuery(); | ||
| 192 | + }) | ||
| 189 | }, | 193 | }, |
| 190 | openOrg() { | 194 | openOrg() { |
| 191 | useNavigateTo('/pages/organization/organization') | 195 | useNavigateTo('/pages/organization/organization') |
| @@ -19,6 +19,7 @@ | @@ -19,6 +19,7 @@ | ||
| 19 | rangeSeparator="至" /> | 19 | rangeSeparator="至" /> |
| 20 | </view> | 20 | </view> |
| 21 | </view> | 21 | </view> |
| 22 | + <view class="h-30"></view> | ||
| 22 | <view class="u-flex bottom-button"> | 23 | <view class="u-flex bottom-button"> |
| 23 | <view class="button-item"> | 24 | <view class="button-item"> |
| 24 | <u-button @click="resetQuery" type="info" shape="circle" text="重置"> | 25 | <u-button @click="resetQuery" type="info" shape="circle" text="重置"> |
| @@ -110,10 +111,12 @@ | @@ -110,10 +111,12 @@ | ||
| 110 | resetQuery() { | 111 | resetQuery() { |
| 111 | for (let i in this.queryCondition) Reflect.set(this.queryCondition, i, '') | 112 | for (let i in this.queryCondition) Reflect.set(this.queryCondition, i, '') |
| 112 | this.range = [] | 113 | this.range = [] |
| 113 | - this.$refs.queryItemAlarmStatusRef.reset() | ||
| 114 | - this.$refs.queryDeviceTypeStatusRef.reset() | ||
| 115 | - this.$refs.queryItemAlarmLevelRef.reset() | ||
| 116 | - this.$refs.queryItemSelectTimeRef.reset() | 114 | + this.$nextTick(() => { |
| 115 | + this.$refs.queryItemAlarmStatusRef.reset() | ||
| 116 | + this.$refs.queryDeviceTypeStatusRef.reset() | ||
| 117 | + this.$refs.queryItemAlarmLevelRef.reset() | ||
| 118 | + this.$refs.queryItemSelectTimeRef.reset() | ||
| 119 | + }) | ||
| 117 | }, | 120 | }, |
| 118 | } | 121 | } |
| 119 | }; | 122 | }; |
| @@ -170,7 +170,9 @@ | @@ -170,7 +170,9 @@ | ||
| 170 | }, | 170 | }, |
| 171 | openSearchDialog() { | 171 | openSearchDialog() { |
| 172 | this.show = true; | 172 | this.show = true; |
| 173 | - this.resetQuery() | 173 | + this.$nextTick(() => { |
| 174 | + this.resetQuery(); | ||
| 175 | + }) | ||
| 174 | }, | 176 | }, |
| 175 | openDeviceDetail(id, alarmStatus, lastOnlineTime, tbDeviceId) { | 177 | openDeviceDetail(id, alarmStatus, lastOnlineTime, tbDeviceId) { |
| 176 | uni.navigateTo({ | 178 | uni.navigateTo({ |
| 1 | <template> | 1 | <template> |
| 2 | <view class="container"> | 2 | <view class="container"> |
| 3 | <view class="container-box"> | 3 | <view class="container-box"> |
| 4 | - <image :src="mpOwnConfig.logo"></image> | 4 | + <image v-if="mpOwnConfig.logo" :src="mpOwnConfig.logo"></image> |
| 5 | + <image v-else :src="staticLogo"></image> | ||
| 5 | <text class="splash-text-muted">连接世界 创造价值</text> | 6 | <text class="splash-text-muted">连接世界 创造价值</text> |
| 6 | </view> | 7 | </view> |
| 7 | </view> | 8 | </view> |
| @@ -12,7 +13,9 @@ | @@ -12,7 +13,9 @@ | ||
| 12 | mapState | 13 | mapState |
| 13 | } from 'vuex'; | 14 | } from 'vuex'; |
| 14 | import api from '@/api/index.js' | 15 | import api from '@/api/index.js' |
| 15 | - import { useReLaunch } from '@/plugins/utils.js' | 16 | + import { |
| 17 | + useReLaunch | ||
| 18 | + } from '@/plugins/utils.js' | ||
| 16 | 19 | ||
| 17 | export default { | 20 | export default { |
| 18 | data() { | 21 | data() { |
| @@ -72,4 +75,4 @@ | @@ -72,4 +75,4 @@ | ||
| 72 | } | 75 | } |
| 73 | } | 76 | } |
| 74 | } | 77 | } |
| 75 | -</style> | 78 | +</style> |
| @@ -47,6 +47,10 @@ button { | @@ -47,6 +47,10 @@ button { | ||
| 47 | white-space: nowrap; | 47 | white-space: nowrap; |
| 48 | } | 48 | } |
| 49 | ///////////////////////////////////////////////////////////////小程序、app抽取公共样式///////////////////////////////////////////////////////////////////// | 49 | ///////////////////////////////////////////////////////////////小程序、app抽取公共样式///////////////////////////////////////////////////////////////////// |
| 50 | +.flex-column{ | ||
| 51 | + display: flex; | ||
| 52 | + flex-direction: column; | ||
| 53 | +} | ||
| 50 | .mt-3{ | 54 | .mt-3{ |
| 51 | margin-top: 30rpx; | 55 | margin-top: 30rpx; |
| 52 | } | 56 | } |