|
@@ -1,6 +1,14 @@
|
|
|
<script setup>
|
|
<script setup>
|
|
|
import { reactive, ref, watch } from "vue"
|
|
import { reactive, ref, watch } from "vue"
|
|
|
-import { createTableDataApi, deleteTableDataApi, updateTableDataApi, getTableDataApi } from "@/api/table"
|
|
|
|
|
|
|
+import {
|
|
|
|
|
+ getActivityPages,
|
|
|
|
|
+ createInsertActivity,
|
|
|
|
|
+ updateActivity,
|
|
|
|
|
+ getClubPage,
|
|
|
|
|
+ deleteActivityById,
|
|
|
|
|
+ exportActivityExcel
|
|
|
|
|
+} from "@/api/activityManagement"
|
|
|
|
|
+import { getQueryCollegesApi, getQueryPeriodsApi, getQueryMajorsApi, getQueryClassesApi } from "@/api/alumniManager"
|
|
|
import { ElMessage, ElMessageBox } from "element-plus"
|
|
import { ElMessage, ElMessageBox } from "element-plus"
|
|
|
import { usePagination } from "@/hooks/usePagination"
|
|
import { usePagination } from "@/hooks/usePagination"
|
|
|
import { cloneDeep } from "lodash-es"
|
|
import { cloneDeep } from "lodash-es"
|
|
@@ -33,30 +41,52 @@ const resetSetAdminForm = () => {
|
|
|
//#region 增
|
|
//#region 增
|
|
|
const DEFAULT_FORM_DATA = {
|
|
const DEFAULT_FORM_DATA = {
|
|
|
id: undefined,
|
|
id: undefined,
|
|
|
|
|
+ orgId: "",
|
|
|
|
|
+ orgName: "",
|
|
|
organization: [],
|
|
organization: [],
|
|
|
theme: "",
|
|
theme: "",
|
|
|
- info: "",
|
|
|
|
|
|
|
+ themeDetail: "",
|
|
|
|
|
+ poster: "",
|
|
|
activityTime: null,
|
|
activityTime: null,
|
|
|
address: "",
|
|
address: "",
|
|
|
- explain: "",
|
|
|
|
|
|
|
+ lng: "",
|
|
|
|
|
+ lat: "",
|
|
|
|
|
+ describes: "",
|
|
|
registrationTime: null,
|
|
registrationTime: null,
|
|
|
- total: undefined,
|
|
|
|
|
- range: [],
|
|
|
|
|
- consultation: "",
|
|
|
|
|
- isImg: false
|
|
|
|
|
|
|
+ totalNumber: undefined,
|
|
|
|
|
+ scope: "",
|
|
|
|
|
+ phone: "",
|
|
|
|
|
+ isImage: false
|
|
|
}
|
|
}
|
|
|
const dialogVisible = ref(false)
|
|
const dialogVisible = ref(false)
|
|
|
const formRef = ref(null)
|
|
const formRef = ref(null)
|
|
|
const formData = ref(cloneDeep(DEFAULT_FORM_DATA))
|
|
const formData = ref(cloneDeep(DEFAULT_FORM_DATA))
|
|
|
const formRules = {
|
|
const formRules = {
|
|
|
- theme: [{ required: true, trigger: "blur", message: "必填" }]
|
|
|
|
|
|
|
+ orgId: [{ required: true, trigger: "blur", message: "必填" }],
|
|
|
|
|
+ theme: [{ required: true, trigger: "blur", message: "必填" }],
|
|
|
|
|
+ themeDetail: [{ required: true, trigger: "blur", message: "必填" }],
|
|
|
|
|
+ activityTime: [{ required: true, trigger: "blur", message: "必填" }],
|
|
|
|
|
+ address: [{ required: true, trigger: "blur", message: "必填" }],
|
|
|
|
|
+ describes: [{ required: true, trigger: "blur", message: "必填" }],
|
|
|
|
|
+ registrationTime: [{ required: true, trigger: "blur", message: "必填" }],
|
|
|
|
|
+ totalNumber: [{ required: true, trigger: "blur", message: "必填" }],
|
|
|
|
|
+ scope: [{ required: true, trigger: "blur", message: "必填" }],
|
|
|
|
|
+ phone: [{ required: true, trigger: "blur", message: "必填" }]
|
|
|
}
|
|
}
|
|
|
const handleCreateOrUpdate = () => {
|
|
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 api = formData.value.id === undefined ? createTableDataApi : updateTableDataApi
|
|
|
|
|
- api(formData.value)
|
|
|
|
|
|
|
+ const api = formData.value.id === undefined ? createInsertActivity : updateActivity
|
|
|
|
|
+ api({
|
|
|
|
|
+ ...formData.value,
|
|
|
|
|
+ startTime: formData.value.activityTime ? formData.value.activityTime[0] : undefined,
|
|
|
|
|
+ endTime: formData.value.activityTime ? formData.value.activityTime[1] : undefined,
|
|
|
|
|
+ lng: "101",
|
|
|
|
|
+ lat: "78",
|
|
|
|
|
+ signsTime: formData.value.registrationTime ? formData.value.registrationTime[0] : undefined,
|
|
|
|
|
+ signeTime: formData.value.registrationTime ? formData.value.registrationTime[1] : undefined
|
|
|
|
|
+ })
|
|
|
.then(() => {
|
|
.then(() => {
|
|
|
ElMessage.success("操作成功")
|
|
ElMessage.success("操作成功")
|
|
|
dialogVisible.value = false
|
|
dialogVisible.value = false
|
|
@@ -80,7 +110,7 @@ const handleDelete = (row) => {
|
|
|
cancelButtonText: "取消",
|
|
cancelButtonText: "取消",
|
|
|
type: "warning"
|
|
type: "warning"
|
|
|
}).then(() => {
|
|
}).then(() => {
|
|
|
- deleteTableDataApi(row.id).then(() => {
|
|
|
|
|
|
|
+ deleteActivityById(row.id).then(() => {
|
|
|
ElMessage.success("删除成功")
|
|
ElMessage.success("删除成功")
|
|
|
getTableData()
|
|
getTableData()
|
|
|
})
|
|
})
|
|
@@ -99,40 +129,46 @@ const handleUpdate = (row) => {
|
|
|
const tableData = ref([])
|
|
const tableData = ref([])
|
|
|
const searchFormRef = ref(null)
|
|
const searchFormRef = ref(null)
|
|
|
const searchData = reactive({
|
|
const searchData = reactive({
|
|
|
- organizationName: undefined,
|
|
|
|
|
- initiator: undefined,
|
|
|
|
|
|
|
+ orgName: undefined,
|
|
|
|
|
+ userName: undefined,
|
|
|
theme: undefined,
|
|
theme: undefined,
|
|
|
- college: undefined,
|
|
|
|
|
- stage: undefined,
|
|
|
|
|
- major: undefined,
|
|
|
|
|
- class: undefined,
|
|
|
|
|
- status: undefined,
|
|
|
|
|
|
|
+ collegeId: undefined,
|
|
|
|
|
+ colleges: [],
|
|
|
|
|
+ periodId: undefined,
|
|
|
|
|
+ periods: [],
|
|
|
|
|
+ majorId: undefined,
|
|
|
|
|
+ majors: [],
|
|
|
|
|
+ classId: undefined,
|
|
|
|
|
+ classList: [],
|
|
|
|
|
+ statuId: undefined,
|
|
|
createTime: null,
|
|
createTime: null,
|
|
|
activityTime: null,
|
|
activityTime: null,
|
|
|
registrationTime: null
|
|
registrationTime: null
|
|
|
})
|
|
})
|
|
|
const getTableData = () => {
|
|
const getTableData = () => {
|
|
|
loading.value = true
|
|
loading.value = true
|
|
|
- getTableDataApi({
|
|
|
|
|
|
|
+ getActivityPages({
|
|
|
currentPage: paginationData.currentPage,
|
|
currentPage: paginationData.currentPage,
|
|
|
- size: paginationData.pageSize,
|
|
|
|
|
- organizationName: searchData.organizationName,
|
|
|
|
|
- initiator: searchData.initiator,
|
|
|
|
|
|
|
+ pageCount: paginationData.pageSize,
|
|
|
|
|
+ orgName: searchData.orgName,
|
|
|
|
|
+ userName: searchData.userName,
|
|
|
theme: searchData.theme,
|
|
theme: searchData.theme,
|
|
|
- college: searchData.college,
|
|
|
|
|
- stage: searchData.stage,
|
|
|
|
|
- major: searchData.major,
|
|
|
|
|
- class: searchData.class,
|
|
|
|
|
- status: searchData.status,
|
|
|
|
|
- starTime: searchData.createTime ? searchData.createTime[0] : undefined,
|
|
|
|
|
- endTime: searchData.createTime ? searchData.createTime[1] : undefined,
|
|
|
|
|
- starTime2: searchData.activityTime ? searchData.activityTime[0] : undefined,
|
|
|
|
|
- endTime2: searchData.activityTime ? searchData.activityTime[1] : undefined,
|
|
|
|
|
- starTime3: searchData.registrationTime ? searchData.registrationTime[0] : undefined,
|
|
|
|
|
- endTime3: searchData.registrationTime ? searchData.registrationTime[1] : undefined
|
|
|
|
|
|
|
+ collegeId: searchData.collegeId,
|
|
|
|
|
+ periodId: searchData.periodId,
|
|
|
|
|
+ majorId: searchData.majorId,
|
|
|
|
|
+ classId: searchData.classId,
|
|
|
|
|
+ statuId: searchData.statuId,
|
|
|
|
|
+ createStartTime: searchData.createTime ? searchData.createTime[0] : undefined,
|
|
|
|
|
+ createEndTime: searchData.createTime ? searchData.createTime[1] : undefined,
|
|
|
|
|
+ startTime: searchData.activityTime ? searchData.activityTime[0] : undefined,
|
|
|
|
|
+ endTime: searchData.activityTime ? searchData.activityTime[1] : undefined,
|
|
|
|
|
+ signsTime: searchData.registrationTime ? searchData.registrationTime[0] : undefined,
|
|
|
|
|
+ signeTime: searchData.registrationTime ? searchData.registrationTime[1] : undefined
|
|
|
})
|
|
})
|
|
|
.then(({ data }) => {
|
|
.then(({ data }) => {
|
|
|
- paginationData.total = data.total
|
|
|
|
|
|
|
+ console.log(data)
|
|
|
|
|
+
|
|
|
|
|
+ paginationData.total = data.totalCount
|
|
|
tableData.value = data.list
|
|
tableData.value = data.list
|
|
|
})
|
|
})
|
|
|
.catch(() => {
|
|
.catch(() => {
|
|
@@ -149,15 +185,111 @@ const resetSearch = () => {
|
|
|
searchFormRef.value?.resetFields()
|
|
searchFormRef.value?.resetFields()
|
|
|
handleSearch()
|
|
handleSearch()
|
|
|
}
|
|
}
|
|
|
|
|
+
|
|
|
|
|
+// 获取学院集合
|
|
|
|
|
+const getColleges = async () => {
|
|
|
|
|
+ const res = await getQueryCollegesApi()
|
|
|
|
|
+ // console.log(res)
|
|
|
|
|
+ searchData.colleges = res.data
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+// 学院筛选框切换回调
|
|
|
|
|
+const changeCollege = async (e) => {
|
|
|
|
|
+ const res = await getQueryPeriodsApi({
|
|
|
|
|
+ collegeId: e
|
|
|
|
|
+ })
|
|
|
|
|
+ // console.log(res)
|
|
|
|
|
+ searchData.periods = res.data
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+// 学段筛选框切换回调
|
|
|
|
|
+const changePeriod = async (e) => {
|
|
|
|
|
+ const res = await getQueryMajorsApi({
|
|
|
|
|
+ periodId: e
|
|
|
|
|
+ })
|
|
|
|
|
+ searchData.majors = res.data
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+// 专业筛选框切换回调
|
|
|
|
|
+const changeMajorId = async (e) => {
|
|
|
|
|
+ const res = await getQueryClassesApi({
|
|
|
|
|
+ majorId: e
|
|
|
|
|
+ })
|
|
|
|
|
+ searchData.classList = res.data
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+// 新增按钮回调
|
|
|
|
|
+const handleAdd = () => {
|
|
|
|
|
+ dialogVisible.value = true
|
|
|
|
|
+ getOrgList()
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+// 获取弹窗组织列表
|
|
|
|
|
+const getOrgList = async () => {
|
|
|
|
|
+ const res = await getClubPage({
|
|
|
|
|
+ currentPage: 1,
|
|
|
|
|
+ pageCount: 999
|
|
|
|
|
+ })
|
|
|
|
|
+ // console.log(res)
|
|
|
|
|
+ formData.value.organization = res.data.list
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+// 切换 弹窗组织筛选框回调
|
|
|
|
|
+const changeOrg = (e) => {
|
|
|
|
|
+ // console.log(e)
|
|
|
|
|
+ const v = formData.value.organization.findIndex((item) => item.id == e)
|
|
|
|
|
+ formData.value.orgName = formData.value.organization[v].name
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
//#endregion
|
|
//#endregion
|
|
|
|
|
|
|
|
/** 监听分页参数的变化 */
|
|
/** 监听分页参数的变化 */
|
|
|
watch([() => paginationData.currentPage, () => paginationData.pageSize], getTableData, { immediate: true })
|
|
watch([() => paginationData.currentPage, () => paginationData.pageSize], getTableData, { immediate: true })
|
|
|
|
|
|
|
|
|
|
+watch([() => paginationData.currentPage, () => paginationData.pageSize], getColleges, { immediate: true })
|
|
|
|
|
+
|
|
|
/** 导出 */
|
|
/** 导出 */
|
|
|
const handleDownload = () => {
|
|
const handleDownload = () => {
|
|
|
- // todo 调用导出接口
|
|
|
|
|
- console.log("导出")
|
|
|
|
|
|
|
+ ElMessageBox.confirm("确认导出吗?", "提示", {
|
|
|
|
|
+ confirmButtonText: "确定",
|
|
|
|
|
+ cancelButtonText: "取消",
|
|
|
|
|
+ type: "warning"
|
|
|
|
|
+ }).then(() => {
|
|
|
|
|
+ downloadReq()
|
|
|
|
|
+ })
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+// 导出请求
|
|
|
|
|
+const downloadReq = async () => {
|
|
|
|
|
+ const res = await exportActivityExcel({
|
|
|
|
|
+ orgName: searchData.orgName,
|
|
|
|
|
+ userName: searchData.userName,
|
|
|
|
|
+ theme: searchData.theme,
|
|
|
|
|
+ collegeId: searchData.collegeId,
|
|
|
|
|
+ periodId: searchData.periodId,
|
|
|
|
|
+ majorId: searchData.majorId,
|
|
|
|
|
+ classId: searchData.classId,
|
|
|
|
|
+ statuId: searchData.statuId,
|
|
|
|
|
+ createStartTime: searchData.createTime ? searchData.createTime[0] : undefined,
|
|
|
|
|
+ createEndTime: searchData.createTime ? searchData.createTime[1] : undefined,
|
|
|
|
|
+ startTime: searchData.activityTime ? searchData.activityTime[0] : undefined,
|
|
|
|
|
+ endTime: searchData.activityTime ? searchData.activityTime[1] : undefined,
|
|
|
|
|
+ signsTime: searchData.registrationTime ? searchData.registrationTime[0] : undefined,
|
|
|
|
|
+ signeTime: searchData.registrationTime ? searchData.registrationTime[1] : undefined
|
|
|
|
|
+ })
|
|
|
|
|
+ // console.log(res)
|
|
|
|
|
+ // 请求成功返回后,获取到Excel文件的二进制数据
|
|
|
|
|
+ const blob = new Blob([res], { type: "application/vnd.ms-excel" })
|
|
|
|
|
+ // 创建下载链接
|
|
|
|
|
+ const downloadUrl = URL.createObjectURL(blob)
|
|
|
|
|
+ // 创建一个隐藏的a标签,设置下载链接和文件名,模拟点击下载
|
|
|
|
|
+ const link = document.createElement("a")
|
|
|
|
|
+ link.style.display = "none"
|
|
|
|
|
+ link.href = downloadUrl
|
|
|
|
|
+ link.download = "活动管理.xlsx"
|
|
|
|
|
+ document.body.appendChild(link)
|
|
|
|
|
+ link.click()
|
|
|
|
|
+ document.body.removeChild(link)
|
|
|
}
|
|
}
|
|
|
</script>
|
|
</script>
|
|
|
|
|
|
|
@@ -166,38 +298,58 @@ const handleDownload = () => {
|
|
|
<el-card v-loading="loading" header="活动管理">
|
|
<el-card v-loading="loading" header="活动管理">
|
|
|
<div class="toolbar-wrapper">
|
|
<div class="toolbar-wrapper">
|
|
|
<el-form ref="searchFormRef" :inline="true" :model="searchData">
|
|
<el-form ref="searchFormRef" :inline="true" :model="searchData">
|
|
|
- <el-form-item prop="organizationName" label="组织名称">
|
|
|
|
|
- <el-input v-model="searchData.organizationName" placeholder="请输入" />
|
|
|
|
|
|
|
+ <el-form-item prop="orgName" label="组织名称">
|
|
|
|
|
+ <el-input v-model="searchData.orgName" placeholder="请输入" />
|
|
|
</el-form-item>
|
|
</el-form-item>
|
|
|
- <el-form-item prop="initiator" label="发起人">
|
|
|
|
|
- <el-input v-model="searchData.initiator" placeholder="请输入" />
|
|
|
|
|
|
|
+ <el-form-item prop="userName" label="发起人">
|
|
|
|
|
+ <el-input v-model="searchData.userName" placeholder="请输入" />
|
|
|
</el-form-item>
|
|
</el-form-item>
|
|
|
<el-form-item prop="theme" label="活动主题">
|
|
<el-form-item prop="theme" label="活动主题">
|
|
|
<el-input v-model="searchData.theme" placeholder="请输入" />
|
|
<el-input v-model="searchData.theme" placeholder="请输入" />
|
|
|
</el-form-item>
|
|
</el-form-item>
|
|
|
- <el-form-item prop="college" label="学院">
|
|
|
|
|
- <el-select v-model="searchData.college" placeholder="请选择" style="width: 178px">
|
|
|
|
|
- <el-option label="todo" value="todo" />
|
|
|
|
|
|
|
+ <el-form-item prop="collegeId" label="学院">
|
|
|
|
|
+ <el-select v-model="searchData.collegeId" placeholder="请选择" style="width: 178px" @change="changeCollege">
|
|
|
|
|
+ <el-option v-for="item in searchData.colleges" :label="item.name" :value="item.id" :key="item.id" />
|
|
|
</el-select>
|
|
</el-select>
|
|
|
</el-form-item>
|
|
</el-form-item>
|
|
|
- <el-form-item prop="stage" label="学段">
|
|
|
|
|
- <el-select v-model="searchData.stage" placeholder="请选择" style="width: 178px">
|
|
|
|
|
- <el-option label="todo" value="todo" />
|
|
|
|
|
|
|
+ <el-form-item prop="periodId" label="学段">
|
|
|
|
|
+ <el-select
|
|
|
|
|
+ v-model="searchData.periodId"
|
|
|
|
|
+ placeholder="请选择"
|
|
|
|
|
+ style="width: 178px"
|
|
|
|
|
+ :disabled="!searchData.collegeId"
|
|
|
|
|
+ @change="changePeriod"
|
|
|
|
|
+ >
|
|
|
|
|
+ <el-option v-for="item in searchData.periods" :label="item.name" :value="item.id" :key="item.id" />
|
|
|
</el-select>
|
|
</el-select>
|
|
|
</el-form-item>
|
|
</el-form-item>
|
|
|
- <el-form-item prop="major" label="专业">
|
|
|
|
|
- <el-select v-model="searchData.major" placeholder="请选择" style="width: 178px">
|
|
|
|
|
- <el-option label="todo" value="todo" />
|
|
|
|
|
|
|
+ <el-form-item prop="majorId" label="专业">
|
|
|
|
|
+ <el-select
|
|
|
|
|
+ v-model="searchData.majorId"
|
|
|
|
|
+ placeholder="请选择"
|
|
|
|
|
+ style="width: 178px"
|
|
|
|
|
+ :disabled="!searchData.periodId"
|
|
|
|
|
+ @change="changeMajorId"
|
|
|
|
|
+ >
|
|
|
|
|
+ <el-option v-for="item in searchData.majors" :label="item.name" :value="item.id" :key="item.id" />
|
|
|
</el-select>
|
|
</el-select>
|
|
|
</el-form-item>
|
|
</el-form-item>
|
|
|
- <el-form-item prop="class" label="班级">
|
|
|
|
|
- <el-select v-model="searchData.class" placeholder="请选择" style="width: 178px">
|
|
|
|
|
- <el-option label="todo" value="todo" />
|
|
|
|
|
|
|
+ <el-form-item prop="classId" label="班级">
|
|
|
|
|
+ <el-select
|
|
|
|
|
+ v-model="searchData.classId"
|
|
|
|
|
+ placeholder="请选择"
|
|
|
|
|
+ style="width: 178px"
|
|
|
|
|
+ :disabled="!searchData.majorId"
|
|
|
|
|
+ >
|
|
|
|
|
+ <el-option v-for="item in searchData.classList" :label="item.name" :value="item.id" :key="item.id" />
|
|
|
</el-select>
|
|
</el-select>
|
|
|
</el-form-item>
|
|
</el-form-item>
|
|
|
- <el-form-item prop="status" label="状态">
|
|
|
|
|
- <el-select v-model="searchData.status" placeholder="请选择" style="width: 178px">
|
|
|
|
|
- <el-option label="todo" value="todo" />
|
|
|
|
|
|
|
+ <el-form-item prop="statuId" label="状态">
|
|
|
|
|
+ <el-select v-model="searchData.statuId" placeholder="请选择" style="width: 178px">
|
|
|
|
|
+ <el-option label="全部" value="0" />
|
|
|
|
|
+ <el-option label="未开始" value="1" />
|
|
|
|
|
+ <el-option label="进行中" value="2" />
|
|
|
|
|
+ <el-option label="已结束" value="3" />
|
|
|
</el-select>
|
|
</el-select>
|
|
|
</el-form-item>
|
|
</el-form-item>
|
|
|
<el-form-item prop="createTime" label="创建时间">
|
|
<el-form-item prop="createTime" label="创建时间">
|
|
@@ -206,7 +358,7 @@ const handleDownload = () => {
|
|
|
type="datetimerange"
|
|
type="datetimerange"
|
|
|
start-placeholder="开始时间"
|
|
start-placeholder="开始时间"
|
|
|
end-placeholder="结束时间"
|
|
end-placeholder="结束时间"
|
|
|
- value-format="x"
|
|
|
|
|
|
|
+ value-format="YYYY-MM-DD HH:mm:ss"
|
|
|
/>
|
|
/>
|
|
|
</el-form-item>
|
|
</el-form-item>
|
|
|
<el-form-item prop="activityTime" label="活动时间">
|
|
<el-form-item prop="activityTime" label="活动时间">
|
|
@@ -215,7 +367,7 @@ const handleDownload = () => {
|
|
|
type="datetimerange"
|
|
type="datetimerange"
|
|
|
start-placeholder="开始时间"
|
|
start-placeholder="开始时间"
|
|
|
end-placeholder="结束时间"
|
|
end-placeholder="结束时间"
|
|
|
- value-format="x"
|
|
|
|
|
|
|
+ value-format="YYYY-MM-DD HH:mm:ss"
|
|
|
/>
|
|
/>
|
|
|
</el-form-item>
|
|
</el-form-item>
|
|
|
<el-form-item prop="registrationTime" label="报名时间">
|
|
<el-form-item prop="registrationTime" label="报名时间">
|
|
@@ -224,7 +376,7 @@ const handleDownload = () => {
|
|
|
type="datetimerange"
|
|
type="datetimerange"
|
|
|
start-placeholder="开始时间"
|
|
start-placeholder="开始时间"
|
|
|
end-placeholder="结束时间"
|
|
end-placeholder="结束时间"
|
|
|
- value-format="x"
|
|
|
|
|
|
|
+ value-format="YYYY-MM-DD HH:mm:ss"
|
|
|
/>
|
|
/>
|
|
|
</el-form-item>
|
|
</el-form-item>
|
|
|
<el-form-item>
|
|
<el-form-item>
|
|
@@ -234,26 +386,55 @@ const handleDownload = () => {
|
|
|
</el-form>
|
|
</el-form>
|
|
|
<div>
|
|
<div>
|
|
|
<el-button type="primary" @click="setAdminDialogVisible = true">设置管理员</el-button>
|
|
<el-button type="primary" @click="setAdminDialogVisible = true">设置管理员</el-button>
|
|
|
- <el-button type="primary" @click="dialogVisible = true">新增</el-button>
|
|
|
|
|
|
|
+ <el-button type="primary" @click="handleAdd">新增</el-button>
|
|
|
<el-button plain @click="handleDownload">导出</el-button>
|
|
<el-button plain @click="handleDownload">导出</el-button>
|
|
|
</div>
|
|
</div>
|
|
|
</div>
|
|
</div>
|
|
|
<div class="table-wrapper">
|
|
<div class="table-wrapper">
|
|
|
<el-table :data="tableData" max-height="500">
|
|
<el-table :data="tableData" max-height="500">
|
|
|
- <el-table-column type="index" label="序号" width="100" align="center" />
|
|
|
|
|
- <el-table-column prop="initiator" label="发起人" align="center" />
|
|
|
|
|
- <el-table-column prop="college" label="学院" align="center" />
|
|
|
|
|
- <el-table-column prop="stage" label="学段" align="center" />
|
|
|
|
|
- <el-table-column prop="major" label="专业" align="center" />
|
|
|
|
|
- <el-table-column prop="class" label="班级" align="center" />
|
|
|
|
|
- <el-table-column prop="organizationName" label="所属组织" align="center" />
|
|
|
|
|
|
|
+ <el-table-column type="index" label="序号" width="80" align="center" />
|
|
|
|
|
+ <el-table-column prop="name" label="发起人" align="center" show-overflow-tooltip />
|
|
|
|
|
+ <el-table-column prop="collegeName" label="学院" align="center" show-overflow-tooltip />
|
|
|
|
|
+ <el-table-column prop="periodName" label="学段" align="center" />
|
|
|
|
|
+ <el-table-column prop="majorName" label="专业" align="center" show-overflow-tooltip />
|
|
|
|
|
+ <el-table-column prop="className" label="班级" align="center" />
|
|
|
|
|
+ <el-table-column prop="orgName" label="所属组织" align="center" />
|
|
|
<el-table-column prop="theme" label="活动主题" align="center" />
|
|
<el-table-column prop="theme" label="活动主题" align="center" />
|
|
|
- <el-table-column prop="activityTime" label="活动时间" align="center" />
|
|
|
|
|
- <el-table-column prop="registrationTime" label="报名时间" align="center" />
|
|
|
|
|
- <el-table-column prop="status" label="状态" align="center" />
|
|
|
|
|
- <el-table-column prop="todo" label="已报名" align="center" />
|
|
|
|
|
- <el-table-column prop="todo" label="已签到" align="center" />
|
|
|
|
|
- <el-table-column prop="createTime" label="创建时间" align="center" />
|
|
|
|
|
|
|
+
|
|
|
|
|
+ <el-table-column label="活动时间" align="center" show-overflow-tooltip>
|
|
|
|
|
+ <template #default="{ row }">
|
|
|
|
|
+ <div>{{ row.startTime }} -- {{ row.endTime }}</div>
|
|
|
|
|
+ </template>
|
|
|
|
|
+ </el-table-column>
|
|
|
|
|
+
|
|
|
|
|
+ <el-table-column label="报名时间" align="center" show-overflow-tooltip>
|
|
|
|
|
+ <template #default="{ row }">
|
|
|
|
|
+ <div>{{ row.signsTime }} -- {{ row.signeTime }}</div>
|
|
|
|
|
+ </template>
|
|
|
|
|
+ </el-table-column>
|
|
|
|
|
+
|
|
|
|
|
+ <el-table-column label="状态" align="center">
|
|
|
|
|
+ <template #default="{ row }">
|
|
|
|
|
+ <div style="color: #366fff" v-if="row.activityStatuName == 1">未开始</div>
|
|
|
|
|
+ <div style="color: #e6a23c" v-if="row.activityStatuName == 2">进行中</div>
|
|
|
|
|
+ <div style="color: #d43030" v-if="row.activityStatuName == 3">已结束</div>
|
|
|
|
|
+ </template>
|
|
|
|
|
+ </el-table-column>
|
|
|
|
|
+
|
|
|
|
|
+ <el-table-column label="已报名" align="center" show-overflow-tooltip>
|
|
|
|
|
+ <template #default="{ row }">
|
|
|
|
|
+ <div style="color: #d43030" v-if="row.reportNumber == 0">未报名</div>
|
|
|
|
|
+ <div style="color: #366fff" v-else>已报名</div>
|
|
|
|
|
+ </template>
|
|
|
|
|
+ </el-table-column>
|
|
|
|
|
+
|
|
|
|
|
+ <el-table-column label="已签到" align="center" show-overflow-tooltip>
|
|
|
|
|
+ <template #default="{ row }">
|
|
|
|
|
+ <div style="color: #d43030" v-if="row.signinNumber == 0">未签到</div>
|
|
|
|
|
+ <div style="color: #366fff" v-else>已签到</div>
|
|
|
|
|
+ </template>
|
|
|
|
|
+ </el-table-column>
|
|
|
|
|
+ <el-table-column prop="createTime" label="创建时间" align="center" show-overflow-tooltip />
|
|
|
<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 type="primary" @click="handleUpdate(scope.row)">详情</el-link>
|
|
<el-link type="primary" @click="handleUpdate(scope.row)">详情</el-link>
|
|
@@ -281,18 +462,19 @@ const handleDownload = () => {
|
|
|
:title="formData.id === undefined ? '创建活动' : '编辑活动'"
|
|
:title="formData.id === undefined ? '创建活动' : '编辑活动'"
|
|
|
@closed="resetForm"
|
|
@closed="resetForm"
|
|
|
width="50%"
|
|
width="50%"
|
|
|
|
|
+ top="5vh"
|
|
|
>
|
|
>
|
|
|
<el-form ref="formRef" :model="formData" :rules="formRules" label-width="auto" size="large">
|
|
<el-form ref="formRef" :model="formData" :rules="formRules" label-width="auto" size="large">
|
|
|
- <el-form-item prop="organization" label="所属组织">
|
|
|
|
|
- <el-select v-model="formData.organization" placeholder="请选择" multiple>
|
|
|
|
|
- <el-option label="todo" value="todo" />
|
|
|
|
|
|
|
+ <el-form-item prop="orgId" label="所属组织">
|
|
|
|
|
+ <el-select v-model="formData.orgId" placeholder="请选择" @change="changeOrg">
|
|
|
|
|
+ <el-option v-for="item in formData.organization" :label="item.name" :value="item.id" :key="item.id" />
|
|
|
</el-select>
|
|
</el-select>
|
|
|
</el-form-item>
|
|
</el-form-item>
|
|
|
<el-form-item prop="theme" label="活动主题">
|
|
<el-form-item prop="theme" label="活动主题">
|
|
|
<el-input v-model="formData.theme" placeholder="请输入" />
|
|
<el-input v-model="formData.theme" placeholder="请输入" />
|
|
|
</el-form-item>
|
|
</el-form-item>
|
|
|
- <el-form-item prop="info" label="活动详情">
|
|
|
|
|
- <el-input v-model="formData.info" type="textarea" :rows="5" placeholder="请输入" />
|
|
|
|
|
|
|
+ <el-form-item prop="themeDetail" label="活动详情">
|
|
|
|
|
+ <el-input v-model="formData.themeDetail" type="textarea" :rows="5" placeholder="请输入" />
|
|
|
</el-form-item>
|
|
</el-form-item>
|
|
|
<el-form-item prop="activityTime" label="活动时间">
|
|
<el-form-item prop="activityTime" label="活动时间">
|
|
|
<el-date-picker
|
|
<el-date-picker
|
|
@@ -300,14 +482,14 @@ const handleDownload = () => {
|
|
|
type="datetimerange"
|
|
type="datetimerange"
|
|
|
start-placeholder="开始时间"
|
|
start-placeholder="开始时间"
|
|
|
end-placeholder="结束时间"
|
|
end-placeholder="结束时间"
|
|
|
- value-format="x"
|
|
|
|
|
|
|
+ value-format="YYYY-MM-DD HH:mm:ss"
|
|
|
/>
|
|
/>
|
|
|
</el-form-item>
|
|
</el-form-item>
|
|
|
<el-form-item prop="address" label="活动地址">
|
|
<el-form-item prop="address" label="活动地址">
|
|
|
<el-input v-model="formData.address" placeholder="请输入" />
|
|
<el-input v-model="formData.address" placeholder="请输入" />
|
|
|
</el-form-item>
|
|
</el-form-item>
|
|
|
- <el-form-item prop="explain" label="参与说明">
|
|
|
|
|
- <el-input v-model="formData.explain" type="textarea" :rows="5" placeholder="请输入" />
|
|
|
|
|
|
|
+ <el-form-item prop="describes" label="参与说明">
|
|
|
|
|
+ <el-input v-model="formData.describes" type="textarea" :rows="5" placeholder="请输入" />
|
|
|
</el-form-item>
|
|
</el-form-item>
|
|
|
<el-form-item prop="registrationTime" label="报名时间">
|
|
<el-form-item prop="registrationTime" label="报名时间">
|
|
|
<el-date-picker
|
|
<el-date-picker
|
|
@@ -315,22 +497,23 @@ const handleDownload = () => {
|
|
|
type="datetimerange"
|
|
type="datetimerange"
|
|
|
start-placeholder="开始时间"
|
|
start-placeholder="开始时间"
|
|
|
end-placeholder="结束时间"
|
|
end-placeholder="结束时间"
|
|
|
- value-format="x"
|
|
|
|
|
|
|
+ value-format="YYYY-MM-DD HH:mm:ss"
|
|
|
/>
|
|
/>
|
|
|
</el-form-item>
|
|
</el-form-item>
|
|
|
- <el-form-item prop="total" label="报名总人数">
|
|
|
|
|
- <el-input v-model.number="formData.total" type="number" placeholder="请输入" />
|
|
|
|
|
|
|
+ <el-form-item prop="totalNumber" label="报名总人数">
|
|
|
|
|
+ <el-input v-model.number="formData.totalNumber" type="number" placeholder="请输入" />
|
|
|
</el-form-item>
|
|
</el-form-item>
|
|
|
- <el-form-item prop="range" label="报名范围">
|
|
|
|
|
- <el-select v-model="formData.range" placeholder="请选择" multiple>
|
|
|
|
|
- <el-option label="todo" value="todo" />
|
|
|
|
|
|
|
+ <el-form-item prop="scope" label="报名范围">
|
|
|
|
|
+ <el-select v-model="formData.scope" placeholder="请选择">
|
|
|
|
|
+ <el-option label="全部" value="2" />
|
|
|
|
|
+ <el-option label="组织成员" value="1" />
|
|
|
</el-select>
|
|
</el-select>
|
|
|
</el-form-item>
|
|
</el-form-item>
|
|
|
- <el-form-item prop="consultation" label="咨询方式">
|
|
|
|
|
- <el-input v-model="formData.consultation" placeholder="请输入" />
|
|
|
|
|
|
|
+ <el-form-item prop="phone" label="咨询方式">
|
|
|
|
|
+ <el-input v-model="formData.phone" placeholder="请输入" />
|
|
|
</el-form-item>
|
|
</el-form-item>
|
|
|
- <el-form-item prop="isImg" label="活动相册">
|
|
|
|
|
- <el-switch v-model="formData.isImg" />
|
|
|
|
|
|
|
+ <el-form-item prop="isImage" label="活动相册">
|
|
|
|
|
+ <el-switch v-model="formData.isImage" />
|
|
|
</el-form-item>
|
|
</el-form-item>
|
|
|
</el-form>
|
|
</el-form>
|
|
|
<template #footer>
|
|
<template #footer>
|