|
|
@ -24,14 +24,11 @@ |
|
|
|
<el-text class="mx-1" size="large">所属地区:</el-text> |
|
|
|
<el-cascader |
|
|
|
v-model="selectedMarketPath" |
|
|
|
:options="markets" |
|
|
|
:options="market" |
|
|
|
placeholder="请选择所属地区" |
|
|
|
clearable |
|
|
|
collapse-tags |
|
|
|
collapse-tags-tooltip |
|
|
|
style="width:180px" |
|
|
|
@change="handleMarketChange" |
|
|
|
:props="props" |
|
|
|
/> |
|
|
|
</el-col> |
|
|
|
</el-row> |
|
|
@ -93,11 +90,7 @@ |
|
|
|
</el-table-column> |
|
|
|
<el-table-column fixed="left" prop="name" label="姓名" width="150px"/> |
|
|
|
<el-table-column fixed="left" prop="jwcode" label="精网号" width="110px"/> |
|
|
|
<el-table-column prop="market" label="所属地区" width="100px"> |
|
|
|
<template #default="scope"> |
|
|
|
{{ scope.row.market || "----" }} |
|
|
|
</template> |
|
|
|
</el-table-column> |
|
|
|
<el-table-column prop="market" label="所属地区" width="100px"/> |
|
|
|
<el-table-column prop="activity" label="活动名称" width="100px" show-overflow-tooltip/> |
|
|
|
<el-table-column prop="money" label="充值金额" sortable="custom" width="110px"> |
|
|
|
<template #default="scope">{{ scope.row.permanentGold / 100 }}</template> |
|
|
@ -189,7 +182,6 @@ |
|
|
|
|
|
|
|
<script setup> |
|
|
|
import {onMounted, reactive, ref} from 'vue' |
|
|
|
import {reverseMarketMapping} from '@/utils/marketMap.js' |
|
|
|
import {ElMessage} from 'element-plus' |
|
|
|
import request from '@/util/http.js' |
|
|
|
import API from '@/util/http.js' |
|
|
@ -230,7 +222,7 @@ const rechargeAudit = ref({ |
|
|
|
payModel: "", // 支付方式 |
|
|
|
startTime: "", // 充值时间开始 |
|
|
|
endTime: "", // 充值时间结束 |
|
|
|
markets: [], // 地区 |
|
|
|
market: "", // 地区 |
|
|
|
auditStatus: "0", |
|
|
|
}) |
|
|
|
|
|
|
@ -245,7 +237,7 @@ const total = ref(50) |
|
|
|
const getTime = ref([]) |
|
|
|
const activity = ref([]) |
|
|
|
// 搜索地区列表 |
|
|
|
const markets = ref([]) |
|
|
|
const market = ref("") |
|
|
|
// 驳回弹出框 |
|
|
|
const rejectDialogVisible = ref(false) |
|
|
|
// 驳回理由 |
|
|
@ -385,7 +377,7 @@ const resetSearch = function () { |
|
|
|
payModel: "", |
|
|
|
startTime: "", |
|
|
|
endTime: "", |
|
|
|
markets: [], |
|
|
|
market: "", |
|
|
|
auditStatus: rechargeAudit.value.auditStatus, |
|
|
|
|
|
|
|
} |
|
|
@ -621,61 +613,14 @@ const previewImage = (imageUrl) => { |
|
|
|
}; |
|
|
|
|
|
|
|
// 存储地区选择变化 |
|
|
|
const selectedMarketPath = ref([]) |
|
|
|
//处理地区选择变化 |
|
|
|
const selectedMarketPath = ref("") |
|
|
|
const handleMarketChange = (value) => { |
|
|
|
if (Array.isArray(value) && value.length > 0) { |
|
|
|
const ids = new Set(); |
|
|
|
|
|
|
|
value.forEach(path => { |
|
|
|
const lastName = path[path.length - 1]; |
|
|
|
const id = reverseMarketMapping[lastName]; |
|
|
|
if (id) ids.add(Number(id)); |
|
|
|
}); |
|
|
|
|
|
|
|
// 添加额外处理:如果一个父节点下所有子节点都被选中,则把父节点也加入 |
|
|
|
const getAllLeafNames = (nodes) => { |
|
|
|
const leafNames = []; |
|
|
|
|
|
|
|
const traverse = (node, parentName = null) => { |
|
|
|
if (!node.children || node.children.length === 0) { |
|
|
|
leafNames.push({name: node.label, parent: parentName}); |
|
|
|
if (value && value.length > 0) { |
|
|
|
rechargeAudit.value.market = value[value.length - 1] |
|
|
|
} else { |
|
|
|
node.children.forEach(child => traverse(child, node.label)); |
|
|
|
rechargeAudit.value.market = '' |
|
|
|
} |
|
|
|
}; |
|
|
|
|
|
|
|
nodes.forEach(node => traverse(node)); |
|
|
|
return leafNames; |
|
|
|
}; |
|
|
|
|
|
|
|
const leafNameMap = getAllLeafNames(markets.value); // 所有叶子节点和对应父级名称 |
|
|
|
|
|
|
|
// 列表构建 |
|
|
|
const parentToChildren = {}; |
|
|
|
leafNameMap.forEach(({name, parent}) => { |
|
|
|
if (!parentToChildren[parent]) parentToChildren[parent] = []; |
|
|
|
parentToChildren[parent].push(name); |
|
|
|
}); |
|
|
|
|
|
|
|
// 构建当前被选中的叶子节点 |
|
|
|
const selectedLeafNames = value.map(path => path[path.length - 1]); |
|
|
|
|
|
|
|
// 如果 parent 下所有子节点都选中了,就把 parent 加进来 |
|
|
|
Object.entries(parentToChildren).forEach(([parent, children]) => { |
|
|
|
const allChildrenSelected = children.every(child => selectedLeafNames.includes(child)); |
|
|
|
if (allChildrenSelected && reverseMarketMapping[parent]) { |
|
|
|
ids.add(Number(reverseMarketMapping[parent])); |
|
|
|
} |
|
|
|
}); |
|
|
|
|
|
|
|
rechargeAudit.value.markets = Array.from(ids); |
|
|
|
} else { |
|
|
|
rechargeAudit.value.markets = []; |
|
|
|
} |
|
|
|
|
|
|
|
console.log('最终映射后的 market IDs:', rechargeAudit.value.markets); |
|
|
|
}; |
|
|
|
} |
|
|
|
|
|
|
|
const props = {multiple: true} |
|
|
|
// 获取地区,修改为级联下拉框 |
|
|
@ -707,8 +652,8 @@ const getMarket = async function () { |
|
|
|
}); |
|
|
|
}; |
|
|
|
// 存储地区信息 |
|
|
|
markets.value = transformTree(result.data) |
|
|
|
console.log('转换后的地区树==============', markets.value) |
|
|
|
market.value = transformTree(result.data) |
|
|
|
console.log('转换后的地区树==============', market.value) |
|
|
|
} catch (error) { |
|
|
|
console.log('请求失败', error) |
|
|
|
} |
|
|
|