|
@@ -21,8 +21,16 @@
|
|
</div>
|
|
</div>
|
|
</v-card>
|
|
</v-card>
|
|
|
|
|
|
- <CtDialog :visible="recharge" :widthType="2" titleClass="text-h6" title="确认支付" @close="handleClose" @submit="handleSubmit">
|
|
|
|
- <Recharge ref="rechargeRef"></Recharge>
|
|
|
|
|
|
+ <CtDialog :visible="recharge" :widthType="3" titleClass="text-h6" title="确认支付" :footer="false" submitText="确认" @close="handleClose" @submit="paySubmit">
|
|
|
|
+ <!-- <Recharge ref="rechargeRef"></Recharge> -->
|
|
|
|
+ <pay
|
|
|
|
+ ref="payRef"
|
|
|
|
+ :params="payParams"
|
|
|
|
+ :needPrice="needPrice"
|
|
|
|
+ :codeList="codeList"
|
|
|
|
+ @payTypeChange="payTypeChange"
|
|
|
|
+ @paySubmit="paySubmit"
|
|
|
|
+ ></pay>
|
|
</CtDialog>
|
|
</CtDialog>
|
|
</div>
|
|
</div>
|
|
</template>
|
|
</template>
|
|
@@ -33,11 +41,13 @@ import { ref } from 'vue'
|
|
import { useRouter, useRoute } from 'vue-router'
|
|
import { useRouter, useRoute } from 'vue-router'
|
|
import { dealDictObjData } from '@/utils/position'
|
|
import { dealDictObjData } from '@/utils/position'
|
|
import { saveJobAdvertised, getJobDetails } from '@/api/position'
|
|
import { saveJobAdvertised, getJobDetails } from '@/api/position'
|
|
|
|
+import { getEnableCodeList } from '@/api/common'
|
|
import baseInfo from './baseInfo.vue'
|
|
import baseInfo from './baseInfo.vue'
|
|
import jobRequirements from './jobRequirements.vue'
|
|
import jobRequirements from './jobRequirements.vue'
|
|
import Snackbar from '@/plugins/snackbar'
|
|
import Snackbar from '@/plugins/snackbar'
|
|
import { useI18n } from '@/hooks/web/useI18n'
|
|
import { useI18n } from '@/hooks/web/useI18n'
|
|
import { useUserStore } from '@/store/user'
|
|
import { useUserStore } from '@/store/user'
|
|
|
|
+import pay from '@/components/pay'
|
|
|
|
|
|
const { t } = useI18n()
|
|
const { t } = useI18n()
|
|
const route = useRoute()
|
|
const route = useRoute()
|
|
@@ -46,18 +56,8 @@ const userStore = useUserStore()
|
|
const baseInfoRef = ref()
|
|
const baseInfoRef = ref()
|
|
const jobRequirementsRef = ref()
|
|
const jobRequirementsRef = ref()
|
|
const itemData = ref({})
|
|
const itemData = ref({})
|
|
|
|
+const payParams = ref({})
|
|
|
|
|
|
-// 充值
|
|
|
|
-const rechargeRef = ref()
|
|
|
|
-const handleClose = () => {
|
|
|
|
- recharge.value = false
|
|
|
|
- rechargeRef.value.formItems.options.find(e => e.key === 'count').value = 100
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
-const handleSubmit = () => {
|
|
|
|
- recharge.value = false
|
|
|
|
- Snackbar.warning('此功能还在开发中')
|
|
|
|
-}
|
|
|
|
|
|
|
|
const list = [
|
|
const list = [
|
|
{
|
|
{
|
|
@@ -80,43 +80,80 @@ const list = [
|
|
|
|
|
|
// 余额充值
|
|
// 余额充值
|
|
const recharge = ref(false)
|
|
const recharge = ref(false)
|
|
|
|
+const needPrice = ref(0)
|
|
|
|
|
|
-// 取消
|
|
|
|
-const handleCancel = (hire) => { // hire:是否是众聘岗位
|
|
|
|
- itemData.value = {}
|
|
|
|
- const query = hire ? { hire } : {}; router.push({ path: '/recruit/enterprise/position', query })
|
|
|
|
- // 新增职位发布需更新账户信息
|
|
|
|
- if (route.query && !route.query?.id) {
|
|
|
|
- setTimeout(async () => {
|
|
|
|
- await userStore.getEnterpriseUserAccountInfo()
|
|
|
|
- }, 2000)
|
|
|
|
- }
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
|
|
+let submitParams = {}
|
|
|
|
+const codeList = ref([])
|
|
// 发布
|
|
// 发布
|
|
const handleSave = async () => {
|
|
const handleSave = async () => {
|
|
const baseInfo = await baseInfoRef.value[0].getQuery()
|
|
const baseInfo = await baseInfoRef.value[0].getQuery()
|
|
const requirement = await jobRequirementsRef.value[0].getQuery()
|
|
const requirement = await jobRequirementsRef.value[0].getQuery()
|
|
if (!baseInfo || !requirement) return Snackbar.warning('请将信息填写完整')
|
|
if (!baseInfo || !requirement) return Snackbar.warning('请将信息填写完整')
|
|
|
|
+
|
|
|
|
+ submitParams = Object.assign(baseInfo, requirement)
|
|
|
|
+ if (route.query && route.query.id) submitParams.id = route.query.id // 有id则为编辑
|
|
|
|
+
|
|
// 判断是否有选择众聘岗位,选择了是否有填赏金或积分
|
|
// 判断是否有选择众聘岗位,选择了是否有填赏金或积分
|
|
- if (baseInfo.hire) {
|
|
|
|
|
|
+ if (!baseInfo?.hire) {
|
|
|
|
+ saveEmit(submitParams)
|
|
|
|
+ } else {
|
|
if (!baseInfo.hirePrice && !baseInfo.hirePoint) return Snackbar.warning('您选择的是众聘岗位,请填写奖励赏金或积分!')
|
|
if (!baseInfo.hirePrice && !baseInfo.hirePoint) return Snackbar.warning('您选择的是众聘岗位,请填写奖励赏金或积分!')
|
|
if (Number(baseInfo.hirePrice) === 0 && Number(baseInfo.hirePoint) === 0) return Snackbar.warning('填写的赏金/积分不得小于1')
|
|
if (Number(baseInfo.hirePrice) === 0 && Number(baseInfo.hirePoint) === 0) return Snackbar.warning('填写的赏金/积分不得小于1')
|
|
|
|
+
|
|
|
|
+ const point = JSON.parse(localStorage.getItem('enterpriseUserAccount'))?.point
|
|
|
|
+ if (Number(baseInfo.hirePoint) && (Number(baseInfo.hirePoint) > Number(point))) {
|
|
|
|
+ // 积分不足
|
|
|
|
+ return Snackbar.warning('您所剩的积分不足,请修改奖励的积分!')
|
|
|
|
+ }
|
|
|
|
+ if (!codeList.value?.length) {
|
|
|
|
+ const list = await getEnableCodeList({appId: 10})
|
|
|
|
+ codeList.value = list || []
|
|
|
|
+ }
|
|
|
|
+ needPrice.value = Number(baseInfo.hirePrice)
|
|
|
|
+ recharge.value = true // 支付弹窗
|
|
}
|
|
}
|
|
|
|
+}
|
|
|
|
|
|
- const query = Object.assign(baseInfo, requirement)
|
|
|
|
|
|
+const saveEmit = async () => {
|
|
|
|
+ try {
|
|
|
|
+ await saveJobAdvertised(submitParams)
|
|
|
|
+ Snackbar.success(submitParams.id ? t('common.editSuccessMsg') : t('common.publishSuccessMsg'))
|
|
|
|
+ handleCancel(submitParams.hire)
|
|
|
|
+ } catch (error) {
|
|
|
|
+ console.log('error', error)
|
|
|
|
+ }
|
|
|
|
+}
|
|
|
|
|
|
- // // 有id则为编辑
|
|
|
|
- if (route.query && route.query.id) query.id = route.query.id
|
|
|
|
|
|
+const timer = ref(null)
|
|
|
|
+const payRef = ref()
|
|
|
|
+const paySubmit = async (payType) => {
|
|
try {
|
|
try {
|
|
- await saveJobAdvertised(query)
|
|
|
|
- Snackbar.success(route.query.id ? t('common.editSuccessMsg') : t('common.publishSuccessMsg'))
|
|
|
|
- handleCancel(baseInfo.hire)
|
|
|
|
|
|
+ if (payType && payType !== '余额') {
|
|
|
|
+ // 打开轮巡
|
|
|
|
+ if (timer.value) clearInterval(timer.value); timer.value = null
|
|
|
|
+ timer.value = setInterval(async () => {
|
|
|
|
+ // 没有token时销毁定时器
|
|
|
|
+ // if (!getToken()) {
|
|
|
|
+ // clearInterval(timer.value); timer.value = null
|
|
|
|
+ // return
|
|
|
|
+ // }
|
|
|
|
+ // 执行
|
|
|
|
+ }, 3000)
|
|
|
|
+ } else {
|
|
|
|
+ if (timer.value) clearInterval(timer.value); timer.value = null
|
|
|
|
+ saveEmit(submitParams)
|
|
|
|
+ }
|
|
} catch (error) {
|
|
} catch (error) {
|
|
- // 余额不足展示充值窗口
|
|
|
|
- if (error === '用户余额不足') recharge.value = true
|
|
|
|
|
|
+ console.log('error', error)
|
|
}
|
|
}
|
|
-
|
|
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+// const payTypeChange = (val, balanceNotEnough) => {
|
|
|
|
+// }
|
|
|
|
+
|
|
|
|
+const handleClose = () => {
|
|
|
|
+ recharge.value = false
|
|
|
|
+ // rechargeRef.value.formItems.options.find(e => e.key === 'count').value = 100
|
|
}
|
|
}
|
|
|
|
|
|
// 获取编辑的职位详情
|
|
// 获取编辑的职位详情
|
|
@@ -130,6 +167,19 @@ const getPositionDetail = async (id) => {
|
|
if (route.query && route.query.id) {
|
|
if (route.query && route.query.id) {
|
|
if (route.query.id) getPositionDetail(route.query.id)
|
|
if (route.query.id) getPositionDetail(route.query.id)
|
|
}
|
|
}
|
|
|
|
+// getPositionDetail('1821128788239142913') // 测试使用
|
|
|
|
+
|
|
|
|
+// 取消
|
|
|
|
+const handleCancel = (hire) => { // hire:是否是众聘岗位
|
|
|
|
+ itemData.value = {}
|
|
|
|
+ const query = hire ? { hire } : {}; router.push({ path: '/recruit/enterprise/position', query })
|
|
|
|
+ // 新增职位发布需更新账户信息
|
|
|
|
+ if (route.query && !route.query?.id) {
|
|
|
|
+ setTimeout(async () => {
|
|
|
|
+ await userStore.getEnterpriseUserAccountInfo()
|
|
|
|
+ }, 2000)
|
|
|
|
+ }
|
|
|
|
+}
|
|
</script>
|
|
</script>
|
|
|
|
|
|
<style scoped lang="scss">
|
|
<style scoped lang="scss">
|