|  | @@ -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>
 |