}, | }, | ||||
editPoints(params){ | editPoints(params){ | ||||
return axios.post('/rigidityconstraintitem/updateItemDeduction',params) | return axios.post('/rigidityconstraintitem/updateItemDeduction',params) | ||||
}, | |||||
getItemDeptScoreList(id){ | |||||
return axios.get('/rigidityconstraintitem/getItemDeptScoreList/'+id) | |||||
}, | |||||
setItemDeptScore(data){ | |||||
return axios.post('/rigidityconstraintitem/setItemDeptScore',data) | |||||
} | } | ||||
} | } |
}, | }, | ||||
editPoints(params){ | editPoints(params){ | ||||
return axios.post('/specialpoweritem/updateItemBonus',params) | return axios.post('/specialpoweritem/updateItemBonus',params) | ||||
}, | |||||
getItemDeptScoreList(id){ | |||||
return axios.get('/specialpoweritem/getItemDeptScoreList/'+id) | |||||
}, | |||||
setItemDeptScore(data){ | |||||
return axios.post('/specialpoweritem/setItemDeptScore',data) | |||||
} | } | ||||
} | } |
}, | }, | ||||
getReportDataSummaryAttach(){ | getReportDataSummaryAttach(){ | ||||
return axios.get('/statistics/getReportDataSummaryAttach') | return axios.get('/statistics/getReportDataSummaryAttach') | ||||
}, | |||||
setPoint(type){ | |||||
return axios.post(`/${type}/setItemDeptPoints`,{"rule": "6:4"}) | |||||
} | } | ||||
} | } |
export default { | export default { | ||||
version: '1.0', | version: '1.0', | ||||
name: 'JNDZ考核管理系统', // 项目名称 | name: 'JNDZ考核管理系统', // 项目名称 | ||||
baseURL: 'http://121.40.249.52:9031/api/', // 正式环境 | |||||
// baseURL:'http://47.98.157.120:9031/api/', //测试环境 | |||||
// baseURL: 'http://121.40.249.52:9031/api/', // 正式环境 | |||||
baseURL:'http://47.98.157.120:9031/api/', //测试环境 | |||||
whiteList: ['/login', '/forget'], // 路由白名单(不需要登录的) | whiteList: ['/login', '/forget'], // 路由白名单(不需要登录的) | ||||
keepAliveList: [], // 需要缓存的组件名称 | keepAliveList: [], // 需要缓存的组件名称 | ||||
menuUrl: '/index/getMenuList', // 菜单数据接口 | menuUrl: '/index/getMenuList', // 菜单数据接口 |
@click="emitExport" | @click="emitExport" | ||||
>导出</el-button | >导出</el-button | ||||
> | > | ||||
<el-button | |||||
v-if="baseUrl" | |||||
size="small" | |||||
type="success" | |||||
@click="setPoint" | |||||
:loading="editPoint" | |||||
>评分</el-button | |||||
> | |||||
</el-form-item> | </el-form-item> | ||||
</el-form> | </el-form> | ||||
<!-- <div class="operating" v-if="showExport"> | <!-- <div class="operating" v-if="showExport"> | ||||
import "@riophae/vue-treeselect/dist/vue-treeselect.css"; | import "@riophae/vue-treeselect/dist/vue-treeselect.css"; | ||||
import Treeselect from "@riophae/vue-treeselect"; // 下拉树 | import Treeselect from "@riophae/vue-treeselect"; // 下拉树 | ||||
import { mapGetters, mapActions } from "vuex"; | import { mapGetters, mapActions } from "vuex"; | ||||
import api from "@/api/second/taskSummary" | |||||
export default { | export default { | ||||
props: { | props: { | ||||
type: { | type: { | ||||
return false; | return false; | ||||
}, | }, | ||||
}, | }, | ||||
baseUrl:{ | |||||
type:String, | |||||
default(){ | |||||
return '' | |||||
} | |||||
} | |||||
}, | }, | ||||
components: { | components: { | ||||
Treeselect, | Treeselect, | ||||
content: "", | content: "", | ||||
leaderUnit: "", | leaderUnit: "", | ||||
}, | }, | ||||
editPoint:false | |||||
}; | }; | ||||
}, | }, | ||||
created() { | created() { | ||||
emitExport() { | emitExport() { | ||||
this.$emit("export", this.searchParams); | this.$emit("export", this.searchParams); | ||||
}, | }, | ||||
setPoint(){ | |||||
this.editPoint=true | |||||
api.setPoint(this.baseUrl).then(res=>{ | |||||
console.log(res.data) | |||||
if(res.data.code===0){ | |||||
this.$message({ | |||||
type:"success", | |||||
message:"修改成功" | |||||
}) | |||||
}else{ | |||||
this.$message.error(res.data.msg) | |||||
} | |||||
}).catch(e=>{ | |||||
this.$message.error(e.message); | |||||
}).finally(()=>{ | |||||
this.editPoint=false | |||||
}) | |||||
} | |||||
}, | }, | ||||
computed: { | computed: { | ||||
...mapGetters(["quota1", "quota2", "formatDep", "quota"]), | ...mapGetters(["quota1", "quota2", "formatDep", "quota"]), | ||||
<style scoped> | <style scoped> | ||||
.action >>> .el-form-item__content{ | .action >>> .el-form-item__content{ | ||||
width:200px | |||||
width:280px | |||||
} | } | ||||
</style> | </style> |
</el-row> | </el-row> | ||||
</div> | </div> | ||||
</div> | </div> | ||||
<el-row class="edit"> | |||||
<el-row class="edit" v-if="type == 1"> | |||||
<el-col :span="4" class="edit-title" | <el-col :span="4" class="edit-title" | ||||
><span style="color: red">* </span>分值:</el-col | ><span style="color: red">* </span>分值:</el-col | ||||
> | > | ||||
></el-input | ></el-input | ||||
></el-col> | ></el-col> | ||||
</el-row> | </el-row> | ||||
<el-row class="edit" v-if="type == 2"> | |||||
<el-col :span="4" class="edit-title">分值:</el-col> | |||||
<el-col :span="7" | |||||
><el-input | |||||
placeholder="请输入分值" | |||||
v-model="form.points" | |||||
></el-input | |||||
></el-col> | |||||
</el-row> | |||||
<!-- </el-scrollbar> --> | <!-- </el-scrollbar> --> | ||||
<div slot="footer"> | <div slot="footer"> | ||||
<el-button type="primary" @click="add">确定</el-button> | <el-button type="primary" @click="add">确定</el-button> | ||||
} | } | ||||
} | } | ||||
if (param == "points") { | if (param == "points") { | ||||
if (!form[param]) { | |||||
this.$message.error("请输入分值"); | |||||
return; | |||||
if (this.type == 1) { | |||||
if (!form[param]) { | |||||
this.$message.error("请输入分值"); | |||||
return; | |||||
} | |||||
} | } | ||||
if (Number(form[param]) !== Number(form[param])) { | if (Number(form[param]) !== Number(form[param])) { | ||||
this.$message.error("分值请输入数值"); | this.$message.error("分值请输入数值"); |
@search:task="updateParams($event)" | @search:task="updateParams($event)" | ||||
@export="exportData($event)" | @export="exportData($event)" | ||||
:show-export="true" | :show-export="true" | ||||
base-url="basictaskitem" | |||||
/> | /> | ||||
<el-table | <el-table | ||||
highlight-current-row | highlight-current-row | ||||
align="center" | align="center" | ||||
> | > | ||||
<template slot-scope="{ row }"> | <template slot-scope="{ row }"> | ||||
<pre>{{formatList(row,'leader')}}</pre> | |||||
<pre>{{ formatList(row, "leader") }}</pre> | |||||
</template> | </template> | ||||
</el-table-column> | </el-table-column> | ||||
<!-- <el-table-column | <!-- <el-table-column | ||||
align="center" | align="center" | ||||
> | > | ||||
<template slot-scope="{ row }"> | <template slot-scope="{ row }"> | ||||
<pre>{{ formatList(row,'other') }}</pre> | |||||
<pre>{{ formatList(row, "other") }}</pre> | |||||
</template> | </template> | ||||
</el-table-column> | </el-table-column> | ||||
<!-- <el-table-column | <!-- <el-table-column | ||||
<pre>{{ row.otherPrincipalList | formatList }}</pre> | <pre>{{ row.otherPrincipalList | formatList }}</pre> | ||||
</template> | </template> | ||||
</el-table-column> --> | </el-table-column> --> | ||||
<el-table-column | |||||
label="配合部门和责任领导" | |||||
width="250" | |||||
align="center" | |||||
> | |||||
<el-table-column label="配合部门和责任领导" width="250" align="center"> | |||||
<template slot-scope="{ row }"> | <template slot-scope="{ row }"> | ||||
<pre>{{formatList(row,'cooperate') }}</pre> | |||||
<pre>{{ formatList(row, "cooperate") }}</pre> | |||||
</template> | </template> | ||||
</el-table-column> | </el-table-column> | ||||
<!-- <el-table-column | <!-- <el-table-column | ||||
<el-button @click="showEdit = false">取消</el-button> | <el-button @click="showEdit = false">取消</el-button> | ||||
</div> | </div> | ||||
</el-dialog> | </el-dialog> | ||||
<el-dialog | <el-dialog | ||||
:loading="pointLoading" | |||||
@closed="pointForm = []" | @closed="pointForm = []" | ||||
title="编辑分数" | title="编辑分数" | ||||
custom-class="ele-dialog-form" | custom-class="ele-dialog-form" | ||||
:lock-scroll="true" | :lock-scroll="true" | ||||
:destroy-on-close="true" | :destroy-on-close="true" | ||||
width="500px" | |||||
width="600px" | |||||
:visible.sync="showPoints" | :visible.sync="showPoints" | ||||
> | > | ||||
<el-form label-width="50%"> | |||||
<!-- <el-form label-width="50%"> | |||||
<template v-for="(item, index) of pointForm"> | <template v-for="(item, index) of pointForm"> | ||||
<el-form-item :label="item | formatLabel" :key="index"> | |||||
<el-input | |||||
placeholder="请输入得分" | |||||
v-model="item.actualPoints" | |||||
clearable | |||||
></el-input> | |||||
</el-form-item> | |||||
<el-row :key="index"> | |||||
<el-form-item :label="item | formatLabel"> | |||||
<el-input | |||||
placeholder="请输入承担得分" | |||||
v-model="item.actualPoints" | |||||
clearable | |||||
></el-input> | |||||
</el-form-item> | |||||
<el-form-item label="得分"> | |||||
<el-input | |||||
placeholder="请输入得分" | |||||
v-model="item.actualPoints" | |||||
clearable | |||||
></el-input> | |||||
</el-form-item> | |||||
</el-row> | |||||
</template> | |||||
</el-form> --> | |||||
<div class="edit-point-body"> | |||||
<template v-for="item of pointForm"> | |||||
<el-row :key="item.id" type="flex"> | |||||
<el-col :span="12" style="padding-right:15px">{{ item | formatLabel }}</el-col> | |||||
<el-col :span="5"> | |||||
<el-input | |||||
placeholder="请输入承担得分" | |||||
v-model="item.bearPoints" | |||||
clearable | |||||
></el-input> | |||||
</el-col> | |||||
<el-col :span="4" class="right">得分</el-col> | |||||
<el-col :span="5"> | |||||
<el-input | |||||
placeholder="请输入得分" | |||||
v-model="item.actualPoints" | |||||
clearable | |||||
></el-input> | |||||
</el-col> | |||||
</el-row> | |||||
</template> | </template> | ||||
</el-form> | |||||
</div> | |||||
<div slot="footer"> | <div slot="footer"> | ||||
<el-button type="primary" @click="savePoints">确定</el-button> | <el-button type="primary" @click="savePoints">确定</el-button> | ||||
<el-button @click="showPoints = false">取消</el-button> | <el-button @click="showPoints = false">取消</el-button> | ||||
data() { | data() { | ||||
return { | return { | ||||
showPoints: false, | showPoints: false, | ||||
pointLoading: false, | |||||
pointForm: [], | pointForm: [], | ||||
searchParams: {}, | searchParams: {}, | ||||
dataList: [], | dataList: [], | ||||
filters: { | filters: { | ||||
formatLabel(data) { | formatLabel(data) { | ||||
if (data.isLeader == 1) { | if (data.isLeader == 1) { | ||||
return "第一牵头 '" + data.deptName + "' 得分:"; | |||||
return "第一牵头 '" + data.deptName + "' 承担得分:"; | |||||
} else if (data.isLeader == 2) { | } else if (data.isLeader == 2) { | ||||
return "其他牵头 '" + data.deptName + "' 得分:"; | |||||
return "其他牵头 '" + data.deptName + "' 承担得分:"; | |||||
} else if (data.isLeader == 3) { | } else if (data.isLeader == 3) { | ||||
return "配合部门 '" + data.deptName + "' 得分:"; | |||||
return "配合部门 '" + data.deptName + "' 承担得分:"; | |||||
} else { | } else { | ||||
return ""; | return ""; | ||||
} | } | ||||
}, | }, | ||||
}, | }, | ||||
methods: { | methods: { | ||||
formatList(data,type) { | |||||
let arr=[] | |||||
for(let key in data[type+'DeptList']){ | |||||
arr.push(`${data[type+'DeptList'][key]}(${data[type+'PrincipalList'][key]})`) | |||||
formatList(data, type) { | |||||
let arr = []; | |||||
for (let key in data[type + "DeptList"]) { | |||||
arr.push( | |||||
`${data[type + "DeptList"][key]}(${ | |||||
data[type + "PrincipalList"][key] | |||||
})` | |||||
); | |||||
} | } | ||||
return arr.join('\n') | |||||
return arr.join("\n"); | |||||
}, | }, | ||||
showPointsDialog(row) { | showPointsDialog(row) { | ||||
console.log(row) | |||||
if (!row.id) { | if (!row.id) { | ||||
this.$message({ | this.$message({ | ||||
type: "warning", | type: "warning", | ||||
this.getItemDeptScoreList(row.id); | this.getItemDeptScoreList(row.id); | ||||
}, | }, | ||||
getItemDeptScoreList(id) { | getItemDeptScoreList(id) { | ||||
this.pointLoading = true; | |||||
const loading = this.$loading({ | |||||
lock: true, | |||||
text: 'Loading', | |||||
spinner: 'el-icon-refresh-right', | |||||
background: 'rgba(1, 1, 1, 1)' | |||||
}); | |||||
editApi | editApi | ||||
.getItemDeptScoreList(id) | .getItemDeptScoreList(id) | ||||
.then((res) => { | .then((res) => { | ||||
this.showPoints = false; | this.showPoints = false; | ||||
this.$message({ | this.$message({ | ||||
type: "warning", | type: "warning", | ||||
message: "当前无数据", | |||||
message: data.msg, | |||||
}); | }); | ||||
} | } | ||||
}) | }) | ||||
this.showPoints = false; | this.showPoints = false; | ||||
this.$message({ | this.$message({ | ||||
type: "warning", | type: "warning", | ||||
message: "当前无数据", | |||||
message: e.message, | |||||
}); | }); | ||||
}) | }) | ||||
.finally(() => { | .finally(() => { | ||||
this.pointLoading = false; | |||||
this.$nextTick(()=>{ | |||||
loading.close(); | |||||
}) | |||||
}); | }); | ||||
}, | }, | ||||
savePoints() { | savePoints() { | ||||
let list = JSON.parse(JSON.stringify(this.pointForm)); | let list = JSON.parse(JSON.stringify(this.pointForm)); | ||||
console.log(list) | |||||
for (let obj of list) { | for (let obj of list) { | ||||
if (!(obj.bearPoints + "").trim()) { | |||||
this.$message({ | |||||
type: "warning", | |||||
message: "请输入" + obj.deptName + "的承担得分", | |||||
}); | |||||
return; | |||||
} | |||||
if (!(obj.actualPoints + "").trim()) { | if (!(obj.actualPoints + "").trim()) { | ||||
this.$message({ | this.$message({ | ||||
type: "warning", | type: "warning", | ||||
}); | }); | ||||
return; | return; | ||||
} | } | ||||
if (Number(obj.bearPoints) !== Number(obj.bearPoints)) { | |||||
this.$message({ | |||||
type: "warning", | |||||
message: obj.deptName + "的承担得分请输入数值", | |||||
}); | |||||
return; | |||||
} | |||||
if (Number(obj.actualPoints) !== Number(obj.actualPoints)) { | if (Number(obj.actualPoints) !== Number(obj.actualPoints)) { | ||||
this.$message({ | this.$message({ | ||||
type: "warning", | type: "warning", | ||||
} | } | ||||
let obj = {}; | let obj = {}; | ||||
list.forEach((item) => { | list.forEach((item) => { | ||||
obj[item.deptId] = item.actualPoints; | |||||
obj[item.deptId] =item.bearPoints+','+item.actualPoints; | |||||
}); | }); | ||||
editApi | editApi | ||||
.setItemDeptScore( | .setItemDeptScore( | ||||
}, | }, | ||||
save() { | save() { | ||||
let form = this.form; | let form = this.form; | ||||
let params = ["itemContent", "points", "leaderDept", "leaderPrincipal",]; | |||||
let arr=['otherDept','otherPrincipal','cooperateDept','cooperatePrincipal'] | |||||
for(let key of arr){ | |||||
if(form[key]){ | |||||
for (let item of form[key]){ | |||||
if(!item||(item.length==0)){ | |||||
this.$message.error('请选择部门及对应责任领导') | |||||
return | |||||
let params = ["itemContent", "points", "leaderDept", "leaderPrincipal"]; | |||||
let arr = [ | |||||
"otherDept", | |||||
"otherPrincipal", | |||||
"cooperateDept", | |||||
"cooperatePrincipal", | |||||
]; | |||||
for (let key of arr) { | |||||
if (form[key]) { | |||||
for (let item of form[key]) { | |||||
if (!item || item.length == 0) { | |||||
this.$message.error("请选择部门及对应责任领导"); | |||||
return; | |||||
} | } | ||||
} | } | ||||
} | } | ||||
max-height: 60vh; | max-height: 60vh; | ||||
overflow-y: scroll; | overflow-y: scroll; | ||||
} | } | ||||
.edit-point-body .el-row{ | |||||
align-items: center; | |||||
} | |||||
.edit-point-body .el-col.right{ | |||||
text-align: center; | |||||
} | |||||
</style> | </style> |
@search:task="updateParams($event)" | @search:task="updateParams($event)" | ||||
:show-export="true" | :show-export="true" | ||||
@export="exportData($event)" | @export="exportData($event)" | ||||
base-url="rigidityconstraintitem" | |||||
/> | /> | ||||
<el-table | <el-table | ||||
highlight-current-row | highlight-current-row | ||||
<pre>{{ row.cooperatePrincipalList | formatList }}</pre> | <pre>{{ row.cooperatePrincipalList | formatList }}</pre> | ||||
</template> | </template> | ||||
</el-table-column> --> | </el-table-column> --> | ||||
<el-table-column label="操作" width="80" align="center" fixed="right"> | |||||
<el-table-column label="操作" width="150" align="center" fixed="right"> | |||||
<template slot-scope="{ row }"> | <template slot-scope="{ row }"> | ||||
<el-link | <el-link | ||||
slot="reference" | slot="reference" | ||||
icon="el-icon-edit" | icon="el-icon-edit" | ||||
>编辑</el-link | >编辑</el-link | ||||
> | > | ||||
<el-link | |||||
@click="showPointsDialog(row)" | |||||
type="warning" | |||||
icon="el-icon-edit-outline" | |||||
>评分</el-link | |||||
> | |||||
</template> | </template> | ||||
</el-table-column> | </el-table-column> | ||||
</el-table> | </el-table> | ||||
<el-button @click="showEdit = false">取消</el-button> | <el-button @click="showEdit = false">取消</el-button> | ||||
</div> | </div> | ||||
</el-dialog> | </el-dialog> | ||||
<el-dialog | |||||
@closed="pointForm = []" | |||||
title="编辑分数" | |||||
custom-class="ele-dialog-form" | |||||
:lock-scroll="true" | |||||
:destroy-on-close="true" | |||||
width="500px" | |||||
:visible.sync="showPoints" | |||||
> | |||||
<el-form label-width="50%"> | |||||
<template v-for="(item, index) of pointForm"> | |||||
<el-form-item :label="item | formatLabel" :key="index"> | |||||
<el-input | |||||
placeholder="请输入得分" | |||||
v-model="item.actualPoints" | |||||
clearable | |||||
></el-input> | |||||
</el-form-item> | |||||
</template> | |||||
</el-form> | |||||
<div slot="footer"> | |||||
<el-button type="primary" @click="savePoints">确定</el-button> | |||||
<el-button @click="showPoints = false">取消</el-button> | |||||
</div> | |||||
</el-dialog> | |||||
</div> | </div> | ||||
</template> | </template> | ||||
], | ], | ||||
data() { | data() { | ||||
return { | return { | ||||
showPoints: false, | |||||
pointForm: [], | |||||
searchParams: {}, | searchParams: {}, | ||||
dataList: [{}], | dataList: [{}], | ||||
loading: false, | loading: false, | ||||
computed: { | computed: { | ||||
...mapGetters(["formatDep", "principalList", "department", "user"]), | ...mapGetters(["formatDep", "principalList", "department", "user"]), | ||||
}, | }, | ||||
filters: { | |||||
formatLabel(data) { | |||||
if (data.isLeader == 1) { | |||||
return "第一牵头 '" + data.deptName + "' 得分:"; | |||||
} else if (data.isLeader == 2) { | |||||
return "其他牵头 '" + data.deptName + "' 得分:"; | |||||
} else if (data.isLeader == 3) { | |||||
return "配合部门 '" + data.deptName + "' 得分:"; | |||||
} else { | |||||
return ""; | |||||
} | |||||
}, | |||||
}, | |||||
methods: { | methods: { | ||||
showPointsDialog(row) { | |||||
if (!row.id) { | |||||
this.$message({ | |||||
type: "warning", | |||||
message: "请先拆分小条", | |||||
}); | |||||
return; | |||||
} | |||||
this.showPoints = true; | |||||
this.getItemDeptScoreList(row.id); | |||||
}, | |||||
getItemDeptScoreList(id) { | |||||
const loading = this.$loading({ | |||||
lock: true, | |||||
text: 'Loading', | |||||
spinner: 'el-icon-refresh-right', | |||||
background: 'rgba(1, 1, 1, 1)' | |||||
}); | |||||
editApi | |||||
.getItemDeptScoreList(id) | |||||
.then((res) => { | |||||
let data = res.data; | |||||
if (data.code == 0) { | |||||
this.pointForm = data.data; | |||||
this.itemId = id; | |||||
} else { | |||||
this.pointForm = []; | |||||
this.showPoints = false; | |||||
this.$message({ | |||||
type: "warning", | |||||
message: data.msg, | |||||
}); | |||||
} | |||||
}) | |||||
.catch((e) => { | |||||
this.pointForm = []; | |||||
this.showPoints = false; | |||||
this.$message({ | |||||
type: "warning", | |||||
message: e.message, | |||||
}); | |||||
}) | |||||
.finally(() => { | |||||
this.$nextTick(() => { | |||||
loading.close(); | |||||
}); | |||||
}); | |||||
}, | |||||
savePoints() { | |||||
let list = JSON.parse(JSON.stringify(this.pointForm)); | |||||
for (let obj of list) { | |||||
if (!(obj.actualPoints + "").trim()) { | |||||
this.$message({ | |||||
type: "warning", | |||||
message: "请输入" + obj.deptName + "的得分", | |||||
}); | |||||
return; | |||||
} | |||||
if (Number(obj.actualPoints) !== Number(obj.actualPoints)) { | |||||
this.$message({ | |||||
type: "warning", | |||||
message: obj.deptName + "的得分请输入数值", | |||||
}); | |||||
return; | |||||
} | |||||
} | |||||
let obj = {}; | |||||
list.forEach((item) => { | |||||
obj[item.deptId] = item.actualPoints; | |||||
}); | |||||
editApi | |||||
.setItemDeptScore( | |||||
Object.assign({ itemId: this.itemId, deptScore: obj }) | |||||
) | |||||
.then((res) => { | |||||
let data = res.data; | |||||
if (data.code == 0) { | |||||
this.$message({ | |||||
type: "success", | |||||
message: "编辑分数成功", | |||||
}); | |||||
this.showPoints = false; | |||||
this.getDataList(); | |||||
} else { | |||||
this.$message.error(data.msg); | |||||
} | |||||
}) | |||||
.catch((e) => { | |||||
this.$message.error("编辑分数失败"); | |||||
}); | |||||
}, | |||||
formatList(data, type) { | formatList(data, type) { | ||||
let arr = []; | let arr = []; | ||||
for (let key in data[type + "DeptList"]) { | for (let key in data[type + "DeptList"]) { |
@search:task="updateParams($event)" | @search:task="updateParams($event)" | ||||
@export="exportData($event)" | @export="exportData($event)" | ||||
:show-export="true" | :show-export="true" | ||||
base-url="specialpoweritem" | |||||
/> | /> | ||||
<el-table | <el-table | ||||
highlight-current-row | highlight-current-row | ||||
<pre>{{ row.cooperatePrincipalList | formatList }}</pre> | <pre>{{ row.cooperatePrincipalList | formatList }}</pre> | ||||
</template> | </template> | ||||
</el-table-column> --> | </el-table-column> --> | ||||
<el-table-column label="操作" width="80" align="center" fixed="right"> | |||||
<el-table-column label="操作" width="150" align="center" fixed="right"> | |||||
<template slot-scope="{ row }"> | <template slot-scope="{ row }"> | ||||
<el-link | <el-link | ||||
slot="reference" | slot="reference" | ||||
icon="el-icon-edit" | icon="el-icon-edit" | ||||
>编辑</el-link | >编辑</el-link | ||||
> | > | ||||
<el-link | |||||
@click="showPointsDialog(row)" | |||||
type="warning" | |||||
icon="el-icon-edit-outline" | |||||
>评分</el-link | |||||
> | |||||
</template> | </template> | ||||
</el-table-column> | </el-table-column> | ||||
</el-table> | </el-table> | ||||
<el-button @click="showEdit = false">取消</el-button> | <el-button @click="showEdit = false">取消</el-button> | ||||
</div> | </div> | ||||
</el-dialog> | </el-dialog> | ||||
<el-dialog | |||||
@closed="pointForm = []" | |||||
title="编辑分数" | |||||
custom-class="ele-dialog-form" | |||||
:lock-scroll="true" | |||||
:destroy-on-close="true" | |||||
width="500px" | |||||
:visible.sync="showPoints" | |||||
> | |||||
<el-form label-width="50%"> | |||||
<template v-for="(item, index) of pointForm"> | |||||
<el-form-item :label="item | formatLabel" :key="index"> | |||||
<el-input | |||||
placeholder="请输入得分" | |||||
v-model="item.actualPoints" | |||||
clearable | |||||
></el-input> | |||||
</el-form-item> | |||||
</template> | |||||
</el-form> | |||||
<div slot="footer"> | |||||
<el-button type="primary" @click="savePoints">确定</el-button> | |||||
<el-button @click="showPoints = false">取消</el-button> | |||||
</div> | |||||
</el-dialog> | |||||
</div> | </div> | ||||
</div> | </div> | ||||
</template> | </template> | ||||
], | ], | ||||
data() { | data() { | ||||
return { | return { | ||||
showPoints: false, | |||||
pointForm: [], | |||||
searchParams: {}, | searchParams: {}, | ||||
dataList: [], | dataList: [], | ||||
showEdit: false, | showEdit: false, | ||||
computed: { | computed: { | ||||
...mapGetters(["formatDep", "principalList", "department", "user"]), | ...mapGetters(["formatDep", "principalList", "department", "user"]), | ||||
}, | }, | ||||
filters: { | |||||
formatLabel(data) { | |||||
if (data.isLeader == 1) { | |||||
return "第一牵头 '" + data.deptName + "' 得分:"; | |||||
} else if (data.isLeader == 2) { | |||||
return "其他牵头 '" + data.deptName + "' 得分:"; | |||||
} else if (data.isLeader == 3) { | |||||
return "配合部门 '" + data.deptName + "' 得分:"; | |||||
} else { | |||||
return ""; | |||||
} | |||||
}, | |||||
}, | |||||
methods: { | methods: { | ||||
showPointsDialog(row) { | |||||
if (!row.id) { | |||||
this.$message({ | |||||
type: "warning", | |||||
message: "请先拆分小条", | |||||
}); | |||||
return; | |||||
} | |||||
this.showPoints = true; | |||||
this.getItemDeptScoreList(row.id); | |||||
}, | |||||
getItemDeptScoreList(id) { | |||||
const loading = this.$loading({ | |||||
lock: true, | |||||
text: 'Loading', | |||||
spinner: 'el-icon-refresh-right', | |||||
background: 'rgba(1, 1, 1, 1)' | |||||
}); | |||||
editApi | |||||
.getItemDeptScoreList(id) | |||||
.then((res) => { | |||||
let data = res.data; | |||||
if (data.code == 0) { | |||||
this.pointForm = data.data; | |||||
this.itemId = id; | |||||
} else { | |||||
this.pointForm = []; | |||||
this.showPoints = false; | |||||
this.$message({ | |||||
type: "warning", | |||||
message: data.msg, | |||||
}); | |||||
} | |||||
}) | |||||
.catch((e) => { | |||||
this.pointForm = []; | |||||
this.showPoints = false; | |||||
this.$message({ | |||||
type: "warning", | |||||
message: e.message, | |||||
}); | |||||
}) | |||||
.finally(() => { | |||||
this.$nextTick(() => { | |||||
loading.close(); | |||||
}); | |||||
}); | |||||
}, | |||||
savePoints() { | |||||
let list = JSON.parse(JSON.stringify(this.pointForm)); | |||||
for (let obj of list) { | |||||
if (!(obj.actualPoints + "").trim()) { | |||||
this.$message({ | |||||
type: "warning", | |||||
message: "请输入" + obj.deptName + "的得分", | |||||
}); | |||||
return; | |||||
} | |||||
if (Number(obj.actualPoints) !== Number(obj.actualPoints)) { | |||||
this.$message({ | |||||
type: "warning", | |||||
message: obj.deptName + "的得分请输入数值", | |||||
}); | |||||
return; | |||||
} | |||||
} | |||||
let obj = {}; | |||||
list.forEach((item) => { | |||||
obj[item.deptId] = item.actualPoints; | |||||
}); | |||||
editApi | |||||
.setItemDeptScore( | |||||
Object.assign({ itemId: this.itemId, deptScore: obj }) | |||||
) | |||||
.then((res) => { | |||||
let data = res.data; | |||||
if (data.code == 0) { | |||||
this.$message({ | |||||
type: "success", | |||||
message: "编辑分数成功", | |||||
}); | |||||
this.showPoints = false; | |||||
this.getDataList(); | |||||
} else { | |||||
this.$message.error(data.msg); | |||||
} | |||||
}) | |||||
.catch((e) => { | |||||
this.$message.error("编辑分数失败"); | |||||
}); | |||||
}, | |||||
formatList(data, type) { | formatList(data, type) { | ||||
let arr = []; | let arr = []; | ||||
for (let key in data[type + "DeptList"]) { | for (let key in data[type + "DeptList"]) { |