143 lines
4.2 KiB
Plaintext
143 lines
4.2 KiB
Plaintext
<template>
|
|
<view class="marketing-member-right">
|
|
<view class="table-card border-shadow">
|
|
<view class="table-container">
|
|
<view class="table-head">
|
|
<view class="th cell-id">ID</view>
|
|
<view class="th cell-icon">权益图标</view>
|
|
<view class="th cell-name">权益名称</view>
|
|
<view class="th cell-desc">权益简介</view>
|
|
<view class="th cell-status">是否展示</view>
|
|
<view class="th cell-sort">排序</view>
|
|
<view class="th cell-op">操作</view>
|
|
</view>
|
|
|
|
<view class="table-body">
|
|
<view v-for="item in memberRights" :key="item.id" class="table-row">
|
|
<view class="td cell-id"><text class="td-txt">{{ item.id }}</text></view>
|
|
<view class="td cell-icon">
|
|
<image class="right-icon" :src="item.icon" mode="aspectFit"></image>
|
|
</view>
|
|
<view class="td cell-name"><text class="td-txt">{{ item.name }}</text></view>
|
|
<view class="td cell-desc"><text class="td-txt">{{ item.desc }}</text></view>
|
|
<view class="td cell-status">
|
|
<view class="switch-mock" :class="{ active: item.is_show }" @click="toggleStatus(item)">
|
|
<view class="switch-dot"></view>
|
|
<text class="switch-txt">{{ item.is_show ? '显示' : '隐藏' }}</text>
|
|
</view>
|
|
</view>
|
|
<view class="td cell-sort"><text class="td-txt">{{ item.sort }}</text></view>
|
|
<view class="td cell-op">
|
|
<text class="op-link" @click="handleEdit(item)">编辑</text>
|
|
</view>
|
|
</view>
|
|
</view>
|
|
</view>
|
|
</view>
|
|
</view>
|
|
</template>
|
|
|
|
<script setup lang="uts">
|
|
import { ref } from 'vue'
|
|
|
|
const memberRights = ref([
|
|
{ id: 9, icon: 'https://demo26.crmeb.net/uploads/attach/2021/11/20211115/a6f3b06e9d6d5a1b3c9d6d5a1b3c9d6d.png', name: '运费券', desc: '每月领取运费券', is_show: true, sort: 10 },
|
|
{ id: 8, icon: 'https://demo26.crmeb.net/uploads/attach/2021/11/20211115/a6f3b06e9d6d5a1b3c9d6d5a1b3c9d6d.png', name: '充值优惠', desc: '充值立减优惠', is_show: true, sort: 8 },
|
|
{ id: 7, icon: 'https://demo26.crmeb.net/uploads/attach/2021/11/20211115/a6f3b06e9d6d5a1b3c9d6d5a1b3c9d6d.png', name: '积分翻倍', desc: '购物获取双倍积分', is_show: true, sort: 7 }
|
|
])
|
|
|
|
const toggleStatus = (item: any) => {
|
|
item.is_show = !item.is_show
|
|
uni.showToast({ title: '修改成功', icon: 'success' })
|
|
}
|
|
|
|
const handleEdit = (item: any) => {
|
|
uni.showToast({ title: '编辑功能开发中', icon: 'none' })
|
|
}
|
|
</script>
|
|
|
|
<style scoped lang="scss">
|
|
.marketing-member-right {
|
|
padding: 0;
|
|
background: transparent;
|
|
min-height: auto;
|
|
}
|
|
|
|
.border-shadow {
|
|
background: #fff;
|
|
border-radius: 4px;
|
|
box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.05);
|
|
}
|
|
|
|
.table-card { padding: 24px; }
|
|
|
|
.table-head {
|
|
display: flex;
|
|
flex-direction: row;
|
|
background-color: #f8f8f9;
|
|
border-bottom: 1px solid #e8eaec;
|
|
}
|
|
|
|
.th {
|
|
padding: 12px 8px;
|
|
font-size: 13px;
|
|
color: #515a6e;
|
|
font-weight: bold;
|
|
}
|
|
|
|
.table-row {
|
|
display: flex;
|
|
flex-direction: row;
|
|
border-bottom: 1px solid #e8eaec;
|
|
align-items: center;
|
|
}
|
|
|
|
.td { padding: 16px 8px; }
|
|
.td-txt { font-size: 13px; color: #515a6e; }
|
|
|
|
.cell-id { width: 80px; }
|
|
.cell-icon { width: 100px; text-align: center; }
|
|
.cell-name { width: 150px; }
|
|
.cell-desc { flex: 1; }
|
|
.cell-status { width: 120px; text-align: center; }
|
|
.cell-sort { width: 100px; text-align: center; }
|
|
.cell-op { width: 80px; text-align: right; }
|
|
|
|
.right-icon {
|
|
width: 40px;
|
|
height: 40px;
|
|
}
|
|
|
|
.switch-mock {
|
|
width: 50px;
|
|
height: 24px;
|
|
background-color: #bfbfbf;
|
|
border-radius: 12px;
|
|
display: flex;
|
|
flex-direction: row;
|
|
align-items: center;
|
|
padding: 0 4px;
|
|
position: relative;
|
|
transition: background-color 0.3s;
|
|
cursor: pointer;
|
|
}
|
|
.switch-mock.active { background-color: #1890ff; }
|
|
.switch-dot {
|
|
width: 16px;
|
|
height: 16px;
|
|
background-color: #fff;
|
|
border-radius: 50%;
|
|
position: absolute;
|
|
left: 4px;
|
|
transition: left 0.3s;
|
|
}
|
|
.switch-mock.active .switch-dot { left: 30px; }
|
|
.switch-txt { font-size: 11px; color: #fff; margin-left: 20px; }
|
|
.switch-mock.active .switch-txt { margin-left: 4px; }
|
|
|
|
.op-link { color: #1890ff; font-size: 13px; cursor: pointer; }
|
|
</style>
|
|
|
|
|
|
|