【招生用户端】 优化# 子账号管理:账号状态
parent
314c71a520
commit
889efd326d
|
@ -6,3 +6,7 @@ export enum DataFlowEnum {
|
||||||
DEFAULT = 0,
|
DEFAULT = 0,
|
||||||
SPECIFIC = 1
|
SPECIFIC = 1
|
||||||
}
|
}
|
||||||
|
export enum isDisabledEnum {
|
||||||
|
YES = 1,
|
||||||
|
NO = 0
|
||||||
|
}
|
||||||
|
|
|
@ -54,8 +54,8 @@
|
||||||
</template>
|
</template>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</template>
|
</template>
|
||||||
<el-form-item label="账号状态" prop="status">
|
<el-form-item label="账号状态" prop="isDisable">
|
||||||
<el-radio-group v-model="form.status">
|
<el-radio-group v-model="form.isDisable">
|
||||||
<el-radio v-for="option in accountStatusOptions" :key="option.value" :label="option.value">{{ option.label }}</el-radio>
|
<el-radio v-for="option in accountStatusOptions" :key="option.value" :label="option.value">{{ option.label }}</el-radio>
|
||||||
</el-radio-group>
|
</el-radio-group>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
@ -68,9 +68,9 @@ import { organzationLists } from '@/api/account_center/organization'
|
||||||
import { postLists } from '@/api/account_center/postion'
|
import { postLists } from '@/api/account_center/postion'
|
||||||
import { subAccountAdd, subAccountDetail, subAccountEdit } from '@/api/account_center/sub_account'
|
import { subAccountAdd, subAccountDetail, subAccountEdit } from '@/api/account_center/sub_account'
|
||||||
import ProDialog, { type IParams } from '@/components/ProDialog/index.vue'
|
import ProDialog, { type IParams } from '@/components/ProDialog/index.vue'
|
||||||
import { DataFlowEnum, StatusEnum } from '@/enums'
|
import { DataFlowEnum, isDisabledEnum } from '@/enums'
|
||||||
import { validateContact } from '@/utils/validate'
|
import { validateContact } from '@/utils/validate'
|
||||||
import type { FormInstance, FormRules } from 'element-plus'
|
import type { FormInstance } from 'element-plus'
|
||||||
|
|
||||||
export interface IAccount {
|
export interface IAccount {
|
||||||
organizationId: number | string
|
organizationId: number | string
|
||||||
|
@ -78,7 +78,7 @@ export interface IAccount {
|
||||||
mobile: string
|
mobile: string
|
||||||
postId: number[]
|
postId: number[]
|
||||||
dataFlow: number
|
dataFlow: number
|
||||||
accountStatus: number
|
isDisable: number
|
||||||
teacher: string
|
teacher: string
|
||||||
}
|
}
|
||||||
const proDialogRef = ref<InstanceType<typeof ProDialog>>()
|
const proDialogRef = ref<InstanceType<typeof ProDialog>>()
|
||||||
|
@ -97,8 +97,8 @@ const channelOptions = ref([
|
||||||
{ label: '组织指定', value: DataFlowEnum.SPECIFIC }
|
{ label: '组织指定', value: DataFlowEnum.SPECIFIC }
|
||||||
])
|
])
|
||||||
const accountStatusOptions = ref([
|
const accountStatusOptions = ref([
|
||||||
{ label: '启用', value: 1 },
|
{ label: '启用', value: isDisabledEnum.NO },
|
||||||
{ label: '停用', value: 2 }
|
{ label: '停用', value: isDisabledEnum.YES }
|
||||||
])
|
])
|
||||||
const channelTooltips = ['选择默认组织则数据流向到所属组织下的所有招生老师;', '选择组织指定则可选择将数据流向到所属组织下的指定招生老师;']
|
const channelTooltips = ['选择默认组织则数据流向到所属组织下的所有招生老师;', '选择组织指定则可选择将数据流向到所属组织下的指定招生老师;']
|
||||||
const form = ref({
|
const form = ref({
|
||||||
|
@ -108,7 +108,7 @@ const form = ref({
|
||||||
mobile: '',
|
mobile: '',
|
||||||
postIds: [],
|
postIds: [],
|
||||||
dataFlow: 0,
|
dataFlow: 0,
|
||||||
status: 1,
|
isDisable: 0,
|
||||||
teacher: ''
|
teacher: ''
|
||||||
})
|
})
|
||||||
const fetchPostionData = async (callback?: (params: []) => void) => {
|
const fetchPostionData = async (callback?: (params: []) => void) => {
|
||||||
|
@ -135,7 +135,7 @@ const setDsiabled = (nodes: any[]) => {
|
||||||
nodes.forEach(node => {
|
nodes.forEach(node => {
|
||||||
const ancestorArray = node.ancestors ? node.ancestors.split(',') : []
|
const ancestorArray = node.ancestors ? node.ancestors.split(',') : []
|
||||||
const level = ancestorArray.length - 1
|
const level = ancestorArray.length - 1
|
||||||
node.disabled = level < 2 || node.status == StatusEnum.Stop
|
node.disabled = level < 2 || node.isDisable == isDisabledEnum.YES
|
||||||
if (node.children && node.children.length > 0) {
|
if (node.children && node.children.length > 0) {
|
||||||
setDsiabled(node.children)
|
setDsiabled(node.children)
|
||||||
}
|
}
|
||||||
|
|
|
@ -9,7 +9,7 @@
|
||||||
<el-button type="danger" plain :icon="Delete" :disabled="isDisabled" @click="handleBatchDelete">批量删除</el-button>
|
<el-button type="danger" plain :icon="Delete" :disabled="isDisabled" @click="handleBatchDelete">批量删除</el-button>
|
||||||
</el-space>
|
</el-space>
|
||||||
<el-space>
|
<el-space>
|
||||||
<el-input :placeholder="`请输入${placeholder}`" v-model="searchForm.keyword" @input="handleInputChange">
|
<el-input :placeholder="`请输入${placeholder}`" v-model="searchForm.keyword" clearable @input="handleInputChange">
|
||||||
<template #prepend>
|
<template #prepend>
|
||||||
<el-select v-model="selectKey" :placeholder="placeholder" class="w-[100px]">
|
<el-select v-model="selectKey" :placeholder="placeholder" class="w-[100px]">
|
||||||
<el-option v-for="option in searchOptions" :key="option.field" :label="option.label" :value="option.field" />
|
<el-option v-for="option in searchOptions" :key="option.field" :label="option.label" :value="option.field" />
|
||||||
|
@ -37,8 +37,13 @@
|
||||||
</span>
|
</span>
|
||||||
</el-space>
|
</el-space>
|
||||||
</template>
|
</template>
|
||||||
<template #accountStatus="{ row }">
|
<template #isDisable="{ row }">
|
||||||
<el-switch v-model="row.accountStatus" :active-value="1" :inactive-value="0" :before-change="() => handleStatusChange(row)" />
|
<el-switch
|
||||||
|
v-model="row.isDisable"
|
||||||
|
:active-value="isDisabledEnum.NO"
|
||||||
|
:inactive-value="isDisabledEnum.YES"
|
||||||
|
:before-change="() => handleStatusChange(row)"
|
||||||
|
/>
|
||||||
</template>
|
</template>
|
||||||
<template #operation="{ row }">
|
<template #operation="{ row }">
|
||||||
<el-button link type="primary" @click="handleEdit(row)">编辑</el-button>
|
<el-button link type="primary" @click="handleEdit(row)">编辑</el-button>
|
||||||
|
@ -57,7 +62,8 @@ import { Plus, Delete } from '@element-plus/icons-vue'
|
||||||
import accountDialog from '../components/account-list/account-dialog.vue'
|
import accountDialog from '../components/account-list/account-dialog.vue'
|
||||||
import { useDebounceFn } from '@vueuse/core'
|
import { useDebounceFn } from '@vueuse/core'
|
||||||
import { subAccountDelete, subAccountList } from '@/api/account_center/sub_account'
|
import { subAccountDelete, subAccountList } from '@/api/account_center/sub_account'
|
||||||
import { StatusEnum } from '@/enums'
|
import { StatusEnum, isDisabledEnum } from '@/enums'
|
||||||
|
import { omit } from 'lodash-es'
|
||||||
|
|
||||||
const props = defineProps({
|
const props = defineProps({
|
||||||
curOrganization: {
|
curOrganization: {
|
||||||
|
@ -74,8 +80,8 @@ const searchOptions = shallowRef([
|
||||||
])
|
])
|
||||||
const placeholder = computed(() => searchOptions.value.find(item => item.field == selectKey.value)?.label)
|
const placeholder = computed(() => searchOptions.value.find(item => item.field == selectKey.value)?.label)
|
||||||
const accountStatusOptions = ref([
|
const accountStatusOptions = ref([
|
||||||
{ label: '启用', value: StatusEnum.Normal },
|
{ label: '启用', value: isDisabledEnum.NO },
|
||||||
{ label: '停用', value: StatusEnum.Stop }
|
{ label: '停用', value: isDisabledEnum.YES }
|
||||||
])
|
])
|
||||||
const loading = ref(false)
|
const loading = ref(false)
|
||||||
const proTableRef = ref()
|
const proTableRef = ref()
|
||||||
|
@ -86,7 +92,7 @@ const columns = reactive([
|
||||||
{ prop: 'mobile', label: '联系电话', width: 180 },
|
{ prop: 'mobile', label: '联系电话', width: 180 },
|
||||||
{ prop: 'organizationName', label: '所属组织', width: 180 },
|
{ prop: 'organizationName', label: '所属组织', width: 180 },
|
||||||
{ prop: 'postName', label: '岗位', width: 180 },
|
{ prop: 'postName', label: '岗位', width: 180 },
|
||||||
{ prop: 'status', label: '账号状态', width: 180 },
|
{ prop: 'isDisable', label: '账号状态', width: 180 },
|
||||||
{ prop: 'operation', label: '操作', fixed: 'right', width: 250 }
|
{ prop: 'operation', label: '操作', fixed: 'right', width: 250 }
|
||||||
])
|
])
|
||||||
|
|
||||||
|
@ -96,8 +102,10 @@ const isDisabledAdd = computed(() => props.curOrganization.status == StatusEnum.
|
||||||
const fetchTableList = async (nodeId?: number) => {
|
const fetchTableList = async (nodeId?: number) => {
|
||||||
loading.value = true
|
loading.value = true
|
||||||
try {
|
try {
|
||||||
|
const newParams = omit(searchForm.value, ['keyword'])
|
||||||
const params = {
|
const params = {
|
||||||
organizationId: nodeId ?? props.curOrganization.id
|
organizationId: nodeId ?? props.curOrganization.id,
|
||||||
|
...newParams
|
||||||
}
|
}
|
||||||
const result = await subAccountList(params)
|
const result = await subAccountList(params)
|
||||||
tableData.value = result ?? []
|
tableData.value = result ?? []
|
||||||
|
@ -163,7 +171,9 @@ const showAccountDialog = (row?: any) => {
|
||||||
const searchForm = ref({
|
const searchForm = ref({
|
||||||
keyword: '',
|
keyword: '',
|
||||||
postId: '',
|
postId: '',
|
||||||
status: ''
|
isDisable: '',
|
||||||
|
username: '',
|
||||||
|
mobile: ''
|
||||||
})
|
})
|
||||||
const handleInputChange = useDebounceFn(() => {
|
const handleInputChange = useDebounceFn(() => {
|
||||||
const formMap: Record<string, string> = {
|
const formMap: Record<string, string> = {
|
||||||
|
@ -171,9 +181,11 @@ const handleInputChange = useDebounceFn(() => {
|
||||||
mobile: ''
|
mobile: ''
|
||||||
}
|
}
|
||||||
formMap[selectKey.value] = searchForm.value.keyword
|
formMap[selectKey.value] = searchForm.value.keyword
|
||||||
|
searchForm.value[selectKey.value] = formMap[selectKey.value]
|
||||||
|
fetchTableList()
|
||||||
}, 500)
|
}, 500)
|
||||||
const handleSelectChange = () => {
|
const handleSelectChange = () => {
|
||||||
console.log('handleSelectChange')
|
fetchTableList()
|
||||||
}
|
}
|
||||||
const positionOptions = ref<any[]>([])
|
const positionOptions = ref<any[]>([])
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue