Browse Source

feat(usergold): 实现总部与其他地区互斥选择功能 (加监听)

zhangrenyuan/feature-20250714163943-金币前端二期
lihui 2 weeks ago
parent
commit
b25a30f49e
  1. 35
      src/views/usergold/clientCountBalance.vue
  2. 48
      src/views/usergold/clientCountDetail.vue

35
src/views/usergold/clientCountBalance.vue

@ -1,6 +1,6 @@
<script setup>
//
import {ref, onMounted, reactive, computed} from 'vue'
import {ref, onMounted, reactive, computed, watch} from 'vue'
import ElementPlus from 'element-plus'
import {ElMessage, ElMessageBox} from 'element-plus'
import axios from 'axios'
@ -214,6 +214,39 @@ const handleSortChange = (column) => {
sortOrder.value = column.order === 'ascending' ? 'ASC' : 'DESC'
get()
}
//
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('“总部”与其他地区不可同时选择,系统已为您自动调整')
}
},
{ deep: true }
)
//
onMounted(async function () {
await getAdminData()

48
src/views/usergold/clientCountDetail.vue

@ -1,5 +1,5 @@
<script setup>
import { ref, onMounted, computed, nextTick } from 'vue'
import {ref, onMounted, computed, nextTick, watch} from 'vue'
import { ElMessage } from 'element-plus'
import axios from 'axios'
@ -8,6 +8,12 @@ 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('')
@ -359,6 +365,36 @@ const handleCurrentChange = function (val) {
getObj.value.pageNum = val
get()
}
//
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('“总部”与其他地区不可同时选择,系统已为您自动调整')
}
},
{ deep: true }
)
//
onMounted(async function () {
await get()
@ -400,10 +436,14 @@ onMounted(async function () {
<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
<el-select v-model="goldDetail.markets" placeholder="请选择所属地区" style="width: 180px" clearable multiple
:loading="isLoadingArea">
<el-option v-for="item in market" :key="item.value || item" :label="item.label || item"
:value="item.value || item" />
<el-option v-for="item in market"
:key="item.value || item"
:label="item.label || item"
:value="item.value || item"
/>
</el-select>
</div>
</el-col>

Loading…
Cancel
Save