|
@@ -0,0 +1,110 @@
|
|
|
+import { reactive, ref } from 'vue'
|
|
|
+import { getDict } from './useDictionaries'
|
|
|
+import { getPublicRatio } from '@/api/user'
|
|
|
+
|
|
|
+const dictObj = reactive({
|
|
|
+ payUnit: [], // 薪资单位
|
|
|
+ scale: [], // 规模
|
|
|
+ industry: [], // 行业
|
|
|
+ edu: [], // 学历
|
|
|
+ exp: [], // 工作经验
|
|
|
+ area: [], // 地区
|
|
|
+ jobStatus: [], // 求职状态
|
|
|
+ marital: [], // 婚姻状态
|
|
|
+ financing: [] // 融资阶段
|
|
|
+})
|
|
|
+const dictList = ref([
|
|
|
+ { type: 'menduner_pay_unit', value: 'payUnit', key: 'payUnit', label: 'payName' },
|
|
|
+ { type: 'menduner_financing_status', value: 'financing', key: 'financingStatus', label: 'financingName' },
|
|
|
+ { type: 'menduner_scale', value: 'scale', key: 'scale', label: 'scaleName' },
|
|
|
+ { type: 'menduner_job_status', value: 'jobStatus', key: 'jobStatus', label: 'jobStatusName' },
|
|
|
+ { type: 'menduner_marital_status', value: 'marital', key: 'maritalStatus', label: 'maritalStatusName' },
|
|
|
+ { type: 'menduner_industry_type', value: 'industry', key: 'industryId', label: 'industryName', params: {}, apiType: 'industryList', nameKey: 'nameCn', valueKey: 'id' },
|
|
|
+ { type: 'menduner_education_type', value: 'edu', key: 'eduType', label: 'eduName' },
|
|
|
+ { type: 'menduner_exp_type', value: 'exp', key: 'expType', label: 'expName' },
|
|
|
+ { type: 'menduner_area_type', value: 'area', key: 'areaId', label: 'areaName', params: {}, apiType: 'areaList', nameKey: 'name', valueKey: 'id' },
|
|
|
+ { type: 'positionData', value: 'position', key: 'positionId', label: 'positionName', params: {}, apiType: 'positionData', nameKey: 'nameCn', valueKey: 'id' }
|
|
|
+])
|
|
|
+
|
|
|
+// 字典
|
|
|
+const getDictList = async () => {
|
|
|
+ dictList.value.forEach(async (val) => {
|
|
|
+ const { data } = await getDict(val.type, val.params, val.apiType)
|
|
|
+ dictObj[val.value] = data.data
|
|
|
+ })
|
|
|
+}
|
|
|
+export const getDictListData = async () => {
|
|
|
+ await getDictList()
|
|
|
+}
|
|
|
+getDictListData()
|
|
|
+
|
|
|
+export const dealDictArrayData = (res, list) => {
|
|
|
+ res = list.map(item => {
|
|
|
+ Object.keys(item).map(e => {
|
|
|
+ const data = dictList.value.find(k => k.key === e)
|
|
|
+ if (!data) return
|
|
|
+ const valueKey = data.nameKey ? data.nameKey : 'label'
|
|
|
+ const idKey = data.valueKey ? data.valueKey : 'value'
|
|
|
+ if (!dictObj[data.value] || !Object.keys(dictObj[data.value]).length) return
|
|
|
+ const result = dictObj[data.value].find(val => val[idKey] === item[e])
|
|
|
+ if (!result) return
|
|
|
+ item[data.label] = result[valueKey] || ''
|
|
|
+ })
|
|
|
+ return { ...item, active: false, select: false }
|
|
|
+ })
|
|
|
+ return res
|
|
|
+}
|
|
|
+
|
|
|
+export const dealDictObjData = (res, obj) => {
|
|
|
+ res = obj
|
|
|
+ Object.keys(obj).map(e => {
|
|
|
+ const data = dictList.value.find(k => k.key === e)
|
|
|
+ if (!data) return
|
|
|
+ const valueKey = data.nameKey ? data.nameKey : 'label'
|
|
|
+ const idKey = data.valueKey ? data.valueKey : 'value'
|
|
|
+ const result = dictObj[data.value]?.find(val => val[idKey] === obj[e])
|
|
|
+ if (!result) return
|
|
|
+ res[data.label] = result[valueKey]
|
|
|
+ res = { ...obj, ...res }
|
|
|
+ })
|
|
|
+ return res
|
|
|
+}
|
|
|
+
|
|
|
+// 获取单个字典对应的数值
|
|
|
+export const getDictValueWithLabel = (dict, value, valueKey = 'value', labelKey = 'label') => {
|
|
|
+ let result = ''
|
|
|
+ getDict(dict).then(({ data }) => {
|
|
|
+ if (!data || !data.length) return
|
|
|
+ const obj = data.find(e => e[valueKey] === value)
|
|
|
+ if (!obj) return
|
|
|
+ result = obj[labelKey]
|
|
|
+ })
|
|
|
+ return result
|
|
|
+}
|
|
|
+
|
|
|
+// 计算众聘佣金
|
|
|
+let data
|
|
|
+const list = ['headhuntRate', 'recommendRate', 'cvRate'] // 平台、推荐人、投递人
|
|
|
+const getRation = async () => {
|
|
|
+ data = await getPublicRatio()
|
|
|
+}
|
|
|
+// getRation()
|
|
|
+
|
|
|
+export const rechargeRatio = () => { return 10 }
|
|
|
+
|
|
|
+export const commissionCalculation = (count, type) => {
|
|
|
+ if (!data || !Object.keys(data).length) return
|
|
|
+ // 所占的百分比
|
|
|
+ const ratio = parseFloat(data[list[type]]) / 100 // 所占的百分比-> 50%变为0.5 (不能改)
|
|
|
+ // 积分变成金额
|
|
|
+ const value = count * ratio / rechargeRatio()
|
|
|
+ return value % 1 === 0 ? Math.floor(value) : value.toFixed(2)
|
|
|
+}
|
|
|
+
|
|
|
+// "分"和"元" 转化。 type-> toCent:提交给后端需要乘以100; toYuan:回显需要除以100)
|
|
|
+export const FenYuanTransform = (count, type='toYuan') => {
|
|
|
+ if ((count - 0) === 0) return 0
|
|
|
+ if (!count) return ''
|
|
|
+ const Magnification = type === 'toCent' ? 100 : 1/100
|
|
|
+ return type === 'toCent' ? (count - 0)*Magnification : ((count - 0)*Magnification).toFixed(2)
|
|
|
+}
|