驾校管理
This commit is contained in:
@@ -59,3 +59,11 @@
|
||||
.el-form--inline .el-form-item {
|
||||
margin-right: 15px;
|
||||
}
|
||||
|
||||
.el-row .el-form-item {
|
||||
.el-input,
|
||||
.el-select,
|
||||
.el-input-number {
|
||||
width: 100%;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,16 +2,33 @@
|
||||
<div>
|
||||
<el-table :data="list" border>
|
||||
<el-table-column type="index" width="50" />
|
||||
<el-table-column label="来源名称">
|
||||
<el-table-column label="来源名称" width="200px">
|
||||
<template #default="{ row }">
|
||||
<el-input v-model="row.name" placeholder="请输入" :clearable="false" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="获取连接">
|
||||
<el-table-column label="渠道" width="300px">
|
||||
<template #default="{ row }">
|
||||
<el-input v-model="row.link" placeholder="请输入" :clearable="false" />
|
||||
<el-select
|
||||
v-if="row.edit"
|
||||
v-model="row.resource"
|
||||
placeholder="选择渠道"
|
||||
clearable
|
||||
filterable
|
||||
@change="handleChange(row)"
|
||||
>
|
||||
<el-option
|
||||
v-for="item in resourceOptions"
|
||||
:key="item.value"
|
||||
:label="item.label"
|
||||
:value="item.value"
|
||||
/>
|
||||
</el-select>
|
||||
<span>{{ row.resourceName }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="获取连接" prop="link" />
|
||||
<el-table-column label="参数详情" prop="params" />
|
||||
<el-table-column label="是否启用" width="100px">
|
||||
<template #default="{ row }">
|
||||
<el-switch v-model="row.inEnable" :active-value="true" :inactive-value="false" />
|
||||
@@ -28,21 +45,46 @@
|
||||
<div class="mt-20px flex justify-center">
|
||||
<el-button type="primary" @click="handleInsert">新增规则</el-button>
|
||||
<el-button type="primary" @click="onSubmit">保存</el-button>
|
||||
<el-button>重置</el-button>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
const list = ref([
|
||||
{ name: '一点通账号1', link: 'http://baidu.com' },
|
||||
{ name: '一点通账号2', link: 'http://baidu.com' },
|
||||
{ name: '宝典账号', link: 'http://baidu.com' },
|
||||
{ name: '抖音', link: 'http://baidu.com' }
|
||||
{
|
||||
name: '一点通账号1',
|
||||
resourceName: '驾校一点通',
|
||||
link: 'https://sscrm.ahduima.com/clue/get?cid=1001&aid=1001&res=2',
|
||||
params: '参数详情'
|
||||
},
|
||||
{
|
||||
name: '一点通账号2',
|
||||
resourceName: '驾校一点通',
|
||||
link: 'https://sscrm.ahduima.com/clue/get?cid=1001&aid=1001&res=2',
|
||||
params: '参数详情'
|
||||
},
|
||||
{
|
||||
name: '宝典账号',
|
||||
resourceName: '驾考宝典',
|
||||
link: 'https://sscrm.ahduima.com/clue/get?cid=1001&aid=1001&res=1',
|
||||
params: '参数详情'
|
||||
},
|
||||
{
|
||||
name: '抖音',
|
||||
resourceName: '抖音/开心学车',
|
||||
link: 'https://sscrm.ahduima.com/clue/get?cid=1001&aid=1001&res=3',
|
||||
params: '参数详情'
|
||||
}
|
||||
])
|
||||
|
||||
const resourceOptions = ref([
|
||||
{ value: 1, label: '驾考宝典' },
|
||||
{ value: 2, label: '一点通' },
|
||||
{ value: 3, label: '抖音' }
|
||||
])
|
||||
|
||||
function handleInsert() {
|
||||
list.value.push({ name: '', link: '' })
|
||||
list.value.push({ name: '', link: '', edit: true, inEnable: true })
|
||||
}
|
||||
|
||||
function onSubmit() {
|
||||
@@ -52,6 +94,11 @@ function onSubmit() {
|
||||
function handleRemove(idx) {
|
||||
list.value.splice(idx, 1)
|
||||
}
|
||||
|
||||
function handleChange(row) {
|
||||
row.link = `https://sscrm.ahduima.com/clue/get?cid=1001&aid=1001&res=${row.resource}`
|
||||
row.params = '参数详情'
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped></style>
|
||||
|
||||
@@ -30,27 +30,6 @@
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
<div v-if="form.isAuto">
|
||||
<!-- <el-form-item label="分配对象">
|
||||
<div>
|
||||
<el-checkbox
|
||||
v-model="checkUserAll"
|
||||
:indeterminate="userIndeterminate"
|
||||
@change="userCheckAllChange"
|
||||
>
|
||||
全选
|
||||
</el-checkbox>
|
||||
<el-checkbox-group v-model="form.users" @change="userCheckedChange">
|
||||
<el-checkbox
|
||||
v-for="(item, index) in userOptions"
|
||||
:key="index"
|
||||
:label="item.value"
|
||||
:value="item.value"
|
||||
>
|
||||
{{ item.label }}
|
||||
</el-checkbox>
|
||||
</el-checkbox-group>
|
||||
</div>
|
||||
</el-form-item> -->
|
||||
<el-form-item label="线索来源">
|
||||
<div>
|
||||
<el-checkbox
|
||||
@@ -73,32 +52,9 @@
|
||||
</div>
|
||||
</el-form-item>
|
||||
<el-form-item label="权重配置">
|
||||
<div>
|
||||
<el-radio-group v-model="form.isRandom">
|
||||
<el-radio :label="1">
|
||||
<Tooltip message="根据剩余的线索平均分配到未分配线索的所有人" />
|
||||
平均分配
|
||||
</el-radio>
|
||||
<el-radio :label="0"> 权重分配 </el-radio>
|
||||
</el-radio-group>
|
||||
<div v-if="form.isRandom == 0">
|
||||
<div v-for="(item, index) in intentionOptions" :key="index" class="flex mb-10px">
|
||||
<div class="mr-15px" style="width: 100px">{{ item.label }}</div>
|
||||
<el-input v-model="item.value" type="number" placeholder="请输入权重">
|
||||
<template #suffix> % </template>
|
||||
</el-input>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</el-form-item>
|
||||
<el-form-item label="分配时间">
|
||||
<el-time-picker
|
||||
v-model="form.sendTime"
|
||||
placeholder="任意时间点"
|
||||
format="HH:mm"
|
||||
value-format="HH:mm"
|
||||
:clearable="false"
|
||||
/>
|
||||
<el-input v-model="form.value" type="number" placeholder="请输入权重">
|
||||
<template #suffix> % </template>
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
</div>
|
||||
<el-form-item>
|
||||
@@ -128,25 +84,6 @@ const form = ref({
|
||||
})
|
||||
const rules = ref({})
|
||||
|
||||
// const checkUserAll = ref(false)
|
||||
// const userIndeterminate = ref(true)
|
||||
// const userOptions = ref([
|
||||
// { label: '张三', value: 1 },
|
||||
// { label: '李四', value: 2 },
|
||||
// { label: '王二', value: 3 }
|
||||
// ])
|
||||
|
||||
// function userCheckAllChange(val) {
|
||||
// form.value.users = val ? userOptions.value.map((it) => it.value) : []
|
||||
// userIndeterminate.value = false
|
||||
// }
|
||||
|
||||
// function userCheckedChange(val) {
|
||||
// const checkedCount = val.length
|
||||
// checkUserAll.value = checkedCount == userOptions.value.length
|
||||
// userIndeterminate.value = checkedCount > 0 && checkedCount < userOptions.value.length
|
||||
// }
|
||||
|
||||
function getUserList() {
|
||||
console.log('获取列表')
|
||||
}
|
||||
@@ -174,13 +111,6 @@ function resourceCheckedChange(val) {
|
||||
resourceIndeterminate.value = checkedCount > 0 && checkedCount < resourceOptions.value.length
|
||||
}
|
||||
|
||||
const intentionOptions = ref([
|
||||
{ label: '高意向', value: 20 },
|
||||
{ label: '中意向', value: 20 },
|
||||
{ label: '低意向', value: 20 },
|
||||
{ label: '未知意向', value: 40 }
|
||||
])
|
||||
|
||||
function selectUser(row) {
|
||||
console.log(row)
|
||||
}
|
||||
|
||||
377
src/views/SchoolManagement/Class/Comp/DialogClass.vue
Normal file
377
src/views/SchoolManagement/Class/Comp/DialogClass.vue
Normal file
@@ -0,0 +1,377 @@
|
||||
<template>
|
||||
<el-dialog :title="dialogTitle" v-model="dialogVisible" width="1000px" style="height: 90vh">
|
||||
<el-tabs v-model="currentTab">
|
||||
<el-tab-pane label="基础信息" name="base">
|
||||
<el-form
|
||||
ref="formRef"
|
||||
v-loading="formLoading"
|
||||
:model="formData"
|
||||
:rules="formRules"
|
||||
label-width="80px"
|
||||
>
|
||||
<el-row :gutter="20">
|
||||
<el-col :span="12" :offset="0">
|
||||
<el-form-item label="驾校">
|
||||
<el-input v-model="formData.schoolName" disabled />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12" :offset="0">
|
||||
<el-form-item label="场地">
|
||||
<el-input v-model="formData.placeName" disabled />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row :gutter="20">
|
||||
<el-col :span="12" :offset="0">
|
||||
<el-form-item label="班型名称" prop="typeName">
|
||||
<el-input v-model="formData.typeName" placeholder="请输入班型" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12" :offset="0">
|
||||
<el-form-item label="驾照类型" prop="licenseType">
|
||||
<el-select v-model="formData.licenseType" placeholder="选择驾照类型">
|
||||
<el-option
|
||||
v-for="item in licenseTypeOption"
|
||||
:key="item.value"
|
||||
:label="item.label"
|
||||
:value="item.value"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row :gutter="20">
|
||||
<el-col :span="12" :offset="0">
|
||||
<el-form-item label="排序" prop="orderNum">
|
||||
<el-input-number v-model="formData.orderNum" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12" :offset="0">
|
||||
<el-form-item label="状态" prop="currentPrice">
|
||||
<el-radio-group v-model="formData.status">
|
||||
<el-radio :label="1">启用</el-radio>
|
||||
<el-radio :label="0">停用</el-radio>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row :gutter="20">
|
||||
<el-form-item label="备注" prop="remark">
|
||||
<Editor v-model:modelValue="formData.remark" />
|
||||
</el-form-item>
|
||||
</el-row>
|
||||
</el-form>
|
||||
</el-tab-pane>
|
||||
<el-tab-pane label="报价信息" name="price">
|
||||
<el-button type="primary" @click="handleAddPrice" class="mb-10px">新增报价</el-button>
|
||||
<el-table :data="formData.priceList">
|
||||
<el-table-column width="160px">
|
||||
<template #header> <Tooltip message="市场价,给客户的报价" />指导价 </template>
|
||||
<template #default="{ row }">
|
||||
<el-input v-if="row.edit" v-model="row.markerPrice" type="number" :min="0" />
|
||||
<span v-else>{{ row.markerPrice }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column width="160px">
|
||||
<template #header> <Tooltip message="员工底价,用于核算毛利及提成" />底价 </template>
|
||||
<template #default="{ row }">
|
||||
<el-input v-if="row.edit" v-model="row.employeePrice" type="number" :min="0" />
|
||||
<span v-else>{{ row.employeePrice }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column width="160px">
|
||||
<template #header> <Tooltip message="公司采购价,用于计算公司利润" />成本价 </template>
|
||||
<template #default="{ row }">
|
||||
<el-input v-if="row.edit" v-model="row.costPrice" type="number" :min="0" />
|
||||
<span v-else>{{ row.costPrice }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="生效日期">
|
||||
<template #default="{ row }">
|
||||
<el-date-picker
|
||||
v-if="row.edit"
|
||||
v-model="row.startDate"
|
||||
type="date"
|
||||
placeholder="选择日期时间"
|
||||
/>
|
||||
<span v-else>{{ row.startDate }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="报价日期" width="180px" prop="createTime" />
|
||||
<el-table-column label="操作" width="80px">
|
||||
<template #default="{ row, $index }">
|
||||
<el-button
|
||||
type="danger"
|
||||
text
|
||||
style="padding: 0"
|
||||
@click="handleDeletePrice(row, $index)"
|
||||
>删除</el-button
|
||||
>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
</el-tab-pane>
|
||||
<el-tab-pane label="提成结算" name="comission">
|
||||
<el-button v-if="!comissionShow" type="primary" @click="handleAddComission">
|
||||
新增提成结算规则
|
||||
</el-button>
|
||||
<el-form
|
||||
v-if="comissionShow"
|
||||
:model="comissionForm"
|
||||
ref="FormComission"
|
||||
class="mt-10px"
|
||||
label-width="80px"
|
||||
inline
|
||||
>
|
||||
<el-row :gutter="20">
|
||||
<el-col :span="12" :offset="0">
|
||||
<el-form-item label="生效日期" prop="startDate">
|
||||
<el-date-picker
|
||||
v-model="comissionForm.startDate"
|
||||
type="date"
|
||||
placeholder="选择日期时间"
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12" :offset="0">
|
||||
<el-form-item label="结算方式">
|
||||
<el-radio-group v-model="comissionForm.type">
|
||||
<el-radio :label="1">
|
||||
<Tooltip message="可配置多级,命中某档位后,按照档位分级结算" />阶梯结算
|
||||
</el-radio>
|
||||
<el-radio :label="2">
|
||||
<Tooltip message="可配置多级,命中某档位后所有金额全部按照该档位结算" />常规结算
|
||||
</el-radio>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-button type="primary" class="mb-10px" plain @click="handleAddRules"
|
||||
>添加提成档位</el-button
|
||||
>
|
||||
<el-row :gutter="20" class="mb-10px">
|
||||
<el-col
|
||||
:span="24"
|
||||
:offset="0"
|
||||
class="flex"
|
||||
v-for="(item, index) in comissionForm.rules"
|
||||
:key="index"
|
||||
>
|
||||
<el-select v-model="item.type1" style="width: 100px">
|
||||
<el-option label="单笔" :value="1" />
|
||||
<el-option label="月总" :value="2" />
|
||||
</el-select>
|
||||
<el-select class="ml-5px" v-model="item.type2" style="width: 100px">
|
||||
<el-option label="成交额" :value="1" />
|
||||
<el-option label="毛利" :value="2" />
|
||||
</el-select>
|
||||
<span class="ml-5px">满</span>
|
||||
<el-input
|
||||
class="ml-5px"
|
||||
v-model="item.type3"
|
||||
placeholder="金额"
|
||||
type="number"
|
||||
:min="0"
|
||||
style="width: 100px"
|
||||
/>
|
||||
<span class="ml-5px">元,</span>
|
||||
<el-select class="ml-5px" v-model="item.type4" style="width: 120px">
|
||||
<el-option label="按比例" :value="1" />
|
||||
<el-option label="按固定金额" :value="2" />
|
||||
</el-select>
|
||||
<div v-if="item.type4 == 2" class="inline-flex items-center">
|
||||
<el-input
|
||||
class="ml-5px"
|
||||
v-model="item.type7"
|
||||
placeholder="金额"
|
||||
type="number"
|
||||
:min="0"
|
||||
style="width: 100px"
|
||||
/>
|
||||
<span class="ml-5px">元结算</span>
|
||||
</div>
|
||||
<div v-else class="inline-flex items-center">
|
||||
<span class="ml-5px">取</span>
|
||||
<el-select class="ml-5px" v-model="item.type5" style="width: 100px">
|
||||
<el-option label="按成交额" :value="1" />
|
||||
<el-option label="按底价" :value="2" />
|
||||
<el-option label="按毛利" :value="3" />
|
||||
</el-select>
|
||||
<span class="ml-5px">结算</span>
|
||||
<el-input
|
||||
class="ml-5px"
|
||||
v-model="item.type6"
|
||||
placeholder="比例"
|
||||
type="number"
|
||||
:min="1"
|
||||
style="width: 100px"
|
||||
>
|
||||
<template #suffix> % </template>
|
||||
</el-input>
|
||||
</div>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row :gutter="20" class="mb-10px">
|
||||
<el-col :span="24" :offset="0">
|
||||
<el-button type="primary" @click="sureAddComission">确认新增</el-button>
|
||||
<el-button @click="comissionShow = false">取消</el-button>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</el-form>
|
||||
<el-divider>历史结算规则</el-divider>
|
||||
<el-table :data="formData.comissionList" border>
|
||||
<el-table-column prop="startDate" label="生效时间" width="200px" />
|
||||
<el-table-column prop="typeName" label="结算方式" width="120px" />
|
||||
<el-table-column prop="ruleDesc" label="结算规则" />
|
||||
</el-table>
|
||||
</el-tab-pane>
|
||||
</el-tabs>
|
||||
<template #footer>
|
||||
<el-button :disabled="formLoading" type="primary" @click="submitForm">确 定</el-button>
|
||||
<el-button @click="dialogVisible = false">取 消</el-button>
|
||||
</template>
|
||||
</el-dialog>
|
||||
</template>
|
||||
<script name="DialogClass" setup>
|
||||
import { formatDate } from '@/utils/formatTime'
|
||||
const { t } = useI18n() // 国际化
|
||||
const message = useMessage() // 消息弹窗
|
||||
|
||||
const dialogVisible = ref(false) // 弹窗的是否展示
|
||||
const dialogTitle = ref('') // 弹窗的标题
|
||||
const formLoading = ref(false) // 表单的加载中:1)修改时的数据加载;2)提交的按钮禁用
|
||||
const formType = ref('') // 表单的类型:create - 新增;update - 修改
|
||||
const formData = ref({
|
||||
name: '',
|
||||
leader: '',
|
||||
phone: '',
|
||||
status: 1,
|
||||
remark: ''
|
||||
})
|
||||
const formRules = reactive({
|
||||
name: [{ required: true, message: '驾校名称不能为空', trigger: 'blur' }]
|
||||
})
|
||||
const formRef = ref() // 表单 Ref
|
||||
const currentTab = ref('base')
|
||||
const licenseTypeOption = ref([])
|
||||
|
||||
/** 打开弹窗 */
|
||||
const open = async (type, id) => {
|
||||
dialogVisible.value = true
|
||||
dialogTitle.value = type == 'create' ? '新增班型' : '修改班型'
|
||||
formType.value = type
|
||||
resetForm()
|
||||
// 修改时,设置数据
|
||||
if (id) {
|
||||
formLoading.value = true
|
||||
try {
|
||||
// formData.value = await UserApi.getUser(id)
|
||||
} finally {
|
||||
formLoading.value = false
|
||||
}
|
||||
}
|
||||
}
|
||||
defineExpose({ open }) // 提供 open 方法,用于打开弹窗
|
||||
|
||||
/** 提交表单 */
|
||||
const emit = defineEmits(['success']) // 定义 success 事件,用于操作成功后的回调
|
||||
const submitForm = async () => {
|
||||
// 校验表单
|
||||
if (!formRef.value) return
|
||||
const valid = await formRef.value.validate()
|
||||
if (!valid) return
|
||||
// 提交请求
|
||||
formLoading.value = true
|
||||
try {
|
||||
// const data = formData.value as unknown as UserApi.UserVO
|
||||
if (formType.value === 'create') {
|
||||
// await UserApi.createUser(data)
|
||||
message.success(t('common.createSuccess'))
|
||||
} else {
|
||||
// await UserApi.updateUser(data)
|
||||
message.success(t('common.updateSuccess'))
|
||||
}
|
||||
dialogVisible.value = false
|
||||
// 发送操作成功的事件
|
||||
emit('success')
|
||||
} finally {
|
||||
formLoading.value = false
|
||||
}
|
||||
}
|
||||
|
||||
/** 重置表单 */
|
||||
const resetForm = () => {
|
||||
formData.value = {
|
||||
name: '',
|
||||
leader: '',
|
||||
phone: '',
|
||||
status: 1,
|
||||
remark: '',
|
||||
priceList: [],
|
||||
comissionList: [
|
||||
{
|
||||
startDate: '2024-01-01',
|
||||
typeName: '阶梯结算',
|
||||
ruleDesc: '月总成交额满0元,按比例取成交额1%'
|
||||
}
|
||||
]
|
||||
}
|
||||
formRef.value?.resetFields()
|
||||
}
|
||||
|
||||
function handleAddPrice() {
|
||||
formData.value.priceList.push({
|
||||
edit: true,
|
||||
markerPrice: undefined,
|
||||
employeePrice: undefined,
|
||||
costPrice: undefined,
|
||||
startDate: undefined,
|
||||
createTime: '2024-05-12'
|
||||
})
|
||||
}
|
||||
|
||||
function handleDeletePrice(row, index) {
|
||||
if (row.edit) {
|
||||
formData.value.priceList.splice(index, 1)
|
||||
}
|
||||
message.success('删除成功')
|
||||
}
|
||||
|
||||
const comissionForm = ref({
|
||||
rules: []
|
||||
})
|
||||
const comissionShow = ref(false)
|
||||
|
||||
function handleAddComission() {
|
||||
comissionShow.value = true
|
||||
comissionForm.value = {
|
||||
startDate: formatDate(new Date(), 'YYYY-MM-DD'),
|
||||
type: 1,
|
||||
rules: [
|
||||
{
|
||||
type1: 1,
|
||||
type2: 1,
|
||||
type3: 0,
|
||||
type4: 1,
|
||||
type5: 1,
|
||||
type6: 10
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
function handleAddRules() {
|
||||
comissionForm.value.rules.push({
|
||||
type1: 1,
|
||||
type2: 1,
|
||||
type3: 0,
|
||||
type4: 1,
|
||||
type5: 1,
|
||||
type6: 1
|
||||
})
|
||||
}
|
||||
|
||||
function sureAddComission() {
|
||||
message.success('新增成功')
|
||||
}
|
||||
</script>
|
||||
@@ -47,50 +47,95 @@
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
|
||||
<el-table
|
||||
:data="tableList"
|
||||
v-loading="loading"
|
||||
border
|
||||
@selection-change="handleSelectionChange"
|
||||
>
|
||||
<el-table-column type="selection" width="50" />
|
||||
<el-table-column type="index" label="序号" width="60" />
|
||||
<el-table-column
|
||||
v-for="col in columns"
|
||||
:prop="col.props"
|
||||
:key="col.props"
|
||||
:label="col.label"
|
||||
:width="col.width"
|
||||
show-overflow-tooltip
|
||||
/>
|
||||
<el-table-column label="状态" width="80">
|
||||
<template #default="{ row }">
|
||||
<el-switch
|
||||
v-model="row.status"
|
||||
:active-value="1"
|
||||
:inactive-value="0"
|
||||
@change="handleChangeStatus(row)"
|
||||
<el-row :gutter="20">
|
||||
<el-col :span="6" :offset="0">
|
||||
<div class="head-container" style="max-height: 700px; overflow-y: auto">
|
||||
<el-tree
|
||||
ref="tree"
|
||||
:data="schoolOption.filter((item) => item.label.includes(searchForm.schoolName))"
|
||||
accordion
|
||||
node-key="id"
|
||||
:default-expanded-keys="selectNodes.map((item) => item.id)"
|
||||
@node-click="handleNodeClick"
|
||||
/>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="操作" width="200px">
|
||||
<template #default="{ row }">
|
||||
<el-button type="primary" text @click="handleOpenDialog('update', row)">修改</el-button>
|
||||
<el-button type="danger" text @click="handleRemove(row)">删除</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
<!-- 分页 -->
|
||||
<Pagination
|
||||
v-model:limit="searchForm.pageSize"
|
||||
v-model:page="searchForm.pageNum"
|
||||
:total="total"
|
||||
@pagination="getList"
|
||||
/>
|
||||
</div>
|
||||
</el-col>
|
||||
<el-col :span="18" :offset="0">
|
||||
<el-table
|
||||
:data="tableList"
|
||||
v-loading="loading"
|
||||
border
|
||||
@selection-change="handleSelectionChange"
|
||||
>
|
||||
<el-table-column type="selection" width="50" />
|
||||
<el-table-column type="index" label="序号" width="60" />
|
||||
<el-table-column
|
||||
v-for="col in columns"
|
||||
:prop="col.props"
|
||||
:key="col.props"
|
||||
:label="col.label"
|
||||
:width="col.width"
|
||||
show-overflow-tooltip
|
||||
/>
|
||||
<el-table-column label="状态" width="80">
|
||||
<template #default="{ row }">
|
||||
<el-switch
|
||||
v-model="row.status"
|
||||
:active-value="1"
|
||||
:inactive-value="0"
|
||||
@change="handleChangeStatus(row)"
|
||||
/>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="操作" width="120px">
|
||||
<template #default="{ row }">
|
||||
<el-button
|
||||
type="primary"
|
||||
style="padding: 0"
|
||||
text
|
||||
@click="handleOpenDialog('update', row)"
|
||||
>
|
||||
修改
|
||||
</el-button>
|
||||
<el-button type="danger" style="padding: 0" text @click="handleRemove(row)">
|
||||
删除
|
||||
</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
<!-- 分页 -->
|
||||
<Pagination
|
||||
v-model:limit="searchForm.pageSize"
|
||||
v-model:page="searchForm.pageNum"
|
||||
:total="total"
|
||||
@pagination="getList"
|
||||
/>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-dialog title="批量修改" v-model="batchStatusDialogShow" width="400px">
|
||||
<el-form :model="statusForm" ref="statusRef" label-width="80px">
|
||||
<el-form-item label="选择状态" prop="status">
|
||||
<el-radio-group v-model="statusForm.status">
|
||||
<el-radio :label="1"> 启用 </el-radio>
|
||||
<el-radio :label="2"> 禁用 </el-radio>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
|
||||
<template #footer>
|
||||
<span>
|
||||
<el-button @click="batchStatusDialogShow = false">取 消</el-button>
|
||||
<el-button type="primary" @click="handleSureStatus">确 认</el-button>
|
||||
</span>
|
||||
</template>
|
||||
</el-dialog>
|
||||
|
||||
<DialogClass ref="ClassDialog" @success="getList" />
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script setup name="Class">
|
||||
import DialogClass from './Comp/DialogClass.vue'
|
||||
const message = useMessage() // 消息弹窗
|
||||
|
||||
const loading = ref(false)
|
||||
@@ -100,7 +145,7 @@ const tableList = ref([])
|
||||
// const schoolDialog = ref()
|
||||
|
||||
const searchForm = ref({
|
||||
schoolName: undefined,
|
||||
schoolName: '',
|
||||
placeName: undefined,
|
||||
className: undefined,
|
||||
cartypeId: undefined,
|
||||
@@ -109,6 +154,377 @@ const searchForm = ref({
|
||||
})
|
||||
|
||||
const cartypeOptions = ref([])
|
||||
const schoolOption = ref([])
|
||||
const selectNodes = ref([])
|
||||
|
||||
function getSchoolList() {
|
||||
schoolOption.value = [
|
||||
{
|
||||
id: 179,
|
||||
label: '安审驾校',
|
||||
level: 1,
|
||||
children: [{ id: 308, label: '(皖西)安审驾校已备案', level: 2 }]
|
||||
},
|
||||
{
|
||||
id: 141,
|
||||
label: '通顺驾校',
|
||||
level: 1,
|
||||
children: [
|
||||
{ id: 173, label: '(皖北)通顺驾校信地报名点', level: 2 },
|
||||
{ id: 320, label: '(皖北)通顺驾校包河花园训练基地《备案》', level: 2 },
|
||||
{ id: 351, label: '(皖西)通顺驾校总校(D)已备案', level: 2 },
|
||||
{ id: 359, label: '(皖北)通顺驾校龙岗训练基地《备案》', level: 2 }
|
||||
]
|
||||
},
|
||||
{
|
||||
id: 178,
|
||||
label: '新宇驾校',
|
||||
level: 1,
|
||||
children: [{ id: 243, label: '(皖北)新宇驾校磨店校区《备案》', level: 2 }]
|
||||
},
|
||||
{
|
||||
id: 176,
|
||||
label: '鑫缘驾校',
|
||||
level: 1,
|
||||
children: [{ id: 385, label: '(皖北)鑫缘驾校南二环校区', level: 2 }]
|
||||
},
|
||||
{ id: 194, label: '环宇驾校', level: 1, children: [] },
|
||||
{
|
||||
id: 193,
|
||||
label: '舒城同兴驾校',
|
||||
level: 1,
|
||||
children: [
|
||||
{ id: 414, label: '舒城同兴驾校南港训练场', level: 2 },
|
||||
{ id: 415, label: '同兴驾校杭埠分校训练场', level: 2 },
|
||||
{ id: 416, label: '同兴驾校城区训练场', level: 2 }
|
||||
]
|
||||
},
|
||||
{ id: 195, label: '新快捷驾校', level: 1, children: [] },
|
||||
{
|
||||
id: 187,
|
||||
label: '鑫金陵驾校',
|
||||
level: 1,
|
||||
children: [{ id: 405, label: '(皖南)鑫金陵建大校区', level: 2 }]
|
||||
},
|
||||
{ id: 186, label: '途安驾校', level: 1, children: [] },
|
||||
{ id: 163, label: '金灵驾校', level: 1, children: [] },
|
||||
{ id: 185, label: '金湖驾校', level: 1, children: [] },
|
||||
{
|
||||
id: 172,
|
||||
label: '精越驾校',
|
||||
level: 1,
|
||||
children: [
|
||||
{ id: 111, label: '(皖北)精越驾校恒大校区 《夜训》《备案》', level: 2 },
|
||||
{ id: 386, label: '(皖北)精越驾校岗集校区已备案', level: 2 }
|
||||
]
|
||||
},
|
||||
{
|
||||
id: 184,
|
||||
label: '宏昌驾校',
|
||||
level: 1,
|
||||
children: [{ id: 394, label: '(皖西)宏昌驾校海棠校区已备案', level: 2 }]
|
||||
},
|
||||
{
|
||||
id: 183,
|
||||
label: '启点驾校',
|
||||
level: 1,
|
||||
children: [
|
||||
{ id: 390, label: '(皖南)启点驾校(高新校区)', level: 2 },
|
||||
{ id: 391, label: '(皖南)启点驾校(蜀山校区)', level: 2 }
|
||||
]
|
||||
},
|
||||
{
|
||||
id: 182,
|
||||
label: '泓运驾校',
|
||||
level: 1,
|
||||
children: [
|
||||
{ id: 401, label: '(皖南)泓运驾校临湖校区', level: 2 },
|
||||
{ id: 402, label: '(皖南)泓运始信路总校', level: 2 }
|
||||
]
|
||||
},
|
||||
{
|
||||
id: 171,
|
||||
label: '三联驾校',
|
||||
level: 1,
|
||||
children: [
|
||||
{ id: 136, label: '(皖西)三联泰科驾校十里庙校区已备案', level: 2 },
|
||||
{ id: 380, label: '(皖南)三联泰科经开校区', level: 2 }
|
||||
]
|
||||
},
|
||||
{
|
||||
id: 181,
|
||||
label: '金冈山驾校',
|
||||
level: 1,
|
||||
children: [{ id: 161, label: '(皖北)金冈山驾校宁国路训练场《备案》', level: 2 }]
|
||||
},
|
||||
{ id: 167, label: '菜鸟学车', level: 1, children: [{ id: 218, label: '众顺驾校', level: 2 }] },
|
||||
{ id: 101, label: '金马驾校', level: 1, children: [] },
|
||||
{
|
||||
id: 161,
|
||||
label: '瑞星驾校',
|
||||
level: 1,
|
||||
children: [{ id: 221, label: '(皖西)瑞星驾校花峰路校区已备案', level: 2 }]
|
||||
},
|
||||
{
|
||||
id: 165,
|
||||
label: '久安驾校',
|
||||
level: 1,
|
||||
children: [{ id: 325, label: '(皖北)久安驾校环湖路训练基地 《备案》', level: 2 }]
|
||||
},
|
||||
{
|
||||
id: 146,
|
||||
label: '金新驾校',
|
||||
level: 1,
|
||||
children: [
|
||||
{ id: 112, label: '(皖北)金新驾校(悠然)京商报名点', level: 2 },
|
||||
{ id: 172, label: '(皖北)金新驾校天水路校区D《备案》', level: 2 },
|
||||
{ id: 229, label: '(皖北)金新驾校磨店分校《备案》', level: 2 },
|
||||
{ id: 232, label: '(皖北)金新驾校新蚌埠路训练场D,B2《备案》', level: 2 },
|
||||
{ id: 233, label: '(皖北)金新驾校澥河路校区《备案》', level: 2 },
|
||||
{ id: 387, label: '(皖北)金新驾校东二环校区《备案》', level: 2 },
|
||||
{ id: 397, label: '(皖北)金新驾校北京路校区《备案》', level: 2 }
|
||||
]
|
||||
},
|
||||
{
|
||||
id: 115,
|
||||
label: '畅通驾校',
|
||||
level: 1,
|
||||
children: [{ id: 350, label: '(皖西)畅通临泉路', level: 2 }]
|
||||
},
|
||||
{ id: 117, label: '一级合伙教练场地', level: 1, children: [] },
|
||||
{
|
||||
id: 125,
|
||||
label: '金武联驾校',
|
||||
level: 1,
|
||||
children: [
|
||||
{ id: 163, label: '(皖南)金武联驾校柳树塘校区(已备案)', level: 2 },
|
||||
{ id: 190, label: '(皖北)金武联驾校大店报名点(B2 D)', level: 2 },
|
||||
{
|
||||
id: 222,
|
||||
label: '(皖北)金武联总校训练场(客货运网约车出租车资格证)《备案》',
|
||||
level: 2
|
||||
},
|
||||
{ id: 248, label: '(皖西)金武联驾校四里河校区已备案', level: 2 },
|
||||
{ id: 291, label: '(皖南)金冈山李河湾校区', level: 2 },
|
||||
{ id: 301, label: '(皖北)金武联裕溪路训练场《备案》', level: 2 },
|
||||
{ id: 315, label: '(皖北)金新。金武联驾校(杨岗报名大厅)(D)B2', level: 2 },
|
||||
{ id: 346, label: '(皖南)金武联高速时代广场训练基地', level: 2 },
|
||||
{ id: 378, label: '(皖北)金武联大店训练场《备案》', level: 2 }
|
||||
]
|
||||
},
|
||||
{
|
||||
id: 126,
|
||||
label: '巢湖顺达驾校',
|
||||
level: 1,
|
||||
children: [
|
||||
{ id: 194, label: '顺达驾校半汤分校', level: 2 },
|
||||
{ id: 265, label: '顺达驾校裕溪路训练基地', level: 2 }
|
||||
]
|
||||
},
|
||||
{ id: 128, label: '悠然驾校', level: 1, children: [] },
|
||||
{
|
||||
id: 140,
|
||||
label: '徽安驾校',
|
||||
level: 1,
|
||||
children: [{ id: 162, label: '(皖南)徽安驾校科技训练基地', level: 2 }]
|
||||
},
|
||||
{
|
||||
id: 142,
|
||||
label: '新安驾校',
|
||||
level: 1,
|
||||
children: [
|
||||
{ id: 263, label: '(皖南)新安驾校(已备案)', level: 2 },
|
||||
{ id: 393, label: '(皖南)新安黄山路校区', level: 2 }
|
||||
]
|
||||
},
|
||||
{
|
||||
id: 144,
|
||||
label: '万锦驾校',
|
||||
level: 1,
|
||||
children: [
|
||||
{ id: 258, label: '(皖北)万锦驾校磨店《备案》', level: 2 },
|
||||
{ id: 327, label: '(皖南)万锦驾校冬梅路校区(已备案)', level: 2 }
|
||||
]
|
||||
},
|
||||
{ id: 123, label: '康庄驾校', level: 1, children: [] },
|
||||
{
|
||||
id: 147,
|
||||
label: '晨泰驾校',
|
||||
level: 1,
|
||||
children: [{ id: 245, label: '(皖北)晨泰驾校金梅路校区《备案》', level: 2 }]
|
||||
},
|
||||
{ id: 158, label: '金岗山驾校(摩托车)', level: 1, children: [] },
|
||||
{ id: 160, label: '陪练陪驾', level: 1, children: [] },
|
||||
{ id: 112, label: '浩宇驾校', level: 1, children: [] },
|
||||
{
|
||||
id: 139,
|
||||
label: '合顺驾校',
|
||||
level: 1,
|
||||
children: [{ id: 332, label: '(皖西)合顺驾校临泉路校区(D)已备案', level: 2 }]
|
||||
},
|
||||
{
|
||||
id: 152,
|
||||
label: '新桥驾校',
|
||||
level: 1,
|
||||
children: [{ id: 389, label: '(皖北)新桥驾校东七训练场《备案》', level: 2 }]
|
||||
},
|
||||
{
|
||||
id: 130,
|
||||
label: '金路驾校',
|
||||
level: 1,
|
||||
children: [{ id: 208, label: '(皖南)金路名邦报名训练基地', level: 2 }]
|
||||
},
|
||||
{ id: 133, label: '众安驾校', level: 1, children: [] },
|
||||
{
|
||||
id: 116,
|
||||
label: '顺通驾校',
|
||||
level: 1,
|
||||
children: [{ id: 410, label: '顺通驾校总校', level: 2 }]
|
||||
},
|
||||
{
|
||||
id: 148,
|
||||
label: '国安驾校',
|
||||
level: 1,
|
||||
children: [
|
||||
{ id: 400, label: '(皖南)国安包公路校区', level: 2 },
|
||||
{ id: 403, label: '(皖南)国安三河校区', level: 2 }
|
||||
]
|
||||
},
|
||||
{ id: 135, label: '安申驾校', level: 1, children: [] },
|
||||
{ id: 110, label: '九号驾校', level: 1, children: [{ id: 349, label: '九号驾校', level: 2 }] },
|
||||
{ id: 129, label: '新地驾校', level: 1, children: [] },
|
||||
{
|
||||
id: 113,
|
||||
label: '世纪驾校',
|
||||
level: 1,
|
||||
children: [
|
||||
{ id: 146, label: '(皖西)世纪驾校晨光训练场已备案', level: 2 },
|
||||
{ id: 209, label: '(皖西)世纪驾校桂王路六中训练基地已备案', level: 2 },
|
||||
{ id: 223, label: '(皖西)世纪驾校撮镇义和训练场已备案', level: 2 },
|
||||
{ id: 246, label: '(皖西)世纪驾校包公像训练场已备案', level: 2 }
|
||||
]
|
||||
},
|
||||
{ id: 103, label: '起航驾校', level: 1, children: [] },
|
||||
{
|
||||
id: 137,
|
||||
label: '庐州驾校',
|
||||
level: 1,
|
||||
children: [{ id: 155, label: '(皖西)庐州驾校北五里井校区已备案', level: 2 }]
|
||||
},
|
||||
{
|
||||
id: 143,
|
||||
label: '长安驾校',
|
||||
level: 1,
|
||||
children: [
|
||||
{ id: 101, label: '(皖西)长安驾校蜀山校区已备案', level: 2 },
|
||||
{ id: 104, label: '(皖北)长安驾校明光路训练基地《备案》', level: 2 },
|
||||
{ id: 199, label: '(皖北)长安驾校龙岗报名点', level: 2 },
|
||||
{ id: 204, label: '(皖西)长安驾校临泉路总校已备案', level: 2 },
|
||||
{ id: 259, label: '(皖南)长安经开校区(已备案)', level: 2 },
|
||||
{ id: 266, label: '长安驾校名人馆训练基地(C1 C2 已备案)', level: 2 },
|
||||
{ id: 290, label: '(皖北)长安驾校高铁南站报名训练场《备案》', level: 2 },
|
||||
{ id: 300, label: '(皖北)长安驾校龙岗训练场《备案》', level: 2 },
|
||||
{ id: 316, label: '长安驾校万达城报名点(C2 早晚)', level: 2 },
|
||||
{ id: 396, label: '(皖南)长安南七分校', level: 2 }
|
||||
]
|
||||
},
|
||||
{
|
||||
id: 153,
|
||||
label: '肥东金荣驾校',
|
||||
level: 1,
|
||||
children: [
|
||||
{ id: 107, label: '金荣驾校', level: 2 },
|
||||
{ id: 181, label: '金荣驾校店埠镇训练基地', level: 2 },
|
||||
{ id: 358, label: '(皖南)金荣驾校报名点', level: 2 }
|
||||
]
|
||||
},
|
||||
{ id: 170, label: '和安驾校', level: 1, children: [] },
|
||||
{
|
||||
id: 119,
|
||||
label: '平安驾校',
|
||||
level: 1,
|
||||
children: [
|
||||
{ id: 250, label: '平安驾校总部报名点', level: 2 },
|
||||
{ id: 267, label: '巢湖市平安驾校夏阁训练场', level: 2 },
|
||||
{ id: 312, label: '巢湖平安驾校市区训练场', level: 2 },
|
||||
{ id: 353, label: '巢湖市平安驾校巢湖学院训练场', level: 2 }
|
||||
]
|
||||
},
|
||||
{ id: 168, label: '心诚驾校', level: 1, children: [] },
|
||||
{
|
||||
id: 132,
|
||||
label: '新亚驾校',
|
||||
level: 1,
|
||||
children: [{ id: 164, label: '新亚驾校汽车站训练基地C2', level: 2 }]
|
||||
},
|
||||
{
|
||||
id: 138,
|
||||
label: '五星驾校',
|
||||
level: 1,
|
||||
children: [
|
||||
{ id: 134, label: '(皖西)五星驾岗集校训练场', level: 2 },
|
||||
{ id: 192, label: '(皖西)五星驾校岗集报名点', level: 2 },
|
||||
{ id: 269, label: '(皖南)五星驾校总校合作化路训练基地(D已备案)', level: 2 },
|
||||
{ id: 280, label: '(皖南)五星华府训练基地 ', level: 2 },
|
||||
{ id: 388, label: '(皖西)五星驾校黄山路校区', level: 2 },
|
||||
{ id: 399, label: '(皖南)五星明珠校区', level: 2 }
|
||||
]
|
||||
},
|
||||
{
|
||||
id: 121,
|
||||
label: '永泰驾校',
|
||||
level: 1,
|
||||
children: [
|
||||
{ id: 234, label: '(皖北)永泰驾校蒙河路校区《备案》', level: 2 },
|
||||
{ id: 314, label: '(皖北)永泰驾校下塘校区《备案》', level: 2 },
|
||||
{ id: 352, label: '(皖北)永泰驾校魏武路校区《备案》', level: 2 }
|
||||
]
|
||||
},
|
||||
{
|
||||
id: 111,
|
||||
label: '宏运驾校',
|
||||
level: 1,
|
||||
children: [
|
||||
{ id: 189, label: '(皖西)宏运驾校界首路校区已备案', level: 2 },
|
||||
{ id: 404, label: '(皖北)宏运红旗建材校区《备案》', level: 2 }
|
||||
]
|
||||
},
|
||||
{ id: 105, label: '众顺驾校', level: 1, children: [] },
|
||||
{ id: 114, label: '东方驾校', level: 1, children: [] },
|
||||
{ id: 104, label: '信达驾校', level: 1, children: [] },
|
||||
{
|
||||
id: 109,
|
||||
label: '摩托车培训驾校',
|
||||
level: 1,
|
||||
children: [
|
||||
{ id: 374, label: '(抖音)摩托车报名登记用', level: 2 },
|
||||
{ id: 375, label: '非抖音学员摩托车报名登记用', level: 2 },
|
||||
{ id: 413, label: '领航机车(运城滨湖)训练基地', level: 2 }
|
||||
]
|
||||
},
|
||||
{
|
||||
id: 145,
|
||||
label: '运程驾校',
|
||||
level: 1,
|
||||
children: [
|
||||
{ id: 139, label: '(皖南)运程蜀山校区', level: 2 },
|
||||
{ id: 150, label: '(皖北)运程驾校北京路校区《备案》', level: 2 }
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
function handleNodeClick(data, node) {
|
||||
if (data.level === 1) {
|
||||
selectNodes.value = [{ id: data.id, name: data.label }]
|
||||
} else {
|
||||
selectNodes.value = [
|
||||
{ id: node.parent.data.id, name: node.parent.data.label },
|
||||
{ id: data.id, name: data.label }
|
||||
]
|
||||
}
|
||||
handleQuery()
|
||||
}
|
||||
|
||||
const columns = [
|
||||
{ props: 'schoolName', label: '驾校', width: '100px' },
|
||||
@@ -138,7 +554,7 @@ function handleOpenDialog(type, row = null) {
|
||||
|
||||
function handleReset() {
|
||||
searchForm.value = {
|
||||
schoolName: undefined,
|
||||
schoolName: '',
|
||||
placeName: undefined,
|
||||
className: undefined,
|
||||
cartypeId: undefined,
|
||||
@@ -151,6 +567,7 @@ function handleReset() {
|
||||
async function handleBatchDelete(arr = []) {
|
||||
if (!arr.length || !selectRows.value.length) {
|
||||
message.info('请选择表格行!')
|
||||
return
|
||||
}
|
||||
try {
|
||||
console.log(arr)
|
||||
@@ -186,11 +603,26 @@ async function handleChangeStatus(row) {
|
||||
} catch {}
|
||||
}
|
||||
|
||||
const batchStatusDialogShow = ref(false)
|
||||
const statusForm = ref({ status: 1 })
|
||||
|
||||
function handleBatchStatus() {
|
||||
if (!selectRows.value.length) {
|
||||
message.info('请选择表格行!')
|
||||
return
|
||||
}
|
||||
batchStatusDialogShow.value = true
|
||||
}
|
||||
|
||||
function handleSureStatus() {
|
||||
console.log(statusForm.value)
|
||||
message.success('保存成功')
|
||||
batchStatusDialogShow.value = false
|
||||
}
|
||||
|
||||
onMounted(() => {
|
||||
getSchoolList()
|
||||
})
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped></style>
|
||||
|
||||
Reference in New Issue
Block a user