Kaynağa Gözat

招聘企业:会员套餐设置

Xiao_123 5 ay önce
ebeveyn
işleme
3f6db6000f

+ 15 - 0
src/api/menduner/system/enterprise/message/index.ts

@@ -111,5 +111,20 @@ export const EnterpriseApi = {
   // 职位删除
   deleteJob: async (id: string) => {
     return await request.delete({ url: `/menduner/system/job-advertised/delete?id=${id}` })
+  },
+
+  // 套餐列表
+  getEnterprisePackageList: async () => {
+    return await request.get({ url: `/menduner/system/enterprise-package/list` })
+  },
+
+  // 更新企业会员套餐
+  updateEnterprisePackage: async (data: any) => {
+    return await request.post({ url: `/menduner/system/enterprise/activate/vip`, data })
+  },
+
+  // 获取企业套餐权益
+  getEnterprisePackagePrivilege: async (id: number) => {
+    return await request.post({ url: `/menduner/system/enterprise/entitlement/by/id?id=${id}` })
   }
 }

+ 112 - 0
src/views/menduner/system/enterprise/message/SetVip.vue

@@ -0,0 +1,112 @@
+<template>
+  <Dialog title="会员套餐" v-model="dialogVisible">
+		<el-descriptions class="mb-50px" title="企业当前会员套餐权益" :column="2" border>
+			<el-descriptions-item label="是否开启人才地图">{{ info.personMap ? '是' : '否' }}</el-descriptions-item>
+			<el-descriptions-item label="是否允许发布众聘职位">{{ info.hireJob ? '是' : '否' }}</el-descriptions-item>
+			<el-descriptions-item label="剩余发布职位数量">{{ info.publishJobCount }}个</el-descriptions-item>
+			<el-descriptions-item label="剩余搜索人才数量">{{ info.searchCount }}次</el-descriptions-item>
+			<el-descriptions-item label="剩余查看简历数量">{{ info.lookCvCount }}次</el-descriptions-item>
+		</el-descriptions>
+
+    <h3 style="color: #303133;">会员套餐设置</h3>
+    <el-form
+      ref="formRef"
+      :model="formData"
+      label-width="140px"
+      v-loading="formLoading"
+    >
+      <el-form-item label="会员套餐" prop="packageId" required :rules="[{ required: true, message: '请选择会员套餐', trigger: 'change' }]">
+        <el-select v-model="formData.packageId" placeholder="请选择会员套餐" @change="handleChange">
+					<el-option v-for="val in packList"	:key="val.id" :label="val.name + ': ' + val.text + `(会员时效增加:${val.day}天)`" :value="val.id" />
+				</el-select>
+      </el-form-item>
+      <div v-if="item && Object.keys(item).length">
+        <el-form-item label="发布职位数量:">{{ item.publishJobCount }}个</el-form-item>
+        <el-form-item label="搜索人才数量:">{{ item.searchCount }}次</el-form-item>
+        <el-form-item label="发布职位数量:">{{ item.lookCvCount }}次</el-form-item>
+        <el-form-item label="开启人才地图:">{{ item.personMap ? '是' : '否' }}</el-form-item>
+        <el-form-item label="允许发布众聘职位:">{{ item.hireJob ? '是' : '否' }}</el-form-item>
+      </div>
+    </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: 'EnterpriseMessageSetVip' })
+import { EnterpriseApi } from '@/api/menduner/system/enterprise/message'
+
+const message = useMessage() // 消息弹窗
+const dialogVisible = ref(false) // 弹窗的是否展示
+const formLoading = ref(false) // 表单的加载中:1)修改时的数据加载;2)提交的按钮禁用
+const formData = ref({
+  enterpriseId: '',
+  packageId: undefined as any
+})
+const formRef = ref()
+
+// 套餐列表
+const packList = ref([])
+const getPackList = async () => {
+	const data = await EnterpriseApi.getEnterprisePackageList()
+	packList.value = data
+}
+
+// 套餐选择
+const item = ref({})
+const handleChange = (val) => {
+  if (!val) return
+  item.value = packList.value.find(e => e.id === val)
+}
+
+/** 打开弹窗 */
+const info = ref({})
+const open = async (id: number) => {
+	await getPackList()
+  dialogVisible.value = true
+  resetForm()
+	formData.value.enterpriseId = id
+  // 修改时,设置数据
+  if (id) {
+    formLoading.value = true
+    try {
+      const data = await EnterpriseApi.getEnterprisePackagePrivilege(id)
+			info.value = data && data.length ? data[0] : {}
+    } finally {
+      formLoading.value = false
+    }
+  }
+}
+defineExpose({ open }) // 提供 open 方法,用于打开弹窗
+
+/** 提交表单 */
+const emit = defineEmits(['success']) // 定义 success 事件,用于操作成功后的回调
+const submitForm = async () => {
+  // 校验表单
+  await formRef.value.validate()
+  // 提交请求
+  formLoading.value = true
+  try {
+    await EnterpriseApi.updateEnterprisePackage(formData.value)
+    dialogVisible.value = false
+    message.success('操作成功')
+    // 发送操作成功的事件
+    emit('success')
+    resetForm()
+  } finally {
+    formLoading.value = false
+  }
+}
+
+/** 重置表单 */
+const resetForm = () => {
+  item.value = {}
+  formData.value = {
+    enterpriseId: '',
+    packageId: undefined
+  }
+}
+</script>

+ 12 - 1
src/views/menduner/system/enterprise/message/index.vue

@@ -101,8 +101,9 @@
         </template>
       </el-table-column>
       <el-table-column label="创建时间" align="center" prop="createTime" :formatter="dateFormatter" width="180px" />
-      <el-table-column label="操作" align="center">
+      <el-table-column label="操作" align="center" fixed="right" min-width="130">
         <template #default="scope">
+          <el-button link type="success" @click="handleSetVip(scope.row.id)">会员套餐</el-button>
           <el-button link type="primary" @click="openDetail(scope.row.id)">详情</el-button>
           <el-button link type="primary" @click="openEdit(scope.row.id)" v-hasPermi="['menduner:system:enterprise:update']">编辑</el-button>
           <!-- <el-button link type="primary" @click="openPositionForm(scope.row.id)" v-hasPermi="['menduner:system:enterprise:update']">更新职位发布类型</el-button> -->
@@ -123,6 +124,9 @@
 
   <!-- 职位发布类型权限更新 -->
   <PositionTypeForm ref="positionRef" @success="getList" />
+
+  <!-- 会员套餐 -->
+  <SetVip ref="vipPackageRef" @success="getList" />
 </template>
 
 <script setup lang="ts">
@@ -132,6 +136,7 @@ import download from '@/utils/download'
 import { EnterpriseApi, EnterpriseVO } from '@/api/menduner/system/enterprise/message'
 import EnterpriseForm from './EnterpriseForm.vue'
 import PositionTypeForm from './positionTypeForm.vue'
+import SetVip from './SetVip.vue'
 import { IndustryApi, IndustryVO } from '@/api/menduner/system/industry'
 import { handleTree } from '@/utils/tree'
 import { dealDictObjData } from '@/utils/transform/position'
@@ -214,6 +219,12 @@ const openEdit = (id: number) => {
   formRef.value.open(id)
 }
 
+// 会员套餐
+const vipPackageRef = ref()
+const handleSetVip = (id: number) => {
+  vipPackageRef.value.open(id)
+}
+
 // 更新职位类型
 const openPositionForm = (id:number) => {
   positionRef.value.open(id)