Explorar el Código

企业套餐管理

Xiao_123 hace 1 semana
padre
commit
8946c2390d

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

@@ -6,7 +6,7 @@
 			<el-descriptions-item label="是否允许参加招聘会">{{ info.jobFair ? '是' : '否' }}</el-descriptions-item>
 			<!-- <el-descriptions-item label="是否开启新任命">{{ info.newAppointment ? '是' : '否' }}</el-descriptions-item> -->
 			<el-descriptions-item label="剩余发布职位数量">{{ info.publishJobCount || 0 }}个</el-descriptions-item>
-			<el-descriptions-item label="剩余搜索人才数量">{{ info.searchCount || 0 }}次</el-descriptions-item>
+			<!-- <el-descriptions-item label="剩余搜索人才数量">{{ info.searchCount || 0 }}次</el-descriptions-item> -->
 			<el-descriptions-item label="剩余查看简历数量">{{ info.lookCvCount || 0 }}次</el-descriptions-item>
 		</el-descriptions>
 
@@ -35,9 +35,9 @@
       <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-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> -->
       <el-form-item label="开启人才地图" prop="entitlement.personMap" :rules="[{ required: true, message: '请设置是否开启人才地图', trigger: 'change' }]">
         <el-switch v-model="formData.entitlement.personMap" />
       </el-form-item>

+ 43 - 23
src/views/menduner/system/enterprisePackage/PackageForm.vue

@@ -10,16 +10,16 @@
       <el-form-item label="套餐名称" prop="name">
         <el-input v-model="formData.name" placeholder="请输入套餐名称" />
       </el-form-item>
-      <el-form-item label="是否激活VIP" prop="activateVip">
+      <el-form-item v-if="!hidden" label="是否激活VIP" prop="activateVip">
         <el-switch v-model="formData.activateVip" />
       </el-form-item>
-      <el-form-item label="套餐原价(元)" prop="originalPrice">
+      <el-form-item v-if="!hidden" label="套餐原价(元)" prop="originalPrice">
         <el-input-number v-model="formData.originalPrice" :min="1" :step="100" />
       </el-form-item>
-      <el-form-item label="套餐价格(元)" prop="price">
+      <el-form-item v-if="!hidden" label="套餐价格(元)" prop="price">
         <el-input-number v-model="formData.price" :min="1" :step="100" />
       </el-form-item>
-      <el-form-item label="会员时效(天)" prop="day">
+      <el-form-item v-if="!hidden" label="会员时效(天)" prop="day">
         <el-input-number v-model="formData.day" :min="0" :step="100" />
       </el-form-item>
       <el-form-item label="说明文本" prop="text">
@@ -28,34 +28,34 @@
       <el-form-item label="发布职位数" prop="publishJobCount">
         <el-input-number v-model="formData.publishJobCount" :min="0" :step="10" />
       </el-form-item>
-      <el-form-item label="搜索人才数" prop="searchCount">
+      <!-- <el-form-item v-if="!hidden" label="搜索人才数" prop="searchCount">
         <el-input-number v-model="formData.searchCount" :min="0" :step="10" />
-      </el-form-item>
-      <el-form-item label="查看简历数" prop="lookCvCount">
+      </el-form-item> -->
+      <el-form-item v-if="!hidden" label="查看简历数" prop="lookCvCount">
         <el-input-number v-model="formData.lookCvCount" :min="0" :step="10" />
       </el-form-item>
-      <el-form-item label="开启人才地图" prop="personMap">
+      <el-form-item v-if="!hidden" label="开启人才地图" prop="personMap">
         <el-switch v-model="formData.personMap" />
       </el-form-item>
-      <el-form-item label="发布众聘职位" prop="hireJob">
+      <el-form-item v-if="!hidden" label="发布众聘职位" prop="hireJob">
         <el-switch v-model="formData.hireJob" />
       </el-form-item>
-      <el-form-item label="开启新任命" prop="newAppointment">
+      <!-- <el-form-item v-if="!hidden" label="开启新任命" prop="newAppointment">
         <el-switch v-model="formData.newAppointment" />
-      </el-form-item>
-      <el-form-item label="参加招聘会" prop="jobFair">
+      </el-form-item> -->
+      <el-form-item v-if="!hidden" label="参加招聘会" prop="jobFair">
         <el-switch v-model="formData.jobFair" />
       </el-form-item>
-      <el-form-item label="排序" prop="sort">
+      <!-- <el-form-item v-if="!hidden" label="排序" prop="sort">
         <el-input-number v-model="formData.sort" :min="0" :step="1" />
-      </el-form-item>
-      <el-form-item label="帐号状态" prop="status">
+      </el-form-item> -->
+      <!-- <el-form-item label="状态" prop="status">
         <el-radio-group v-model="formData.status">
           <el-radio value="0">正常</el-radio>
           <el-radio value="1">停用</el-radio>
           <el-radio value="2">隐藏</el-radio>
         </el-radio-group>
-      </el-form-item>
+      </el-form-item> -->
     </el-form>
     <template #footer>
       <el-button @click="submitForm" type="primary" :disabled="formLoading">确 定</el-button>
@@ -72,6 +72,8 @@ defineOptions({ name: 'PackageForm' })
 const { t } = useI18n() // 国际化
 const message = useMessage() // 消息弹窗
 
+// 默认套餐不展示部分表单项
+const hidden = ref(false)
 const dialogVisible = ref(false) // 弹窗的是否展示
 const dialogTitle = ref('') // 弹窗的标题
 const formLoading = ref(false) // 表单的加载中:1)修改时的数据加载;2)提交的按钮禁用
