|
@@ -0,0 +1,93 @@
|
|
|
|
|
+<!--
|
|
|
|
|
+ * @Descripttion: 左侧导航菜单
|
|
|
|
|
+ * @version: 1.0.0
|
|
|
|
|
+ * @Author: dream
|
|
|
|
|
+ * @Date: 2021-03-27 14:13:43
|
|
|
|
|
+ * @LastEditors: dream
|
|
|
|
|
+ * @LastEditTime: 2021-03-27 18:29:15
|
|
|
|
|
+-->
|
|
|
|
|
+<template>
|
|
|
|
|
+ <view class="left-menu-main">
|
|
|
|
|
+ <block v-for="(item, index) in list" :key="index">
|
|
|
|
|
+ <view
|
|
|
|
|
+ :class="['menu-item', item.value === current ? 'active' : '']"
|
|
|
|
|
+ :id="`menu-item-${item.value}`"
|
|
|
|
|
+ @click="changeMenu(item)"
|
|
|
|
|
+ >{{item.label}}</view>
|
|
|
|
|
+ </block>
|
|
|
|
|
+ <view
|
|
|
|
|
+ class="menu-bar"
|
|
|
|
|
+ :style="{
|
|
|
|
|
+ height: `${bar.height}rpx`,
|
|
|
|
|
+ top: `${bar.top}rpx`
|
|
|
|
|
+ }"
|
|
|
|
|
+ ></view>
|
|
|
|
|
+ </view>
|
|
|
|
|
+</template>
|
|
|
|
|
+
|
|
|
|
|
+<script>
|
|
|
|
|
+export default {
|
|
|
|
|
+ name: 'iphLeftMenu',
|
|
|
|
|
+ data () {
|
|
|
|
|
+ return {
|
|
|
|
|
+ current: 1,
|
|
|
|
|
+ list: [{
|
|
|
|
|
+ value: 1,
|
|
|
|
|
+ label: '包材'
|
|
|
|
|
+ }, {
|
|
|
|
|
+ value: 2,
|
|
|
|
|
+ label: '调料'
|
|
|
|
|
+ }, {
|
|
|
|
|
+ value: 3,
|
|
|
|
|
+ label: '面粉'
|
|
|
|
|
+ }, {
|
|
|
|
|
+ value: 4,
|
|
|
|
|
+ label: '两行文案两行'
|
|
|
|
|
+ }],
|
|
|
|
|
+ bar: {
|
|
|
|
|
+ top: 0,
|
|
|
|
|
+ height: 0
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ },
|
|
|
|
|
+ mounted () {
|
|
|
|
|
+ this.$nextTick(() => {
|
|
|
|
|
+ this.changeMenu(this.list[0])
|
|
|
|
|
+ })
|
|
|
|
|
+ },
|
|
|
|
|
+ methods: {
|
|
|
|
|
+ changeMenu (val) {
|
|
|
|
|
+ this.current = val.value
|
|
|
|
|
+ const view = uni.createSelectorQuery().in(this).select(`#menu-item-${this.current}`)
|
|
|
|
|
+ view.boundingClientRect(data => {
|
|
|
|
|
+ this.bar.top = data ? (data.top + 14) * 2 : 0
|
|
|
|
|
+ this.bar.height = data ? (data.height - 28) * 2 : 32
|
|
|
|
|
+ }).exec()
|
|
|
|
|
+ console.log(this.bar)
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+}
|
|
|
|
|
+</script>
|
|
|
|
|
+
|
|
|
|
|
+<style lang="scss" scoped>
|
|
|
|
|
+.left-menu-main {
|
|
|
|
|
+ width: 160px;
|
|
|
|
|
+ .menu-item {
|
|
|
|
|
+ padding: 28px;
|
|
|
|
|
+ font-weight: 500;
|
|
|
|
|
+ text-align: center;
|
|
|
|
|
+ color: $iph-tip-text;
|
|
|
|
|
+ }
|
|
|
|
|
+ .active {
|
|
|
|
|
+ color: $u-type-primary;
|
|
|
|
|
+ background-color: $iph-standby-bg;
|
|
|
|
|
+ }
|
|
|
|
|
+ .menu-bar {
|
|
|
|
|
+ position: absolute;
|
|
|
|
|
+ left: 0;
|
|
|
|
|
+ width: 6px;
|
|
|
|
|
+ background: $u-type-primary;
|
|
|
|
|
+ border-radius: 4px;
|
|
|
|
|
+ }
|
|
|
|
|
+}
|
|
|
|
|
+</style>
|