17 changed files with 2378 additions and 380 deletions
@ -0,0 +1,50 @@ |
|||||
|
import request from '@/utils/requestFile' |
||||
|
// 获取岗位方案内容列表
|
||||
|
export function get_post_scheme(data) { |
||||
|
return request({ |
||||
|
url: '/postpc/get_post_scheme', |
||||
|
method: 'post', |
||||
|
data |
||||
|
}) |
||||
|
} |
||||
|
// 获取复制岗位考核方案
|
||||
|
export function get_copy_sheme_infor(data) { |
||||
|
return request({ |
||||
|
url: '/postpc/get_copy_sheme_infor', |
||||
|
method: 'post', |
||||
|
data |
||||
|
}) |
||||
|
} |
||||
|
// 引用指标部门指标
|
||||
|
export function quote_department_target(data) { |
||||
|
return request({ |
||||
|
url: '/postpc/quote_department_target', |
||||
|
method: 'post', |
||||
|
data |
||||
|
}) |
||||
|
} |
||||
|
// 提交岗位考核方案
|
||||
|
export function submit_post_scheme(data) { |
||||
|
return request({ |
||||
|
url: '/postpc/submit_post_scheme', |
||||
|
method: 'post', |
||||
|
data |
||||
|
}) |
||||
|
} |
||||
|
// 获取岗位相关指标
|
||||
|
export function getpostabouttarget(data) { |
||||
|
return request({ |
||||
|
url: '/postpc/getpostabouttarget', |
||||
|
method: 'post', |
||||
|
data |
||||
|
}) |
||||
|
} |
||||
|
// 添加岗位指标
|
||||
|
export function add_post_target(data) { |
||||
|
return request({ |
||||
|
url: '/postpc/add_post_target', |
||||
|
method: 'post', |
||||
|
data |
||||
|
}) |
||||
|
} |
||||
|
|
||||
@ -0,0 +1,91 @@ |
|||||
|
// 定性考核api
|
||||
|
import request from '@/utils/request' |
||||
|
//岗位定性考核列表
|
||||
|
export const posttargetsunlist = (data) => { |
||||
|
return request({ |
||||
|
url: '/postkpi/posttargetsunlist', |
||||
|
method: 'post', |
||||
|
data: data |
||||
|
}) |
||||
|
} |
||||
|
//添加岗位细则
|
||||
|
export const addposttargetcont = (data) => { |
||||
|
return request({ |
||||
|
url: '/postkpi/addposttargetcont', |
||||
|
method: 'post', |
||||
|
data: data |
||||
|
}) |
||||
|
} |
||||
|
//修改定性指标关联岗位
|
||||
|
export const editposttargetaual = (data) => { |
||||
|
return request({ |
||||
|
url: '/postkpi/editposttargetaual', |
||||
|
method: 'post', |
||||
|
data: data |
||||
|
}) |
||||
|
} |
||||
|
|
||||
|
//获取指标关联的岗位
|
||||
|
export const targetorglist = (data) => { |
||||
|
return request({ |
||||
|
url: '/postkpi/targetorglist', |
||||
|
method: 'post', |
||||
|
data: data |
||||
|
}) |
||||
|
} |
||||
|
//获取岗位考核子栏目内容
|
||||
|
export const getsuntargetinfo = (data) => { |
||||
|
return request({ |
||||
|
url: '/postkpi/getsuntargetinfo', |
||||
|
method: 'post', |
||||
|
data: data |
||||
|
}) |
||||
|
} |
||||
|
//编辑定性考核子栏目
|
||||
|
export const eidtsuntargetpost = (data) => { |
||||
|
return request({ |
||||
|
url: '/postkpi/eidtsuntargetpost', |
||||
|
method: 'post', |
||||
|
data: data |
||||
|
}) |
||||
|
} |
||||
|
//删除定性考核指标子栏目
|
||||
|
export const delsuntarget = (data) => { |
||||
|
return request({ |
||||
|
url: '/postkpi/delsuntarget', |
||||
|
method: 'post', |
||||
|
data: data |
||||
|
}) |
||||
|
} |
||||
|
//添加单条定性指标细则
|
||||
|
export const addpostdetacont = (data) => { |
||||
|
return request({ |
||||
|
url: '/postkpi/addpostdetacont', |
||||
|
method: 'post', |
||||
|
data: data |
||||
|
}) |
||||
|
} |
||||
|
//获取指标细则内容
|
||||
|
export const getdetailscont = (data) => { |
||||
|
return request({ |
||||
|
url: '/postkpi/getdetailscont', |
||||
|
method: 'post', |
||||
|
data: data |
||||
|
}) |
||||
|
} |
||||
|
//修改定性考核指标细则
|
||||
|
export const editdeatilscont = (data) => { |
||||
|
return request({ |
||||
|
url: '/postkpi/editdeatilscont', |
||||
|
method: 'post', |
||||
|
data: data |
||||
|
}) |
||||
|
} |
||||
|
//删除定性考核指标细则
|
||||
|
export const eidtposttardetailsstrte = (data) => { |
||||
|
return request({ |
||||
|
url: '/postkpi/eidtposttardetailsstrte', |
||||
|
method: 'post', |
||||
|
data: data |
||||
|
}) |
||||
|
} |
||||
@ -0,0 +1,188 @@ |
|||||
|
import request from '@/utils/requestFile' |
||||
|
// 部门指标列表
|
||||
|
export function departmenttargetlist(data) { |
||||
|
return request({ |
||||
|
url: '/department_pc/departmenttargetlist', |
||||
|
method: 'post', |
||||
|
data |
||||
|
}) |
||||
|
} |
||||
|
// 获取部门定性考核部门关联列表
|
||||
|
export function getdepartabouttarget(data) { |
||||
|
return request({ |
||||
|
url: '/department_pc/getdepartabouttarget', |
||||
|
method: 'post', |
||||
|
data |
||||
|
}) |
||||
|
} |
||||
|
// 获取部门指标相关执行人
|
||||
|
export function gettargetreport(data) { |
||||
|
return request({ |
||||
|
url: '/department_pc/gettargetreport', |
||||
|
method: 'post', |
||||
|
data |
||||
|
}) |
||||
|
} |
||||
|
// 修改子栏目标题名称级考核关联部门及提报人
|
||||
|
export function editsontargetdepartmentreport(data) { |
||||
|
return request({ |
||||
|
url: '/department_pc/editsontargetdepartmentreport', |
||||
|
method: 'post', |
||||
|
data |
||||
|
}) |
||||
|
} |
||||
|
// 根据指标和部门获取相关岗位
|
||||
|
export function basistargetdearpetmentgetpost(data) { |
||||
|
return request({ |
||||
|
url: '/department_pc/basistargetdearpetmentgetpost', |
||||
|
method: 'post', |
||||
|
data |
||||
|
}) |
||||
|
} |
||||
|
// 根据指标和部门获取相关岗位
|
||||
|
export function delsontarget(data) { |
||||
|
return request({ |
||||
|
url: '/department_pc/delsontarget', |
||||
|
method: 'post', |
||||
|
data |
||||
|
}) |
||||
|
} |
||||
|
// 删除指标
|
||||
|
export function deltarget(data) { |
||||
|
return request({ |
||||
|
url: '/department_pc/deltarget', |
||||
|
method: 'post', |
||||
|
data |
||||
|
}) |
||||
|
} |
||||
|
// 实验
|
||||
|
export function shiyan(data) { |
||||
|
return request({ |
||||
|
url: '/department_pc/shiyan', |
||||
|
method: 'post', |
||||
|
data |
||||
|
}) |
||||
|
} |
||||
|
// 获取定性考核指标列表内容
|
||||
|
export function getdepartmenttragetcontlist(data) { |
||||
|
return request({ |
||||
|
url: '/department_pc/getdepartmenttragetcontlist', |
||||
|
method: 'post', |
||||
|
data |
||||
|
}) |
||||
|
} |
||||
|
// 子栏目关联部门岗位
|
||||
|
export function depar_son_target_about_post(data) { |
||||
|
return request({ |
||||
|
url: '/department_pc/depar_son_target_about_post', |
||||
|
method: 'post', |
||||
|
data |
||||
|
}) |
||||
|
} |
||||
|
// 获取单一指标细则内容
|
||||
|
export function getonedetailedtarget(data) { |
||||
|
return request({ |
||||
|
url: '/department_pc/getonedetailedtarget', |
||||
|
method: 'post', |
||||
|
data |
||||
|
}) |
||||
|
} |
||||
|
// 获取部门指标岗位提交人
|
||||
|
export function basistaegetdeparmentreport(data) { |
||||
|
return request({ |
||||
|
url: '/department_pc/basistaegetdeparmentreport', |
||||
|
method: 'post', |
||||
|
data |
||||
|
}) |
||||
|
} |
||||
|
// 根据指标栏目新增指标细则
|
||||
|
export function basissontargetadddetailed(data) { |
||||
|
return request({ |
||||
|
url: '/department_pc/basissontargetadddetailed', |
||||
|
method: 'post', |
||||
|
data |
||||
|
}) |
||||
|
} |
||||
|
// 编辑单一部门指标
|
||||
|
export function edit_one_target(data) { |
||||
|
return request({ |
||||
|
url: '/department_pc/edit_one_target', |
||||
|
method: 'post', |
||||
|
data |
||||
|
}) |
||||
|
} |
||||
|
|
||||
|
// 指标细则关联部门岗位
|
||||
|
export function depar_detaile_about_post(data) { |
||||
|
return request({ |
||||
|
url: '/department_pc/depar_detaile_about_post', |
||||
|
method: 'post', |
||||
|
data |
||||
|
}) |
||||
|
} |
||||
|
|
||||
|
// 添加部门指标
|
||||
|
export function add_department_target(data) { |
||||
|
return request({ |
||||
|
url: '/department_pc/add_department_target', |
||||
|
method: 'post', |
||||
|
data |
||||
|
}) |
||||
|
} |
||||
|
// 添加定性考核子栏目及细则
|
||||
|
export function addsuntargetdetailed(data) { |
||||
|
return request({ |
||||
|
url: '/department_pc/addsuntargetdetailed', |
||||
|
method: 'post', |
||||
|
data |
||||
|
}) |
||||
|
} |
||||
|
|
||||
|
// 获取单一指标详细内容
|
||||
|
export function get_one_terget_info(data) { |
||||
|
return request({ |
||||
|
url: '/department_pc/get_one_terget_info', |
||||
|
method: 'post', |
||||
|
data |
||||
|
}) |
||||
|
} |
||||
|
// 指标关联岗位
|
||||
|
export function deparment_target_about_post(data) { |
||||
|
return request({ |
||||
|
url: '/department_pc/deparment_target_about_post', |
||||
|
method: 'post', |
||||
|
data |
||||
|
}) |
||||
|
} |
||||
|
// 编辑单一指标细则内容
|
||||
|
export function edit_one_detailed_target(data) { |
||||
|
return request({ |
||||
|
url: '/department_pc/edit_one_detailed_target', |
||||
|
method: 'post', |
||||
|
data |
||||
|
}) |
||||
|
} |
||||
|
// 获取子栏目基础信息
|
||||
|
export function getsontargetcont(data) { |
||||
|
return request({ |
||||
|
url: '/department_pc/getsontargetcont', |
||||
|
method: 'post', |
||||
|
data |
||||
|
}) |
||||
|
} |
||||
|
// 删除单一指标细则
|
||||
|
export function del_one_detailed_target(data) { |
||||
|
return request({ |
||||
|
url: '/department_pc/del_one_detailed_target', |
||||
|
method: 'post', |
||||
|
data |
||||
|
}) |
||||
|
} |
||||
|
// 获取岗位指标详情
|
||||
|
export function get_post_target(data) { |
||||
|
return request({ |
||||
|
url: '/postpc/get_post_target', |
||||
|
method: 'post', |
||||
|
data |
||||
|
}) |
||||
|
} |
||||
@ -0,0 +1,463 @@ |
|||||
|
<template> |
||||
|
<!-- 考核指标录入 --> |
||||
|
<div class="dashboard-container"> |
||||
|
|
||||
|
<div class="gva-table-box"> |
||||
|
<el-container> |
||||
|
<!-- 左侧内容 --> |
||||
|
<el-aside |
||||
|
width="300px" |
||||
|
style="border-right: 1px solid rgb(220, 223, 230);height: 850px" |
||||
|
> |
||||
|
<el-tree |
||||
|
:data="GovthreeList2" |
||||
|
:props="defaultProps1" |
||||
|
@node-click="handleNodeClick" |
||||
|
></el-tree> |
||||
|
</el-aside> |
||||
|
<el-aside |
||||
|
width="200px" |
||||
|
style="border-right: 1px solid rgb(220, 223, 230);height: 850px" |
||||
|
> |
||||
|
<el-tree |
||||
|
:data="postList" |
||||
|
:props="defaultProps1" |
||||
|
@node-click="NodePostClick" |
||||
|
></el-tree> |
||||
|
</el-aside> |
||||
|
<!-- 右侧内容 --> |
||||
|
<el-main style="padding: 10px"> |
||||
|
<div v-if="tableGWShow"> |
||||
|
<gwQualitativeIndicators :gwFromList="gwFromList"></gwQualitativeIndicators> |
||||
|
</div> |
||||
|
<div v-if="tableBMShow"> |
||||
|
<qualitativeIndicators :bmId="bmId"></qualitativeIndicators> |
||||
|
</div> |
||||
|
</el-main> |
||||
|
</el-container> |
||||
|
</div> |
||||
|
|
||||
|
</div> |
||||
|
</template> |
||||
|
|
||||
|
<script> |
||||
|
import { govthree, positionlist } from "@/api/personnel/post"; |
||||
|
import { dutyclasslist } from "@/api/duty/dimension"; |
||||
|
import qualitativeIndicators from "@/views/assessmentProgram/qualitativeIndicators.vue"; |
||||
|
import gwQualitativeIndicators from "@/views/assessmentProgram/gwQualitativeIndicators.vue"; |
||||
|
import { |
||||
|
posttargetlist, |
||||
|
addtarget, |
||||
|
gettargetinfo, |
||||
|
eiteassessinfo, |
||||
|
eitetarget, |
||||
|
deltarget, |
||||
|
editposttarget, |
||||
|
editstate, |
||||
|
addposttarget, |
||||
|
} from "@/api/duty/project"; |
||||
|
import { getgroupdepartmap, getgroupuser } from "@/api/duty/group"; |
||||
|
export default { |
||||
|
components: { |
||||
|
qualitativeIndicators, |
||||
|
gwQualitativeIndicators |
||||
|
}, |
||||
|
name: "Dashboard", |
||||
|
data() { |
||||
|
return { |
||||
|
gwFromList:{ |
||||
|
gwId:1, |
||||
|
bmId:1 |
||||
|
}, |
||||
|
tableGWShow: false, |
||||
|
tableBMShow: true, |
||||
|
gwId:1, |
||||
|
bmId:1, |
||||
|
GovthreeList2: [], |
||||
|
defaultProps1: { |
||||
|
children: "child", |
||||
|
label: "name", |
||||
|
}, |
||||
|
grouplistBackup: [], |
||||
|
grouplist: [], |
||||
|
props: { |
||||
|
checkStrictly: true, |
||||
|
value: "id", |
||||
|
label: "name", |
||||
|
children: "children", |
||||
|
emitPath: false, |
||||
|
// multiple: true |
||||
|
}, |
||||
|
userProps: { |
||||
|
value: "key", |
||||
|
label: "name", |
||||
|
children: "govlist", |
||||
|
emitPath: false, |
||||
|
multiple: true, |
||||
|
}, |
||||
|
dutyclasslist: {}, |
||||
|
searchList: { |
||||
|
page: 1, |
||||
|
pagesize: 10000, |
||||
|
}, |
||||
|
// 查询详情的数据 |
||||
|
editFrom: {}, |
||||
|
// 修改状态提交数据 |
||||
|
switchFrom: {}, |
||||
|
// 删除数据提交 |
||||
|
deleFrom: {}, |
||||
|
// 编辑时数据 |
||||
|
editAdd: { |
||||
|
unittitle: "", |
||||
|
parentId: "", |
||||
|
}, |
||||
|
assessList: {}, |
||||
|
// 添加数据 |
||||
|
form: { |
||||
|
share: 2, |
||||
|
cycleattr: 1, |
||||
|
scoringmethod: 1, |
||||
|
}, |
||||
|
// 弹窗变量 |
||||
|
dialogFormVisible: false, |
||||
|
// 修改弹窗 |
||||
|
editDialogFormVisible: false, |
||||
|
total: 0, |
||||
|
postListAdd: [], |
||||
|
postList: [], |
||||
|
tableData: [], |
||||
|
// 条件查询变量 |
||||
|
searchInfo: { |
||||
|
page: 1, |
||||
|
pagesize: 10, |
||||
|
}, |
||||
|
// 条件查询变量 |
||||
|
abc: { |
||||
|
aaa: "111", |
||||
|
bbb: "222", |
||||
|
}, |
||||
|
}; |
||||
|
}, |
||||
|
created() { |
||||
|
console.log(this.$store.state.user.token); |
||||
|
if (this.$store.state.user.token == "") { |
||||
|
this.$router.push("/login"); |
||||
|
} |
||||
|
// 页面渲染时获取初始数据 |
||||
|
this.getDataList(); |
||||
|
this.getDutyclasslist(); |
||||
|
this.getSystemadminlist(); |
||||
|
this.getGrouplist(); |
||||
|
this.getGovthree2(); |
||||
|
}, |
||||
|
methods: { |
||||
|
// 点击岗位列表 |
||||
|
NodePostClick(val) { |
||||
|
this.gwId=val.id |
||||
|
this.gwFromList.gwId=val.id |
||||
|
this.tableGWShow=true |
||||
|
this.tableBMShow=false |
||||
|
console.log('岗位') |
||||
|
console.log(this.gwFromList); |
||||
|
}, |
||||
|
// 获取岗位 |
||||
|
async getPost(val) { |
||||
|
const from = { |
||||
|
organization: val.toString(), |
||||
|
page: 1, |
||||
|
pagesize: 10, |
||||
|
}; |
||||
|
const res = await positionlist(from); |
||||
|
this.postList = res.data.list; |
||||
|
}, |
||||
|
// 点击行政组织树 |
||||
|
handleNodeClick(val) { |
||||
|
// this.searchInfo.organization=val.id |
||||
|
// this.searchInfo.organization=this.searchInfo.organization.toString() |
||||
|
this.getPost(val.id); |
||||
|
this.bmId=val.id |
||||
|
this.gwFromList.bmId=val.id |
||||
|
console.log('行政组织') |
||||
|
this.tableGWShow=false |
||||
|
this.tableBMShow=true |
||||
|
console.log(val); |
||||
|
}, |
||||
|
// 添加时点击行政组织 |
||||
|
async departChange(val) { |
||||
|
console.log(val); |
||||
|
// this.searchInfo.organization=val.id |
||||
|
// this.searchInfo.organization=this.searchInfo.organization.toString() |
||||
|
const from = { |
||||
|
organization: val.toString(), |
||||
|
page: 1, |
||||
|
pagesize: 10, |
||||
|
}; |
||||
|
const res = await positionlist(from); |
||||
|
this.postListAdd = res.data.list; |
||||
|
console.log(val); |
||||
|
}, |
||||
|
// 获取行政组织二级树 |
||||
|
async getGovthree2() { |
||||
|
const res = await govthree(); |
||||
|
this.GovthreeList2 = res.data[0].child; |
||||
|
console.log("this.GovthreeList2"); |
||||
|
console.log(res.data[0].child); |
||||
|
}, |
||||
|
// 获取员工列表 |
||||
|
async getSystemadminlist() { |
||||
|
const from = { |
||||
|
level: 4, |
||||
|
}; |
||||
|
const res = await getgroupuser(from); |
||||
|
this.grouplistBackup = res.data; |
||||
|
this.grouplistBackup.forEach((item) => { |
||||
|
if (item.govlist != null) { |
||||
|
// 即:this.digui(item);在这地方添加的 |
||||
|
item.govlist.forEach((items) => { |
||||
|
// 下面的就是执行递归的方法,因为我是从第二层才开始需要往下挖的,所以这里多了个forEach,如果从第一层起,从item就好了,即:this.digui(item);在上面添加 |
||||
|
this.digui(items); // 这里是源头,把一个对象开始递归,开始循环 |
||||
|
// 如果想看完整数据,那么是在这里打印数据哦 |
||||
|
console.log(items, "看我查看完整的数据哦"); |
||||
|
// 因为上一步递归时,就已经把循环children的动作做完了,这里是验收递归方法的地方。 |
||||
|
}); |
||||
|
} else { |
||||
|
item.govlist = item.child; |
||||
|
// 如果第一层没有子项做的操作。。。。。 |
||||
|
} |
||||
|
}); |
||||
|
console.log(this.grouplistBackup); |
||||
|
}, |
||||
|
// 获取部门 |
||||
|
async getGrouplist() { |
||||
|
const res = await getgroupdepartmap(); |
||||
|
this.grouplist = res.data; |
||||
|
}, |
||||
|
// 获取考核纬度列表 |
||||
|
async getDutyclasslist() { |
||||
|
const res = await dutyclasslist(this.searchList); |
||||
|
this.dutyclasslist = res.data.list; |
||||
|
}, |
||||
|
//删除操作 |
||||
|
async deleteOperate(row) { |
||||
|
this.$confirm("此操作将永久删除, 是否继续?", "提示", { |
||||
|
confirmButtonText: "确定", |
||||
|
cancelButtonText: "取消", |
||||
|
type: "warning", |
||||
|
}).then(async () => { |
||||
|
this.deleFrom.state = 3; |
||||
|
this.deleFrom.id = row.id; |
||||
|
this.deleFrom.id = this.deleFrom.id.toString(); |
||||
|
const res = await editstate(this.deleFrom); |
||||
|
if (res.code === 0) { |
||||
|
this.$message({ |
||||
|
type: "success", |
||||
|
message: "删除成功!", |
||||
|
}); |
||||
|
|
||||
|
this.getDataList(); |
||||
|
} |
||||
|
}); |
||||
|
}, |
||||
|
// 树形结构递归 |
||||
|
digui(item) { |
||||
|
// 一层一层往下面执行,循环,直到不满足情况的条件下,会自动跳出这个递归方法,然后又到上面方法的源头处,开始执行下一个对象。。。 |
||||
|
if (item.govlist != null) { |
||||
|
// 因为三级联动的数据格式是value和label,所以需要自己手动添加,没有的忽略。 |
||||
|
item.govlist.forEach((ff) => { |
||||
|
// 这里就是判断他的children下面还有没有值,有的话我就要往下挖,就又开始自己调用自己了 |
||||
|
this.digui(ff); |
||||
|
}); |
||||
|
} else { |
||||
|
// 这里就是判断,如果我这一层的children下面没有东西的时候该做什么操作 |
||||
|
// 要添加value和label,否则会看不到标签名字和值 |
||||
|
// --------------------------分割线--------------------------------- |
||||
|
|
||||
|
item.govlist = item.child; |
||||
|
} |
||||
|
// 到这里为止,不能在这里打印数据,不然数据就是个断层的,因为在这里打印的数据是当前循环的这一层的数据,如果想看完整数据效果,那么就需要在递归方法第一次调用的地方打印需要递归的值,即上一个方法中。 |
||||
|
}, |
||||
|
// 新增按钮 |
||||
|
showAdd() { |
||||
|
this.dialogFormVisible = true; |
||||
|
console.log(this.dialogFormVisible); |
||||
|
}, |
||||
|
// 编辑按钮 |
||||
|
async showEdit(row) { |
||||
|
this.editFrom.outid = row.outid; |
||||
|
const res = await gettargetinfo(this.editFrom); |
||||
|
this.editAdd = res.data; |
||||
|
console.log("this.editAdd"); |
||||
|
console.log(this.editAdd); |
||||
|
this.editDialogFormVisible = true; |
||||
|
}, |
||||
|
// 开关状态监听 |
||||
|
async changeVal(val, id) { |
||||
|
this.switchFrom.id = id; |
||||
|
this.switchFrom.id = this.switchFrom.id.toString(); |
||||
|
if (val == 1) { |
||||
|
this.switchFrom.state = 1; |
||||
|
const res = await editstate(this.switchFrom); |
||||
|
if (res.code === 0) { |
||||
|
this.$message({ |
||||
|
type: "success", |
||||
|
message: "修改状态成功", |
||||
|
showClose: true, |
||||
|
}); |
||||
|
this.getDataList(); |
||||
|
} |
||||
|
} else { |
||||
|
this.switchFrom.state = 2; |
||||
|
const res = await editstate(this.switchFrom); |
||||
|
if (res.code === 0) { |
||||
|
this.$message({ |
||||
|
type: "success", |
||||
|
message: "修改状态成功", |
||||
|
showClose: true, |
||||
|
}); |
||||
|
this.getDataList(); |
||||
|
} |
||||
|
} |
||||
|
}, |
||||
|
// 重置搜索条件 |
||||
|
onReset() { |
||||
|
this.searchInfo = {}; |
||||
|
}, |
||||
|
// 条件搜索 |
||||
|
onSubmit() { |
||||
|
this.searchInfo.page = 1; |
||||
|
this.searchInfo.pagesize = 10; |
||||
|
this.getDataList(); |
||||
|
}, |
||||
|
// 日期时间戳转日期格式 |
||||
|
formatDate(nS) { |
||||
|
return new Date(parseInt(nS) * 1000) |
||||
|
.toLocaleString() |
||||
|
.replace(/:\d{1,2}$/, " "); |
||||
|
}, |
||||
|
|
||||
|
// 提交按钮 |
||||
|
async enterDialog() { |
||||
|
this.$refs.addForm.validate(async (valid) => { |
||||
|
if (valid) { |
||||
|
this.form.relevantDepartments = |
||||
|
this.form.relevantDepartments.toString(); |
||||
|
if (this.form.departmentsPost != null) { |
||||
|
this.form.departmentsPost = this.form.departmentsPost.map(String); |
||||
|
} |
||||
|
this.form.cycleattr = parseInt(this.form.cycleattr); |
||||
|
const res = await addposttarget(this.form); |
||||
|
if (res.code === 0) { |
||||
|
this.$message({ |
||||
|
type: "success", |
||||
|
message: "添加成功", |
||||
|
showClose: true, |
||||
|
}); |
||||
|
} |
||||
|
this.getDataList(); |
||||
|
this.closeDialog(); |
||||
|
} |
||||
|
}); |
||||
|
}, |
||||
|
|
||||
|
// 编辑提交按钮 |
||||
|
async editEnterDialog() { |
||||
|
this.$refs.editForm.validate(async (valid) => { |
||||
|
if (valid) { |
||||
|
if (this.editAdd.relevantdepartmentsmap != null) { |
||||
|
this.editAdd.relevantdepartments = |
||||
|
this.editAdd.relevantdepartmentsmap.map(String); |
||||
|
} |
||||
|
if (this.editAdd.relevantdepartmentsmap == null) { |
||||
|
this.editAdd.relevantdepartments = |
||||
|
this.editAdd.relevantdepartments.split(","); |
||||
|
} |
||||
|
if (this.editAdd.visiblerangedepartmap == null) { |
||||
|
this.editAdd.visiblerange = this.editAdd.visiblerange.split(","); |
||||
|
} |
||||
|
if (this.editAdd.visiblerangegroupmap == null) { |
||||
|
this.editAdd.visiblerangegroup = |
||||
|
this.editAdd.visiblerangegroup.split(","); |
||||
|
} |
||||
|
console.log(this.editAdd.relevantdepartments); |
||||
|
if (this.editAdd.share == 1) { |
||||
|
this.editAdd.relevantdepartments = []; |
||||
|
this.editAdd.relevantdepartmentsmap = []; |
||||
|
this.$delete(this.editAdd, "relevantdepartments"); |
||||
|
this.$delete(this.editAdd, "relevantdepartmentsmap"); |
||||
|
} |
||||
|
this.editAdd.report = this.editAdd.reportmap; |
||||
|
this.editAdd.dimension = this.editAdd.dimensionidstr; |
||||
|
this.editAdd.cycleattr = parseInt(this.editAdd.cycleattr); |
||||
|
const res = await eitetarget(this.editAdd); |
||||
|
if (res.code === 0) { |
||||
|
this.$message({ |
||||
|
type: "success", |
||||
|
message: "编辑成功", |
||||
|
showClose: true, |
||||
|
}); |
||||
|
} |
||||
|
this.getDataList(); |
||||
|
this.editCloseDialog(); |
||||
|
} |
||||
|
}); |
||||
|
}, |
||||
|
// 添加框关闭 |
||||
|
closeDialog() { |
||||
|
console.log("closeDialog"); |
||||
|
this.initForm(); |
||||
|
this.dialogFormVisible = false; |
||||
|
}, |
||||
|
// 修改框关闭 |
||||
|
editCloseDialog() { |
||||
|
this.editInitForm(); |
||||
|
this.editDialogFormVisible = false; |
||||
|
}, |
||||
|
// 添加重置表单 |
||||
|
initForm() { |
||||
|
console.log("initForm"); |
||||
|
this.$refs.addForm.resetFields(); |
||||
|
this.form = {}; |
||||
|
console.log(this.form); |
||||
|
}, |
||||
|
// 修改重置表单 |
||||
|
editInitForm() { |
||||
|
this.$refs.editForm.resetFields(); |
||||
|
this.editAdd = {}; |
||||
|
}, |
||||
|
// 改变pageSize |
||||
|
handleSizeChange(val) { |
||||
|
this.searchInfo.pagesize = val; |
||||
|
this.getDataList(this.searchInfo); |
||||
|
}, |
||||
|
// 改变page |
||||
|
handleCurrentChange(val) { |
||||
|
this.searchInfo.page = val; |
||||
|
this.getDataList(this.searchInfo); |
||||
|
}, |
||||
|
// 获取初始数据 |
||||
|
async getDataList() { |
||||
|
if (this.searchInfo.relevantdepartments != null) { |
||||
|
this.searchInfo.relevantdepartments = |
||||
|
this.searchInfo.relevantdepartments.map(String); |
||||
|
} |
||||
|
const res = await posttargetlist(this.searchInfo); |
||||
|
this.tableData = res.data.list; |
||||
|
this.total = res.data.total; |
||||
|
this.searchInfo.page = res.data.page; |
||||
|
this.searchInfo.pagesize = res.data.pageSize; |
||||
|
}, |
||||
|
}, |
||||
|
}; |
||||
|
</script> |
||||
|
|
||||
|
<style lang="scss" scoped> |
||||
|
.dashboard { |
||||
|
&-container { |
||||
|
margin: 30px; |
||||
|
} |
||||
|
&-text { |
||||
|
font-size: 30px; |
||||
|
line-height: 46px; |
||||
|
} |
||||
|
} |
||||
|
</style> |
||||
@ -0,0 +1,899 @@ |
|||||
|
<template> |
||||
|
<!-- 岗位考核指标录入 --> |
||||
|
<div class="dashboard-container"> |
||||
|
<div class="gva-search-box"> |
||||
|
<el-form ref="searchForm" :inline="true" :model="searchInfo"> |
||||
|
<el-form-item label="考核指标"> |
||||
|
<el-input |
||||
|
placeholder="请输入名称" |
||||
|
v-model="searchInfo.title" |
||||
|
clearable |
||||
|
> |
||||
|
</el-input> |
||||
|
</el-form-item> |
||||
|
<!-- <el-form-item label="是否通用" prop="share"> |
||||
|
<el-select v-model="searchInfo.share" placeholder="请选择是否通用"> |
||||
|
<el-option label="通用指标" :value=1></el-option> |
||||
|
<el-option label="个性指标" :value=2></el-option> |
||||
|
</el-select> |
||||
|
</el-form-item> --> |
||||
|
<!-- <el-form-item v-if="searchInfo.share==2" label="关联部门" prop="relevantdepartments"> |
||||
|
<el-cascader clearable v-model="searchInfo.relevantdepartments" :options="grouplist" :show-all-levels="false" :props="props"></el-cascader> |
||||
|
</el-form-item> --> |
||||
|
<!-- <el-form-item label="关联部门" prop="relevantdepartments"> |
||||
|
<el-cascader filterable clearable v-model="searchInfo.relevantdepartments" :options="grouplist" :show-all-levels="false" :props="props"></el-cascader> |
||||
|
</el-form-item> --> |
||||
|
<el-form-item label="指标维度" prop="dimension"> |
||||
|
<el-select |
||||
|
v-model="searchInfo.dimension" |
||||
|
clearable |
||||
|
placeholder="请选择考核维度" |
||||
|
> |
||||
|
<el-option |
||||
|
v-for="item in dutyclasslist" |
||||
|
:key="item.outId" |
||||
|
:label="item.title" |
||||
|
:value="item.outId" |
||||
|
> |
||||
|
</el-option> |
||||
|
</el-select> |
||||
|
</el-form-item> |
||||
|
<el-form-item label="指标性质" prop="type"> |
||||
|
<el-select v-model="searchInfo.type" 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.state" clearable placeholder="请选择状态"> |
||||
|
<el-option :value=1 label="正常">正常</el-option> |
||||
|
<el-option :value=2 label="禁止">禁止</el-option> |
||||
|
</el-select> |
||||
|
</el-form-item> --> |
||||
|
<el-form-item> |
||||
|
<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-form-item> |
||||
|
</el-form> |
||||
|
</div> |
||||
|
<div class="gva-table-box"> |
||||
|
<div class="gva-btn-list"> |
||||
|
<el-button |
||||
|
size="mini" |
||||
|
type="primary" |
||||
|
icon="el-icon-plus" |
||||
|
@click="showAdd()" |
||||
|
>新增</el-button |
||||
|
> |
||||
|
</div> |
||||
|
<el-container> |
||||
|
<!-- 左侧内容 --> |
||||
|
<el-aside |
||||
|
width="300px" |
||||
|
|
||||
|
style="border-right: 1px solid rgb(220, 223, 230);height: 750px" |
||||
|
> |
||||
|
<el-tree |
||||
|
:data="GovthreeList2" |
||||
|
:props="defaultProps1" |
||||
|
@node-click="handleNodeClick" |
||||
|
></el-tree> |
||||
|
</el-aside> |
||||
|
<el-aside |
||||
|
width="200px" |
||||
|
style="border-right: 1px solid rgb(220, 223, 230);height: 750px" |
||||
|
> |
||||
|
<el-tree |
||||
|
:data="postList" |
||||
|
:props="defaultProps1" |
||||
|
@node-click="NodePostClick" |
||||
|
></el-tree> |
||||
|
</el-aside> |
||||
|
<!-- 右侧内容 --> |
||||
|
<el-main style="padding: 10px"> |
||||
|
<div v-if="tableGWShow"> |
||||
|
<project></project> |
||||
|
</div> |
||||
|
<div v-if="tableBMShow"> |
||||
|
<el-table :data="tableData"> |
||||
|
<el-table-column align="left" label="考核指标" prop="title" /> |
||||
|
<el-table-column |
||||
|
align="left" |
||||
|
label="考核维度" |
||||
|
prop="dimensionname" |
||||
|
/> |
||||
|
<el-table-column align="left" label="指标性质"> |
||||
|
<template #default="scope"> |
||||
|
<div v-if="scope.row.type == 1">定性指标</div> |
||||
|
<div v-if="scope.row.type == 2">定量指标</div> |
||||
|
</template> |
||||
|
</el-table-column> |
||||
|
<!-- <el-table-column align="left" label="是否通用"> |
||||
|
<template #default="scope"> |
||||
|
<div v-if="scope.row.share==1">通用指标</div> |
||||
|
<div v-if="scope.row.share==2">个性指标</div> |
||||
|
</template> |
||||
|
</el-table-column> --> |
||||
|
<el-table-column align="left" label="单位" prop="unit" /> |
||||
|
<el-table-column align="left" label="考核周期" prop="outId"> |
||||
|
<template #default="scope"> |
||||
|
<el-tag v-if="scope.row.cycle == 1">班</el-tag> |
||||
|
<el-tag v-if="scope.row.cycle == 2">天</el-tag> |
||||
|
<el-tag v-if="scope.row.cycle == 3">周</el-tag> |
||||
|
<el-tag v-if="scope.row.cycle == 4">月</el-tag> |
||||
|
<el-tag v-if="scope.row.cycle == 5">季度</el-tag> |
||||
|
<el-tag v-if="scope.row.cycle == 6">年</el-tag> |
||||
|
</template> |
||||
|
</el-table-column> |
||||
|
<el-table-column align="left" label="计分方式" prop="outId"> |
||||
|
<template #default="scope"> |
||||
|
<el-tag v-if="scope.row.scoringmethod == 1">自动计分</el-tag> |
||||
|
<el-tag v-if="scope.row.scoringmethod == 2">手动计分</el-tag> |
||||
|
</template> |
||||
|
</el-table-column> |
||||
|
|
||||
|
<el-table-column align="left" label="关联岗位"> |
||||
|
<template #default="scope"> |
||||
|
<el-collapse> |
||||
|
<el-collapse-item title="详情" name="1"> |
||||
|
<div v-for="(iteam, index) in scope.row.postary"> |
||||
|
{{ iteam.name }} |
||||
|
</div> |
||||
|
</el-collapse-item> |
||||
|
</el-collapse> |
||||
|
<!-- <div v-for="item in scope.row.relevantdepartmentsmap" :key="item.key">{{item.title}}</div> --> |
||||
|
</template> |
||||
|
</el-table-column> |
||||
|
<el-table-column align="left" label="数据提交"> |
||||
|
<template #default="scope"> |
||||
|
<div v-for="item in scope.row.reportary" :key="item.key"> |
||||
|
{{ item.name }} |
||||
|
</div> |
||||
|
</template> |
||||
|
</el-table-column> |
||||
|
<el-table-column align="left" label="辅助计数" prop="cycleattr" /> |
||||
|
<el-table-column align="left" label="状态"> |
||||
|
<template #default="scope"> |
||||
|
<el-switch |
||||
|
inline-prompt |
||||
|
v-model="scope.row.state" |
||||
|
active-color="#13ce66" |
||||
|
inactive-color="#ff4949" |
||||
|
:active-value="1" |
||||
|
:inactive-value="2" |
||||
|
@change="changeVal($event, scope.row.id)" |
||||
|
/> |
||||
|
</template> |
||||
|
</el-table-column> |
||||
|
<el-table-column label="操作" width="200"> |
||||
|
<template #default="scope"> |
||||
|
<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> |
||||
|
<div class="gva-pagination"> |
||||
|
<el-pagination |
||||
|
@size-change="handleSizeChange" |
||||
|
@current-change="handleCurrentChange" |
||||
|
:page-sizes="[10, 30, 50, 100]" |
||||
|
:page-size="searchInfo.pagesize" |
||||
|
layout="total, sizes, prev, pager, next, jumper" |
||||
|
:total="total" |
||||
|
> |
||||
|
</el-pagination> |
||||
|
</div> |
||||
|
</div> |
||||
|
</el-main> |
||||
|
</el-container> |
||||
|
</div> |
||||
|
<!-- 新增弹框 --> |
||||
|
<el-dialog |
||||
|
:close-on-click-modal="false" |
||||
|
:visible.sync="dialogFormVisible" |
||||
|
:before-close="closeDialog" |
||||
|
title="新增" |
||||
|
width="30%" |
||||
|
> |
||||
|
<el-form ref="addForm" :model="form" label-width="150px"> |
||||
|
<el-form-item label="指标名称" prop="title"> |
||||
|
<el-input v-model="form.title" autocomplete="off" /> |
||||
|
</el-form-item> |
||||
|
<!-- <el-form-item label="是否通用" prop="share"> |
||||
|
<el-select v-model="form.share" placeholder="请选择是否通用"> |
||||
|
<el-option label="通用指标" :value=1></el-option> |
||||
|
<el-option label="个性指标" :value=2></el-option> |
||||
|
</el-select> |
||||
|
</el-form-item> --> |
||||
|
<!-- <el-form-item v-if="form.share==2" label="关联部门" prop="relevantdepartments"> |
||||
|
<el-cascader clearable v-model="form.relevantdepartments" :options="grouplist" :show-all-levels="false" :props="props"></el-cascader> |
||||
|
</el-form-item> --> |
||||
|
<el-form-item label="关联部门" prop="relevantDepartments"> |
||||
|
<el-cascader |
||||
|
filterable |
||||
|
clearable |
||||
|
v-model="form.relevantDepartments" |
||||
|
:options="grouplist" |
||||
|
:show-all-levels="false" |
||||
|
:props="props" |
||||
|
@change="departChange" |
||||
|
></el-cascader> |
||||
|
</el-form-item> |
||||
|
<el-form-item label="相关岗位" prop="departmentsPost"> |
||||
|
<el-select |
||||
|
clearable |
||||
|
multiple |
||||
|
v-model="form.departmentsPost" |
||||
|
filterable |
||||
|
placeholder="请选择" |
||||
|
> |
||||
|
<el-option |
||||
|
v-for="item in postListAdd" |
||||
|
:key="item.id" |
||||
|
:label="item.name" |
||||
|
:value="item.id" |
||||
|
> |
||||
|
</el-option> |
||||
|
</el-select> |
||||
|
</el-form-item> |
||||
|
<el-form-item label="指标维度" prop="dimension"> |
||||
|
<el-select |
||||
|
v-model="form.dimension" |
||||
|
clearable |
||||
|
placeholder="请选择考核维度" |
||||
|
> |
||||
|
<el-option |
||||
|
v-for="item in dutyclasslist" |
||||
|
:key="item.outId" |
||||
|
:label="item.title" |
||||
|
:value="item.outId" |
||||
|
> |
||||
|
</el-option> |
||||
|
</el-select> |
||||
|
</el-form-item> |
||||
|
<el-form-item label="指标性质" prop="type"> |
||||
|
<el-select v-model="form.type" placeholder="请选择指标性质"> |
||||
|
<el-option label="定性指标" :value="1"></el-option> |
||||
|
<el-option label="定量指标" :value="2"></el-option> |
||||
|
</el-select> |
||||
|
</el-form-item> |
||||
|
<el-form-item label="计量单位" prop="unites"> |
||||
|
<el-input v-model="form.unit" autocomplete="off" /> |
||||
|
</el-form-item> |
||||
|
<el-form-item label="数据提交" prop="report"> |
||||
|
<!-- <el-cascader clearable v-model="form.report" :options="grouplistBackup" :show-all-levels="false" :props="userProps"></el-cascader> --> |
||||
|
<el-cascader |
||||
|
filterable |
||||
|
clearable |
||||
|
v-model="form.report" |
||||
|
:options="grouplistBackup" |
||||
|
:show-all-levels="false" |
||||
|
:props="userProps" |
||||
|
></el-cascader> |
||||
|
</el-form-item> |
||||
|
<el-form-item label="辅助计数" prop="cycleattr"> |
||||
|
<el-input v-model="form.cycleattr" autocomplete="off" /> |
||||
|
</el-form-item> |
||||
|
<el-form-item label="计分方式" prop="type"> |
||||
|
<el-select v-model="form.scoringmethod" placeholder="请选择指标性质"> |
||||
|
<el-option label="自动计分" :value="1"></el-option> |
||||
|
<el-option label="手动计分" :value="2"></el-option> |
||||
|
</el-select> |
||||
|
</el-form-item> |
||||
|
<el-form-item label="考核周期" prop="cycle"> |
||||
|
<el-select v-model="form.cycle" placeholder="请选择考核周期"> |
||||
|
<el-option |
||||
|
v-for="item in options" |
||||
|
:key="item.value" |
||||
|
:label="item.label" |
||||
|
:value="item.value" |
||||
|
> |
||||
|
</el-option> |
||||
|
</el-select> |
||||
|
</el-form-item> |
||||
|
</el-form> |
||||
|
<template #footer> |
||||
|
<div class="dialog-footer"> |
||||
|
<el-button size="small" @click="closeDialog">取 消</el-button> |
||||
|
<el-button size="small" type="primary" @click="enterDialog" |
||||
|
>确 定</el-button |
||||
|
> |
||||
|
</div> |
||||
|
</template> |
||||
|
</el-dialog> |
||||
|
<!-- 编辑弹框 --> |
||||
|
<el-dialog |
||||
|
:close-on-click-modal="false" |
||||
|
:visible.sync="editDialogFormVisible" |
||||
|
:before-close="editCloseDialog" |
||||
|
title="修改" |
||||
|
width="20%" |
||||
|
> |
||||
|
<el-form |
||||
|
ref="editForm" |
||||
|
:model="editAdd" |
||||
|
:rules="editRules" |
||||
|
label-width="150px" |
||||
|
> |
||||
|
<el-form-item label="指标名称" prop="title"> |
||||
|
<el-input v-model="editAdd.title" autocomplete="off" /> |
||||
|
</el-form-item> |
||||
|
<!-- <el-form-item label="是否通用" prop="share"> |
||||
|
<el-select v-model="editAdd.share" placeholder="请选择是否通用"> |
||||
|
<el-option label="通用指标" :value=1></el-option> |
||||
|
<el-option label="个性指标" :value=2></el-option> |
||||
|
</el-select> |
||||
|
</el-form-item> --> |
||||
|
|
||||
|
<!-- <el-form-item v-if="editAdd.share==2" label="关联部门" prop="relevantdepartmentsmap"> |
||||
|
<el-cascader clearable v-model="editAdd.relevantdepartmentsmap" :options="grouplist" :show-all-levels="false" :props="props"></el-cascader> |
||||
|
</el-form-item> --> |
||||
|
<el-form-item label="关联部门" prop="relevantdepartmentsmap"> |
||||
|
<el-cascader |
||||
|
filterable |
||||
|
clearable |
||||
|
v-model="editAdd.relevantdepartmentsmap" |
||||
|
:options="grouplist" |
||||
|
:show-all-levels="false" |
||||
|
:props="props" |
||||
|
></el-cascader> |
||||
|
</el-form-item> |
||||
|
<el-form-item label="指标维度" prop="dimensionidstr"> |
||||
|
<el-select |
||||
|
v-model="editAdd.dimensionidstr" |
||||
|
clearable |
||||
|
placeholder="请选择考核维度" |
||||
|
> |
||||
|
<el-option |
||||
|
v-for="item in dutyclasslist" |
||||
|
:key="item.outId" |
||||
|
:label="item.title" |
||||
|
:value="item.outId" |
||||
|
> |
||||
|
</el-option> |
||||
|
</el-select> |
||||
|
</el-form-item> |
||||
|
<el-form-item label="指标性质" prop="type"> |
||||
|
<el-select v-model="editAdd.type" placeholder="请选择指标性质"> |
||||
|
<el-option label="定性指标" :value="1"></el-option> |
||||
|
<el-option label="定量指标" :value="2"></el-option> |
||||
|
</el-select> |
||||
|
</el-form-item> |
||||
|
<el-form-item label="计量单位" prop="unites"> |
||||
|
<el-input v-model="editAdd.unites" autocomplete="off" /> |
||||
|
</el-form-item> |
||||
|
|
||||
|
<el-form-item label="数据提交" prop="report"> |
||||
|
<el-cascader |
||||
|
filterable |
||||
|
clearable |
||||
|
v-model="editAdd.reportmap" |
||||
|
:options="grouplistBackup" |
||||
|
:show-all-levels="false" |
||||
|
:props="userProps" |
||||
|
></el-cascader> |
||||
|
</el-form-item> |
||||
|
<el-form-item label="辅助计数" prop="cycleattr"> |
||||
|
<el-input v-model="editAdd.cycleattr" autocomplete="off" /> |
||||
|
</el-form-item> |
||||
|
<el-form-item label="计分方式" prop="type"> |
||||
|
<el-select |
||||
|
v-model="editAdd.scoringmethod" |
||||
|
placeholder="请选择指标性质" |
||||
|
> |
||||
|
<el-option label="自动计分" :value="1"></el-option> |
||||
|
<el-option label="手动计分" :value="2"></el-option> |
||||
|
</el-select> |
||||
|
</el-form-item> |
||||
|
<el-form-item label="考核周期" prop="cycle"> |
||||
|
<el-select v-model="editAdd.cycle" placeholder="请选择考核周期"> |
||||
|
<el-option |
||||
|
v-for="item in options" |
||||
|
:key="item.value" |
||||
|
:label="item.label" |
||||
|
:value="item.value" |
||||
|
> |
||||
|
</el-option> |
||||
|
</el-select> |
||||
|
</el-form-item> |
||||
|
</el-form> |
||||
|
<template #footer> |
||||
|
<div class="dialog-footer"> |
||||
|
<el-button size="small" @click="editCloseDialog">取 消</el-button> |
||||
|
<el-button size="small" type="primary" @click="editEnterDialog" |
||||
|
>确 定</el-button |
||||
|
> |
||||
|
</div> |
||||
|
</template> |
||||
|
</el-dialog> |
||||
|
</div> |
||||
|
</template> |
||||
|
|
||||
|
<script> |
||||
|
import { govthree, positionlist } from "@/api/personnel/post"; |
||||
|
import { dutyclasslist } from "@/api/duty/dimension"; |
||||
|
import project from "@/views/basicInfo/project.vue"; |
||||
|
import { |
||||
|
posttargetlist, |
||||
|
addtarget, |
||||
|
gettargetinfo, |
||||
|
eiteassessinfo, |
||||
|
eitetarget, |
||||
|
deltarget, |
||||
|
editposttarget, |
||||
|
editstate, |
||||
|
addposttarget, |
||||
|
} from "@/api/duty/project"; |
||||
|
import { getgroupdepartmap, getgroupuser } from "@/api/duty/group"; |
||||
|
export default { |
||||
|
components: { |
||||
|
project, |
||||
|
}, |
||||
|
name: "Dashboard", |
||||
|
props:['gwId'], |
||||
|
data() { |
||||
|
return { |
||||
|
tableGWShow: true, |
||||
|
tableBMShow: false, |
||||
|
GovthreeList2: [], |
||||
|
defaultProps1: { |
||||
|
children: "child", |
||||
|
label: "name", |
||||
|
}, |
||||
|
grouplistBackup: [], |
||||
|
grouplist: [], |
||||
|
// 1:班;2:天;3:周;4:月;5:季度;6:年 |
||||
|
options: [ |
||||
|
// { |
||||
|
// value: 1, |
||||
|
// label: '班' |
||||
|
// }, { |
||||
|
// value: 2, |
||||
|
// label: '天' |
||||
|
// }, { |
||||
|
// value: 3, |
||||
|
// label: '周' |
||||
|
// }, |
||||
|
{ |
||||
|
value: 4, |
||||
|
label: "月", |
||||
|
}, |
||||
|
{ |
||||
|
value: 5, |
||||
|
label: "季度", |
||||
|
}, |
||||
|
{ |
||||
|
value: 6, |
||||
|
label: "年", |
||||
|
}, |
||||
|
], |
||||
|
props: { |
||||
|
checkStrictly: true, |
||||
|
value: "id", |
||||
|
label: "name", |
||||
|
children: "children", |
||||
|
emitPath: false, |
||||
|
// multiple: true |
||||
|
}, |
||||
|
userProps: { |
||||
|
value: "key", |
||||
|
label: "name", |
||||
|
children: "govlist", |
||||
|
emitPath: false, |
||||
|
multiple: true, |
||||
|
}, |
||||
|
dutyclasslist: {}, |
||||
|
searchList: { |
||||
|
page: 1, |
||||
|
pagesize: 10000, |
||||
|
}, |
||||
|
// 查询详情的数据 |
||||
|
editFrom: {}, |
||||
|
// 修改状态提交数据 |
||||
|
switchFrom: {}, |
||||
|
// 删除数据提交 |
||||
|
deleFrom: {}, |
||||
|
// 编辑时数据 |
||||
|
editAdd: { |
||||
|
unittitle: "", |
||||
|
parentId: "", |
||||
|
}, |
||||
|
assessList: {}, |
||||
|
// 添加数据 |
||||
|
form: { |
||||
|
share: 2, |
||||
|
cycleattr: 1, |
||||
|
scoringmethod: 1, |
||||
|
}, |
||||
|
// 弹窗变量 |
||||
|
dialogFormVisible: false, |
||||
|
// 修改弹窗 |
||||
|
editDialogFormVisible: false, |
||||
|
total: 0, |
||||
|
postListAdd: [], |
||||
|
postList: [], |
||||
|
tableData: [], |
||||
|
// 条件查询变量 |
||||
|
searchInfo: { |
||||
|
page: 1, |
||||
|
pagesize: 10, |
||||
|
}, |
||||
|
// 条件查询变量 |
||||
|
abc: { |
||||
|
aaa: "111", |
||||
|
bbb: "222", |
||||
|
}, |
||||
|
// 添加时验证规则 |
||||
|
rules: { |
||||
|
title: [{ required: true, message: "必填", trigger: "blur" }], |
||||
|
type: [{ required: true, message: "必填", trigger: "blur" }], |
||||
|
// share: [{ required: true, message: '必填', trigger: 'blur' }], |
||||
|
relevantdepartments: [ |
||||
|
{ required: true, message: "必填", trigger: "blur" }, |
||||
|
], |
||||
|
dimension: [{ required: true, message: "必填", trigger: "blur" }], |
||||
|
report: [{ required: true, message: "必填", trigger: "blur" }], |
||||
|
unites: [{ required: true, message: "必填", trigger: "blur" }], |
||||
|
cycle: [{ required: true, message: "必填", trigger: "blur" }], |
||||
|
cycleattr: [{ required: true, message: "必填", trigger: "blur" }], |
||||
|
}, |
||||
|
editRules: { |
||||
|
title: [{ required: true, message: "必填", trigger: "blur" }], |
||||
|
type: [{ required: true, message: "必填", trigger: "blur" }], |
||||
|
// share: [{ required: true, message: '必填', trigger: 'blur' }], |
||||
|
relevantdepartments: [ |
||||
|
{ required: true, message: "必填", trigger: "blur" }, |
||||
|
], |
||||
|
dimension: [{ required: true, message: "必填", trigger: "blur" }], |
||||
|
report: [{ required: true, message: "必填", trigger: "blur" }], |
||||
|
unites: [{ required: true, message: "必填", trigger: "blur" }], |
||||
|
cycle: [{ required: true, message: "必填", trigger: "blur" }], |
||||
|
cycleattr: [{ required: true, message: "必填", trigger: "blur" }], |
||||
|
}, |
||||
|
}; |
||||
|
}, |
||||
|
created() { |
||||
|
console.log(this.$store.state.user.token); |
||||
|
if (this.$store.state.user.token == "") { |
||||
|
this.$router.push("/login"); |
||||
|
} |
||||
|
// 页面渲染时获取初始数据 |
||||
|
this.getDataList(); |
||||
|
this.getDutyclasslist(); |
||||
|
this.getSystemadminlist(); |
||||
|
this.getGrouplist(); |
||||
|
this.getGovthree2(); |
||||
|
console.log("this.gwId") |
||||
|
console.log(this.gwId) |
||||
|
}, |
||||
|
watch:{ |
||||
|
gwId(){ |
||||
|
console.log("bmid变化") |
||||
|
console.log(this.gwId) |
||||
|
// const list = [] |
||||
|
// list.push(this.gwId) |
||||
|
this.searchInfo.departmentsPost=this.gwId.toString() |
||||
|
this.getDataList() |
||||
|
}, |
||||
|
}, |
||||
|
methods: { |
||||
|
// 点击岗位列表 |
||||
|
NodePostClick(val) { |
||||
|
console.log(val); |
||||
|
}, |
||||
|
// 获取岗位 |
||||
|
async getPost(val) { |
||||
|
const from = { |
||||
|
organization: val.toString(), |
||||
|
page: 1, |
||||
|
pagesize: 10, |
||||
|
}; |
||||
|
const res = await positionlist(from); |
||||
|
this.postList = res.data.list; |
||||
|
}, |
||||
|
// 点击行政组织树 |
||||
|
handleNodeClick(val) { |
||||
|
// this.searchInfo.organization=val.id |
||||
|
// this.searchInfo.organization=this.searchInfo.organization.toString() |
||||
|
this.getPost(val.id); |
||||
|
console.log(val); |
||||
|
}, |
||||
|
// 添加时点击行政组织 |
||||
|
async departChange(val) { |
||||
|
console.log(val); |
||||
|
// this.searchInfo.organization=val.id |
||||
|
// this.searchInfo.organization=this.searchInfo.organization.toString() |
||||
|
const from = { |
||||
|
organization: val.toString(), |
||||
|
page: 1, |
||||
|
pagesize: 10, |
||||
|
}; |
||||
|
const res = await positionlist(from); |
||||
|
this.postListAdd = res.data.list; |
||||
|
console.log(val); |
||||
|
}, |
||||
|
// 获取行政组织二级树 |
||||
|
async getGovthree2() { |
||||
|
const res = await govthree(); |
||||
|
this.GovthreeList2 = res.data[0].child; |
||||
|
console.log("this.GovthreeList2"); |
||||
|
console.log(res.data[0].child); |
||||
|
}, |
||||
|
// 获取员工列表 |
||||
|
async getSystemadminlist() { |
||||
|
const from = { |
||||
|
level: 4, |
||||
|
}; |
||||
|
const res = await getgroupuser(from); |
||||
|
this.grouplistBackup = res.data; |
||||
|
this.grouplistBackup.forEach((item) => { |
||||
|
if (item.govlist != null) { |
||||
|
// 即:this.digui(item);在这地方添加的 |
||||
|
item.govlist.forEach((items) => { |
||||
|
// 下面的就是执行递归的方法,因为我是从第二层才开始需要往下挖的,所以这里多了个forEach,如果从第一层起,从item就好了,即:this.digui(item);在上面添加 |
||||
|
this.digui(items); // 这里是源头,把一个对象开始递归,开始循环 |
||||
|
// 如果想看完整数据,那么是在这里打印数据哦 |
||||
|
console.log(items, "看我查看完整的数据哦"); |
||||
|
// 因为上一步递归时,就已经把循环children的动作做完了,这里是验收递归方法的地方。 |
||||
|
}); |
||||
|
} else { |
||||
|
item.govlist = item.child; |
||||
|
// 如果第一层没有子项做的操作。。。。。 |
||||
|
} |
||||
|
}); |
||||
|
console.log(this.grouplistBackup); |
||||
|
}, |
||||
|
// 获取部门 |
||||
|
async getGrouplist() { |
||||
|
const res = await getgroupdepartmap(); |
||||
|
this.grouplist = res.data; |
||||
|
}, |
||||
|
// 获取考核纬度列表 |
||||
|
async getDutyclasslist() { |
||||
|
const res = await dutyclasslist(this.searchList); |
||||
|
this.dutyclasslist = res.data.list; |
||||
|
}, |
||||
|
//删除操作 |
||||
|
async deleteOperate(row) { |
||||
|
this.$confirm("此操作将永久删除, 是否继续?", "提示", { |
||||
|
confirmButtonText: "确定", |
||||
|
cancelButtonText: "取消", |
||||
|
type: "warning", |
||||
|
}).then(async () => { |
||||
|
this.deleFrom.state = 3; |
||||
|
this.deleFrom.id = row.id; |
||||
|
this.deleFrom.id = this.deleFrom.id.toString(); |
||||
|
const res = await editstate(this.deleFrom); |
||||
|
if (res.code === 0) { |
||||
|
this.$message({ |
||||
|
type: "success", |
||||
|
message: "删除成功!", |
||||
|
}); |
||||
|
|
||||
|
this.getDataList(); |
||||
|
} |
||||
|
}); |
||||
|
}, |
||||
|
// 树形结构递归 |
||||
|
digui(item) { |
||||
|
// 一层一层往下面执行,循环,直到不满足情况的条件下,会自动跳出这个递归方法,然后又到上面方法的源头处,开始执行下一个对象。。。 |
||||
|
if (item.govlist != null) { |
||||
|
// 因为三级联动的数据格式是value和label,所以需要自己手动添加,没有的忽略。 |
||||
|
item.govlist.forEach((ff) => { |
||||
|
// 这里就是判断他的children下面还有没有值,有的话我就要往下挖,就又开始自己调用自己了 |
||||
|
this.digui(ff); |
||||
|
}); |
||||
|
} else { |
||||
|
// 这里就是判断,如果我这一层的children下面没有东西的时候该做什么操作 |
||||
|
// 要添加value和label,否则会看不到标签名字和值 |
||||
|
// --------------------------分割线--------------------------------- |
||||
|
|
||||
|
item.govlist = item.child; |
||||
|
} |
||||
|
// 到这里为止,不能在这里打印数据,不然数据就是个断层的,因为在这里打印的数据是当前循环的这一层的数据,如果想看完整数据效果,那么就需要在递归方法第一次调用的地方打印需要递归的值,即上一个方法中。 |
||||
|
}, |
||||
|
// 新增按钮 |
||||
|
showAdd() { |
||||
|
this.dialogFormVisible = true; |
||||
|
console.log(this.dialogFormVisible); |
||||
|
}, |
||||
|
// 编辑按钮 |
||||
|
async showEdit(row) { |
||||
|
this.editFrom.outid = row.outid; |
||||
|
const res = await gettargetinfo(this.editFrom); |
||||
|
this.editAdd = res.data; |
||||
|
console.log("this.editAdd"); |
||||
|
console.log(this.editAdd); |
||||
|
this.editDialogFormVisible = true; |
||||
|
}, |
||||
|
// 开关状态监听 |
||||
|
async changeVal(val, id) { |
||||
|
this.switchFrom.id = id; |
||||
|
this.switchFrom.id = this.switchFrom.id.toString(); |
||||
|
if (val == 1) { |
||||
|
this.switchFrom.state = 1; |
||||
|
const res = await editstate(this.switchFrom); |
||||
|
if (res.code === 0) { |
||||
|
this.$message({ |
||||
|
type: "success", |
||||
|
message: "修改状态成功", |
||||
|
showClose: true, |
||||
|
}); |
||||
|
this.getDataList(); |
||||
|
} |
||||
|
} else { |
||||
|
this.switchFrom.state = 2; |
||||
|
const res = await editstate(this.switchFrom); |
||||
|
if (res.code === 0) { |
||||
|
this.$message({ |
||||
|
type: "success", |
||||
|
message: "修改状态成功", |
||||
|
showClose: true, |
||||
|
}); |
||||
|
this.getDataList(); |
||||
|
} |
||||
|
} |
||||
|
}, |
||||
|
// 重置搜索条件 |
||||
|
onReset() { |
||||
|
this.searchInfo = {}; |
||||
|
}, |
||||
|
// 条件搜索 |
||||
|
onSubmit() { |
||||
|
this.searchInfo.page = 1; |
||||
|
this.searchInfo.pagesize = 10; |
||||
|
this.getDataList(); |
||||
|
}, |
||||
|
// 日期时间戳转日期格式 |
||||
|
formatDate(nS) { |
||||
|
return new Date(parseInt(nS) * 1000) |
||||
|
.toLocaleString() |
||||
|
.replace(/:\d{1,2}$/, " "); |
||||
|
}, |
||||
|
|
||||
|
// 提交按钮 |
||||
|
async enterDialog() { |
||||
|
this.$refs.addForm.validate(async (valid) => { |
||||
|
if (valid) { |
||||
|
this.form.relevantDepartments = |
||||
|
this.form.relevantDepartments.toString(); |
||||
|
if (this.form.departmentsPost != null) { |
||||
|
this.form.departmentsPost = this.form.departmentsPost.map(String); |
||||
|
} |
||||
|
this.form.cycleattr = parseInt(this.form.cycleattr); |
||||
|
const res = await addposttarget(this.form); |
||||
|
if (res.code === 0) { |
||||
|
this.$message({ |
||||
|
type: "success", |
||||
|
message: "添加成功", |
||||
|
showClose: true, |
||||
|
}); |
||||
|
} |
||||
|
this.getDataList(); |
||||
|
this.closeDialog(); |
||||
|
} |
||||
|
}); |
||||
|
}, |
||||
|
|
||||
|
// 编辑提交按钮 |
||||
|
async editEnterDialog() { |
||||
|
this.$refs.editForm.validate(async (valid) => { |
||||
|
if (valid) { |
||||
|
if (this.editAdd.relevantdepartmentsmap != null) { |
||||
|
this.editAdd.relevantdepartments = |
||||
|
this.editAdd.relevantdepartmentsmap.map(String); |
||||
|
} |
||||
|
if (this.editAdd.relevantdepartmentsmap == null) { |
||||
|
this.editAdd.relevantdepartments = |
||||
|
this.editAdd.relevantdepartments.split(","); |
||||
|
} |
||||
|
if (this.editAdd.visiblerangedepartmap == null) { |
||||
|
this.editAdd.visiblerange = this.editAdd.visiblerange.split(","); |
||||
|
} |
||||
|
if (this.editAdd.visiblerangegroupmap == null) { |
||||
|
this.editAdd.visiblerangegroup = |
||||
|
this.editAdd.visiblerangegroup.split(","); |
||||
|
} |
||||
|
console.log(this.editAdd.relevantdepartments); |
||||
|
if (this.editAdd.share == 1) { |
||||
|
this.editAdd.relevantdepartments = []; |
||||
|
this.editAdd.relevantdepartmentsmap = []; |
||||
|
this.$delete(this.editAdd, "relevantdepartments"); |
||||
|
this.$delete(this.editAdd, "relevantdepartmentsmap"); |
||||
|
} |
||||
|
this.editAdd.report = this.editAdd.reportmap; |
||||
|
this.editAdd.dimension = this.editAdd.dimensionidstr; |
||||
|
this.editAdd.cycleattr = parseInt(this.editAdd.cycleattr); |
||||
|
const res = await eitetarget(this.editAdd); |
||||
|
if (res.code === 0) { |
||||
|
this.$message({ |
||||
|
type: "success", |
||||
|
message: "编辑成功", |
||||
|
showClose: true, |
||||
|
}); |
||||
|
} |
||||
|
this.getDataList(); |
||||
|
this.editCloseDialog(); |
||||
|
} |
||||
|
}); |
||||
|
}, |
||||
|
// 添加框关闭 |
||||
|
closeDialog() { |
||||
|
console.log("closeDialog"); |
||||
|
this.initForm(); |
||||
|
this.dialogFormVisible = false; |
||||
|
}, |
||||
|
// 修改框关闭 |
||||
|
editCloseDialog() { |
||||
|
this.editInitForm(); |
||||
|
this.editDialogFormVisible = false; |
||||
|
}, |
||||
|
// 添加重置表单 |
||||
|
initForm() { |
||||
|
console.log("initForm"); |
||||
|
this.$refs.addForm.resetFields(); |
||||
|
this.form = {}; |
||||
|
console.log(this.form); |
||||
|
}, |
||||
|
// 修改重置表单 |
||||
|
editInitForm() { |
||||
|
this.$refs.editForm.resetFields(); |
||||
|
this.editAdd = {}; |
||||
|
}, |
||||
|
// 改变pageSize |
||||
|
handleSizeChange(val) { |
||||
|
this.searchInfo.pagesize = val; |
||||
|
this.getDataList(this.searchInfo); |
||||
|
}, |
||||
|
// 改变page |
||||
|
handleCurrentChange(val) { |
||||
|
this.searchInfo.page = val; |
||||
|
this.getDataList(this.searchInfo); |
||||
|
}, |
||||
|
// 获取初始数据 |
||||
|
async getDataList() { |
||||
|
if (this.searchInfo.relevantdepartments != null) { |
||||
|
this.searchInfo.relevantdepartments = |
||||
|
this.searchInfo.relevantdepartments.map(String); |
||||
|
} |
||||
|
const res = await posttargetlist(this.searchInfo); |
||||
|
this.tableData = res.data.list; |
||||
|
this.total = res.data.total; |
||||
|
this.searchInfo.page = res.data.page; |
||||
|
this.searchInfo.pagesize = res.data.pageSize; |
||||
|
}, |
||||
|
}, |
||||
|
}; |
||||
|
</script> |
||||
|
|
||||
|
<style lang="scss" scoped> |
||||
|
.dashboard { |
||||
|
&-container { |
||||
|
margin: 30px; |
||||
|
} |
||||
|
&-text { |
||||
|
font-size: 30px; |
||||
|
line-height: 46px; |
||||
|
} |
||||
|
} |
||||
|
</style> |
||||
Loading…
Reference in new issue