Files
tk-page-Fan/src/views/hosts/mini/miniIntegral.vue
pengxiaolong ea50c14175 优化代码
2025-09-25 19:40:54 +08:00

316 lines
7.2 KiB
Vue

<template>
<div class="mini-integral">
<div class="content">
<!-- 积分配置列表 -->
<div class="integral-list">
<el-table
:data="tableData"
stripe
style="width: 100%; margin-top: 10px"
max-height="700"
>
<el-table-column prop="functionName" label="事件" />
<el-table-column prop="" label="" />
<el-table-column prop="functionValue" label="积分" />
<el-table-column prop="" label="" />
<el-table-column label="操作">
<template #default="scope">
<el-button size="small" @click="miniIntegralEdit(scope.$index, scope.row)">
修改
</el-button>
<el-button
size="small"
type="danger"
@click="miniIntegralDelete(scope.$index, scope.row)"
>
删除
</el-button>
</template>
</el-table-column>
</el-table>
</div>
<!-- 积分配置 -->
<div class="integral-title">
<div class="add" @click="dialogVisible = true">
<img class="add-img" src="@/assets/plus2.png" alt="">
</div>
<div class="integral-text">
<div class="h1"></div>
<div class="h1"></div>
<div class="h1"></div>
<div class="h1"></div>
<div class="h1"></div>
<div class="h1"></div>
<div class="h1"></div>
</div>
</div>
</div>
</div>
<!-- 新增修改积分配置弹窗 -->
<el-drawer v-model="dialogVisible" :with-header="false" @close="dialogVisible = false, miniIntegraldeta = {}">
<div class="dialog-content">
<div class="dialog-title">事件{{miniIntegraldeta.id? '编辑' : '新增'}}</div>
<el-input
v-if="!miniIntegraldeta.id"
v-model="miniIntegraldeta.functionName"
style="width: 100%; margin-top: 20px"
:rows="3"
type="textarea"
placeholder="请输入事件名称"
/>
<el-input
v-model="miniIntegraldeta.functionValue"
style="width: 100%;height: 50px; margin-top: 20px"
type="number"
placeholder="请输入积分值"
/>
<div class="dialog-btn">
<div class="dialogSave" @click="miniIntegralAddSave">保存</div>
<div class="dialogCancel" @click="dialogVisible = false">取消</div>
</div>
</div>
</el-drawer>
</template>
<script setup>
import { ElMessage, ElMessageBox } from "element-plus";
import {
getWxConfigList,
addWxConfig,
editWxConfig,
deleteWxConfig,
} from "@/api/account";
import {
ref, // 响应式基础
watch, // 侦听器
onMounted, // 组件挂载完成后执行
onUpdated, // 组件更新后执行
onUnmounted, // 组件销毁前执行
} from "vue";
const refname = ref("");
const tableData = ref([]);
const dialogVisible = ref(false);
const miniIntegraldeta = ref({});
//保存积分配置
function miniIntegralAddSave() {
if (!miniIntegraldeta.value.functionName) {
ElMessage({
type: "error",
message: "事件名称不能为空",
});
return;
}
if (!miniIntegraldeta.value.functionValue) {
ElMessage({
type: "error",
message: "积分值不能为空",
});
return;
}
if (miniIntegraldeta.value.id) {
// 修改积分配置
editWxConfig(miniIntegraldeta.value)
.then(() => {
ElMessage({
type: "success",
message: "修改成功",
});
dialogVisible.value = false;
miniIntegraldeta.value = {};
getIntegralList()
})
.catch(() => {
ElMessage({
type: "error",
message: "修改失败",
});
});
} else {
// 新增积分配置
addWxConfig(miniIntegraldeta.value)
.then(() => {
ElMessage({
type: "success",
message: "新增成功",
});
dialogVisible.value = false;
miniIntegraldeta.value = {};
getIntegralList()
})
.catch(() => {
ElMessage({
type: "error",
message: "新增失败",
});
});
}
}
// 新增积分配置弹窗
function miniIntegralEdit(index, row) {
dialogVisible.value = true;
miniIntegraldeta.value = row;
}
//删除积分配置
function miniIntegralDelete(index, row) {
ElMessageBox.confirm("您确认要删除这个积分配置吗?")
.then(() => {
deleteWxConfig({ id: row.id })
.then(() => {
ElMessage({
type: "success",
message: "删除成功",
});
getIntegralList()
})
.catch(() => {
ElMessage({
type: "error",
message: "删除失败",
});
});
})
.catch(() => {});
}
// 获取积分配置列表
function getIntegralList() {
getWxConfigList()
.then((res) => {
tableData.value = res;
})
.catch(() => {
ElMessage({
type: "error",
message: "获取积分配置列表失败",
});
});
}
watch(refname, async (newQuestion, oldQuestion) => {
// 变化后执行
});
onMounted(() => {
getIntegralList();
});
onUpdated(() => {
// 组件更新后执行
});
onUnmounted(() => {
// 组件销毁前执行
});
</script>
<style scoped>
.mini-integral {
width: 100%;
height: 100%;
background-color: #ffffff;
border-radius: 10px;
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
}
.content {
width: 80%;
height: 80%;
background-color: #f5f5f5;
border-radius: 10px;
display: flex;
justify-content: space-between;
align-items: center;
padding: 20px;
box-shadow: 2px 4px 8px rgba(0, 0, 0, 0.3);
padding: 40px;
}
.integral-list{
width: 87%;
height: 100%;
background-color: #ffffff;
border-radius: 10px;
}
.integral-title{
width: 10%;
height: 100%;
background-color: #ffffff;
border-radius: 10px;
}
.add{
width: 100%;
height: 50px;
display: flex;
justify-content: center;
align-items: center;
background-color: #c4c4c4;
border-radius: 10px 10px 0 0;
}
.add:hover{
background-color: #a9a9a9;
}
.add-img{
width: 40px;
height: 40px;
}
.integral-text{
width: 100%;
height: 520px;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
font-size: 20px;
color: #c4c4c4;
font-size: 25px;
font-family: "SimSun", "Microsoft YaHei", sans-serif;
}
.h1{
margin-top: 10px;
margin-bottom: 10px;
}
.dialog-title {
width: 100%;
height: 50px;
font-size: 25px;
color: #b4b4b4;
font-weight: bold;
margin-top: 20px;
margin-bottom: 20px;
text-align: center;
}
.dialog-btn {
margin-top: 20px;
display: flex;
justify-content: space-between;
}
.dialogSave {
width: 45%;
height: 50px;
background-color: #d6d6d6;
line-height: 50px;
text-align: center;
font-weight: bold;
border-radius: 5px;
font-size: 16px;
color: #ffffff;
}
.dialogSave:hover {
background-color: #b4b4b4;
}
.dialogCancel {
width: 45%;
height: 50px;
line-height: 50px;
text-align: center;
font-weight: bold;
border-radius: 5px;
font-size: 16px;
color: #d6d6d6;
border: 1px solid #d6d6d6;
}
.dialogCancel:hover {
background-color: #e7e6e6;
color: #ffffff;
}
/* 样式定义 */
</style>