570 lines
18 KiB
Vue
Raw Normal View History

<template>
<div id="content-container" :class="{'expand-right': expandRight}">
<!--Page Title-->
<div id="page-title">
<h1 class="page-header text-overflow">季度评价打分</h1>
</div>
<!--End page title-->
<!--Breadcrumb-->
<!--<ol class="breadcrumb">-->
<!--<li><a href="#">Home</a></li>-->
<!--<li><a href="#">Layouts</a></li>-->
<!--<li class="active">Demo</li>-->
<!--</ol>-->
<!--End breadcrumb-->
<!--Page content-->
<div class="page-content">
<div class="panel">
<div class="panel-body">
<el-form :model="formModel" label-width="100px" ref="formName">
<el-form-item label="季度">
<el-input
class="form-input"
placeholder="请输入内容"
v-model="formModel.quarter"
:disabled="true"
>
</el-input>
</el-form-item>
<el-form-item label="指标名称">
<el-input
class="form-input"
placeholder="请输入内容"
v-model="formModel.indexName"
:disabled="true"
>
</el-input>
</el-form-item>
<el-form-item label="A档">
<el-input
class="form-input"
placeholder="请输入内容"
v-model="formModel.levelA"
:disabled="true"
>
</el-input>
</el-form-item>
<el-form-item label="B档">
<el-input
class="form-input"
placeholder="请输入内容"
v-model="formModel.levelB"
:disabled="true"
>
</el-input>
</el-form-item>
<el-form-item label="C档">
<el-input
class="form-input"
placeholder="请输入内容"
v-model="formModel.levelC"
:disabled="true"
>
</el-input>
</el-form-item>
<el-form-item label="D档">
<el-input
class="form-input"
placeholder="请输入内容"
v-model="formModel.levelD"
:disabled="true"
>
</el-input>
</el-form-item>
<el-form-item label="指标完成情况">
<el-input
class="form-input"
placeholder="请输入内容"
v-model="formModel.execution"
>
</el-input>
</el-form-item>
<el-form-item label="自评定级" v-if="!isOffice">
<el-input
class="form-input"
placeholder="请输入内容"
v-model="formModel.selfEvaluation"
>
</el-input>
</el-form-item>
<el-form-item label="所项目管理员打分" v-if="!isOffice">
<el-input
class="form-input"
placeholder="项目管理员才能打分"
v-model="formModel.adminScoring"
:disabled=isAdmin
>
</el-input>
</el-form-item>
<el-form-item label="战略规划部评级" v-if="isOffice && !isStrategy">
<el-input
class="form-input"
placeholder="战略规划部部门主任才能打分"
v-model="formModel.strategyScoring"
:disabled="isStrategy"
>
</el-input>
</el-form-item>
<el-form-item label="平台建设部评级" v-if="isOffice && !isPlatform">
<el-input
class="form-input"
placeholder="平台建设部部门主任才能打分"
v-model="formModel.platformScoring"
:disabled="isPlatform"
>
</el-input>
</el-form-item>
<el-form-item label="市场发展部评级" v-if="isOffice && !isMarket">
<el-input
class="form-input"
placeholder="市场发展部部门主任才能打分"
v-model="formModel.marketScoring"
:disabled="isMarket"
>
</el-input>
</el-form-item>
<el-form-item label="服务产品部评级" v-if="isOffice && !isService">
<el-input
class="form-input"
placeholder="服务产品部部门主任才能打分"
v-model="formModel.serviceScoring"
:disabled="isService"
>
</el-input>
</el-form-item>
<el-form-item>
<div style="float: right">
<el-button @click="cancel()" type="default">取消</el-button>
<el-button @click="save('formName')" type="primary" :disabled="!isSave">保存</el-button>
</div>
</el-form-item>
</el-form>
</div>
</div>
</div>
<!--End Page content-->
</div>
</template>
<script>
import DataForm from '../../../components/form/DataForm.vue'
import DataTable from '../../../components/DataTable.vue'
import Api from '../../../server/index'
import app from '../../../assets/js/common/app.js'
import {baseUrl} from '../../../config/env.js'
import verifyButton from '../../../components/verifyButton.vue'
import FlowRecordTable from '../../../components/FlowRecordTable.vue'
import {getItem, setItem} from '../../../config/mUtils'
export default {
beforeRouteEnter (to, from, next) {
next(function (vm) {
global.getMenuIndex(vm)
})
},
data () {
return {
quarter: '',
isStrategy: true,
isPlatform: true,
isMarket: true,
isService: true,
strategyScoring: '',
platformScoring: '',
marketScoring: '',
serviceScoring: '',
isOffice: null,
isAdmin: true,
adminScoring: '',
selfEvaluation: '',
week: '',
ext: {},
thisWeek: '',
nextWeek: '',
userId: '',
workload: '',
projectName: '',
money: '',
projectNo: '',
expandRight: false,
app: app,
reimburseId: '',
actionUrl: `${baseUrl}/api/common/file-upload`, // 上传路径
baseUrl: baseUrl,
formModel: {
userInfoId: '',
witness: '',
deptId: '',
reimburseCategory: '', // 报销种类
reason: '', // 报销事由
selectBudgetCategoryId: [], // 预算种类
reimburseDetail: [
{
time: '',
money: '',
moneyDetail: '',
total: 0,
hasBill: '', // 是否有发票
fileList: [], // 文件列表
}
], // 报销详情
activie: 0
},
formWitnessData: [], // 证明人数据源
orgOptions: [],
userInfoOption: [],
reimburseCategoryData: app.reimbursement, // 报销种类
budgetCategory: [], // 预算种类层级
reimburseIndex: 0, // 点击哪个报销明细做个标记
// 审批相关
rewriteAgreeVerify: false, //是否要重写同意审批事件
rewriteRejectVerify: false, //是否要重写驳回审批事件
rewriteDestroyVerify: false, //是否要重写作废审批事件
flowId: '',
taskId: '',
checkOrVerify: false, //标识是查看详情还是审批
isSave: true,
isEdit: false,
canEditReimburseCategory: false, //标识是否能改报销分类
canEditBudgetCategory: false, //标识是否能改预算类别
isVerify: false,
isNotVerifyReady: false, // 是否未审核
pageNo: 1,
pageSize: 10,
tableTotalPage: 1,
}
},
created () {
this.taskId = this.$route.params.taskId
this.reimburseId = this.$route.params.id
this.pid = this.$route.params.pid
if (getItem('projectId') == null) {
setItem('projectId', this.pid)
}
if (this.pid == null) {
this.pid = getItem('projectId')
}
this.getOffice()
this.getBusiness()
this.init()
this.getBudgetCategory()
},
methods: {
getBusiness () {
this.isStrategy = true
this.isPlatform = true
this.isMarket = true
this.isService = true
let id = getItem('userInfoId')
Api.ProjectManagements.getBusiness(id).then(result => {
if (result.status === 0) {
let data = result.data
switch (data) {
case '战略规划部':
this.isStrategy = false
break
case '平台建设部':
this.isPlatform = false
break
case '市场发展部':
this.isMarket = false
break
case '服务产品部':
this.isService = false
break
}
}
})
},
getOffice () {
let id = this.pid
Api.ProjectManagements.getOffice(id).then(result => {
console.log('getoffice', result)
if (result.status === 0) {
if (result.data === '0') {
console.log('是办公室')
this.isOffice = true
} else {
this.isOffice = false
}
this.getQuartely()
} else {
this.$message.error(result.data)
}
})
},
init () {
this.userId = getItem('userId')
this.reimburseId = this.$route.params.id
this.pid = this.$route.params.pid
},
getQuartely: function () {
let param = {
pageNoUtil: {
pageNo: this.pageNo,
pageSize: this.pageSize,
t: {
id: this.reimburseId
}
}
}
Api.ProjectManagements.getIndicators(param.pageNoUtil).then(result => {
if (result.status === 0) {
console.log('是不是办公室', this.isOffice)
let data = result.data.ls[0]
this.formModel = data
this.ext = data.ext
this.quarter = data.quarter
this.formModel.execution = data.ext.execution
if (!this.isOffice) {
this.formModel.selfEvaluation = data.ext.selfEvaluation
this.formModel.adminScoring = data.ext.adminScoring
} else if (this.isOffice) {
this.formModel.strategyScoring = data.ext.strategyScoring
this.formModel.platformScoring = data.ext.platformScoring
this.formModel.marketScoring = data.ext.marketScoring
this.formModel.serviceScoring = data.ext.serviceScoring
}
if (data.ext.projectAdmin == this.userId) {
this.isAdmin = false
}
}
console.log('result', result)
})
},
//判断是否能修改报销分类和预算类别(财务专员在审批中能修改)
judgeEditAuth (canEdit) {
if (this.isNotVerifyReady === true) {
if (this.$route.name === 'ExpenseClaimApplyVerify') {
this.canEditBudgetCategory = canEdit
this.rewriteAgreeVerify = canEdit
this.rewriteRejectVerify = canEdit
this.rewriteDestroyVerify = canEdit
if (this.formModel.reimburseCategory !== 'medical') {
this.canEditReimburseCategory = canEdit
//其他类型的报销不能改为医疗保险
let destData = []
this.reimburseCategoryData.forEach((category, index) => {
destData.push(
{
label: category.label,
model: category.model,
disabled: category.model === 'medical',
}
)
})
this.reimburseCategoryData = destData
}
this.isEdit = false
} else {
this.isEdit = canEdit
}
}
},
getBudgetCategory () {
Api.Common.getBudgetCategory().then(result => {
if (result.status === 0) {
this.budgetCategory = this.assembleOrgData(result.data)
} else {
this.$message.error(`${result.msg}`)
}
})
},
//请求所有人员
getAllPeople () {
// Api.PersonnelManagement.personListNew(1, 10000).then((result) => {
// if (result.status === 0) {
// for (let i = 0; i < result.data.ls.length; i++) {
// let people = result.data.ls[i]
// this.formWitnessData.push({
// model: people.id,
// label: people.personName,
// disabled: people.id === this.formModel.userInfoId
// })
// }
// } else {
// this.$message.error(`${result.msg}`)
// }
// })
let params = {
path: {
id: 0
}
}
Api.Administration.getPeers(params).then((result) => {
console.log('查询所有')
console.log('查询所有人员的方法')
if (result.status === 0) {
// this.formModel.deptId=this.assembleOrgData(result.data)
this.orgOptions = this.assembleOrgData(result.data)
// this.formModel.userId=this.assembleOrgData(result.data)
// this.userInfoOption=this.assembleOrgData(result.data)
console.log('deptId', this.formModel.deptId)
console.log('orgOptions', this.orgOptions)
console.log('userId', this.formModel.userId)
console.log('userInfoOption', this.userInfoOption)
//执行部门所有下拉数据
// this.formPermissionsData = this.assembleOrgData(result.data)
//任务执行人下拉回显
// this.formProjectManagerData = this.assembleOrgData(result.data)
// this.formPeopleData = this.assembleOrgData(result.data)
// this.formProjectAdmin = this.assembleOrgData(result.data)
// this.formMainLeader = this.assembleOrgData(result.data)
// this.formBranchLeader = this.assembleOrgData(result.data)
} else {
this.$message.error(result.msg)
}
})
},
//递归组装部门级联选择器数据源
assembleOrgData (source) {
let dest = []
for (let i = 0; i < source.length; i++) {
let org = {
value: source[i].id,
parentId: source[i].parentId,
label: source[i].name,
depth: source[i].depth
}
if (source[i].childList && source[i].childList.length > 0) {
org['children'] = this.assembleOrgData(source[i].childList)
}
dest.push(org)
}
return dest
},
addFile () {
this.formModel.reimburseDetail.push({
time: '',
money: '',
moneyDetail: '',
hasBill: '', // 是否有发票
fileList: [] // 文件列表
})
},
deleteFile (index) {
if (this.formModel.reimburseDetail.length === 1) {
this.$message.warning('报销明细不能为空!')
return false
}
this.formModel.reimburseDetail.splice(index, 1)
},
// 上传附件
handleFileRemove (file, fileList) {
console.log(fileList)
setTimeout(() => {
this.formModel.reimburseDetail[this.reimburseIndex].fileList = []
for (let i = 0; i < fileList.length; i++) {
this.formModel.reimburseDetail[this.reimburseIndex].fileList.push({
name: fileList[i].name,
url: fileList[i].url
})
}
}, 10)
},
handleFileSuccess (res, file, fileList) {
if (res.status === 0) {
this.formModel.reimburseDetail[this.reimburseIndex].fileList.push({
name: file.name,
url: file.response.data.url
})
} else {
this.$message.error(`${res.msg}`)
}
console.log(this.formModel.reimburseDetail[this.reimburseIndex].fileList)
},
reimburseClick (index) {
this.reimburseIndex = index
console.log(index)
},
//重写同意审批按钮事件
agreeFlowVerify (comment) {
this.save('formName', 'commit', comment)
},
//重写驳回审批按钮事件
rejectFlowVerify (comment) {
this.save('formName', 'back', comment)
},
//重写作废审批按钮事件
destroyFlowVerify (comment) {
this.save('formName', 'end', comment)
},
cancel () {
this.$router.go(-1)
},
save (formName) {
console.log('formName', formName)
this.$refs[formName].validate((valid) => {
if (valid) {
let ext = this.ext
ext.execution = this.formModel.execution
ext.isOffice = this.isOffice
if (!this.isOffice) {
ext.selfEvaluation = this.formModel.selfEvaluation
ext.adminScoring = this.formModel.adminScoring
} else if (this.isOffice) {
ext.strategyScoring = this.formModel.strategyScoring
ext.marketScoring = this.formModel.marketScoring
ext.platformScoring = this.formModel.platformScoring
ext.serviceScoring = this.formModel.serviceScoring
}
let param = {
pageNoUtil: {
t: {
id: this.reimburseId,
ext: ext
}
}
}
this.isSave = false
Api.ProjectManagements.updateQuarterly(param.pageNoUtil).then(result => {
this.isSave = true
if (result.status === 0) {
this.$message.success(result.data)
this.$router.push(
{name: 'quarterlyAssessmentDetail', params: {id: this.pid, quarter: this.quarter}})
} else {
this.$message.error(result.data)
}
})
} else {
console.log('error submit!!')
return false
}
})
},
moneyChange () {
let total = 0
for (let i = 0; i < this.formModel.reimburseDetail.length; i++) {
if (this.formModel.reimburseDetail[i].money === '' || !this.formModel.reimburseDetail[i].money) {
total += 0
} else {
total += Number(this.formModel.reimburseDetail[i].money)
}
}
this.formModel.total = total.toFixed(2)
}
},
components: {
DataTable, DataForm, verifyButton, FlowRecordTable
}
}
</script>
<style scoped lang="less" rel="stylesheet/less">
.expand-right {
@media (min-width: 768px) {
padding-left: 0 !important;
}
}
.page-content {
padding: 15px;
}
</style>