Browse Source

feat:级联 改了剩下的几个 ,还没改权限的

zhangrenyuan/feature-20250728113353-金币前端三期
lihui 2 weeks ago
parent
commit
5e7ae67155
  1. 104
      src/views/audit/rechargeAudit.vue
  2. 148
      src/views/audit/refundAudit.vue
  3. 158
      src/views/consume/coinConsumeDetail.vue
  4. 2
      src/views/recharge/coinRechargeDetail.vue
  5. 153
      src/views/refund/coinRefundDetail.vue
  6. 149
      src/views/usergold/clientCountBalance.vue
  7. 174
      src/views/usergold/clientCountDetail.vue

104
src/views/audit/rechargeAudit.vue

@ -24,11 +24,14 @@
<el-text class="mx-1" size="large">所属地区</el-text>
<el-cascader
v-model="selectedMarketPath"
:options="market"
:options="markets"
placeholder="请选择所属地区"
clearable
collapse-tags
collapse-tags-tooltip
style="width:180px"
@change="handleMarketChange"
:props="props"
/>
</el-col>
</el-row>
@ -218,7 +221,7 @@ const rechargeAudit = ref({
payModel: "", //
startTime: "", //
endTime: "", //
market: "", //
markets: [], //
auditStatus: "0",
})
@ -233,7 +236,7 @@ const total = ref(50)
const getTime = ref([])
const activity = ref([])
//
const market = ref([])
const markets = ref([])
//
const rejectDialogVisible = ref(false)
//
@ -373,7 +376,7 @@ const resetSearch = function () {
payModel: "",
startTime: "",
endTime: "",
market: "",
markets: [],
auditStatus: rechargeAudit.value.auditStatus,
}
@ -623,56 +626,91 @@ const previewImage = (imageUrl) => {
const selectedMarketPath = ref([])
//
const handleMarketChange = (value) => {
if (value && value.length > 0) {
const lastValue = value[value.length - 1];
let selectedName = lastValue.endsWith('_all')
? lastValue.replace('_all', '')
: lastValue;
//
rechargeAudit.value.market = reverseMarketMapping[selectedName] || '';
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});
} else {
node.children.forEach(child => traverse(child, node.label));
}
};
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.market = '';
rechargeAudit.value.markets = [];
}
console.log('最终映射后的 market IDs:', rechargeAudit.value.markets);
};
const props = {multiple: true}
//
const getMarket = async function () {
console.log('获取地区adminid', adminData.value)
try {
// POST
const result = await API({
url: '/market/selectMarket',
data: {account: adminData.value.account}
});
//
console.log('请求成功', result)
//
//
const transformTree = (nodes) => {
return nodes.map(node => {
const children = node.children && node.children.length
? transformTree(node.children)
//
const allChildren = nodes.flatMap(node => node.children || []);
return allChildren.map(child => {
const grandchildren = child.children && child.children.length
? transformTree([child]) //
: null;
//
if (children) {
children.unshift({
value: `${node.name}_all`, //
label: '全部',
children: null
});
}
return {
value: node.name, //使
label: node.name, //
children
value: child.name,
label: child.name,
children: grandchildren
};
});
}
};
//
market.value = transformTree(result.data)
console.log('转换后的地区树', market.value)
markets.value = transformTree(result.data)
console.log('转换后的地区树==============', markets.value)
} catch (error) {
console.log('请求失败', error)
}

148
src/views/audit/refundAudit.vue

@ -25,11 +25,14 @@
<el-text class="mx-1" size="large">所属地区</el-text>
<el-cascader
v-model="selectedMarketPath"
:options="market"
:options="markets"
placeholder="请选择所属地区"
clearable
collapse-tags
collapse-tags-tooltip
style="width:180px"
@change="handleMarketChange"
:props="props"
/>
</el-col>
</el-row>
@ -195,7 +198,7 @@ const searchForm = ref({
jwcode: '',
refundModel: '',
goodsName: '',
market: '',
markets: [],
startTime: '',
endTime: '',
auditStatus: '0'
@ -286,48 +289,8 @@ const showRejectDialog = (row) => {
rejectDialogVisible.value = true
}
//
const market = ref([])
//
const getMarket = async function () {
console.log('获取地区adminid', adminInfo.value)
try {
// POST
const result = await API({
const markets = ref([])
url: '/market/selectMarket',
data: {account: adminInfo.value.account}
});
//
console.log('请求成功', result)
//
const transformTree = (nodes) => {
return nodes.map(node => {
const children = node.children && node.children.length
? transformTree(node.children)
: null;
//
if (children) {
children.unshift({
value: `${node.name}_all`, //
label: '全部',
children: null
});
}
return {
value: node.name, //使
label: node.name, //
children
};
});
}
//
market.value = transformTree(result.data)
console.log('转换后的地区树', market.value)
} catch (error) {
console.log('请求失败', error)
}
}
//
const getRefundGoods = async () => {
try {
@ -453,7 +416,7 @@ const resetSearch = function () {
jwcode: '',
refundType: '',
goodsName: '',
market: '',
markets: [],
startTime: '',
endTime: '',
sortField: '',
@ -463,6 +426,8 @@ const resetSearch = function () {
dateRange.value = []
activeTimeRange.value = '' //
selectedMarketPath.value = []
get()
getStats()
}
//
@ -569,19 +534,96 @@ const adminReject = async function () {
const selectedMarketPath = ref([])
//
const handleMarketChange = (value) => {
if (value && value.length > 0) {
const lastValue = value[value.length - 1];
let selectedName = lastValue.endsWith('_all')
? lastValue.replace('_all', '')
: lastValue;
//
searchForm.value.market = reverseMarketMapping[selectedName] || '';
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});
} else {
node.children.forEach(child => traverse(child, node.label));
}
};
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]));
}
});
searchForm.value.markets = Array.from(ids);
} else {
searchForm.value.market = '';
searchForm.value.markets = [];
}
console.log('最终映射后的 market IDs:', searchForm.value.markets);
};
const props = {multiple: true}
//
const getMarket = async function () {
try {
// POST
const result = await API({
url: '/market/selectMarket',
});
//
console.log('请求成功', result)
//
const transformTree = (nodes) => {
//
const allChildren = nodes.flatMap(node => node.children || []);
return allChildren.map(child => {
const grandchildren = child.children && child.children.length
? transformTree([child]) //
: null;
return {
value: child.name,
label: child.name,
children: grandchildren
};
});
};
//
markets.value = transformTree(result.data)
console.log('转换后的地区树==============', markets.value)
} catch (error) {
console.log('请求失败', error)
}
}
onMounted(async () => {
await getAdminData()

158
src/views/consume/coinConsumeDetail.vue

@ -26,7 +26,7 @@ const tableData = ref([])
const consumeUser = ref({
jwcode: null,
payPlatform: "",
market: "",
markets: [],
startTime: '',
endTime: '',
@ -60,7 +60,7 @@ const getTime = ref({
const activity = ref([])
//
const market = ref([])
const markets = ref([])
//
const sortField = ref('')
@ -112,7 +112,7 @@ const goods = ref([])
const totalGoldSearch = ref({
jwcode: null,
payPlatform: "",
market: "",
markets: [],
startTime: "",
endTime: "",
goodsName: ""
@ -191,7 +191,7 @@ const ConsumeSelectBy = async function (val) {
totalGoldSearch.value.startTime = consumeUser.value.startTime
totalGoldSearch.value.endTime = consumeUser.value.endTime
totalGoldSearch.value.payPlatform = consumeUser.value.payPlatform
totalGoldSearch.value.market = consumeUser.value.market
totalGoldSearch.value.markets = consumeUser.value.markets
totalGoldSearch.value.goodsName = consumeUser.value.goodsName
totalGoldSearch.value.jwcode = consumeUser.value.jwcode
//
@ -264,7 +264,7 @@ const reset = function () {
consumeUser.value.goodsName = ''
consumeUser.value.market = ''
consumeUser.value.markets = []
consumeUser.value.payPlatform = ''
@ -362,51 +362,6 @@ const getGoods = async function () {
}
}
//
//
const getMarket = async function () {
console.log('获取地区adminid', adminData.value)
try {
// POST
const result = await API({
url: '/market/selectMarket',
data: {account: adminData.value.account}
});
//
console.log('请求成功', result)
//
const transformTree = (nodes) => {
return nodes.map(node => {
const children = node.children && node.children.length
? transformTree(node.children)
: null;
//
if (children) {
children.unshift({
value: `${node.name}_all`, //
label: '全部',
children: null
});
}
return {
value: node.name, //使
label: node.name, //
children
};
});
}
//
market.value = transformTree(result.data)
console.log('转换后的地区树', market.value)
} catch (error) {
console.log('请求失败', error)
}
}
//
const handleSortChange = (column) => {
console.log('排序字段:', column.prop)
@ -463,7 +418,7 @@ const exportExcel = async function () {
consumeUser: {
jwcode: consumeUser.value.jwcode || '',
payPlatform: consumeUser.value.payPlatform || '',
market: consumeUser.value.market || '',
markets: consumeUser.value.markets || [],
startTime: consumeUser.value.startTime || '',
endTime: consumeUser.value.endTime || '',
goodsName: consumeUser.value.goodsName || '',
@ -549,24 +504,100 @@ const getTagText = (state) => {
return '未知状态';
}
}
//
const selectedMarketPath = ref([])
//
const handleMarketChange = (value) => {
if (value && value.length > 0) {
const lastValue = value[value.length - 1];
let selectedName = lastValue.endsWith('_all')
? lastValue.replace('_all', '')
: lastValue;
//
consumeUser.value.market = reverseMarketMapping[selectedName] || '';
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});
} else {
consumeUser.value.market = '';
node.children.forEach(child => traverse(child, node.label));
}
};
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]));
}
});
consumeUser.value.markets = Array.from(ids);
} else {
consumeUser.value.markets = [];
}
console.log('最终映射后的 market IDs:', consumeUser.value.markets);
};
const props = {multiple: true}
//
const getMarket = async function () {
try {
// POST
const result = await API({
url: '/market/selectMarket',
});
//
console.log('请求成功', result)
//
const transformTree = (nodes) => {
//
const allChildren = nodes.flatMap(node => node.children || []);
return allChildren.map(child => {
const grandchildren = child.children && child.children.length
? transformTree([child]) //
: null;
return {
value: child.name,
label: child.name,
children: grandchildren
};
});
};
//
markets.value = transformTree(result.data)
console.log('转换后的地区树==============', markets.value)
} catch (error) {
console.log('请求失败', error)
}
}
</script>
<template>
@ -594,11 +625,14 @@ const handleMarketChange = (value) => {
<el-text class="mx-1" size="large">所属地区</el-text>
<el-cascader
v-model="selectedMarketPath"
:options="market"
:options="markets"
placeholder="请选择所属地区"
clearable
collapse-tags
collapse-tags-tooltip
style="width:180px"
@change="handleMarketChange"
:props="props"
/>
</el-col>
<el-col :span="6">

2
src/views/recharge/coinRechargeDetail.vue

@ -179,13 +179,11 @@ const getActivity = async function () {
const marketsTree = ref("")
//
const getArea = async function () {
console.log('获取地区adminid', adminData.value)
try {
// POST
const result = await API({
url: '/market/selectMarket',
data: {account: adminData.value.account}
});
//
console.log('请求成功', result)

153
src/views/refund/coinRefundDetail.vue

@ -47,7 +47,9 @@ const getAdminData = async function () {
const tableData = ref([])
// ======================================
// detail
const refundUser = ref({})
const refundUser = ref({
markets:[]
})
//
const getObj = ref({
pageNum: 1,
@ -59,7 +61,7 @@ const total = ref(100)
const getTime = ref([])
//
const market = ref([])
const markets = ref([])
//
const permanentGolds = ref(0)
@ -183,7 +185,7 @@ const search = function () {
}
//
const reset = function () {
refundUser.value = {}
refundUser.value = {markets: []}
sortField.value = ''
sortOrder.value = ''
getTime.value = {}
@ -265,49 +267,6 @@ const handleClick = function (tab, event) {
}
}
//
const getMarket = async function () {
console.log('获取地区adminid', adminData.value)
try {
// POST
const result = await API({
url: '/market/selectMarket',
data: {account: adminData.value.account}
});
//
console.log('请求成功', result)
//
const transformTree = (nodes) => {
return nodes.map(node => {
const children = node.children && node.children.length
? transformTree(node.children)
: null;
//
if (children) {
children.unshift({
value: `${node.name}_all`, //
label: '全部',
children: null
});
}
return {
value: node.name, //使
label: node.name, //
children
};
});
}
//
market.value = transformTree(result.data)
console.log('转换后的地区树', market.value)
} catch (error) {
console.log('请求失败', error)
}
}
//
const delObj = ref({})
const del = function (row) {
delObj.value.detailId = row.detailId
@ -403,7 +362,7 @@ const exportExcel = async function () {
refundUser: {
jwcode: refundUser.value.jwcode || '',
refundModel: refundUser.value.refundModel || '',
market: refundUser.value.market || '',
markets: refundUser.value.markets || [],
startTime: refundUser.value.startTime || '',
endTime: refundUser.value.endTime || '',
goodsName: refundUser.value.goodsName || '',
@ -504,18 +463,95 @@ const getTagText = (state) => {
const selectedMarketPath = ref([])
//
const handleMarketChange = (value) => {
if (value && value.length > 0) {
const lastValue = value[value.length - 1];
let selectedName = lastValue.endsWith('_all')
? lastValue.replace('_all', '')
: lastValue;
//
refundUser.value.market = reverseMarketMapping[selectedName] || '';
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});
} else {
refundUser.value.market = '';
node.children.forEach(child => traverse(child, node.label));
}
};
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]));
}
});
refundUser.value.markets = Array.from(ids);
} else {
refundUser.value.markets = [];
}
console.log('最终映射后的 markets IDs:', refundUser.value.markets);
};
const props = {multiple: true}
//
const getMarket = async function () {
try {
// POST
const result = await API({
url: '/market/selectMarket',
});
//
console.log('请求成功', result)
//
const transformTree = (nodes) => {
//
const allChildren = nodes.flatMap(node => node.children || []);
return allChildren.map(child => {
const grandchildren = child.children && child.children.length
? transformTree([child]) //
: null;
return {
value: child.name,
label: child.name,
children: grandchildren
};
});
};
//
markets.value = transformTree(result.data)
console.log('转换后的地区树==============', markets.value)
} catch (error) {
console.log('请求失败', error)
}
}
</script>
<template>
@ -559,11 +595,14 @@ const handleMarketChange = (value) => {
<el-text class="mx-1" size="large">所属地区</el-text>
<el-cascader
v-model="selectedMarketPath"
:options="market"
:options="markets"
placeholder="请选择所属地区"
clearable
collapse-tags
collapse-tags-tooltip
style="width:180px"
@change="handleMarketChange"
:props="props"
/>
</el-col>
<el-col :span="6">

149
src/views/usergold/clientCountBalance.vue

@ -26,48 +26,8 @@ const getAdminData = async function () {
//
const isLoadingmarket = ref(false);
const market = ref([])
//
const getMarket = async function () {
console.log('获取地区adminid', adminData.value)
try {
// POST
const result = await API({
const markets = ref([])
url: '/market/selectMarket',
data: {account: adminData.value.account}
});
//
console.log('请求成功', result)
//
const transformTree = (nodes) => {
return nodes.map(node => {
const children = node.children && node.children.length
? transformTree(node.children)
: null;
//
if (children) {
children.unshift({
value: `${node.name}_all`, //
label: '全部',
children: null
});
}
return {
value: node.name, //使
label: node.name, //
children
};
});
}
//
market.value = transformTree(result.data)
console.log('转换后的地区树', market.value)
} catch (error) {
console.log('请求失败', error)
}
}
//
const tableData = ref([])
@ -94,7 +54,9 @@ const total = ref(100)
//
const getTime = ref([])
// User
const user = ref({})
const user = ref({
markets: [],
})
//
const getAllObj = ref({})
//
@ -205,7 +167,7 @@ const search = function () {
}
//
const reset = function () {
user.value = {}
user.value = {markets: []}
sortField.value = ''
sortOrder.value = ''
get()
@ -341,18 +303,96 @@ const getTagText = (state) => {
const selectedMarketPath = ref([])
//
const handleMarketChange = (value) => {
if (value && value.length > 0) {
const lastValue = value[value.length - 1];
let selectedName = lastValue.endsWith('_all')
? lastValue.replace('_all', '')
: lastValue;
//
rechargeUser.value.market = reverseMarketMapping[selectedName] || '';
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});
} else {
node.children.forEach(child => traverse(child, node.label));
}
};
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]));
}
});
user.value.markets = Array.from(ids);
} else {
rechargeUser.value.market = '';
user.value.markets = [];
}
console.log('最终映射后的 market IDs:', user.value.markets);
};
const props = {multiple: true}
//
const getMarket = async function () {
try {
// POST
const result = await API({
url: '/market/selectMarket',
});
//
console.log('请求成功', result)
//
const transformTree = (nodes) => {
//
const allChildren = nodes.flatMap(node => node.children || []);
return allChildren.map(child => {
const grandchildren = child.children && child.children.length
? transformTree([child]) //
: null;
return {
value: child.name,
label: child.name,
children: grandchildren
};
});
};
//
markets.value = transformTree(result.data)
console.log('转换后的地区树==============', markets.value)
} catch (error) {
console.log('请求失败', error)
}
}
</script>
<template>
@ -368,11 +408,14 @@ const handleMarketChange = (value) => {
<el-text class="mx-1" size="large">所属地区</el-text>
<el-cascader
v-model="selectedMarketPath"
:options="market"
:options="markets"
placeholder="请选择所属地区"
clearable
collapse-tags
collapse-tags-tooltip
style="width:180px"
@change="handleMarketChange"
:props="props"
/>
</div>
<el-button type="primary" @click="search()">查询</el-button>

174
src/views/usergold/clientCountDetail.vue

@ -7,7 +7,7 @@ import moment from 'moment'
import API from '@/util/http'
import {writeFile, utils} from 'xlsx'
import request from "@/util/request.js";
import {marketMapping} from "../../utils/marketMap.js";
import {marketMapping, reverseMarketMapping} from "../../utils/marketMap.js";
//
const activeTimeRange = ref('')
@ -90,48 +90,9 @@ const type = [
//
//
const isLoadingmarket = ref(false);
const market = ref([])
const markets = ref([])
const getmarket = async () => {
isLoadingmarket.value = true;
try {
const result = await API({
url: '/general/adminMarkets',
data: {account: adminData.value.account}
});
console.log('获取地区数据成功', result)
// { value, label }
if (Array.isArray(result.data) && typeof result.data[0] === 'string') {
market.value = result.data
.filter(item => item !== null && item !== undefined && item.trim() !== '') //
.map(item => ({ value: item, label: item }));
} else {
market.value = result.data;
}
} catch (error) {
console.error('获取地区数据失败:', error);
ElMessage.error('获取地区数据失败,请稍后重试');
//
market.value = [];
} finally {
isLoadingmarket.value = false;
}
};
/*// 地区下拉框
const getMarket = async function () {
try {
const result = await API({
url: '/general/market',
data: {}
})
console.log('@@@@@@@@@@@@@地区数据', result)
market.value = result.data
console.log('@@@@@@@@@@@@@@@@地区', market.value)
} catch (error) {
console.log('请求失败', error)
}
}*/
//
const tableData = ref([])
@ -146,7 +107,9 @@ const total = ref(100)
//
const getTime = ref([])
// goldDetail
const goldDetail = ref({})
const goldDetail = ref({
markets: [],
})
//
const getObj = ref({
pageNum: 1,
@ -239,7 +202,8 @@ const reset = function () {
delete goldDetail.value.type
delete goldDetail.value.startTime
delete goldDetail.value.endTime
delete goldDetail.value.markets
// delete goldDetail.value.markets
goldDetail.value.markets = []
delete sortField.value
delete sortOrder.value
getTime.value = []
@ -368,7 +332,7 @@ const handleCurrentChange = function (val) {
onMounted(async function () {
await getAdminData()
await get()
await getmarket()
await getMarket()
await getPlatform() //
})
@ -446,24 +410,103 @@ const getTagText = (state) => {
return '未知状态';
}
}
const handleMarketChange = (val) => {
if (!Array.isArray(val)) return
const hasHeadquarters = val.includes('总部')
const hasOther = val.some(item => item !== '总部')
if (hasHeadquarters && hasOther) {
if (val[val.length - 1] === '总部') {
//
goldDetail.value.markets = ['总部']
ElMessage.warning('“总部”与其他地区不可同时选择,系统已为您保留“总部”')
//
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});
} else {
node.children.forEach(child => traverse(child, node.label));
}
};
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]));
}
});
goldDetail.value.markets = Array.from(ids);
} else {
//
goldDetail.value.markets = val.filter(item => item !== '总部')
ElMessage.warning('“总部”与其他地区不可同时选择,系统已为您去除“总部”')
goldDetail.value.markets = [];
}
console.log('最终映射后的 market IDs:', goldDetail.value.markets);
};
const props = {multiple: true}
//
const getMarket = async function () {
try {
// POST
const result = await API({
url: '/market/selectMarket',
});
//
console.log('请求成功', result)
//
const transformTree = (nodes) => {
//
const allChildren = nodes.flatMap(node => node.children || []);
return allChildren.map(child => {
const grandchildren = child.children && child.children.length
? transformTree([child]) //
: null;
return {
value: child.name,
label: child.name,
children: grandchildren
};
});
};
//
markets.value = transformTree(result.data)
console.log('转换后的地区树==============', markets.value)
} catch (error) {
console.log('请求失败', error)
}
}
</script>
<template>
<div>
@ -498,16 +541,17 @@ const handleMarketChange = (val) => {
<el-col :span="6">
<div class="head-card-element">
<el-text class="mx-1" size="large">所属地区</el-text>
<el-select v-model="goldDetail.markets" placeholder="请选择所属地区" style="width: 180px" clearable
multiple
:loading="isLoadingArea" @change="handleMarketChange">
<el-option v-for="item in market"
:key="item.value || item"
:label="item.label || item"
:value="item.value || item"
<el-cascader
v-model="selectedMarketPath"
:options="markets"
placeholder="请选择所属地区"
clearable
collapse-tags
collapse-tags-tooltip
style="width:180px"
@change="handleMarketChange"
:props="props"
/>
</el-select>
</div>
</el-col>
</el-row>

Loading…
Cancel
Save