|
@@ -1,8 +1,8 @@
|
|
|
<template>
|
|
|
<view class="ss-m-x-20">
|
|
|
<!-- 岗位列表 -->
|
|
|
- <view v-if="data?.length" class="ss-p-b-30 ss-p-t-20">
|
|
|
- <view v-for="(item, index) in data" :key="index" class="mList">
|
|
|
+ <view v-if="list?.length" class="ss-p-b-30 ss-p-t-20">
|
|
|
+ <view v-for="(item, index) in list" :key="index" class="mList">
|
|
|
<!-- 职位信息 -->
|
|
|
<view class="list-shape" style="border-radius: 12px;">
|
|
|
<!-- 职位 -->
|
|
@@ -32,7 +32,7 @@
|
|
|
</view>
|
|
|
</view>
|
|
|
<view class="d-flex flex-column align-center justify-center resumeCount" @tap="handleToResume(item)">
|
|
|
- <view style="font-size: 14px;">{{ item.payFrom || 0 }}</view>
|
|
|
+ <view style="font-size: 14px;">{{ item.count || 0 }}</view>
|
|
|
<view>已投递简历</view>
|
|
|
</view>
|
|
|
</view>
|
|
@@ -40,19 +40,15 @@
|
|
|
<view class="ss-m-t-10">到期时间:{{ item.expireTime ? timesTampChange(item.expireTime, 'Y-M-D') : '长期有效' }}</view>
|
|
|
</view>
|
|
|
<view class="sub-li-bottom">
|
|
|
- <!-- <view v-if="tab === 1">
|
|
|
- <span class="cursor-pointer" @tap="handleAction(item.top ? 4 : 3, '', item)">{{ item.top ? '取消置顶' : $t('common.topping') }}</span>
|
|
|
- <span class="divider-mx">|</span>
|
|
|
- <span class="cursor-pointer" @tap="handleAction(0, '', item)">{{ $t('common.close') }}</span>
|
|
|
- </view> -->
|
|
|
+ <view v-if="tab === 1">
|
|
|
+ <span class="cursor-pointer divider-mx" @tap="handleAction(item.top ? 4 : 3, '', item)">{{ item.top ? '取消置顶' : '置顶' }}</span>
|
|
|
+ <span class="cursor-pointer divider-mx" @tap="handleAction(0, '', item, item)">关闭</span>
|
|
|
+ </view>
|
|
|
<!-- <span v-if="(item.status-0) === 99 && tab === 0" class="cursor-pointer color-primary" @tap="toPay(item)">发布</span> -->
|
|
|
- <!-- <span class="divider-mx" v-if="tab !== 2 && tab !== 3">|</span> -->
|
|
|
- <span v-if="tab === 2" class="cursor-pointer" @tap="handleAction(1, '', item, item)">激活</span>
|
|
|
- <span class="divider-mx" v-if="tab === 2"></span>
|
|
|
- <span class="cursor-pointer" @tap="handleDetail(item)">详情</span>
|
|
|
+ <span v-if="tab === 2" class="cursor-pointer divider-mx" @tap="handleAction(1, '', item, item)">激活</span>
|
|
|
+ <span class="cursor-pointer divider-mx" @tap="handleDetail(item)">详情</span>
|
|
|
<!-- <view v-if="tab !== 3">
|
|
|
- <span class="divider-mx">|</span>
|
|
|
- <span class="cursor-pointer" :style="{'color': item.edit ? '#333' : '#999'}" @tap="handleEdit(item)">{{ $t('common.edit') }}</span>
|
|
|
+ <span class="cursor-pointer divider-mx" :style="{'color': item.edit ? '#333' : '#999'}" @tap="handleEdit(item)">{{ '编辑' }}</span>
|
|
|
</view> -->
|
|
|
</view>
|
|
|
</view>
|
|
@@ -63,6 +59,19 @@
|
|
|
<image src="https://minio.citupro.com/dev/static/nodata.png" mode="widthFix" style="width: 100vw;height: 100vh;"></image>
|
|
|
<view style="color: gray; text-align: center;">暂无数据</view>
|
|
|
</view>
|
|
|
+ <!-- 确认框 -->
|
|
|
+ <uni-popup ref="confirm" type="dialog">
|
|
|
+ <uni-popup-dialog
|
|
|
+ type="warn"
|
|
|
+ cancelText="取消"
|
|
|
+ confirmText="确认"
|
|
|
+ title="系统提示"
|
|
|
+ :content="dialogContent"
|
|
|
+ @confirm="handleConfirm"
|
|
|
+ @close="handleClose"
|
|
|
+ ></uni-popup-dialog>
|
|
|
+ </uni-popup>
|
|
|
+ <payPopup v-if="props.payable" ref="payRef" amount="123"></payPopup>
|
|
|
</view>
|
|
|
</template>
|
|
|
|
|
@@ -70,46 +79,119 @@
|
|
|
// import { commissionCalculation } from '@/utils/position'
|
|
|
import { timesTampChange } from '@/utils/date'
|
|
|
import { formatName } from '@/utils/getText'
|
|
|
-import { ref, watch } from 'vue'
|
|
|
-const emit = defineEmits(['entClick'])
|
|
|
-
|
|
|
+import { ref } from 'vue'
|
|
|
+import payPopup from '@/components/payPopup'
|
|
|
+import {
|
|
|
+ topJobAdvertisedCancel,
|
|
|
+ topJobAdvertised,
|
|
|
+ refreshJobAdvertised,
|
|
|
+ closeJobAdvertised,
|
|
|
+ enableJobAdvertised,
|
|
|
+ getUnpaidOrder,
|
|
|
+ createTradeOrder
|
|
|
+} from '@/api/new/position'
|
|
|
+import { userStore } from '@/store/user'; const useUserStore = userStore()
|
|
|
+const emit = defineEmits(['entClick', 'refresh'])
|
|
|
const props = defineProps({
|
|
|
tab: { type: Number, default: 0 },
|
|
|
list: { type: Array, default: () => [] },
|
|
|
noMore: { type: Boolean, default: false },
|
|
|
- showWelfareTag: { type: Boolean, default: true }
|
|
|
+ showWelfareTag: { type: Boolean, default: true },
|
|
|
+ payable: { type: Boolean, default: false },
|
|
|
})
|
|
|
|
|
|
-const data = ref()
|
|
|
-watch(
|
|
|
- () => props.list,
|
|
|
- (newVal) => {
|
|
|
- data.value = newVal?.length ? newVal : []
|
|
|
- },
|
|
|
- { immediate: true },
|
|
|
- { deep: true }
|
|
|
-)
|
|
|
+const userInfo = ref(useUserStore?.userInfo || {})
|
|
|
+
|
|
|
+const spuId = ref('')
|
|
|
+const spuName = ref('')
|
|
|
+const operateObj = ref({})
|
|
|
+const payRef = ref()
|
|
|
+// 支付
|
|
|
+const toPay = async (val) => {
|
|
|
+ // // 待发布且有额度的激活职位即可
|
|
|
+ // if (userInfo.value.entitlement?.publishJobCount > 0) {
|
|
|
+ // await enableJobAdvertised([val.id])
|
|
|
+ // emit('refresh', true)
|
|
|
+ // setTimeout(() => { uni.showToast({ title: '发布成功', icon: 'success' }) }, 1000)
|
|
|
+ // return
|
|
|
+ // }
|
|
|
+
|
|
|
+ operateObj.value = val
|
|
|
+ spuId.value = val.id || ''
|
|
|
+ spuName.value = val.name || ''
|
|
|
+ payRef.value && payRef.value.handleOpen()
|
|
|
+}
|
|
|
|
|
|
+setTimeout(() => { toPay(props.list[0]) }, 2000)
|
|
|
+
|
|
|
+const confirm = ref()
|
|
|
+const dialogContent = ref('')
|
|
|
+let handleActionInfo = {}
|
|
|
+const apiList = [closeJobAdvertised, enableJobAdvertised, refreshJobAdvertised, topJobAdvertised, topJobAdvertisedCancel]
|
|
|
// 职位关闭、激活、刷新、置顶
|
|
|
const handleAction = async (index, type, { id }, item) => {
|
|
|
+ const ids = type ? [] : [id]
|
|
|
+ if (!ids?.length && !index) return
|
|
|
+ try {
|
|
|
+ handleActionInfo.ids = ids
|
|
|
+ handleActionInfo.index = index
|
|
|
+ uni.showLoading({ title: '操作中...', mask: true })
|
|
|
+
|
|
|
+ // 关闭职位提醒
|
|
|
+ if (index === 0) {
|
|
|
+ const text = userInfo.value?.entitlement?.publishJobCount && userInfo.value?.entitlement?.publishJobCount > 0 ? '将消耗一个发布点数' : '将重新收取费用'
|
|
|
+ const positionName = item?.name ? '【' + formatName(item?.name) + '】' : '所选'
|
|
|
+ dialogContent.value = `是否确认关闭${positionName}职位?关闭后再激活,${text}!`
|
|
|
+ confirm.value.open()
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ // 没有可发布额度激活职位需重新付款
|
|
|
+ userInfo.value = await useUserStore.getUserInfos()
|
|
|
+ if (index === 1 && userInfo.value?.entitlement.publishJobCount <= 3990039900) {
|
|
|
+ // 判断是否已有创建好的订单,有就直接跳转支付,没有就创建订单
|
|
|
+ const data = await getUnpaidOrder({ spuId: id, type: 1 })
|
|
|
+ if (!data) await createTradeOrder({ spuId: id, spuName: item.name, price: 39900, type: 1 })
|
|
|
+ toPay(item)
|
|
|
+ return
|
|
|
+ }
|
|
|
+ await apiList[index](ids)
|
|
|
+ emit('refresh', true)
|
|
|
+ setTimeout(() => { uni.showToast({ title: '操作成功', icon: 'success' }) }, 1000)
|
|
|
+ //
|
|
|
+ } catch (error) {
|
|
|
+ uni.showToast({ title: '操作失败', icon: 'error', duration: 2000 })
|
|
|
+ console.log(error)
|
|
|
+ } finally {
|
|
|
+ uni.hideLoading()
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+const handleClose = () => {
|
|
|
+ confirm.value.close()
|
|
|
+}
|
|
|
+const handleConfirm = async () => {
|
|
|
+ try {
|
|
|
+ uni.showLoading({ title: '关闭中...', mask: true })
|
|
|
+ await apiList[handleActionInfo?.index](handleActionInfo?.ids)
|
|
|
+ emit('refresh', true)
|
|
|
+ setTimeout(() => { uni.showToast({ title: '关闭成功', icon: 'success' }) }, 1000)
|
|
|
+ } catch (error) {
|
|
|
+ uni.showToast({ title: '关闭失败', icon: 'error' })
|
|
|
+ console.log(error)
|
|
|
+ } finally {
|
|
|
+ uni.hideLoading()
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
// 职位关闭、激活、刷新、置顶
|
|
|
const handleEdit = async (val) => {
|
|
|
if (!val.id || !val.edit) {
|
|
|
- uni.showToast({
|
|
|
- title: '职位发布时间超过24小时的不支持编辑',
|
|
|
- icon: 'none',
|
|
|
- duration: 2000
|
|
|
- })
|
|
|
+ uni.showToast({ title: '职位发布时间超过24小时的不支持编辑', icon: 'none', duration: 2000 })
|
|
|
return
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-// 支付
|
|
|
-const toPay = async (val) => {
|
|
|
-}
|
|
|
-
|
|
|
// 职位详情
|
|
|
const handleDetail = (item) => {
|
|
|
if (!item.id) return
|
|
@@ -161,7 +243,8 @@ const handleToResume = (val) => {
|
|
|
}
|
|
|
|
|
|
.sub-li-bottom {
|
|
|
- text-align: right;
|
|
|
+ display: flex;
|
|
|
+ justify-content: flex-end;
|
|
|
border-top: 1px dashed #eee;
|
|
|
margin-top: 10px;
|
|
|
padding-top: 10px;
|