| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336 | <template>	<view class="screen_view_dm">		<view class="screen_container_view">			<view v-if='!isShowPlatform && !isShowSecondScreen'></view>			<view class="screen_btn_view" @click="tagAction('left')" v-if='isShowPlatform'>				<text class="screen_btn_title">{{defaultParameter.terminal | getTerminalName}}</text>				<image class="screen_btn_icon" src="../../static/icons/icon_drop_black@2x.png" mode=""></image>			</view>			<block v-if="midScreenList.length < 4">				<view class="screen_btn_view" v-if="isShowSecondScreen">					<view class="subScreen" @click="secondScreenAction">						<text class="screen_btn_title">{{secondScreenName}}</text>						<image class="screen_btn_icon" src="../../static/icons/icon_drop_black@2x.png" mode=""></image>					</view>				</view>				<text :class="['screen_list',value==item.value?'screen_list_active':'']" v-if='midScreenList.length && !isEmty'				 v-for="(item, index) in midScreenList" :key="item.value" :style="{'color':value==item.value?themeColor:'#666666'}"				 @click="selectTab(item)">					{{item.title}}				</text>			</block>			<block v-else>				<view class="screen_more" @click="showMidScreenPicker">					<view class="screen_more_text">{{screenShowName}}</view>					<image class="screen_more_icon" src="../../static/icons/icon_drop_black@2x.png" mode=""></image>				</view>			</block>			<view class="screen_btn_view" @click="tagAction('right')">				<text class="screen_btn_title">{{defaultParameter.dateType | getTimeName}}</text>				<image class="screen_btn_icon" src="../../static/icons/icon_drop_black@2x.png" mode=""></image>			</view>		</view>				<view class="timeDisplay" v-if="beginDate > 0">			<text>{{beginDate | visitTimeFilter}}</text>			<text v-if="endDate > 0">至</text>			<text v-if="endDate > 0">{{endDate | visitTimeFilter}}</text>		</view>		<dm-picker-view ref="midScreenPicer" v-if="midScreenList.length >= 4" :options="midScreenList" @confirm="selectMidScreen"></dm-picker-view>	</view></template><script>	import dmPickerView from './dmPickerView.vue'	import moment from '../../static/moment.min.js'	import {			displayDateFormat		} from "../../static/format.js"	export default {		props: {			midScreenList: {				type: Array,				default () {					return []				}			},			defaultParameter: {				type: Object,				default () {					return {						'dateType': '1',						'startDate': '',						'endDate': '',						'terminal': '0'					}				}			},			isEmty:{				type:Boolean,				default:false			},			modelValue: {				type: [Number, String],				default: '0'			},			isShowPlatform:{ // 认证记录 到访记录 不显示平台				type: Boolean,				default: true			},			isShowSecondScreen: {				type: Boolean,				default: false			},			secondScreenName: {				type: String,				default: '按最新成交状态'			}		},		model: {			prop: 'modelValue',			event: 'change'		},		data() {			return {				themeColor: '',				value: this.modelValue,				beginDate: null,				endDate: null,				screenShowName: ''			}		},		filters: {			getTerminalName(val) {				if (val == '0') {					return '全部平台'				} else if (val == '1') {					return '微信'				} else if (val == '2') {					return '抖音'				} else if (val == '3') {					return '百度'				} else if (val == '4') {					return '头条'				} else if (val == '5') {					return '支付宝'				} else if (val == '6') {					return 'QQ小程序'				} else if (val == '7') {					return '其他'				}			},			getTimeName(val) {				if (val == '1') {					return '今日'				} else if (val == '2') {					return '近一周'				} else if (val == '3') {					return '近一月'				} else if (val == '4') {					return '自定义'				}			},			visitTimeFilter(val) {				return displayDateFormat(val)			},		},		mounted() {			let app = getApp();			this.globalData = app.globalData;			this.themeColor = this.globalData.themeColor;			this.displayDate()		},		methods: {			secondScreenAction() {				this.$emit('secondScreenAction')			},			selectTab(item) {				if (this.value != item.value) {					this.value = item.value				}			},			tagAction(val) {				this.$emit('tagAction', val)			},			showMidScreenPicker() {				this.$refs.midScreenPicer.show()			},			selectMidScreen(e) {				if (this.value != e.selItem.value) {					this.value = e.selItem.value				}			},			displayDate() {				var dateType = parseInt(this.defaultParameter.dateType)				let curDate = (new Date()).getTime();				this.beginDate = null				this.endDate = null								if (dateType == 1) {					this.beginDate = curDate				}				else if (dateType == 2) {					this.endDate = curDate					this.beginDate = this.getBeginDate(6)				}				else if (dateType == 3) {					this.endDate = curDate					this.beginDate = this.getBeginDate(29)				}				else if (dateType == 4) {					// var self = this					// uni.showModal({					// 	content: JSON.stringify(self.defaultParameter)					// })					this.beginDate = this.stringToStamp(this.defaultParameter.startDate)					this.endDate = this.stringToStamp(this.defaultParameter.endDate)				}			},						getBeginDate(days) {				let curDate = (new Date()).getTime();				let beginDay = curDate - days * 24 * 60 * 60 * 1000				return beginDay			},			stringToStamp(val) {				// var timeStr = val.replace('-', '/') + ' ' + '00:00:00'				// var timeStr = val.replace(new RegExp("/", "gm"), "") + ' ' + '00:00:00'				var timeStr = val.replace(/-/g,'/') + " " + '00:00:00'				var self = this				var stamp = new Date(timeStr).getTime()								// debugger				// uni.showModal({				// 	content: JSON.stringify(stamp)				// })				return stamp			}					},		components: {			dmPickerView		},		watch: {			//监听值变化,再赋值给modelValue			value(val) {				var self = this				this.midScreenList.forEach((item, idx) => {					if (item.value == val) {						self.screenShowName = item.title					}				})				this.$emit('change', val);			},			defaultParameter: {				handler(e) {					this.displayDate()				},				deep: true			},			modelValue: {				handler(e) {					this.value = e				},				immediate: true			},			midScreenList: {				handler(e) {					var self = this					this.midScreenList.forEach((item, idx) => {						if (item.value == self.value) {							self.screenShowName = item.title						}					})				},				deep: true,				immediate: true			}		}	}</script><style scoped lang="scss">	.screen_view_dm {		width: 750rpx;		padding-top: 40rpx;		padding-bottom: 10rpx;		background-color: #ffffff;		// z-index: 10;		// position: relative;				.screen_container_view {			display: flex;			width: 750rpx;			padding: 0 20rpx;			height: 40rpx;			box-sizing: border-box;			flex-direction: row;			justify-content: space-between;			align-items: center;			font-family: Verdana, Verdana-Bold;						.screen_btn_view {				display: flex;								.subScreen {					display: flex;					align-items: center;				}				.screen_btn_title {					font-weight: 700;					font-size: 24rpx;					color: #333333;				}				.screen_btn_icon {					width: 30rpx;					height: 30rpx;				}			}			.screen_list {				font-size: 28rpx;				font-weight: 400;			}			.screen_list_active {				font-size: 28rpx;				font-weight: 700;			}						.screen_more {				display: flex;				align-items: center;				flex-grow: 1;				margin-left: 60rpx;								.screen_more_text {					font-weight: 700;					font-size: 24rpx;					color: #333333;					margin-right: 10rpx;				}								.screen_more_icon {					width: 30rpx;					height: 30rpx;				}			}					}				.timeDisplay {			font-family: Verdana;			font-size: 24rpx;			color: #666;			line-height: 34rpx;			text-align: right;			margin-top: 5rpx;			margin-right: 20rpx;			min-height: 34rpx;			height: 34rpx;		}			}</style>
 |