@@ -95,7 +97,9 @@ const formData = ref({
   sort: 0,
   status: '0'
 })
-const formRules = reactive({
+
+// 基础验证规则
+const baseRules = {
   name: [{ required: true, message: '套餐名称不能为空', trigger: 'blur' }],
   activateVip: [{ required: true, message: '是否激活VIP不能为空', trigger: 'change' }],
   originalPrice: [{ required: true, message: '套餐原价不能为空', trigger: 'blur' }],
@@ -103,14 +107,28 @@ const formRules = reactive({
   day: [{ required: true, message: '会员时效不能为空', trigger: 'blur' }],
   text: [{ required: true, message: '说明文本不能为空', trigger: 'blur' }],
   publishJobCount: [{ required: true, message: '发布职位数不能为空', trigger: 'blur' }],
-  searchCount: [{ required: true, message: '搜索人才数不能为空', trigger: 'blur' }],
   lookCvCount: [{ required: true, message: '查看简历数不能为空', trigger: 'blur' }],
   personMap: [{ required: true, message: '开启人才地图不能为空', trigger: 'change' }],
   hireJob: [{ required: true, message: '发布众聘职位不能为空', trigger: 'change' }],
-  newAppointment: [{ required: true, message: '开启新任命不能为空', trigger: 'change' }],
   jobFair: [{ required: true, message: '参加招聘会不能为空', trigger: 'change' }],
+  // sort: [{ required: true, message: '排序不能为空', trigger: 'blur' }],
   status: [{ required: true, message: '状态不能为空', trigger: 'change' }]
+}
+
+// 动态计算表单验证规则
+const formRules = computed(() => {
+  if (hidden.value) {
+    // 当hidden为true时,只保留name、publishJobCount、text的必填验证
+    return {
+      name: baseRules.name,
+      publishJobCount: baseRules.publishJobCount,
+      text: baseRules.text
+    }
+  }
+  // 当hidden为false时,返回所有验证规则
+  return baseRules
 })
+
 const formRef = ref() // 表单 Ref
 
 /** 打开弹窗 */
@@ -124,9 +142,10 @@ const open = async (type: string, id?: number) => {
     formLoading.value = true
     try {
       const data = await EnterprisePackageApi.getPackageDetail(id)
+      hidden.value = data.defaultPackage
       // 将价格除以100进行展示
-      data.originalPrice = data.originalPrice / 100
-      data.price = data.price / 100
+      data.originalPrice = data.originalPrice ? data.originalPrice / 100 : 0
+      data.price = data.price ? data.price / 100 : 0
       formData.value = data
     } finally {
       formLoading.value = false
@@ -140,13 +159,14 @@ const emit = defineEmits(['success']) // 定义 success 事件,用于操作成
 const submitForm = async () => {
   // 校验表单
   await formRef.value.validate()
+
   // 提交请求
   formLoading.value = true
   try {
     const submitData = { ...formData.value }
     // 将价格乘以100提交给接口
-    submitData.originalPrice = submitData.originalPrice * 100
-    submitData.price = submitData.price * 100
+    submitData.originalPrice = submitData.originalPrice ? submitData.originalPrice * 100 : 0
+    submitData.price = submitData.price ? submitData.price * 100 : 0
 
     if (formType.value === 'create') {
       await EnterprisePackageApi.createPackage(submitData)

+ 5 - 5
src/views/menduner/system/enterprisePackage/index.vue

@@ -72,27 +72,27 @@
       <el-table-column label="会员时效(天)" align="center" prop="day" />
       <el-table-column label="查看简历数" align="center" prop="lookCvCount" />
       <el-table-column label="发布职位数" align="center" prop="publishJobCount" />
-      <el-table-column label="搜索人才数" align="center" prop="searchCount" />
+      <!-- <el-table-column label="搜索人才数" align="center" prop="searchCount" /> -->
       <el-table-column label="开启人才地图" align="center" prop="personMap">
         <template #default="{ row }">{{ row.personMap ? '是' : '否' }}</template>
       </el-table-column>
       <el-table-column label="发布众聘职位" align="center" prop="hireJob">
         <template #default="{ row }">{{ row.hireJob ? '是' : '否' }}</template>
       </el-table-column>
-      <el-table-column label="开启新任命" align="center" prop="newAppointment">
+      <!-- <el-table-column label="开启新任命" align="center" prop="newAppointment">
         <template #default="{ row }">{{ row.newAppointment ? '是' : '否' }}</template>
-      </el-table-column>
+      </el-table-column> -->
       <el-table-column label="参加招聘会" align="center" prop="jobFair">
         <template #default="{ row }">{{ row.jobFair ? '是' : '否' }}</template>
       </el-table-column>
       <el-table-column label="说明文本" align="center" prop="text" width="160px" />
-      <el-table-column label="状态" align="center" prop="status">
+      <!-- <el-table-column label="状态" align="center" prop="status">
         <template #default="{ row }">
           <el-tag :type="row.status === '0' ? 'success' : row.status === '1' ? 'danger' : 'info'">
             {{ row.status === '0' ? '正常' : row.status === '1' ? '停用' : '隐藏' }}
           </el-tag>
         </template>
-      </el-table-column>
+      </el-table-column> -->
       <el-table-column label="创建时间" align="center" prop="createTime" :formatter="dateFormatter" width="160px" />
       <el-table-column label="操作" align="center" min-width="100" fixed="right">
         <template #default="scope">