【招生主控端】 新增# 对接账号中心接口
parent
967288bbb9
commit
cb3627ebca
|
@ -2,17 +2,21 @@ import request from '@/utils/request'
|
||||||
|
|
||||||
// 添加账号
|
// 添加账号
|
||||||
export function accountAdd(params: Record<string, any>) {
|
export function accountAdd(params: Record<string, any>) {
|
||||||
return request.post({ url: 'api/client/add', params })
|
return request.post({ url: '/client/add', params })
|
||||||
}
|
}
|
||||||
// 编辑账号
|
// 编辑账号
|
||||||
export function accountEdit(params: Record<string, any>) {
|
export function accountEdit(params: Record<string, any>) {
|
||||||
return request.post({ url: 'api/client/edit', params })
|
return request.post({ url: '/client/edit', params })
|
||||||
}
|
}
|
||||||
// 账号详情
|
// 账号详情
|
||||||
export function accountDetail(params: Record<string, any>) {
|
export function accountDetail(params: Record<string, any>) {
|
||||||
return request.post({ url: 'api/client/detail', params })
|
return request.get({ url: '/client/detail', params })
|
||||||
}
|
}
|
||||||
// 账号列表
|
// 账号列表
|
||||||
export function accountList(params: Record<string, any>) {
|
export function accountList(params: Record<string, any>) {
|
||||||
return request.post({ url: 'api/client/list', params })
|
return request.get({ url: '/client/list', params })
|
||||||
|
}
|
||||||
|
// 账号状态
|
||||||
|
export function accountStatus(params: Record<string, any>) {
|
||||||
|
return request.post({ url: '/client/updateStatus', params })
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
export enum StatusEnum {
|
export enum StatusEnum {
|
||||||
Normal = 1,
|
Normal = 0,
|
||||||
Stop = 2,
|
Stop = 1,
|
||||||
Expired = 3
|
Expired = 2
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,14 +1,20 @@
|
||||||
<template>
|
<template>
|
||||||
<div class="edit-popup">
|
<div class="edit-popup">
|
||||||
<popup ref="popupRef" :title="popupTitle" :async="true" width="400px" @confirm="handleSubmit" @close="handleClose">
|
<popup ref="popupRef" :title="popupTitle" :async="true" width="480px" @confirm="handleSubmit" @close="handleClose">
|
||||||
<el-form ref="formRef" :model="formData" label-width="84px" :rules="formRules">
|
<el-form ref="formRef" :model="formData" label-width="84px" :rules="formRules">
|
||||||
<el-form-item label="账号名称" prop="accountName">
|
<el-form-item label="账号名称" prop="account">
|
||||||
<el-input v-model="formData.accountName" placeholder="请输入账号名称" clearable :maxlength="20" show-word-limit />
|
<el-input v-model="formData.account" placeholder="请输入账号名称" clearable :maxlength="20" show-word-limit />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="账号名额" prop="accountNumber">
|
<el-form-item v-if="formData.id == ''" label="账号密码" prop="password">
|
||||||
<el-input-number v-model="formData.accountNumber" :min="1" :max="9999" style="width: 100%" />
|
<el-input v-model="formData.password" placeholder="请输入账号密码" clearable :maxlength="20" show-word-limit />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="有效期" prop="range">
|
<el-form-item label="客户名称" prop="clientName">
|
||||||
|
<el-input v-model="formData.clientName" placeholder="请输入客户名称" clearable :maxlength="20" show-word-limit />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="账号名额" prop="quota">
|
||||||
|
<el-input-number v-model="formData.quota" :min="1" :max="99999" style="width: 100%" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="有效期" prop="range" class="range">
|
||||||
<daterange-picker
|
<daterange-picker
|
||||||
type="datetimerange"
|
type="datetimerange"
|
||||||
format="YYYY-MM-DD HH:mm:ss"
|
format="YYYY-MM-DD HH:mm:ss"
|
||||||
|
@ -19,9 +25,6 @@
|
||||||
v-model:endTime="formData.range.endTime"
|
v-model:endTime="formData.range.endTime"
|
||||||
/>
|
/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="账号状态" prop="status">
|
|
||||||
<el-switch v-model="formData.status" :active-value="StatusEnum.Normal" :inactive-value="StatusEnum.Stop" />
|
|
||||||
</el-form-item>
|
|
||||||
</el-form>
|
</el-form>
|
||||||
</popup>
|
</popup>
|
||||||
</div>
|
</div>
|
||||||
|
@ -31,7 +34,7 @@ import type { FormInstance } from 'element-plus'
|
||||||
import Popup from '@/components/popup/index.vue'
|
import Popup from '@/components/popup/index.vue'
|
||||||
import { accountAdd, accountDetail, accountEdit } from '@/api/account_center'
|
import { accountAdd, accountDetail, accountEdit } from '@/api/account_center'
|
||||||
import feedback from '@/utils/feedback'
|
import feedback from '@/utils/feedback'
|
||||||
import { StatusEnum } from '@/enums'
|
import { omit } from 'lodash-es'
|
||||||
|
|
||||||
const emit = defineEmits(['success', 'close'])
|
const emit = defineEmits(['success', 'close'])
|
||||||
|
|
||||||
|
@ -43,13 +46,14 @@ const popupTitle = computed(() => {
|
||||||
})
|
})
|
||||||
const formData = reactive({
|
const formData = reactive({
|
||||||
id: '',
|
id: '',
|
||||||
accountName: '',
|
account: '',
|
||||||
accountNumber: '',
|
password: '',
|
||||||
|
clientName: '',
|
||||||
|
quota: 1,
|
||||||
range: {
|
range: {
|
||||||
startTime: '',
|
startTime: '',
|
||||||
endTime: ''
|
endTime: ''
|
||||||
},
|
}
|
||||||
status: 1
|
|
||||||
})
|
})
|
||||||
const validaeRange = (rule: any, value: any, callback: any) => {
|
const validaeRange = (rule: any, value: any, callback: any) => {
|
||||||
if (value.startTime == '' || value.endTime == '') {
|
if (value.startTime == '' || value.endTime == '') {
|
||||||
|
@ -59,29 +63,44 @@ const validaeRange = (rule: any, value: any, callback: any) => {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
const formRules = {
|
const formRules = {
|
||||||
accountName: [
|
account: [
|
||||||
{
|
{
|
||||||
required: true,
|
required: true,
|
||||||
message: '请输入账号名称',
|
message: '请输入账号名称',
|
||||||
trigger: ['blur']
|
trigger: ['blur']
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
accountNumber: [
|
password: [
|
||||||
|
{
|
||||||
|
required: true,
|
||||||
|
message: '请输入账号密码',
|
||||||
|
trigger: ['blur']
|
||||||
|
}
|
||||||
|
],
|
||||||
|
clientName: [
|
||||||
|
{
|
||||||
|
required: true,
|
||||||
|
message: '请输入客户名称',
|
||||||
|
trigger: ['blur']
|
||||||
|
}
|
||||||
|
],
|
||||||
|
quota: [
|
||||||
{
|
{
|
||||||
required: true,
|
required: true,
|
||||||
message: '请输入账号名额',
|
message: '请输入账号名额',
|
||||||
trigger: ['blur']
|
trigger: ['blur']
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
range: [{ validator: validaeRange, trigger: 'change' }],
|
range: [{ validator: validaeRange, trigger: 'change' }]
|
||||||
status: { required: true, message: '请选择账号状态', trigger: 'change' }
|
|
||||||
}
|
}
|
||||||
const shortcuts = [
|
const shortcuts = [
|
||||||
{
|
{
|
||||||
text: '今天',
|
text: '今天',
|
||||||
value: () => {
|
value: () => {
|
||||||
const end = new Date()
|
|
||||||
const start = new Date()
|
const start = new Date()
|
||||||
|
const end = new Date()
|
||||||
|
start.setHours(0, 0, 0, 0)
|
||||||
|
end.setHours(23, 59, 59, 999)
|
||||||
return [start, end]
|
return [start, end]
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
@ -91,6 +110,8 @@ const shortcuts = [
|
||||||
const start = new Date()
|
const start = new Date()
|
||||||
const end = new Date()
|
const end = new Date()
|
||||||
end.setDate(end.getDate() + 7)
|
end.setDate(end.getDate() + 7)
|
||||||
|
start.setHours(0, 0, 0, 0)
|
||||||
|
end.setHours(23, 59, 59, 999)
|
||||||
return [start, end]
|
return [start, end]
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
@ -100,6 +121,8 @@ const shortcuts = [
|
||||||
const start = new Date()
|
const start = new Date()
|
||||||
const end = new Date()
|
const end = new Date()
|
||||||
end.setMonth(end.getMonth() + 1)
|
end.setMonth(end.getMonth() + 1)
|
||||||
|
start.setHours(0, 0, 0, 0)
|
||||||
|
end.setHours(23, 59, 59, 999)
|
||||||
return [start, end]
|
return [start, end]
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
@ -109,6 +132,8 @@ const shortcuts = [
|
||||||
const start = new Date()
|
const start = new Date()
|
||||||
const end = new Date()
|
const end = new Date()
|
||||||
end.setMonth(end.getMonth() + 3)
|
end.setMonth(end.getMonth() + 3)
|
||||||
|
start.setHours(0, 0, 0, 0)
|
||||||
|
end.setHours(23, 59, 59, 999)
|
||||||
return [start, end]
|
return [start, end]
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
@ -118,6 +143,8 @@ const shortcuts = [
|
||||||
const start = new Date()
|
const start = new Date()
|
||||||
const end = new Date()
|
const end = new Date()
|
||||||
end.setMonth(end.getMonth() + 6)
|
end.setMonth(end.getMonth() + 6)
|
||||||
|
start.setHours(0, 0, 0, 0)
|
||||||
|
end.setHours(23, 59, 59, 999)
|
||||||
return [start, end]
|
return [start, end]
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
@ -127,13 +154,21 @@ const shortcuts = [
|
||||||
const start = new Date()
|
const start = new Date()
|
||||||
const end = new Date()
|
const end = new Date()
|
||||||
end.setFullYear(end.getFullYear() + 1)
|
end.setFullYear(end.getFullYear() + 1)
|
||||||
|
start.setHours(0, 0, 0, 0)
|
||||||
|
end.setHours(23, 59, 59, 999)
|
||||||
return [start, end]
|
return [start, end]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
const handleSubmit = async () => {
|
const handleSubmit = async () => {
|
||||||
await formRef.value?.validate()
|
await formRef.value?.validate()
|
||||||
mode.value == 'edit' ? await accountEdit(formData) : await accountAdd(formData)
|
const { startTime, endTime } = formData.range
|
||||||
|
Object.assign(formData, {
|
||||||
|
startTime: startTime,
|
||||||
|
expirationTime: endTime
|
||||||
|
})
|
||||||
|
const newFormData = omit(formData, ['range'])
|
||||||
|
mode.value == 'edit' ? await accountEdit(newFormData) : await accountAdd(newFormData)
|
||||||
feedback.msgSuccess('操作成功')
|
feedback.msgSuccess('操作成功')
|
||||||
popupRef.value?.close()
|
popupRef.value?.close()
|
||||||
emit('success')
|
emit('success')
|
||||||
|
@ -150,6 +185,8 @@ const setFormData = (data: Record<any, any>) => {
|
||||||
//@ts-ignore
|
//@ts-ignore
|
||||||
formData[key] = data[key]
|
formData[key] = data[key]
|
||||||
}
|
}
|
||||||
|
formData.range.startTime = data['startTime']
|
||||||
|
formData.range.endTime = data['expirationTime']
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -170,3 +207,15 @@ defineExpose({
|
||||||
getDetail
|
getDetail
|
||||||
})
|
})
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
:deep(.range) {
|
||||||
|
.el-form-item__label {
|
||||||
|
&::before {
|
||||||
|
content: '* ';
|
||||||
|
margin-right: 2px;
|
||||||
|
color: #f5222d;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
<div class="post-lists">
|
<div class="post-lists">
|
||||||
<el-card class="!border-none" shadow="never">
|
<el-card class="!border-none" shadow="never">
|
||||||
<el-form ref="formRef" class="mb-[-16px]" :model="queryParams" :inline="true">
|
<el-form ref="formRef" class="mb-[-16px]" :model="queryParams" :inline="true">
|
||||||
<el-form-item label="账号名称">
|
<el-form-item label="客户名称">
|
||||||
<el-input class="w-[280px]" v-model="queryParams.name" clearable placeholder="请输入" @keyup.enter="resetPage" />
|
<el-input class="w-[280px]" v-model="queryParams.name" clearable placeholder="请输入" @keyup.enter="resetPage" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="账号状态">
|
<el-form-item label="账号状态">
|
||||||
|
@ -28,22 +28,32 @@
|
||||||
</el-button>
|
</el-button>
|
||||||
</div>
|
</div>
|
||||||
<el-table class="mt-4" size="large" v-loading="pager.loading" :data="pager.lists">
|
<el-table class="mt-4" size="large" v-loading="pager.loading" :data="pager.lists">
|
||||||
<el-table-column label="账号名称" prop="accountName" min-width="100" />
|
<el-table-column label="客户名称" prop="account" min-width="100" />
|
||||||
<el-table-column label="账号名额" prop="accountNumber" min-width="100">
|
<el-table-column label="账号名额" prop="quota" min-width="100">
|
||||||
<template #default="{ row }">
|
<template #default="{ row }">
|
||||||
<span class="text-primary">{{ row.accountNumber }}</span>
|
<span class="text-primary">{{ row.quota }}</span>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="已使用" prop="useNumber" min-width="100" />
|
<el-table-column label="已使用" prop="quantity" />
|
||||||
<el-table-column label="未使用" prop="unuseNumber" min-width="100" />
|
<el-table-column label="未使用" prop="">
|
||||||
<el-table-column label="账号状态" prop="status" min-width="100">
|
<template #default="{ row }">
|
||||||
|
<span>{{ row.quota - row.quantity }}</span>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column label="账号状态" prop="status" width="180">
|
||||||
<template #default="{ row }">
|
<template #default="{ row }">
|
||||||
<el-tag class="ml-2" :type="tagType(row.status)">
|
<el-tag class="ml-2" :type="tagType(row.status)">
|
||||||
{{ parseStatusText(row.status) }}
|
{{ parseStatusText(row.status) }}
|
||||||
</el-tag>
|
</el-tag>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="账号有效期" prop="expiresDate" min-width="100" />
|
<el-table-column label="账号有效期" prop="" width="250">
|
||||||
|
<template #default="{ row }">
|
||||||
|
<span>{{ formatDate(row.startTime, 'YYYY-MM-DD') }}</span>
|
||||||
|
至
|
||||||
|
<span>{{ formatDate(row.expirationTime, 'YYYY-MM-DD') }}</span>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
<el-table-column label="操作" width="180" fixed="right">
|
<el-table-column label="操作" width="180" fixed="right">
|
||||||
<template #default="{ row }">
|
<template #default="{ row }">
|
||||||
<el-button type="primary" link @click="handleEdit(row)">编辑</el-button>
|
<el-button type="primary" link @click="handleEdit(row)">编辑</el-button>
|
||||||
|
@ -63,9 +73,10 @@
|
||||||
<script lang="ts" setup name="post">
|
<script lang="ts" setup name="post">
|
||||||
import EditPopup from './edit.vue'
|
import EditPopup from './edit.vue'
|
||||||
import { usePaging } from '@/hooks/usePaging'
|
import { usePaging } from '@/hooks/usePaging'
|
||||||
import { accountList } from '@/api/account_center'
|
import { accountList, accountStatus } from '@/api/account_center'
|
||||||
import { StatusEnum } from '@/enums'
|
import { StatusEnum } from '@/enums'
|
||||||
import feedback from '@/utils/feedback'
|
import feedback from '@/utils/feedback'
|
||||||
|
import dayjs from 'dayjs'
|
||||||
|
|
||||||
const statusMap: Record<StatusEnum, string> = {
|
const statusMap: Record<StatusEnum, string> = {
|
||||||
[StatusEnum.Normal]: '启用',
|
[StatusEnum.Normal]: '启用',
|
||||||
|
@ -105,11 +116,14 @@ const handleEdit = async (data: any) => {
|
||||||
const handleChangeStatus = async row => {
|
const handleChangeStatus = async row => {
|
||||||
const { id, status } = row
|
const { id, status } = row
|
||||||
const msg = status == StatusEnum.Normal ? '停用' : '启用'
|
const msg = status == StatusEnum.Normal ? '停用' : '启用'
|
||||||
|
const statusVal = status == StatusEnum.Normal ? StatusEnum.Stop : StatusEnum.Normal
|
||||||
await feedback.confirm(`确定要${msg}该账号?`)
|
await feedback.confirm(`确定要${msg}该账号?`)
|
||||||
// await postDelete({ id })
|
await accountStatus({ id, status: statusVal })
|
||||||
feedback.msgSuccess(`${msg}成功`)
|
feedback.msgSuccess(`${msg}成功`)
|
||||||
getLists()
|
getLists()
|
||||||
}
|
}
|
||||||
|
const formatDate = (value: string, format = 'YYYY-MM-DD HH:mm:ss') => {
|
||||||
|
return dayjs(value).format(format)
|
||||||
|
}
|
||||||
getLists()
|
getLists()
|
||||||
</script>
|
</script>
|
||||||
|
|
Loading…
Reference in New Issue