From c92b723d893bddd1cf9093e660806b226dc00921 Mon Sep 17 00:00:00 2001 From: seatonwan9 Date: 星期五, 15 八月 2025 19:01:56 +0800 Subject: [PATCH] 提交源码 --- src/views/pointsManage/ruleList/index.vue | 252 +++++++++++++++++++++++++------------------------ 1 files changed, 128 insertions(+), 124 deletions(-) diff --git a/src/views/pointsManage/ruleList/index.vue b/src/views/pointsManage/ruleList/index.vue index 4dc8d79..6fab5c7 100644 --- a/src/views/pointsManage/ruleList/index.vue +++ b/src/views/pointsManage/ruleList/index.vue @@ -1,81 +1,100 @@ <template> <div class="points-rule-list"> - <!-- 椤甸潰鏍囬 --> - <div class="page-title">绉垎瑙勫垯绠$悊</div> + <!-- 鍒楄〃椤甸潰 --> + <div v-if="currentView === 'list'"> + <!-- 椤甸潰鏍囬 --> + <div class="page-title">绉垎瑙勫垯绠$悊</div> - <!-- 瑙勫垯鍒楄〃鍗$墖 --> - <el-card shadow="never" class="rule-list-card"> - <!-- 绛涢�夋潯浠� --> - <div class="filter-section"> - <div class="filter-row"> - <div class="filter-item"> - <span class="filter-label">鐢熸晥鏃堕棿:</span> - <el-date-picker - v-model="queryParams.dateRange" - type="datetimerange" - range-separator="鑷�" - start-placeholder="寮�濮嬫棩鏈�" - end-placeholder="缁撴潫鏃ユ湡" - format="YYYY-MM-DD HH:mm:ss" - value-format="YYYY-MM-DD HH:mm:ss" + <!-- 瑙勫垯鍒楄〃鍗$墖 --> + <el-card shadow="never" class="rule-list-card"> + <!-- 绛涢�夋潯浠� --> + <div class="filter-section"> + <div class="filter-row"> + <div class="filter-item"> + <span class="filter-label">鐢熸晥鏃堕棿:</span> + <el-date-picker + v-model="queryParams.dateRange" + type="datetimerange" + range-separator="鑷�" + start-placeholder="寮�濮嬫棩鏈�" + end-placeholder="缁撴潫鏃ユ湡" + format="YYYY-MM-DD HH:mm:ss" date-format="YYYY-MM-DD" time-format="HH:mm:ss" - style="margin-left: 8px;" - @change="handleDateChange" - /> - </div> - - </div> - <div class="filter-actions"> - <el-button type="primary" @click="queryData"> - <el-icon><Search /></el-icon> - 鏌ヨ - </el-button> - <el-button @click="resetQuery"> - <el-icon><Refresh /></el-icon> - 閲嶇疆 - </el-button> - </div> - </div> + style="margin-left: 8px;" + @change="handleDateChange" + /> + </div> - <!-- 瑙勫垯琛ㄦ牸 --> - <div class="table-section"> - <el-table :data="ruleList" stripe style="width: 100%"> - <el-table-column prop="id" label="搴忓彿" width="80" align="center" /> - <el-table-column prop="pointsName" label="鍚嶇О" align="ceter"> - <template #default="{ row }"> - {{ row.pointsName}}{{ row.updatedAt}}V{{ row.version }} - </template> - </el-table-column> - - <el-table-column prop="effectiveStart" label="寮�濮嬬敓鏁堟椂闂�" align="center" /> - <el-table-column prop="modifierName" label="淇敼浜�" align="center" /> - - <el-table-column label="鎿嶄綔" align="center" fixed="right"> - <template #default="{ row }"> - <el-button type="primary" size="small" @click="editRule(row)">鏌ョ湅</el-button> - <el-button type="primary" size="small" @click="editRule(row)">缂栬緫</el-button> - </template> - </el-table-column> - </el-table> - - <!-- 鍒嗛〉 --> - <div class="pagination-section"> - <div class="pagination-info"> - 鍏眥{ total }}鏉� </div> - <el-pagination - v-model:current-page="queryParams.pageNum" - v-model:page-size="queryParams.pageSize" - :page-sizes="[10, 20, 50, 100]" - :total="total" - layout="sizes, prev, pager, next, jumper" - @size-change="handleSizeChange" - @current-change="handleCurrentChange" - /> + <div class="filter-actions"> + <el-button type="primary" @click="queryData"> + <el-icon><Search /></el-icon> + 鏌ヨ + </el-button> + <el-button @click="resetQuery"> + <el-icon><Refresh /></el-icon> + 閲嶇疆 + </el-button> + </div> </div> - </div> - </el-card> + + <!-- 瑙勫垯琛ㄦ牸 --> + <div class="table-section"> + <el-table :data="ruleList" stripe style="width: 100%"> + <el-table-column type="index" label="搴忓彿" width="80" align="center" /> + <el-table-column prop="pointsName" label="鍚嶇О" align="ceter"> + <template #default="{ row }"> + {{ row.pointsName}}{{ dayjs(row.updatedAt).format('YYYYMMDD')}}V{{ row.version }} + </template> + </el-table-column> + + <el-table-column prop="effectiveStart" label="寮�濮嬬敓鏁堟椂闂�" align="center" /> + <el-table-column prop="modifierName" label="淇敼浜�" align="center" /> + + <el-table-column label="鎿嶄綔" align="center" fixed="right"> + <template #default="{ row }"> + <el-button type="primary" size="small" @click="viewRule(row)">鏌ョ湅</el-button> + <el-button type="primary" size="small" @click="editRule(row)">缂栬緫</el-button> + </template> + </el-table-column> + </el-table> + + <!-- 鍒嗛〉 --> + <div class="pagination-section"> + <div class="pagination-info"> + 鍏眥{ total }}鏉� + </div> + <el-pagination + v-model:current-page="queryParams.pageNum" + v-model:page-size="queryParams.pageSize" + :page-sizes="[10, 20, 50, 100]" + :total="total" + layout="sizes, prev, pager, next, jumper" + @size-change="handleSizeChange" + @current-change="handleCurrentChange" + /> + </div> + </div> + </el-card> + </div> + + <!-- 缂栬緫椤甸潰 --> + <div v-if="currentView === 'edit'" class="edit-container"> + <SettingsComponent + :ruleId="currentRuleId" + @goBack="goBackToList" + @saveSuccess="handleSaveSuccess" + /> + </div> + + <!-- 鏌ョ湅璇︽儏椤甸潰 --> + <div v-if="currentView === 'view'" class="view-container"> + <RuleDetailComponent + :ruleId="currentRuleId" + @goBack="goBackToList" + /> + </div> </div> </template> @@ -85,14 +104,14 @@ import { Search, Refresh } from '@element-plus/icons-vue' import pointsApi from '@/api/pointsApi' import type { PointsRule, PointsQueryParams } from '@/types/points' -// 瀵煎叆璺敱閽╁瓙 -import { useRouter } from 'vue-router' +import SettingsComponent from '../settings/index.vue' +import RuleDetailComponent from '../ruleDetail/index.vue' + +// 褰撳墠瑙嗗浘鐘舵�侊細'list' | 'edit' | 'view' +const currentView = ref<'list' | 'edit' | 'view'>('list') // 鏌ヨ鍙傛暟 const queryParams = reactive<PointsQueryParams>({ - // ruleType: '', - // category: '', - // status: '', dateRange: '', pageNum: 1, pageSize: 10, @@ -103,6 +122,9 @@ // 鎬绘暟 const total = ref(0) + +// 褰撳墠閫変腑鐨勮鍒橧D +const currentRuleId = ref<string>('') // 椤甸潰鍔犺浇鏃惰幏鍙栨暟鎹� onMounted(() => { @@ -144,65 +166,41 @@ queryData() } -// 鑾峰彇瑙勫垯绫诲瀷鏍囩 -const getRuleTypeLabel = (type: string) => { - const typeMap: Record<string, string> = { - acquisition: '鑾峰彇', - consumption: '娑堣��', - conversion: '杞崲', - } - return typeMap[type] || type -} - -// 鑾峰彇鍒嗙被鏍囩 -const getCategoryLabel = (category: string) => { - const categoryMap: Record<string, string> = { - resource_contribution: '璧勬簮璐$尞', - resource_transaction: '璧勬簮浜ゆ槗', - resource_dissemination: '璧勬簮浼犳挱', - user_participation: '鐢ㄦ埛鍙備笌', - other: '鍏朵粬', - } - return categoryMap[category] || category -} - -// 澶勭悊鐘舵�佸彉鍖� -const handleStatusChange = async (row: PointsRule) => { - try { - await pointsApi.savePointsRules({ - id: row.id, - status: row.status - }) - ElMessage.success('鐘舵�佹洿鏂版垚鍔�') - } catch (error) { - ElMessage.error('鐘舵�佹洿鏂板け璐�') - // 鎭㈠鍘熸潵鐨勭姸鎬� - row.status = row.status === 1 ? 0 : 1 - console.error('鏇存柊瑙勫垯鐘舵�佸け璐�:', error) - } -} - // 澶勭悊鏃ユ湡鍙樺寲 const handleDateChange = (dates: [string, string] | null) => { if (dates) { - queryParams.effectiveStartTime = dates[0] - queryParams.effectiveEndTime = dates[1] + queryParams.effectiveStartTime = dayjs(dates[0]).format('YYYY-MM-DD HH:mm:ss'); + queryParams.effectiveEndTime = dayjs(dates[1]).format('YYYY-MM-DD HH:mm:ss'); } else { queryParams.effectiveStartTime = '' queryParams.effectiveEndTime = '' } } -// 鍒涘缓璺敱瀹炰緥 -const router = useRouter() - // 缂栬緫瑙勫垯 const editRule = (row: PointsRule) => { - // 璺宠浆鍒拌鍒欒缃晫闈紝骞朵紶鍏ヨ鍒檌d - router.push({ - path: '/points/settings', - query: { ruleId: row.id } - }) + currentRuleId.value = row.id?.toString() || '' + currentView.value = 'edit' +} + +// 鏌ョ湅瑙勫垯 +const viewRule = (row: PointsRule) => { + currentRuleId.value = row.id?.toString() || '' + currentView.value = 'view' +} + +// 杩斿洖鍒楄〃椤甸潰 +const goBackToList = () => { + currentView.value = 'list' + currentRuleId.value = '' +} + +// 澶勭悊淇濆瓨鎴愬姛 +const handleSaveSuccess = () => { + ElMessage.success('淇濆瓨鎴愬姛') + goBackToList() + // 閲嶆柊鍔犺浇鍒楄〃鏁版嵁 + queryData() } </script> @@ -265,5 +263,11 @@ } } } + + .edit-container, + .view-container { + // 纭繚缁勪欢鑳藉姝g‘鏄剧ず + width: 100%; + } } -</style> \ No newline at end of file +</style> -- Gitblit v1.8.0