|
@@ -19,13 +19,14 @@ import { cloneDeep } from "lodash-es"
|
|
|
const loading = ref(false)
|
|
const loading = ref(false)
|
|
|
const { paginationData, handleCurrentChange, handleSizeChange } = usePagination()
|
|
const { paginationData, handleCurrentChange, handleSizeChange } = usePagination()
|
|
|
|
|
|
|
|
|
|
+const allData = ref([])
|
|
|
|
|
+
|
|
|
//#region 增
|
|
//#region 增
|
|
|
const DEFAULT_FORM_DATA = {
|
|
const DEFAULT_FORM_DATA = {
|
|
|
id: undefined,
|
|
id: undefined,
|
|
|
name: undefined,
|
|
name: undefined,
|
|
|
categoryId: undefined,
|
|
categoryId: undefined,
|
|
|
categoryName: undefined,
|
|
categoryName: undefined,
|
|
|
- number: 6,
|
|
|
|
|
description: undefined,
|
|
description: undefined,
|
|
|
contact: undefined,
|
|
contact: undefined,
|
|
|
contacts: undefined,
|
|
contacts: undefined,
|
|
@@ -47,35 +48,34 @@ const formData = ref(cloneDeep(DEFAULT_FORM_DATA))
|
|
|
const formRules = {
|
|
const formRules = {
|
|
|
name: [{ required: true, trigger: "blur", message: "请输入组织名称" }],
|
|
name: [{ required: true, trigger: "blur", message: "请输入组织名称" }],
|
|
|
categoryId: [{ required: true, trigger: "blur", message: "请选择组织分类" }],
|
|
categoryId: [{ required: true, trigger: "blur", message: "请选择组织分类" }],
|
|
|
- number: [{ required: true, trigger: "blur", message: "请设置人数" }],
|
|
|
|
|
admin: [{ required: true, trigger: "blur", message: "请选择管理员" }],
|
|
admin: [{ required: true, trigger: "blur", message: "请选择管理员" }],
|
|
|
- admins: [{ required: true, trigger: "blur", message: "请选择管理员" }],
|
|
|
|
|
- description: [{ required: true, trigger: "blur", message: "请输入描述" }],
|
|
|
|
|
- contact: [{ required: true, trigger: "blur", message: "请输入联系人" }],
|
|
|
|
|
- phone: [
|
|
|
|
|
- { required: true, trigger: "blur", message: "请输入联系方式" },
|
|
|
|
|
- {
|
|
|
|
|
- pattern: /^(?:\+86)?1[3-9]\d{9}|(?:\+86)?\d{3,4}-?\d{7,8}$/,
|
|
|
|
|
- trigger: "blur",
|
|
|
|
|
- message: "请输入有效的手机号或座机号码"
|
|
|
|
|
- }
|
|
|
|
|
- ],
|
|
|
|
|
- email: [
|
|
|
|
|
- { required: false, trigger: "blur" }, // 不强制要求填写
|
|
|
|
|
- {
|
|
|
|
|
- pattern: /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/,
|
|
|
|
|
- trigger: "blur",
|
|
|
|
|
- message: "请输入有效的邮箱地址"
|
|
|
|
|
- }
|
|
|
|
|
- ],
|
|
|
|
|
- address: [
|
|
|
|
|
- { required: false, trigger: "blur" }, // 不是必填项
|
|
|
|
|
- {
|
|
|
|
|
- pattern: /^[\u4e00-\u9fa5a-zA-Z0-9\s,-.]+$/, // 基本地址模式
|
|
|
|
|
- trigger: "blur",
|
|
|
|
|
- message: "请输入有效的地址" // 无效地址时的提示信息
|
|
|
|
|
- }
|
|
|
|
|
- ]
|
|
|
|
|
|
|
+ admins: [{ required: true, trigger: "blur", message: "请选择管理员" }]
|
|
|
|
|
+ // description: [{ required: true, trigger: "blur", message: "请输入描述" }],
|
|
|
|
|
+ // contact: [{ required: true, trigger: "blur", message: "请输入联系人" }],
|
|
|
|
|
+ // phone: [
|
|
|
|
|
+ // { required: true, trigger: "blur", message: "请输入联系方式" },
|
|
|
|
|
+ // {
|
|
|
|
|
+ // pattern: /^(?:\+86)?1[3-9]\d{9}|(?:\+86)?\d{3,4}-?\d{7,8}$/,
|
|
|
|
|
+ // trigger: "blur",
|
|
|
|
|
+ // message: "请输入有效的手机号或座机号码"
|
|
|
|
|
+ // }
|
|
|
|
|
+ // ],
|
|
|
|
|
+ // email: [
|
|
|
|
|
+ // { required: false, trigger: "blur" }, // 不强制要求填写
|
|
|
|
|
+ // {
|
|
|
|
|
+ // pattern: /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/,
|
|
|
|
|
+ // trigger: "blur",
|
|
|
|
|
+ // message: "请输入有效的邮箱地址"
|
|
|
|
|
+ // }
|
|
|
|
|
+ // ],
|
|
|
|
|
+ // address: [
|
|
|
|
|
+ // { required: false, trigger: "blur" }, // 不是必填项
|
|
|
|
|
+ // {
|
|
|
|
|
+ // pattern: /^[\u4e00-\u9fa5a-zA-Z0-9\s,-.]+$/, // 基本地址模式
|
|
|
|
|
+ // trigger: "blur",
|
|
|
|
|
+ // message: "请输入有效的地址" // 无效地址时的提示信息
|
|
|
|
|
+ // }
|
|
|
|
|
+ // ]
|
|
|
}
|
|
}
|
|
|
/**
|
|
/**
|
|
|
* 转化数据
|
|
* 转化数据
|
|
@@ -96,6 +96,19 @@ const handleCreateOrUpdate = () => {
|
|
|
formRef.value?.validate((valid, fields) => {
|
|
formRef.value?.validate((valid, fields) => {
|
|
|
if (!valid) return console.error("表单校验不通过", fields)
|
|
if (!valid) return console.error("表单校验不通过", fields)
|
|
|
loading.value = true
|
|
loading.value = true
|
|
|
|
|
+
|
|
|
|
|
+ // 处理参数
|
|
|
|
|
+ const newArr = []
|
|
|
|
|
+ allData.value.forEach((_v, index_v) => {
|
|
|
|
|
+ formData.value.admin.forEach((_i, index_i) => {
|
|
|
|
|
+ if (allData.value[index_v].id === formData.value.admin[index_i]) {
|
|
|
|
|
+ newArr.push(allData.value[index_v])
|
|
|
|
|
+ // console.log(newArr)
|
|
|
|
|
+ }
|
|
|
|
|
+ })
|
|
|
|
|
+ })
|
|
|
|
|
+ formData.value.admins = newArr
|
|
|
|
|
+
|
|
|
const api = formData.value.id === undefined ? insertClubDataApi : updateClubDataApi
|
|
const api = formData.value.id === undefined ? insertClubDataApi : updateClubDataApi
|
|
|
api(formData.value)
|
|
api(formData.value)
|
|
|
.then(() => {
|
|
.then(() => {
|
|
@@ -165,20 +178,27 @@ const handleUpdate = (row) => {
|
|
|
// 默认勾选
|
|
// 默认勾选
|
|
|
checkUserList.value = row.admins.map((item) => item.id)
|
|
checkUserList.value = row.admins.map((item) => item.id)
|
|
|
}
|
|
}
|
|
|
|
|
+
|
|
|
const handleTop = (row) => {
|
|
const handleTop = (row) => {
|
|
|
- loading.value = true
|
|
|
|
|
- clubTopupApi({
|
|
|
|
|
- id: row.id,
|
|
|
|
|
- isTop: 1
|
|
|
|
|
- })
|
|
|
|
|
- .then(() => {
|
|
|
|
|
- ElMessage.success("置顶成功")
|
|
|
|
|
- getTableData()
|
|
|
|
|
- })
|
|
|
|
|
- .catch(() => ({}))
|
|
|
|
|
- .finally(() => {
|
|
|
|
|
- loading.value = false
|
|
|
|
|
|
|
+ ElMessageBox.confirm("确认置顶?", "提示", {
|
|
|
|
|
+ confirmButtonText: "确定",
|
|
|
|
|
+ cancelButtonText: "取消",
|
|
|
|
|
+ type: "warning"
|
|
|
|
|
+ }).then(() => {
|
|
|
|
|
+ loading.value = true
|
|
|
|
|
+ clubTopupApi({
|
|
|
|
|
+ id: row.id,
|
|
|
|
|
+ isTop: 1
|
|
|
})
|
|
})
|
|
|
|
|
+ .then(() => {
|
|
|
|
|
+ ElMessage.success("置顶成功")
|
|
|
|
|
+ getTableData()
|
|
|
|
|
+ })
|
|
|
|
|
+ .catch(() => ({}))
|
|
|
|
|
+ .finally(() => {
|
|
|
|
|
+ loading.value = false
|
|
|
|
|
+ })
|
|
|
|
|
+ })
|
|
|
}
|
|
}
|
|
|
//#endregion
|
|
//#endregion
|
|
|
|
|
|
|
@@ -320,6 +340,17 @@ const handleNodeClick = (e) => {
|
|
|
cardNumber: item.cardNumber
|
|
cardNumber: item.cardNumber
|
|
|
}))
|
|
}))
|
|
|
userData.value = transformData(data.list)
|
|
userData.value = transformData(data.list)
|
|
|
|
|
+
|
|
|
|
|
+ // 数组去重
|
|
|
|
|
+ if (allData.value.length) {
|
|
|
|
|
+ const flag = allData.value.some((item) => item.id == formData.value.admins[0].id)
|
|
|
|
|
+
|
|
|
|
|
+ if (!flag) {
|
|
|
|
|
+ allData.value.push(formData.value.admins[0])
|
|
|
|
|
+ }
|
|
|
|
|
+ } else {
|
|
|
|
|
+ allData.value.push(formData.value.admins[0])
|
|
|
|
|
+ }
|
|
|
})
|
|
})
|
|
|
.catch(() => {
|
|
.catch(() => {
|
|
|
userData.value = []
|
|
userData.value = []
|
|
@@ -386,17 +417,18 @@ onBeforeMount(() => {
|
|
|
<el-table-column prop="name" label="组织名称" align="center" />
|
|
<el-table-column prop="name" label="组织名称" align="center" />
|
|
|
<el-table-column prop="categoryName" label="所属分类" align="center" />
|
|
<el-table-column prop="categoryName" label="所属分类" align="center" />
|
|
|
<el-table-column prop="number" label="人数" align="center" />
|
|
<el-table-column prop="number" label="人数" align="center" />
|
|
|
- <el-table-column prop="admins" label="管理员" align="center">
|
|
|
|
|
|
|
+ <el-table-column label="管理员" align="center">
|
|
|
<template v-slot="scope">
|
|
<template v-slot="scope">
|
|
|
- <el-text v-for="admin in scope.row.admins" :key="admin.id" type="primary">{{ admin.name }}</el-text>
|
|
|
|
|
|
|
+ <el-text v-for="item in scope.row.admins" :key="item.id" type="primary">{{ item.name }} </el-text>
|
|
|
</template>
|
|
</template>
|
|
|
</el-table-column>
|
|
</el-table-column>
|
|
|
<el-table-column prop="createUserName" label="创建人" align="center" />
|
|
<el-table-column prop="createUserName" label="创建人" align="center" />
|
|
|
<el-table-column prop="createTime" label="创建时间" align="center" />
|
|
<el-table-column prop="createTime" label="创建时间" align="center" />
|
|
|
<el-table-column fixed="right" label="操作" width="200" align="center">
|
|
<el-table-column fixed="right" label="操作" width="200" align="center">
|
|
|
<template #default="scope">
|
|
<template #default="scope">
|
|
|
|
|
+ <el-link v-if="scope.row.isTop == 2" type="warning" @click="handleTop(scope.row)">置顶组织</el-link>
|
|
|
|
|
+ <el-link v-else type="warning">已置顶</el-link>
|
|
|
<el-link type="primary" @click="handleUpdate(scope.row)">编辑</el-link>
|
|
<el-link type="primary" @click="handleUpdate(scope.row)">编辑</el-link>
|
|
|
- <el-link type="warning" @click="handleTop(scope.row)">置顶组织</el-link>
|
|
|
|
|
<el-link type="danger" @click="handleDelete(scope.row)">删除</el-link>
|
|
<el-link type="danger" @click="handleDelete(scope.row)">删除</el-link>
|
|
|
</template>
|
|
</template>
|
|
|
</el-table-column>
|
|
</el-table-column>
|
|
@@ -447,9 +479,6 @@ onBeforeMount(() => {
|
|
|
</el-select>
|
|
</el-select>
|
|
|
</div>
|
|
</div>
|
|
|
</el-form-item>
|
|
</el-form-item>
|
|
|
- <el-form-item prop="number" label="人数">
|
|
|
|
|
- <el-input-number v-model="formData.number" type="number" :min="1" :max="1000" />
|
|
|
|
|
- </el-form-item>
|
|
|
|
|
<el-form-item prop="description" label="本会简介">
|
|
<el-form-item prop="description" label="本会简介">
|
|
|
<el-input v-model="formData.description" type="textarea" :rows="5" placeholder="请输入简介" />
|
|
<el-input v-model="formData.description" type="textarea" :rows="5" placeholder="请输入简介" />
|
|
|
</el-form-item>
|
|
</el-form-item>
|