ソースを参照

招聘会-门票设置

Xiao_123 2 ヶ月 前
コミット
22d752d536

+ 5 - 0
src/api/menduner/system/jobFair/manage/index.ts

@@ -81,5 +81,10 @@ export const JobFairManageApi = {
   // 用户投递的简历情况
   // 用户投递的简历情况
     getUserJobCvRel: async (params) => {
     getUserJobCvRel: async (params) => {
     return await request.get({ url: `/menduner/system/job-fair/analysis/user/job/cv-rel`, params })
     return await request.get({ url: `/menduner/system/job-fair/analysis/user/job/cv-rel`, params })
+  },
+
+  // 招聘会门票设置
+  updateTicketSettings: async (data: any) => {
+    return await request.post({ url: `/menduner/system/job-fair/update/admission`, data })
   }
   }
 }
 }

+ 91 - 0
src/views/menduner/system/jobFair/manage/TicketSettings.vue

@@ -0,0 +1,91 @@
+<template>
+  <Dialog title="招聘会门票设置" v-model="dialogVisible">
+    <el-form
+      ref="formRef"
+      :model="formData"
+      :rules="formRules"
+      label-width="130px"
+      v-loading="formLoading"
+    >
+      <el-form-item label="门票金额" prop="admissionPrice">
+        <el-input-number v-model="formData.admissionPrice" :precision="0" :min="1" :step="100" />
+				<span class="mx-10px">元</span>
+				<Icon @click="formData.admissionPrice = null" class="cursor-pointer" :size="25" icon="ep:circle-close-filled" /> 
+      </el-form-item>
+      <el-form-item label="可发布职位数量" prop="allowedJobNum">
+        <el-input-number v-model="formData.allowedJobNum" :min="0" :step="10" />
+				<span class="mx-10px">个</span>
+				<Icon @click="formData.allowedJobNum = null" class="cursor-pointer" :size="25" icon="ep:circle-close-filled" /> 
+      </el-form-item>
+    </el-form>
+    <template #footer>
+      <el-button @click="submitForm" type="primary" :disabled="formLoading">确 定</el-button>
+      <el-button @click="dialogVisible = false">取 消</el-button>
+    </template>
+  </Dialog>
+</template>
+
+<script setup lang="ts">
+defineOptions({ name: 'JobFairManageTicketSettings' })
+import { JobFairManageApi } from '@/api/menduner/system/jobFair/manage'
+
+const message = useMessage() // 消息弹窗
+
+const dialogVisible = ref(false) // 弹窗的是否展示
+const formLoading = ref(false) // 表单的加载中:1)修改时的数据加载;2)提交的按钮禁用
+const formData = ref({
+  id: undefined,
+  admissionPrice: undefined,
+  allowedJobNum: undefined
+})
+const formRules = reactive({
+  // admissionPrice: [{ required: true, message: '门票金额不能为空', trigger: 'change' }],
+  // allowedJobNum: [{ required: true, message: '企业可发布职位不能为空', trigger: 'change' }]
+})
+const formRef = ref() // 表单 Ref
+
+/** 打开弹窗 */
+const open = async (data: Object) => {
+  dialogVisible.value = true
+  resetForm()
+	formData.value = data || {}
+	if (formData.value.admissionPrice > 0) formData.value.admissionPrice = formData.value.admissionPrice / 100
+}
+defineExpose({ open }) // 提供 open 方法,用于打开弹窗
+
+/** 提交表单 */
+const emit = defineEmits(['success']) // 定义 success 事件,用于操作成功后的回调
+const submitForm = async () => {
+  // 校验表单
+  await formRef.value.validate()
+
+	const { id, admissionPrice, allowedJobNum } = formData.value
+	const params = {
+		id,
+		admissionPrice: admissionPrice > 0 ? (admissionPrice * 100) : null,
+		allowedJobNum
+	}
+
+  // 提交请求
+  formLoading.value = true
+  try {
+    await JobFairManageApi.updateTicketSettings(params)
+    message.success('设置成功')
+    dialogVisible.value = false
+    // 发送操作成功的事件
+    emit('success')
+  } finally {
+    formLoading.value = false
+  }
+}
+
+/** 重置表单 */
+const resetForm = () => {
+  formData.value = {
+    id: undefined,
+    admissionPrice: undefined,
+    allowedJobNum: undefined
+  }
+  formRef.value?.resetFields()
+}
+</script>

+ 20 - 7
src/views/menduner/system/jobFair/manage/index.vue

@@ -71,7 +71,7 @@
   <!-- 列表 -->
   <!-- 列表 -->
   <ContentWrap>
   <ContentWrap>
     <el-table v-loading="loading" :data="list" :stripe="true">
     <el-table v-loading="loading" :data="list" :stripe="true">
-      <el-table-column label="标题" align="center" prop="title" width="220">
+      <el-table-column label="招聘会标题" align="center" prop="title" width="220">
         <template #default="scope">
         <template #default="scope">
           <div v-html="scope.row.title"></div>
           <div v-html="scope.row.title"></div>
         </template>
         </template>
