优化细节
This commit is contained in:
@@ -1,44 +1,44 @@
|
||||
<template>
|
||||
<template>
|
||||
<view class="admin-user-level">
|
||||
<view class="content-body">
|
||||
<!-- 顶部过滤栏 -->
|
||||
<!-- 椤堕儴杩囨护鏍?-->
|
||||
<view class="filter-card border-shadow">
|
||||
<view class="filter-item">
|
||||
<text class="label-txt">等级状态:</text>
|
||||
<text class="label-txt">绛夌骇鐘舵€?</text>
|
||||
<view class="select-mock">
|
||||
<text class="select-val">请选择</text>
|
||||
<text class="arrow-down">▼</text>
|
||||
<text class="select-val">璇烽€夋嫨</text>
|
||||
<text class="arrow-down">鈻?/text>
|
||||
</view>
|
||||
</view>
|
||||
<view class="filter-item">
|
||||
<text class="label-txt">等级名称:</text>
|
||||
<input class="search-input" placeholder="请输入等级名称" v-model="filterName" />
|
||||
<text class="label-txt">绛夌骇鍚嶇О:</text>
|
||||
<input class="search-input" placeholder="璇疯緭鍏ョ瓑绾у悕绉? v-model="filterName" />
|
||||
</view>
|
||||
<view class="btn-query" @click="handleQuery">
|
||||
<text class="query-txt">查询</text>
|
||||
<text class="query-txt">鏌ヨ</text>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<!-- 主要内容区域 -->
|
||||
<!-- 涓昏鍐呭鍖哄煙 -->
|
||||
<view class="table-card border-shadow">
|
||||
<view class="card-header">
|
||||
<view class="btn-primary-blue" @click="handleAdd">
|
||||
<text class="btn-txt">添加用户等级</text>
|
||||
<text class="btn-txt">娣诲姞鐢ㄦ埛绛夌骇</text>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<!-- 数据表格 -->
|
||||
<!-- 鏁版嵁琛ㄦ牸 -->
|
||||
<view class="table-container">
|
||||
<view class="table-header-row">
|
||||
<view class="th" style="width: 80px;">ID</view>
|
||||
<view class="th" style="width: 120px;">等级图标</view>
|
||||
<view class="th" style="width: 150px;">等级背景图</view>
|
||||
<view class="th" style="flex: 1;">等级名称</view>
|
||||
<view class="th" style="width: 100px;">等级</view>
|
||||
<view class="th" style="width: 120px;">享受折扣</view>
|
||||
<view class="th" style="width: 150px;">经验值要求</view>
|
||||
<view class="th" style="width: 120px;">是否显示</view>
|
||||
<view class="th" style="width: 150px;">操作</view>
|
||||
<view class="th" style="width: 120px;">绛夌骇鍥炬爣</view>
|
||||
<view class="th" style="width: 150px;">绛夌骇鑳屾櫙鍥?/view>
|
||||
<view class="th" style="flex: 1;">绛夌骇鍚嶇О</view>
|
||||
<view class="th" style="width: 100px;">绛夌骇</view>
|
||||
<view class="th" style="width: 120px;">浜彈鎶樻墸</view>
|
||||
<view class="th" style="width: 150px;">缁忛獙鍊艰姹?/view>
|
||||
<view class="th" style="width: 120px;">鏄惁鏄剧ず</view>
|
||||
<view class="th" style="width: 150px;">鎿嶄綔</view>
|
||||
</view>
|
||||
|
||||
<view class="table-body">
|
||||
@@ -63,22 +63,22 @@
|
||||
</view>
|
||||
<view class="td" style="width: 150px;">
|
||||
<view class="op-links">
|
||||
<text class="op-link" @click="handleEdit(item)">编辑</text>
|
||||
<text class="op-link" @click="handleEdit(item)">缂栬緫</text>
|
||||
<text class="op-split">|</text>
|
||||
<text class="op-link text-danger">删除</text>
|
||||
<text class="op-link text-danger">鍒犻櫎</text>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<!-- 分页 -->
|
||||
<!-- 鍒嗛〉 -->
|
||||
<view class="pagination-footer">
|
||||
<view class="page-total">
|
||||
<text class="total-txt">共 {{ total }} 条</text>
|
||||
<text class="total-txt">鍏?{{ total }} 鏉?/text>
|
||||
</view>
|
||||
<view class="page-select">
|
||||
<text class="page-val">15条/页 ▼</text>
|
||||
<text class="page-val">15鏉?椤?鈻?/text>
|
||||
</view>
|
||||
<view class="page-btns">
|
||||
<text class="p-btn disabled"><</text>
|
||||
@@ -86,61 +86,61 @@
|
||||
<text class="p-btn">></text>
|
||||
</view>
|
||||
<view class="page-jump">
|
||||
<text class="jump-txt">前往</text>
|
||||
<text class="jump-txt">鍓嶅線</text>
|
||||
<input class="jump-input" placeholder="1" />
|
||||
<text class="jump-txt">页</text>
|
||||
<text class="jump-txt">椤?/text>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<!-- 抽屉弹窗 (Add/Edit) -->
|
||||
<!-- 鎶藉眽寮圭獥 (Add/Edit) -->
|
||||
<view v-if="showDrawer" :class="['drawer-mask', isClosing ? 'mask-fade-out' : '']" @click="closeDrawer">
|
||||
<view :class="['drawer-content', isClosing ? 'slide-out' : '']" @click.stop="">
|
||||
<view class="drawer-header">
|
||||
<text class="title-txt">{{ isEdit ? '编辑用户等级' : '添加用户等级' }}</text>
|
||||
<text class="close-btn" @click="closeDrawer">×</text>
|
||||
<text class="title-txt">{{ isEdit ? '缂栬緫鐢ㄦ埛绛夌骇' : '娣诲姞鐢ㄦ埛绛夌骇' }}</text>
|
||||
<text class="close-btn" @click="closeDrawer">脳</text>
|
||||
</view>
|
||||
|
||||
<scroll-view class="drawer-body" :scroll-y="true">
|
||||
<view class="form-item">
|
||||
<view class="label-box"><text class="required">*</text><text class="label-txt">等级名称:</text></view>
|
||||
<input class="input-base" v-model="form.name" placeholder="请输入等级名称" />
|
||||
<view class="label-box"><text class="required">*</text><text class="label-txt">绛夌骇鍚嶇О:</text></view>
|
||||
<input class="input-base" v-model="form.name" placeholder="璇疯緭鍏ョ瓑绾у悕绉? />
|
||||
</view>
|
||||
|
||||
<view class="form-item">
|
||||
<view class="label-box"><text class="required">*</text><text class="label-txt">等级权重:</text></view>
|
||||
<input class="input-base" type="number" v-model="form.level" placeholder="等级权重越大等级越高" />
|
||||
<view class="label-box"><text class="required">*</text><text class="label-txt">绛夌骇鏉冮噸:</text></view>
|
||||
<input class="input-base" type="number" v-model="form.level" placeholder="绛夌骇鏉冮噸瓒婂ぇ绛夌骇瓒婇珮" />
|
||||
</view>
|
||||
|
||||
<view class="form-item">
|
||||
<view class="label-box"><text class="required">*</text><text class="label-txt">等级图标:</text></view>
|
||||
<view class="label-box"><text class="required">*</text><text class="label-txt">绛夌骇鍥炬爣:</text></view>
|
||||
<view class="upload-placeholder">
|
||||
<text class="up-ic">+</text>
|
||||
<text class="up-txt">上传图标</text>
|
||||
<text class="up-txt">涓婁紶鍥炬爣</text>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<view class="form-item">
|
||||
<view class="label-box"><text class="required">*</text><text class="label-txt">等级背景图:</text></view>
|
||||
<view class="label-box"><text class="required">*</text><text class="label-txt">绛夌骇鑳屾櫙鍥?</text></view>
|
||||
<view class="upload-placeholder bg-up">
|
||||
<text class="up-ic">+</text>
|
||||
<text class="up-txt">上传背景图</text>
|
||||
<text class="up-txt">涓婁紶鑳屾櫙鍥?/text>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<view class="form-item">
|
||||
<view class="label-box"><text class="required">*</text><text class="label-txt">享受折扣(%):</text></view>
|
||||
<input class="input-base" type="number" v-model="form.discount" placeholder="请输入折扣,如:95" />
|
||||
<view class="label-box"><text class="required">*</text><text class="label-txt">浜彈鎶樻墸(%):</text></view>
|
||||
<input class="input-base" type="number" v-model="form.discount" placeholder="璇疯緭鍏ユ姌鎵o紝濡傦細95" />
|
||||
</view>
|
||||
|
||||
<view class="form-item">
|
||||
<view class="label-box"><text class="required">*</text><text class="label-txt">经验值要求:</text></view>
|
||||
<input class="input-base" type="number" v-model="form.experience" placeholder="请输入经验值要求" />
|
||||
<view class="label-box"><text class="required">*</text><text class="label-txt">缁忛獙鍊艰姹?</text></view>
|
||||
<input class="input-base" type="number" v-model="form.experience" placeholder="璇疯緭鍏ョ粡楠屽€艰姹? />
|
||||
</view>
|
||||
|
||||
<view class="form-item">
|
||||
<view class="label-box"><text class="label-txt">是否显示:</text></view>
|
||||
<view class="label-box"><text class="label-txt">鏄惁鏄剧ず:</text></view>
|
||||
<view :class="['switch-box', form.isShow ? 'active' : '']" @click="form.isShow = !form.isShow">
|
||||
<view class="switch-dot"></view>
|
||||
</view>
|
||||
@@ -148,8 +148,8 @@
|
||||
</scroll-view>
|
||||
|
||||
<view class="drawer-footer">
|
||||
<view class="btn-cancel" @click="closeDrawer"><text class="btn-cancel-txt">取消</text></view>
|
||||
<view class="btn-save" @click="handleSave"><text class="btn-save-txt">提交</text></view>
|
||||
<view class="btn-cancel" @click="closeDrawer"><text class="btn-cancel-txt">鍙栨秷</text></view>
|
||||
<view class="btn-save" @click="handleSave"><text class="btn-save-txt">鎻愪氦</text></view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
@@ -174,11 +174,11 @@ interface LevelItem {
|
||||
const filterName = ref('')
|
||||
const total = ref(5)
|
||||
const levelList = ref<LevelItem[]>([
|
||||
{ id: 1, name: 'V1', level: 1, iconBg: '#fdf6ec', iconSymbol: '👑', bgGradient: 'linear-gradient(to bottom right, #f5e6d3, #e8d5bc)', discount: 99, experience: 500, isShow: true },
|
||||
{ id: 2, name: 'V2', level: 2, iconBg: '#ecf5ff', iconSymbol: '💎', bgGradient: 'linear-gradient(to bottom right, #d3e9f5, #bcd9e8)', discount: 97, experience: 1000, isShow: true },
|
||||
{ id: 3, name: 'V3', level: 3, iconBg: '#f4f4f5', iconSymbol: '⭐', bgGradient: 'linear-gradient(to bottom right, #e3e3e3, #cbcbcb)', discount: 95, experience: 3000, isShow: true },
|
||||
{ id: 4, name: 'V4', level: 4, iconBg: '#fef0f0', iconSymbol: '👑', bgGradient: 'linear-gradient(to bottom right, #f5dfd3, #e8c6bc)', discount: 93, experience: 8000, isShow: true },
|
||||
{ id: 5, name: 'V5', level: 5, iconBg: '#f0f9eb', iconSymbol: '💠', bgGradient: 'linear-gradient(to bottom right, #d3e1f5, #bccce8)', discount: 70, experience: 15000, isShow: true }
|
||||
{ id: 1, name: 'V1', level: 1, iconBg: '#fdf6ec', iconSymbol: '馃憫', bgGradient: 'linear-gradient(to bottom right, #f5e6d3, #e8d5bc)', discount: 99, experience: 500, isShow: true },
|
||||
{ id: 2, name: 'V2', level: 2, iconBg: '#ecf5ff', iconSymbol: '馃拵', bgGradient: 'linear-gradient(to bottom right, #d3e9f5, #bcd9e8)', discount: 97, experience: 1000, isShow: true },
|
||||
{ id: 3, name: 'V3', level: 3, iconBg: '#f4f4f5', iconSymbol: '猸?, bgGradient: 'linear-gradient(to bottom right, #e3e3e3, #cbcbcb)', discount: 95, experience: 3000, isShow: true },
|
||||
{ id: 4, name: 'V4', level: 4, iconBg: '#fef0f0', iconSymbol: '馃憫', bgGradient: 'linear-gradient(to bottom right, #f5dfd3, #e8c6bc)', discount: 93, experience: 8000, isShow: true },
|
||||
{ id: 5, name: 'V5', level: 5, iconBg: '#f0f9eb', iconSymbol: '馃挔', bgGradient: 'linear-gradient(to bottom right, #d3e1f5, #bccce8)', discount: 70, experience: 15000, isShow: true }
|
||||
])
|
||||
|
||||
const showDrawer = ref(false)
|
||||
@@ -252,7 +252,7 @@ const handleSave = () => {
|
||||
gap: 20px;
|
||||
}
|
||||
|
||||
/* 过滤栏 */
|
||||
/* 杩囨护鏍?*/
|
||||
.filter-card {
|
||||
padding: 24px;
|
||||
display: flex;
|
||||
@@ -307,7 +307,7 @@ const handleSave = () => {
|
||||
}
|
||||
.query-txt { color: #fff; font-size: 14px; }
|
||||
|
||||
/* 表格区域 */
|
||||
/* 琛ㄦ牸鍖哄煙 */
|
||||
.table-card {
|
||||
background-color: #fff;
|
||||
display: flex;
|
||||
@@ -355,7 +355,7 @@ const handleSave = () => {
|
||||
|
||||
.td-txt { font-size: 14px; color: #515a6e; }
|
||||
|
||||
/* 图标和背景预览 */
|
||||
/* 鍥炬爣鍜岃儗鏅瑙?*/
|
||||
.icon-circle {
|
||||
width: 36px;
|
||||
height: 36px;
|
||||
@@ -374,7 +374,7 @@ const handleSave = () => {
|
||||
border: 1px solid #eee;
|
||||
}
|
||||
|
||||
/* Switch 开关复刻 */
|
||||
/* Switch 寮€鍏冲鍒?*/
|
||||
.switch-box {
|
||||
width: 44px;
|
||||
height: 22px;
|
||||
@@ -402,7 +402,7 @@ const handleSave = () => {
|
||||
.op-split { color: #e8eaec; margin: 0 5px; }
|
||||
.text-danger { color: #ed4014; }
|
||||
|
||||
/* 分页 */
|
||||
/* 鍒嗛〉 */
|
||||
.pagination-footer {
|
||||
padding: 20px;
|
||||
display: flex;
|
||||
@@ -447,7 +447,7 @@ const handleSave = () => {
|
||||
.drawer-content {
|
||||
width: 500px;
|
||||
height: 100%;
|
||||
background-color: #fff;
|
||||
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
animation: slideIn 0.3s ease-out;
|
||||
@@ -520,3 +520,4 @@ const handleSave = () => {
|
||||
@keyframes fadeOut { from { background-color: rgba(0, 0, 0, 0.4); } to { background-color: rgba(0, 0, 0, 0); } }
|
||||
</style>
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user