Przeglądaj źródła

招聘企业:设置会员套餐

Xiao_123 4 miesięcy temu
rodzic
commit
233229f13c

+ 69 - 12
src/views/menduner/system/enterprise/message/SetVip.vue

@@ -15,18 +15,33 @@
       label-width="140px"
       v-loading="formLoading"
     >
-      <el-form-item label="会员套餐" prop="packageId" required :rules="[{ required: true, message: '请选择会员套餐', trigger: 'change' }]">
+      <el-form-item label="会员套餐" prop="packageId">
         <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-item label="是否激活VIP" prop="entitlement.activateVip" :rules="[{ required: true, message: '请设置是否激活VIP', trigger: 'change' }]">
+        <el-switch v-model="formData.entitlement.activateVip" />
+        vip激活后到期,权益将无法使用;vip未激活,权益可以持续一直使用。
+      </el-form-item>
+      <el-form-item v-if="formData.entitlement.activateVip" label="VIP过期时间" prop="entitlement.vipExpireDate" :rules="[{ required: true, message: '请选择VIP过期时间', trigger: 'change' }]">
+        <el-date-picker v-model="formData.entitlement.vipExpireDate" :disabledDate="disabledDates" value-format="x" type="date" placeholder="请选择VIP过期时间" />
+      </el-form-item>
+      <el-form-item label="发布职位数量" prop="entitlement.publishJobCount" :rules="[{ required: true, message: '请输入发布职位数量', trigger: 'change' }]">
+        <el-input-number v-model="formData.entitlement.publishJobCount" :min="0" />
+      </el-form-item>
+      <el-form-item label="查看简历数量" prop="entitlement.lookCvCount" :rules="[{ required: true, message: '请输入查看简历数量', trigger: 'change' }]">
+        <el-input-number v-model="formData.entitlement.lookCvCount" :min="0" />
+      </el-form-item>
+      <el-form-item label="搜索人才数量" prop="entitlement.searchCount" :rules="[{ required: true, message: '请输入搜索人才数量', trigger: 'change' }]">
+        <el-input-number v-model="formData.entitlement.searchCount" :min="0" />
+      </el-form-item>
+      <el-form-item label="开启人才地图" prop="entitlement.personMap" :rules="[{ required: true, message: '请设置是否开启人才地图', trigger: 'change' }]">
+        <el-switch v-model="formData.entitlement.personMap" />
+      </el-form-item>
+      <el-form-item label="允许发布众聘职位" prop="entitlement.hireJob" :rules="[{ required: true, message: '请设置是否允许发布众聘职位', trigger: 'change' }]">
+        <el-switch v-model="formData.entitlement.hireJob" />
+      </el-form-item>
     </el-form>
     <template #footer>
       <el-button @click="submitForm" type="primary" :disabled="formLoading">确 定</el-button>
@@ -44,7 +59,16 @@ const dialogVisible = ref(false) // 弹窗的是否展示
 const formLoading = ref(false) // 表单的加载中:1)修改时的数据加载;2)提交的按钮禁用
 const formData = ref({
   enterpriseId: '',
-  packageId: undefined as any
+  packageId: undefined as any,
+  entitlement: {
+    activateVip: false,
+    vipExpireDate: undefined,
+    publishJobCount: 0,
+    searchCount: 0,
+    lookCvCount: 0,
+    personMap: false,
+    hireJob: false
+  }
 })
 const formRef = ref()
 
@@ -59,12 +83,27 @@ const getPackList = async () => {
 const item = ref({})
 const handleChange = (val) => {
   if (!val) return
-  item.value = packList.value.find(e => e.id === val)
+  const obj = packList.value.find(e => e.id === val)
+  for (let key in formData.value.entitlement) {
+    // 会员标识激活时才设置vip过期时间
+    if (key === 'vipExpireDate' && obj.activateVip) {
+      const currentDate = new Date()
+      currentDate.setDate(currentDate.getDate() + obj.day)
+      formData.value.entitlement[key] = currentDate.getTime()
+    } else formData.value.entitlement[key] = obj[key]
+  }
+}
+
+// 过去的日期不可选
+const disabledDates = (date) => {
+  const currentDate = new Date()
+  currentDate.setDate(currentDate.getDate() - 1)
+  return date.getTime() < currentDate.getTime()
 }
 
 /** 打开弹窗 */
 const info = ref({})
-const open = async (id: number) => {
+const open = async (id: number, vipExpireDate) => {
 	await getPackList()
   dialogVisible.value = true
   resetForm()
@@ -75,6 +114,15 @@ const open = async (id: number) => {
     try {
       const data = await EnterpriseApi.getEnterprisePackagePrivilege(id)
 			info.value = data && data.length ? data[0] : {}
+      if (info.value && Object.keys(info.value).length) {
+        for (let key in formData.value.entitlement) {
+          formData.value.entitlement[key] = info.value[key]
+        }
+      }
+      if (vipExpireDate) {
+        formData.value.entitlement.activateVip = true
+        formData.value.entitlement.vipExpireDate = vipExpireDate
+      }
     } finally {
       formLoading.value = false
     }
@@ -106,7 +154,16 @@ const resetForm = () => {
   item.value = {}
   formData.value = {
     enterpriseId: '',
-    packageId: undefined
+    packageId: undefined,
+    entitlement: {
+      activateVip: false,
+      vipExpireDate: undefined,
+      publishJobCount: 0,
+      searchCount: 0,
+      lookCvCount: 0,
+      personMap: false,
+      hireJob: false
+    }
   }
 }
 </script>

+ 7 - 5
src/views/menduner/system/enterprise/message/index.vue

@@ -92,8 +92,10 @@
       <el-table-column label="联系电话" align="center" prop="phone" />
       <el-table-column label="地址" align="center" prop="address" />
       <el-table-column label="会员" align="center" prop="vipFlag">
-        <template #default="scope">
-          <span :style="{'color': (scope.row.vipFlag && Number(scope.row.vipFlag) > 0) ? '#67c23a' : ''}">{{ scope.row.vipFlag && Number(scope.row.vipFlag) > 0 ? '会员' : '非会员' }}</span>
+        <template #default="{ row }">
+          <span :style="{'color': row.vipExpireDate ? row.vipExpireDate > Date.now() ? '#67C23A' : '#E6A23C' : ''}">
+            {{ row.vipExpireDate ? row.vipExpireDate > Date.now() ? '会员' : '过期' : '非会员' }}
+          </span>
         </template>
       </el-table-column>
       <el-table-column label="会员到期时间" align="center" prop="vipExpireFormatDate" />
@@ -107,7 +109,7 @@
       <el-table-column label="创建时间" align="center" prop="createTime" :formatter="dateFormatter" width="180px" />
       <el-table-column label="操作" align="center" fixed="right" min-width="180">
         <template #default="scope">
-          <el-button link type="success" @click="handleSetVip(scope.row.id)">会员套餐</el-button>
+          <el-button link type="success" @click="handleSetVip(scope.row.id, scope.row.vipExpireDate)">会员套餐</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> -->
@@ -226,8 +228,8 @@ const openEdit = (id: number) => {
 
 // 会员套餐
 const vipPackageRef = ref()
-const handleSetVip = (id: number) => {
-  vipPackageRef.value.open(id)
+const handleSetVip = (id: number, vipExpireDate) => {
+  vipPackageRef.value.open(id, vipExpireDate)
 }
 
 // 更新职位类型