@@ -87,16 +87,23 @@
         </template>
         </template>
       </el-table-column>
       </el-table-column>
       <!-- <el-table-column label="简历投递次数" align="center" prop="cvRelNum" /> -->
       <!-- <el-table-column label="简历投递次数" align="center" prop="cvRelNum" /> -->
+      <!-- <el-table-column label="门票金额" align="center" prop="admissionPrice">
+        <template #default="scope">
+          {{ scope.row.admissionPrice > 0 ? scope.row.admissionPrice / 100 : '' }}
+        </template>
+      </el-table-column>
+      <el-table-column label="企业可发布职位数" align="center" prop="allowedJobNum" /> -->
       <el-table-column label="状态" align="center" prop="status">
       <el-table-column label="状态" align="center" prop="status">
         <template #default="scope">
         <template #default="scope">
           <dict-tag :type="DICT_TYPE.MENDUNER_STATUS" :value="scope.row.status" />
           <dict-tag :type="DICT_TYPE.MENDUNER_STATUS" :value="scope.row.status" />
         </template>
         </template>
       </el-table-column>
       </el-table-column>
-      <el-table-column label="开始时间" align="center" prop="startTime" :formatter="dateFormatter" />
-      <el-table-column label="结束时间" align="center" prop="endTime" :formatter="dateFormatter" />
+      <el-table-column label="开始时间" align="center" prop="startTime" :formatter="dateFormatter2" />
+      <el-table-column label="结束时间" align="center" prop="endTime" :formatter="dateFormatter2" />
       <el-table-column label="创建时间" align="center" prop="createTime" :formatter="dateFormatter" />
       <el-table-column label="创建时间" align="center" prop="createTime" :formatter="dateFormatter" />
       <el-table-column label="操作" align="center" fixed="right" min-width="100">
       <el-table-column label="操作" align="center" fixed="right" min-width="100">
         <template #default="scope">
         <template #default="scope">
+          <el-button link type="success" @click="openTicketSettings(scope.row)">门票设置</el-button>
           <el-button link type="primary" @click="openStatistics(scope.row.id)">数据统计</el-button>
           <el-button link type="primary" @click="openStatistics(scope.row.id)">数据统计</el-button>
           <el-button link type="primary" @click="openDetail(scope.row.id)">白名单</el-button>
           <el-button link type="primary" @click="openDetail(scope.row.id)">白名单</el-button>
           <el-button link type="primary" @click="openForm('update', scope.row.id)" v-hasPermi="['menduner:system:job-fair:update']">编辑</el-button>
           <el-button link type="primary" @click="openForm('update', scope.row.id)" v-hasPermi="['menduner:system:job-fair:update']">编辑</el-button>
@@ -115,14 +122,17 @@
 
 
   <!-- 表单弹窗:添加/修改 -->
   <!-- 表单弹窗:添加/修改 -->
   <JobFairManageForm ref="formRef" @success="getList" />
   <JobFairManageForm ref="formRef" @success="getList" />
+
+  <TicketSettings ref="ticketRef" @success="getList" />
 </template>
 </template>
 
 
 <script setup lang="ts">
 <script setup lang="ts">
-import { dateFormatter } from '@/utils/formatTime'
+import { dateFormatter, dateFormatter2 } from '@/utils/formatTime'
 // import download from '@/utils/download'
 // import download from '@/utils/download'
 import { DICT_TYPE } from '@/utils/dict'
 import { DICT_TYPE } from '@/utils/dict'
 import { JobFairManageApi, JobFairManageVO } from '@/api/menduner/system/jobFair/manage'
 import { JobFairManageApi, JobFairManageVO } from '@/api/menduner/system/jobFair/manage'
 import JobFairManageForm from './JobFairManageForm.vue'
 import JobFairManageForm from './JobFairManageForm.vue'
+import TicketSettings from './TicketSettings.vue'
 
 
 /** 招聘会管理 列表 */
 /** 招聘会管理 列表 */
 defineOptions({ name: 'JobFair' })
 defineOptions({ name: 'JobFair' })
@@ -136,12 +146,9 @@ const total = ref(0) // 列表的总页数
 const queryParams = reactive({
 const queryParams = reactive({
   pageNo: 1,
   pageNo: 1,
   pageSize: 10,
   pageSize: 10,
-  // type: undefined,
   title: undefined,
   title: undefined,
-  // slogan: undefined,
   startTime: [],
   startTime: [],
   endTime: [],
   endTime: [],
-  // vipRequire: undefined,
   createTime: []
   createTime: []
 })
 })
 const queryFormRef = ref() // 搜索的表单
 const queryFormRef = ref() // 搜索的表单
@@ -177,6 +184,12 @@ const openForm = (type: string, id?: number) => {
   formRef.value.open(type, id)
   formRef.value.open(type, id)
 }
 }
 
 
+/** 门票设置 */
+const ticketRef = ref()
+const openTicketSettings = ({ id, admissionPrice, allowedJobNum}) => {
+  ticketRef.value.open({ id, admissionPrice, allowedJobNum})
+}
+
 /** 删除按钮操作 */
 /** 删除按钮操作 */
 const handleDelete = async (id: number) => {
 const handleDelete = async (id: number) => {
   try {
   try {