diff --git a/src/views/usergold/clientCountBalance.vue b/src/views/usergold/clientCountBalance.vue
index 83bfdf1..759851e 100644
--- a/src/views/usergold/clientCountBalance.vue
+++ b/src/views/usergold/clientCountBalance.vue
@@ -216,36 +216,24 @@ const handleSortChange = (column) => {
}
+const handleMarketChange = (val) => {
+ if (!Array.isArray(val)) return
-// 标记是否已选择总部
-const selectedHeadquarters = computed(() => {
- return Array.isArray(user.value.markets) &&
- user.value.markets.includes('总部')
-})
-
-// 互斥选择总部与其他地区
-watch(
- () => user.value.markets,
- (newVal) => {
- if (!Array.isArray(newVal)) return
-
- // 选择了总部,则清除其他选项
- if (newVal.includes('总部') && newVal.length > 1) {
- user.value.markets = ['总部']
- // ElMessage.info('选总部时不能选择其他地区')
- ElMessage.warning('“总部”与其他地区不可同时选择,系统已为您自动调整')
-
- }
- // 选择了非总部且包含总部,则移除总部
- if (!newVal.includes('总部') && selectedHeadquarters.value) {
- user.value.markets = newVal.filter(item => item !== '总部')
- // ElMessage.info("选其他不能选择总部")
- ElMessage.warning('“总部”与其他地区不可同时选择,系统已为您自动调整')
+ const hasHeadquarters = val.includes('总部')
+ const hasOther = val.some(item => item !== '总部')
- }
- },
- { deep: true }
-)
+ if (hasHeadquarters && hasOther) {
+ if (val[val.length - 1] === '总部') {
+ // 用户最后点的是总部,保留总部,清除其他
+ user.value.markets = ['总部']
+ ElMessage.warning('“总部”与其他地区不可同时选择,系统已为您保留“总部”')
+ } else {
+ // 用户最后点的是其他,保留其他,移除总部
+ user.value.markets = val.filter(item => item !== '总部')
+ ElMessage.warning('“总部”与其他地区不可同时选择,系统已为您去除“总部”')
+ }
+ }
+}
// 挂载
onMounted(async function () {
@@ -288,7 +276,7 @@ const exportExcel = async function () {
所属地区:
-
+
diff --git a/src/views/usergold/clientCountDetail.vue b/src/views/usergold/clientCountDetail.vue
index 34bb973..8c63e24 100644
--- a/src/views/usergold/clientCountDetail.vue
+++ b/src/views/usergold/clientCountDetail.vue
@@ -8,13 +8,6 @@ import API from '@/util/http'
import { writeFile, utils } from 'xlsx'
import request from "@/util/request.js";
-// 标记是否已选择总部
-const selectedHeadquarters = computed(() => {
- return Array.isArray(goldDetail.value.markets) &&
- goldDetail.value.markets.includes('总部')
-})
-
-
// 标记当前激活的时间范围按钮
const activeTimeRange = ref('')
// 日期选择器变化时清除按钮激活状态
@@ -366,31 +359,25 @@ const handleCurrentChange = function (val) {
get()
}
+const handleMarketChange = (val) => {
+ if (!Array.isArray(val)) return
+ const hasHeadquarters = val.includes('总部')
+ const hasOther = val.some(item => item !== '总部')
-// 互斥选择总部与其他地区
-watch(
- () => goldDetail.value.markets,
- (newVal) => {
- if (!Array.isArray(newVal)) return
-
- // 选择了总部,则清除其他选项
- if (newVal.includes('总部') && newVal.length > 1) {
- goldDetail.value.markets = ['总部']
- // ElMessage.info('选总部时不能选择其他地区')
- ElMessage.warning('“总部”与其他地区不可同时选择,系统已为您自动调整')
-
- }
- // 选择了非总部且包含总部,则移除总部
- if (!newVal.includes('总部') && selectedHeadquarters.value) {
- goldDetail.value.markets = newVal.filter(item => item !== '总部')
- // ElMessage.info("选其他不能选择总部")
- ElMessage.warning('“总部”与其他地区不可同时选择,系统已为您自动调整')
+ if (hasHeadquarters && hasOther) {
+ if (val[val.length - 1] === '总部') {
+ // 用户最后点的是总部,保留总部,清除其他
+ goldDetail.value.markets = ['总部']
+ ElMessage.warning('“总部”与其他地区不可同时选择,系统已为您保留“总部”')
+ } else {
+ // 用户最后点的是其他,保留其他,移除总部
+ goldDetail.value.markets = val.filter(item => item !== '总部')
+ ElMessage.warning('“总部”与其他地区不可同时选择,系统已为您去除“总部”')
+ }
+ }
+}
- }
- },
- { deep: true }
-)
@@ -437,7 +424,7 @@ onMounted(async function () {
所属地区:
+ :loading="isLoadingArea" @change="handleMarketChange">