123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242 |
- <template>
- <view>
- <!-- 开启事件 -->
- <movable-area v-if="quick_status == 1" :class="'quick-movable-container '+ common_ent" :style="'height: calc(100% - '+height_dec+'rpx);top:'+top+'rpx;'">
- <movable-view direction="all" :x="x" :y="y" :animation="false" class="quick-event-submit bg-main" @tap="quick_open_event">
- <image :src="common_static_url+'quick-icon.png'" mode="widthFix"></image>
- </movable-view>
- </movable-area>
- <!-- 弹窗 -->
- <component-popup :propShow="popup_status" :propIsBar="propIsBar" propPosition="bottom" @onclose="quick_close_event">
- <view :class="'nav-popup-container '+common_ent">
- <view class="close oh">
- <view class="icon-right" @tap.stop="quick_close_event">
- <icon type="clear" size="20"></icon>
- </view>
- </view>
- <view class="nav-popup-content">
- <view v-if="data_list.length > 0" class="nav-data-list">
- <view v-for="(item, index) in data_list" :key="index" class="item cp">
- <view :class="'item-content '+((item.bg_color || null) == null ? 'item-exposed' : '')" :data-value="item.event_value" :data-type="item.event_type" @tap="navigation_event" :style="((item.bg_color || null) == null ? '' : 'background-color:'+item.bg_color+';')">
- <image :src="item.images_url" mode="aspectFit"></image>
- </view>
- <view class="title">{{item.name}}</view>
- </view>
- </view>
- <view v-else>
- <!-- 提示信息 -->
- <component-no-data :propStatus="0"></component-no-data>
- </view>
- </view>
- </view>
- </component-popup>
- </view>
- </template>
- <script>
- const app = getApp();
- import componentPopup from "../popup/popup";
- import componentNoData from "../no-data/no-data";
- var common_static_url = app.globalData.get_static_url('common');
- export default {
- data() {
- return {
- common_static_url: common_static_url,
- popup_status: false,
- quick_status: 0,
- data_list: [],
- system: null,
- x: 0,
- y: 0,
- top: 0,
- height_dec: 0,
- is_first: 1,
- common_ent: ''
- };
- },
- components: {
- componentPopup,
- componentNoData
- },
- props: {
- propIsBar: {
- type: Boolean,
- default: false
- },
- propIsNav: {
- type: Boolean,
- default: false
- },
- propIsGrayscale: {
- type:Number,
- default: 0
- }
- },
- // 属性值改变监听
- watch: {
- // 是否灰度
- propIsGrayscale(value, old_value) {
- this.common_ent = (value == 1) ? 'grayscale' : '';
- }
- },
- // 页面被展示
- created: function() {
- this.init_config();
-
- // 页面是否定义导航
- var value = this.propIsNav ? 170 : 0;
- this.top = value
- this.height_dec = value;
- // #ifdef H5 || APP
- this.top = 90;
- this.height_dec = this.propIsBar ? 190 : 90;
- // #endif
- // 非首次进入则重新初始化配置接口
- if (this.is_first == 0) {
- app.globalData.init_config();
- }
- // 数据设置
- var system = app.globalData.get_system_info(null, null, true);
- var height = app.globalData.window_height_handle(system);
- this.setData({
- is_first: 0,
- system: system,
- x: 12,
- y: height - 280
- });
- },
- methods: {
- // 初始化配置
- init_config(status) {
- if ((status || false) == true) {
- this.setData({
- data_list: app.globalData.get_config('quick_nav') || [],
- quick_status: app.globalData.get_config('config.home_navigation_main_quick_status') || 0
- });
- } else {
- app.globalData.is_config(this, 'init_config');
- }
- },
- // 弹层开启
- quick_open_event(e) {
- this.setData({
- popup_status: true,
- data_list: app.globalData.get_config('quick_nav') || []
- });
- },
- // 弹层关闭
- quick_close_event(e) {
- this.setData({
- popup_status: false
- });
- },
- // 操作事件
- navigation_event(e) {
- app.globalData.operation_event(e);
- }
- }
- };
- </script>
- <style>
- /**
- * 按钮
- */
- .quick-movable-container {
- position: fixed;
- width: 100%;
- height: 100%;
- top: 0;
- left: 0;
- background: transparent;
- pointer-events: none;
- z-index: 2;
- }
- .quick-event-submit {
- pointer-events: auto;
- width: 31px;
- height: 31px;
- border-radius: 50%;
- box-shadow: 0 0 10px rgba(0, 0, 0, 0.3);
- opacity: 0.8;
- }
- .quick-event-submit image {
- width: 17px !important;
- height: 17px !important;
- margin: 7px auto 7px auto;
- display: block;
- }
- /**
- * 弹窗
- */
- .nav-popup-container {
- padding: 20rpx 10rpx 0 10rpx;
- background: #fff;
- }
- .nav-popup-container .close {
- overflow: hidden;
- }
- .nav-popup-container .close .icon-right {
- float: right;
- }
- .nav-popup-content {
- max-height: 80vh;
- overflow-y: scroll;
- overflow-x: hidden;
- padding-bottom: 20rpx;
- }
- /**
- * 内容
- */
- .nav-data-list {
- overflow: hidden;
- background: #fff;
- }
- .nav-data-list .item {
- width: calc(25% - 60rpx);
- float: left;
- padding: 30rpx;
- /* #ifdef H5 */
- cursor: pointer;
- /* #endif */
- }
- .nav-data-list .item-content {
- border-radius: 50%;
- padding: 20rpx;
- text-align: center;
- margin: 0 auto;
- -webkit-box-shadow: 0 2px 12px rgb(226 226 226 / 95%);
- box-shadow: 0 2px 12px rgb(226 226 226 / 95%);
- }
- .nav-data-list .item-content,
- .nav-data-list .item image {
- width: 70rpx !important;
- height: 70rpx !important;
- }
- .nav-data-list .item .item-exposed {
- padding: 0;
- -webkit-box-shadow: none;
- box-shadow: none;
- }
- .nav-data-list .item .item-exposed,
- .nav-data-list .item .item-exposed image {
- width: 110rpx !important;
- height: 110rpx !important;
- }
- .nav-data-list .item .title {
- margin-top: 10rpx;
- font-size: 28rpx !important;
- text-align: center;
- -o-text-overflow: ellipsis;
- text-overflow: ellipsis;
- overflow: hidden;
- white-space: nowrap;
- max-width: 100%;
- }
- </style>
|