Browse Source

工作流起始位置(为增加工作流相关内容)

dev
超级管理员 3 years ago
parent
commit
f10aafdd73
  1. 6
      .env.development
  2. 7
      package.json
  3. 45
      src/api/duty/postapi.js
  4. 113
      src/api/people/peopledata.js
  5. 30
      src/api/systemaccredit/systemapi.js
  6. 154
      src/api/systemaccredit/systemhrapi.js
  7. 40
      src/css/dialog.css
  8. 112
      src/css/override-element-ui.css
  9. 1722
      src/css/workflow.css
  10. BIN
      src/images/add-close.png
  11. BIN
      src/images/add-close1.png
  12. BIN
      src/images/cancel.png
  13. BIN
      src/images/check_box.png
  14. BIN
      src/images/icon_file.png
  15. BIN
      src/images/icon_people.png
  16. BIN
      src/images/icon_role.png
  17. BIN
      src/images/jiaojiao.png
  18. BIN
      src/images/list_search.png
  19. BIN
      src/images/loading.gif
  20. BIN
      src/images/next_level.png
  21. BIN
      src/images/next_level_active.png
  22. 3
      src/main.js
  23. 33
      src/router/index.js
  24. 3
      src/store/index.js
  25. 3
      src/utils/request1.js
  26. 13
      src/views/assessmentProgram/departmentalAssessment.vue
  27. 60
      src/views/assessmentProgram/gwDepartmentalAssessment.vue
  28. 42
      src/views/assessmentProgram/newcont/addplanpage.vue
  29. 213
      src/views/assessmentProgram/newcont/departprogramme.vue
  30. 123
      src/views/assessmentProgram/newcont/programme.vue
  31. 4
      src/views/assessmentProgram/qualitativeIndicators.vue
  32. 19
      src/views/basicCont/post/posttargetlist.vue
  33. 84
      src/views/basicCont/targetConfigLayout.vue
  34. 25
      src/views/basicCont/targetLayout.vue
  35. 1158
      src/views/basicCont/targetPeopleConfig.vue
  36. 28
      src/views/basicInfo/gwProject.vue
  37. 33
      src/views/echarts/echarts.vue
  38. 128
      src/views/echarts/table.vue
  39. 357
      src/views/hr/newhr/content/editinsidework.vue
  40. 184
      src/views/hr/newhr/content/externalwork.vue
  41. 175
      src/views/hr/newhr/content/externalworkoyt.vue
  42. 392
      src/views/hr/newhr/content/insidework.vue
  43. 5
      src/views/hr/newhr/people.vue
  44. 10
      src/views/hr/newhr/peoplecont.vue
  45. 132
      src/views/hr/newhr/peopleinfor.vue
  46. 309
      src/views/hr/newhr/personneleducation.vue
  47. 118
      src/views/hr/newhr/workhistory.vue
  48. 19
      src/views/qualitative/index.vue
  49. 161
      src/views/setwork/calendar.vue
  50. 86
      src/views/setwork/tables.vue
  51. 885
      src/views/setwork/worktime.vue
  52. 89
      src/views/workflow/flow.vue

6
.env.development

@ -2,6 +2,6 @@
ENV = 'development' ENV = 'development'
# base api # base api
VUE_APP_BASE_API = 'http://ginvue.admin.net/api' VUE_APP_BASE_API = 'http://hxgk.user.phone/api'
VUE_APP_BASE_API1 = 'http://ginvue.admin.net/hrapi' VUE_APP_BASE_API1 = 'http://hxgk.user.phone/hrapi'
VUE_APP_BASE_API2 = 'http://ginvue.admin.net/kpiapi' VUE_APP_BASE_API2 = 'http://hxgk.user.phone/kpiapi'

7
package.json

@ -25,7 +25,8 @@
"path-to-regexp": "2.4.0", "path-to-regexp": "2.4.0",
"vue": "2.6.10", "vue": "2.6.10",
"vue-router": "3.0.6", "vue-router": "3.0.6",
"vuex": "3.1.0" "vuex": "3.1.0",
"workflow-ui": "^1.2.3"
}, },
"devDependencies": { "devDependencies": {
"@fortawesome/fontawesome-free": "^6.2.1", "@fortawesome/fontawesome-free": "^6.2.1",
@ -43,7 +44,11 @@
"eslint": "6.7.2", "eslint": "6.7.2",
"eslint-plugin-vue": "6.2.2", "eslint-plugin-vue": "6.2.2",
"html-webpack-plugin": "3.2.0", "html-webpack-plugin": "3.2.0",
"i": "^0.3.7",
"less": "^3.0.4",
"less-loader": "^5.0.0",
"mockjs": "1.0.1-beta3", "mockjs": "1.0.1-beta3",
"npm": "^9.2.0",
"runjs": "4.3.2", "runjs": "4.3.2",
"sass": "1.26.8", "sass": "1.26.8",
"sass-loader": "8.0.2", "sass-loader": "8.0.2",

45
src/api/duty/postapi.js

@ -48,4 +48,49 @@ export function editRationTargetCont(data) {
method: 'post', method: 'post',
data data
}) })
};
// 岗位人员定量考核目标列表
export function postPeopleTargetConfigList(data) {
return request({
url: '/postpc/post_people_list',
method: 'post',
data
})
};
// 提交岗位人员考核定量指标目标值设定
export function setEvalObjectMan(data) {
return request({
url: '/postpc/set_eval_object_man',
method: 'post',
data
})
};
// 查看人员岗位考核指标目标值
export function getRationTargetContMan(data) {
return request({
url: '/postpc/lookpeopleconfig',
method: 'post',
data
})
};
// 编辑岗位人员考核指标目标值
export function editRationTargetContMan(data) {
return request({
url: '/postpc/eite_quant_man_config',
method: 'post',
data
})
};
// 删除岗位人员考核指标目标值
export function delRationTargetContMan(data) {
return request({
url: '/postpc/new_del_quantman_config',
method: 'post',
data
})
}; };

113
src/api/people/peopledata.js

@ -281,6 +281,10 @@ const employmentType = [
]; ];
//入职等级 //入职等级
const positiongrade = [ const positiongrade = [
{
id:10000,
tittle:'无'
},
{ {
id:1, id:1,
tittle:'一级' tittle:'一级'
@ -313,6 +317,85 @@ const academicDegree =[
title:'博士' title:'博士'
}, },
]; ];
//主职与兼职
const mainAndPartTimeJobs = [
{
id:1,
title:'主职'
},
{
id:2,
title:'兼职'
}
];
// 职位变动类型
const postChangeType=[
{
id:1,
title:'预入职'
},
{
id:2,
title:'雇佣入职'
},
{
id:3,
title:'转正'
},
{
id:4,
title:'晋升'
},
{
id:5,
title:'降级'
},
{
id:6,
title:'职等调整'
},
{
id:7,
title:'调动调入'
},
{
id:8,
title:'跨公司调动调入'
},
{
id:9,
title:'借调'
},
{
id:10,
title:'平调'
},
{
id:11,
title:'兼职'
},
{
id:12,
title:'预离职'
},
{
id:13,
title:'离职'
},
{
id:14,
title:'退休'
},
{
id:15,
title:'返聘'
},
{
id:16,
title:'员工初始化'
},
];
//注册定义的方法 //注册定义的方法
export const peopleMethod= { export const peopleMethod= {
sexData, sexData,
@ -324,7 +407,9 @@ export const peopleMethod= {
educationList, educationList,
employmentType, employmentType,
positiongrade, positiongrade,
academicDegree academicDegree,
mainAndPartTimeJobs,
postChangeType
}; };
@ -422,6 +507,7 @@ export function getNtoMonth(date, num) {
//判断是不是数组 //判断是不是数组
export function judgeArray(ary){ export function judgeArray(ary){
if(!ary) return false;
if(ary.isArray){ if(ary.isArray){
return true; return true;
}else{ }else{
@ -430,4 +516,27 @@ export function judgeArray(ary){
} }
} }
return false; return false;
}; };
//计算高度
//定义wappered boolean值是为了区别我自己定义的同名方法,可忽略
export function calcHeightx(value, wappered = true) {
//项目自定义的公共header部分的高度,可忽略
let header = variable.headerHeight;
//value为动态计算table界面高度时,减去的其他空白部分,需自行在调试找到临界值,剩下的就是table表格的高度(包含header+body部分)
value = value == undefined ? 100 : value;
let res = window.innerHeight - parseInt(header.substring(0, header.indexOf('px'))) - value;
if (wappered) {
//通过原生方法,获取dom节点的高度------获取element-ui table表格body的元素
let wapper = window.document.getElementsByClassName('el-table__body-wrapper');
//通过原生方法,获取dom节点的高度------获取element-ui table表格header的元素
let header = window.document.getElementsByClassName('el-table__header-wrapper');
//必须加延时,要不然赋不上去值
setTimeout(() => {
//通过上边计算得到的table高度的value值,减去table表格的header高度,剩下的通过dom节点直接强行赋给table表格的body
wapper[0].style.height = (value - header[0].clientHeight) + 'px';
}, 100)
}
return res;
};

30
src/api/systemaccredit/systemapi.js

@ -99,4 +99,34 @@ export const addAboutPeople = (data) => {
method: 'post', method: 'post',
data: data data: data
}) })
}
/**
* 部门方案相关API操作
*/
//部门考核方案列表
export const departmentProgramme = (data) => {
return request({
url: '/department_pc/department_programme',
method: 'post',
data: data
})
}
//部门考核方案状态
export const editDepartPrograState = (data) => {
return request({
url: '/department_pc/edit_depart_progra_state',
method: 'post',
data: data
})
}
//添加部门考核方案
export const createSchemeForDeparment = (data) => {
return request({
url: '/department_pc/create_scheme_for_deparment',
method: 'post',
data: data
})
} }

154
src/api/systemaccredit/systemhrapi.js

@ -87,6 +87,14 @@ export const getInsiDeworkHistoryList = (data) => {
data: data data: data
}) })
} }
//编辑集团工作履历信息
export const insIdeWorkHistoryList = (data) => {
return request({
url: '/staff/insideworkhistorylist',
method: 'post',
data: data
})
}
//获取资料完整度 //获取资料完整度
export const getDataIntegrity = (data) => { export const getDataIntegrity = (data) => {
@ -183,11 +191,155 @@ export const editFamilyMembers = (data) => {
}) })
} }
//编辑家庭成员 //编辑家庭成员状态
export const editFamilyMembersState = (data) => { export const editFamilyMembersState = (data) => {
return request({ return request({
url: '/staff/editfamilymemberssatte', url: '/staff/editfamilymemberssatte',
method: 'post', method: 'post',
data: data data: data
}) })
}
//添加教育经历
export const addEducationAlexperience = (data) => {
return request({
url: '/staff/addeducationalexperience',
method: 'post',
data: data
})
}
//编辑教育经历状态
export const editEduexpState = (data) => {
return request({
url: '/staff/editeduexpstate',
method: 'post',
data: data
})
}
//编辑教育经历信息
export const editEduexpCont = (data) => {
return request({
url: '/staff/editeducationalexperience',
method: 'post',
data: data
})
}
//判断是否已经存在主职
export const judgePrinPosition = (data) => {
return request({
url: '/staff/judge_prin_position',
method: 'post',
data: data
})
}
//添加集团工作履历
export const addInsideHistory = (data) => {
return request({
url: '/staff/addinsidehistorynew',
method: 'post',
data: data
})
}
//编辑集团工作履历状态
export const editOrdelInsideWorkhiStoryState = (data) => {
return request({
url: '/staff/editordelinsideworkhistorystate',
method: 'post',
data: data
})
}
//编辑集团工作履历信息
export const eidtinsidehistoryworkcont = (data) => {
return request({
url: '/staff/eidtinsidehistoryworkcont',
method: 'post',
data: data
})
}
//添加集团外工作履历信息
export const addWorkHistoryCont = (data) => {
return request({
url: '/staff/addworkhistorycont',
method: 'post',
data: data
})
}
//编辑集团外工作履历状态
export const editWorkHistoryState = (data) => {
return request({
url: '/staff/editworkhistorystate',
method: 'post',
data: data
})
}
//编辑集团外工作履历信息
export const editWorkHistoryCont = (data) => {
return request({
url: '/staff/editworkhistorycont',
method: 'post',
data: data
})
}
//获取工作时间列表
export const teamTimeList = (data) => {
return request({
url: '/rostering/team_time_list',
method: 'post',
data: data
})
}
//添加工作时间段设定
export const addTeamTime = (data) => {
return request({
url: '/rostering/add_team_time',
method: 'post',
data: data
})
}
//编辑工作时间段状态
export const editWorkTimeState = (data) => {
return request({
url: '/rostering/edit_work_time_state',
method: 'post',
data: data
})
}
//编辑工作时间段内容
export const editWorkTimeCont = (data) => {
return request({
url: '/rostering/edit_work_time_cont',
method: 'post',
data: data
})
}
//获取工作时段及轮询规则列表
export const getPeriodAndRuleList = (data) => {
return request({
url: '/rostering/get_period_rule_list',
method: 'post',
data: data
})
}
//写入轮询源点
export const setOirginCont = (data) => {
return request({
url: '/rostering/set_oirgin_cont',
method: 'post',
data: data
})
}
//获取排班表
export const getSchedule = (data) => {
return request({
url: '/rostering/get_schedule',
method: 'post',
data: data
})
} }

40
src/css/dialog.css

@ -0,0 +1,40 @@
.person_body {
border: 1px solid #f5f5f5;
height: 500px;
}
.tree_nav span {
display: inline-block;
padding-right: 10px;
margin-right: 5px;
max-width: 6em;
color: #38adff;
font-size: 12px;
cursor: pointer;
background: url(~@/assets/images/jiaojiao.png) no-repeat right center;
}
.tree_nav span:last-of-type {
background: none;
}
.person_tree {
padding: 10px 12px 0 8px;
width: 280px;
height: 100%;
border-right: 1px solid #f5f5f5;
}
.person_tree input {
padding-left: 22px;
width: 210px;
height: 30px;
font-size: 12px;
border-radius: 2px;
border: 1px solid #d5dadf;
background: url(~@/assets/images/list_search.png) no-repeat 10px center;
background-size: 14px 14px;
margin-bottom: 14px;
}
.person_tree img {
width: 14px;
vertical-align: middle;
margin-right: 5px;
}

112
src/css/override-element-ui.css

@ -0,0 +1,112 @@
.el-drawer__header button.el-drawer__close-btn {
display: none;
}
.el-drawer__header {
margin-bottom: 0;
padding: 14px 0 14px 20px;
/* border-bottom: 1px solid #f2f2f2; */
color: #323232;
font-size: 16px;
}
.demo-drawer__content {
display: flex;
flex-direction: column;
height: 100%;
}
.drawer_content {
flex: 1;
}
.demo-drawer__content>div {
border-top: 1px solid #F2F2F2;
}
.el-button {
min-width: 79px;
padding: 8px 12px;
font-size: 12px;
border-radius: 2px;
background: #46A6FE;
}
.el-button.el-button--default {
color: #323232;
background: #f2f2f2;
}
.demo-drawer__footer {
padding: 10px 30px;
border-top: 1px solid #F2F2F2;
}
.demo-drawer__footer .el-button {
float: right;
margin-right: 10px;
}
.el-dialog {
width: 520px;
border: 1px solid #DDE1E5;
border-radius: 3px;
}
.el-dialog__header {
padding: 0 0 0 20px;
line-height: 50px;
height: 50px;
background: #fff;
border-bottom: 1px solid #F2F2F2;
}
.el-dialog__header .el-dialog__title {
font-size: 16px;
line-height: 50px;
color: #333333;
}
.el-dialog__header .el-dialog__headerbtn {
height: 12px;
width: 12px;
}
.el-dialog__header .el-icon-close {
width: 12px;
height: 12px;
float: left;
}
.el-dialog__header .el-icon-close::before {
display: block;
width: 12px;
height: 12px;
background: url(~@/assets/images/add-close.png) no-repeat center;
background-size: 100% 100%;
content: "";
}
.el-dialog__footer {
border-top: 1px solid #F2F2F2;
padding-bottom: 10px;
}
.el-checkbox,
.el-checkbox__input.is-checked+.el-checkbox__label,
.el-radio,
.el-radio__input.is-checked+.el-radio__label,
.el-dialog__body,
.el-tree {
color: #333;
}
.el-radio__label, .el-checkbox__label {
font-size: 12px;
}
.my-el-custom-spinner {
display: inline-block;
width: 80px;
height: 80px;
background: url(~@/assets/images/loading.gif) no-repeat center;
}

1722
src/css/workflow.css

File diff suppressed because it is too large

BIN
src/images/add-close.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 466 B

BIN
src/images/add-close1.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 223 B

BIN
src/images/cancel.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 549 B

BIN
src/images/check_box.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 325 B

BIN
src/images/icon_file.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 209 B

BIN
src/images/icon_people.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

BIN
src/images/icon_role.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

BIN
src/images/jiaojiao.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

BIN
src/images/list_search.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

BIN
src/images/loading.gif

Binary file not shown.

After

Width:  |  Height:  |  Size: 81 KiB

BIN
src/images/next_level.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 245 B

BIN
src/images/next_level_active.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 266 B

3
src/main.js

