|
@@ -29,6 +29,15 @@
|
|
|
</el-form-item>
|
|
|
</el-form>
|
|
|
</el-col>
|
|
|
+ <el-dialog :title="$t('defaultText.pleaseEnterTheReason')" v-if="denyReasonDialog" :visible.sync="denyReasonDialog" :close-on-click-modal="false" customClass="customWidth" width="500px">
|
|
|
+ <div>
|
|
|
+ <span style="color:red;">*</span><el-input type="textarea" v-model="denyReasonRReason" rows="2" placeholder="请输入驳回原因" />
|
|
|
+ </div>
|
|
|
+ <div slot="footer" class="dialog-footer">
|
|
|
+ <el-button @click="denyReasonDialog = false" >{{ $t('btn.cancel') }}</el-button>
|
|
|
+ <el-button type="primary" @click="deny()" :disabled="!denyReasonRReason">{{ $t('btn.determine') }}</el-button>
|
|
|
+ </div>
|
|
|
+ </el-dialog>
|
|
|
<div style="display: flex;width: 100%;">
|
|
|
<div class="classification">
|
|
|
<div>
|
|
@@ -43,13 +52,13 @@
|
|
|
</el-table-column>
|
|
|
<el-table-column prop="projectCode" :label="user.companyId == '7030' ? '项目令号' : $t('Itemno')" width="150"></el-table-column>
|
|
|
<el-table-column prop="projectName" :label="$t('headerTop.projectName')" min-width="250" sortable="custom">
|
|
|
- <template slot-scope="scope">
|
|
|
- <div>
|
|
|
- <el-button type="text" v-if="user.company.packageProject==1 && (user.company.nonProjectSimple==0 || (user.company.nonProjectSimple==1&&scope.row.isPublic==0))" @click="showProjectApprovalDeatil(scope.row)">{{scope.row.projectName}}</el-button>
|
|
|
- <span v-else>{{scope.row.projectName}}</span>
|
|
|
- </div>
|
|
|
- </template>
|
|
|
- </el-table-column>
|
|
|
+ <template slot-scope="scope">
|
|
|
+ <div>
|
|
|
+ <el-button type="text" v-if="user.company.packageProject==1 && (user.company.nonProjectSimple==0 || (user.company.nonProjectSimple==1&&scope.row.isPublic==0))" @click="showProjectApprovalDeatil(scope.row)">{{scope.row.projectName}}</el-button>
|
|
|
+ <span v-else>{{scope.row.projectName}}</span>
|
|
|
+ </div>
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
<el-table-column prop="categoryName" :label="$t('projectclassification')" width="140"></el-table-column>
|
|
|
<el-table-column prop="isPublic" :label="$t('projecttype')" width="140">
|
|
|
<template slot-scope="scope">{{scope.row.isPublic==0?$t('zheng-shi-xiang-mu'):$t('fei-xiang-mu')}}</template>
|
|
@@ -78,11 +87,12 @@
|
|
|
{{scope.row.status == null?"-":approvalStatusStr[scope.row.status]}}
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
+ <el-table-column prop="rejectInfo" :label="$t('dismissreason')" min-width="250" ></el-table-column>
|
|
|
<el-table-column :label="$t('operation')" :width="300" align="left" fixed="right">
|
|
|
<template slot-scope="scope">
|
|
|
<el-button size="mini" type="primary" v-if="(permissions.projectApprovalEdit||permissions.projectApprovalCheck)&&scope.row.status!=1" @click="handleAdd(scope.$index, scope.row)">{{'编辑'}}</el-button>
|
|
|
- <el-button size="mini" type="success" v-if="(permissions.projectApprovalEdit||permissions.projectApprovalCheck) && scope.row.status==0" @click="check(scope.row,1)" >{{'通过'}}</el-button>
|
|
|
- <el-button size="mini" v-if="(permissions.projectApprovalEdit||permissions.projectApprovalCheck) && scope.row.status==0" @click="check(scope.row,2)">{{'驳回'}}</el-button>
|
|
|
+ <el-button size="mini" type="success" v-if="(permissions.projectApprovalEdit||permissions.projectApprovalCheck) && scope.row.status==0" :disabled="!scope.row.isFirstCheckUser" @click="check(scope.row,1)" >{{'通过'}}</el-button>
|
|
|
+ <el-button size="mini" v-if="(permissions.projectApprovalEdit||permissions.projectApprovalCheck) && scope.row.status==0" :disabled="!scope.row.isFirstCheckUser" @click="showDenyDialog(scope.row,2)">{{'驳回'}}</el-button>
|
|
|
<el-button size="mini" v-if="(permissions.projectApprovalEdit ||permissions.projectApprovalCheck) && scope.row.status==1" @click="check(scope.row,3)">{{'撤销'}}</el-button>
|
|
|
</template>
|
|
|
</el-table-column>
|
|
@@ -227,9 +237,11 @@
|
|
|
</div>
|
|
|
<el-divider></el-divider>
|
|
|
<template>
|
|
|
- <div><span>{{'审核人'}}</span></div>
|
|
|
- <div>
|
|
|
- <div v-for="(item, index) in pointList" :key="index" >
|
|
|
+ <div style="padding: 7px 0; ">
|
|
|
+ <span style="color: #409EFF; font-size: 17px;">{{'审核人'}}</span>
|
|
|
+ </div>
|
|
|
+ <!-- <div >
|
|
|
+ <div v-for="(item, index) in pointList" :key="index" >
|
|
|
第{{index+1}}审核人:
|
|
|
<el-select v-if="user.userNameNeedTranslate != 1" :disabled="item.status!=0" v-model="item.userId" style="width:140px;" :placeholder="$t('defaultText.pleaseChoose')" clearable @change="manageSelect" size="small" filterable popper-class="managePopperClass">
|
|
|
<el-option v-for="item in participator" :key="item.id" :label="item.name" :value="item.id">
|
|
@@ -241,6 +253,20 @@
|
|
|
<i class="el-icon-remove-outline" v-if="pointList.length>1 && item.status==0" @click="deleteInput(index)"></i>
|
|
|
<span>{{item.status==0?'待审核':item.status==1?"已审核":"已驳回"}}</span>
|
|
|
</div>
|
|
|
+ </div> -->
|
|
|
+ <div>
|
|
|
+ <div v-for="(item, index) in pointList" :key="index" style="margin-bottom: 10px; padding: 10px; border: 1px solid #e0e0e0; border-radius: 5px;">
|
|
|
+ 第{{index + 1}}审核人:
|
|
|
+ <el-select v-if="user.userNameNeedTranslate != 1" :disabled="item.status != 0" v-model="item.userId" style="width: 140px; margin-left: 10px;" :placeholder="$t('defaultText.pleaseChoose')" clearable @change="manageSelect" size="small" filterable popper-class="managePopperClass">
|
|
|
+ <el-option v-for="participatorItem in participator" :key="participatorItem.id" :label="participatorItem.name" :value="participatorItem.id">
|
|
|
+ <span style="float: left">{{ participatorItem.name }}</span>
|
|
|
+ </el-option>
|
|
|
+ </el-select>
|
|
|
+ <selectCat v-if="user.userNameNeedTranslate == 1" :size="'medium'" :subject="participator" :subjectId="item.userId" :distinction="'12'" @selectCal="selectCal" :disabled="canOnlyModParticipator || projectManagerEdit || isShowProjectName"></selectCat>
|
|
|
+ <i class="el-icon-circle-plus-outline" @click="addInput(index)" v-if="index == pointList.length - 1" style="margin-left: 10px;"></i>
|
|
|
+ <i class="el-icon-remove-outline" v-if="pointList.length > 1 && item.status == 0" @click="deleteInput(index)" style="margin-left: 10px;"></i>
|
|
|
+ <span style="margin-left: 10px;">{{ item.status == 0 ? '待审核' : item.status == 1 ? "已审核" : "已驳回" }}</span>
|
|
|
+ </div>
|
|
|
</div>
|
|
|
</template>
|
|
|
</el-form>
|
|
@@ -312,14 +338,27 @@
|
|
|
</el-dialog>
|
|
|
|
|
|
<!--查看立项-->
|
|
|
- <el-dialog :title="$t('Checkthedetails')" v-if="projectApprovalDetailVisible" :visible.sync="projectApprovalDetailVisible" :close-on-click-modal="false" customClass="customWidth" width="400px">
|
|
|
- <div class="line"><span>{{user.companyId='7030' ? '项目令号:' : '项目编号:'}}</span><span>{{projectApprocalDetail.projectCode}}</span></div>
|
|
|
- <div class="line"><span>{{'项目名称:'}}</span><span>{{projectApprocalDetail.projectName}}</span></div>
|
|
|
- <div class="line"><span>{{'项目分类:'}}</span><span>{{projectApprocalDetail.categoryName}}</span></div>
|
|
|
- <div class="line"><span>{{'项目类型:'}}</span><span>{{projectApprocalDetail.isPublic==0?"正式项目":"非项目"}}</span></div>
|
|
|
- <div class="line"><span>{{'项目描述:'}}</span><span>{{projectApprocalDetail.projectDesc}}</span></div>
|
|
|
- <div class="line"><span>{{'全部参与人:'}}</span>
|
|
|
- <span v-for="(par, index) in projectApprocalDetail.participationApprovalList" :key="par.userId">
|
|
|
+ <el-dialog :title="$t('Checkthedetails')" v-if="projectApprovalDetailVisible" :visible.sync="projectApprovalDetailVisible" :close-on-click-modal="false" customClass="customWidth" width="800px">
|
|
|
+ <el-row :gutter="10" >
|
|
|
+ <el-col :span="5" ><div class="gray_label">{{user.companyId='7030' ? '项目令号:' : '项目编号:'}}</div></el-col>
|
|
|
+ <el-col :span="7" ><div class="gray_label ">{{projectApprocalDetail.projectCode}}</div></el-col>
|
|
|
+ <el-col :span="5" ><div class="gray_label">{{'项目名称:'}}</div></el-col>
|
|
|
+ <el-col :span="7" ><div class="gray_label ">{{projectApprocalDetail.projectName}}</div></el-col>
|
|
|
+ </el-row>
|
|
|
+ <el-row :gutter="10" >
|
|
|
+ <el-col :span="5" ><div class="gray_label">{{'项目分类:'}}</div></el-col>
|
|
|
+ <el-col :span="7" ><div class="gray_label ">{{projectApprocalDetail.categoryName}}</div></el-col>
|
|
|
+ <el-col :span="5" ><div class="gray_label">{{'项目类型:'}}</div></el-col>
|
|
|
+ <el-col :span="7" ><div class="gray_label ">{{projectApprocalDetail.isPublic==0?"正式项目":"非项目"}}</div></el-col>
|
|
|
+ </el-row>
|
|
|
+ <el-row :gutter="10" >
|
|
|
+ <el-col :span="3" ><div class="gray_label">{{'项目描述:'}}</div></el-col>
|
|
|
+ <el-col :span="21" ><div class="gray_label ">{{projectApprocalDetail.projectDesc}}</div></el-col>
|
|
|
+ </el-row>
|
|
|
+ <el-row :gutter="10" >
|
|
|
+ <el-col :span="3" ><div class="gray_label">{{'全部参与人:'}}</div></el-col>
|
|
|
+ <el-col :span="21" ><div class="gray_label ">
|
|
|
+ <span v-for="(par, index) in projectApprocalDetail.participationApprovalList" :key="par.userId">
|
|
|
<span v-if="user.userNameNeedTranslate != 1">
|
|
|
{{par.userName}}
|
|
|
</span>
|
|
@@ -328,13 +367,18 @@
|
|
|
</span>
|
|
|
<span v-if="index < projectApprocalDetail.participationApprovalList.length-1">,</span>
|
|
|
</span>
|
|
|
- </div>
|
|
|
- <div class="line"><span>{{'项目经理:'}}</span>
|
|
|
- <span v-if="user.userNameNeedTranslate != 1">{{projectApprocalDetail.inchargerName}}</span>
|
|
|
- <span v-if="user.userNameNeedTranslate == 1&&projectApprocalDetail.inchargerName"><TranslationOpenDataText type='userName' :openid='projectApprocalDetail.inchargerName'></TranslationOpenDataText></span>
|
|
|
- </div>
|
|
|
- <div class="line"><span>{{'日报审核人:'}}</span>
|
|
|
- <span v-for="(par,index) in projectApprocalDetail.projectApprovalAuditorList" :key="par.auditorId">
|
|
|
+ </div></el-col>
|
|
|
+ </el-row>
|
|
|
+ <el-row :gutter="10" >
|
|
|
+ <el-col :span="5" ><div class="gray_label">{{'项目经理:'}}</div></el-col>
|
|
|
+ <el-col :span="7" ><div class="gray_label " >
|
|
|
+ <span v-if="user.userNameNeedTranslate != 1">{{projectApprocalDetail.inchargerName}}</span>
|
|
|
+ <span v-if="user.userNameNeedTranslate == 1&&projectApprocalDetail.inchargerName"><TranslationOpenDataText type='userName' :openid='projectApprocalDetail.inchargerName'></TranslationOpenDataText></span>
|
|
|
+ </div>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="5" ><div class="gray_label">{{'日报审核人:'}}</div></el-col>
|
|
|
+ <el-col :span="7" ><div class="gray_label ">
|
|
|
+ <span v-for="(par,index) in projectApprocalDetail.projectApprovalAuditorList" :key="par.auditorId">
|
|
|
<span v-if="user.userNameNeedTranslate != 1">
|
|
|
{{par.auditorName}}
|
|
|
</span>
|
|
@@ -343,25 +387,36 @@
|
|
|
</span>
|
|
|
<span v-if="index < projectApprocalDetail.projectApprovalAuditorList.length-1">,</span>
|
|
|
</span>
|
|
|
- </div>
|
|
|
- <div class="line"><span>{{'级别:'}}</span><span>{{importanceListLable[projectApprocalDetail.level-1]}}</span></div>
|
|
|
- <div class="line"><span>{{'合同金额:'}}</span><span>{{projectApprocalDetail.contractAmount}}</span></div>
|
|
|
- <div class="line">
|
|
|
- <span>{{'计划开始日期:'}}</span><span>{{projectApprocalDetail.planStartDate}}</span>
|
|
|
- <span>{{'计划结束日期:'}}</span><span>{{projectApprocalDetail.planEndDate}}</span>
|
|
|
- </div>
|
|
|
+ </div></el-col>
|
|
|
+ </el-row>
|
|
|
+ <el-row :gutter="10" >
|
|
|
+ <el-col :span="5" ><div class="gray_label">{{'级别:'}}</div></el-col>
|
|
|
+ <el-col :span="7" ><div class="gray_label ">{{importanceListLable[projectApprocalDetail.level-1]}}</div></el-col>
|
|
|
+ <el-col :span="5" ><div class="gray_label">{{'合同金额:'}}</div></el-col>
|
|
|
+ <el-col :span="7" ><div class="gray_label ">{{projectApprocalDetail.contractAmount}}</div></el-col>
|
|
|
+ </el-row>
|
|
|
+ <el-row :gutter="10" >
|
|
|
+ <el-col :span="5" ><div class="gray_label">{{'计划开始日期:'}}</div></el-col>
|
|
|
+ <el-col :span="7" ><div class="gray_label ">{{projectApprocalDetail.planStartDate}}</div></el-col>
|
|
|
+ <el-col :span="5" ><div class="gray_label">{{'计划结束日期:'}}</div></el-col>
|
|
|
+ <el-col :span="7" ><div class="gray_label ">{{projectApprocalDetail.planEndDate}}</div></el-col>
|
|
|
+ </el-row>
|
|
|
+
|
|
|
<el-divider></el-divider>
|
|
|
- <div class="line">
|
|
|
- <span>{{ $t('costbaseline') }}</span>
|
|
|
- </div>
|
|
|
- <div class="line" v-for="(item,index) in projectApprocalDetail.projectApprovalBasecostList">
|
|
|
+ <el-row :gutter="10" >
|
|
|
+ <el-col :span="24" ><div class="gray_label">{{'成本基线'}}</div></el-col>
|
|
|
+ </el-row>
|
|
|
+
|
|
|
+ <div class="gray_label" v-for="(item,index) in projectApprocalDetail.projectApprovalBasecostList">
|
|
|
<span>{{item.baseName+":"}}</span><span>{{item.baseAmount}}</span>
|
|
|
</div>
|
|
|
<el-divider></el-divider>
|
|
|
- <div class="line">
|
|
|
- <span>{{ $t('caoZuoJiLu') }}</span>
|
|
|
- </div>
|
|
|
- <div class="line" v-for="(item,index) in approvalLogData">
|
|
|
+
|
|
|
+ <el-row :gutter="10" >
|
|
|
+ <el-col :span="24" ><div class="gray_label">{{'操作记录'}}</div></el-col>
|
|
|
+ </el-row>
|
|
|
+
|
|
|
+ <div class="gray_label" v-for="(item,index) in approvalLogData">
|
|
|
<span v-if="user.userNameNeedTranslate != 1">{{item.userName}} {{item.createTime}} {{approvalTypeStr[item.type]}}{{ $t('leRiBao') }}</span>
|
|
|
<span v-if="user.userNameNeedTranslate == 1"><TranslationOpenDataText type='userName' :openid='item.userName'></TranslationOpenDataText> {{item.createTime}}{{approvalTypeStr[item.type]}}{{ $t('leRiBao') }}</span>
|
|
|
</div>
|
|
@@ -400,6 +455,9 @@ components: {
|
|
|
props: { },
|
|
|
data() {
|
|
|
return {
|
|
|
+ denyReasonDialog:false,
|
|
|
+ denyReasonValue: {},
|
|
|
+ denyReasonRReason: '',
|
|
|
keyword:"",
|
|
|
searchField:"1",
|
|
|
user: JSON.parse(sessionStorage.getItem("user")),
|
|
@@ -486,6 +544,49 @@ mounted () {
|
|
|
this.getUsers();
|
|
|
},
|
|
|
methods: {
|
|
|
+ deny() {
|
|
|
+ // console.log(this.denyReasonValue);
|
|
|
+ // console.log(this.denyReasonRReason);
|
|
|
+
|
|
|
+ this.listLoading = true;
|
|
|
+ this.http.post('/project-approval/check',{
|
|
|
+ id:this.denyReasonValue.item.id ,
|
|
|
+ checkType:this.denyReasonValue.num,
|
|
|
+ revokeType:'',
|
|
|
+ rejectInfo:this.denyReasonRReason
|
|
|
+ },
|
|
|
+ res => {
|
|
|
+ this.listLoading = false;
|
|
|
+ if (res.code == "ok") {
|
|
|
+ this.$message({
|
|
|
+ message: this.$t('operationissuccessful'),
|
|
|
+ type: "success"
|
|
|
+ });
|
|
|
+ this.addFormVisible=false
|
|
|
+ this.denyReasonDialog=false
|
|
|
+ this.getList();
|
|
|
+ } else {
|
|
|
+ this.$message({
|
|
|
+ message: res.msg,
|
|
|
+ type: "error"
|
|
|
+ });
|
|
|
+ }
|
|
|
+ },
|
|
|
+ error => {
|
|
|
+ this.listLoading = false;
|
|
|
+ this.$message({
|
|
|
+ message: error,
|
|
|
+ type: "error"
|
|
|
+ });
|
|
|
+ }
|
|
|
+ );
|
|
|
+
|
|
|
+ },
|
|
|
+ showDenyDialog(item, num) {
|
|
|
+ this.denyReasonDialog = true;
|
|
|
+ this.denyReasonValue = {item,num}
|
|
|
+
|
|
|
+ },
|
|
|
isSelectable(row,index){
|
|
|
if(row.creatorId == this.user.id || row.inchargerId == this.user.id || this.permissions.projectApprovalEdit){
|
|
|
return true
|
|
@@ -754,6 +855,7 @@ methods: {
|
|
|
creatorId: item.creatorId,
|
|
|
outputValue: item.outputValue,
|
|
|
status: item.status,
|
|
|
+
|
|
|
}
|
|
|
this.participator=theData.participationApprovalList
|
|
|
this.changeParticipator();
|
|
@@ -1407,4 +1509,8 @@ methods: {
|
|
|
.on {
|
|
|
color: #409EFF;
|
|
|
}
|
|
|
+.gray_label {
|
|
|
+ color:#999 !important;
|
|
|
+ min-height: 20px;
|
|
|
+}
|
|
|
</style>
|