修改分润页面

This commit is contained in:
Ygb 2025-09-24 17:03:16 +08:00
parent 487496c5bc
commit 816c67fe38
3 changed files with 735 additions and 66 deletions

View File

@ -10,8 +10,8 @@ const profitconfigApi = {
//删除
delProfitconfig: (ids) => {
const idStr = Array.isArray(ids) ? ids.join(',') : ids;
instance.delete(`/profitconfig/${idStr}`);
debugger;
instance.delete(`/profitconfig/${ids}`);
},
// 添加
addProfitconfig: (data) => instance.post('/profitconfig/add', data),

View File

@ -1,19 +1,18 @@
<template>
config<template>
<div class="p-2">
<div class="filter-set-container">
<div v-show="showSearch" class="mb-[10px]">
<el-card shadow="hover">
<el-form ref="queryFormRef" :model="queryParams" :inline="true">
<el-form-item label="快递类型" prop="type">
<el-form-item label="订单类型" >
<el-select v-model="queryParams.orderType" placeholder="请选择订单类型" clearable width="300px">
<el-option label="普通订单" value="NORMAL" />
<el-option label="团购订单" value="GROUP" />
<el-option label="秒杀订单" value="SECKILL" />
<el-select v-model="queryParams.orderType" placeholder="请选择订单类型" clearable style="width: 240px">
<el-option label="普通订单" value="NORMAL_ORDDER_TPYE" />
<el-option label="团购订单" value="GROUP_ORDDER_TPYE" />
<el-option label="秒杀订单" value="SECKILL_ORDDER_TPYE" />
</el-select>
</el-form-item>
</el-form-item>
<el-form-item>
@ -39,7 +38,7 @@
<el-button type="danger" plain icon="Delete" :disabled="multiple" @click="handleDelete(this)" >删除</el-button>
</el-col> -->
<!-- <right-toolbar v-model:showSearch="showSearch" @queryTable="getList"></right-toolbar> -->
<right-toolbar v-model:showSearch="showSearch" @queryTable="getList"></right-toolbar>
</el-row>
</template>
<!-- 数据表格 -->
@ -52,27 +51,59 @@
</el-tag>
</template>
</el-table-column>
<el-table-column prop="config" label="分润配置">
<el-table-column prop="config" label="分润配置" >
<template #default="{ row }">
<div v-for="(config, key) in row.config" :key="key" class="config-item">
<span class="config-label">{{ getRoleLabel(key) }}:</span>
<div v-if="row.config">
<!-- 显示 self 配置 -->
<div class="config-item" v-if="JSON.parse(row.config).self">
<span class="config-label">{{ getRoleLabel('self') }}:</span>
<el-tag size="small">
{{ config.type === 1 ? '百分比' : '固定金额' }}: {{ config.value }}{{ config.type === 1 ? '%' : '元' }}
{{ JSON.parse(row.config).self.type === 1 ? '百分比' : '固定金额' }}:
{{ JSON.parse(row.config).self.value }}{{ JSON.parse(row.config).self.type === 1 ? '%' : '元' }}
</el-tag>
</div>
<div v-if="row.config.upwardProfit" class="upward-info">
<el-tag type="info" size="small">向上分润: {{ row.config.upwardProfit.enabled ? '开启' : '关闭' }}</el-tag>
<el-tag v-if="row.config.upwardProfit.enabled" type="success" size="small">
一级: {{ row.config.upwardProfit.floor1 ? '显示' : '隐藏' }}
</el-tag>
<el-tag v-if="row.config.upwardProfit.enabled && row.config.upwardProfit.floor1" type="warning" size="small">
二级: {{ row.config.upwardProfit.floor2 ? '显示' : '隐藏' }}
</el-tag>
</div>
</template>
</el-table-column>
<el-table-column prop="" label="一级代理分润" >
<template #default="{ row }">
<div v-if="row.config">
<!-- 显示 floor1 配置 -->
<div class="config-item" v-if="JSON.parse(row.config).floor1">
<span class="config-label" style="width:600px !important">{{ getRoleLabel('floor1') }}:</span>
<el-tag size="small" >
{{ JSON.parse(row.config).floor1.type === 1 ? '百分比' : '固定金额' }}:
{{ JSON.parse(row.config).floor1.value }}{{ JSON.parse(row.config).floor1.type === 1 ? '%' : '元' }}
</el-tag>
</div>
</div>
</template>
</el-table-column>
<el-table-column prop="" label="分润配置开关" >
<template #default="{ row }">
<div v-if="row.config">
<!-- 向上分润配置 -->
<div v-if="JSON.parse(row.config).upwardProfit" class="upward-info">
<el-tag type="info" size="small">一级代理分润: {{ JSON.parse(row.config).upwardProfit.enabled ? '开启' : '关闭' }}</el-tag>
<el-tag v-if="JSON.parse(row.config).upwardProfit.enabled" type="success" size="small">
一级: {{ JSON.parse(row.config).upwardProfit.floor1 ? '显示' : '隐藏' }}
</el-tag>
<el-tag v-if="JSON.parse(row.config).upwardProfit.enabled && JSON.parse(row.config).upwardProfit.floor1" type="warning" size="small">
二级: {{ JSON.parse(row.config).upwardProfit.floor2 ? '显示' : '隐藏' }}
</el-tag>
</div>
</div>
</template>
</el-table-column>
<el-table-column prop="createTime" label="创建时间" width="180" />
<el-table-column label="操作" width="200" fixed="right">
<el-table-column label="操作" fixed="right" width="200">
<template #default="{ row }">
<el-button size="small" @click="handleEdit(row)">编辑</el-button>
<el-button size="small" type="danger" @click="handleDelete(row)">删除</el-button>
@ -104,9 +135,9 @@
<el-form :model="form" :rules="rules" ref="formRef" label-width="120px">
<el-form-item label="订单类型" prop="orderType">
<el-select v-model="form.orderType" placeholder="请选择订单类型">
<el-option label="普通订单" value="NORMAL" />
<el-option label="团购订单" value="GROUP" />
<el-option label="秒杀订单" value="SECKILL" />
<el-option label="普通订单" value="NORMAL_ORDDER_TPYE" />
<el-option label="团购订单" value="GROUP_ORDDER_TPYE" />
<el-option label="秒杀订单" value="SECKILL_ORDDER_TPYE" />
</el-select>
</el-form-item>
@ -198,10 +229,7 @@
</div>
</div>
</el-form-item>
</el-form>
<template #footer>
<el-button @click="dialogVisible = false">取消</el-button>
<el-button type="primary" @click="handleSubmit">确定</el-button>
@ -230,7 +258,7 @@ const formRef = ref()
const tableData = ref([])
const total = ref(0)
const isEdit = ref(false)
const showSearch = ref(true);
//
const queryParams = reactive({
pageNum: 1,
@ -245,11 +273,11 @@ const form = reactive({
config: {
self: { type: 1, value: 0 },
floor1: { type: 1, value: 0 },
floor2: { type: 1, value: 0 },
upwardProfit: {
enabled: false,
floor1: false,
floor2: false
}
},
remark: ''
@ -341,21 +369,27 @@ const rules = {
//
watch(() => form.config.upwardProfit, (newVal) => {
//
if (!newVal.enabled) {
console.log('upwardProfit变化:', newVal)
if (newVal && !newVal.enabled) {
//
form.config.upwardProfit.floor1 = false
form.config.upwardProfit.floor2 = false
//
form.config.floor1.value = 0
}
}, { deep: true })
//
const getOrderTypeTag = (type) => {
const map = { NORMAL: '', GROUP: 'success', SECKILL: 'danger' }
const map = { NORMAL_ORDDER_TPYE: '', GROUP_ORDDER_TPYE: 'success', SECKILL_ORDDER_TPYE: 'danger' }
return map[type] || ''
}
const getOrderTypeText = (type) => {
const map = { NORMAL: '普通订单', GROUP: '团购订单', SECKILL: '秒杀订单' }
const map = { 0: '普通订单', 1: '团购订单', 2: '秒杀订单' }
return map[type] || type
}
@ -380,11 +414,18 @@ const handleFloor1Change = (showFloor1) => {
}
const loadData = async () => {
debugger;
loading.value = true
try {
// API
const response = await axios.get('/api/profit-sharing/config/list', { params: queryParams })
tableData.value = response.data.rows
const response = await profitconfigApi.listProfitconfiglist(queryParams);
tableData.value =response.data.list
// 使
total.value = response.data.total
} catch (error) {
ElMessage.error('获取数据失败')
@ -393,6 +434,9 @@ const loadData = async () => {
}
}
const resetQuery = () => {
Object.assign(queryParams, {
pageNum: 1,
@ -409,27 +453,58 @@ const handleAdd = () => {
}
const handleEdit = (row) => {
debugger;
isEdit.value = true
//
const rowData = JSON.parse(JSON.stringify(row))
// upwardProfit
if (!rowData.config.upwardProfit) {
rowData.config.upwardProfit = {
//
resetForm()
//
let configData
try {
//
configData = typeof row.config === 'string' ? JSON.parse(row.config) : row.config
//
if (!configData.self) configData.self = { type: 1, value: 0 }
if (!configData.floor1) configData.floor1 = { type: 1, value: 0 }
if (!configData.upwardProfit) {
configData.upwardProfit = {
enabled: false,
floor1: false,
floor2: false
}
}
} catch (error) {
console.error('配置解析错误:', error)
// 使
configData = {
self: { type: 1, value: 0 },
floor1: { type: 1, value: 0 },
upwardProfit: {
enabled: false,
floor1: false,
}
}
}
//
Object.assign(form, {
id: row.id,
orderType: getOrderTypeText(row.orderType),
config: configData,
remark: row.remark || ''
})
Object.assign(form, rowData)
dialogVisible.value = true
}
const handleDelete = async (row) => {
try {
debugger;
await ElMessageBox.confirm('确定删除该分润配置吗?', '提示', { type: 'warning' })
await axios.delete(`/api/profit-sharing/config/${row.id}`)
await profitconfigApi.delProfitconfig(row.id)
ElMessage.success('删除成功')
loadData()
} catch (error) {
@ -449,11 +524,11 @@ const resetForm = () => {
config: {
self: { type: 1, value: 0 },
floor1: { type: 1, value: 0 },
floor2: { type: 1, value: 0 },
upwardProfit: {
enabled: false,
floor1: false,
floor2: false
}
},
remark: ''
@ -475,20 +550,14 @@ const handleSubmit = async () => {
//
if (!submitData.config.upwardProfit.enabled) {
submitData.config.floor1.value = 0
submitData.config.floor2.value = 0
// submitData.config.floor2.value = 0
}
//
else if (!submitData.config.upwardProfit.floor1) {
submitData.config.floor2.value = 0
}
//
if (!submitData.createTime) {
submitData.createTime = Date.now();
}
if (!submitData.updateTime) {
submitData.updateTime = Date.now();
}
// config configObj
if (submitData.configObj && !submitData.config) {
@ -514,9 +583,13 @@ const handleSubmit = async () => {
}
}
//
onMounted(() => {
// loadData()
loadData()
})
</script>

View File

@ -0,0 +1,596 @@
<template>
<div class="p-2">
<div class="filter-set-container">
<div v-show="showSearch" class="mb-[10px]">
<el-card shadow="hover">
<el-form ref="queryFormRef" :model="queryParams" :inline="true">
<el-form-item label="快递类型" prop="type">
<el-form-item label="订单类型" >
<el-select v-model="queryParams.orderType" placeholder="请选择订单类型" clearable width="300px">
<el-option label="普通订单" value="NORMAL_ORDDER_TPYE" />
<el-option label="团购订单" value="GROUP_ORDDER_TPYE" />
<el-option label="秒杀订单" value="SECKILL_ORDDER_TPYE" />
</el-select>
</el-form-item>
</el-form-item>
<el-form-item>
<el-button type="primary" @click="loadData">搜索</el-button>
<el-button @click="resetQuery">重置</el-button>
</el-form-item>
</el-form>
</el-card>
</div>
</div>
<el-card shadow="never">
<template #header >
<el-row :gutter="10" class="mb8">
<el-col :span="1.5">
<el-button type="primary" plain icon="Plus" @click="handleAdd" >新增</el-button>
</el-col>
<!-- <el-col :span="1.5">
<el-button type="success" plain icon="Edit" :disabled="single" @click="handleUpdate(this)" >修改</el-button>
</el-col>
<el-col :span="1.5">
<el-button type="danger" plain icon="Delete" :disabled="multiple" @click="handleDelete(this)" >删除</el-button>
</el-col> -->
<!-- <right-toolbar v-model:showSearch="showSearch" @queryTable="getList"></right-toolbar> -->
</el-row>
</template>
<!-- 数据表格 -->
<el-table :data="tableData" v-loading="loading">
<el-table-column prop="id" label="ID" width="80" />
<el-table-column prop="orderType" label="订单类型" width="120">
<template #default="{ row }">
<el-tag :type="getOrderTypeTag(row.orderType)">
{{ getOrderTypeText(row.orderType) }}
</el-tag>
</template>
</el-table-column>
<el-table-column prop="config" label="分润配置">
<template #default="{ row }">
<div v-for="(config, key) in row.config" :key="key" class="config-item">
<span class="config-label">{{ getRoleLabel(key) }}:</span>
<el-tag size="small">
{{ config.type === 1 ? '百分比' : '固定金额' }}: {{ config.value }}{{ config.type === 1 ? '%' : '元' }}
</el-tag>
</div>
<div v-if="row.config.upwardProfit" class="upward-info">
<el-tag type="info" size="small">向上分润: {{ row.config.upwardProfit.enabled ? '开启' : '关闭' }}</el-tag>
<el-tag v-if="row.config.upwardProfit.enabled" type="success" size="small">
一级: {{ row.config.upwardProfit.floor1 ? '显示' : '隐藏' }}
</el-tag>
<el-tag v-if="row.config.upwardProfit.enabled && row.config.upwardProfit.floor1" type="warning" size="small">
二级: {{ row.config.upwardProfit.floor2 ? '显示' : '隐藏' }}
</el-tag>
</div>
</template>
</el-table-column>
<el-table-column prop="createTime" label="创建时间" width="180" />
<el-table-column label="操作" width="200" fixed="right">
<template #default="{ row }">
<el-button size="small" @click="handleEdit(row)">编辑</el-button>
<el-button size="small" type="danger" @click="handleDelete(row)">删除</el-button>
</template>
</el-table-column>
</el-table>
<!-- 分页 -->
<div class="pagination-container">
<el-pagination
v-model:current-page="queryParams.pageNum"
v-model:page-size="queryParams.pageSize"
:total="total"
:page-sizes="[10, 20, 50]"
layout="total, sizes, prev, pager, next, jumper"
@size-change="loadData"
@current-change="loadData"
/>
</div>
</el-card>
<!-- 新增/编辑对话框 -->
<el-dialog
:title="dialogTitle"
v-model="dialogVisible"
width="700px"
@close="resetForm"
>
<el-form :model="form" :rules="rules" ref="formRef" label-width="120px">
<el-form-item label="订单类型" prop="orderType">
<el-select v-model="form.orderType" placeholder="请选择订单类型">
<el-option label="普通订单" value="NORMAL_ORDDER_TPYE" />
<el-option label="团购订单" value="GROUP_ORDDER_TPYE" />
<el-option label="秒杀订单" value="SECKILL_ORDDER_TPYE" />
</el-select>
</el-form-item>
<!-- 向上分润控制 -->
<el-form-item label="代理分润控制">
<div class="upward-control">
<el-switch
v-model="form.config.upwardProfit.enabled"
active-text="启用代理分润"
inactive-text="关闭代理分润"
@change="handleUpwardProfitChange"
/>
<div v-if="form.config.upwardProfit.enabled" class="upward-options">
<el-checkbox
v-model="form.config.upwardProfit.floor1"
label="一级代理分润"
@change="handleFloor1Change"
/>
<!-- <el-checkbox
v-model="form.config.upwardProfit.floor2"
label="显示二级分润"
:disabled="!form.config.upwardProfit.floor1"
/> -->
</div>
</div>
</el-form-item>
<el-form-item label="分润配置" prop="config">
<div class="config-form">
<!-- 平台自身分润始终显示 -->
<div class="config-row">
<span class="role-label">{{ roleOptions.self.label }}:</span>
<el-radio-group v-model="form.config.self.type">
<el-radio :label="1">百分比</el-radio>
<el-radio :label="2">固定金额</el-radio>
</el-radio-group>
<el-input-number
v-model="form.config.self.value"
:min="0"
:max="form.config.self.type === 1 ? 100 : 999999"
:precision="2"
controls-position="right"
/>
<span class="unit">{{ form.config.self.type === 1 ? '%' : '元' }}</span>
</div>
<!-- 一级分润根据控制显示 -->
<div v-if="form.config.upwardProfit.enabled && form.config.upwardProfit.floor1" class="config-row">
<span class="role-label">{{ roleOptions.floor1.label }}:</span>
<el-radio-group v-model="form.config.floor1.type">
<el-radio :label="1">百分比</el-radio>
<el-radio :label="2">固定金额</el-radio>
</el-radio-group>
<el-input-number
v-model="form.config.floor1.value"
:min="0"
:max="form.config.floor1.type === 1 ? 100 : 999999"
:precision="2"
controls-position="right"
/>
<span class="unit">{{ form.config.floor1.type === 1 ? '%' : '元' }}</span>
</div>
<!-- 二级分润根据控制显示 -->
<!-- <div v-if="form.config.upwardProfit.enabled && form.config.upwardProfit.floor1 && form.config.upwardProfit.floor2" class="config-row">
<span class="role-label">{{ roleOptions.floor2.label }}:</span>
<el-radio-group v-model="form.config.floor2.type">
<el-radio :label="1">百分比</el-radio>
<el-radio :label="2">固定金额</el-radio>
</el-radio-group>
<el-input-number
v-model="form.config.floor2.value"
:min="0"
:max="form.config.floor2.type === 1 ? 100 : 999999"
:precision="2"
controls-position="right"
/>
<span class="unit">{{ form.config.floor2.type === 1 ? '%' : '元' }}</span>
</div> -->
<!-- 分润比例提示 -->
<div v-if="showPercentWarning" class="percent-warning">
<el-alert
title="百分比总和超过100%,请调整分润比例"
type="warning"
:closable="false"
show-icon
/>
</div>
</div>
</el-form-item>
</el-form>
<template #footer>
<el-button @click="dialogVisible = false">取消</el-button>
<el-button type="primary" @click="handleSubmit">确定</el-button>
</template>
</el-dialog>
</div>
</template>
<script setup>
import { getCurrentInstance } from 'vue';
import { ref, reactive, onMounted, computed, watch } from 'vue'
import { ElMessage, ElMessageBox } from 'element-plus'
import { profitconfigApi } from '@/api/modules/profitconfig';
const { proxy } = getCurrentInstance();
//
const loading = ref(false)
const dialogVisible = ref(false)
const formRef = ref()
const tableData = ref([])
const total = ref(0)
const isEdit = ref(false)
//
const queryParams = reactive({
pageNum: 1,
pageSize: 10,
orderType: ''
})
//
const form = reactive({
id: null,
orderType: '',
config: {
self: { type: 1, value: 0 },
floor1: { type: 1, value: 0 },
floor2: { type: 1, value: 0 },
upwardProfit: {
enabled: false,
floor1: false,
floor2: false
}
},
remark: ''
})
//
const roleOptions = {
self: { label: '用户分润' },
floor1: { label: '一级代理分润' }
// floor2: { label: '' }
}
//
const dialogTitle = computed(() => isEdit.value ? '编辑分润配置' : '新增分润配置')
const showPercentWarning = computed(() => {
let totalPercent = 0
//
if (form.config.self.type === 1) {
totalPercent += form.config.self.value
}
//
if (form.config.upwardProfit.enabled && form.config.upwardProfit.floor1 && form.config.floor1.type === 1) {
totalPercent += form.config.floor1.value
}
// //
// if (form.config.upwardProfit.enabled && form.config.upwardProfit.floor1 && form.config.upwardProfit.floor2 && form.config.floor2.type === 1) {
// totalPercent += form.config.floor2.value
// }
return totalPercent > 100
})
//
const rules = {
orderType: [{ required: true, message: '请选择订单类型', trigger: 'change' }],
config: [
{
validator: (rule, value, callback) => {
const errors = []
//
let totalPercent = 0
let percentItems = []
if (value.self.type === 1) {
totalPercent += value.self.value
percentItems.push(`用户分润: ${value.self.value}%`)
}
if (value.upwardProfit.enabled && value.upwardProfit.floor1 && value.floor1.type === 1) {
totalPercent += value.floor1.value
percentItems.push(`一级代理分润: ${value.floor1.value}%`)
}
if (totalPercent > 100) {
errors.push(new Error(`百分比总和${totalPercent}%超过100%,请调整`))
}
//
if (value.upwardProfit.enabled && value.upwardProfit.floor1) {
if (value.floor1.value <= 0) {
errors.push(new Error('一级分润必须设置大于0的值'))
}
}
//
if (value.upwardProfit.enabled && value.upwardProfit.floor1 && value.upwardProfit.floor2) {
if (value.floor2.value <= 0) {
errors.push(new Error('二级分润必须设置大于0的值'))
}
}
if (errors.length > 0) {
callback(errors)
} else {
callback()
}
},
trigger: 'change'
}
]
}
//
watch(() => form.config.upwardProfit, (newVal) => {
//
if (!newVal.enabled) {
form.config.upwardProfit.floor1 = false
// form.config.upwardProfit.floor2 = false
}
}, { deep: true })
//
const getOrderTypeTag = (type) => {
const map = { NORMAL_ORDDER_TPYE: '', GROUP_ORDDER_TPYE: 'success', SECKILL_ORDDER_TPYE: 'danger' }
return map[type] || ''
}
const getOrderTypeText = (type) => {
const map = { NORMAL_ORDDER_TPYE: '普通订单', GROUP_ORDDER_TPYE: '团购订单', SECKILL_ORDDER_TPYE: '秒杀订单' }
return map[type] || type
}
const getRoleLabel = (key) => {
return roleOptions[key]?.label || key
}
const handleUpwardProfitChange = (enabled) => {
if (!enabled) {
//
form.config.floor1.value = 0
// form.config.floor2.value = 0
}
}
const handleFloor1Change = (showFloor1) => {
if (!showFloor1) {
//
form.config.upwardProfit.floor2 = false
// form.config.floor2.value = 0
}
}
const loadData = async () => {
loading.value = true
try {
// API
const response = await axios.get('/api/profit-sharing/config/list', { params: queryParams })
tableData.value = response.data.rows
total.value = response.data.total
} catch (error) {
ElMessage.error('获取数据失败')
} finally {
loading.value = false
}
}
const resetQuery = () => {
Object.assign(queryParams, {
pageNum: 1,
pageSize: 10,
orderType: ''
})
loadData()
}
const handleAdd = () => {
isEdit.value = false
resetForm()
dialogVisible.value = true
}
const handleEdit = (row) => {
isEdit.value = true
//
const rowData = JSON.parse(JSON.stringify(row))
// upwardProfit
if (!rowData.config.upwardProfit) {
rowData.config.upwardProfit = {
enabled: false,
floor1: false
// floor2: false
}
}
Object.assign(form, rowData)
dialogVisible.value = true
}
const handleDelete = async (row) => {
try {
await ElMessageBox.confirm('确定删除该分润配置吗?', '提示', { type: 'warning' })
await axios.delete(`/api/profit-sharing/config/${row.id}`)
ElMessage.success('删除成功')
loadData()
} catch (error) {
if (error !== 'cancel') {
ElMessage.error('删除失败')
}
}
}
const resetForm = () => {
if (formRef.value) {
formRef.value.resetFields()
}
Object.assign(form, {
id: null,
orderType: '',
config: {
self: { type: 1, value: 0 },
floor1: { type: 1, value: 0 },
floor2: { type: 1, value: 0 },
upwardProfit: {
enabled: false,
floor1: false,
floor2: false
}
},
remark: ''
})
}
const handleSubmit = async () => {
if (!formRef.value) return
try {
await formRef.value.validate()
//
const submitData = JSON.parse(JSON.stringify(form))
//
if (!submitData.config.upwardProfit.enabled) {
submitData.config.floor1.value = 0
}
// //
// else if (!submitData.config.upwardProfit.floor1) {
// submitData.config.floor2.value = 0
// }
//
if (!submitData.createTime) {
submitData.createTime = Date.now();
}
if (!submitData.updateTime) {
submitData.updateTime = Date.now();
}
// config configObj
if (submitData.configObj && !submitData.config) {
submitData.config = JSON.stringify(submitData.configObj);
}
const api = isEdit.value
? profitconfigApi.updateProfitconfig(submitData)
: profitconfigApi.addProfitconfig(submitData)
await api
ElMessage.success(isEdit.value ? '更新成功' : '新增成功')
dialogVisible.value = false
loadData()
} catch (error) {
if (error.errorFields) {
ElMessage.error('表单验证失败,请检查输入')
} else {
ElMessage.error('操作失败')
}
}
}
//
onMounted(() => {
// loadData()
})
</script>
<style scoped>
.card-header {
display: flex;
justify-content: space-between;
align-items: center;
}
.config-item {
margin-bottom: 4px;
}
.config-label {
display: inline-block;
width: 80px;
font-weight: bold;
}
.upward-info {
margin-top: 8px;
}
.upward-info .el-tag {
margin-right: 5px;
}
.config-form {
border: 1px solid #e4e7ed;
border-radius: 4px;
padding: 16px;
}
.config-row {
display: flex;
align-items: center;
margin-bottom: 16px;
padding: 8px;
background: #f8f9fa;
border-radius: 4px;
}
.role-label {
width: 100px;
font-weight: bold;
}
.unit {
margin-left: 8px;
width: 30px;
}
.pagination-container {
margin-top: 16px;
display: flex;
justify-content: flex-end;
}
.upward-control {
padding: 12px;
background: #f5f7fa;
border-radius: 4px;
}
.upward-options {
margin-top: 12px;
}
.upward-options .el-checkbox {
margin-right: 20px;
}
.percent-warning {
margin-top: 10px;
}
</style>