@ -19,6 +19,9 @@ import 'font-awesome/css/font-awesome.min.css'
import '@/icons' // icon import '@/icons' // icon
// import '@/permission' // permission control // import '@/permission' // permission control
import Node from 'workflow-ui/src/components/Generator/node'
Vue.component('Node', Node)
/** /**
* If you don't want to use mock-server * If you don't want to use mock-server
* you want to use MockJs for mock api * you want to use MockJs for mock api

33
src/router/index.js

@ -269,6 +269,7 @@ export const constantRoutes = [
{ {
path: 'targetbasic', path: 'targetbasic',
component: () => import('@/views/basicCont/targetLayout'), component: () => import('@/views/basicCont/targetLayout'),
meta: { title: '考核指标'} meta: { title: '考核指标'}
}, },
], ],
@ -373,6 +374,7 @@ export const constantRoutes = [
{ {
path: 'departmentalAssessment', path: 'departmentalAssessment',
component: () => import('@/views/assessmentProgram/departmentBase'), component: () => import('@/views/assessmentProgram/departmentBase'),
// component: () => import('@/views/assessmentProgram/newcont/programme.vue'),
meta: { title: '部门考核'} meta: { title: '部门考核'}
}, },
{ {
@ -480,8 +482,35 @@ export const constantRoutes = [
}, },
], ],
}, },
//排班管理
{
path: '/setwork',
component: Layout,
children: [
{
path: 'worktime',
component: () => import('@/views/setwork/worktime'),
meta: { title: '设置工作时段'}
},
{
path: 'calendar',
component: () => import('@/views/setwork/calendar'),
meta: { title: '排班管理'}
},
]
},
//工作流
{
path:'/workflow',
component: Layout,
children: [
{
path: 'flow',
component: () => import('@/views/workflow/flow'),
meta: { title: '设置工作时段'}
},
],
},

3
src/store/index.js

@ -13,7 +13,8 @@ const store = new Vuex.Store({
settings, settings,
user user
}, },
getters getters,
}) })
export default store export default store

3
src/utils/request1.js

@ -48,6 +48,9 @@ service.interceptors.response.use(
// if the custom code is not 20000, it is judged as an error. // if the custom code is not 20000, it is judged as an error.
if (res.code !== 0) { if (res.code !== 0) {
if(res.code === 11111){
return res
}
if(res.code === 7){ if(res.code === 7){
store.commit('user/loginOut') store.commit('user/loginOut')
} }

13
src/views/assessmentProgram/departmentalAssessment.vue

@ -662,6 +662,10 @@ import {
getgroupdepartmap, getgroupdepartmap,
getgroupuser getgroupuser
} from '@/api/duty/group' } from '@/api/duty/group'
import { createSchemeForDeparment } from '@/api/systemaccredit/systemapi'
export default { export default {
name: 'Dashboard', name: 'Dashboard',
props:['bmId'], props:['bmId'],
@ -1201,7 +1205,9 @@ export default {
// const res = await adddepartmentdutyinfo(this.form) // const res = await adddepartmentdutyinfo(this.form)
// const res = await newadddepartduty(this.form) // const res = await newadddepartduty(this.form)
// this.demDialogFormVisible=false // this.demDialogFormVisible=false
const res = await adddepartdutyversio(this.form) // const res = await adddepartdutyversio(this.form)
const res = await createSchemeForDeparment(this.form)
if (res.code === 0) { if (res.code === 0) {
this.$message({ this.$message({
type: 'success', type: 'success',
@ -1249,7 +1255,8 @@ export default {
// const res = await adddepartmentdutyinfo(this.form) // const res = await adddepartmentdutyinfo(this.form)
// const res = await newadddepartduty(this.form) // const res = await newadddepartduty(this.form)
// this.demDialogFormVisible=false // this.demDialogFormVisible=false
const res = await adddepartdutyversio(from) // const res = await adddepartdutyversio(from)
const res = await createSchemeForDeparment(from)
if (res.code === 0) { if (res.code === 0) {
this.$message({ this.$message({
type: 'success', type: 'success',
@ -1600,7 +1607,7 @@ export default {
// //
async getGrouplist(){ async getGrouplist(){
const idFrom = { const idFrom = {
// id:312 id:313,
level: 3 level: 3
} }
const res = await getgroupdepartmap(idFrom) const res = await getgroupdepartmap(idFrom)

60
src/views/assessmentProgram/gwDepartmentalAssessment.vue

@ -293,7 +293,7 @@
</el-row> </el-row>
<el-form-item> <el-form-item>
<!-- 表格表单提交 --> <!-- 表格表单提交 -->
<el-card class="box-card" v-for="(item,index) in weiDuList" :key="item.id"> <el-card class="box-card" v-for="item in weiDuList" :key="item.id">
<el-row> <el-row>
<el-col :span="8"> <el-col :span="8">
<span>考核纬度{{item.name}}</span> <span>考核纬度{{item.name}}</span>
@ -370,7 +370,7 @@
</el-option> </el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-card v-show="laTrue==1" class="box-card" v-for="(item,index) in weiDuList1" :key="item.id"> <el-card v-show="laTrue==1" class="box-card" v-for="item in weiDuList1" :key="item.id">
<el-row> <el-row>
<el-col :span="8"> <el-col :span="8">
<span>考核纬度{{item.name}}</span> <span>考核纬度{{item.name}}</span>
@ -691,7 +691,7 @@
<el-form-item> <el-form-item>
<!-- 表格表单提交 --> <!-- 表格表单提交 -->
<el-card class="box-card" v-for="(item,index) in weiDuCopyList" :key="item.id"> <el-card class="box-card" v-for="item in weiDuCopyList" :key="item.id">
<el-row> <el-row>
<el-col :span="8"> <el-col :span="8">
<span>考核纬度{{item.name}}</span> <span>考核纬度{{item.name}}</span>
@ -1518,40 +1518,44 @@
async showIndex(){ async showIndex(){
console.log('岗位弹窗') console.log('岗位弹窗')
console.log(this.gwFromList) console.log(this.gwFromList)
if (this.searchVersion.postid!='') { console.log('岗位弹窗---1-->',this.searchVersion.postid)
if (this.searchVersion.postid != '') {
const From={ const From={
id:this.gwFromList.gwId.toString() id:this.gwFromList.gwId.toString()
} }
const that = this const that = this
// const res = await departmentlistnew(From) // const res = await departmentlistnew(From)
const res = await getpostabouttarget(From) const res = await getpostabouttarget(From)
console.log('岗位弹窗------------------>',From)
this.weiDuList=JSON.parse(JSON.stringify(res.data)) this.weiDuList=JSON.parse(JSON.stringify(res.data))
this.weiDuList.forEach(function(element) { this.weiDuList.forEach(function(element) {
that.$set(element, 'ordering', '') that.$set(element, 'ordering', '')
that.$set(element, 'zhiFraction', 0) that.$set(element, 'zhiFraction', 0)
if (element.child!=null) { if (element.child!=null) {
element.child.forEach(function(iteam){ element.child.forEach(function(iteam){
that.$set(iteam, 'status', 1) that.$set(iteam, 'status', 1)
}) })
} }
});
this.Fraction=0
this.weiDuList.forEach(function(element) {
element.zhiFraction=0
});
this.weiDuList.forEach(function(element) {
if (element.child!=null) {
element.child.forEach(function(iteam){
if(iteam.status!=2){
element.zhiFraction+=iteam.standardscore
}
})
}
});
this.weiduFraction=0
this.weiDuList.forEach(function(element) {
that.weiduFraction+=element.zhiFraction
}); });
this.Fraction=0
this.weiDuList.forEach(function(element) {
element.zhiFraction=0
});
this.weiDuList.forEach(function(element) {
if (element.child!=null) {
element.child.forEach(function(iteam){
if(iteam.status!=2){
element.zhiFraction+=iteam.standardscore
}
})
}
});
this.weiduFraction=0
this.weiDuList.forEach(function(element) {
that.weiduFraction+=element.zhiFraction
});
console.log("this.weiDuList") console.log("this.weiDuList")
console.log(this.weiDuList) console.log(this.weiDuList)
} }

42
src/views/assessmentProgram/newcont/addplanpage.vue

@ -0,0 +1,42 @@
<template>
<el-dialog :close-on-click-modal="false" :visible.sync="addPlanPage" :before-close="closeAddPlanDialog" title="创建方案" width="60%">
<template #footer class="el_dialog__footer">
<div class="dialog-footer ">
<el-button size="small" type="primary" @click="addContsubmit" :loading="addBoxIsTrue"> </el-button>
<el-button size="small" @click="closeAddPlanDialog"> </el-button>
</div>
</template>
</el-dialog>
</template>
<script>
export default {
name: "addPlanPage",
props:['addPlanPage',"orgId"],
data() {
return {
addBoxIsTrue:false,
}
},
created(){
console.log("addPlanPage变化1",this.addPlanPage,this.orgId)
},
//
watch: {
addPlanPage(){
console.log("addPlanPage变化",this.addPlanPage,"orgId")
},
},
methods:{
//
closeAddPlanDialog(){
this.$emit('addPlanSub', false)
},
//
async addContsubmit(){},
}
}
</script>
<style>
</style>

213
src/views/assessmentProgram/newcont/departprogramme.vue

@ -0,0 +1,213 @@
<template>
<div>
<el-row>
<el-col :span="24">
<el-form ref="searchForm" :inline="true" :model="searchVersion">
<el-form-item label="版本号码">
<el-input v-model="searchVersion.version"></el-input>
</el-form-item>
<el-form-item label="年度">
<el-date-picker
v-model="serachTime"
type="year"
placeholder="选择年"
@change="setTimeYear">
</el-date-picker>
</el-form-item>
<el-form-item>
<el-button size="mini" type="primary" icon="el-icon-search" @click="onSubmitSearch">查询</el-button>
<el-button size="mini" icon="el-icon-refresh" @click="onResetSearch">重置</el-button>
</el-form-item>
</el-form>
</el-col>
<el-col :span="24">
<el-button size="mini" type="primary" icon="el-icon-setting" @click="showIndex()">生成部门考核方案</el-button>
</el-col>
<el-col style="margin-top:10px" :span="24">
<template>
<el-table
max-height="100%"
:data="tableData"
border
style="width: 100%">
<el-table-column
fixed
label="行政组织"
width="250">
<template slot-scope="scope">
{{ scope.row.groupname }}{{ scope.row.deaprtname }}
</template>
</el-table-column>
<el-table-column
align="center"
prop="year"
label="年度"
width="80">
</el-table-column>
<el-table-column
prop="key"
align="center"
label="版本号"
min-width="250">
</el-table-column>
<el-table-column
prop="time"
align="center"
label="时间"
min-width="200">
</el-table-column>
<el-table-column
label="状态"
align="center"
width="200">
<template slot-scope="scope">
<el-switch
style="display: block"
v-model="scope.row.states"
active-color="#13ce66"
inactive-color="#ff4949"
active-text="启用"
inactive-text="禁止"
@change="editDepgraState($event,scope.row.key)">
</el-switch>
</template>
</el-table-column>
<el-table-column
align="center"
fixed="right"
label="操作"
width="200">
<template slot-scope="scope">
<el-button
icon="el-icon-view"
size="small"
type="text"
@click="showDetails(scope.row)"
>查看详情</el-button>
<el-button
icon="el-icon-document-checked"
size="small"
type="text"
@click="copyShow(scope.row)"
>复制</el-button>
<el-button
icon="el-icon-delete"
size="small"
type="text"
@click="deleteOperate(scope.row)"
>删除</el-button>
</template>
</el-table-column>
</el-table>
</template>
</el-col>
<el-col :span="24">
<div class="footliebiao"></div>
</el-col>
</el-row>
<!--方案创建窗口-->
<addplanpage v-if="addPlanPage" v-on:addPlanSub="addPlanSub" :addPlanPage="addPlanPage" :orgId="orgId"></addplanpage>
</div>
</template>
<script>
import { departmentProgramme,editDepartPrograState } from "@/api/systemaccredit/systemapi"
import addplanpage from "@/views/assessmentProgram/newcont/addplanpage.vue"
export default {
components: {
addplanpage
},
name: "departprogramme",
props:['departmentId'],
data() {
return {
searchVersion:{
},
serachTime:"",
tableData:[], //
addPlanPage:false, //
orgId:this.departmentId
}
},
created(){
this.getList()
},
//
watch: {
departmentId(){
console.log("departmentId变化",this.departmentId)
if(this.departmentId != 0 || this.departmentId != ""){
this.searchVersion.orgid = this.departmentId.toString();
this.orgId = this.departmentId.toString();
}
this.getList()
},
},
methods:{
//
addPlanSub(val){
this.addPlanPage = val
},
//
setTimeYear(){
if(this.serachTime && this.serachTime != null){
let yearVal = this.serachTime.getFullYear();
this.searchVersion.year= yearVal.toString()
}
},
//
async getList(){
let res = await departmentProgramme(this.searchVersion);
this.tableData = res.data;
},
//
onSubmitSearch(){
// console.log("--->",this.searchVersion,this.serachTime)
this.getList()
},
//
onResetSearch(){
this.searchVersion={}
this.getList()
},
//
async editDepgraState(val,id){
console.log("编辑方案状态--->",val,id)
let isTrue = 2;
if(val){
isTrue = 1
}else{
isTrue = 2
}
console.log("编辑方案状态--1->",val,id,isTrue)
let sendData = {
id:id,
state:isTrue,
istrue:2
}
console.log("编辑方案状态--2->",val,id,isTrue,sendData)
let res = await editDepartPrograState(sendData)
this.getList()
},
//
showIndex(){
this.addPlanPage = true
},
}
}
</script>
<style>
.footliebiao {
height: 30px;
}
</style>

123
src/views/assessmentProgram/newcont/programme.vue

@ -0,0 +1,123 @@
<template>
<!-- 指标外层布局矿建 -->
<el-container>
<!-- 行政组织级 -->
<el-aside width="220px">
<el-scrollbar >
<el-tree
:data="groThreeList"
:props="threeStruct"
@node-click="handleNodeClick"
></el-tree>
</el-scrollbar>
</el-aside>
<el-aside v-show="postList.length > 0"
width="200px"
>
<el-tree
:data="postList"
:props="threeStruct"
@node-click="nodePostClick"
></el-tree>
</el-aside>
<el-main>
<el-scrollbar >
<template v-if="pageNum==1">
<!--部门级方案-->
<departprogramme :departmentId="departmentId"></departprogramme>
</template>
<template v-if="pageNum==2">
<!--岗位级方案-->
</template>
</el-scrollbar>
</el-main>
</el-container>
</template>
<script>
import { govthree, positionlist } from "@/api/personnel/post";
import departprogramme from "@/views/assessmentProgram/newcont/departprogramme.vue"
export default {
components: {
departprogramme
},
data() {
return {
groThreeList: [], //
threeStruct: {
children: "child",
label: "name",
},
postList: [], //
pageNum:1, //,
departmentId:0,
postId:0,
}
},
created(){
this.getOrgThreeList()
},
methods:{
//
async getOrgThreeList() {
const res = await govthree();
this.groThreeList = res.data
// console.log("this.GovthreeList2===>",res.data);
},
//
handleNodeClick(val){
// console.log('---------->',val)
this.getPost(val.id);
this.pageNum = 1;
this.departmentId= val.id
},
//
nodePostClick(val){
this.pageNum = 2;
this.postId= val.id
},
//
async getPost(val) {
const from = {
organization: val.toString(),
page: 1,
pagesize: 10,
};
const res = await positionlist(from);
this.postList = res.data.list;
},
}
}
</script>
<style>
.el-aside {
text-align: center;
height: calc(103% - 2px);
overflow: hidden;
overflow-y: auto;
overflow-x: hidden;
border-right: 1px solid rgb(220, 223, 230);
margin: 2px 0 0 0;
padding-bottom: 10px;
}
.el-main{
height: 105%;
}
.el-container {
height:calc(100% - 50px);
overflow: hidden;
}
.el-scrollbar {
height: 100%;
}
.el-scrollbar__wrap {
overflow: hidden;
overflow-y: auto;
overflow: scroll;
}
.el-tree-node.is-current>.el-tree-node__content {
color:#2E89DE!important
}
</style>

4
src/views/assessmentProgram/qualitativeIndicators.vue

@ -1214,7 +1214,7 @@ export default {
// console.log(this.bmId) // console.log(this.bmId)
// const list = [] // const list = []
// list.push(this.bmId) // list.push(this.bmId)
this.searchInfo.departmentid=this.bmId this.searchInfo.departmentid=this.bmId.toString();
this.getDataList() this.getDataList()
}, },
tableData() { tableData() {
@ -1866,7 +1866,7 @@ export default {
// //
async getGrouplist(){ async getGrouplist(){
const idFrom = { const idFrom = {
// id:1 id:313,
level:3 level:3
} }
const res = await getgroupdepartmap(idFrom) const res = await getgroupdepartmap(idFrom)

19
src/views/basicCont/post/posttargetlist.vue

@ -0,0 +1,19 @@
<template>
</template>
<script>
export default {
data() {
return {}
},
created(){
},
methods:{
}
}
</script>
<style>
</style>

84
src/views/basicCont/targetConfigLayout.vue

@ -4,6 +4,9 @@
<!-- 行政组织级 --> <!-- 行政组织级 -->
<el-aside width="220px"> <el-aside width="220px">
<el-scrollbar > <el-scrollbar >
<el-row>
<el-col :span="24"><div class="titlestyle"><el-divider>行政组织</el-divider></div></el-col>
</el-row>
<el-tree <el-tree
:data="GovthreeList2" :data="GovthreeList2"
:props="defaultProps1" :props="defaultProps1"
@ -14,12 +17,32 @@
<el-aside v-show="postList.length > 0" <el-aside v-show="postList.length > 0"
width="200px" width="200px"
> >
<el-row>
<el-col :span="24"><div class="titlestyle"><el-divider>岗位</el-divider></div></el-col>
</el-row>
<el-tree <el-tree
:data="postList" :data="postList"
:props="defaultProps1" :props="defaultProps1"
@node-click="NodePostClick" @node-click="NodePostClick"
></el-tree> ></el-tree>
</el-aside> </el-aside>
<el-aside v-show="peopleList.length > 0"
width="200px"
>
<el-row>
<el-col :span="24"><div class="titlestyle"><el-divider>人员</el-divider></div></el-col>
</el-row>
<el-tree
ref="postTree"
:data="peopleList"
:props="defaultProps1"
show-checkbox
node-key="id"
:check-on-click-node="true"
@check="NodePostPeopleClick"
></el-tree>
</el-aside>
<el-main> <el-main>
<el-scrollbar > <el-scrollbar >
<div v-if="postShow"> <div v-if="postShow">
@ -28,20 +51,25 @@
<div v-if="departShow"> <div v-if="departShow">
<targetDepartmentConfig :bmId="bmId"></targetDepartmentConfig> <targetDepartmentConfig :bmId="bmId"></targetDepartmentConfig>
</div> </div>
<div v-if="peopleShow">
<targetPeopleConfig :gwFromList="gwFromList" :peoId="peoId" :person="person"></targetPeopleConfig>
</div>
</el-scrollbar> </el-scrollbar>
</el-main> </el-main>
</el-container> </el-container>
</template> </template>
<script> <script>
import { govthree, positionlist } from "@/api/personnel/post"; import { govthree, positionlist,archiveslist } from "@/api/personnel/post";
import targetDepartmentConfig from "@/views/basicCont/targetDepartmentConfig.vue"; import targetDepartmentConfig from "@/views/basicCont/targetDepartmentConfig.vue";
import targetPostConfig from "@/views/basicCont/targetPostConfig.vue"; import targetPostConfig from "@/views/basicCont/targetPostConfig.vue";
import targetPeopleConfig from "@/views/basicCont/targetPeopleConfig.vue";
export default { export default {
components: { components: {
// project, // project,
targetDepartmentConfig, targetDepartmentConfig,
targetPostConfig targetPostConfig,
targetPeopleConfig
}, },
data() { data() {
return { return {
@ -51,13 +79,18 @@ export default {
label: "name", label: "name",
}, },
postList: [], // postList: [], //
peopleList: [], //
departShow:true, // departShow:true, //
postShow:false, // postShow:false, //
peopleShow:false, //
bmId:1, //ID bmId:1, //ID
gwId:1, // gwId:1, //
person:[],
peoId:0,
gwFromList:{ // gwFromList:{ //
gwId:1, gwId:1,
bmId:1 bmId:1,
people:[]
}, },
} }
}, },
@ -82,6 +115,7 @@ export default {
this.bmId=val.id this.bmId=val.id
this.gwFromList.bmId=val.id this.gwFromList.bmId=val.id
this.postShow=false this.postShow=false
this.peopleShow=false;
this.departShow=true this.departShow=true
// console.log(val); // console.log(val);
}, },
@ -101,9 +135,48 @@ export default {
this.gwFromList.gwId=val.id this.gwFromList.gwId=val.id
this.postShow=true this.postShow=true
this.departShow=false this.departShow=false
this.peopleShow=false;
console.log('岗位') console.log('岗位')
console.log(this.gwFromList); console.log(this.gwFromList);
this.getPostPeople(val.id)
}, },
//
async getPostPeople(val){
const sendData = {
adminorg:this.bmId,
position:this.gwId,
page: 1,
pagesize: 1000000,
}
const res = await archiveslist(sendData);
this.peopleList = res.data.list;
console.log("获取岗位人员",this.peopleList);
},
//
NodePostPeopleClick(val,checked){
this.peoId = val.keystr
// console.log("",val,checked);
this.gwFromList.people=[];
this.person=[];
if(checked.checkedNodes.length > 0){
var allManKey = new Array
checked.checkedNodes.forEach(item => {
this.gwFromList.people.push({id:item.keystr,name:item.name,number:item.number})
allManKey.push(item.keystr)
});
this.postShow=false
this.departShow=false
this.peopleShow=true;
this.person = allManKey
}else{
this.postShow=true
this.departShow=false
this.peopleShow=false;
this.peopleList = []
}
// console.log("------->",val,this.gwFromList);
}
} }
} }
</script> </script>
@ -140,4 +213,9 @@ export default {
background-color:red !important; background-color:red !important;
color:#2E89DE!important color:#2E89DE!important
} }
.titlestyle{
text-align: left;
font-weight: bold;
padding: 0 5px;
}
</style> </style>

25
src/views/basicCont/targetLayout.vue

@ -15,9 +15,13 @@
width="200px" width="200px"
> >
<el-tree <el-tree
ref="postTree"
:data="postList" :data="postList"
:props="defaultProps1" :props="defaultProps1"
@node-click="NodePostClick" show-checkbox
node-key="id"
:check-on-click-node="true"
@check="NodePostClick"
></el-tree> ></el-tree>
</el-aside> </el-aside>
<el-main> <el-main>
@ -72,7 +76,8 @@ export default {
gwId:1, // gwId:1, //
gwFromList:{ // gwFromList:{ //
gwId:1, gwId:1,
bmId:1 bmId:1,
postId:[]
}, },
} }
}, },
@ -111,13 +116,25 @@ export default {
this.postList = res.data.list; this.postList = res.data.list;
}, },
// //
NodePostClick(val) { NodePostClick(val,checked) {
this.gwId=val.id this.gwId=val.id
this.gwFromList.gwId=val.id this.gwFromList.gwId=val.id
this.postShow=true this.postShow=true
this.departShow=false this.departShow=false
// console.log('') console.log('岗位',val,checked.checkedNodes)
console.log(this.gwFromList); console.log(this.gwFromList);
if(checked.checkedNodes.length <= 0){
this.$refs.postTree.setCheckedKeys([val.id]);
console.log("----------------->",[val.id]);
this.gwFromList.postId = [val.id]
this.gwFromList.gwId=val.id
}else{
this.gwFromList.postId = [];
checked.checkedNodes.forEach(item => {
this.gwFromList.postId.push(item.id)
});
}
console.log("All---------------->",this.gwFromList);
}, },
} }
} }

1158
src/views/basicCont/targetPeopleConfig.vue

File diff suppressed because it is too large

28
src/views/basicInfo/gwProject.vue

@ -624,6 +624,7 @@ export default {
cycle: [{ required: true, message: "必填", trigger: "blur" }], cycle: [{ required: true, message: "必填", trigger: "blur" }],
cycleattr: [{ required: true, message: "必填", trigger: "blur" }], cycleattr: [{ required: true, message: "必填", trigger: "blur" }],
}, },
}; };
}, },
created() { created() {
@ -647,6 +648,22 @@ export default {
// const list = [] // const list = []
// list.push(this.gwFromList.gwId.toString()) // list.push(this.gwFromList.gwId.toString())
this.searchInfo.departmentsPost=this.gwFromList.gwId.toString() this.searchInfo.departmentsPost=this.gwFromList.gwId.toString()
this.relevantpostsman =[];
this.gwFromList.postId.forEach(items=>{
this.relevantpostsman.push({
id:items.toString(),
operator:[]
})
});
// relevantpostsman:[{
// // id
// id:'',
// //
// operator:[]
// }],
this.getPost(this.gwFromList.bmId) this.getPost(this.gwFromList.bmId)
this.getDataList() this.getDataList()
}, },
@ -767,7 +784,7 @@ export default {
// //
} }
}); });
console.log(this.grouplistBackup); console.log("第一层没有子项做的操作",this.grouplistBackup);
}, },
// //
async getGrouplist() { async getGrouplist() {
@ -821,7 +838,14 @@ export default {
// //
showAdd() { showAdd() {
this.dialogFormVisible = true; this.dialogFormVisible = true;
console.log(this.dialogFormVisible); this.relevantpostsman =[];
this.gwFromList.postId.forEach(items=>{
this.relevantpostsman.push({
id:items.toString(),
operator:[]
})
});
console.log("新增按钮------------->",this.relevantpostsman);
}, },
// //
async showEdit(row) { async showEdit(row) {

33
src/views/echarts/echarts.vue

@ -36,8 +36,21 @@
</el-option> </el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="核算方式">
<el-select multiple v-model="searchInfo.AccMethod" clearable placeholder="请选择核算方式">
<el-option label="合计值" :value=1></el-option>
<el-option label="平均值" :value=2></el-option>
</el-select>
</el-form-item>
<el-form-item label="解析维度">
<el-select v-model="searchInfo.analysisangle" clearable placeholder="请选择核算方式">
<el-option label="行政组织" :value=1></el-option>
<el-option label="时间" :value=2></el-option>
</el-select>
</el-form-item>
<el-form-item label="周期"> <el-form-item label="周期">
<el-select v-model="timeattribute.class" clearable placeholder="请选择"> <el-select v-model="timeattribute.class" collapse-tags clearable placeholder="请选择">
<el-option label="全年" :value=0></el-option> <el-option label="全年" :value=0></el-option>
<el-option label="半年" :value=1></el-option> <el-option label="半年" :value=1></el-option>
<el-option label="季度" :value=2></el-option> <el-option label="季度" :value=2></el-option>
@ -45,7 +58,7 @@
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="周期详情" v-if="timeattribute.class==1"> <el-form-item label="周期详情" v-if="timeattribute.class==1">
<el-select multiple v-model="banNianSele" clearable placeholder="请选择"> <el-select multiple v-model="banNianSele" collapse-tags clearable placeholder="请选择">
<el-option <el-option
v-for="item in banNian" v-for="item in banNian"
:key="item.id" :key="item.id"
@ -55,7 +68,7 @@
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="周期详情" v-if="timeattribute.class==2"> <el-form-item label="周期详情" v-if="timeattribute.class==2">
<el-select multiple v-model="jiDuSele" clearable placeholder="请选择时间"> <el-select multiple v-model="jiDuSele" collapse-tags clearable placeholder="请选择时间">
<el-option <el-option
v-for="item in jiDu" v-for="item in jiDu"
:key="item.id" :key="item.id"
@ -65,7 +78,7 @@
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="周期详情" v-if="timeattribute.class==3"> <el-form-item label="周期详情" v-if="timeattribute.class==3">
<el-select multiple v-model="yueSele" clearable placeholder="请选择时间"> <el-select multiple v-model="yueSele" collapse-tags clearable placeholder="请选择时间">
<el-option <el-option
v-for="item in yue" v-for="item in yue"
:key="item.id" :key="item.id"
@ -73,18 +86,6 @@
:value="item.id"> :value="item.id">
</el-option> </el-option>
</el-select> </el-select>
</el-form-item>
<el-form-item label="核算方式">
<el-select multiple v-model="searchInfo.AccMethod" clearable placeholder="请选择核算方式">
<el-option label="合计值" :value=1></el-option>
<el-option label="平均值" :value=2></el-option>
</el-select>
</el-form-item>
<el-form-item label="解析维度">
<el-select v-model="searchInfo.analysisangle" clearable placeholder="请选择核算方式">
<el-option label="行政组织" :value=1></el-option>
<el-option label="时间" :value=2></el-option>
</el-select>
</el-form-item> </el-form-item>
<!-- <el-form-item label="考核维度状态"> <!-- <el-form-item label="考核维度状态">
<el-select v-model="searchInfo.state" clearable placeholder="请选择状态"> <el-select v-model="searchInfo.state" clearable placeholder="请选择状态">

128
src/views/echarts/table.vue

@ -4,6 +4,17 @@
<div class="Echarts"> <div class="Echarts">
<el-tabs stretch background-color="#545c64"> <el-tabs stretch background-color="#545c64">
<el-tab-pane label="成绩表" style="padding:20px"> <el-tab-pane label="成绩表" style="padding:20px">
<el-form ref="searchForm" :inline="true" :model="searchChengji">
<el-form-item label="年度">
<el-date-picker
v-model="transcript"
type="year"
placeholder="选择年">
</el-date-picker>
</el-form-item>
<el-button type="primary" icon="el-icon-search" @click="onSubmitChengji">查询</el-button>
</el-form>
<el-table :data="scoreTableList.readStatisticsData" border style="width: 100%" :cell-style="{padding:'5px'}"> <el-table :data="scoreTableList.readStatisticsData" border style="width: 100%" :cell-style="{padding:'5px'}">
<el-table-column prop="department" label="部门" align="center"></el-table-column> <el-table-column prop="department" label="部门" align="center"></el-table-column>
<el-table-column prop="a" label="1月份" align="center"> <el-table-column prop="a" label="1月份" align="center">
@ -90,21 +101,21 @@
<el-option value='2' label="成绩表">成绩表</el-option> <el-option value='2' label="成绩表">成绩表</el-option>
</el-select> </el-select>
</el-form-item> --> </el-form-item> -->
<el-form-item label="所属公司"> <!-- <el-form-item label="所属公司">
<el-cascader filterable clearable v-model="searchVersion.group" :options="companyList" :show-all-levels="false" :props="props2" @change="selectGroup"></el-cascader> <el-cascader filterable clearable v-model="searchVersion.group" :options="companyList" :show-all-levels="false" :props="props2" @change="selectGroup"></el-cascader>
<!-- <el-select filterable v-model="searchVersion.group" clearable placeholder="请选择" @change="selectGroup">
<el-option </el-form-item> -->
v-for="item in companyList" <el-form-item label="所属行政组织">
:key="item.id"
:label="item.name"
:value="item.id">
</el-option>
</el-select> -->
</el-form-item>
<el-form-item label="所属部门">
<el-cascader filterable clearable v-model="searchVersion.deaprtid" :options="departmentList" :show-all-levels="false" :props="props1"></el-cascader> <el-cascader filterable clearable v-model="searchVersion.deaprtid" :options="departmentList" :show-all-levels="false" :props="props1"></el-cascader>
</el-form-item> </el-form-item>
<el-button size="mini" type="primary" icon="el-icon-search" @click="onSubmit">查询</el-button> <el-form-item label="年度">
<el-date-picker
v-model="transcript_hui"
type="year"
placeholder="选择年">
</el-date-picker>
</el-form-item>
<el-button type="primary" icon="el-icon-search" @click="onSubmit">查询</el-button>
</el-form> </el-form>
</div> </div>
<el-table height='725' style="width: 100%" :data="data" border :span-method="objectSpanMethod" :cell-style="{padding:'0px'}" > <el-table height='725' style="width: 100%" :data="data" border :span-method="objectSpanMethod" :cell-style="{padding:'0px'}" >
@ -113,8 +124,8 @@
<el-table-column prop="dimensionweight" label="维度权重" align="center"></el-table-column> <el-table-column prop="dimensionweight" label="维度权重" align="center"></el-table-column>
<el-table-column prop="targetname" align="center" label="考核指标"> <el-table-column prop="targetname" align="center" label="考核指标">
<template slot-scope="scope"> <template slot-scope="scope">
<el-link v-if="scope.row.type==1" type="primary" >{{scope.row.targetname}}</el-link> <el-link v-if="scope.row.type==1" type="primary" @click="clickOld(scope.row)">{{scope.row.targetname}}</el-link>
<div v-if="scope.row.type==2">{{scope.row.targetname}}</div> <div v-if="scope.row.type==2" @click="clickOld(scope.row)">{{scope.row.targetname}}</div>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column prop="targetweight" label="指标权重" align="center"></el-table-column> <el-table-column prop="targetweight" label="指标权重" align="center"></el-table-column>
@ -147,7 +158,7 @@
<template #default="scope"> <template #default="scope">
<el-collapse> <el-collapse>
<el-collapse-item title="详情"> <el-collapse-item title="详情">
<div v-for="(iteam,index) in scope.row.executivedepartment"> <div v-for="(iteam,index) in scope.row.executivedepartment" :key="index">
{{iteam}} {{iteam}}
</div> </div>
</el-collapse-item> </el-collapse-item>
@ -194,10 +205,10 @@
<div style='border-bottom: 1px solid #EBEEF5;'> <div style='border-bottom: 1px solid #EBEEF5;'>
{{scope.row.score[index].achievement}} {{scope.row.score[index].achievement}}
</div> --> </div> -->
<div v-if="scope.row.manualgear==1" style=''> <div v-if="scope.row.manualgear==1" style="">
{{scope.row.score[index].actualscore}} {{scope.row.score[index].actualscore}}
</div> </div>
<div v-if="scope.row.manualgear==2" style='color: blue;'> <div v-if="scope.row.manualgear==2" style="color: blue;">
{{scope.row.score[index].actualscore}} {{scope.row.score[index].actualscore}}
</div> </div>
</template> </template>
@ -216,18 +227,11 @@
<div v-if="echartsShow==2" style="padding:50px;"> <div v-if="echartsShow==2" style="padding:50px;">
<div class="gva-search-box"> <div class="gva-search-box">
<el-form ref="searchForm" :inline="true" :model="searchVersion"> <el-form ref="searchForm" :inline="true" :model="searchVersion">
<el-form-item label="所属公司"> <!-- <el-form-item label="所属公司">
<el-cascader filterable clearable v-model="searchVersion.group" :options="companyList" :show-all-levels="false" :props="props2" @change="selectGroup"></el-cascader> <el-cascader filterable clearable v-model="searchVersion.group" :options="companyList" :show-all-levels="false" :props="props2" @change="selectGroup"></el-cascader>
<!-- <el-select filterable v-model="searchVersion.group" clearable placeholder="请选择" @change="selectGroup">
<el-option </el-form-item> -->
v-for="item in companyList" <el-form-item label="所属行政组织">
:key="item.id"
:label="item.name"
:value="item.id">
</el-option>
</el-select> -->
</el-form-item>
<el-form-item label="所属部门">
<el-cascader filterable clearable v-model="searchVersion.deaprtid" :options="departmentList" :show-all-levels="false" :props="props1"></el-cascader> <el-cascader filterable clearable v-model="searchVersion.deaprtid" :options="departmentList" :show-all-levels="false" :props="props1"></el-cascader>
</el-form-item> </el-form-item>
@ -266,8 +270,8 @@
<el-table-column prop="dimensionweight" label="维度权重" align="center" width="80"></el-table-column> <el-table-column prop="dimensionweight" label="维度权重" align="center" width="80"></el-table-column>
<el-table-column prop="targetname" align="center" label="考核指标" width="120"> <el-table-column prop="targetname" align="center" label="考核指标" width="120">
<template slot-scope="scope"> <template slot-scope="scope">
<el-link v-if="scope.row.type==1" type="primary" >{{scope.row.targetname}}</el-link> <el-link v-if="scope.row.type==1" type="primary" @click="clickOld(scope.row)">{{scope.row.targetname}}</el-link>
<div v-if="scope.row.type==2">{{scope.row.targetname}}</div> <div v-if="scope.row.type==2" @click="clickOld(scope.row)">{{scope.row.targetname}}</div>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column prop="targetweight" label="指标权重" align="center" width="80"></el-table-column> <el-table-column prop="targetweight" label="指标权重" align="center" width="80"></el-table-column>
@ -300,7 +304,7 @@
<template #default="scope"> <template #default="scope">
<el-collapse> <el-collapse>
<el-collapse-item title="详情"> <el-collapse-item title="详情">
<div v-for="(iteam,index) in scope.row.executivedepartment"> <div v-for="(iteam,index) in scope.row.executivedepartment" :key="index">
{{iteam}} {{iteam}}
</div> </div>
</el-collapse-item> </el-collapse-item>
@ -310,7 +314,7 @@
</el-table-column> </el-table-column>
<el-table-column align="center" label="分值名称" width="70"> <el-table-column align="center" label="分值名称" width="70">
<template #default="scope"> <template #default="scope">
<div style='border-bottom: 1px solid #EBEEF5;' v-for='(item,index) in scope.row.statisticsname' :key='index'> <div style="border-bottom: 1px solid #EBEEF5;" v-for='(item,index) in scope.row.statisticsname' :key='index'>
{{item}} {{item}}
</div> </div>
<!-- <el-descriptions :column="1" border> <!-- <el-descriptions :column="1" border>
@ -343,25 +347,30 @@
</el-table-column> --> </el-table-column> -->
<template slot-scope="scope"> <template slot-scope="scope">
<div style='border-bottom: 1px solid #EBEEF5;'> <div style="border-bottom: 1px solid #EBEEF5;">
{{scope.row.score[index].allprize}} <span v-if="scope.row.type==2">{{scope.row.score[index].allprize}}</span>
<span v-if="scope.row.type==1&&scope.row.score[index].allprize==0"> - </span>
</div> </div>
<div style='border-bottom: 1px solid #EBEEF5;'> <div style="border-bottom: 1px solid #EBEEF5;">
{{scope.row.score[index].zeroprize}} <span v-if="scope.row.type==2">{{scope.row.score[index].zeroprize}}</span>
<span v-if="scope.row.type==1&&scope.row.score[index].zeroprize==0"> - </span>
</div> </div>
<div style='border-bottom: 1px solid #EBEEF5;'> <div style="border-bottom: 1px solid #EBEEF5;">
{{scope.row.score[index].cappingval}} <span v-if="scope.row.type==2">{{scope.row.score[index].cappingval}}</span>
<span v-if="scope.row.type==1&&scope.row.score[index].cappingval==0"> - </span>
</div> </div>
<div style='border-bottom: 1px solid #EBEEF5;'> <div style="border-bottom: 1px solid #EBEEF5;">
{{scope.row.score[index].scoreval}} <span v-if="scope.row.type==2">{{scope.row.score[index].scoreval}}</span>
<span v-if="scope.row.type==1&&scope.row.score[index].scoreval==0"> - </span>
</div> </div>
<div style='border-bottom: 1px solid #EBEEF5;'> <div style="border-bottom: 1px solid #EBEEF5;">
{{scope.row.score[index].achievement}} <span v-if="scope.row.type==2">{{scope.row.score[index].achievement}}</span>
<span v-if="scope.row.type==1&&scope.row.score[index].achievement==0"> - </span>
</div> </div>
<div v-if="scope.row.manualgear==1" style='border-bottom: 1px solid #EBEEF5;'> <div v-if="scope.row.manualgear==1" style="border-bottom: 1px solid #EBEEF5;">
{{scope.row.score[index].actualscore}} {{scope.row.score[index].actualscore}}
</div> </div>
<div v-if="scope.row.manualgear==2" style='border-bottom: 1px solid #EBEEF5;color: blue;'> <div v-if="scope.row.manualgear==2" style="border-bottom: 1px solid #EBEEF5;color: blue;">
{{scope.row.score[index].actualscore}} {{scope.row.score[index].actualscore}}
</div> </div>
</template> </template>
@ -387,8 +396,8 @@
<el-table-column prop="dimensionweight" label="维度权重" align="center"></el-table-column> <el-table-column prop="dimensionweight" label="维度权重" align="center"></el-table-column>
<el-table-column prop="targetname" align="center" label="考核指标"> <el-table-column prop="targetname" align="center" label="考核指标">
<template slot-scope="scope"> <template slot-scope="scope">
<el-link v-if="scope.row.type==1" type="primary" >{{scope.row.targetname}}</el-link> <el-link v-if="scope.row.type==1" type="primary" @click="clickOld(scope.row)">{{scope.row.targetname}}</el-link>
<div v-if="scope.row.type==2">{{scope.row.targetname}}</div> <div v-if="scope.row.type==2" @click="clickOld(scope.row)">{{scope.row.targetname}}</div>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column prop="targetweight" label="指标权重" align="center"></el-table-column> <el-table-column prop="targetweight" label="指标权重" align="center"></el-table-column>
@ -421,7 +430,7 @@
<template #default="scope"> <template #default="scope">
<el-collapse> <el-collapse>
<el-collapse-item title="详情"> <el-collapse-item title="详情">
<div v-for="(iteam,index) in scope.row.executivedepartment"> <div v-for="(iteam,index) in scope.row.executivedepartment" :key="index">
{{iteam}} {{iteam}}
</div> </div>
</el-collapse-item> </el-collapse-item>
@ -650,7 +659,10 @@ export default {
spanArr1:[], spanArr1:[],
spanArr2:[], spanArr2:[],
lieArr:[], lieArr:[],
liePos:'' liePos:'',
transcript:"",
transcript_hui:"",
searchChengji:{}
} }
}, },
created(){ created(){
@ -659,6 +671,9 @@ export default {
this.getGrouplist() this.getGrouplist()
this.initialDepartment() this.initialDepartment()
this.getscoreTable() this.getscoreTable()
// const timeOne = new Date()
// const year = timeOne.getFullYear()
// this.transcript_hui = year
}, },
// //
watch: { watch: {
@ -701,8 +716,18 @@ export default {
}, },
}, },
methods: { methods: {
//
async onSubmitChengji(){
if(this.transcript != ""){
this.searchChengji.year = this.transcript.getFullYear().toString()
}
console.log("成绩表查询",this.searchChengji)
const res = await departmenttranscript(this.searchChengji)
this.scoreTableList=res.data
},
// //
clickOld(row){ clickOld(row){
console.log("点击得分详情后调取历史记录-->",row);
this.rowOldData=row this.rowOldData=row
// //
if (row.type==1) { if (row.type==1) {
@ -1076,12 +1101,17 @@ export default {
if (this.searchVersion.deaprtid!=null) { if (this.searchVersion.deaprtid!=null) {
this.searchVersion.deaprtid=this.searchVersion.deaprtid.toString() this.searchVersion.deaprtid=this.searchVersion.deaprtid.toString()
} }
if(this.transcript_hui != ""){
this.searchVersion.year = this.transcript_hui.getFullYear().toString()
}
console.log("this.searchVersion") console.log("this.searchVersion")
console.log(this.searchVersion) console.log(this.searchVersion)
const res = await getplanversionvalid(this.searchVersion) const res = await getplanversionvalid(this.searchVersion)
this.data = res.data this.data = res.data
console.log(this.data) console.log("获取初始表格数据---------->",this.data)
this.data.forEach(ele=>{ this.data.forEach(ele=>{
ele.targetid = ele.target
// //
if (ele.cycle==0) { if (ele.cycle==0) {

357
src/views/hr/newhr/content/editinsidework.vue

@ -0,0 +1,357 @@
<template>
<!--添加-->
<el-dialog :close-on-click-modal="false" :visible.sync="showBoxCont.addBox" title="编辑信息" :before-close="closeAddDialog" width="40%">
<el-form ref="addForm" :model="addContEditInset" label-width="120px" class="demo-ruleForm">
<el-form ref="addForm" :model="addContEditInset" :rules="addRules" label-width="120px" class="demo-ruleForm">
<el-form-item label="调动类型" prop="changetype">
<el-select filterable v-model="addContEditInset.changetype" clearable placeholder="请选择" @change="qianzhiShuaxin">
<el-option
v-for="item in postChangeType"
:key="item.id"
:label="item.title"
:value="item.id">
</el-option>
</el-select>
</el-form-item>
<el-form-item label="任职开始日期" prop="startTimes">
<el-date-picker
clearable
format="yyyy-MM-dd"
@change="startTimeChange"
v-model="addContEditInset.startTimes"
type="date"
placeholder="选择入任职开始日期">
</el-date-picker>
<span class="tisp_title">此处为必填项</span>
</el-form-item>
<el-form-item label="任职结束日期" >
<el-date-picker
clearable
format="yyyy 年 MM 月 dd 日"
@change="endTimeChange"
v-model="addContEditInset.endTimes"
type="date"
placeholder="还在任职中,请留空!">
</el-date-picker>
<span class="tisp_title">若还在任职中请留空</span>
</el-form-item>
<el-form-item label="归属组织" prop="orglist">
<el-cascader clearable v-model="addContEditInset.orglist" :options="grouplist" @change="orgChange" :props="propsdepart" style="width:100%"></el-cascader>
</el-form-item>
<el-form-item label="岗位">
<el-row>
<el-col :span="12">
<el-select filterable v-model="addContEditInset.position" clearable placeholder="请选择" @change="qianzhiShuaxin">
<el-option
v-for="item in postListAdd"
:key="item.id"
:label="item.name"
:value="item.id">
</el-option>
</el-select>
</el-col>
<el-col :span="12">
<el-select filterable v-model="addContEditInset.assigntype" placeholder="请选择主职、兼职" @change="qianzhiShuaxin">
<el-option
v-for="item in mainAndPartTimeJobs"
:key="item.id"
:label="item.title"
:value="item.id">
</el-option>
</el-select>
</el-col>
</el-row>
</el-form-item>
<el-form-item label="职务" prop="jobid">
<el-select filterable v-model="addContEditInset.jobid" clearable placeholder="请选择" @change="qianzhiShuaxin">
<el-option
v-for="item in dutieslist"
:key="item.id"
:label="item.name"
:value="item.id">
</el-option>
</el-select>
</el-form-item>
<el-form-item label="职务等级">
<el-select filterable v-model="addContEditInset.gradepositions" placeholder="请选择" @change="qianzhiShuaxin">
<el-option
v-for="item in positiongrade"
:key="item.id"
:label="item.tittle"
:value="item.id">
</el-option>
</el-select>
</el-form-item>
<el-form-item label="班组" prop="team">
<el-select filterable v-model="addContEditInset.team" clearable placeholder="请选择" @change="qianzhiShuaxin">
<el-option
v-for="item in teamcontlist"
:key="item.id"
:label="item.name"
:value="item.id">
</el-option>
</el-select>
</el-form-item>
</el-form>
</el-form>
<template #footer class="el_dialog__footer">
<div class="dialog-footer ">
<el-button size="small" type="primary" @click="editContsubmit" :loading="showBoxCont.addBoxIsTrue"> </el-button>
<el-button size="small" @click="closeAddDialog"> </el-button>
</div>
</template>
</el-dialog>
</template>
<script>
import { teamcontlist,positionlistIsMe,dutieslist } from "@/api/personnel/post";
import { peopleMethod,judgeArray } from "@/api/people/peopledata"
import { getgroupdepartmap } from '@/api/duty/group' //
import { eidtinsidehistoryworkcont } from "@/api/systemaccredit/systemhrapi"
export default {
name:"editinsidework",
props:['userKey',"getInsideWorkList","inWorkCont"],
data() {
return {
grouplist:[], //
dutieslist:[], //
postListAdd: [], //
teamcontlist:[], //
positiongrade:peopleMethod.positiongrade, //
mainAndPartTimeJobs:peopleMethod.mainAndPartTimeJobs, //
postChangeType:peopleMethod.postChangeType, //
propsdepart: {
value: "id",
label: "name",
children: "children",
}, //
startTime:"",
endTime:"",
showBoxCont:{
addBox:true,
addBoxIsTrue:false,
},
addContEditInset:{
id:this.inWorkCont.id.toString(),
}, //
addRules:{
orglist: [{ required: true, message: '必填', trigger: 'blur' }],
changetype: [{ required: true, message: '必填', trigger: 'blur' }],
team: [{ required: true, message: '必填', trigger: 'blur' }],
// position: [{ required: true, message: '', trigger: 'blur' }],
jobid: [{ required: true, message: '必填', trigger: 'blur' }],
startTimes: [{ required: true, message: '必填', trigger: 'blur' }],
}, //
}
},
created(){
this.getGrouplist();
this.getTeam();
this.getDutieslist();
console.log("this.inWorkCont--->",this.inWorkCont);
this.addContEditInset.id=this.inWorkCont.id.toString();
this.addContEditInset.changetype=this.inWorkCont.changetype; //
this.addContEditInset.startTimes=this.inWorkCont.starttimg; //
this.addContEditInset.starttime=this.inWorkCont.starttimg; //
if(this.inWorkCont.endtimg != "至今"){
this.addContEditInset.endTimes=this.inWorkCont.endtimg; //
this.addContEditInset.endtime=this.inWorkCont.endtimg;
}else{
this.addContEditInset.endtime= ""
}
if(this.inWorkCont.orgid != 0){
this.addContEditInset.orglist=this.inWorkCont.orgid; //
this.getPostAdd(this.inWorkCont.orgid);
}
if(this.inWorkCont.postid != 0){
this.addContEditInset.position=this.inWorkCont.postid; //
}
if(this.inWorkCont.assigntype == 0) this.inWorkCont.assigntype = 2;
this.addContEditInset.assigntype=this.inWorkCont.assigntype; //
if(this.inWorkCont.jobid != 0){
this.addContEditInset.jobid=this.inWorkCont.jobid; //
}
if(this.inWorkCont.postnlevel == 0) this.inWorkCont.postnlevel = 3;
this.addContEditInset.gradepositions=this.inWorkCont.postnlevel; //
if(this.inWorkCont.teamid != 0){
this.addContEditInset.team=this.inWorkCont.teamid; //
}
console.log("this.addContEditInset--->",this.addContEditInset);
},
methods:{
//
async getGrouplist(){
let sendData = {
id:313,
all:1
};
const res = await getgroupdepartmap(sendData)
this.grouplist=res.data
},
//
orgChange(val){
if(val){
if(judgeArray(val) && val.length > 0){
let postId = val[val.length-1];
this.getPostAdd(postId);
}else{
this.postListAdd = [];
}
}else{
this.postListAdd = [];
}
//
// this.addContEditInset.position = null
console.log("选择行政组织---------------->",val)
},
//
async getPostAdd(val) {
const from = {
organization: val.toString(),
page: 1,
pagesize: 500,
};
const res = await positionlistIsMe(from);
this.postListAdd = res.data.list;
console.log("获取刚问列表---------------->",res)
},
//
async getDutieslist(){
let res = await dutieslist();
this.dutieslist = res.data.list
console.log("班组---------------->",res,res.list)
},
//
async getTeam(){
let res = await teamcontlist();
this.teamcontlist = res.data.list
console.log("班组---------------->",res)
},
//
startTimeChange(){
if(this.addContEditInset.startTimes && this.addContEditInset.startTimes != null){
let yearVal = this.addContEditInset.startTimes.getFullYear();
let monthVal = this.addContEditInset.startTimes.getMonth()+1;
let dayVal = this.addContEditInset.startTimes.getDate();
if(monthVal < 10) monthVal = "0"+monthVal;
if(dayVal < 10) dayVal = "0"+dayVal;
this.addContEditInset.starttime= yearVal + "-" + monthVal + "-" + dayVal
}
},
endTimeChange(){
if(this.addContEditInset.endTimes && this.addContEditInset.endTimes != null){
let yearVal = this.addContEditInset.endTimes.getFullYear();
let monthVal = this.addContEditInset.endTimes.getMonth()+1;
let dayVal = this.addContEditInset.endTimes.getDate();
if(monthVal < 10) monthVal = "0"+monthVal;
if(dayVal < 10) dayVal = "0"+dayVal;
this.addContEditInset.endtime= yearVal + "-" + monthVal + "-" + dayVal
}
},
//
closeAddDialog(){
this.showBoxCont.addBox = false;
this.showBoxCont.addBoxIsTrue = false;
this.$emit('childByValue', 0)
},
//
async editContsubmit(){
this.showBoxCont.addBoxIsTrue = true;
console.log("添加正式提交数据------------->",this.addContEditInset)
this.$refs.addForm.validate(async valid => {
if (valid) {
if(this.addContEditInset.id == ""){
this.tispOrgBox('参数错误!不可提交!请刷新页面!','error');
return
}
if(this.addContEditInset.orglist){
if(judgeArray(this.addContEditInset.orglist) && this.addContEditInset.orglist.length > 0){
let orgAry = this.addContEditInset.orglist
console.log("编辑行政组织----223----->",orgAry.length)
let postId = orgAry[orgAry.length-1];
this.addContEditInset.orgid = postId
}else{
if(this.addContEditInset.orglist == 0 || this.addContEditInset.orglist == "" || this.addContEditInset.orglist == null){
this.tispOrgBox('请选择归属行政组1织!','error');
return
}
}
}else{
this.tispOrgBox('请选择归属行政组织!','error');
return
}
let sendData = {
id:this.addContEditInset.id,
orgid:(this.addContEditInset.orgid*1).toString(),
position:(this.addContEditInset.position*1).toString(),
jobid:(this.addContEditInset.jobid*1).toString(),
gradepositions:this.addContEditInset.gradepositions,
starttime:this.addContEditInset.starttime,
endtime:this.addContEditInset.endtime,
changetype:this.addContEditInset.changetype,
assigntype:this.addContEditInset.assigntype,
team:(this.addContEditInset.team*1).toString(),
}
const respon = await eidtinsidehistoryworkcont(sendData)
if (respon.code === 0) {
this.$message({
type: 'success',
message: respon.msg
})
this.showBoxCont.addBoxIsTrue = true;
this.getInsideWorkList();
this.$forceUpdate();
this.closeAddDialog();
}
}else {
this.showBoxCont.addBoxIsTrue = false;
return false;
}
});
},
//
tispOrgBox(msg,typeClass){
console.log("添加正式提交数据------"+typeClass+"-------->",msg)
this.$message({
showClose: true,
message: msg,
type: typeClass,
duration:2000,
onClose:this.openOrgButton
});
this.showBoxCont.addBoxIsTrue = false;
},
//
qianzhiShuaxin(){
this.$forceUpdate()
},
}
}
</script>
<style>
</style>

184
src/views/hr/newhr/content/externalwork.vue

@ -0,0 +1,184 @@
<template>
<!--添加-->
<el-dialog :close-on-click-modal="false" :visible.sync="showBoxCont.addBox" title="添加信息" :before-close="closeAddDialog" width="40%">
<el-form ref="addForm" :model="addCont" :rules="addRules" label-width="120px" class="demo-ruleForm">
<el-form-item label="任职开始日期" prop="startTime">
<el-date-picker
clearable
format="yyyy-MM-dd"
@change="startTimeChange"
v-model="addCont.startTime"
type="date"
placeholder="选择入任职开始日期">
</el-date-picker>
<span class="tisp_title">此处为必填项</span>
</el-form-item>
<el-form-item label="任职结束日期" prop="endTime">
<el-date-picker
clearable
format="yyyy-MM-dd"
v-model="addCont.endTime"
type="date"
placeholder="还在任职中,请留空!">
</el-date-picker>
</el-form-item>
<el-form-item label="入职公司" prop="company">
<el-input v-model="addCont.company" placeholder="入职公司"></el-input>
</el-form-item>
<el-form-item label="入职部门" prop="department">
<el-input v-model="addCont.department" placeholder="入职部门"></el-input>
</el-form-item>
<el-form-item label="入职职务" prop="position">
<el-input v-model="addCont.position" placeholder="入职职务"></el-input>
</el-form-item>
<el-form-item label="证明人" prop="witness">
<el-input v-model="addCont.witness" placeholder="证明人"></el-input>
</el-form-item>
<el-form-item label="证明人电话" prop="witnesstel">
<el-input v-model="addCont.witnesstel" placeholder="证明人电话"></el-input>
</el-form-item>
<el-form-item label="备注">
<el-input v-model="addCont.remarks" placeholder="备注"></el-input>
</el-form-item>
</el-form>
<template #footer class="el_dialog__footer">
<div class="dialog-footer ">
<el-button size="small" type="primary" @click="addContsubmitWai" :loading="showBoxCont.addBoxIsTrue"> </el-button>
<el-button size="small" @click="closeAddDialog"> </el-button>
</div>
</template>
</el-dialog>
</template>
<script>
import { addWorkHistoryCont } from "@/api/systemaccredit/systemhrapi"
export default {
name:"externalwork",
props:['userKey',"getExtWorkList"],
data() {
return {
showBoxCont:{
addBox:true,
addBoxIsTrue:false,
},
addCont:{
// id:this.userKey,
},
startTime:"",
endTime:"",
addRules:{
company: [{ required: true, message: '必填', trigger: 'blur' }],
department: [{ required: true, message: '必填', trigger: 'blur' }],
position: [{ required: true, message: '必填', trigger: 'blur' }],
witness: [{ required: true, message: '必填', trigger: 'blur' }],
witnesstel: [
{ required: true, message: '必填', trigger: 'blur' },
{ min: 11, max: 11, message: "请输入11位手机号码", trigger: "blur" },
{
pattern: /^(13[0-9]|14[579]|15[0-3,5-9]|16[6]|17[0135678]|18[0-9]|19[89])\d{8}$/,
message: "请输入正确的手机号码",
trigger: "blur"
},
],
startTime: [{ required: true, message: '必填', trigger: 'blur' }],
endTime: [{ required: true, message: '必填', trigger: 'blur' }],
}, //
}
},
created(){
},
methods:{
//
closeAddDialog(){
this.showBoxCont.addBox = false;
this.showBoxCont.addBoxIsTrue = false;
this.initData();
this.$emit('childByValue', 0)
},
//
initData(){
this.$refs.addForm.resetFields();
this.addCont={
// id:this.userKey,
}
},
//
startTimeChange(){
if(this.addCont.startTime && this.addCont.startTime != null){
let yearVal = this.addCont.startTime.getFullYear();
let monthVal = this.addCont.startTime.getMonth()+1;
let dayVal = this.addCont.startTime.getDate();
if(monthVal < 10) monthVal = "0"+monthVal;
if(dayVal < 10) dayVal = "0"+dayVal;
this.addCont.entrytime= yearVal + "-" + monthVal + "-" + dayVal
}
},
endTimeChange(){
if(this.addCont.endTime && this.addCont.endTime != null){
let yearVal = this.addCont.endTime.getFullYear();
let monthVal = this.addCont.endTime.getMonth()+1;
let dayVal = this.addCont.endTime.getDate();
if(monthVal < 10) monthVal = "0"+monthVal;
if(dayVal < 10) dayVal = "0"+dayVal;
this.addCont.leavedate= yearVal + "-" + monthVal + "-" + dayVal
}
},
//
async addContsubmitWai(){
console.log("添加正式提交数据-------------->",this.addCont)
// this.showBoxCont.addBoxIsTrue = true;
this.$refs.addForm.validate(async valid => {
if (valid) {
if(!this.userKey){
this.tispOrgBox('参数错误!不可提交!请刷新页面!','error');
return
}
let sendData = {
id:this.userKey,
list:[
this.addCont
]
}
console.log("添加正式提交数据-------------->",sendData)
let res = await addWorkHistoryCont(sendData)
if(res.code == 0){
this.$confirm('新增成功!是否继续添加?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
this.showBoxCont.addBoxIsTrue = false;
this.initData();
this.getExtWorkList();
this.$forceUpdate()
}).catch(() => {
this.showBoxCont.addBoxIsTrue = false;
this.getExtWorkList();
this.$forceUpdate();
this.closeAddDialog();
});
}else{
this.showBoxCont.addBoxIsTrue = false;
}
}else{
this.showBoxCont.addBoxIsTrue = false;
return false;
}
});
},
}
}
</script>
<style>
</style>

175
src/views/hr/newhr/content/externalworkoyt.vue

@ -0,0 +1,175 @@
<template>
<!--添加-->
<el-dialog :close-on-click-modal="false" :visible.sync="showBoxCont.addBox" title="添加信息" :before-close="closeAddDialog" width="40%">
<el-form ref="addForm" :model="addCont" :rules="addRules" label-width="120px" class="demo-ruleForm">
<el-form-item label="任职开始日期" prop="startTime">
<el-date-picker
clearable
format="yyyy-MM-dd"
@change="startTimeChange"
v-model="addCont.startTime"
type="date"
placeholder="选择入任职开始日期">
</el-date-picker>
<span class="tisp_title">此处为必填项</span>
</el-form-item>
<el-form-item label="任职结束日期" prop="endTime">
<el-date-picker
clearable
format="yyyy-MM-dd"
v-model="addCont.endTime"
type="date"
placeholder="还在任职中,请留空!">
</el-date-picker>
</el-form-item>
<el-form-item label="入职公司" prop="company">
<el-input v-model="addCont.company" placeholder="入职公司"></el-input>
</el-form-item>
<el-form-item label="入职部门" prop="department">
<el-input v-model="addCont.department" placeholder="入职部门"></el-input>
</el-form-item>
<el-form-item label="入职职务" prop="position">
<el-input v-model="addCont.position" placeholder="入职职务"></el-input>
</el-form-item>
<el-form-item label="证明人" prop="witness">
<el-input v-model="addCont.witness" placeholder="证明人"></el-input>
</el-form-item>
<el-form-item label="证明人电话" prop="witnesstel">
<el-input v-model="addCont.witnesstel" placeholder="证明人电话"></el-input>
</el-form-item>
<el-form-item label="备注">
<el-input v-model="addCont.remarks" placeholder="备注"></el-input>
</el-form-item>
</el-form>
<template #footer class="el_dialog__footer">
<div class="dialog-footer ">
<el-button size="small" type="primary" @click="addContsubmitWai" :loading="showBoxCont.addBoxIsTrue"> </el-button>
<el-button size="small" @click="closeAddDialog"> </el-button>
</div>
</template>
</el-dialog>
</template>
<script>
import { editWorkHistoryCont } from "@/api/systemaccredit/systemhrapi"
export default {
name:"externalworkoyt",
props:['userKey',"getExtWorkList","outWorkCont"],
data() {
return {
showBoxCont:{
addBox:true,
addBoxIsTrue:false,
},
addCont:{
id:this.outWorkCont.id.toString(),
},
startTime:"",
endTime:"",
addRules:{
company: [{ required: true, message: '必填', trigger: 'blur' }],
department: [{ required: true, message: '必填', trigger: 'blur' }],
position: [{ required: true, message: '必填', trigger: 'blur' }],
witness: [{ required: true, message: '必填', trigger: 'blur' }],
witnesstel: [
{ required: true, message: '必填', trigger: 'blur' },
{ min: 11, max: 11, message: "请输入11位手机号码", trigger: "blur" },
{
pattern: /^(13[0-9]|14[579]|15[0-3,5-9]|16[6]|17[0135678]|18[0-9]|19[89])\d{8}$/,
message: "请输入正确的手机号码",
trigger: "blur"
},
],
startTime: [{ required: true, message: '必填', trigger: 'blur' }],
endTime: [{ required: true, message: '必填', trigger: 'blur' }],
}, //
}
},
created(){
this.addCont={
id:this.outWorkCont.id.toString(),
startTime:this.outWorkCont.starttimg,
endTime:this.outWorkCont.endtimg,
company:this.outWorkCont.company,
department:this.outWorkCont.deparment,
position:this.outWorkCont.job,
witness:this.outWorkCont.witness,
witnesstel:this.outWorkCont.witnesstel,
remarks:this.outWorkCont.remarks,
entrytime:this.outWorkCont.starttimg,
leavedate:this.outWorkCont.endtimg,
}
console.log("修改集团外-------------->",this.outWorkCont,this.addCont)
},
methods:{
//
closeAddDialog(){
this.showBoxCont.addBox = false;
this.showBoxCont.addBoxIsTrue = false;
this.initData();
this.$emit('childByValue', 0)
},
//
initData(){
this.$refs.addForm.resetFields();
this.addCont={
id:this.outWorkCont.id.toString(),
}
},
//
startTimeChange(){
if(this.addCont.startTime && this.addCont.startTime != null){
let yearVal = this.addCont.startTime.getFullYear();
let monthVal = this.addCont.startTime.getMonth()+1;
let dayVal = this.addCont.startTime.getDate();
if(monthVal < 10) monthVal = "0"+monthVal;
if(dayVal < 10) dayVal = "0"+dayVal;
this.addCont.entrytime= yearVal + "-" + monthVal + "-" + dayVal
}
},
endTimeChange(){
if(this.addCont.endTime && this.addCont.endTime != null){
let yearVal = this.addCont.endTime.getFullYear();
let monthVal = this.addCont.endTime.getMonth()+1;
let dayVal = this.addCont.endTime.getDate();
if(monthVal < 10) monthVal = "0"+monthVal;
if(dayVal < 10) dayVal = "0"+dayVal;
this.addCont.leavedate= yearVal + "-" + monthVal + "-" + dayVal
}
},
//
async addContsubmitWai(){
console.log("添加正式提交数据-------------->",this.addCont)
// this.showBoxCont.addBoxIsTrue = true;
this.$refs.addForm.validate(async valid => {
if (valid) {
const respon = await editWorkHistoryCont(this.addCont)
if (respon.code === 0) {
this.$message({
type: 'success',
message: respon.msg
})
this.showBoxCont.addBoxIsTrue = true;
this.getExtWorkList();
this.$forceUpdate();
this.closeAddDialog();
}
}else{
this.showBoxCont.addBoxIsTrue = false;
return false;
}
});
},
}
}
</script>
<style>
</style>

392
src/views/hr/newhr/content/insidework.vue

@ -0,0 +1,392 @@
<template>
<!--添加-->
<el-dialog :close-on-click-modal="false" :visible.sync="showBoxCont.addBox" title="添加信息" :before-close="closeAddDialog" width="40%">
<el-form ref="addForm" :model="addCont" :rules="addRules" label-width="120px" class="demo-ruleForm">
<el-form-item label="调动类型" prop="changetype">
<el-select filterable v-model="addCont.changetype" clearable placeholder="请选择">
<el-option
v-for="item in postChangeType"
:key="item.id"
:label="item.title"
:value="item.id">
</el-option>
</el-select>
</el-form-item>
<el-form-item label="任职开始日期" >
<el-date-picker
clearable
format="yyyy 年 MM 月 dd 日"
@change="startTimeChange"
v-model="startTime"
type="date"
placeholder="选择入任职开始日期">
</el-date-picker>
<span class="tisp_title">此处为必填项</span>
</el-form-item>
<el-form-item label="任职结束日期" >
<el-date-picker
clearable
format="yyyy 年 MM 月 dd 日"
@change="endTimeChange"
v-model="endTime"
type="date"
placeholder="还在任职中,请留空!">
</el-date-picker>
<span class="tisp_title">若还在任职中请留空</span>
</el-form-item>
<el-form-item label="归属组织" prop="orglist">
<el-cascader clearable v-model="addCont.orglist" :options="grouplist" @change="orgChange" :props="propsdepart" style="width:100%"></el-cascader>
</el-form-item>
<el-form-item label="岗位">
<el-row>
<el-col :span="12">
<el-select filterable v-model="addCont.position" clearable placeholder="请选择" >
<el-option
v-for="item in postListAdd"
:key="item.id"
:label="item.name"
:value="item.id">
</el-option>
</el-select>
</el-col>
<el-col :span="12">
<el-select filterable v-model="addCont.assigntype" placeholder="请选择主职、兼职">
<el-option
v-for="item in mainAndPartTimeJobs"
:key="item.id"
:label="item.title"
:value="item.id">
</el-option>
</el-select>
</el-col>
</el-row>
</el-form-item>
<el-form-item label="职务" prop="jobid">
<el-select filterable v-model="addCont.jobid" clearable placeholder="请选择">
<el-option
v-for="item in dutieslist"
:key="item.id"
:label="item.name"
:value="item.id">
</el-option>
</el-select>
</el-form-item>
<el-form-item label="职务等级">
<el-select filterable v-model="addCont.gradepositions" placeholder="请选择">
<el-option
v-for="item in positiongrade"
:key="item.id"
:label="item.tittle"
:value="item.id">
</el-option>
</el-select>
</el-form-item>
<el-form-item label="班组" prop="team">
<el-select filterable v-model="addCont.team" clearable placeholder="请选择">
<el-option
v-for="item in teamcontlist"
:key="item.id"
:label="item.name"
:value="item.id">
</el-option>
</el-select>
</el-form-item>
</el-form>
<template #footer class="el_dialog__footer">
<div class="dialog-footer ">
<el-button size="small" type="primary" @click="addContsubmit" :loading="showBoxCont.addBoxIsTrue"> </el-button>
<el-button size="small" @click="closeAddDialog"> </el-button>
</div>
</template>
</el-dialog>
</template>
<script>
import { teamcontlist,positionlistIsMe,dutieslist } from "@/api/personnel/post";
import { peopleMethod,judgeArray } from "@/api/people/peopledata"
import { getgroupdepartmap } from '@/api/duty/group' //
import { judgePrinPosition,addInsideHistory } from "@/api/systemaccredit/systemhrapi"
export default {
name:"insidework",
props:['userKey',"getInsideWorkList"],
data() {
return {
grouplist:[], //
dutieslist:[], //
postListAdd: [], //
teamcontlist:[], //
positiongrade:peopleMethod.positiongrade, //
mainAndPartTimeJobs:peopleMethod.mainAndPartTimeJobs, //
postChangeType:peopleMethod.postChangeType, //
propsdepart: {
value: "id",
label: "name",
children: "children",
}, //
startTime:"",
endTime:"",
showBoxCont:{
addBox:true,
addBoxIsTrue:false,
},
addCont:{
id:this.userKey,
orgid:"",
position:"",
jobid:"",
gradepositions:3,
starttime:"",
endtime:"",
changetype:1,
assigntype:2,
team:"",
}, //
addRules:{
orglist: [{ required: true, message: '必填', trigger: 'blur' }],
changetype: [{ required: true, message: '必填', trigger: 'blur' }],
team: [{ required: true, message: '必填', trigger: 'blur' }],
// position: [{ required: true, message: '', trigger: 'blur' }],
jobid: [{ required: true, message: '必填', trigger: 'blur' }],
}, //
}
},
created(){
this.getGrouplist();
this.getTeam();
this.getDutieslist();
},
methods:{
//
async getGrouplist(){
let sendData = {
id:313,
all:1
};
const res = await getgroupdepartmap(sendData)
this.grouplist=res.data
},
//
orgChange(val){
if(val){
if(judgeArray(val) && val.length > 0){
let postId = val[val.length-1];
this.getPostAdd(postId);
}else{
this.postListAdd = [];
}
}else{
this.postListAdd = [];
}
//
// this.addCont.position = null
console.log("选择行政组织---------------->",val)
},
//
async getPostAdd(val) {
const from = {
organization: val.toString(),
page: 1,
pagesize: 500,
};
const res = await positionlistIsMe(from);
this.postListAdd = res.data.list;
console.log("获取刚问列表---------------->",res)
},
//
async getDutieslist(){
let res = await dutieslist();
this.dutieslist = res.data.list
console.log("班组---------------->",res,res.list)
},
//
async getTeam(){
let res = await teamcontlist();
this.teamcontlist = res.data.list
console.log("班组---------------->",res)
},
//
startTimeChange(){
if(this.startTime && this.startTime != null){
let yearVal = this.startTime.getFullYear();
let monthVal = this.startTime.getMonth()+1;
let dayVal = this.startTime.getDate();
if(monthVal < 10) monthVal = "0"+monthVal;
if(dayVal < 10) dayVal = "0"+dayVal;
this.addCont.starttime= yearVal + "-" + monthVal + "-" + dayVal
}
},
endTimeChange(){
if(this.endTime && this.endTime != null){
let yearVal = this.endTime.getFullYear();
let monthVal = this.endTime.getMonth()+1;
let dayVal = this.endTime.getDate();
if(monthVal < 10) monthVal = "0"+monthVal;
if(dayVal < 10) dayVal = "0"+dayVal;
this.addCont.endtime= yearVal + "-" + monthVal + "-" + dayVal
}
},
//
closeAddDialog(){
this.showBoxCont.addBox = false;
this.showBoxCont.addBoxIsTrue = false;
this.initData();
this.$emit('childByValue', 0)
},
//
initData(){
this.$refs.addForm.resetFields();
this.addCont={
id:this.userKey,
orgid:"",
position:"",
jobid:"",
gradepositions:3,
starttime:"",
endtime:"",
changetype:1,
assigntype:2,
team:"",
}
},
//
async addContsubmit(){
console.log("新增数据处理---------------->",this.addCont)
this.showBoxCont.addBoxIsTrue = true;
this.$refs.addForm.validate(async valid => {
console.log("新增数据处理-------12231--------->",valid)
if (valid) {
if(this.addCont.id == ""){
this.tispOrgBox('参数错误!不可提交!请刷新页面!','error');
return
}
if(this.addCont.orglist){
if(judgeArray(this.addCont.orglist) && this.addCont.orglist.length > 0){
let orgAry = this.addCont.orglist
console.log("编辑行政组织----223----->",orgAry.length)
let postId = orgAry[orgAry.length-1];
this.addCont.orgid = postId
}else{
this.tispOrgBox('请选择归属行政组织!','error');
return
}
}else{
this.tispOrgBox('请选择归属行政组织!','error');
return
}
// if(this.addCont.position){
// if(this.addCont.position == 0 || this.addCont.position == "" || this.addCont.position == null){
// this.tispOrgBox('','error');
// return
// }
// }else{
// this.tispOrgBox('','error');
// return
// }
if(this.addCont.team){
if(this.addCont.team == 0 || this.addCont.team == "" || this.addCont.team == null){
this.tispOrgBox('请选择班组!','error');
return
}
}else{
this.tispOrgBox('请选择班组!','error');
return
}
if(this.addCont.gradepositions){
if(this.addCont.gradepositions == 0 || this.addCont.gradepositions == "" || this.addCont.gradepositions == null){
this.tispOrgBox('职务等级!','error');
return
}
}else{
this.tispOrgBox('职务等级!','error');
return
}
console.log("编辑行政组织----256----->",this.addCont)
if(this.addCont.assigntype){
if(this.addCont.assigntype == 1){
let sendJudgeData = {
userkey:this.addCont.id
}
let judgeRes = await judgePrinPosition(sendJudgeData)
if(judgeRes.code != 0){
this.$confirm(judgeRes.msg, '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
// console.log("------5674---------->",this.addCont)
this.addSendData(1)
}).catch(() => {
this.addCont.assigntype=2
this.addSendData(2)
});
}else{
this.addSendData(5)
}
}else{
this.addSendData(3)
}
}else{
this.addSendData(4)
}
}else {
this.showBoxCont.addBoxIsTrue = false;
return false;
}
});
},
//
async addSendData(id){
console.log("添加正式提交数据------"+id+"-------->",this.addCont)
let res = await addInsideHistory(this.addCont)
if(res.code == 0){
this.$confirm('新增成功!是否继续添加?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
this.showBoxCont.addBoxIsTrue = false;
this.initData();
this.getInsideWorkList();
this.$forceUpdate()
}).catch(() => {
this.showBoxCont.addBoxIsTrue = false;
this.getInsideWorkList();
this.$forceUpdate();
this.closeAddDialog();
});
}else{
this.showBoxCont.addBoxIsTrue = false;
}
},
//
tispOrgBox(msg,typeClass){
console.log("添加正式提交数据------"+typeClass+"-------->",msg)
this.$message({
showClose: true,
message: msg,
type: typeClass,
duration:2000,
onClose:this.openOrgButton
});
this.showBoxCont.addBoxIsTrue = false;
},
}
}
</script>
<style>
.tisp_title{
color: #FF0000;
margin-left: 10px;
}
</style>

5
src/views/hr/newhr/people.vue

@ -83,9 +83,12 @@
</el-table-column> </el-table-column>
<el-table-column <el-table-column
fixed fixed
prop="name"
label="姓名" label="姓名"
width="150"> width="150">
<template #default="{ row }">
{{ row.name }}
<el-tag type="warning" size="mini" v-if="row.personincharge==1">负责人</el-tag>
</template>
</el-table-column> </el-table-column>
<el-table-column <el-table-column
label="归属"> label="归属">

10
src/views/hr/newhr/peoplecont.vue

@ -19,7 +19,7 @@
</el-col> </el-col>
</el-row> </el-row>
<el-row> <el-row>
<el-col class="col_text" :span="24">{{ peopleCont.joblevename }}{{ peopleCont.jobname }} {{ peopleCont.jobclassname }} <span>{{ peopleCont.teamname }}</span><span>TEL:{{ peopleCont.tel }}</span></el-col> <el-col class="col_text" :span="24">{{ peopleCont.joblevename }}{{ peopleCont.jobname }} {{ peopleCont.jobclassname }} <span>{{ peopleCont.teamname }}</span><span>TEL:{{ peopleCont.tel }}</span><span>排班类型{{ peopleCont.rulename }}</span></el-col>
</el-row> </el-row>
</el-col> </el-col>
<el-col :span="4"> <el-col :span="4">
@ -80,11 +80,11 @@
<i class="font_icon fa fa-fw fa-briefcase"></i> <i class="font_icon fa fa-fw fa-briefcase"></i>
<span slot="title">工作履历</span> <span slot="title">工作履历</span>
</el-menu-item> </el-menu-item>
<el-menu-item index="7" @click="clickMenu(7)"> <!-- <el-menu-item index="7" @click="clickMenu(7)">
<i class="font_icon fa fa-fw fa-users"></i> <i class="font_icon fa fa-fw fa-users"></i>
<span slot="title">用工关系</span> <span slot="title">用工关系</span>
</el-menu-item> </el-menu-item> -->
<el-menu-item index="8" @click="clickMenu(8)"> <!-- <el-menu-item index="8" @click="clickMenu(8)">
<i class="font_icon fa fa-fw fa-trophy"></i> <i class="font_icon fa fa-fw fa-trophy"></i>
<span slot="title">奖惩记录</span> <span slot="title">奖惩记录</span>
</el-menu-item> </el-menu-item>
@ -99,7 +99,7 @@
<el-menu-item index="11" @click="clickMenu(11)"> <el-menu-item index="11" @click="clickMenu(11)">
<i class="font_icon fa fa-fw fa-clock-o"></i> <i class="font_icon fa fa-fw fa-clock-o"></i>
<span slot="title">考评记录</span> <span slot="title">考评记录</span>
</el-menu-item> </el-menu-item> -->
</el-menu> </el-menu>

132
src/views/hr/newhr/peopleinfor.vue

@ -73,12 +73,14 @@
<el-row> <el-row>
<el-col :span="24" class="cont_body"> <el-col :span="24" class="cont_body">
<template> <template>
<el-descriptions class="margin-top" :column="5" direction="vertical"> <el-descriptions class="margin-top" :column="3" direction="vertical">
<el-descriptions-item label-class-name="my_label_c" content-class-name="bottment_cont" label="公司"><div class="bottment_line">{{ myCont.companyname }}</div></el-descriptions-item> <el-descriptions-item label-class-name="my_label_c" content-class-name="bottment_cont" label="公司"><div class="bottment_line">{{ myCont.companyname }}</div></el-descriptions-item>
<el-descriptions-item label-class-name="my_label_c" content-class-name="bottment_cont" label="部门"><div class="bottment_line">{{ myCont.maindeparmentname }} <i v-if="myCont.sunmaindeparmentname"> / </i>{{ myCont.sunmaindeparmentname }} <i v-if="myCont.workpostname"> / </i>{{ myCont.workpostname }} </div></el-descriptions-item> <el-descriptions-item label-class-name="my_label_c" content-class-name="bottment_cont" label="部门"><div class="bottment_line">{{ myCont.maindeparmentname }} <i v-if="myCont.sunmaindeparmentname"> / </i>{{ myCont.sunmaindeparmentname }} <i v-if="myCont.workpostname"> / </i>{{ myCont.workpostname }} </div></el-descriptions-item>
<el-descriptions-item label-class-name="my_label_c" content-class-name="bottment_cont" label="班组"><div class="bottment_line">{{ myCont.teamname }}</div></el-descriptions-item> <el-descriptions-item label-class-name="my_label_c" content-class-name="bottment_cont" label="班组"><div class="bottment_line">{{ myCont.teamname }}</div></el-descriptions-item>
<el-descriptions-item label-class-name="my_label_c" content-class-name="bottment_cont" label="岗位"><div class="bottment_line">{{ myCont.positionname }}</div></el-descriptions-item> <el-descriptions-item label-class-name="my_label_c" content-class-name="bottment_cont" label="岗位"><div class="bottment_line">{{ myCont.positionname }}</div></el-descriptions-item>
<el-descriptions-item label-class-name="my_label_c" content-class-name="bottment_cont" label="职务"><div class="bottment_line">{{ replace.jobleve }}{{ myCont.jobidname }} <span v-if="myCont.jobclassname"> {{ myCont.jobclassname }} </span> </div></el-descriptions-item> <el-descriptions-item label-class-name="my_label_c" content-class-name="bottment_cont" label="职务"><div class="bottment_line"><span v-if="replace.jobleve!='无'">{{ replace.jobleve }}</span>{{ myCont.jobidname }} <span v-if="myCont.jobclassname"> {{ myCont.jobclassname }} </span> </div></el-descriptions-item>
<el-descriptions-item label-class-name="my_label_c" content-class-name="bottment_cont" label="排班类型"><div class="bottment_line">{{ myCont.rulename }}</div></el-descriptions-item>
<el-descriptions-item label-class-name="my_label_c" content-class-name="bottment_cont" label="负责人"><div class="bottment_line"><span v-if="myCont.personincharge==1"></span><span v-if="myCont.personincharge!=1"></span></div></el-descriptions-item>
</el-descriptions> </el-descriptions>
</template> </template>
</el-col> </el-col>
@ -336,7 +338,7 @@
<el-cascader clearable v-model="ediOrgCont.orglist" :options="grouplist" @change="orgChange" :props="propsdepart" style="width:100%"></el-cascader> <el-cascader clearable v-model="ediOrgCont.orglist" :options="grouplist" @change="orgChange" :props="propsdepart" style="width:100%"></el-cascader>
</el-form-item> </el-form-item>
<el-form-item label="岗位" prop="position"> <el-form-item label="岗位" prop="position">
<el-select filterable v-model="ediOrgCont.position" clearable placeholder="请选择" > <el-select filterable v-model="ediOrgCont.position" clearable placeholder="请选择" @change="$forceUpdate()">
<el-option <el-option
v-for="item in postListAdd" v-for="item in postListAdd"
:key="item.id" :key="item.id"
@ -346,7 +348,7 @@
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="职务" prop="jobid"> <el-form-item label="职务" prop="jobid">
<el-select filterable v-model="ediOrgCont.jobid" clearable placeholder="请选择"> <el-select filterable v-model="ediOrgCont.jobid" clearable placeholder="请选择" @change="$forceUpdate()">
<el-option <el-option
v-for="item in dutieslist" v-for="item in dutieslist"
:key="item.id" :key="item.id"
@ -356,7 +358,7 @@
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="职务等级" prop="jobleve"> <el-form-item label="职务等级" prop="jobleve">
<el-select filterable v-model="ediOrgCont.jobleve" clearable placeholder="请选择"> <el-select filterable v-model="ediOrgCont.jobleve" clearable placeholder="请选择" @change="$forceUpdate()">
<el-option <el-option
v-for="item in positiongrade" v-for="item in positiongrade"
:key="item.id" :key="item.id"
@ -375,6 +377,33 @@
</el-option> </el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="排班类型" prop="ruleid">
<el-select filterable v-model="ediOrgCont.ruleid" clearable placeholder="请选择">
<el-option
v-for="item in ruleList"
:key="item.id"
:label="item.name"
:value="item.id">
</el-option>
</el-select>
</el-form-item>
<el-form-item label="部分负责人" prop="personInCharge">
<template style="margin-top: 9px;">
<el-switch
@change="setPersonInCharge"
style="display: block"
v-model="personInCharge"
active-color="#13ce66"
inactive-color="#ff4949"
active-text="是"
inactive-text="否">
</el-switch>
</template>
</el-form-item>
<el-form-item label="负责行政组织" v-if="personInCharge">
<el-cascader clearable v-model="ediOrgCont.orgreslist" :options="grouplist" :props="propsdepartfuze" style="width:100%"></el-cascader>
</el-form-item>
</el-form> </el-form>
<template #footer class="el_dialog__footer"> <template #footer class="el_dialog__footer">
<div class="dialog-footer "> <div class="dialog-footer ">
@ -387,7 +416,7 @@
</template> </template>
<script> <script>
import { positionlist,archiveslist,teamcontlist,orgThreeList,positionlistIsMe,dutieslist } from "@/api/personnel/post"; import { positionlist,archiveslist,teamcontlist,orgThreeList,positionlistIsMe,dutieslist } from "@/api/personnel/post";
import { getOnlyOnePeopleCont,editManOrgCont,editManPeopleCont } from "@/api/systemaccredit/systemhrapi" import { getOnlyOnePeopleCont,editManOrgCont,editManPeopleCont,teamTimeList } from "@/api/systemaccredit/systemhrapi"
import { peopleMethod,judgeArray } from "@/api/people/peopledata" import { peopleMethod,judgeArray } from "@/api/people/peopledata"
import { import {
getgroupdepartmap, getgroupdepartmap,
@ -428,7 +457,16 @@ export default {
// emitPath:false, // emitPath:false,
// multiple: false // multiple: false
}, // }, //
ediOrgCont:{}, // propsdepartfuze:{
value: "id",
label: "name",
children: "children",
multiple: true,
checkStrictly: true
},//
ediOrgCont:{
personInCharge:2
}, //
myCont:{}, // myCont:{}, //
replace:{ replace:{
probationperiod: 0, probationperiod: 0,
@ -505,6 +543,8 @@ export default {
jobid: [{ required: true, message: '必填', trigger: 'blur' }], jobid: [{ required: true, message: '必填', trigger: 'blur' }],
jobleve: [{ required: true, message: '必填', trigger: 'blur' }], jobleve: [{ required: true, message: '必填', trigger: 'blur' }],
teamid: [{ required: true, message: '必填', trigger: 'blur' }], teamid: [{ required: true, message: '必填', trigger: 'blur' }],
ruleid: [{ required: true, message: '必填', trigger: 'blur' }],
personInCharge:[{ required: true, message: '必填', trigger: 'blur' }],
}, },
editContData:{}, // editContData:{}, //
editContRules:{ editContRules:{
@ -526,7 +566,8 @@ export default {
{ type: 'number', required: true, message: '请输入试用期', trigger: 'change' } { type: 'number', required: true, message: '请输入试用期', trigger: 'change' }
], ],
}, // }, //
ruleList:[], //
personInCharge:false, //
} }
}, },
@ -536,8 +577,18 @@ export default {
this.getDutieslist(); this.getDutieslist();
let myId = this.userid * 1 let myId = this.userid * 1
this.ediOrgCont.id = myId.toString() this.ediOrgCont.id = myId.toString()
this.ediOrgCont.personInCharge = 2
this.geWorkRuletList()
}, },
methods:{ methods:{
//
async geWorkRuletList(){
let res = await teamTimeList(this.searchData)
console.log("数据列表",res.data)
if(res.code == 0){
this.ruleList = res.data
}
},
// //
async getGrouplist(){ async getGrouplist(){
let sendData = { let sendData = {
@ -647,7 +698,7 @@ export default {
} }
// //
peopleMethod.positiongrade.forEach(item=>{ peopleMethod.positiongrade.forEach(item=>{
if(item.id == this.myCont.jobleve){ if(item.id !=10000 && item.id == this.myCont.jobleve ){
this.replace.jobleve = item.tittle this.replace.jobleve = item.tittle
} }
}) })
@ -698,7 +749,8 @@ export default {
wechat:this.myCont.wechat, // wechat:this.myCont.wechat, //
workwechat:this.myCont.workwechat, // workwechat:this.myCont.workwechat, //
constellationing:this.myCont.constellationing, // constellationing:this.myCont.constellationing, //
maritalstatus:this.myCont.maritalstatus maritalstatus:this.myCont.maritalstatus,
ruleid:myCont.ruleid
}; // }; //
}, },
// //
@ -720,9 +772,19 @@ export default {
if(this.myCont.jobleve != 0){ if(this.myCont.jobleve != 0){
this.ediOrgCont.jobleve = this.myCont.jobleve this.ediOrgCont.jobleve = this.myCont.jobleve
} }
if(this.myCont.ruleid != 0){
this.ediOrgCont.ruleid = this.myCont.ruleid
}
this.personInCharge = false
if(this.myCont.personincharge != 0){
this.ediOrgCont.personInCharge = this.myCont.personincharge
if(this.myCont.personincharge == 1){
this.personInCharge = true
}
}
this.ediOrgCont.id = this.myCont.id.toString() this.ediOrgCont.id = this.myCont.id.toString()
this.editSetUp.org = true this.editSetUp.org = true
this.ediOrgCont.orgreslist = val.orgreslist
console.log("编辑行政组织-----123---->",this.joinedDate) console.log("编辑行政组织-----123---->",this.joinedDate)
}, },
// //
@ -737,6 +799,7 @@ export default {
console.log("编辑行政组织--------->",this.ediOrgCont) console.log("编辑行政组织--------->",this.ediOrgCont)
this.$refs.editForm.validate(async valid => { this.$refs.editForm.validate(async valid => {
if (valid) { if (valid) {
var resDepartAry = new Array
if(this.ediOrgCont.id == ""){ if(this.ediOrgCont.id == ""){
this.tispOrgBox('参数错误!不可提交!请刷新页面!','error'); this.tispOrgBox('参数错误!不可提交!请刷新页面!','error');
return return
@ -746,6 +809,7 @@ export default {
let orgAry = this.ediOrgCont.orglist let orgAry = this.ediOrgCont.orglist
console.log("编辑行政组织----223----->",orgAry.length) console.log("编辑行政组织----223----->",orgAry.length)
let postId = orgAry[orgAry.length-1]; let postId = orgAry[orgAry.length-1];
resDepartAry.push(orgAry[orgAry.length-1])
this.ediOrgCont.orgid = postId this.ediOrgCont.orgid = postId
}else{ }else{
this.tispOrgBox('请选择归属行政组织!','error'); this.tispOrgBox('请选择归属行政组织!','error');
@ -775,15 +839,33 @@ export default {
} }
if(this.ediOrgCont.jobleve){ if(this.ediOrgCont.jobleve){
if(this.ediOrgCont.jobleve == 0 || this.ediOrgCont.jobleve == "" || this.ediOrgCont.jobleve == null){ if(this.ediOrgCont.jobleve == 0 || this.ediOrgCont.jobleve == "" || this.ediOrgCont.jobleve == null){
this.tispOrgBox('请选择班组!','error'); this.tispOrgBox('职务等级!','error');
return return
} }
}else{ }else{
this.tispOrgBox('请选择班组!','error'); this.tispOrgBox('职务等级!','error');
return return
} }
console.log("提交数据--------->",this.ediOrgCont) // console.log("-----111111---->",this.ediOrgCont,this.ediOrgCont.orgreslist)
if(judgeArray(this.ediOrgCont.orgreslist) && this.ediOrgCont.orgreslist.length > 0){
this.ediOrgCont.orgreslist.forEach(item=>{
// if(this.ediOrgCont.orglist.toString() !== item.toString()){
// resDepartAry.push(item)
// }
if(judgeArray(item)){
if(item.length>1){
resDepartAry.push(item[item.length-1])
}else{
resDepartAry.push(item[0])
}
}else{
resDepartAry.push(item)
}
})
}
// console.log("--------->",this.ediOrgCont,resDepartAry)
this.ediOrgCont.resallorg = resDepartAry
let res = await editManOrgCont(this.ediOrgCont) let res = await editManOrgCont(this.ediOrgCont)
this.editOrgIsTrue = false this.editOrgIsTrue = false
if (res.code === 0) { if (res.code === 0) {
@ -860,7 +942,7 @@ export default {
let yearVal = this.joinedDate.getFullYear(); let yearVal = this.joinedDate.getFullYear();
let monthVal = this.joinedDate.getMonth()+1; let monthVal = this.joinedDate.getMonth()+1;
let dayVal = this.joinedDate.getDate(); let dayVal = this.joinedDate.getDate();
if(monthVal < 10) monthVal = "0"+newMonthVal; if(monthVal < 10) monthVal = "0"+monthVal;
if(dayVal < 10) dayVal = "0"+dayVal; if(dayVal < 10) dayVal = "0"+dayVal;
let dataVal = yearVal + "-" + monthVal + "-" + dayVal let dataVal = yearVal + "-" + monthVal + "-" + dayVal
const res = await calculationDate(dataVal,this.editContData.probationperiod) const res = await calculationDate(dataVal,this.editContData.probationperiod)
@ -877,7 +959,7 @@ export default {
let yearVal = this.joinedDate.getFullYear(); let yearVal = this.joinedDate.getFullYear();
let monthVal = this.joinedDate.getMonth()+1; let monthVal = this.joinedDate.getMonth()+1;
let dayVal = this.joinedDate.getDate(); let dayVal = this.joinedDate.getDate();
if(monthVal < 10) monthVal = "0"+newMonthVal; if(monthVal < 10) monthVal = "0"+monthVal;
if(dayVal < 10) dayVal = "0"+dayVal; if(dayVal < 10) dayVal = "0"+dayVal;
let dataVal = yearVal + "-" + monthVal + "-" + dayVal let dataVal = yearVal + "-" + monthVal + "-" + dayVal
const res = await calculationDate(dataVal,this.editContData.probationperiod) const res = await calculationDate(dataVal,this.editContData.probationperiod)
@ -891,7 +973,7 @@ export default {
let yearVal = this.birthday.getFullYear(); let yearVal = this.birthday.getFullYear();
let monthVal = this.birthday.getMonth()+1; let monthVal = this.birthday.getMonth()+1;
let dayVal = this.birthday.getDate(); let dayVal = this.birthday.getDate();
if(monthVal < 10) monthVal = "0"+newMonthVal; if(monthVal < 10) monthVal = "0"+monthVal;
if(dayVal < 10) dayVal = "0"+dayVal; if(dayVal < 10) dayVal = "0"+dayVal;
this.editContData.birthdaytime= yearVal + "-" + monthVal + "-" + dayVal this.editContData.birthdaytime= yearVal + "-" + monthVal + "-" + dayVal
} }
@ -902,7 +984,7 @@ export default {
let yearVal = this.workingdate.getFullYear(); let yearVal = this.workingdate.getFullYear();
let monthVal = this.workingdate.getMonth()+1; let monthVal = this.workingdate.getMonth()+1;
let dayVal = this.workingdate.getDate(); let dayVal = this.workingdate.getDate();
if(monthVal < 10) monthVal = "0"+newMonthVal; if(monthVal < 10) monthVal = "0"+monthVal;
if(dayVal < 10) dayVal = "0"+dayVal; if(dayVal < 10) dayVal = "0"+dayVal;
this.editContData.jobstartdatestr= yearVal + "-" + monthVal + "-" + dayVal this.editContData.jobstartdatestr= yearVal + "-" + monthVal + "-" + dayVal
} }
@ -913,7 +995,7 @@ export default {
let yearVal = this.idCardStartTimeStr.getFullYear(); let yearVal = this.idCardStartTimeStr.getFullYear();
let monthVal = this.idCardStartTimeStr.getMonth()+1; let monthVal = this.idCardStartTimeStr.getMonth()+1;
let dayVal = this.idCardStartTimeStr.getDate(); let dayVal = this.idCardStartTimeStr.getDate();
if(monthVal < 10) monthVal = "0"+newMonthVal; if(monthVal < 10) monthVal = "0"+monthVal;
if(dayVal < 10) dayVal = "0"+dayVal; if(dayVal < 10) dayVal = "0"+dayVal;
this.editContData.idcardstarttimedata= yearVal + "-" + monthVal + "-" + dayVal this.editContData.idcardstarttimedata= yearVal + "-" + monthVal + "-" + dayVal
} }
@ -924,7 +1006,7 @@ export default {
let yearVal = this.idCardEndTimeStr.getFullYear(); let yearVal = this.idCardEndTimeStr.getFullYear();
let monthVal = this.idCardEndTimeStr.getMonth()+1; let monthVal = this.idCardEndTimeStr.getMonth()+1;
let dayVal = this.idCardEndTimeStr.getDate(); let dayVal = this.idCardEndTimeStr.getDate();
if(monthVal < 10) monthVal = "0"+newMonthVal; if(monthVal < 10) monthVal = "0"+monthVal;
if(dayVal < 10) dayVal = "0"+dayVal; if(dayVal < 10) dayVal = "0"+dayVal;
this.editContData.idcardendtimedata= yearVal + "-" + monthVal + "-" + dayVal this.editContData.idcardendtimedata= yearVal + "-" + monthVal + "-" + dayVal
} }
@ -961,6 +1043,14 @@ export default {
} }
console.log("End------>",value) console.log("End------>",value)
return true return true
},
//
setPersonInCharge(){
if(this.personInCharge){
this.ediOrgCont.personInCharge = 1
}else{
this.ediOrgCont.personInCharge = 2
}
} }
} }
} }

309
src/views/hr/newhr/personneleducation.vue

@ -78,17 +78,165 @@
</el-descriptions> </el-descriptions>
</el-col> </el-col>
</el-row> </el-row>
<!--添加-->
<el-dialog :close-on-click-modal="false" :visible.sync="showBoxCont.addBox" title="添加信息" :before-close="closeAddDialog" width="40%">
<el-form ref="addForm" :model="addCont" :rules="addRules" label-width="120px" class="demo-ruleForm">
<el-form-item label="院校" prop="graduationschool">
<el-input v-model="addCont.graduationschool" placeholder="请输入院校名称"></el-input>
</el-form-item>
<el-form-item label="专业" prop="subject">
<el-input v-model="addCont.subject" placeholder="请输入专业"></el-input>
</el-form-item>
<el-form-item label="学历" prop="education">
<el-select v-model="addCont.education" placeholder="请选择学历">
<el-option v-for="itemPoliti in educationList" :label="itemPoliti.tittle" :value="itemPoliti.id" :key="itemPoliti.id"></el-option>
</el-select>
</el-form-item>
<el-form-item label="学历性质" >
<el-select v-model="addCont.level" placeholder="学历性质">
<el-option label="普通" :value="1" ></el-option>
<el-option label="第一学历" :value="2" ></el-option>
<el-option label="最高学历" :value="3" ></el-option>
</el-select>
</el-form-item>
<el-form-item label="入学时间" prop="admissiontime">
<el-date-picker
clearable
format="yyyy 年 MM 月 dd 日"
@change="admissiontimeChange"
v-model="admissiontimeModel"
type="date"
placeholder="选择入学时间">
</el-date-picker>
</el-form-item>
<el-form-item label="毕业时间" >
<el-date-picker
clearable
format="yyyy 年 MM 月 dd 日"
@change="graduationtimeChange"
v-model="graduationtime"
type="date"
placeholder="选择入毕业时间">
</el-date-picker>
</el-form-item>
<el-form-item label="学位" >
<el-select v-model="addCont.academicdegree" placeholder="学位">
<el-option v-for="itemPoliti in academicDegree" :label="itemPoliti.title" :value="itemPoliti.id" :key="itemPoliti.id"></el-option>
</el-select>
</el-form-item>
</el-form>
<template #footer class="el_dialog__footer">
<div class="dialog-footer ">
<el-button size="small" type="primary" @click="addContsubmit" :loading="showBoxCont.addBoxIsTrue"> </el-button>
<el-button size="small" @click="closeAddDialog"> </el-button>
</div>
</template>
</el-dialog>
<!--编辑-->
<el-dialog :close-on-click-modal="false" :visible.sync="showBoxCont.editBox" title="编辑信息" :before-close="closeEditDialog" width="40%">
<el-form ref="editForm" :model="editCont" :rules="addRules" label-width="120px" class="demo-ruleForm">
<el-form-item label="院校" prop="graduationschool">
<el-input v-model="editCont.graduationschool" placeholder="请输入院校名称"></el-input>
</el-form-item>
<el-form-item label="专业" prop="subject">
<el-input v-model="editCont.subject" placeholder="请输入专业"></el-input>
</el-form-item>
<el-form-item label="学历" prop="education">
<el-select v-model="editCont.education" placeholder="请选择学历">
<el-option v-for="itemPoliti in educationList" :label="itemPoliti.tittle" :value="itemPoliti.id" :key="itemPoliti.id"></el-option>
</el-select>
</el-form-item>
<el-form-item label="学历性质" >
<el-select v-model="editCont.level" placeholder="学历性质">
<el-option label="普通" :value="1" ></el-option>
<el-option label="第一学历" :value="2" ></el-option>
<el-option label="最高学历" :value="3" ></el-option>
</el-select>
</el-form-item>
<el-form-item label="入学时间" prop="admissiontime">
<el-date-picker
clearable
format="yyyy 年 MM 月 dd 日"
@change="admissiontimeChange"
v-model="admissiontimeModel"
type="date"
placeholder="选择入学时间">
</el-date-picker>
</el-form-item>
<el-form-item label="毕业时间" >
<el-date-picker
clearable
format="yyyy 年 MM 月 dd 日"
@change="graduationtimeChange"
v-model="graduationtime"
type="date"
placeholder="选择入毕业时间">
</el-date-picker>
</el-form-item>
<el-form-item label="学位" >
<el-select v-model="editCont.academicdegree" placeholder="学位">
<el-option v-for="itemPoliti in academicDegree" :label="itemPoliti.title" :value="itemPoliti.id" :key="itemPoliti.id"></el-option>
</el-select>
</el-form-item>
</el-form>
<template #footer class="el_dialog__footer">
<div class="dialog-footer ">
<el-button size="small" type="primary" @click="editContsubmit" :loading="showBoxCont.editBoxIsTrue"> </el-button>
<el-button size="small" @click="closeEditDialog"> </el-button>
</div>
</template>
</el-dialog>
</el-scrollbar> </el-scrollbar>
</template> </template>
<script> <script>
import { peopleMethod } from "@/api/people/peopledata" import { peopleMethod } from "@/api/people/peopledata"
import { getPersonneleDucationlist } from "@/api/systemaccredit/systemhrapi" import { getPersonneleDucationlist,addEducationAlexperience,editEduexpState,editEduexpCont } from "@/api/systemaccredit/systemhrapi"
export default { export default {
name:"familymembers", name:"familymembers",
props:['userKey'], props:['userKey'],
data() { data() {
return { return {
admissiontimeModel:"",
graduationtime:"",
contList:[], // contList:[], //
educationList:peopleMethod.educationList, //
academicDegree:peopleMethod.academicDegree, //
showBoxCont:{
addBox:false,
addBoxIsTrue:false,
editBox:false,
editBoxIsTrue:false,
},
addCont:{
graduationschool:"",
subject:"",
education:"",
level:"",
admissiontime:"",
graduationtime:"",
academicdegree:""
}, //
addRules:{
graduationschool: [{ required: true, message: '必填', trigger: 'blur' }],
subject: [{ required: true, message: '必填', trigger: 'blur' }],
education: [{ required: true, message: '必填', trigger: 'blur' }],
admissiontime: [{ required: true, message: '必填', trigger: 'blur' }],
}, //
editCont:{}, //
} }
}, },
created(){ created(){
@ -96,9 +244,96 @@ export default {
this.getListCont() this.getListCont()
}, },
methods:{ methods:{
//
admissiontimeChange(){
if(this.admissiontimeModel && this.admissiontimeModel != null){
let yearVal = this.admissiontimeModel.getFullYear();
let monthVal = this.admissiontimeModel.getMonth()+1;
let dayVal = this.admissiontimeModel.getDate();
if(monthVal < 10) monthVal = "0"+monthVal;
if(dayVal < 10) dayVal = "0"+dayVal;
this.addCont.admissiontime= yearVal + "-" + monthVal + "-" + dayVal
}
},
//
graduationtimeChange(){
if(this.graduationtime && this.graduationtime != null){
let yearVal = this.graduationtime.getFullYear();
let monthVal = this.graduationtime.getMonth()+1;
let dayVal = this.graduationtime.getDate();
if(monthVal < 10) monthVal = "0"+monthVal;
if(dayVal < 10) dayVal = "0"+dayVal;
this.addCont.graduationtime= yearVal + "-" + monthVal + "-" + dayVal
}
},
// //
showAddBase(val){ showAddBase(val){
console.log("新增信息--------->",val) console.log("新增信息--------->",val)
this.showBoxCont.addBox = true;
},
//
async addContsubmit(){
this.showBoxCont.addBoxIsTrue = true;
this.$refs.addForm.validate(async valid => {
if (valid) {
let userKeyStr = this.userKey*1
let sendData = {
// id:userKeyStr.toString(),
id:this.userKey,
list:[
{
graduationschool:this.addCont.graduationschool,
subject:this.addCont.subject,
education:this.addCont.education*1,
level:this.addCont.level.toString(),
admissiontime:this.addCont.admissiontime,
graduationtime:this.addCont.graduationtime,
academicdegree:this.addCont.academicdegree.toString()
}
]
}
let res = await addEducationAlexperience(sendData)
if(res.code == 0){
this.$confirm('新增成功!是否继续添加?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
this.showBoxCont.addBoxIsTrue = false;
this.initData();
this.getListCont();
this.$forceUpdate()
}).catch(() => {
this.showBoxCont.addBoxIsTrue = false;
this.getListCont();
this.$forceUpdate();
this.closeAddDialog();
});
}
}else {
this.showBoxCont.addBoxIsTrue = false;
return false;
}
});
},
//
closeAddDialog(){
this.showBoxCont.addBox = false;
this.showBoxCont.addBoxIsTrue = false;
this.initData();
},
//
initData(){
this.$refs.addForm.resetFields();
this.addCont={
graduationschool:"",
subject:"",
education:"",
level:"",
admissiontime:"",
graduationtime:"",
academicdegree:""
}
}, },
// //
async getListCont(){ async getListCont(){
@ -139,10 +374,80 @@ export default {
// //
async showEditBase(val){ async showEditBase(val){
console.log("编辑--------->",val) console.log("编辑--------->",val)
this.editCont={
id:val.id.toString(),
graduationschool:val.graduationschool,
subject:val.subject,
education:val.education,
level:val.level,
admissiontime:val.admissiontimestr,
graduationtime:val.graduationtimestr,
academicdegree:val.academicdegree
};
this.admissiontimeModel = val.admissiontimestr
this.graduationtime = val.graduationtimestr
this.showBoxCont.editBox=true
},
//
async editContsubmit(){
let sendData = {
id:this.editCont.id,
graduationschool:this.editCont.graduationschool,
subject:this.editCont.subject,
education:this.editCont.education*1,
level:this.editCont.level.toString(),
admissiontime:this.editCont.admissiontime,
graduationtime:this.editCont.graduationtime,
academicdegree:this.editCont.academicdegree.toString()
}
console.log("提交编辑数据提交数据---------------2--",sendData)
this.showBoxCont.editBoxIsTrue = true;
this.$refs.editForm.validate(async valid => {
// console.log("---------------2--",valid)
if (valid) {
let res = await editEduexpCont(sendData)
if(res.code == 0){
this.$message({
type: 'success',
message: res.msg,
showClose: true
})
this.getListCont();
this.closeEditDialog();
this.$forceUpdate();
}
}else {
this.showBoxCont.editBoxIsTrue = false;
return false;
}
});
},
//
closeEditDialog(){
this.showBoxCont.editBox = false;
this.showBoxCont.editBoxIsTrue = false;
}, },
// //
async showDelBase(val){ async showDelBase(val){
console.log("删除--------->",val) this.$confirm('确定要删除吗?已经删除,资料将不复存在!', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(async() => {
let sendData = {
id:val.id.toString(),
state:3,
}
let res = await editEduexpState(sendData)
if(res.code == 0){
this.$message({
type: 'success',
message: res.msg,
showClose: true
})
this.getListCont();
}
});
}, },
} }
} }

118
src/views/hr/newhr/workhistory.vue

@ -9,7 +9,7 @@
icon="el-icon-plus" icon="el-icon-plus"
size="small" size="small"
type="text" type="text"
@click="showAddBase(userKey)" @click="showAddInsideBase(userKey,1)"
>新增</el-button> >新增</el-button>
</el-col> </el-col>
</el-row> </el-row>
@ -23,13 +23,13 @@
icon="el-icon-edit" icon="el-icon-edit"
size="small" size="small"
type="text" type="text"
@click="showEditBase(item)" @click="showEditInsideBase(item,2)"
>编辑</el-button> >编辑</el-button>
<el-button <el-button
icon="el-icon-delete" icon="el-icon-delete"
size="small" size="small"
type="text" type="text"
@click="showDelBase(item)" @click="showDelInsideBase(item)"
>删除</el-button> >删除</el-button>
</template> </template>
<el-descriptions-item label-class-name="my_label_ciw"> <el-descriptions-item label-class-name="my_label_ciw">
@ -65,7 +65,7 @@
</el-descriptions-item> </el-descriptions-item>
<el-descriptions-item label-class-name="my_label_ciw"> <el-descriptions-item label-class-name="my_label_ciw">
<template slot="label"> <template slot="label">
</template> </template>
{{ item.postname }} {{ item.postname }}
</el-descriptions-item> </el-descriptions-item>
@ -96,7 +96,7 @@
icon="el-icon-plus" icon="el-icon-plus"
size="small" size="small"
type="text" type="text"
@click="showAddBase(userKey)" @click="showAddExternalBase(userKey,3)"
>新增</el-button> >新增</el-button>
</el-col> </el-col>
</el-row> </el-row>
@ -110,7 +110,7 @@
icon="el-icon-edit" icon="el-icon-edit"
size="small" size="small"
type="text" type="text"
@click="showEditBase(itemwai)" @click="showEditBase(itemwai,4)"
>编辑</el-button> >编辑</el-button>
<el-button <el-button
icon="el-icon-delete" icon="el-icon-delete"
@ -136,6 +136,8 @@
公司 公司
</template> </template>
{{ itemwai.company }} {{ itemwai.company }}
<span v-if="itemwai.deparment">-</span> {{ itemwai.deparment }}
<span v-if="itemwai.job">-</span> {{ itemwai.job }}
</el-descriptions-item> </el-descriptions-item>
<el-descriptions-item label-class-name="my_label_ciw"> <el-descriptions-item label-class-name="my_label_ciw">
<template slot="label"> <template slot="label">
@ -158,21 +160,46 @@
</el-descriptions> </el-descriptions>
</el-col> </el-col>
</el-row> </el-row>
<template v-if="pageSetUp==1">
<insidework v-on:childByValue="childByValue" :getInsideWorkList="getInsideWorkList" :userKey="userKey"></insidework>
</template>
<template v-if="pageSetUp==2">
<editinsidework v-on:childByValue="childByValue" :getInsideWorkList="getInsideWorkList" :userKey="userKey" :inWorkCont="inWorkCont"></editinsidework>
</template>
<template v-if="pageSetUp==3">
<externalwork v-on:childByValue="childByValue" :getExtWorkList="getExtWorkList" :userKey="userKey"></externalwork>
</template>
<template v-if="pageSetUp==4">
<externalworkoyt v-on:childByValue="childByValue" :getExtWorkList="getExtWorkList" :userKey="userKey" :outWorkCont="outWorkCont"></externalworkoyt>
</template>
</el-scrollbar> </el-scrollbar>
</template> </template>
<script> <script>
import { getWorkHistoryList,getInsiDeworkHistoryList } from "@/api/systemaccredit/systemhrapi" import { getWorkHistoryList,getInsiDeworkHistoryList,editOrdelInsideWorkhiStoryState,editWorkHistoryState } from "@/api/systemaccredit/systemhrapi"
import insidework from "@/views/hr/newhr/content/insidework.vue"
import editinsidework from "@/views/hr/newhr/content/editinsidework.vue"
import externalwork from "@/views/hr/newhr/content/externalwork.vue"
import externalworkoyt from "@/views/hr/newhr/content/externalworkoyt.vue"
export default { export default {
name:"familymembers", name:"familymembers",
props:['userKey'], props:['userKey'],
components:{
insidework,
editinsidework,
externalwork,
externalworkoyt
},
data() { data() {
return { return {
extWorkList:[], // extWorkList:[], //
insideWorkList:[], // insideWorkList:[], //
pageSetUp:0, //,
inWorkCont:{}, //
outWorkCont:{}
} }
}, },
created(){ created(){
@ -181,9 +208,14 @@ export default {
this.getInsideWorkList(); this.getInsideWorkList();
}, },
methods:{ methods:{
// //
showAddBase(val){ childByValue(val){
console.log("新增信息--------->",val) this.pageSetUp = val
},
//
showAddInsideBase(val,id){
console.log("新增集团内部工作信息--------->",val,id)
this.pageSetUp = id
}, },
// //
async getExtWorkList(){ async getExtWorkList(){
@ -203,6 +235,68 @@ export default {
this.insideWorkList = res.data this.insideWorkList = res.data
console.log("获取列表信息--------->",res) console.log("获取列表信息--------->",res)
}, },
//
async showEditInsideBase(val,id){
this.pageSetUp = id
this.inWorkCont = val
},
//
async showDelInsideBase(val){
console.log("删除集团内部工作经历--------->",val)
this.$confirm('确定要删除吗?已经删除,资料将不复存在!', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(async() => {
let sendData = {
id:val.id,
state:3,
}
let res = await editOrdelInsideWorkhiStoryState(sendData)
if(res.code == 0){
this.$message({
type: 'success',
message: res.msg,
showClose: true
})
this.getInsideWorkList();
}
});
},
//
async showAddExternalBase(val,id){
console.log("新增集团内部工作信息--------->",val,id)
this.pageSetUp = id
},
//
async showDelBase(val){
console.log("删除集团内部工作经历--------->",val)
this.$confirm('确定要删除吗?已经删除,资料将不复存在!', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(async() => {
let sendData = {
id:(val.id*1).toString(),
state:3,
isdel:1
}
let res = await editWorkHistoryState(sendData)
if(res.code == 0){
this.$message({
type: 'success',
message: res.msg,
showClose: true
})
this.getExtWorkList();
}
});
},
//
showEditBase(val,id){
this.pageSetUp = id
this.outWorkCont = val
},
} }
} }
</script> </script>

19
src/views/qualitative/index.vue

@ -52,6 +52,14 @@
clearable> clearable>
</el-input> </el-input>
</el-form-item> </el-form-item>
<el-form-item label="时间">
<el-date-picker
@change="setTimeYearMonth"
v-model="searchTime"
type="month"
placeholder="选择月">
</el-date-picker>
</el-form-item>
<el-form-item> <el-form-item>
<el-button size="mini" type="primary" icon="el-icon-search" @click="onSubmit">查询</el-button> <el-button size="mini" type="primary" icon="el-icon-search" @click="onSubmit">查询</el-button>
<el-button size="mini" icon="el-icon-refresh" @click="onReset">重置</el-button> <el-button size="mini" icon="el-icon-refresh" @click="onReset">重置</el-button>
@ -574,6 +582,7 @@ export default {
name: 'Qualitative', name: 'Qualitative',
data() { data() {
return { return {
searchTime:"",
buzhou:0, buzhou:0,
processData:[], processData:[],
props1: { props1: {
@ -1287,7 +1296,15 @@ export default {
async getDataList() { async getDataList() {
const res = await newqualitative(this.searchInfo) const res = await newqualitative(this.searchInfo)
this.tableData = res.data this.tableData = res.data
} },
//searchTime
setTimeYearMonth(val){
// console.log("----------->",this.searchTime)
let yearVal = this.searchTime.getFullYear();
let monthVal = this.searchTime.getMonth()+1;
if(monthVal < 10) monthVal = "0"+monthVal;
this.searchInfo.time= yearVal + "-" + monthVal
},
} }
} }

161
src/views/setwork/calendar.vue

@ -0,0 +1,161 @@
<template>
<div class="dashboard-container">
<div class="gva-search-box">
<el-row>
<el-col :span="24">
<el-form ref="searform" :model="searchData" label-width="80px" :inline="true" class="demo-form-inline">
<el-form-item label="行政组织" >
<el-cascader style="width:100%"
filterable
:show-all-levels="true"
v-model="organization"
:options="orgThree"
:props="propsdepart"
clearable
placeholder="查询行政组织"
@change="orgSet"
>
</el-cascader>
</el-form-item>
<el-form-item label="姓名/工号">
<el-input v-model="searchData.nameorname" placeholder="查询姓名或工号"></el-input>
</el-form-item>
<el-form-item label="时间">
<el-date-picker
@change="dayTime"
v-model="yearandmonth"
type="month"
placeholder="选择月">
</el-date-picker>
</el-form-item>
<el-form-item>
<el-button type="primary" icon="el-icon-search" @click="searchSubmit">查询</el-button>
</el-form-item>
</el-form>
</el-col>
<el-col :span="24" class="rostering">
{{ tableHeadTitle }}
</el-col>
<el-col :span="24">
<el-table
size="small"
stripe
border
:data="tableData"
style="width: 100%">
<el-table-column
v-for="(item, index) in columnData"
:key="index"
:prop="item.name"
:label="item.label"
:align="index==0?'left':'center'"
:fixed="index==0"
:width="index==0?'':52"
>
</el-table-column>
</el-table>
</el-col>
<el-col :span="24"></el-col>
</el-row>
</div>
</div>
</template>
<script>
import { judgeArray } from "@/api/people/peopledata"
import { govthree } from '@/api/personnel/post'
import { getSchedule } from "@/api/systemaccredit/systemhrapi"
export default {
data() {
return {
columnData: [{name: "name", label: "姓名"},{name: "age", label: "年龄"}, {name: "sex", label: "性别"}],
tableData:[
{name: "张三", sex: "男",age:1},
{name: "李四", sex: "女",age:2}
],
organization:"",
yearandmonth:"",
searchData:{
page:1,
pagesize:10,
total:1,
}, //
tableHeadTitle:"", //
orgThree:[], //
propsdepart: {
value: "id",
label: "name",
children: "child",
checkStrictly:true
}, //
}
},
created(){
this.getOrgThree();
this.getSchedule();
},
methods:{
//
orgSet(val){
// console.log("",val)
if(val){
if(judgeArray(val) && val.length > 0){
this.searchData.organization= val[val.length-1];
}
}
},
//
dayTime(val){
if(this.yearandmonth && this.yearandmonth != null){
let yearVal = this.yearandmonth.getFullYear();
let monthVal = this.yearandmonth.getMonth()+1;
// let dayVal = this.yearandmonth.getDate();
if(monthVal < 10) monthVal = "0"+monthVal;
// if(dayVal < 10) dayVal = "0"+dayVal;
// this.searchData.yearandmonth= yearVal + "-" + monthVal + "-" + dayVal
this.searchData.yearandmonth= yearVal + "-" + monthVal
}
},
//
async getOrgThree(){
let sendData = {
id:313,
all:1
}
const res = await govthree(sendData)
this.orgThree = res.data
},
//
searchSubmit(){
console.log("searchData",this.searchData)
},
//
async getSchedule(){
let res = await getSchedule(this.searchData)
console.log("获取排班表",res.data)
this.columnData = res.data.headList
this.tableData = res.data.dataList
this.tableHeadTitle=res.data.title
}
}
}
</script>
<style>
.demo-form-inline{
margin: 10px 0 0 0;
}
.rostering{
text-align: center;
font-size: 25px;
margin-bottom: 10px;
}
</style>

86
src/views/setwork/tables.vue

@ -0,0 +1,86 @@
<template>
<div>
<el-table
class="no_table_tr_td_first"
:data="dataList"
:header-cell-style="{ background: '#FAFAFA' }"
>
<el-table-column
v-for="(item, index) in tabelColumns"
:key="index"
:prop="item.prop"
:label="item.label"
v-bind="item.other"
>
<template slot-scope="scope">
<span v-if="item.prop === 'name'">
<span class="primary-text" @click="handleDetail(scope.row)">{{scope.row.name}}</span>
</span>
<span v-else>{{ scope.row[item.prop] }}</span>
</template>
</el-table-column>
<el-table-column v-for="(i, index) in [...list]" :key="i.prop" v-bind="i">
<template slot-scope="{ row }">{{ row.list[index] || '无数据' }}</template>
</el-table-column>
</el-table>
<div v-bind="{ id: someProp, 'other-attr': otherProp }">123</div>
</div>
</template>
<script>
export default {
data () {
return {
aaa: '123',
someProp: 'someProp',
otherProp: 'otherProp',
list: [],
tabelColumns: [{
index: 0,
prop: 'number',
label: '号码',
minWidth: '120'
}, {
index: 1,
prop: 'name',
label: '名字',
minWidth: '120'
}, {
index: 2,
prop: 'id',
label: 'ID',
minWidth: '120'
}, {
index: 4,
prop: 'total',
label: '合计',
minWidth: '120'
}
],
dataList: [
{
number: 1,
name: 'yibo',
id: '1112333',
total: 10000,
list: ['100', '200', '300'],
col: ['2022-1', '2022-2', '2022-3']
}
]
}
},
mounted () {
this.list = this.dataList[0].col.map((label, i) => ({ label, prop: `list.${i}` }))
console.log(this.list)
}
}
</script>
<style lang="scss" scoped>
.primary-text {
color: blue;
cursor: pointer;
}
</style>

885
src/views/setwork/worktime.vue

@ -0,0 +1,885 @@
<template>
<div class="dashboard-container">
<div class="gva-search-box">
<el-row>
<el-col :span="24" class="top_bianjie">
<el-form ref="searchForm" :model="searchData" label-width="80px" :inline="true" class="demo-form-inline">
<el-form-item label="名称">
<el-input v-model="searchData.name"></el-input>
</el-form-item>
<el-form-item>
<el-button type="primary" icon="el-icon-search" @click="searchSubmit">查询</el-button>
</el-form-item>
<el-form-item>
<el-button type="warning" icon="el-icon-plus" @click="addNewCont">新增</el-button>
</el-form-item>
</el-form>
</el-col>
<el-col :span="24">
<template>
<el-table
:data="tableData"
style="width: 100%">
<el-table-column
prop="name"
label="名称"
>
</el-table-column>
<el-table-column
prop="rulename"
label="轮询规则"
>
</el-table-column>
<el-table-column
label="工作时段安排"
>
<template #default="scope">
<el-row v-for="item in scope.row.list" :key="item.title">
<el-col :span="24">{{ item.title }} 工作时间{{ item.startTime }} - {{ item.endTime }}</el-col>
</el-row>
</template>
</el-table-column>
<el-table-column
label="状态"
>
<template #default="scope">
<el-switch
@change="switchChange($event,scope.row.id)"
style="display: block"
v-model="scope.row.states"
active-color="#13ce66"
inactive-color="#ff4949"
active-text="启用"
inactive-text="禁用">
</el-switch>
</template>
</el-table-column>
<el-table-column align="center" fixed="right" label="操作" width="200" header-align="center">
<template #default="scope">
<el-button
icon="el-icon-setting"
size="small"
type="text"
@click="setOrigin(scope.row)"
>设置源点</el-button>
<el-button
icon="el-icon-edit"
size="small"
type="text"
@click="showEdit(scope.row)"
>编辑</el-button>
<el-button
icon="el-icon-delete"
size="small"
type="text"
@click="deleteOperate(scope.row)"
>删除</el-button>
</template>
</el-table-column>
</el-table>
</template>
</el-col>
</el-row>
<!--添加-->
<el-dialog :close-on-click-modal="false" :visible.sync="showBoxCont.addBox" title="添加信息" :before-close="closeAddDialog" width="60%">
<el-form ref="addForm" :model="addCont" :rules="addRules" label-width="120px" class="demo-ruleForm">
<el-form-item label="名称" prop="name">
<el-input v-model="addCont.name" placeholder="请输入名称"></el-input>
</el-form-item>
<el-form-item label="工作时间段安排" prop="rule">
<template>
<el-table
:data="worktimeList"
border
style="width: 100%">
<el-table-column
align="center"
prop="title"
label="时段名称"
width="180">
<template slot-scope="scope">
<el-input v-model="scope.row.title" placeholder="请输入名称"></el-input>
</template>
</el-table-column>
<el-table-column
align="center"
label="开始与结束时间"
>
<template slot-scope="scope">
<el-time-select
style="width: 120px"
placeholder="起始时间"
v-model="scope.row.startTime"
:picker-options="{
start: '00:00',
step: '01:00',
end: '24:00'
}">
</el-time-select>
<el-time-select
style="width: 120px"
placeholder="结束时间"
v-model="scope.row.endTime"
:picker-options="{
start: '00:00',
step: '01:00',
end: '24:00',
minTime: scope.row.startTime
}">
</el-time-select>
</template>
</el-table-column>
<el-table-column
align="center"
width="100">
<template slot="header">
<el-button type="primary" size="mini" icon="el-icon-plus" @click="addTimeSet()">新增</el-button>
</template>
<template slot-scope="scope">
<el-button type="danger" size="mini" icon="el-icon-delete" @click="delTimeSet(scope)">删除</el-button>
</template>
</el-table-column>
</el-table>
</template>
</el-form-item>
<el-form-item label="轮询规则" prop="rule">
<template>
<el-table
:data="ruleList"
border
style="width: 100%">
<el-table-column
align="center"
prop="sort"
label="排序"
width="180">
<template slot-scope="scope">
<el-input v-model="scope.row.sort" placeholder="请输入序号" disabled></el-input>
</template>
</el-table-column>
<el-table-column
align="center"
prop="name"
label="班组"
>
<template slot-scope="scope">
<el-select v-model="scope.row.teamid" clearable placeholder="请选择">
<el-option
v-for="item in teamcontlist"
:key="item.id"
:label="item.name"
:value="item.id">
</el-option>
</el-select>
</template>
</el-table-column>
<el-table-column
align="center"
width="100">
<template slot="header">
<el-button type="primary" size="mini" icon="el-icon-plus" @click="addTimeRuleSet()">新增</el-button>
</template>
<template slot-scope="scope">
<el-button type="danger" size="mini" icon="el-icon-delete" @click="delTimeRuleSet(scope)">删除</el-button>
</template>
</el-table-column>
</el-table>
</template>
</el-form-item>
</el-form>
<template #footer class="el_dialog__footer">
<div class="dialog-footer ">
<el-button size="small" type="primary" @click="addContsubmit" :loading="showBoxCont.addBoxIsTrue"> </el-button>
<el-button size="small" @click="closeAddDialog"> </el-button>
</div>
</template>
</el-dialog>
<!--编辑-->
<el-dialog :close-on-click-modal="false" :visible.sync="showBoxCont.editBox" title="编辑信息" :before-close="closeEditDialog" width="60%">
<el-form ref="editForm" :model="editCont" :rules="addRules" label-width="120px" class="demo-ruleForm">
<el-form-item label="名称" prop="name">
<el-input v-model="editCont.name" placeholder="请输入名称"></el-input>
</el-form-item>
<el-form-item label="工作时间段安排" prop="rule">
<template>
<el-table
:data="worktimeList"
border
style="width: 100%">
<el-table-column
align="center"
prop="title"
label="时段名称"
width="180">
<template slot-scope="scope">
<el-input v-model="scope.row.title" placeholder="请输入名称"></el-input>
</template>
</el-table-column>
<el-table-column
align="center"
label="开始与结束时间"
>
<template slot-scope="scope">
<el-time-select
style="width: 120px"
placeholder="起始时间"
v-model="scope.row.startTime"
:picker-options="{
start: '00:00',
step: '01:00',
end: '24:00'
}">
</el-time-select>
<el-time-select
style="width: 120px"
placeholder="结束时间"
v-model="scope.row.endTime"
:picker-options="{
start: '00:00',
step: '01:00',
end: '24:00',
minTime: scope.row.startTime
}">
</el-time-select>
</template>
</el-table-column>
<el-table-column
align="center"
width="100">
<template slot="header">
<el-button type="primary" size="mini" icon="el-icon-plus" @click="addTimeSet()">新增</el-button>
</template>
<template slot-scope="scope">
<el-button type="danger" size="mini" icon="el-icon-delete" @click="delTimeSet(scope)">删除</el-button>
</template>
</el-table-column>
</el-table>
</template>
</el-form-item>
<el-form-item label="轮询规则" prop="rule">
<template>
<el-table
:data="ruleList"
border
style="width: 100%">
<el-table-column
align="center"
prop="sort"
label="排序"
width="180">
<template slot-scope="scope">
<el-input v-model="scope.row.sort" placeholder="请输入序号" disabled></el-input>
</template>
</el-table-column>
<el-table-column
align="center"
prop="name"
label="班组"
>
<template slot-scope="scope">
<el-select v-model="scope.row.teamid" clearable placeholder="请选择">
<el-option
v-for="item in teamcontlist"
:key="item.id"
:label="item.name"
:value="item.id">
</el-option>
</el-select>
</template>
</el-table-column>
<el-table-column
align="center"
width="100">
<template slot="header">
<el-button type="primary" size="mini" icon="el-icon-plus" @click="addTimeRuleSet()">新增</el-button>
</template>
<template slot-scope="scope">
<el-button type="danger" size="mini" icon="el-icon-delete" @click="delTimeRuleSet(scope)">删除</el-button>
</template>
</el-table-column>
</el-table>
</template>
</el-form-item>
</el-form>
<template #footer class="el_dialog__footer">
<div class="dialog-footer ">
<el-button size="small" type="primary" @click="editContsubmit" :loading="showBoxCont.editBoxIsTrue"> </el-button>
<el-button size="small" @click="closeEditDialog"> </el-button>
</div>
</template>
</el-dialog>
<!--设置源点-->
<el-dialog :close-on-click-modal="false" :visible.sync="showBoxCont.setOrigin" title="设置源点" :before-close="closeOriginDialog" width="40%">
<el-form ref="editOriginForm" :model="editOriginCont" :rules="addOriginRules" label-width="120px" class="demo-ruleForm">
<el-form-item label="源点日期" prop="starttimestr">
<el-date-picker
v-model="editOriginCont.starttimestr"
format="yyyy 年 MM 月 dd 日"
@change="setOriginTime"
type="date"
placeholder="选择日期">
</el-date-picker>
</el-form-item>
<el-form-item label="源点工作时段" prop="shifttime">
<el-select v-model="editOriginCont.shifttime" clearable placeholder="请选择">
<el-option
v-for="item in periodList"
:key="item.id"
:label="item.title"
:value="item.id">
</el-option>
</el-select>
</el-form-item>
<el-form-item label="轮询点" prop="rule">
<el-select v-model="editOriginCont.rule" clearable placeholder="请选择">
<el-option
v-for="item in rulesList"
:key="item.id"
:label="item.teamname"
:value="item.id">
<span style="float: left">{{ item.teamname }}</span>
<span style="float: right; color: #8492a6; font-size: 13px">{{ item.sort }}</span>
</el-option>
</el-select>
</el-form-item>
</el-form>
<template #footer class="el_dialog__footer">
<div class="dialog-footer ">
<el-button size="small" type="primary" @click="setOriginContsubmit" :loading="showBoxCont.setOriginIsTrue"> </el-button>
<el-button size="small" @click="closeOriginDialog"> </el-button>
</div>
</template>
</el-dialog>
</div>
</div>
</template>
<script>
import { teamTimeList,addTeamTime,editWorkTimeState,editWorkTimeCont,getPeriodAndRuleList,setOirginCont } from "@/api/systemaccredit/systemhrapi"
import { teamcontlist } from "@/api/personnel/post"
export default {
data() {
return {
startTime:"",
endTime:"",
showBoxCont:{
addBox:false,
addBoxIsTrue:false,
editBox:false,
editBoxIsTrue:false,
setOrigin:false,
setOriginIsTrue:false,
},
worktimeList:[
{
title:"",
startTime:"",
endTime:""
},
],
searchData:{},
tableData:[],
addCont:{
name:"",
}, //
editCont:{
name:"",
}, //
addRules:{}, //
teamcontlist:[], //
ruleList:[
{
sort:1,
teamid:""
}
], //
editOriginCont:{}, //
addOriginRules:{
starttimestr: [{ required: true, message: '必填', trigger: 'blur' }],
shifttime: [{ required: true, message: '必填', trigger: 'blur' }],
rule: [{ required: true, message: '必填', trigger: 'blur' }],
}, //
periodList:[], //
rulesList:[], //
}
},
created(){
this.getList()
this.getTeam()
},
methods:{
//
async getTeam(){
let res = await teamcontlist();
this.teamcontlist = res.data.list
console.log("班组---------------->",res,res.list)
},
//
async getList(){
let res = await teamTimeList(this.searchData)
// console.log("",res.data)
if(res.code == 0){
this.tableData = res.data
}
},
//
async searchSubmit(){
this.getList()
},
//
delTimeSet(val){
// console.log("",val)
this.worktimeList.splice(val.$index,1);
},
//
delTimeRuleSet(val){
this.ruleList.splice(val.$index,1);
this.ruleList.forEach((item,index)=>{
item.sort = index+1
})
},
//
addNewCont(){
this.showBoxCont.addBox = true;
},
//
async addContsubmit(){
this.showBoxCont.addBoxIsTrue = true;
if(!this.addCont.name){
this.$message.error('请输入名称');
this.showBoxCont.addBoxIsTrue = false;
return;
}else{
if(this.addCont.name == "" || this.addCont.name == null){
this.$message.error('请输入名称');
this.showBoxCont.addBoxIsTrue = false;
return;
}
}
if(this.ruleList.length < 1){
this.$message.error('请输入轮询规则!');
this.showBoxCont.editBoxIsTrue = false;
return;
}
if(this.worktimeList.length < 1){
this.$message.error('请输入工作时间安排!');
this.showBoxCont.addBoxIsTrue = false;
return;
}
let adopt = true;
let sendList = new Array()
this.worktimeList.forEach(item=>{
if(item.title == "" || item.title == null || item.startTime == "" || item.startTime == null || item.endTime == "" || item.endTime == null){
adopt = false;
}
let sendCont = {
title: item.title,
startTime: item.startTime,
endTime: item.endTime
}
sendList.push(sendCont)
})
if(!adopt){
this.$message.error('时间安排有不符合要求的!请慎重检查!');
this.showBoxCont.addBoxIsTrue = false;
return;
}
let ruleIstrue = true;
let ruleAry = new Array()
this.ruleList.forEach(itemRule=>{
if(itemRule.sort == 0 || itemRule.sort == "" || itemRule.sort == null || itemRule.teamid == 0 || itemRule.teamid == "" || itemRule.teamid == null){
ruleIstrue = false;
}
let sendRuleCont = {
sort: itemRule.sort,
teamid: itemRule.teamid.toString(),
}
ruleAry.push(sendRuleCont)
})
if(!ruleIstrue){
this.$message.error('轮询规则有不符合要求的!请慎重检查!');
this.showBoxCont.editBoxIsTrue = false;
return;
}
// console.log("",this.addCont,this.worktimeList)
var sendData = {
name: this.addCont.name,
rule: ruleAry,
list:sendList,
}
let res = await addTeamTime(sendData)
if(res.code == 0){
this.$confirm('新增成功!是否继续添加?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
this.showBoxCont.addBoxIsTrue = false;
this.initData();
this.getList()
this.$forceUpdate()
}).catch(() => {
this.showBoxCont.addBoxIsTrue = false;
this.getList()
this.$forceUpdate();
this.closeAddDialog();
});
}else{
this.showBoxCont.addBoxIsTrue = false;
}
},
//
closeAddDialog(){
this.showBoxCont.addBox = false;
this.showBoxCont.addBoxIsTrue = false;
this.initData();
},
//
showEdit(val){
console.log("编辑",val)
if(val.list && val.list.length > 0){
let tiemAry = new Array
val.list.forEach(item=>{
let timelCont = {
id:item.id,
title:item.title,
startTime:item.startTime,
endTime:item.endTime,
}
tiemAry.push(timelCont)
});
this.worktimeList = tiemAry
}
if(val.rule && val.rule.length > 0){
let ruleAry = new Array
val.rule.forEach(items=>{
let timelContRule = {
id:items.id,
sort:items.sort,
teamid:items.teamid*1
}
ruleAry.push(timelContRule)
})
this.ruleList = ruleAry
}
this.editCont = {
id:val.id,
name:val.name,
// list:tiemAry
}
console.log("编辑--------->",this.editCont,this.ruleList,this.worktimeList)
this.showBoxCont.editBox = true;
},
//
async editContsubmit(){
this.showBoxCont.editBoxIsTrue = true;
if(!this.editCont.name){
this.$message.error('请输入名称');
this.showBoxCont.editBoxIsTrue = false;
return;
}else{
if(this.editCont.name == "" || this.editCont.name == null){
this.$message.error('请输入名称');
this.showBoxCont.editBoxIsTrue = false;
return;
}
}
if(this.worktimeList.length < 1){
this.$message.error('请输入工作时间安排!');
this.showBoxCont.editBoxIsTrue = false;
return;
}
if(this.ruleList.length < 1){
this.$message.error('请输入轮询规则!');
this.showBoxCont.editBoxIsTrue = false;
return;
}
let adopt = true;
let sendList = new Array()
this.worktimeList.forEach(item=>{
if(item.title == "" || item.title == null || item.startTime == "" || item.startTime == null || item.endTime == "" || item.endTime == null){
adopt = false;
}
let sendCont = {
id:item.id,
title: item.title,
startTime: item.startTime,
endTime: item.endTime
}
sendList.push(sendCont)
})
if(!adopt){
this.$message.error('时间安排有不符合要求的!请慎重检查!');
this.showBoxCont.editBoxIsTrue = false;
return;
}
let ruleIstrue = true;
let ruleAry = new Array()
this.ruleList.forEach(itemRule=>{
if(itemRule.sort == 0 || itemRule.sort == "" || itemRule.sort == null || itemRule.teamid == 0 || itemRule.teamid == "" || itemRule.teamid == null){
ruleIstrue = false;
}
let sendRuleCont = {
id:itemRule.id,
sort: itemRule.sort,
teamid: itemRule.teamid.toString(),
}
ruleAry.push(sendRuleCont)
})
if(!ruleIstrue){
this.$message.error('轮询规则有不符合要求的!请慎重检查!');
this.showBoxCont.editBoxIsTrue = false;
return;
}
var sendData = {
id:this.editCont.id,
name: this.editCont.name,
rule: ruleAry,
list:sendList
}
console.log("班组---------sendData------->",sendData)
let res = await editWorkTimeCont(sendData)
if(res.code == 0){
this.$message({
type: 'success',
message: '编辑成功',
showClose: true
})
}
this.getList()
this.closeEditDialog()
this.showBoxCont.editBoxIsTrue = false;
},
//
closeEditDialog(){
this.showBoxCont.editBox = false;
this.initData();
},
//
async deleteOperate(val){
this.$confirm('此操作将永久删除, 是否继续?', '是否删除?', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(async() => {
let sendData = {
id:val.id,
state:3,
constrain:2
}
const respon = await editWorkTimeState(sendData)
if (respon.code === 0) {
this.$message({
type: 'success',
message: '删除成功!'
})
this.getList()
}
})
},
//
addTimeSet(){
this.worktimeList.push({
id:"",
title:"",
startTime:"",
endTime:""
})
},
//
addTimeRuleSet(){
let countNum = this.ruleList.length
this.ruleList.push(
{
id:"",
sort:countNum+1,
teamid:""
}
)
},
//
initData(){
this.worktimeList =[
{
title:"",
startTime:"",
endTime:""
},
];
this.ruleList=[
{
sort:1,
teamid:""
}
];
this.addCont = {};
this.editCont = {};
},
//
async switchChange(val,id){
console.log("状态改变",val,id)
let setState = 2;
if(val) setState = 1;
let sendData = {
id:id,
state:setState,
constrain:2
}
const respon = await editWorkTimeState(sendData)
this.getList()
},
//
async setOrigin(val){
this.editOriginCont.id = val.id
console.log("设置源点",val)
let sendData = {
id:val.id
}
let res = await getPeriodAndRuleList(sendData)
console.log("设置源点------------->",val,res)
this.periodList = res.data.list //
this.rulesList = res.data.rule //
this.showBoxCont.setOrigin = true;
if(res.code == 0){
this.editOriginCont = {
id:val.id,
starttime:res.data.time,
starttimestr:res.data.time,
shifttime:res.data.teamid,
rule:res.data.ruleid
}
}
},
//
closeOriginDialog(){
this.showBoxCont.setOrigin = false;
this.showBoxCont.setOriginIsTrue = false;
this.initOrigin()
},
//
setOriginContsubmit(){
this.showBoxCont.setOriginIsTrue = true;
console.log("提交源点数据设置------------->",this.editOriginCont)
this.$refs.editOriginForm.validate(async valid => {
if (valid) {
// this.showBoxCont.setOriginIsTrue = false;
let res = await setOirginCont(this.editOriginCont)
this.getList()
this.closeOriginDialog()
}else{
this.showBoxCont.setOriginIsTrue = false;
}
});
this.showBoxCont.setOriginIsTrue = false;
},
//
initOrigin(){
this.periodList=[] //
this.rulesList=[] //
this.editOriginCont = {
id:"",
starttime:"",
starttimestr:"",
shifttime:"",
rule:""
}
},
//
setOriginTime(){
if(this.editOriginCont.starttimestr && this.editOriginCont.starttimestr != null){
let yearVal = this.editOriginCont.starttimestr.getFullYear();
let monthVal = this.editOriginCont.starttimestr.getMonth()+1;
let dayVal = this.editOriginCont.starttimestr.getDate();
if(monthVal < 10) monthVal = "0"+monthVal;
if(dayVal < 10) dayVal = "0"+dayVal;
this.editOriginCont.starttime= yearVal + "-" + monthVal + "-" + dayVal
}
},
}
}
</script>
<style>
</style>
<style lang="scss" scoped>
.dashboard {
&-container {
margin: 30px;
}
&-text {
font-size: 30px;
line-height: 46px;
}
}
</style>

89
src/views/workflow/flow.vue

@ -0,0 +1,89 @@
<template>
<el-main >
<workflow
:data="data"
@ok="ok"
/>
</el-main>
</template>
<script>
import workflow from 'workflow-ui/src/components/Generator'
import 'workflow-ui/lib/workflow-ui.css'
export default {
components: {
workflow
},
data() {
return {
data:{},
title: '请假',
node: {
name: '发起人',
type: 'start',
nodeId: 'sid-startevent',
childNode: {}
}
}
},
created(){
},
computed:{
// selectedNode(){
// return this.$store.state.selectedNode
// }
},
methods:{
ok (data) {
console.log("ok------>",data)
},
toReturn() {
//window.location.href = ""
},
async saveData() {
console.log("发布流程")
},
validate(){
return this.$refs["process-tree"].validateProcess()
},
nodeSelected(node){
console.log('配置节点', node)
this.showConfig = true
}
}
}
</script>
<style scoped>
</style>
<style lang="less" scoped>
.design {
margin-top: 100px;
display: flex;
transform-origin: 50% 0px 0px;
}
.scale {
z-index: 999;
position: fixed;
top: 80px;
right: 40px;
span {
margin: 0 10px;
font-size: 15px;
color: #7a7a7a;
width: 50px;
}
}
.node-config-content{
padding: 0 20px 20px;
}
/deep/ .el-drawer__body{
overflow-y: auto;
}
</style>
Loading…
Cancel
Save