Merge branch 'feature/GFRS-715【0402】人力发展-个人中心' into release/0407
# Conflicts: # src/assets/js/utils/validator.js # src/router/ebiz/index.js
@@ -1,3 +1,3 @@
|
||||
public
|
||||
dist
|
||||
node_modules
|
||||
node_modules
|
||||
108
src/api/ebiz/manpower/manpower.js
Normal file
@@ -0,0 +1,108 @@
|
||||
import request from '@/assets/js/utils/request'
|
||||
import getUrl from '@/assets/js/utils/get-url'
|
||||
|
||||
// 个人中心 - 查询接口
|
||||
export function getPersonalInfo(data) {
|
||||
return request({
|
||||
url: getUrl('/agent/personal/getInfo', 1),
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
|
||||
// 人才库列表查询接口
|
||||
export function getAgentPersonnelList(data = {}) {
|
||||
return request({
|
||||
url: getUrl('/agent/personnel/queryList', 1),
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
// 人才库 - 新增人才
|
||||
export function saveAgentPersonnel(data) {
|
||||
return request({
|
||||
url: getUrl('/agent/personnel/saveOrUpdate', 1),
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
// 人才库 - 查询详情
|
||||
export function getAgentPersonnelDetail(data) {
|
||||
return request({
|
||||
url: getUrl('/agent/personnel/queryDetail', 1),
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
// 人才库 - 查询人才库列表 - 导航页
|
||||
export function getAgentPersonnelListFirst(data = {}) {
|
||||
return request({
|
||||
url: getUrl('/agent/personnel/queryListFirst', 1),
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
|
||||
// 活动量统计周报
|
||||
export function queryWeekly(data) {
|
||||
return request({
|
||||
url: getUrl('/agent/activityRecord/queryWeekly', 1),
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
|
||||
// 查询日志页面增员列表
|
||||
export function queryRecordList(data) {
|
||||
return request({
|
||||
url: getUrl('/agent/activityRecord/queryList', 1),
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
|
||||
// 日志详情查询
|
||||
export function queryRecordDetail(data) {
|
||||
return request({
|
||||
url: getUrl('/agent/activityRecord/queryDetail', 1),
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
|
||||
// 新增日志
|
||||
export function saveRecord(data) {
|
||||
return request({
|
||||
url: getUrl('/agent/activityRecord/saveOrUpdate', 1),
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
|
||||
export function getTokenForUserModel(data = {}) {
|
||||
return request({
|
||||
url: getUrl('/agent/enter/getTokenForUserModel', 1),
|
||||
method: 'get',
|
||||
params: {
|
||||
data
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
// 新增分享记录
|
||||
export function saveShareRecord(data) {
|
||||
return request({
|
||||
url: getUrl('/agent/share/saveRecord', 1),
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
|
||||
// 获取分享记录的key
|
||||
export function getShareKey(data) {
|
||||
return request({
|
||||
url: getUrl('/agent/share/getKey', 1),
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
BIN
src/assets/images/headerBg.png
Normal file
|
After Width: | Height: | Size: 91 KiB |
@@ -2032,5 +2032,26 @@ export default {
|
||||
{ code: '01', value: '寿险' },
|
||||
{ code: '02', value: '重疾' },
|
||||
{ code: '03', value: '年金' }
|
||||
],
|
||||
// 活动量管理 - 人才库 - 状态
|
||||
talentPoolStatus: [
|
||||
{ id: 0, text: '暂不考虑' },
|
||||
{ id: 1, text: '已加盟' },
|
||||
{ id: 2, text: '确认加盟' },
|
||||
{ id: 3, text: '三次以上接触' },
|
||||
{ id: 4, text: '二次接触' },
|
||||
{ id: 5, text: '首次接触 ' }
|
||||
],
|
||||
// 活动量管理 - 人才库 - 过往职业
|
||||
talentPoolPastOccu: [
|
||||
{ id: '01', text: '一般内勤职员' },
|
||||
{ id: '02', text: '其他金融行业' },
|
||||
{ id: '03', text: '家庭主妇' },
|
||||
{ id: '04', text: '自由职业' },
|
||||
{ id: '05', text: '离退休人员' },
|
||||
{ id: '06', text: '个体经营者' },
|
||||
{ id: '07', text: '销售' },
|
||||
{ id: '08', text: '公务员' },
|
||||
{ id: '11', text: '其他' }
|
||||
]
|
||||
}
|
||||
|
||||
@@ -60,6 +60,15 @@ Validator.extend('age', {
|
||||
return value > 17 && /^\d{1,3}$/.test(value)
|
||||
}
|
||||
})
|
||||
|
||||
//年龄
|
||||
Validator.extend('maxAge', {
|
||||
getMessage: () => '年龄不得大于100周岁',
|
||||
validate: value => {
|
||||
return value <= 100 && /^\d{1,3}$/.test(value)
|
||||
}
|
||||
})
|
||||
|
||||
//被保险人年龄(不得小于18周岁)
|
||||
Validator.extend('appntAge', {
|
||||
getMessage: () => '年龄不得小于18周岁',
|
||||
@@ -138,4 +147,35 @@ Validator.extend('avoirdupois', {
|
||||
validate: value => {
|
||||
return /^[0-9]+([.]{1}[0-9]{1})?$/.test(value) && value > 0.1
|
||||
}
|
||||
})
|
||||
|
||||
//同业公司
|
||||
Validator.extend('sameCompany', {
|
||||
getMessage: () => '同业公司长度不超过120个字符,不支持特殊字符',
|
||||
validate: value => {
|
||||
return /^[0-9a-zA-Z\.\s\u4e00-\u9fa5]{1,120}$/.test(value)
|
||||
}
|
||||
})
|
||||
//从业年限
|
||||
Validator.extend('workYears', {
|
||||
getMessage: () => '从业年限仅支持阿拉伯数字,最多精确到一位小数',
|
||||
validate: value => {
|
||||
return /^[0-9]+([.]{1}[0-9]{1})?$/.test(value) && value > 0
|
||||
}
|
||||
})
|
||||
//最大长度120字符
|
||||
Validator.extend('max120', {
|
||||
getMessage: () => '输入内容不得超过120哥字符',
|
||||
validate: value => {
|
||||
return value.length < 121
|
||||
}
|
||||
})
|
||||
|
||||
//名字
|
||||
Validator.extend('manpowerName', {
|
||||
getMessage: () => '请输入正确的姓名',
|
||||
validate: value => {
|
||||
// return /^[\u4e00-\u9fa5·]{1,15}$/.test(value)
|
||||
return /^[a-zA-Z\.\s\u4e00-\u9fa5]{2,120}$/.test(value)
|
||||
}
|
||||
})
|
||||
67
src/components/ebiz/manpower/ActivityLogItem.vue
Normal file
@@ -0,0 +1,67 @@
|
||||
<template>
|
||||
<div>
|
||||
<van-cell-group>
|
||||
<van-cell :title="ActivityLogInfo.name" title-class="ml10" :is-link="isEdit" value-class="text-left" @click="toEdit">
|
||||
<van-icon slot="icon" :name="ActivityLogInfo.avatarUrl || defaultAcatarUrl" style="line-height: inherit;" size="22" />
|
||||
<span class="mr20">{{ ActivityLogInfo.age }}岁</span>
|
||||
<span>{{ ActivityLogInfo.type == 0 ? '同业' : '白板' }}</span>
|
||||
<van-icon slot="right-icon" name="edit" style="line-height: inherit;" :color="isEdit ? '#ee0a24' : 'transparent'" size="24" />
|
||||
</van-cell>
|
||||
</van-cell-group>
|
||||
</div>
|
||||
</template>
|
||||
<script>
|
||||
import formatDate from '@/assets/js/utils/date-utils'
|
||||
import { Cell, CellGroup, Image } from 'vant'
|
||||
|
||||
export default {
|
||||
components: {
|
||||
[Cell.name]: Cell,
|
||||
[CellGroup.name]: CellGroup,
|
||||
[Image.name]: Image
|
||||
},
|
||||
props: {
|
||||
ActivityLogInfo: {
|
||||
type: Object,
|
||||
required: true,
|
||||
default: () => {
|
||||
return {
|
||||
recordCode: '',
|
||||
name: '王辉',
|
||||
// avatarUrl: 'https://img.yzcdn.cn/vant/cat.jpeg',
|
||||
age: '35岁',
|
||||
type: '同业',
|
||||
recordDate: ''
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
defaultAcatarUrl: 'https://b.yzcdn.cn/vant/icon-demo-1126.png'
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
toEdit() {
|
||||
this.$jump({
|
||||
flag: 'h5',
|
||||
extra: {
|
||||
url: location.origin + `/#/manpower/ActivityLog/Edit?code=${this.ActivityLogInfo.recordCode}&isEdit=${this.isEdit ? '0' : '1'}`,
|
||||
forbidSwipeBack: '1',
|
||||
needRefresh: '1'
|
||||
},
|
||||
routerInfo: { path: `/manpower/ActivityLog/Edit?code=${this.ActivityLogInfo.recordCode}&isEdit=${this.isEdit ? '0' : '1'}` }
|
||||
})
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
isEdit() {
|
||||
if (this.ActivityLogInfo.recordDate === formatDate.formatDate().split(' ')[0]) {
|
||||
return true
|
||||
} else {
|
||||
return false
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
74
src/components/ebiz/manpower/NavItem.vue
Normal file
@@ -0,0 +1,74 @@
|
||||
<!-- 导航 元素 -->
|
||||
<template>
|
||||
<!-- <div class="nav-item"> -->
|
||||
<van-cell is-link class="relative" @click="rout(config)">
|
||||
<template slot="title">
|
||||
<van-icon v-if="config.icon" color="#ee0a24" class="t-cell-icon" size="6.4vw" :name="config.icon" />
|
||||
<img v-else class="t-cell-icon" :src="config.src" alt="config" />
|
||||
<span class="custom-title c-gray-base"> {{ config.title }}</span>
|
||||
</template>
|
||||
</van-cell>
|
||||
<!-- </div> -->
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { Cell } from 'vant'
|
||||
export default {
|
||||
name: 'NavItem',
|
||||
components: {
|
||||
[Cell.name]: Cell
|
||||
},
|
||||
props: {
|
||||
config: {
|
||||
type: Object,
|
||||
required: true,
|
||||
default: function() {
|
||||
return {
|
||||
title: '默认title',
|
||||
path: '/404',
|
||||
src: 'http://localhost:8080/favicon.ico'
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
data() {
|
||||
return {}
|
||||
},
|
||||
created() {},
|
||||
methods: {
|
||||
rout(config) {
|
||||
if (!config.share) {
|
||||
let path = config.path
|
||||
this.$jump({
|
||||
flag: 'h5',
|
||||
extra: {
|
||||
url: location.origin + `/#${path}`,
|
||||
needRefresh: '1'
|
||||
},
|
||||
routerInfo: { path: path }
|
||||
})
|
||||
} else {
|
||||
// eslint-disable-next-line no-undef
|
||||
EWebBridge.webCallAppInJs('bridge', {
|
||||
flag: 'share',
|
||||
extra: config.shareConfig
|
||||
})
|
||||
// weixinShare(config.shareConfig)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
// .nav-item {
|
||||
.t-cell-icon {
|
||||
position: absolute;
|
||||
width: 6.4vw;
|
||||
height: 6.4vw;
|
||||
}
|
||||
.custom-title {
|
||||
margin-left: 8.4vw;
|
||||
}
|
||||
// }
|
||||
</style>
|
||||
52
src/components/ebiz/manpower/TalentPoolItem.vue
Normal file
@@ -0,0 +1,52 @@
|
||||
<template>
|
||||
<van-cell :title="talentPoolInfo.name" title-class="ml10" is-link value-class="text-left" @click="edit(talentPoolInfo.personnelCode)" >
|
||||
<van-icon slot="icon" :name="talentPoolInfo.avatarUrl || defaultAcatarUrl" style="line-height: inherit;" size="24" />
|
||||
<span>{{ talentPoolInfo.sameCompany }}</span>
|
||||
<van-icon slot="right-icon" name="edit" style="line-height: inherit;" color="#ee0a24" size="24" />
|
||||
</van-cell>
|
||||
</template>
|
||||
<script>
|
||||
import { Cell, CellGroup, Image } from 'vant'
|
||||
|
||||
export default {
|
||||
components: {
|
||||
[Cell.name]: Cell,
|
||||
[CellGroup.name]: CellGroup,
|
||||
[Image.name]: Image
|
||||
},
|
||||
props: {
|
||||
talentPoolInfo: {
|
||||
type: Object,
|
||||
required: true,
|
||||
default: () => {
|
||||
return {
|
||||
name: '王辉',
|
||||
sameCompany: '中国人寿'
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
defaultAcatarUrl: 'https://b.yzcdn.cn/vant/icon-demo-1126.png'
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
edit(personnelCode) {
|
||||
if (personnelCode) {
|
||||
localStorage.setItem('personnelCode', personnelCode)
|
||||
this.$jump({
|
||||
flag: 'h5',
|
||||
extra: {
|
||||
url: location.origin + '/#/manpower/talentPool/Edit',
|
||||
needRefresh: '1'
|
||||
},
|
||||
routerInfo: {
|
||||
path: '/manpower/talentPool/Edit'
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
64
src/components/ebiz/manpower/UserInfoHeader.vue
Normal file
@@ -0,0 +1,64 @@
|
||||
<!-- 头部用户信息 -->
|
||||
<template>
|
||||
<div class="user-info flex p15 bg-head align-items-e">
|
||||
<img class="w40" src="../../../assets/images/bnf_avatar.png" />
|
||||
<div class="add-list flex1 ml10">
|
||||
<p class="fs16 font-bold">{{ userInfo.name }}</p>
|
||||
<div class="">工号 | {{ userInfo.jobNo }}</div>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { getAgentInfo } from '@/api/ebiz/my/my.js'
|
||||
export default {
|
||||
name: 'UserInfoHeader',
|
||||
data() {
|
||||
return {
|
||||
userInfo: '', // 代理人信息
|
||||
activeNames: ['1']
|
||||
}
|
||||
},
|
||||
created() {
|
||||
this.getInfo()
|
||||
},
|
||||
methods: {
|
||||
async getInfo() {
|
||||
// 获取代理人信息
|
||||
let userInfo = localStorage.getItem('userInfo')
|
||||
if (userInfo) {
|
||||
this.userInfo = JSON.parse(userInfo)
|
||||
} else {
|
||||
const res = await getAgentInfo({})
|
||||
if (res.result == 0) {
|
||||
this.userInfo = res
|
||||
localStorage.setItem('agentCode', res.jobNo)
|
||||
localStorage.setItem('userInfo', JSON.stringify(res))
|
||||
} else {
|
||||
this.$toast(res.resultMessage)
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
components: {}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
.user-info {
|
||||
background-image: url('~@/assets/images/headerBg.png');
|
||||
background-size: cover;
|
||||
color: white;
|
||||
height: 80px;
|
||||
|
||||
.send-main {
|
||||
border-bottom: 10px solid #f5f5f5;
|
||||
}
|
||||
.add-list {
|
||||
line-height: 22px;
|
||||
}
|
||||
.font-bold {
|
||||
font-weight: bold;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
17
src/config/manpower.js
Normal file
@@ -0,0 +1,17 @@
|
||||
// 人力发展
|
||||
|
||||
let mockBaseUrl = 'http://rap2api.taobao.org/app/mock/247074'
|
||||
export default {
|
||||
// 例子
|
||||
'/demo/url': mockBaseUrl + '/demo/url',
|
||||
// 查询日志统计周报
|
||||
'/agent/activityRecord/queryWeekly': mockBaseUrl + '/agent/activityRecord/queryWeekly',
|
||||
// 查询日志页面人才库列表
|
||||
'/agent/personnel/queryListFirst': mockBaseUrl + '/agent/personnel/queryListFirst',
|
||||
// 查询日志页面增员列表
|
||||
'/agent/activityRecord/queryList': mockBaseUrl + '/agent/activityRecord/queryList',
|
||||
// 日志详情查询
|
||||
'/agent/activityRecord/queryDetail': mockBaseUrl + '/agent/activityRecord/queryDetail',
|
||||
// 新增日志
|
||||
'/agent/activityRecord/saveOrUpdate': mockBaseUrl + '/agent/activityRecord/saveOrUpdate'
|
||||
}
|
||||
@@ -11,6 +11,7 @@ import product from './product'
|
||||
import serve from './serve'
|
||||
import common from './common'
|
||||
import survey from './survey'
|
||||
import manpower from './manpower'
|
||||
const mockBaseUrl = 'http://rap2api.taobao.org/app/mock'
|
||||
|
||||
let baseObj = {
|
||||
@@ -18,6 +19,6 @@ let baseObj = {
|
||||
'/user/info': mockBaseUrl + '/223948/info',
|
||||
'/user/logout': mockBaseUrl + '/223948/logout'
|
||||
}
|
||||
Object.assign(baseObj, proposal, sale, customer, my, product, serve, common, survey)
|
||||
Object.assign(baseObj, proposal, sale, customer, my, product, serve, common, survey, manpower)
|
||||
|
||||
export default baseObj
|
||||
|
||||
@@ -12,4 +12,5 @@ import poster from './poster'
|
||||
import report from './report'
|
||||
import survey from './survey'
|
||||
import nbs from './nbs'
|
||||
export default [...proposal, ...sale, ...customer, ...my, ...serve, ...common, ...product, ...agentEenter, ...milestone, ...poster, ...report, ...survey, ...nbs] //根据需要进行删减
|
||||
import manpower from './manpower'
|
||||
export default [...proposal, ...sale, ...customer, ...my, ...serve, ...common, ...product, ...agentEenter, ...milestone, ...poster, ...report, ...survey, ...nbs, ...manpower] //根据需要进行删减
|
||||
|
||||
152
src/router/ebiz/manpower.js
Normal file
@@ -0,0 +1,152 @@
|
||||
//人力发展 定义相关组件
|
||||
|
||||
const Navigation = () => import('@/views/ebiz/manpower/Navigation')
|
||||
const PersonalCenter = () => import('@/views/ebiz/manpower/PersonalCenter')
|
||||
|
||||
const IncreaseStaffTools = () => import('@/views/ebiz/manpower/IncreaseStaffTools')
|
||||
const CompanyIntroduction = () => import('@/views/ebiz/manpower/increaseStaffTools/CompanyIntroduction')
|
||||
const PolicyOptions = () => import('@/views/ebiz/manpower/increaseStaffTools/PolicyOptions')
|
||||
const PolicyOptionsPdfShare = () => import('@/views/ebiz/manpower/increaseStaffTools/PdfShare')
|
||||
|
||||
const Training = () => import('@/views/ebiz/manpower/Training')
|
||||
|
||||
const ActiveManagement = () => import('@/views/ebiz/manpower/ActiveManagement')
|
||||
|
||||
const TalentPoolList = () => import('@/views/ebiz/manpower/talentPool/List')
|
||||
const TalentPoolAdd = () => import('@/views/ebiz/manpower/talentPool/Add')
|
||||
const TalentPoolEdit = () => import('@/views/ebiz/manpower/talentPool/Edit')
|
||||
|
||||
const ActivityLogList = () => import('@/views/ebiz/manpower/activityLog/List')
|
||||
const ActivityLogEdit = () => import('@/views/ebiz/manpower/activityLog/Edit')
|
||||
|
||||
export default [{
|
||||
// 人力发展
|
||||
path: '/manpower/Navigation',
|
||||
name: 'Navigation',
|
||||
component: Navigation,
|
||||
meta: {
|
||||
title: '人力发展',
|
||||
index: 1
|
||||
}
|
||||
},
|
||||
{
|
||||
// 个人中心
|
||||
path: '/manpower/PersonalCenter',
|
||||
name: 'PersonalCenter',
|
||||
component: PersonalCenter,
|
||||
meta: {
|
||||
title: '人力发展',
|
||||
index: 2
|
||||
}
|
||||
},
|
||||
{
|
||||
// 增员工具
|
||||
path: '/manpower/IncreaseStaffTools',
|
||||
name: 'IncreaseStaffTools',
|
||||
component: IncreaseStaffTools,
|
||||
meta: {
|
||||
title: '增员工具',
|
||||
index: 3
|
||||
}
|
||||
},
|
||||
{
|
||||
// 公司介绍
|
||||
path: '/manpower/increaseStaffTools/CompanyIntroduction',
|
||||
name: 'CompanyIntroduction',
|
||||
component: CompanyIntroduction,
|
||||
meta: {
|
||||
title: '公司介绍',
|
||||
index: 100
|
||||
}
|
||||
},
|
||||
{
|
||||
// 政策方案
|
||||
path: '/manpower/increaseStaffTools/PolicyOptions',
|
||||
name: 'PolicyOptions',
|
||||
component: PolicyOptions,
|
||||
meta: {
|
||||
title: '政策方案',
|
||||
index: 100
|
||||
}
|
||||
},
|
||||
{
|
||||
// 政策方案展示Pdf
|
||||
path: '/manpower/increaseStaffTools/PdfShare',
|
||||
name: 'PolicyOptionsPdfShare',
|
||||
component: PolicyOptionsPdfShare,
|
||||
meta: {
|
||||
title: '政策方案',
|
||||
index: 100
|
||||
}
|
||||
},
|
||||
{
|
||||
// 培训上岗
|
||||
path: '/manpower/Training',
|
||||
name: 'Training',
|
||||
component: Training,
|
||||
meta: {
|
||||
title: '培训上岗',
|
||||
index: 100
|
||||
}
|
||||
},
|
||||
{
|
||||
// 活动量管理
|
||||
path: '/manpower/ActiveManagement',
|
||||
name: 'ActiveManagement',
|
||||
component: ActiveManagement,
|
||||
meta: {
|
||||
title: '活动量管理',
|
||||
index: 100
|
||||
}
|
||||
},
|
||||
{
|
||||
// 人才库
|
||||
path: '/manpower/TalentPool/',
|
||||
name: 'TalentPoolList',
|
||||
component: TalentPoolList,
|
||||
meta: {
|
||||
title: '人才库',
|
||||
index: 101
|
||||
}
|
||||
},
|
||||
{
|
||||
// 人才库-新增人才
|
||||
path: '/manpower/TalentPool/Add',
|
||||
name: 'TalentPoolAdd',
|
||||
component: TalentPoolAdd,
|
||||
meta: {
|
||||
title: '基本信息',
|
||||
index: 102
|
||||
}
|
||||
},
|
||||
{
|
||||
// 人才库-修改人才
|
||||
path: '/manpower/TalentPool/Edit',
|
||||
name: 'TalentPoolEdit',
|
||||
component: TalentPoolEdit,
|
||||
meta: {
|
||||
title: '基本信息',
|
||||
index: 103
|
||||
}
|
||||
},
|
||||
{
|
||||
// 当日增员活动日志
|
||||
path: '/manpower/ActivityLog/List',
|
||||
name: 'ActivityLogList',
|
||||
component: ActivityLogList,
|
||||
meta: {
|
||||
title: '当日增员活动日志',
|
||||
index: 100
|
||||
}
|
||||
},
|
||||
{
|
||||
// 日志详情
|
||||
path: '/manpower/ActivityLog/Edit',
|
||||
name: 'ActivityLogEdit',
|
||||
component: ActivityLogEdit,
|
||||
meta: {
|
||||
title: '日志详情',
|
||||
index: 100
|
||||
}
|
||||
}
|
||||
]
|
||||
229
src/views/ebiz/manpower/ActiveManagement.vue
Normal file
@@ -0,0 +1,229 @@
|
||||
<!-- 活动量管理 -->
|
||||
<template>
|
||||
<div class="pb40">
|
||||
<van-collapse v-model="weeklyNames">
|
||||
<van-collapse-item title="活动量统计周报" title-class="fs16 fwb" name="1">
|
||||
<van-grid :column-num="2">
|
||||
<van-grid-item>
|
||||
<p class="fs14">周白板面谈数量</p>
|
||||
<p class="fs14 mt20 fwb">{{ weeklyInfo.whiteboard }}</p>
|
||||
</van-grid-item>
|
||||
<van-grid-item>
|
||||
<p class="fs14">周同业面谈数量</p>
|
||||
<p class="fs14 mt20 fwb">{{ weeklyInfo.sameTrade }}</p>
|
||||
</van-grid-item>
|
||||
</van-grid>
|
||||
</van-collapse-item>
|
||||
</van-collapse>
|
||||
|
||||
<!-- 人才库 -->
|
||||
<div class="bg-white">
|
||||
<van-collapse v-model="talentPoolCollapse" v-if="talentPoolList.length > 0">
|
||||
<van-collapse-item name="1" title-class="fs16 fwb">
|
||||
<div slot="title" class="flex justify-content-s align-items-c">
|
||||
人才库
|
||||
<van-icon class="mr10" name="plus" @click.stop="addTalentPool" />
|
||||
</div>
|
||||
<van-cell-group>
|
||||
<TalentPoolItem v-for="talentPoolInfo in talentPoolList" :key="talentPoolInfo.personnelCode" :talentPoolInfo="talentPoolInfo"></TalentPoolItem>
|
||||
</van-cell-group>
|
||||
<p v-if="showMoreTalentPool" class="p15 text-right red" @click="toListTalentPool">查看全部 >></p>
|
||||
</van-collapse-item>
|
||||
</van-collapse>
|
||||
<template v-else>
|
||||
<van-cell class="fs16 fwb">
|
||||
<div slot="title" class="flex justify-content-s align-items-c">
|
||||
人才库
|
||||
</div>
|
||||
</van-cell>
|
||||
<van-cell>
|
||||
<template slot="title">
|
||||
<div class="text-center"><van-icon name="add-square" size="50" color="#ee0a24" @click="addTalentPool" /></div>
|
||||
</template>
|
||||
</van-cell>
|
||||
</template>
|
||||
</div>
|
||||
|
||||
<!-- 当日增员活动日志 -->
|
||||
<div class="bg-white">
|
||||
<div class="p15" v-if="recordList.length == 0">
|
||||
<p class="fs16 fwb">当日增员活动日志</p>
|
||||
<div class="text-center van-hairline--top"><van-icon name="add-square" size="50" color="#ee0a24" @click="toEdit" /></div>
|
||||
</div>
|
||||
<van-collapse v-model="recordNames" v-else>
|
||||
<van-collapse-item name="1" title-class="fs16 fwb">
|
||||
<div slot="title" class="flex justify-content-s align-items-c">当日增员活动日志 <van-icon class="mr10" name="plus" @click.stop="toEdit" /></div>
|
||||
<ActivityLogItem :ActivityLogInfo="info" v-for="(info, index) in recordList" :key="index"></ActivityLogItem>
|
||||
<p v-if="showMore" class="p15 text-right red" @click="toList">查看全部 >></p>
|
||||
</van-collapse-item>
|
||||
</van-collapse>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
<script>
|
||||
import formatDate from '@/assets/js/utils/date-utils'
|
||||
import { Collapse, CollapseItem, Grid, GridItem, Cell, CellGroup } from 'vant'
|
||||
import TalentPoolItem from '@/components/ebiz/manpower/TalentPoolItem'
|
||||
import ActivityLogItem from '@/components/ebiz/manpower/ActivityLogItem'
|
||||
import { getAgentPersonnelListFirst, queryWeekly, queryRecordList } from '@/api/ebiz/manpower/manpower'
|
||||
|
||||
export default {
|
||||
components: {
|
||||
[Collapse.name]: Collapse,
|
||||
[CollapseItem.name]: CollapseItem,
|
||||
[Grid.name]: Grid,
|
||||
[GridItem.name]: GridItem,
|
||||
[Cell.name]: Cell,
|
||||
[CellGroup.name]: CellGroup,
|
||||
TalentPoolItem,
|
||||
ActivityLogItem
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
weeklyNames: ['1'],
|
||||
personnelNames: ['1'],
|
||||
recordNames: ['1'],
|
||||
talentPoolInfo: {
|
||||
name: '王辉',
|
||||
sameCompany: '中国人寿'
|
||||
},
|
||||
ActivityLogInfo: {
|
||||
recordCode: '',
|
||||
name: '王辉',
|
||||
// avatarUrl: 'https://img.yzcdn.cn/vant/cat.jpeg',
|
||||
age: '35岁',
|
||||
type: '同业',
|
||||
recordDate: formatDate.formatDate().split(' ')[0]
|
||||
},
|
||||
// 日志统计周报信息
|
||||
weeklyInfo: {
|
||||
whiteboard: '', // 白板
|
||||
sameTrade: '' // 同业
|
||||
},
|
||||
// 人才列表
|
||||
showMoreTalentPool: false,
|
||||
talentPoolCollapse: ['1'],
|
||||
talentPoolList: [],
|
||||
// 日志列表
|
||||
showMore: false,
|
||||
// 增员日志列表
|
||||
recordList: []
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
this.queryWeekly()
|
||||
this.getAgentPersonnelListFirst()
|
||||
this.queryRecordList()
|
||||
},
|
||||
methods: {
|
||||
// 获取日志统计周报
|
||||
queryWeekly() {
|
||||
queryWeekly({})
|
||||
.then(res => {
|
||||
console.log(res)
|
||||
if (res.result == 0) {
|
||||
this.weeklyInfo = res.content.weekly
|
||||
} else {
|
||||
this.$toast(res.resultMessage)
|
||||
}
|
||||
})
|
||||
.catch(err => {
|
||||
console.log(err)
|
||||
})
|
||||
},
|
||||
// 查询增员日志列表
|
||||
queryRecordList() {
|
||||
let data = {
|
||||
recordDate: ''
|
||||
}
|
||||
queryRecordList(data)
|
||||
.then(res => {
|
||||
if (res.result == 0) {
|
||||
let data = res.content.records
|
||||
if (data.length > 5) {
|
||||
this.showMore = true
|
||||
data = data.slice(0, 5)
|
||||
} else {
|
||||
this.showMore = false
|
||||
}
|
||||
this.recordList = data
|
||||
} else {
|
||||
this.$toast(res.resultMessage)
|
||||
}
|
||||
})
|
||||
.catch(err => {
|
||||
console.log(err)
|
||||
})
|
||||
},
|
||||
toList() {
|
||||
this.$jump({
|
||||
flag: 'h5',
|
||||
extra: {
|
||||
url: location.origin + `/#/manpower/ActivityLog/List`,
|
||||
forbidSwipeBack: '1',
|
||||
needRefresh: '1'
|
||||
},
|
||||
routerInfo: { path: '/manpower/ActivityLog/List' }
|
||||
})
|
||||
},
|
||||
toEdit() {
|
||||
this.$jump({
|
||||
flag: 'h5',
|
||||
extra: {
|
||||
url: location.origin + `/#/manpower/ActivityLog/Edit?isEdit=0`,
|
||||
forbidSwipeBack: '1',
|
||||
needRefresh: '1'
|
||||
},
|
||||
routerInfo: { path: '/manpower/ActivityLog/Edit?isEdit=0' }
|
||||
})
|
||||
},
|
||||
addTalentPool() {
|
||||
this.$jump({
|
||||
flag: 'h5',
|
||||
extra: {
|
||||
url: location.origin + '/#/manpower/talentPool/Add',
|
||||
needRefresh: '1'
|
||||
},
|
||||
routerInfo: {
|
||||
path: '/manpower/talentPool/Add'
|
||||
}
|
||||
})
|
||||
},
|
||||
toListTalentPool() {
|
||||
this.$jump({
|
||||
flag: 'h5',
|
||||
extra: {
|
||||
url: location.origin + '/#/manpower/talentPool/',
|
||||
needRefresh: '1'
|
||||
},
|
||||
routerInfo: {
|
||||
path: '/manpower/talentPool/'
|
||||
}
|
||||
})
|
||||
},
|
||||
getAgentPersonnelListFirst() {
|
||||
getAgentPersonnelListFirst()
|
||||
.then(res => {
|
||||
if (res.result == 0) {
|
||||
let data = res.content.personnels
|
||||
if (data.length > 5) {
|
||||
this.showMoreTalentPool = true
|
||||
data = data.slice(0, 5)
|
||||
} else {
|
||||
this.showMoreTalentPool = false
|
||||
}
|
||||
this.talentPoolList = data
|
||||
} else {
|
||||
this.$toast(res.resultMessage)
|
||||
}
|
||||
})
|
||||
.catch(() => {})
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
<style lang="scss" scoped>
|
||||
.red {
|
||||
color: #ee0a24 !important;
|
||||
}
|
||||
</style>
|
||||
54
src/views/ebiz/manpower/IncreaseStaffTools.vue
Normal file
@@ -0,0 +1,54 @@
|
||||
<!-- 增员工具 -->
|
||||
<template>
|
||||
<div>
|
||||
<UserInfoHeader />
|
||||
<van-cell-group>
|
||||
<NavItem v-for="(item, index) of navList" :key="index" :config="item" />
|
||||
</van-cell-group>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import UserInfoHeader from '@/components/ebiz/manpower/UserInfoHeader'
|
||||
import NavItem from '@/components/ebiz/manpower/NavItem'
|
||||
|
||||
import { CellGroup } from 'vant'
|
||||
export default {
|
||||
name: 'IncreaseStaffTools',
|
||||
components: {
|
||||
[UserInfoHeader.name]: UserInfoHeader,
|
||||
[NavItem.name]: NavItem,
|
||||
[CellGroup.name]: CellGroup
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
active: 0,
|
||||
navList: [
|
||||
{
|
||||
title: '公司介绍',
|
||||
icon: 'hotel-o',
|
||||
path: '/manpower/increaseStaffTools/CompanyIntroduction'
|
||||
},
|
||||
{
|
||||
title: '政策方案',
|
||||
icon: 'orders-o',
|
||||
path: '/manpower/increaseStaffTools/PolicyOptions'
|
||||
}
|
||||
,
|
||||
{
|
||||
title: '产品信息',
|
||||
icon: 'bookmark-o',
|
||||
path: '/product/productList'
|
||||
}
|
||||
// {
|
||||
// title: '培训体系',
|
||||
// src: 'http://localhost:8080/favicon.ico',
|
||||
// path: '/'
|
||||
// }
|
||||
]
|
||||
}
|
||||
},
|
||||
methods: {}
|
||||
}
|
||||
</script>
|
||||
<style lang="scss" scoped></style>
|
||||
52
src/views/ebiz/manpower/Navigation.vue
Normal file
@@ -0,0 +1,52 @@
|
||||
<template>
|
||||
<div>
|
||||
<UserInfoHeader />
|
||||
<van-cell-group>
|
||||
<NavItem v-for="(item, index) of navList" :key="index" :config="item" />
|
||||
</van-cell-group>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import UserInfoHeader from '@/components/ebiz/manpower/UserInfoHeader'
|
||||
import NavItem from '@/components/ebiz/manpower/NavItem'
|
||||
|
||||
import { CellGroup } from 'vant'
|
||||
export default {
|
||||
name: 'Navigation',
|
||||
components: {
|
||||
[UserInfoHeader.name]: UserInfoHeader,
|
||||
[NavItem.name]: NavItem,
|
||||
[CellGroup.name]: CellGroup
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
active: 0,
|
||||
navList: [
|
||||
{
|
||||
title: '个人中心',
|
||||
icon: 'user-o',
|
||||
path: '/manpower/PersonalCenter'
|
||||
},
|
||||
{
|
||||
title: '增员工具',
|
||||
icon: 'friends-o',
|
||||
path: '/manpower/IncreaseStaffTools'
|
||||
},
|
||||
{
|
||||
title: '活动量管理',
|
||||
icon: 'todo-list-o',
|
||||
path: '/manpower/ActiveManagement'
|
||||
},
|
||||
{
|
||||
title: '培训上岗',
|
||||
icon: 'records',
|
||||
path: '/manpower/Training'
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
methods: {}
|
||||
}
|
||||
</script>
|
||||
<style lang="scss" scoped></style>
|
||||
198
src/views/ebiz/manpower/PersonalCenter.vue
Normal file
@@ -0,0 +1,198 @@
|
||||
<template>
|
||||
<div class="personal-center-main" v-if="success">
|
||||
<van-cell-group class="pl15 mt10">
|
||||
<van-cell title="姓名" :value="agentInfo.name" />
|
||||
<van-cell title="入职职级" :value="agentInfo.entryGrade" />
|
||||
<van-cell title="现任职级" :value="agentInfo.presentGrade" />
|
||||
<van-cell title="入职时间" :value="agentInfo.entryTime" />
|
||||
<van-cell title="现任职级时间" :value="agentInfo.presentGradeTime" />
|
||||
</van-cell-group>
|
||||
|
||||
<van-tabs v-model="active" class="mt10" sticky>
|
||||
<van-tab title="团队人力架构">
|
||||
<van-cell-group class="pl15">
|
||||
<van-cell title="直辖组人力" :value="teamInfo.jurisdictionGroupNum" />
|
||||
<van-cell title="直辖部人力" :value="teamInfo.jurisdictionDepartNum" />
|
||||
<van-cell title="直辖部主管数" :value="teamInfo.jurisdictionGroupManagerNum" />
|
||||
<van-cell title="大直辖人力" :value="teamInfo.majorJurisdictionNum" />
|
||||
<van-cell title="直接增援人数" :value="teamInfo.directReinforceNum" />
|
||||
<van-cell title="直接育成主管数量" :value="teamInfo.directBredManagerNum" />
|
||||
<van-cell title="直接育成部门数量" :value="teamInfo.directBredDepartNum" />
|
||||
<van-cell title="全辖团队人力" :value="teamInfo.allTeamNum" />
|
||||
</van-cell-group>
|
||||
</van-tab>
|
||||
<van-tab title="实时新增数据">
|
||||
<van-grid :border="true" :column-num="2" class="p15">
|
||||
<van-grid-item>
|
||||
当月个人新增
|
||||
<span class="c-gray-darker fwb mt20">{{ realAddDataInfo.currentMonthPersonalAdd }}</span>
|
||||
</van-grid-item>
|
||||
<van-grid-item>
|
||||
直辖组新增
|
||||
<span class="c-gray-darker fwb mt20">{{ realAddDataInfo.jurisdictionGroupAdd }}</span>
|
||||
</van-grid-item>
|
||||
<van-grid-item>
|
||||
直辖部新增
|
||||
<span class="c-gray-darker fwb mt20">{{ realAddDataInfo.jurisdictionDepartAdd }}</span>
|
||||
</van-grid-item>
|
||||
<van-grid-item>
|
||||
大直辖新增
|
||||
<span class="c-gray-darker fwb mt20">{{ realAddDataInfo.majorJurisdictionAdd }}</span>
|
||||
</van-grid-item>
|
||||
</van-grid>
|
||||
</van-tab>
|
||||
<van-tab title="人力架构">
|
||||
<van-collapse v-model="activeNames" accordion>
|
||||
<van-collapse-item v-for="(item, index) of frameworkInfoLstAdmin" :name="index" :key="index">
|
||||
<div slot="title">
|
||||
<span class="tagJOB">{{ item.gradeEnglishName }}</span>
|
||||
{{ item.agentName }} ({{ item.manageStaffNum }})
|
||||
</div>
|
||||
<van-grid :border="true" :column-num="2" class="p15">
|
||||
<van-grid-item>
|
||||
当月个人新增
|
||||
<span class="c-gray-darker fwb mt20">{{ item.personalRealAddDataInfo.currentMonthPersonalAdd }}</span>
|
||||
</van-grid-item>
|
||||
<van-grid-item>
|
||||
直辖组新增
|
||||
<span class="c-gray-darker fwb mt20">{{ item.personalRealAddDataInfo.jurisdictionGroupAdd }}</span>
|
||||
</van-grid-item>
|
||||
<van-grid-item>
|
||||
直辖部新增
|
||||
<span class="c-gray-darker fwb mt20">{{ item.personalRealAddDataInfo.jurisdictionDepartAdd }}</span>
|
||||
</van-grid-item>
|
||||
<van-grid-item>
|
||||
大直辖新增
|
||||
<span class="c-gray-darker fwb mt20">{{ item.personalRealAddDataInfo.majorJurisdictionAdd }}</span>
|
||||
</van-grid-item>
|
||||
</van-grid>
|
||||
</van-collapse-item>
|
||||
</van-collapse>
|
||||
<van-cell-group class="">
|
||||
<van-cell v-for="(item, index) of frameworkInfoLstNotAdmin" :key="index">
|
||||
<div slot="title">
|
||||
<span class="tagJOB">{{ item.gradeEnglishName }}</span>
|
||||
<span class="name">{{ item.agentName }}</span>
|
||||
</div>
|
||||
</van-cell>
|
||||
</van-cell-group>
|
||||
</van-tab>
|
||||
</van-tabs>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
const isAdmin = {
|
||||
BD: true,
|
||||
SBM: true,
|
||||
BM: true,
|
||||
SAS: true,
|
||||
AS: true,
|
||||
CM: false,
|
||||
CA: false
|
||||
}
|
||||
|
||||
import { Cell, CellGroup, Tab, Tabs, Grid, GridItem, Collapse, CollapseItem } from 'vant'
|
||||
import { getPersonalInfo } from '@/api/ebiz/manpower/manpower'
|
||||
export default {
|
||||
name: 'PersonalCenter',
|
||||
components: {
|
||||
[Cell.name]: Cell,
|
||||
[CellGroup.name]: CellGroup,
|
||||
[Tab.name]: Tab,
|
||||
[Tabs.name]: Tabs,
|
||||
[Grid.name]: Grid,
|
||||
[GridItem.name]: GridItem,
|
||||
[Collapse.name]: Collapse,
|
||||
[CollapseItem.name]: CollapseItem
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
activeNames: [],
|
||||
active: '',
|
||||
success: false,
|
||||
agentInfo: null,
|
||||
realAddDataInfo: null,
|
||||
frameworkInfoLst: null,
|
||||
teamInfo: null
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
frameworkInfoLstAdmin: function() {
|
||||
if (this.frameworkInfoLst) {
|
||||
return this.frameworkInfoLst.filter(item => {
|
||||
return isAdmin[item.gradeEnglishName]
|
||||
})
|
||||
}
|
||||
return []
|
||||
},
|
||||
frameworkInfoLstNotAdmin: function() {
|
||||
if (this.frameworkInfoLst) {
|
||||
return this.frameworkInfoLst.filter(item => {
|
||||
return !isAdmin[item.gradeEnglishName]
|
||||
})
|
||||
}
|
||||
return []
|
||||
}
|
||||
},
|
||||
watch: {},
|
||||
created() {
|
||||
getPersonalInfo({
|
||||
agentCode: localStorage.getItem('agentCode')
|
||||
})
|
||||
.then(res => {
|
||||
if (res.result == 0) {
|
||||
for (let key of Object.keys(res.content)) {
|
||||
this[key] = res.content[key]
|
||||
}
|
||||
this.success = true
|
||||
} else {
|
||||
this.$toast(res.resultMessage)
|
||||
}
|
||||
})
|
||||
.catch(() => {})
|
||||
},
|
||||
mounted() {},
|
||||
methods: {}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped="scoped" lang="scss">
|
||||
.personal-center-main {
|
||||
/deep/.van-cell:not(:last-child)::after {
|
||||
position: absolute;
|
||||
box-sizing: border-box;
|
||||
content: ' ';
|
||||
pointer-events: none;
|
||||
right: 0;
|
||||
bottom: 0;
|
||||
left: 0;
|
||||
border-bottom: 1px solid #dadada;
|
||||
-webkit-transform: scaleY(0.5);
|
||||
transform: scaleY(0.5);
|
||||
}
|
||||
/deep/ .van-cell__value {
|
||||
text-align: left !important;
|
||||
}
|
||||
/deep/.van-collapse-item__title {
|
||||
padding-left: 60px;
|
||||
}
|
||||
.tagJOB {
|
||||
display: inline-block;
|
||||
position: absolute;
|
||||
width: 30px;
|
||||
height: 30px;
|
||||
line-height: 30px;
|
||||
font-size: 3vw;
|
||||
left: 20px;
|
||||
top: 7px;
|
||||
text-align: center;
|
||||
border-radius: 999px;
|
||||
background-color: #5ca7de;
|
||||
color: #fff;
|
||||
}
|
||||
.name {
|
||||
padding-left: 45px;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
64
src/views/ebiz/manpower/Training.vue
Normal file
@@ -0,0 +1,64 @@
|
||||
<template>
|
||||
<div>
|
||||
<UserInfoHeader />
|
||||
<van-cell-group>
|
||||
<NavItem v-for="(item, index) of navList" :key="index" :config="item" />
|
||||
</van-cell-group>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import UserInfoHeader from '@/components/ebiz/manpower/UserInfoHeader'
|
||||
import NavItem from '@/components/ebiz/manpower/NavItem'
|
||||
|
||||
import { CellGroup } from 'vant'
|
||||
|
||||
import { getTokenForUserModel } from '@/api/ebiz/manpower/manpower'
|
||||
|
||||
export default {
|
||||
name: 'Navigation',
|
||||
components: {
|
||||
[UserInfoHeader.name]: UserInfoHeader,
|
||||
[NavItem.name]: NavItem,
|
||||
[CellGroup.name]: CellGroup
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
active: 0,
|
||||
navList: [
|
||||
{
|
||||
title: '增员分享',
|
||||
icon: 'cluster-o',
|
||||
path: '/',
|
||||
share: true,
|
||||
shareConfig: null
|
||||
},
|
||||
{
|
||||
title: '增员审批',
|
||||
icon: 'comment-o',
|
||||
path: '/agentEenter/approve/ApproveList'
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
created() {
|
||||
this.getInfo()
|
||||
},
|
||||
methods: {
|
||||
async getInfo() {
|
||||
const res = await getTokenForUserModel()
|
||||
if (res.result == 0) {
|
||||
this.navList[0].shareConfig = {
|
||||
title: res.title,
|
||||
url: res.url,
|
||||
content: res.content,
|
||||
img: res.icon
|
||||
}
|
||||
} else {
|
||||
this.$toast(res.resultMessage)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
<style lang="scss" scoped></style>
|
||||
250
src/views/ebiz/manpower/activityLog/Edit.vue
Normal file
@@ -0,0 +1,250 @@
|
||||
<!-- 活动日志-修改日志 -->
|
||||
<template>
|
||||
<div>
|
||||
<van-cell-group>
|
||||
<van-field readonly v-model="recordInfo.recordDate" label="日期" />
|
||||
<van-field
|
||||
:readonly="isDisable"
|
||||
required
|
||||
v-model="recordInfo.name"
|
||||
label="姓名"
|
||||
placeholder="请输入姓名"
|
||||
v-validate="'required|manpowerName'"
|
||||
data-vv-name="姓名"
|
||||
/>
|
||||
<van-field
|
||||
:readonly="isDisable"
|
||||
required
|
||||
v-model="recordInfo.age"
|
||||
type="digit"
|
||||
label="年龄"
|
||||
placeholder="请输入年龄"
|
||||
v-validate="'required|onlyNumber|maxAge'"
|
||||
data-vv-name="年龄"
|
||||
/>
|
||||
<select-radio :disabled="isDisable" :radios="typeArr" label="类型" name="类型" :value.sync="recordInfo.type" :required="true"></select-radio>
|
||||
<van-field
|
||||
:readonly="isDisable"
|
||||
required
|
||||
v-model="recordInfo.interviewNum"
|
||||
type="digit"
|
||||
label="面谈次数"
|
||||
placeholder="请输入面谈次数"
|
||||
v-validate="'required|onlyNumber'"
|
||||
data-vv-name="面谈次数"
|
||||
/>
|
||||
<van-field
|
||||
required
|
||||
readonly
|
||||
v-model="logResult"
|
||||
label="面谈结果"
|
||||
placeholder="请选择面谈结果"
|
||||
@click="handleRsult"
|
||||
v-validate="'required'"
|
||||
data-vv-name="面谈结果"
|
||||
/>
|
||||
<van-field
|
||||
required
|
||||
readonly
|
||||
v-model="logOccupation"
|
||||
label="过往职业"
|
||||
placeholder="请选择过往职业"
|
||||
@click="handleOccupation"
|
||||
v-validate="'required'"
|
||||
data-vv-name="过往职业"
|
||||
/>
|
||||
</van-cell-group>
|
||||
<van-button type="danger" class="bottom-btn" size="large" v-no-more-click="1000" v-if="isEdit == 0" @click="subInfo">保存</van-button>
|
||||
<van-popup v-model="showResultArr" position="bottom" :style="{ height: '30%' }">
|
||||
<van-picker show-toolbar :columns="resultArr" @cancel="showResultArr = false" @confirm="selectResult" />
|
||||
</van-popup>
|
||||
<van-popup v-model="showOccupationArr" position="bottom" :style="{ height: '30%' }">
|
||||
<van-picker show-toolbar :columns="occupationArr" @cancel="showOccupationArr = false" @confirm="selectOccupation" />
|
||||
</van-popup>
|
||||
</div>
|
||||
</template>
|
||||
<script>
|
||||
import formatDate from '@/assets/js/utils/date-utils'
|
||||
import { Field, CellGroup, Popup, Picker, Cell, Button } from 'vant'
|
||||
import { queryRecordDetail, saveRecord } from '@/api/ebiz/manpower/manpower'
|
||||
import SelectRadio from '@/components/ebiz/SelectRadio'
|
||||
export default {
|
||||
components: {
|
||||
[Cell.name]: Cell,
|
||||
[Field.name]: Field,
|
||||
[CellGroup.name]: CellGroup,
|
||||
[Button.name]: Button,
|
||||
[Popup.name]: Popup,
|
||||
[Picker.name]: Picker,
|
||||
[SelectRadio.name]: SelectRadio
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
recordInfo: {
|
||||
recordDate: formatDate.formatDate().split(' ')[0],
|
||||
name: '',
|
||||
age: '',
|
||||
type: 0,
|
||||
interviewNum: '', // 面试次数
|
||||
interviewResult: '', // 面谈结果
|
||||
pastOccu: '' // 过往职业
|
||||
},
|
||||
recordCode: '',
|
||||
isEdit: '',
|
||||
isDisable: '',
|
||||
// 面试结果
|
||||
showResultArr: false,
|
||||
// 职业选择
|
||||
showOccupationArr: false,
|
||||
typeArr: [
|
||||
{
|
||||
label: '同业',
|
||||
value: '0'
|
||||
},
|
||||
{
|
||||
label: '白板',
|
||||
value: '1'
|
||||
}
|
||||
],
|
||||
resultArr: [{ id: '0', text: '不加盟' }, { id: '1', text: '考虑中' }, { id: '2', text: '进班了解' }, { id: '3', text: '同意加盟' }],
|
||||
occupationArr: [
|
||||
{ id: '001', text: '一般内勤职员' },
|
||||
{ id: '002', text: '其他金融行业' },
|
||||
{ id: '003', text: '家庭主妇' },
|
||||
{ id: '004', text: '自由职业' },
|
||||
{ id: '005', text: '离退休人员' },
|
||||
{ id: '006', text: '个体经营者' },
|
||||
{ id: '007', text: '销售' },
|
||||
{ id: '008', text: '公务员' },
|
||||
{ id: '009', text: '保险外勤' },
|
||||
{ id: '010', text: '保险内勤' },
|
||||
{ id: '011', text: '其他' }
|
||||
]
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
this.recordCode = this.$route.query.code || ''
|
||||
this.isEdit = this.$route.query.isEdit
|
||||
this.isDisable = this.isEdit == '1'
|
||||
this.queryRecordDetail()
|
||||
},
|
||||
computed: {
|
||||
logResult() {
|
||||
if (this.recordInfo.interviewResult) {
|
||||
return this.resultArr.find(ele => ele.id === this.recordInfo.interviewResult).text
|
||||
} else {
|
||||
return ''
|
||||
}
|
||||
},
|
||||
logOccupation() {
|
||||
if (this.recordInfo.pastOccu) {
|
||||
return this.occupationArr.find(ele => ele.id === this.recordInfo.pastOccu).text
|
||||
} else {
|
||||
return ''
|
||||
}
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
queryRecordDetail() {
|
||||
if (!this.recordCode) {
|
||||
return false
|
||||
}
|
||||
let data = {
|
||||
recordCode: this.recordCode
|
||||
}
|
||||
queryRecordDetail(data)
|
||||
.then(res => {
|
||||
console.log(res)
|
||||
if (res.result == 0) {
|
||||
this.recordInfo = res.content.record
|
||||
} else {
|
||||
this.$toast(res.resultMessage)
|
||||
}
|
||||
})
|
||||
.catch(err => {
|
||||
console.log(err)
|
||||
})
|
||||
},
|
||||
subInfo() {
|
||||
this.$validator.validateAll().then(result => {
|
||||
if (result) {
|
||||
let data = {
|
||||
recordCode: this.recordCode,
|
||||
name: this.recordInfo.name,
|
||||
age: this.recordInfo.age,
|
||||
type: this.recordInfo.type || '0',
|
||||
interviewNum: this.recordInfo.interviewNum,
|
||||
interviewResult: this.recordInfo.interviewResult,
|
||||
pastOccu: this.recordInfo.pastOccu
|
||||
}
|
||||
console.log(data)
|
||||
saveRecord(data)
|
||||
.then(res => {
|
||||
console.log(res)
|
||||
if (res.result == 0) {
|
||||
this.$jump({
|
||||
flag: 'goBack',
|
||||
extra: {
|
||||
refresh: '1',
|
||||
index: '-1',
|
||||
forbidSwipeBack: '1'
|
||||
},
|
||||
routerInfo: {
|
||||
type: 2
|
||||
}
|
||||
})
|
||||
} else {
|
||||
this.$toast(res.resultMessage)
|
||||
}
|
||||
})
|
||||
.catch(err => {
|
||||
console.log(err)
|
||||
})
|
||||
} else {
|
||||
this.$toast(this.errors.all()[0])
|
||||
}
|
||||
})
|
||||
},
|
||||
slectType(type) {
|
||||
this.recordInfo.type = type.id
|
||||
},
|
||||
handleRsult() {
|
||||
if (this.isDisable) {
|
||||
return false
|
||||
}
|
||||
this.showResultArr = true
|
||||
},
|
||||
handleOccupation() {
|
||||
if (this.isDisable) {
|
||||
return false
|
||||
}
|
||||
this.showOccupationArr = true
|
||||
},
|
||||
selectResult(val) {
|
||||
this.recordInfo.interviewResult = val.id
|
||||
this.showResultArr = false
|
||||
},
|
||||
selectOccupation(val) {
|
||||
this.recordInfo.pastOccu = val.id
|
||||
this.showOccupationArr = false
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
<style lang="scss" scoped>
|
||||
::v-deep .van-cell__title {
|
||||
max-width: 90px;
|
||||
}
|
||||
.type-tag {
|
||||
// display: inline-block;
|
||||
width: 40px;
|
||||
height: 16px;
|
||||
border: 1px solid gray;
|
||||
border-radius: 4px;
|
||||
}
|
||||
.select-tag {
|
||||
background: #1989fa;
|
||||
color: white;
|
||||
border: none;
|
||||
}
|
||||
</style>
|
||||
105
src/views/ebiz/manpower/activityLog/List.vue
Normal file
@@ -0,0 +1,105 @@
|
||||
<!-- 活动日志-日志列表 -->
|
||||
<template>
|
||||
<div class="pb60">
|
||||
<div class="p15 flex justify-content-s align-items-c">
|
||||
<p>
|
||||
<span v-if="isToday" class="fwb">今天</span>
|
||||
<span v-else class="blue" @click="backToday">回到今天</span>
|
||||
</p>
|
||||
<p @click="openCalendar">{{ showTime }}</p>
|
||||
</div>
|
||||
<ActivityLogItem :ActivityLogInfo="item" v-for="(item, index) in recordList" :key="index"></ActivityLogItem>
|
||||
<!-- <div class="bottom-btn text-center">
|
||||
<van-icon name="add-square" size="50" color="#ee0a24" @click="toEdit" />
|
||||
</div> -->
|
||||
<van-button type="danger" class="bottom-btn" size="large" @click="toEdit" v-no-more-click="1000">新增</van-button>
|
||||
<van-popup v-model="showDateTime" position="bottom" :style="{ height: '30%' }">
|
||||
<van-datetime-picker v-model="selectTime" type="date" :max-date="maxDate" @confirm="confirm" @cancel="cancel" />
|
||||
</van-popup>
|
||||
</div>
|
||||
</template>
|
||||
<script>
|
||||
import formatDate from '@/assets/js/utils/date-utils'
|
||||
import { DatetimePicker, Popup } from 'vant'
|
||||
import ActivityLogItem from '@/components/ebiz/manpower/ActivityLogItem'
|
||||
import { queryRecordList } from '@/api/ebiz/manpower/manpower'
|
||||
|
||||
export default {
|
||||
components: {
|
||||
[DatetimePicker.name]: DatetimePicker,
|
||||
[Popup.name]: Popup,
|
||||
ActivityLogItem
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
isToday: true,
|
||||
showTime: `< ${formatDate.formatDate().split(' ')[0]} >`,
|
||||
todayTime: `< ${formatDate.formatDate().split(' ')[0]} >`,
|
||||
selectTime: new Date(),
|
||||
maxDate: new Date(),
|
||||
showDateTime: false,
|
||||
ActivityLogInfo: {
|
||||
name: '王辉',
|
||||
// avatarUrl: 'https://img.yzcdn.cn/vant/cat.jpeg',
|
||||
age: '35岁',
|
||||
flag: '同业',
|
||||
recordDate: ''
|
||||
},
|
||||
recordList: []
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
this.queryRecordList(formatDate.formatDate().split(' ')[0])
|
||||
},
|
||||
methods: {
|
||||
queryRecordList(date) {
|
||||
let data = {
|
||||
recordDate: date
|
||||
}
|
||||
queryRecordList(data)
|
||||
.then(res => {
|
||||
console.log(res)
|
||||
if (res.result == 0) {
|
||||
this.recordList = res.content.records
|
||||
} else {
|
||||
this.$toast(res.resultMessage)
|
||||
}
|
||||
})
|
||||
.catch(err => {
|
||||
console.log(err)
|
||||
})
|
||||
},
|
||||
toEdit() {
|
||||
this.$jump({
|
||||
flag: 'h5',
|
||||
extra: {
|
||||
url: location.origin + `/#/manpower/ActivityLog/Edit?isEdit=0`,
|
||||
forbidSwipeBack: '1'
|
||||
},
|
||||
routerInfo: { path: '/manpower/ActivityLog/Edit?isEdit=0' }
|
||||
})
|
||||
},
|
||||
openCalendar() {
|
||||
this.showDateTime = true
|
||||
},
|
||||
confirm(val) {
|
||||
this.showTime = `< ${formatDate.formatDate(val).split(' ')[0]} >`
|
||||
this.ActivityLogInfo.recordDate = formatDate.formatDate(val).split(' ')[0]
|
||||
if (this.showTime !== this.todayTime) {
|
||||
this.isToday = false
|
||||
}
|
||||
this.queryRecordList(formatDate.formatDate(val).split(' ')[0])
|
||||
this.showDateTime = false
|
||||
},
|
||||
cancel() {
|
||||
this.showDateTime = false
|
||||
},
|
||||
backToday() {
|
||||
this.showTime = this.todayTime
|
||||
this.ActivityLogInfo.recordDate = formatDate.formatDate().split(' ')[0]
|
||||
this.isToday = true
|
||||
this.queryRecordList(formatDate.formatDate().split(' ')[0])
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
BIN
src/views/ebiz/manpower/image/1.png
Normal file
|
After Width: | Height: | Size: 92 KiB |
BIN
src/views/ebiz/manpower/image/10.png
Normal file
|
After Width: | Height: | Size: 547 KiB |
BIN
src/views/ebiz/manpower/image/11.png
Normal file
|
After Width: | Height: | Size: 2.0 MiB |
BIN
src/views/ebiz/manpower/image/12.png
Normal file
|
After Width: | Height: | Size: 295 KiB |
BIN
src/views/ebiz/manpower/image/13.png
Normal file
|
After Width: | Height: | Size: 890 KiB |
BIN
src/views/ebiz/manpower/image/2.png
Normal file
|
After Width: | Height: | Size: 851 KiB |
BIN
src/views/ebiz/manpower/image/3.png
Normal file
|
After Width: | Height: | Size: 936 KiB |
BIN
src/views/ebiz/manpower/image/4.png
Normal file
|
After Width: | Height: | Size: 897 KiB |
BIN
src/views/ebiz/manpower/image/5.png
Normal file
|
After Width: | Height: | Size: 180 KiB |
BIN
src/views/ebiz/manpower/image/6.png
Normal file
|
After Width: | Height: | Size: 1.5 MiB |
BIN
src/views/ebiz/manpower/image/7.png
Normal file
|
After Width: | Height: | Size: 2.6 MiB |
BIN
src/views/ebiz/manpower/image/8.png
Normal file
|
After Width: | Height: | Size: 1.3 MiB |
BIN
src/views/ebiz/manpower/image/9.png
Normal file
|
After Width: | Height: | Size: 338 KiB |
@@ -0,0 +1,145 @@
|
||||
<!-- 公司介绍 -->
|
||||
<template>
|
||||
<div class="p15 bg-white">
|
||||
<p class="fs18 fwb">一、公司介绍</p>
|
||||
<van-image width="100%" height="150" :src="img1" class="mt15" />
|
||||
<p class="fs14 indent">
|
||||
国富人寿保险股份有限公司由广西投资集团有限公司、广州唯品会信息科技有限公司、吉安新年广告传媒有限公司、北京信中利投资股份有限公司、湖北三峡华翔集团有限公司、广西日报传媒集团有限公司、上海恒大建材市场管理股份有限公司、广西名都生态科技发展有限公司等8家公司共同发起创立。公司注册地在我国面向东盟开放合作的前沿城市——南宁。
|
||||
</p>
|
||||
<p class="fs14 indent">
|
||||
国富人寿将秉持“老有所养,病有所医,红利共享,国富民安”的核心理念,以“让更多的人过上有尊严的健康快乐的生活”作为企业使命,树立并践行“简单、专注、诚信、激情、关爱、领先”的价值观。专注于客户体验,研发满足客户需求的产品,为客户提供有温度的服务。依法合规、稳健经营,立足广西、深耕广西、面向全国,更好地回馈社会、回报股东、与时俱进、超越自我。
|
||||
</p>
|
||||
<p class="fs18 fwb">二、国富大事件</p>
|
||||
<p class="fs14">1、国富人寿连续五个季度获得A类风险综合评级</p>
|
||||
<p class="fs14">2、国富人寿荣获第九届中国公益节“社会责任行业典范奖”</p>
|
||||
<van-image width="100%" :src="img2" class="mt15" />
|
||||
<p class="fs14">3、第十三届金蝉奖颁奖盛典举行 国富人寿获“2019年度成长力保险公司”奖</p>
|
||||
<van-image width="100%" :src="img3" class="mt15" />
|
||||
<p class="fs14">4、2019南宁国际马拉松燃情开跑!国富人寿圆满完成赛事保障工作!</p>
|
||||
<van-image width="100%" :src="img4" class="mt15" />
|
||||
<p class="fs14">5、国富人寿总经理储良出席第五届中国-东盟保险合作与发展论坛并作主题发言</p>
|
||||
<van-image width="100%" :src="img5" class="mt15" />
|
||||
<p class="fs14">6、广西广播电视台报道国富人寿为企业复工复产捐赠保险</p>
|
||||
<van-image width="100%" :src="img6" class="mt15" />
|
||||
<p class="fs14">7、共同战“疫” 勇做表率丨国富人寿党总支为都安县捐赠医用隔离衣600套</p>
|
||||
<van-image width="100%" :src="img7" class="mt15" />
|
||||
<p class="fs14">8、为广西医护人员追加近450亿保险保障 国富人寿支持抗疫再升级!</p>
|
||||
<van-image width="100%" :src="img8" class="mt15" />
|
||||
<p class="fs14">9、国富有爱 “邕”有安心 ——国富人寿为支持南宁企业复工复产捐赠包含新冠肺炎身故责任的保险</p>
|
||||
<van-image width="100%" :src="img9" class="mt15" />
|
||||
<p class="fs14">10、国富人寿为全体签约代理人及其亲属提供每人20万元专属保障</p>
|
||||
<van-image width="100%" :src="img10" class="mt15" />
|
||||
<p class="fs14">
|
||||
11、2019年10月17日,国富人寿在广西品牌节评选活动中荣获广西“杰出品牌”称号,是12家获评杰出品牌企业中唯一一家保险公司。标志着国富人寿在广西保险市场上崭露头角。
|
||||
</p>
|
||||
<van-image width="100%" :src="img11" class="mt15" />
|
||||
<p class="fs14">
|
||||
12、为广西人量身定制开发的八桂无忧重大疾病保险产品,荣获《中国保险报》评选的“2018年度健康保险产品”和行业主流媒体颁发的“2019十佳商业健康保险推荐产品”称号
|
||||
</p>
|
||||
<van-image width="100%" :src="img12" class="mt15" />
|
||||
<p class="fs14">13、热烈祝贺公司2020年期交保费超亿元!同比2019年全年成长235%!</p>
|
||||
<van-image width="100%" :src="img13" class="mt15" />
|
||||
<p class="fs14">
|
||||
14、2019年
|
||||
6月18日,国富人寿经主动排查获悉,百色市乐业县百坭村第一书记黄文秀在6月16日途经凌云时遭遇山洪不幸遇难,而黄文秀正在公司扶贫攻坚驻村第一书记赠险名单之列。获悉情况后,国富人寿总分公司联动,立即启动理赔应急预案,开启理赔绿色通道,于6月19日收齐理赔资料后,当天结案赔付,将20万元理赔金送到家属手上。
|
||||
</p>
|
||||
</div>
|
||||
</template>
|
||||
<script>
|
||||
import { Image } from 'vant'
|
||||
import { getShareKey, saveShareRecord } from '@/api/ebiz/manpower/manpower'
|
||||
|
||||
export default {
|
||||
components: {
|
||||
[Image.name]: Image
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
img1: require('../image/1.png'),
|
||||
img2: require('../image/2.png'),
|
||||
img3: require('../image/3.png'),
|
||||
img4: require('../image/4.png'),
|
||||
img5: require('../image/5.png'),
|
||||
img6: require('../image/6.png'),
|
||||
img7: require('../image/7.png'),
|
||||
img8: require('../image/8.png'),
|
||||
img9: require('../image/9.png'),
|
||||
img10: require('../image/10.png'),
|
||||
img11: require('../image/11.png'),
|
||||
img12: require('../image/12.png'),
|
||||
img13: require('../image/13.png'),
|
||||
redisKey: ''
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
this.redisKey = this.$route.query.redisKey
|
||||
if (this.redisKey) this.saveShareRecord('1')
|
||||
else this.getShareKey()
|
||||
setTimeout(() => {
|
||||
// 右上角的显示
|
||||
this.$jump({
|
||||
flag: 'webview_right_button',
|
||||
extra: {
|
||||
btns: [
|
||||
{
|
||||
img: this.$assetsUrl + 'images/share@3x.png'
|
||||
}
|
||||
]
|
||||
}
|
||||
})
|
||||
}, 1000)
|
||||
window['appCallBack'] = this.appCallBack
|
||||
},
|
||||
methods: {
|
||||
appCallBack(data) {
|
||||
if (data.trigger == 'right_button_click') {
|
||||
this.saveShareRecord('0')
|
||||
// eslint-disable-next-line no-undef
|
||||
EWebBridge.webCallAppInJs('bridge', {
|
||||
flag: 'share',
|
||||
extra: {
|
||||
title: '国富人寿保险股份有限公司',
|
||||
content: '公司介绍',
|
||||
url: `${location.origin}/#/manpower/increaseStaffTools/CompanyIntroduction?redisKey=${this.redisKey}`,
|
||||
img: this.$assetsUrl + 'images/logo.png'
|
||||
}
|
||||
})
|
||||
}
|
||||
},
|
||||
getShareKey() {
|
||||
let data = {
|
||||
linkType: '0001',
|
||||
url: `${location.origin}/#/manpower/increaseStaffTools/CompanyIntroduction`
|
||||
}
|
||||
getShareKey(data)
|
||||
.then(res => {
|
||||
console.log(res)
|
||||
if (res.result == 0) {
|
||||
this.redisKey = res.content
|
||||
} else {
|
||||
this.$toast(res.resultMessage)
|
||||
}
|
||||
})
|
||||
.catch(err => {
|
||||
console.log(err)
|
||||
})
|
||||
},
|
||||
saveShareRecord(flag) {
|
||||
let data = {
|
||||
linkType: '0001',
|
||||
flag: flag,
|
||||
redisKey: this.redisKey
|
||||
}
|
||||
saveShareRecord(data)
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
<style lang="scss" scoped>
|
||||
.indent {
|
||||
text-indent: 24px;
|
||||
}
|
||||
p {
|
||||
line-height: 28px;
|
||||
}
|
||||
</style>
|
||||
103
src/views/ebiz/manpower/increaseStaffTools/PdfShare.vue
Normal file
@@ -0,0 +1,103 @@
|
||||
<template>
|
||||
<div>
|
||||
<iframe :src="src + pdfUrl" style="width:100vw;height:100vh"></iframe>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { getShareKey, saveShareRecord } from '@/api/ebiz/manpower/manpower'
|
||||
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
// src: 'http://47.96.143.111/pdfjs/web/viewer.html?file=http://47.96.143.111:8000/app/images/jsSDK.pdf'
|
||||
pdfUrl: '',
|
||||
src: location.origin + '/pdfjs/web/viewer.html?file=',
|
||||
shareContent: '',
|
||||
redisKey: ''
|
||||
}
|
||||
},
|
||||
created() {
|
||||
setTimeout(() => {
|
||||
// 右上角的显示
|
||||
this.$jump({
|
||||
flag: 'webview_right_button',
|
||||
extra: {
|
||||
btns: [
|
||||
{
|
||||
img: this.$assetsUrl + 'images/share@3x.png'
|
||||
}
|
||||
]
|
||||
}
|
||||
})
|
||||
}, 1000)
|
||||
window['appCallBack'] = this.appCallBack
|
||||
},
|
||||
mounted() {
|
||||
this.init()
|
||||
this.redisKey = this.$route.query.redisKey
|
||||
if (this.redisKey) this.saveShareRecord('1')
|
||||
else this.getShareKey()
|
||||
},
|
||||
methods: {
|
||||
init() {
|
||||
let num = this.$route.query.pdf
|
||||
switch (num) {
|
||||
case '0':
|
||||
this.pdfUrl = this.$assetsUrl + 'personnel/recruitment.pdf'
|
||||
this.shareContent = '个险渠道2020年聘才方案'
|
||||
document.title = '个险渠道2020年聘才方案'
|
||||
break
|
||||
case '1':
|
||||
this.pdfUrl = this.$assetsUrl + 'personnel/allowance.pdf'
|
||||
this.shareContent = '个险渠道筹备津贴方案'
|
||||
document.title = '个险渠道筹备津贴方案'
|
||||
break
|
||||
}
|
||||
},
|
||||
// 原生点击右上角按钮事件
|
||||
appCallBack(data) {
|
||||
if (data.trigger == 'right_button_click') {
|
||||
this.saveShareRecord('0')
|
||||
let pdf = this.$route.query.pdf
|
||||
// eslint-disable-next-line no-undef
|
||||
EWebBridge.webCallAppInJs('bridge', {
|
||||
flag: 'share',
|
||||
extra: {
|
||||
title: '国富人寿欢迎您!',
|
||||
content: this.shareContent,
|
||||
url: `${location.origin}/#/manpower/increaseStaffTools/PdfShare?pdf=${pdf}&redisKey=${this.redisKey}`,
|
||||
img: this.$assetsUrl + 'images/logo.png'
|
||||
}
|
||||
})
|
||||
}
|
||||
},
|
||||
getShareKey() {
|
||||
let data = {
|
||||
linkType: '0002',
|
||||
url: `${location.origin}/pdfjs/web/viewer.html?file=${this.pdfUrl}`
|
||||
}
|
||||
getShareKey(data)
|
||||
.then(res => {
|
||||
console.log(res)
|
||||
if (res.result == 0) {
|
||||
this.redisKey = res.content
|
||||
} else {
|
||||
this.$toast(res.resultMessage)
|
||||
}
|
||||
})
|
||||
.catch(err => {
|
||||
console.log(err)
|
||||
})
|
||||
},
|
||||
saveShareRecord(flag) {
|
||||
let data = {
|
||||
linkType: '0002',
|
||||
flag: flag,
|
||||
redisKey: this.redisKey
|
||||
}
|
||||
saveShareRecord(data)
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
32
src/views/ebiz/manpower/increaseStaffTools/PolicyOptions.vue
Normal file
@@ -0,0 +1,32 @@
|
||||
<!-- 政策方案 -->
|
||||
<template>
|
||||
<div>
|
||||
<van-cell-group>
|
||||
<van-cell value="个险渠道2020年聘才方案" is-link @click="toPdf(0)" />
|
||||
<van-cell value="个险渠道筹备津贴方案" is-link @click="toPdf(1)" />
|
||||
</van-cell-group>
|
||||
</div>
|
||||
</template>
|
||||
<script>
|
||||
import { Cell, CellGroup } from 'vant'
|
||||
|
||||
export default {
|
||||
components: {
|
||||
[Cell.name]: Cell,
|
||||
[CellGroup.name]: CellGroup
|
||||
},
|
||||
methods: {
|
||||
toPdf(num) {
|
||||
console.log(num)
|
||||
this.$jump({
|
||||
flag: 'h5',
|
||||
extra: {
|
||||
url: location.origin + `/#/manpower/increaseStaffTools/PdfShare?pdf=${num}`,
|
||||
forbidSwipeBack: '1'
|
||||
},
|
||||
routerInfo: { path: `/manpower/increaseStaffTools/PdfShare?pdf=${num}` }
|
||||
})
|
||||
}
|
||||
},
|
||||
}
|
||||
</script>
|
||||
@@ -0,0 +1 @@
|
||||
<!-- 产品信息 -->
|
||||
@@ -0,0 +1 @@
|
||||
<!-- 培训体系 -->
|
||||
5
src/views/ebiz/manpower/js/verification.js
Normal file
@@ -0,0 +1,5 @@
|
||||
|
||||
//验证
|
||||
export function demo(par) {
|
||||
|
||||
}
|
||||
157
src/views/ebiz/manpower/talentPool/Add.vue
Normal file
@@ -0,0 +1,157 @@
|
||||
<!-- 人才库-新增人才 -->
|
||||
<template>
|
||||
<div class="container">
|
||||
<van-field v-model="formData.name" required clearable label="姓名" name="姓名" placeholder="请输入" v-validate="'required|manpowerName'" />
|
||||
<van-field v-model="formData.mobile" clearable label="手机号码" name="手机号码" placeholder="请输入" maxlength="11" type="tel" v-validate="'mobile'" />
|
||||
<select-radio :radios="isSame" label="是否同业" name="是否同业" :value.sync="formData.isSame" :required="true"></select-radio>
|
||||
<!-- 为 异业公司 时,要求填写 -->
|
||||
<template v-if="formData.isSame == '1'">
|
||||
<van-field
|
||||
:value="formData.pastOccu | idToText('talentPoolPastOccu')"
|
||||
readonly
|
||||
required
|
||||
label="过往职业"
|
||||
name="过往职业"
|
||||
right-icon="arrow"
|
||||
placeholder="请选择"
|
||||
@click="toSelect('pastOccu')"
|
||||
/>
|
||||
</template>
|
||||
<!-- 为 异业公司 时,要求填写 end-->
|
||||
<!-- 为 同业公司 时,要求填写 -->
|
||||
<template v-if="formData.isSame == '0'">
|
||||
<van-field v-model="formData.sameCompany" required clearable label="同业公司" name="同业公司" placeholder="请输入" v-validate="'required|sameCompany'" />
|
||||
<select-radio
|
||||
:radios="gradeType"
|
||||
label="岗位类型"
|
||||
name="岗位类型"
|
||||
:value.sync="formData.gradeType"
|
||||
:required="true"
|
||||
v-validate="'required'"
|
||||
></select-radio>
|
||||
<van-field v-model="formData.grade" required clearable label="职级/岗位" name="职级/岗位" placeholder="请输入" v-validate="'required|max120'" />
|
||||
<van-field v-model="formData.workYears" required clearable label="从业年限" name="从业年限" placeholder="请输入" v-validate="'required|workYears'" />
|
||||
</template>
|
||||
<!-- 为 同业公司 时,要求填写 end -->
|
||||
<van-field
|
||||
:value="formData.status | idToText('talentPoolStatus')"
|
||||
readonly
|
||||
required
|
||||
label="状态"
|
||||
name="状态"
|
||||
right-icon="arrow"
|
||||
placeholder="请选择"
|
||||
@click="toSelect('status')"
|
||||
/>
|
||||
<van-button type="danger" class="bottom-btn" size="large" @click="save">保存</van-button>
|
||||
<van-popup v-model="popupShow" position="bottom"><van-picker show-toolbar :columns="columns" @confirm="onConfirm" @cancel="popupShow = false"/></van-popup>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { Field, CellGroup, Cell, Popup, Picker } from 'vant'
|
||||
import filter from '@/filters/index'
|
||||
import DataDictionary from '@/assets/js/utils/data-dictionary'
|
||||
import SelectRadio from '@/components/ebiz/SelectRadio'
|
||||
|
||||
import { saveAgentPersonnel } from '@/api/ebiz/manpower/manpower'
|
||||
|
||||
export default {
|
||||
name: 'TalentPoolAdd',
|
||||
components: {
|
||||
[Field.name]: Field,
|
||||
[CellGroup.name]: CellGroup,
|
||||
[Cell.name]: Cell,
|
||||
[Popup.name]: Popup,
|
||||
[Picker.name]: Picker,
|
||||
[SelectRadio.name]: SelectRadio
|
||||
},
|
||||
filters: {
|
||||
idToText: filter.idToText
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
selected: '',
|
||||
popupShow: false,
|
||||
formData: {
|
||||
name: '',
|
||||
mobile: '',
|
||||
isSame: '0',
|
||||
pastOccu: '01',
|
||||
sameCompany: '',
|
||||
gradeType: '0',
|
||||
grade: '',
|
||||
workYears: '',
|
||||
status: 0
|
||||
},
|
||||
gradeType: [
|
||||
{
|
||||
label: '内勤',
|
||||
value: '0'
|
||||
},
|
||||
{
|
||||
label: '外勤',
|
||||
value: '1'
|
||||
}
|
||||
],
|
||||
isSame: [
|
||||
{
|
||||
label: '是',
|
||||
value: '0'
|
||||
},
|
||||
{
|
||||
label: '否',
|
||||
value: '1'
|
||||
}
|
||||
],
|
||||
columns: null
|
||||
}
|
||||
},
|
||||
watch: {},
|
||||
created() {},
|
||||
mounted() {},
|
||||
methods: {
|
||||
toSelect(name) {
|
||||
this.selected = name
|
||||
this.popupShow = true
|
||||
switch (name) {
|
||||
case 'pastOccu':
|
||||
this.columns = DataDictionary.talentPoolPastOccu
|
||||
break
|
||||
case 'status':
|
||||
this.columns = DataDictionary.talentPoolStatus
|
||||
break
|
||||
default:
|
||||
break
|
||||
}
|
||||
},
|
||||
onConfirm(value) {
|
||||
this.popupShow = false
|
||||
this.formData[this.selected] = value.id
|
||||
},
|
||||
save() {
|
||||
this.$validator.validateAll().then(result => {
|
||||
if (result) {
|
||||
saveAgentPersonnel(this.formData)
|
||||
.then(res => {
|
||||
if (res.result == 0) {
|
||||
//eslint-disable-next-line
|
||||
EWebBridge.webCallAppInJs('goBack', {
|
||||
refresh: '1',
|
||||
index: '-1'
|
||||
})
|
||||
} else {
|
||||
this.$toast(res.resultMessage)
|
||||
}
|
||||
})
|
||||
.catch(() => {})
|
||||
} else {
|
||||
this.$toast(this.errors.all()[0])
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped="scoped" lang="scss"></style>
|
||||
170
src/views/ebiz/manpower/talentPool/Edit.vue
Normal file
@@ -0,0 +1,170 @@
|
||||
<!-- 人才库-修改人才 -->
|
||||
<template>
|
||||
<div class="container" v-show="show">
|
||||
<van-field v-model="formData.name" required clearable label="姓名" name="姓名" placeholder="请输入" v-validate="'required|manpowerName'" />
|
||||
<van-field v-model="formData.mobile" clearable label="手机号码" name="手机号码" placeholder="请输入" maxlength="11" type="tel" v-validate="'mobile'" />
|
||||
<select-radio :disabled="true" :radios="isSame" label="是否同业" name="是否同业" :value.sync="formData.isSame" :required="true"></select-radio>
|
||||
<!-- 为 异业公司 时,要求填写 -->
|
||||
<template v-if="formData.isSame == '1'">
|
||||
<van-field
|
||||
:value="formData.pastOccu | idToText('talentPoolPastOccu')"
|
||||
readonly
|
||||
required
|
||||
label="过往职业"
|
||||
name="过往职业"
|
||||
right-icon="arrow"
|
||||
placeholder="请选择"
|
||||
@click="toSelect('pastOccu')"
|
||||
/>
|
||||
</template>
|
||||
<!-- 为 异业公司 时,要求填写 end-->
|
||||
<!-- 为 同业公司 时,要求填写 -->
|
||||
<template v-if="formData.isSame == '0'">
|
||||
<van-field v-model="formData.sameCompany" required clearable label="同业公司" name="同业公司" placeholder="请输入" v-validate="'required|sameCompany'" />
|
||||
<select-radio
|
||||
:radios="gradeType"
|
||||
label="岗位类型"
|
||||
name="岗位类型"
|
||||
:value.sync="formData.gradeType"
|
||||
:required="true"
|
||||
v-validate="'required'"
|
||||
></select-radio>
|
||||
<van-field v-model="formData.grade" required clearable label="职级/岗位" name="职级/岗位" placeholder="请输入" v-validate="'required|max120'" />
|
||||
<van-field v-model="formData.workYears" required clearable label="从业年限" name="从业年限" placeholder="请输入" v-validate="'required|workYears'" />
|
||||
</template>
|
||||
<!-- 为 同业公司 时,要求填写 end -->
|
||||
<van-field
|
||||
:value="formData.status | idToText('talentPoolStatus')"
|
||||
readonly
|
||||
required
|
||||
label="状态"
|
||||
name="状态"
|
||||
right-icon="arrow"
|
||||
placeholder="请选择"
|
||||
@click="toSelect('status')"
|
||||
/>
|
||||
<van-button type="danger" class="bottom-btn" size="large" @click="save">保存</van-button>
|
||||
<van-popup v-model="popupShow" position="bottom"><van-picker show-toolbar :columns="columns" @confirm="onConfirm" @cancel="popupShow = false"/></van-popup>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { Field, CellGroup, Cell, Popup, Picker } from 'vant'
|
||||
import filter from '@/filters/index'
|
||||
import DataDictionary from '@/assets/js/utils/data-dictionary'
|
||||
import SelectRadio from '@/components/ebiz/SelectRadio'
|
||||
|
||||
import { getAgentPersonnelDetail, saveAgentPersonnel } from '@/api/ebiz/manpower/manpower'
|
||||
|
||||
export default {
|
||||
name: 'TalentPoolAdd',
|
||||
components: {
|
||||
[Field.name]: Field,
|
||||
[CellGroup.name]: CellGroup,
|
||||
[Cell.name]: Cell,
|
||||
[Popup.name]: Popup,
|
||||
[Picker.name]: Picker,
|
||||
[SelectRadio.name]: SelectRadio
|
||||
},
|
||||
filters: {
|
||||
idToText: filter.idToText
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
show: false,
|
||||
selected: '',
|
||||
popupShow: false,
|
||||
formData: {
|
||||
name: '',
|
||||
mobile: '',
|
||||
isSame: '0',
|
||||
pastOccu: '01',
|
||||
sameCompany: '',
|
||||
gradeType: '0',
|
||||
grade: '',
|
||||
workYears: '',
|
||||
status: 0
|
||||
},
|
||||
gradeType: [
|
||||
{
|
||||
label: '内勤',
|
||||
value: '0'
|
||||
},
|
||||
{
|
||||
label: '外勤',
|
||||
value: '1'
|
||||
}
|
||||
],
|
||||
isSame: [
|
||||
{
|
||||
label: '是',
|
||||
value: '0'
|
||||
},
|
||||
{
|
||||
label: '否',
|
||||
value: '1'
|
||||
}
|
||||
],
|
||||
columns: null
|
||||
}
|
||||
},
|
||||
watch: {},
|
||||
created() {
|
||||
const personnelCode = localStorage.getItem('personnelCode')
|
||||
getAgentPersonnelDetail({ personnelCode: personnelCode })
|
||||
.then(res => {
|
||||
if (res.result == 0) {
|
||||
this.formData = res.content.personnel
|
||||
this.show = true
|
||||
} else {
|
||||
this.$toast(res.resultMessage)
|
||||
}
|
||||
})
|
||||
.catch(() => {})
|
||||
},
|
||||
mounted() {},
|
||||
methods: {
|
||||
toSelect(name) {
|
||||
this.selected = name
|
||||
this.popupShow = true
|
||||
switch (name) {
|
||||
case 'pastOccu':
|
||||
this.columns = DataDictionary.talentPoolPastOccu
|
||||
break
|
||||
case 'status':
|
||||
this.columns = DataDictionary.talentPoolStatus
|
||||
break
|
||||
default:
|
||||
break
|
||||
}
|
||||
},
|
||||
onConfirm(value) {
|
||||
this.popupShow = false
|
||||
this.formData[this.selected] = value.id
|
||||
},
|
||||
save() {
|
||||
this.$validator.validateAll().then(result => {
|
||||
if (result) {
|
||||
saveAgentPersonnel(this.formData)
|
||||
.then(res => {
|
||||
if (res.result == 0) {
|
||||
//eslint-disable-next-line
|
||||
EWebBridge.webCallAppInJs('goBack', {
|
||||
refresh: '1',
|
||||
index: '-1'
|
||||
})
|
||||
} else {
|
||||
this.$toast(res.resultMessage)
|
||||
}
|
||||
})
|
||||
.catch(() => {})
|
||||
} else {
|
||||
this.$toast(this.errors.all()[0])
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped="scoped" lang="scss"></style>
|
||||
101
src/views/ebiz/manpower/talentPool/List.vue
Normal file
@@ -0,0 +1,101 @@
|
||||
<!-- 人才库-人才列表 -->
|
||||
<template>
|
||||
<div class="container">
|
||||
<van-search placeholder="请输入要查询人的姓名" v-model="searchName" @change="searchList" @keyup.enter="searchList"/>
|
||||
<div v-if="hasTalentPoolList" class="mb60">
|
||||
<van-index-bar :index-list="indexList">
|
||||
<div v-for="(item, key) in talentPoolList" :key="key" class="bg-white mb10 mr20">
|
||||
<van-index-anchor :index="key" class="border-gb" />
|
||||
<van-cell-group>
|
||||
<TalentPoolItem v-for="talentPoolInfo in item" :key="talentPoolInfo.personnelCode" :talentPoolInfo="talentPoolInfo"> </TalentPoolItem>
|
||||
</van-cell-group>
|
||||
</div>
|
||||
</van-index-bar>
|
||||
</div>
|
||||
<div v-else class="text-center">
|
||||
<img class="mt40" src="@/assets/images/pic_page-non.png" />
|
||||
<div class="fs17 mt40">暂无数据</div>
|
||||
</div>
|
||||
<van-button type="danger" class="bottom-btn" size="large" @click="add" v-no-more-click="1000">新增</van-button>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { Search, Cell, IndexBar, IndexAnchor, Popup, Button, Tag, CellGroup } from 'vant'
|
||||
import TalentPoolItem from '@/components/ebiz/manpower/TalentPoolItem'
|
||||
|
||||
import { getAgentPersonnelList } from '@/api/ebiz/manpower/manpower'
|
||||
|
||||
export default {
|
||||
name: 'TalentPoolList',
|
||||
components: {
|
||||
[Search.name]: Search,
|
||||
[Cell.name]: Cell,
|
||||
[CellGroup.name]: CellGroup,
|
||||
[IndexBar.name]: IndexBar,
|
||||
[IndexAnchor.name]: IndexAnchor,
|
||||
[Popup.name]: Popup,
|
||||
[Button.name]: Button,
|
||||
[Tag.name]: Tag,
|
||||
TalentPoolItem
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
hasTalentPoolList: false,
|
||||
searchName: '',
|
||||
indexList: ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', '#'],
|
||||
talentPoolList: {}
|
||||
}
|
||||
},
|
||||
watch: {},
|
||||
created() {
|
||||
this.searchList()
|
||||
},
|
||||
mounted() {},
|
||||
methods: {
|
||||
searchList() {
|
||||
this.hasTalentPoolList = false
|
||||
getAgentPersonnelList({ name: this.searchName })
|
||||
.then(res => {
|
||||
if (res.result == 0) {
|
||||
if (Object.keys(res.content.personnels).length == 0) {
|
||||
return false
|
||||
}
|
||||
const data = res.content.personnels
|
||||
this.talentPoolList = {}
|
||||
for (let item of this.indexList) {
|
||||
if (data[item]) {
|
||||
this.talentPoolList[item] = data[item]
|
||||
}
|
||||
}
|
||||
this.hasTalentPoolList = true
|
||||
}
|
||||
})
|
||||
.catch(() => {})
|
||||
},
|
||||
add() {
|
||||
this.$jump({
|
||||
flag: 'h5',
|
||||
extra: {
|
||||
url: location.origin + '/#/manpower/talentPool/Add'
|
||||
},
|
||||
routerInfo: {
|
||||
path: '/manpower/talentPool/Add'
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped="scoped" lang="scss">
|
||||
.container {
|
||||
.van-search__content {
|
||||
background: #fff !important;
|
||||
border-radius: 10px;
|
||||
}
|
||||
.van-search {
|
||||
background: none !important;
|
||||
}
|
||||
}
|
||||
</style>
|
||||