Commit 1deb6c0a by liangzhen

自查配置

1 parent 12d937e3
...@@ -21,7 +21,7 @@ export const routes = [ ...@@ -21,7 +21,7 @@ export const routes = [
path: '/', path: '/',
name: 'main', name: 'main',
component: () => import('@/views/layout/index.vue'), component: () => import('@/views/layout/index.vue'),
redirect:'/mainLayout/auxiliarySelection', // redirect:'/mainLayout/auxiliarySelection',
children:[ children:[
{ {
...@@ -34,6 +34,118 @@ export const routes = [ ...@@ -34,6 +34,118 @@ export const routes = [
name:"mainLayout", name:"mainLayout",
component: () => import('@/views/layout/mainLayout.vue'), component: () => import('@/views/layout/mainLayout.vue'),
children:[ children:[
//后评估自查
{
path: '/assesszc/auxiliarySelection',
name: 'auxiliarySelection',
component: () => import('@/views/assessZC/auxiliarySelection.vue'),
meta: {
title: "评估项目辅助选定",
},
},
{
path: '/assesszc/projectCheckQuestionQuery',
name: 'problemLlistQuery',
component: () => import('@/views/postConcentrationCheck/projectCheckQuestionQuery.vue'),
},
{
path: '/assesszc/rectificationFeedbackQuery',
name: 'problemLlistQuery',
component: () => import('@/views/postConcentrationCheck/rectificationFeedbackQuery.vue'),
},
{
path: '/assesszc/assistedConfirm',
name: 'assistedConfirm',
component: () => import('@/views/assessZC/assistedConfirm.vue'),
},
{
path: '/assesszc/assistedFeedback',
name: 'assistedFeedback',
component: () => import('@/views/assessZC/assistedFeedback.vue'),
},
{
path: '/assesszc/assistedRect',
name: 'assistedRect',
component: () => import('@/views/assessZC/assistedRect.vue'),
},
{
path: '/assesszc/assistedVerif',
name: 'assistedVerif',
component: () => import('@/views/assessZC/assistedVerif.vue'),
},
{
path: '/assesszc/assistedViewing',
name: 'assistedViewing',
component: () => import('@/views/assessZC/assistedViewing.vue'),
},
{
path: '/assesszc/assitedDistribution',
name: 'assitedDistribution',
component: () => import('@/views/assessZC/assitedDistribution.vue'),
},
{
path: '/assesszc/auxiliaryInspection',
name: 'auxiliaryInspection',
component: () => import('@/views/assessZC/auxiliaryInspection.vue'),
},
{
path: '/assesszc/auxiliaryQuery',
name: 'auxiliaryQuery',
component: () => import('@/views/assessZC/auxiliaryQuery.vue'),
},
{
path: '/assesszc/confirmRelease',
name: 'confirmRelease',
component: () => import('@/views/assessZC/confirmRelease.vue'),
},
{
path: '/assesszc/confirmChanges',
name: 'confirmChanges',
component: () => import('@/views/assessZC/confirmChanges.vue'),
},
{
path: '/assesszc/materialAcquisition',
name: 'materialAcquisition',
component: () => import('@/views/assessZC/materialAcquisition.vue'),
},
{
path: '/assesszc/materialAnalysis',
name: 'materialAnalysis',
component: () => import('@/views/assessZC/materialAnalysis.vue'),
},
{
path: '/assesszc/Compliance',
name: 'Compliance',
component: () => import('@/views/assessZC/checkCompliance.vue'),
},
{
path: '/assesszc/Compliancefz',
name: 'Compliancefz',
component: () => import('@/views/assessZC/checkComplianceFZ.vue'),
},
{
path: '/assesszc/Compliancexf',
name: 'Compliancexf',
component: () => import('@/views/assessZC/checkComplianceXF.vue'),
},
{
path: '/assesszc/qrCompliance',
name: 'qrCompliance',
component: () => import('@/views/assessZC/qrCompliance.vue'),
},
{
path: '/assesszc/correctiveAssistanceVerification',
name: 'correctiveAssistanceVerification',
component: () => import('@/views/assessZC/correctiveAssistanceVerification.vue'),
},
{
path: '/assesszc/attachSynchronousArchiving',
name: 'attachSynchronousArchiving',
component: () => import('@/views/assessZC/attachSynchronousArchiving.vue'),
},
//后评估互查
{ {
path: '/mainLayout/auxiliarySelection', path: '/mainLayout/auxiliarySelection',
name: 'auxiliarySelection', name: 'auxiliarySelection',
......
...@@ -200,68 +200,68 @@ export function trendsRules(type) { ...@@ -200,68 +200,68 @@ export function trendsRules(type) {
name: "后评估检查", name: "后评估检查",
url: "", url: "",
children: [ children: [
// { {
// name: "后评估自查", name: "后评估自查",
// url: "", url: "",
// children: [ children: [
// { {
// name: "自查项目辅助选定", name: "自查项目辅助选定",
// url: "/mainLayout/auxiliarySelection", url: "/assesszc/auxiliarySelection",
// children: [], children: [],
// }, },
// { {
// name: "自查批次确认发布", name: "自查批次确认发布",
// url: "/mainLayout/confirmRelease", url: "/assesszc/confirmRelease",
// children: [], children: [],
// }, },
// { {
// name: "自查材料自动获取", name: "自查材料自动获取",
// url: "/mainLayout/materialAcquisition", url: "/assesszc/materialAcquisition",
// children: [], children: [],
// }, },
// { {
// name: "自查项目辅助检查", name: "自查项目辅助检查",
// url: "/mainLayout/auxiliaryInspection", url: "/assesszc/auxiliaryInspection",
// children: [], children: [],
// }, },
// { {
// name: "自查结果确认更改", name: "自查结果确认更改",
// url: "/mainLayout/confirmChanges", url: "/assesszc/confirmChanges",
// children: [], children: [],
// }, },
// {
// { {
// name: "自查问题辅助下发", name: "自查问题辅助下发",
// url: "/mainLayout/assitedDistribution", url: "/assesszc/assitedDistribution",
// children: [], children: [],
// }, },
// { {
// name: "自查问题辅助反馈", name: "自查问题辅助反馈",
// url: "/mainLayout/assistedFeedback", url: "/assesszc/assistedFeedback",
// children: [], children: [],
// }, },
// { {
// name: "自查申诉辅助确认", name: "自查申诉辅助确认",
// url: "/mainLayout/assistedConfirm", url: "/assesszc/assistedConfirm",
// children: [], children: [],
// }, },
// { {
// name: "自查问题辅助整改", name: "自查问题辅助整改",
// url: "/mainLayout/assistedRect", url: "/assesszc/assistedRect",
// children: [], children: [],
// }, },
// { {
// name: "自查整改辅助核验", name: "自查整改辅助核验",
// url: "/mainLayout/correctiveAssistanceVerification", url: "/assesszc/correctiveAssistanceVerification",
// children: [], children: [],
// }, },
// { {
// name: "自查材料同步归档", name: "自查材料同步归档",
// url: "/mainLayout/attachSynchronousArchiving", url: "/assesszc/attachSynchronousArchiving",
// children: [], children: [],
// }, },
// ], ],
// }, },
{ {
name: "后评估互查", name: "后评估互查",
url: "", url: "",
......
<template>
<div class="main">
<el-form
:model="ruleForm"
label-width="100px"
class="demo-ruleForm"
ref="formName"
>
<el-form-item label="批次年度:" prop="batchYear" class="fromItem">
<el-select v-model="ruleForm.batchYear" placeholder="请选择" clearable>
<el-option
v-for="(item, index) in yearsList"
:key="index"
:label="item+'年'"
:value="item"/>
</el-select>
</el-form-item>
<el-form-item label="后评估批次名称:" prop="batchName" class="fromItem">
<el-input
v-model="ruleForm.batchName"
placeholder="请输入"
clearable
></el-input>
</el-form-item>
<!-- <el-form-item label="后评估状态:" prop="postEvalState" class="fromItem">
<el-select
v-model="ruleForm.postEvalState"
placeholder="请选择"
clearable
>
<el-option label="未下发" value="0"></el-option>
<el-option label="已下发" value="1"></el-option>
<el-option label="已撤回" value="2"></el-option>
</el-select>
</el-form-item> -->
<el-form-item class="button">
<el-button @click="submitForm()">
<img class="buttonIcon" src="../../assets/cx.png" />查询</el-button
>
<el-button @click="resetForm('ruleForm')">
<img class="buttonIcon" src="../../assets/cz.png" />重置</el-button
>
<el-button @click="appeal()">
<i class="el-icon-chat-dot-square"></i
>&nbsp;&nbsp;&nbsp;问题复核</el-button
>
<!-- <el-button @click="appeal()">
<i class="el-icon-document-remove"></i
>&nbsp;&nbsp;&nbsp;问题下发</el-button
> -->
</el-form-item>
</el-form>
<div class="setscroll">
<el-table
@selection-change="handleSelectionChange"
ref="multipleTable"
:data="tableData"
tooltip-effect="dark"
header-cell-class-name="custom-th-background"
class="eltable"
:row-class-name="tableRowClassName"
border
>
<el-table-column label="序号" width="55" type="index">
</el-table-column>
<el-table-column type="selection"> </el-table-column>
<el-table-column label="批次年度" prop="batchYear">
<template slot-scope="scope">
{{scope.row.batchYear}}
</template>
</el-table-column>
<el-table-column prop="batchName" label="后评估批次名称">
</el-table-column>
<el-table-column prop="projectName" label="评估项目名称" show-overflow-tooltip >
</el-table-column>
<el-table-column prop="projectCategory" label="建设形式">
</el-table-column>
<el-table-column prop="projectStatus" label="项目建设阶段">
</el-table-column>
<!-- <el-table-column prop="createTime" label="历史审核状态">
</el-table-column> -->
<el-table-column prop="expertName" label="评审专家名单">
</el-table-column>
<el-table-column prop="appealDeadline" label="问题申诉截止时间">
</el-table-column>
<el-table-column prop="rectificationDeadline" label="问题整改截止时间">
</el-table-column>
<el-table-column prop="postEvalStateText" label="复核状态">
</el-table-column>
<!-- <el-table-column prop="reviewStatus" label="后评估状态"> </el-table-column> -->
<el-table-column prop="reviewDate" label="评估日期"> </el-table-column>
</el-table>
</div>
<el-pagination
@size-change="handleSizeChange"
@current-change="handleCurrentChange"
:current-page="currentPage"
:page-sizes="[10, 15, 20, 50]"
:page-size="100"
layout="total, sizes, prev, pager, next, jumper"
:total="total"
class="elpagination"
>
</el-pagination>
<!-- 问题复核 -->
<el-dialog
title="复核情况"
:visible.sync="dialogQR"
width="79%"
:modal-append-to-body="false"
:append-to-body="false"
@close="closed"
>
<div class="dialog">
<h3>
项目名称:一期项目-电力营销-2023年网上国网(网上国网V1.0)-设计开发项目
</h3>
<div class="continer">
<p class="xqtitle"><span></span>问题清单</p>
<el-table
:data="tableDataQR"
tooltip-effect="dark"
style="width: 100%"
header-cell-class-name="custom-th-background"
class="eltable"
:row-class-name="tableRowClassName"
:span-method="arraySpanMethod"
border
>
<el-table-column
label="项目环节"
prop="projectStagetext"
width="150"
>
</el-table-column>
<el-table-column label="序号" width="100" type="index">
</el-table-column>
<el-table-column label="问题检查项" prop="quesCheckItem" show-overflow-tooltip>
</el-table-column>
<el-table-column
label="检查说明"
prop="checkDesc"
show-overflow-tooltip
>
</el-table-column>
<el-table-column label="评估问题" prop="evalQues">
</el-table-column>
<el-table-column label="问题确认" width="auto">
<template slot-scope="scope">
<el-switch
v-model="scope.row.confirmStatus"
active-color="#C0C0C0"
inactive-color="#13ce66"
active-value="2"
inactive-value="1"
active-text="无异议"
inactive-text="有异议"
@change="controlSwitch($event, scope.row)"
>
<template v-slot:active>
<span>开启</span>
</template>
<template v-slot:inactive>
<span>关闭</span>
</template>
</el-switch>
</template>
</el-table-column>
<el-table-column label="解释批注">
<template slot-scope="scope" v-if="scope.row.confirmStatus == '1'">
<el-input
v-model="scope.row.feedback"
></el-input>
</template>
</el-table-column>
<el-table-column label="附加解释材料" width="400">
<template slot-scope="scope" v-if="scope.row.confirmStatus == '1'&&scope.row.fileId">
{{
scope.row.fileName
}} <el-button @click="handleClickXZ(scope.row)">下载</el-button>
</template>
</el-table-column>
<el-table-column label="复核情况" prop="appealStatus">
<template slot-scope="scope" v-if="scope.row.confirmStatus == '1'">
<el-select
v-model="scope.row.appealStatus"
placeholder="请选择"
>
<el-option label="请选择" value=""></el-option>
<!-- <el-option label="未申诉" :value="0"></el-option> -->
<el-option label="已申诉" :value="1"></el-option>
<el-option label="申诉驳回" :value="2"></el-option>
<el-option label="申诉通过" :value="3"></el-option>
</el-select>
</template>
</el-table-column>
</el-table>
</div>
</div>
<p class="midBtn">
<span @click="cancelSS()">取消</span><span @click="saveSS()">保存</span>
</p>
</el-dialog>
<!-- 复核下发 -->
<el-dialog
title="复核情况"
:visible.sync="dialogSS"
width="79%"
:modal-append-to-body="false"
:append-to-body="false"
>
<div class="dialog">
<h3>
项目名称:一期项目-电力营销-2023年网上国网(网上国网V1.0)-设计开发项目
</h3>
<div class="continer">
<p class="xqtitle"><span></span>问题清单</p>
<el-table
:data="tableDataSS"
tooltip-effect="dark"
style="width: 100%"
header-cell-class-name="custom-th-background"
class="eltable"
:row-class-name="tableRowClassName"
:span-method="arraySpanMethodss"
border
>
<el-table-column
label="项目环节"
prop="projectStagetext"
width="150"
>
</el-table-column>
<el-table-column label="序号" width="100" type="index">
</el-table-column>
<el-table-column label="问题检查项" prop="quesCheckItem" show-overflow-tooltip>
</el-table-column>
<el-table-column
label="检查说明"
prop="checkDesc"
show-overflow-tooltip
>
</el-table-column>
<el-table-column label="评估问题" prop="evalQues">
</el-table-column>
<el-table-column label="问题确认" width="auto">
<template slot-scope="scope">
<el-switch
v-model="scope.row.confirmStatus"
active-color="#C0C0C0"
inactive-color="#13ce66"
active-value="2"
inactive-value="1"
active-text="无异议"
inactive-text="有异议"
@change="controlSwitch($event, scope.row)"
>
<template v-slot:active>
<span>开启</span>
</template>
<template v-slot:inactive>
<span>关闭</span>
</template>
</el-switch>
</template>
</el-table-column>
<el-table-column label="解释批注">
<template slot-scope="scope" v-if="scope.row.confirmStatus == '1'" >
<el-input v-model="scope.row.feedback" ></el-input>
</template>
</el-table-column>
<el-table-column label="附加解释材料" width="400">
<template slot-scope="scope" v-if="scope.row.confirmStatus == '1'&&scope.row.fileId">
{{
scope.row.fileName
}} <el-button @click="handleClickXZ(scope.row)">下载</el-button>
</template>
</el-table-column>
<el-table-column label="复核情况" prop="appealStatus">
<template slot-scope="scope" v-if="scope.row.confirmStatus == '1'">
<el-select
v-model="scope.row.appealStatus"
placeholder="请选择"
>
<el-option label="请选择" :value="null"></el-option>
<!-- <el-option label="未申诉" :value="0"></el-option> -->
<!-- <el-option label="已申诉" :value="1"></el-option> -->
<el-option label="申诉驳回" :value="2"></el-option>
<el-option label="申诉通过" :value="3"></el-option>
</el-select>
</template>
</el-table-column>
</el-table>
</div>
</div>
<p class="midBtn">
<span @click="cancel()">取消</span><span @click="saveSS()">保存</span><span @click="save()">问题下发</span>
</p>
</el-dialog>
</div>
</template>
<script>
import {
appealAssistanceConfirmatio,
ossupload,
wtfhappealAssistanceConfirmatio,
xfappealAssistanceConfirmatio,
wtssSelAssistanceConfirmatio,
downloadObject
} from "@/api/index";
import { generateYearOptions } from "@/utils/cache";
export default {
data() {
return {
yearsList:generateYearOptions(),
dialogSS: false,
ruleForm: {
batchYear: "",
batchName: "",
postEvalState: "",
},
ruleFormdialogBJ: {
appealDeadline: "",
rectificationDeadline: "",
},
rules: {
appealDeadline: [
{
required: true,
message: "请选择问题申诉截止时间",
trigger: "change",
},
],
rectificationDeadline: [
{
required: true,
message: "问题整改截止时间",
trigger: "change",
},
],
},
tableData: [],
tableDataQR: [],
tableDataSS: [],
checkedList: [],
currentPage: 1,
pageSizetjcl: 10,
total: 0,
dialogQR: false,
pageSize: 10,
mergingPos: 0,
mergingRows: [],
mergingPosss: 0,
mergingRowsss: [],
};
},
mounted() {
this.submitForm();
},
methods: {
async submitForm() {
let params = {
current: this.currentPage,
pageSize: this.pageSize,
};
Object.assign(params, this.ruleForm);
console.log(params);
let res = await appealAssistanceConfirmatio(params);
if (res.code == "200") {
this.tableData = res.data.records;
this.tableData.forEach((item) => {
if (item.reviewStatus >= "4") {
this.$set(item, "postEvalStateText", "复核已下发");
} else {
this.$set(item, "postEvalStateText", "复核未下发");
}
});
console.log(this.tableData,'tableDatatableData')
this.total = res.data.total * 1;
}
},
resetForm() {
this.$refs.formName.resetFields();
this.currentPage = 1;
this.pageSize = 10;
this.submitForm();
},
// //问题复核
// async confirm() {
// this.mergingPos = 0;
// this.mergingRows = [];
// if (this.checkedList.length != 1) {
// this.$message("请选择一条数据进行复核");
// return;
// }
// this.dialogQR = true;
// let params = {
// projectId: this.checkedList[0].projectId,
// batchId: this.checkedList[0].batchId,
// };
// let res = await wtssSelAssistanceConfirmatio(params);
// if (res.code == "200") {
// this.tableDataQR = res.data.records;
// this.tableDataQR.forEach((item) => {
// switch (item.projectStage) {
// case "1":
// this.$set(item, "projectStagetext", "1.可研");
// break;
// case "2":
// this.$set(item, "projectStagetext", "2.计划");
// break;
// case "3":
// this.$set(item, "projectStagetext", "3.采购");
// break;
// case "4":
// this.$set(item, "projectStagetext", "4.合同");
// break;
// case "5":
// this.$set(item, "projectStagetext", "5.执行");
// break;
// case "6":
// this.$set(item, "projectStagetext", "6.结决算及转资");
// break;
// }
// });
// console.log(this.tableDataQR, "加不进去?");
// this.dataPretreatment();
// }
// },
dataPretreatment() {
for (let i = 0; i < this.tableDataQR.length; i++) {
// tabledata 表格数据源
if (i === 0) {
this.mergingRows.push(1);
this.mergingPos = 0;
} else {
if (
this.tableDataQR[i].projectStage ===
this.tableDataQR[i - 1].projectStage
) {
//哪些数据是要合并的 合并的条件是什么
this.mergingRows[this.mergingPos] += 1;
this.mergingRows.push(0);
} else {
this.mergingRows.push(1);
this.mergingPos = i;
}
}
}
},
dataPretreatmentSS() {
for (let i = 0; i < this.tableDataSS.length; i++) {
// tabledata 表格数据源
if (i === 0) {
this.mergingRowsss.push(1);
this.mergingPosss = 0;
} else {
if (
this.tableDataSS[i].projectStage ===
this.tableDataSS[i - 1].projectStage
) {
//哪些数据是要合并的 合并的条件是什么
this.mergingRowsss[this.mergingPosss] += 1;
this.mergingRowsss.push(0);
} else {
this.mergingRowsss.push(1);
this.mergingPosss = i;
}
}
}
},
//表格颜色
tableRowClassName({ row, rowIndex }) {
if (rowIndex % 2 == 1) {
return "warning-row";
}
return "";
},
//主列表选中行信息
handleSelectionChange(selection) {
console.log("222222");
if (Array.isArray(selection) && selection.length > 1) {
console.log("222222333", this.checkedList);
this.$refs.multipleTable.toggleRowSelection(selection[0], false);
this.$refs.multipleTable.toggleRowSelection(selection[1], true);
}
this.checkedList = this.$refs.multipleTable.selection;
this.$forceUpdate();
console.log(this.checkedList, "2222");
},
handleSizeChange(val) {
console.log(`每页 ${val} 条`);
this.pageSize = val;
},
handleCurrentChange(val) {
console.log(`当前页: ${val}`);
this.currentPage = val;
},
arraySpanMethod({ row, column, rowIndex, columnIndex }) {
if (columnIndex === 0) {
//第一列
const _row = this.mergingRows[rowIndex];
const _col = _row > 0 ? 1 : 0;
return {
rowspan: _row,
colspan: _col,
};
}
},
arraySpanMethodss({ row, column, rowIndex, columnIndex }) {
if (columnIndex === 0) {
//第一列
const _row = this.mergingRowsss[rowIndex];
const _col = _row > 0 ? 1 : 0;
return {
rowspan: _row,
colspan: _col,
};
}
},
//问题确认开关
controlSwitch(val, row) {
console.log("333", val, row);
},
cancelSS() {
this.dialogQR = false;
},
async save() {
console.log('this.tableDataSS',this.tableDataSS)
this.tableDataSS.forEach(item=>{
if(item.confirmStatus==1&&item.appealStatus!=2&&item.appealStatus!=3){
this.$message("有未选择的复核情况");
throw new Error("主动跳出循环");
}
return
})
let res = await xfappealAssistanceConfirmatio(this.tableDataSS);
if (res.code == "200") {
this.dialogSS = false;
this.resetForm();
} else {
this.$message("复核下发失败");
}
},
cancel() {
this.dialogSS = false;
},
async saveSS() {
// this.tableDataQR
let res = await wtfhappealAssistanceConfirmatio(this.tableDataQR);
if (res.code == "200") {
this.dialogQR = false;
this.resetForm();
}
},
//问题下发
async appeal() {
this.mergingPosss = 0;
this.mergingRowsss = [];
if (this.checkedList.length != 1) {
this.$message("请选择一条数据进行复核");
return;
}
if (this.checkedList[0].postEvalStateText == "复核已下发") {
this.$message("请选择未下发的数据");
return;
}
this.dialogSS = true;
let params = {
projectId: this.checkedList[0].projectId,
batchId: this.checkedList[0].batchId,
};
let res = await wtssSelAssistanceConfirmatio(params);
if (res.code == "200") {
this.tableDataSS = res.data.records;
this.tableDataSS.forEach((item) => {
if(item.appealStatus< 2){
item.appealStatus=null
// this.$set(item, "appealStatus", "");
}
if (!item.confirmStatus) {
this.$set(item, "confirmStatus", "2");
}
switch (item.projectStage) {
case "1":
this.$set(item, "projectStagetext", "1.可研");
break;
case "2":
this.$set(item, "projectStagetext", "2.计划");
break;
case "3":
this.$set(item, "projectStagetext", "3.采购");
break;
case "4":
this.$set(item, "projectStagetext", "4.合同");
break;
case "5":
this.$set(item, "projectStagetext", "5.执行");
break;
case "6":
this.$set(item, "projectStagetext", "6.结决算及转资");
break;
}
});
console.log(this.tableDataSS);
this.dataPretreatmentSS();
}
},
handleFileUpload(event) {
console.log("来了么");
this.file = event.target.files[0];
},
closed() {
console.log("关闭");
this.handleSelectionChange();
},
async handleClickXZ(scope) {
console.log(scope.fileId);
let response=await downloadObject({
fileId:scope.fileId*1
})
let blob = new Blob([response]);
if ('download' in document.createElement('a')) {
let elink = document.createElement('a');
elink.download = scope.fileName;
elink.style.display = 'none';
elink.href = URL.createObjectURL(blob);
document.body.appendChild(elink);
elink.click();
URL.revokeObjectURL(elink.href); // 释放URL 对象
document.body.removeChild(elink);
}
},
},
};
</script>
<style scoped lang="scss">
.main {
font-size: 14px;
position: relative;
height: 100%;
width: 100%;
box-sizing: border-box;
overflow-x: hidden;
}
.el-form {
display: flex;
width: 99%;
flex-wrap: wrap;
border-top: 2px solid #23c6c8;
border-left: 1px solid #dee5e7;
border-right: 1px solid #dee5e7;
border-bottom: 1px solid #dee5e7;
padding: 20px 10px;
margin-bottom: 20px;
.fromItem {
min-width: 24%;
margin: 0 0.5%;
margin-bottom: 20px;
.el-input {
width: 226px;
}
.el-select {
width: 226px;
}
}
/deep/ .el-form-item__content {
text-align: left;
display: inline-block;
margin-left: 10px !important;
}
/deep/ .el-form-item__label {
font-weight: bold;
color: #000;
width: 160px !important;
}
.button {
display: inline-block;
width: 100%;
text-align: left;
/deep/ .el-form-item__content {
margin-left: 20px !important;
text-align: left;
img {
width: 14px;
height: 14px;
margin-right: 15px;
vertical-align: middle;
}
}
.el-button {
background-color: #23c6c8;
border-color: #23c6c8;
color: #fff;
}
}
}
.eltable {
box-sizing: border-box;
text-align: center;
width: 150%;
min-width: 150%;
// margin-right: 210px;
// margin-top: 3vh;
}
/deep/ .el-table .warning-row {
background: #f0ffff;
// color: #2785e6;
}
.elpagination {
text-align: right;
margin-right: 100px;
}
/deep/ .el-dialog {
border-radius: 10px;
margin-top: 3vh !important;
margin-left: 3vw !important;
}
/deep/.el-table th.el-table__cell.is-leaf,
.el-table td.el-table__cell {
text-align: center;
}
/deep/ .el-dialog__wrapper {
position: absolute;
}
/deep/ .v-modal {
position: absolute;
}
/deep/ .el-dialog__header {
background-color: #0d867f;
padding-bottom: 20px;
text-align: left;
border-radius: 10px 10px 0 0;
.el-dialog__title {
color: #fff;
}
}
/deep/ .el-table__header th {
background-color: #eeeeee;
font-weight: bold;
.cell {
color: #333;
}
}
/deep/.el-table {
// width: 100%;
.el-table__header-wrapper table,
.el-table__body-wrapper table {
// width: 100% !important;
}
.el-table__body,
.el-table__footer,
.el-table__header {
table-layout: auto;
}
}
.textarea {
width: 100%;
.el-textarea {
width: 60%;
}
}
.Btn {
width: 200px;
margin: 0 auto;
height: 30px;
line-height: 30px;
span {
display: inline-block;
width: 80px;
height: 25px;
line-height: 25px;
text-align: center;
border-radius: 4px;
margin-right: 12px;
}
span:first-of-type {
border: 1px solid #000;
}
span:last-of-type {
background-color: #0d867f;
border: 1px solid #0d867f;
color: #fff;
}
}
/deep/ .el-dialog__headerbtn .el-dialog__close {
color: #fff;
}
.zjBtn {
width: 400px;
text-align: left;
vertical-align: middle;
span {
display: inline-block;
width: 140px;
height: 25px;
line-height: 25px;
text-align: center;
border-radius: 5px;
vertical-align: middle;
}
span:last-of-type {
background-color: #4ca6a7;
color: #fff;
padding: 5px 10px;
margin-left: 10px;
}
}
/deep/ .el-icon-position {
margin-right: 10px;
}
/deep/ .el-icon-folder-delete {
margin-right: 10px;
}
.cxItem {
text-align: right;
width: 20%;
.zjquery {
display: inline-block;
background-color: #4ca6a7;
width: 89px;
height: 40px;
color: #fff;
text-align: center;
line-height: 40px;
border-radius: 5px;
}
}
.midBtn {
margin: 20px auto;
// margin-top: 20px;
span {
display: inline-block;
width: 80px;
height: 29px;
line-height: 29px;
text-align: center;
margin-right: 10px;
border-radius: 5px;
box-sizing: border-box;
background-color: #4ca6a7;
color: #fff;
border: 1px solid #4ca6a7;
}
span:first-of-type {
border: 1px solid grey;
background-color: #fff;
color: grey;
}
// span:last-of-type {
// background-color: #4ca6a7;
// color: #fff;
// border: 1px solid #4ca6a7;
// }
}
.dialog {
height: 680px;
overflow-y: auto;
.xqtitle {
text-align: left;
font-size: 18px;
border-bottom: 1px solid gainsboro;
padding-bottom: 10px;
span {
display: inline-block;
width: 5px;
height: 20px;
background: #0d867f;
margin-right: 14px;
vertical-align: middle;
}
}
/deep/ .el-form {
width: 65%;
flex-wrap: wrap;
padding: 0 10px;
text-align: center;
margin: 100px auto;
border: none;
.fromItem {
text-align: center;
width: 51%;
margin: 0 auto;
margin-bottom: 20px;
.el-input {
width: 226px;
}
.el-select {
width: 226px;
}
}
/deep/ .el-form-item__content {
text-align: left;
}
/deep/ .el-form-item__label {
font-weight: 400;
// color: #000;
width: 160px !important;
}
}
}
/deep/.el-table th.el-table__cell.is-leaf,
.el-table td.el-table__cell {
text-align: center;
}
/deep/ .el-table__cell {
text-align: center;
}
h3 {
text-align: left;
}
/deep/.el-switch__core {
height: 30px;
width: 79px !important;
border-radius: 20px;
}
/deep/.el-switch.is-checked .el-switch__core::after {
margin-left: -28px;
}
/deep/ .el-switch_label {
height: 30px;
line-height: 30px;
}
/deep/.el-switch {
height: 30px;
line-height: 30px;
border-radius: 20px;
}
/deep/ .el-switch__label * {
font-size: 12px;
}
/deep/.el-switch__core:after {
width: 26px;
height: 26px;
}
/deep/.el-switch__label--left {
position: absolute;
left: 30px;
color: #fff;
z-index: -1111;
cursor: default;
user-select: none;
}
/deep/.el-switch__label--right {
position: absolute;
right: 30px;
color: #fff;
z-index: -1111;
cursor: default;
user-select: none;
}
/deep/.el-switch__label--right.is-active {
z-index: 1111;
color: grey !important;
height: 30px;
line-height: 30px;
}
/deep/.el-switch__label--left.is-active {
z-index: 1111;
color: #fff !important;
height: 30px;
line-height: 30px;
}
/deep/ .el-dialog__body {
padding-bottom: 5px;
}
.setscroll {
width: 100%;
height: 650px;
overflow: auto;
padding-right: 500px;
}
.dialog {
.eltable {
box-sizing: border-box;
text-align: center;
width: 100%;
min-width: 100%;
// margin-right: 210px;
// margin-top: 3vh;
}
}
// ::-webkit-scrollbar {
// width: 6px; // 横向滚动条
// height: 6px; // 纵向滚动条必写
// }
</style>
\ No newline at end of file
<template>
<div class="main">
<el-form
:model="ruleForm"
label-width="100px"
class="demo-ruleForm"
ref="formName"
>
<el-form-item label="批次年度:" prop="batchYear" class="fromItem">
<el-select v-model="ruleForm.batchYear" placeholder="请选择" clearable>
<el-option
v-for="(item, index) in yearsList"
:key="index"
:label="item + '年'"
:value="item"
/>
</el-select>
</el-form-item>
<el-form-item label="后评估批次名称:" prop="batchName" class="fromItem">
<el-input
v-model="ruleForm.batchName"
placeholder="请输入"
clearable
></el-input>
</el-form-item>
<!-- <el-form-item label="后评估状态:" prop="postEvalState" class="fromItem">
<el-select
v-model="ruleForm.postEvalState"
placeholder="请选择"
clearable
>
<el-option label="未下发" value="0"></el-option>
<el-option label="已下发" value="1"></el-option>
<el-option label="已撤回" value="2"></el-option>
</el-select>
</el-form-item> -->
<el-form-item class="button">
<el-button @click="submitForm()">
<img class="buttonIcon" src="../../assets/cx.png" />查询</el-button
>
<el-button @click="resetForm('ruleForm')">
<img class="buttonIcon" src="../../assets/cz.png" />重置</el-button
>
<el-button @click="confirm()">
<i class="el-icon-chat-dot-square"></i
>&nbsp;&nbsp;&nbsp;问题确认</el-button
>
<el-button @click="appeal()">
<i class="el-icon-document-remove"></i
>&nbsp;&nbsp;&nbsp;申诉</el-button
>
</el-form-item>
</el-form>
<div class="setscroll">
<el-table
@selection-change="handleSelectionChange"
ref="multipleTable"
:data="tableData"
tooltip-effect="dark"
style="width: 100%"
header-cell-class-name="custom-th-background"
class="eltable"
:row-class-name="tableRowClassName"
border
>
<el-table-column label="序号" width="55" type="index">
</el-table-column>
<el-table-column type="selection"> </el-table-column>
<el-table-column label="批次年度" prop="batchYear">
<template slot-scope="scope"> {{ scope.row.batchYear }}</template>
</el-table-column>
<el-table-column prop="batchName" label="后评估批次名称">
</el-table-column>
<el-table-column
prop="projectName"
label="评估项目名称"
show-overflow-tooltip
>
</el-table-column>
<el-table-column prop="projectCategory" label="建设形式">
</el-table-column>
<el-table-column prop="projectStatus" label="项目建设阶段">
</el-table-column>
<!-- <el-table-column prop="createTime" label="历史审核状态">
</el-table-column> -->
<el-table-column prop="expertName" label="评审专家名单">
</el-table-column>
<el-table-column prop="appealDeadline" label="问题申诉截止时间">
</el-table-column>
<el-table-column prop="rectificationDeadline" label="问题整改截止时间">
</el-table-column>
<el-table-column prop="postEvalStateText" label="申诉状态">
</el-table-column>
<!-- <el-table-column prop="reviewStatus" label="后评估状态"> </el-table-column> -->
<el-table-column prop="reviewDate" label="评估日期"> </el-table-column>
</el-table>
</div>
<el-pagination
@size-change="handleSizeChange"
@current-change="handleCurrentChange"
:current-page="currentPage"
:page-sizes="[10, 15, 20, 50]"
:page-size="100"
layout="total, sizes, prev, pager, next, jumper"
:total="total"
class="elpagination"
>
</el-pagination>
<!-- 问题确认 -->
<el-dialog
title="问题确认"
:visible.sync="dialogQR"
width="90%"
:modal-append-to-body="false"
:append-to-body="false"
@close="closed"
>
<div class="dialog">
<h3>
项目名称:一期项目-电力营销-2023年网上国网(网上国网V1.0)-设计开发项目
</h3>
<div class="continer">
<p class="xqtitle"><span></span>问题清单</p>
<el-table
:data="tableDataQR"
tooltip-effect="dark"
style="width: 100%"
header-cell-class-name="custom-th-background"
class="eltable"
:row-class-name="tableRowClassName"
:span-method="arraySpanMethod"
border
>
<el-table-column
label="项目环节"
prop="projectStagetext"
width="150"
>
</el-table-column>
<el-table-column label="序号" width="100" type="index">
</el-table-column>
<el-table-column label="问题检查项" prop="quesCheckItem">
</el-table-column>
<el-table-column
label="检查说明"
prop="checkDesc"
show-overflow-tooltip
>
</el-table-column>
<el-table-column label="评估问题" prop="evalQues">
</el-table-column>
<el-table-column label="问题确认" width="auto">
<template slot-scope="scope">
<el-switch
v-show="scope.row.evalQues"
v-model="scope.row.confirmStatus"
active-color="#C0C0C0"
inactive-color="#13ce66"
active-value="2"
inactive-value="1"
active-text="无异议"
inactive-text="有异议"
@change="controlSwitch($event, scope.row)"
>
<template v-slot:active>
<span>开启</span>
</template>
<template v-slot:inactive>
<span>关闭</span>
</template>
</el-switch>
</template>
</el-table-column>
</el-table>
</div>
</div>
<p class="midBtn">
<span @click="cancelSS()">取消</span><span @click="saveSS()">确认</span>
</p>
</el-dialog>
<!-- 申诉 -->
<el-dialog
title="申诉"
:visible.sync="dialogSS"
width="90%"
:modal-append-to-body="false"
:append-to-body="false"
>
<div class="dialog">
<h3>
项目名称:一期项目-电力营销-2023年网上国网(网上国网V1.0)-设计开发项目
</h3>
<div class="continer">
<p class="xqtitle"><span></span>问题清单</p>
<el-table
:data="tableDataSS"
tooltip-effect="dark"
style="width: 100%"
header-cell-class-name="custom-th-background"
class="eltable"
:row-class-name="tableRowClassName"
:span-method="arraySpanMethodss"
border
>
<el-table-column
label="项目环节"
prop="projectStagetext"
width="150"
>
</el-table-column>
<el-table-column label="序号" width="100" type="index">
</el-table-column>
<el-table-column label="问题检查项" prop="quesCheckItem">
</el-table-column>
<el-table-column
label="检查说明"
prop="checkDesc"
show-overflow-tooltip
>
</el-table-column>
<el-table-column label="评估问题" prop="evalQues">
</el-table-column>
<el-table-column label="问题确认" width="auto">
<template slot-scope="scope">
<el-switch
v-model="scope.row.confirmStatus"
active-color="#C0C0C0"
inactive-color="#13ce66"
active-value="2"
inactive-value="1"
active-text="无异议"
inactive-text="有异议"
@change="controlSwitch($event, scope.row)"
disabled
>
<template v-slot:active>
<span>开启</span>
</template>
<template v-slot:inactive>
<span>关闭</span>
</template>
</el-switch>
</template>
</el-table-column>
<el-table-column label="解释批注">
<template slot-scope="scope">
<el-input
v-model="scope.row.feedback"
v-if="scope.row.confirmStatus == '1'"
></el-input>
</template>
</el-table-column>
<el-table-column label="附加解释材料" prop="fileId" width="400">
<template slot-scope="scope">
<input
type="file"
@change="handleFileUpload($event, scope.row)"
v-if="scope.row.confirmStatus == '1'"
/>
</template>
</el-table-column>
</el-table>
</div>
</div>
<p class="midBtn">
<span @click="cancel()">取消</span><span @click="save()">申诉</span>
</p>
</el-dialog>
</div>
</template>
<script>
import {
ProblemAssistedFeedback,
ossupload,
qrProblemAssistedFeedback,
wtssSelProblemAssistedFeedback,
ssProblemAssistedFeedback,
} from "@/api/index";
import { generateYearOptions } from "@/utils/cache";
export default {
data() {
return {
yearsList: generateYearOptions(),
dialogSS: false,
ruleForm: {
batchYear: "",
batchName: "",
postEvalState: "",
},
ruleFormdialogBJ: {
appealDeadline: "",
rectificationDeadline: "",
},
rules: {
appealDeadline: [
{
required: true,
message: "请选择问题申诉截止时间",
trigger: "change",
},
],
rectificationDeadline: [
{
required: true,
message: "问题整改截止时间",
trigger: "change",
},
],
},
tableData: [],
tableDataQR: [],
tableDataSS: [],
checkedList: [],
currentPage: 1,
pageSizetjcl: 10,
total: 0,
dialogQR: false,
pageSize: 10,
mergingPos: 0,
mergingRows: [],
mergingPosss: 0,
mergingRowsss: [],
};
},
mounted() {
this.submitForm();
},
methods: {
async submitForm() {
let params = {
current: this.currentPage,
pageSize: this.pageSize,
};
Object.assign(params, this.ruleForm);
console.log(params);
let res = await ProblemAssistedFeedback(params);
if (res.code == "200") {
this.tableData = res.data.records;
this.tableData.forEach((item) => {
if (item.appealStatus == "1") {
this.$set(item, "postEvalStateText", "已申诉");
} else if (item.appealStatus == "2") {
this.$set(item, "postEvalStateText", "申诉驳回");
} else if (item.appealStatus == "3") {
this.$set(item, "postEvalStateText", "申诉通过");
} else {
this.$set(item, "postEvalStateText", "未申诉");
}
});
this.total = res.data.total * 1;
}
},
resetForm() {
this.$refs.formName.resetFields();
this.currentPage = 1;
this.pageSize = 10;
this.submitForm();
},
//确认问题
async confirm() {
this.mergingPos = 0;
this.mergingRows = [];
if (this.checkedList.length != 1) {
this.$message("请选择一条数据进行确认");
return;
}
this.dialogQR = true;
let params = {
projectId: this.checkedList[0].projectId,
batchId: this.checkedList[0].batchId,
};
let res = await wtssSelProblemAssistedFeedback(params);
if (res.code == "200") {
this.tableDataQR = res.data.records;
this.tableDataQR.forEach((item) => {
if (!item.confirmStatus) {
this.$set(item, "confirmStatus", "2");
}
switch (item.projectStage) {
case "1":
this.$set(item, "projectStagetext", "1.可研");
break;
case "2":
this.$set(item, "projectStagetext", "2.计划");
break;
case "3":
this.$set(item, "projectStagetext", "3.采购");
break;
case "4":
this.$set(item, "projectStagetext", "4.合同");
break;
case "5":
this.$set(item, "projectStagetext", "5.执行");
break;
case "6":
this.$set(item, "projectStagetext", "6.结决算及转资");
break;
}
});
console.log(this.tableDataQR);
this.dataPretreatment();
}
},
dataPretreatment() {
for (let i = 0; i < this.tableDataQR.length; i++) {
// tabledata 表格数据源
if (i === 0) {
this.mergingRows.push(1);
this.mergingPos = 0;
} else {
if (
this.tableDataQR[i].projectStage ===
this.tableDataQR[i - 1].projectStage
) {
//哪些数据是要合并的 合并的条件是什么
this.mergingRows[this.mergingPos] += 1;
this.mergingRows.push(0);
} else {
this.mergingRows.push(1);
this.mergingPos = i;
}
}
}
},
dataPretreatmentSS() {
for (let i = 0; i < this.tableDataSS.length; i++) {
// tabledata 表格数据源
if (i === 0) {
this.mergingRowsss.push(1);
this.mergingPosss = 0;
} else {
if (
this.tableDataSS[i].projectStage ===
this.tableDataSS[i - 1].projectStage
) {
//哪些数据是要合并的 合并的条件是什么
this.mergingRowsss[this.mergingPosss] += 1;
this.mergingRowsss.push(0);
} else {
this.mergingRowsss.push(1);
this.mergingPosss = i;
}
}
}
},
//表格颜色
tableRowClassName({ row, rowIndex }) {
if (rowIndex % 2 == 1) {
return "warning-row";
}
return "";
},
//主列表选中行信息
handleSelectionChange(selection) {
console.log("222222");
if (Array.isArray(selection) && selection.length > 1) {
console.log("222222333", this.checkedList);
this.$refs.multipleTable.toggleRowSelection(selection[0], false);
this.$refs.multipleTable.toggleRowSelection(selection[1], true);
}
this.checkedList = this.$refs.multipleTable.selection;
this.$forceUpdate();
console.log(this.checkedList, "2222");
},
handleSizeChange(val) {
console.log(`每页 ${val} 条`);
this.pageSize = val;
this.submitForm();
},
handleCurrentChange(val) {
console.log(`当前页: ${val}`);
this.currentPage = val;
this.submitForm();
},
arraySpanMethod({ row, column, rowIndex, columnIndex }) {
if (columnIndex === 0) {
//第一列
const _row = this.mergingRows[rowIndex];
const _col = _row > 0 ? 1 : 0;
return {
rowspan: _row,
colspan: _col,
};
}
},
arraySpanMethodss({ row, column, rowIndex, columnIndex }) {
if (columnIndex === 0) {
//第一列
const _row = this.mergingRowsss[rowIndex];
const _col = _row > 0 ? 1 : 0;
return {
rowspan: _row,
colspan: _col,
};
}
},
//问题确认开关
controlSwitch(val, row) {
console.log("333", val, row);
},
cancelSS() {
this.dialogQR = false;
},
async save() {
console.log(this.tableDataSS, "this.tableDataSS");
this.tableDataSS.forEach((item) => {
if (item.confirmStatus == "1") {
if (!item.feedback) {
this.$message("有未填写的的解释批注");
throw new Error("主动跳出循环");
}
}
});
// return
let res = await ssProblemAssistedFeedback(this.tableDataSS);
if (res.code == "200") {
this.dialogSS = false;
this.resetForm();
}
},
cancel() {
this.dialogSS = false;
},
async saveSS() {
let res = await qrProblemAssistedFeedback(this.tableDataQR);
if (res.code == "200") {
this.dialogQR = false;
this.resetForm();
}
},
//申诉
async appeal() {
this.mergingPosss = 0;
this.mergingRowsss = [];
if (this.checkedList.length != 1) {
this.$message("请选择一条数据进行申诉");
return;
}
// if(this.checkedList[0].postEvalStateText!='未申诉'){
// this.$message("请选择未申诉的数据");
// return
// }
this.dialogSS = true;
let params = {
projectId: this.checkedList[0].projectId,
batchId: this.checkedList[0].batchId,
};
let res = await wtssSelProblemAssistedFeedback(params);
if (res.code == "200") {
this.tableDataSS = res.data.records;
this.tableDataSS.forEach((item) => {
if (!item.confirmStatus) {
this.$set(item, "confirmStatus", "2");
}
switch (item.projectStage) {
case "1":
this.$set(item, "projectStagetext", "1.可研");
break;
case "2":
this.$set(item, "projectStagetext", "2.计划");
break;
case "3":
this.$set(item, "projectStagetext", "3.采购");
break;
case "4":
this.$set(item, "projectStagetext", "4.合同");
break;
case "5":
this.$set(item, "projectStagetext", "5.执行");
break;
case "6":
this.$set(item, "projectStagetext", "6.结决算及转资");
break;
}
});
console.log(this.tableDataSS);
this.dataPretreatmentSS();
}
},
handleFileUpload(event, row) {
console.log("来了么");
this.file = event.target.files[0];
this.submitFile(row);
},
submitFile(row) {
if (this.file) {
const formData = new FormData();
formData.append("file", this.file);
ossupload(formData)
.then((response) => {
console.log(response);
if (response.code == "200") {
this.$set(row, "fileId", response.data.fileId);
this.$message("上传成功");
} else {
this.$message("上传失败");
}
})
.catch((error) => {
console.error(error);
this.$message("上传失败");
});
}
},
closed() {
console.log("关闭");
this.handleSelectionChange();
},
},
};
</script>
<style scoped lang="scss">
.main {
font-size: 14px;
position: relative;
height: 100%;
width: 100%;
box-sizing: border-box;
overflow-x: hidden;
}
.el-form {
display: flex;
width: 99%;
flex-wrap: wrap;
border-top: 2px solid #23c6c8;
border-left: 1px solid #dee5e7;
border-right: 1px solid #dee5e7;
border-bottom: 1px solid #dee5e7;
padding: 20px 10px;
margin-bottom: 20px;
.fromItem {
min-width: 24%;
margin: 0 0.5%;
margin-bottom: 20px;
.el-input {
width: 226px;
}
.el-select {
width: 226px;
}
}
/deep/ .el-form-item__content {
text-align: left;
display: inline-block;
margin-left: 10px !important;
}
/deep/ .el-form-item__label {
font-weight: bold;
color: #000;
width: 160px !important;
}
.button {
display: inline-block;
width: 100%;
text-align: left;
/deep/ .el-form-item__content {
margin-left: 20px !important;
text-align: left;
img {
width: 14px;
height: 14px;
margin-right: 15px;
vertical-align: middle;
}
}
.el-button {
background-color: #23c6c8;
border-color: #23c6c8;
color: #fff;
}
}
}
.eltable {
box-sizing: border-box;
text-align: center;
// margin-top: 3vh;
}
/deep/ .el-table .warning-row {
background: #f0ffff;
// color: #2785e6;
}
.elpagination {
text-align: right;
margin-right: 100px;
}
/deep/ .el-dialog {
border-radius: 10px;
margin-top: 3vh !important;
}
/deep/.el-table th.el-table__cell.is-leaf,
.el-table td.el-table__cell {
text-align: center;
}
/deep/ .el-dialog__wrapper {
position: absolute;
}
/deep/ .v-modal {
position: absolute;
}
/deep/ .el-dialog__header {
background-color: #0d867f;
padding-bottom: 20px;
text-align: left;
border-radius: 10px 10px 0 0;
.el-dialog__title {
color: #fff;
}
}
/deep/ .el-table__header th {
background-color: #eeeeee;
font-weight: bold;
.cell {
color: #333;
}
}
/deep/.el-table {
// width: 100%;
.el-table__header-wrapper table,
.el-table__body-wrapper table {
// width: 100% !important;
}
.el-table__body,
.el-table__footer,
.el-table__header {
table-layout: auto;
}
}
.textarea {
width: 100%;
.el-textarea {
width: 60%;
}
}
.Btn {
width: 200px;
margin: 0 auto;
height: 30px;
line-height: 30px;
span {
display: inline-block;
width: 80px;
height: 25px;
line-height: 25px;
text-align: center;
border-radius: 4px;
margin-right: 12px;
}
span:first-of-type {
border: 1px solid #000;
}
span:last-of-type {
background-color: #0d867f;
border: 1px solid #0d867f;
color: #fff;
}
}
/deep/ .el-dialog__headerbtn .el-dialog__close {
color: #fff;
}
.zjBtn {
width: 400px;
text-align: left;
vertical-align: middle;
span {
display: inline-block;
width: 140px;
height: 25px;
line-height: 25px;
text-align: center;
border-radius: 5px;
vertical-align: middle;
}
span:last-of-type {
background-color: #4ca6a7;
color: #fff;
padding: 5px 10px;
margin-left: 10px;
}
}
/deep/ .el-icon-position {
margin-right: 10px;
}
/deep/ .el-icon-folder-delete {
margin-right: 10px;
}
.cxItem {
text-align: right;
width: 20%;
.zjquery {
display: inline-block;
background-color: #4ca6a7;
width: 89px;
height: 40px;
color: #fff;
text-align: center;
line-height: 40px;
border-radius: 5px;
}
}
.midBtn {
margin: 0 auto;
margin-top: 20px;
span {
display: inline-block;
width: 80px;
height: 29px;
line-height: 29px;
text-align: center;
margin-right: 10px;
border-radius: 5px;
box-sizing: border-box;
}
span:first-of-type {
border: 1px solid grey;
}
span:last-of-type {
background-color: #4ca6a7;
color: #fff;
border: 1px solid #4ca6a7;
}
}
.dialog {
height: 680px;
overflow-y: auto;
.xqtitle {
text-align: left;
font-size: 18px;
border-bottom: 1px solid gainsboro;
padding-bottom: 10px;
span {
display: inline-block;
width: 5px;
height: 20px;
background: #0d867f;
margin-right: 14px;
vertical-align: middle;
}
}
/deep/ .el-form {
width: 65%;
flex-wrap: wrap;
padding: 0 10px;
text-align: center;
margin: 100px auto;
border: none;
.fromItem {
text-align: center;
width: 51%;
margin: 0 auto;
margin-bottom: 20px;
.el-input {
width: 226px;
}
.el-select {
width: 226px;
}
}
/deep/ .el-form-item__content {
text-align: left;
}
/deep/ .el-form-item__label {
font-weight: 400;
// color: #000;
width: 160px !important;
}
}
}
/deep/.el-table th.el-table__cell.is-leaf,
.el-table td.el-table__cell {
text-align: center;
}
/deep/ .el-table__cell {
text-align: center;
}
h3 {
text-align: left;
}
/deep/.el-switch__core {
height: 30px;
width: 79px !important;
border-radius: 20px;
}
/deep/.el-switch.is-checked .el-switch__core::after {
margin-left: -28px;
}
/deep/ .el-switch_label {
height: 30px;
line-height: 30px;
}
/deep/.el-switch {
height: 30px;
line-height: 30px;
border-radius: 20px;
}
/deep/ .el-switch__label * {
font-size: 12px;
}
/deep/.el-switch__core:after {
width: 26px;
height: 26px;
}
/deep/.el-switch__label--left {
position: absolute;
left: 30px;
color: #fff;
z-index: -1111;
cursor: default;
user-select: none;
}
/deep/.el-switch__label--right {
position: absolute;
right: 30px;
color: #fff;
z-index: -1111;
cursor: default;
user-select: none;
}
/deep/.el-switch__label--right.is-active {
z-index: 1111;
color: grey !important;
height: 30px;
line-height: 30px;
}
/deep/.el-switch__label--left.is-active {
z-index: 1111;
color: #fff !important;
height: 30px;
line-height: 30px;
}
/deep/ .el-dialog__body {
padding-bottom: 15px;
}
.setscroll {
width: 100%;
height: 650px;
position: relative;
overflow: auto;
}
/deep/.el-table th.el-table__cell.is-leaf,
.el-table td.el-table__cell {
text-align: center;
}
/deep/ .el-table__cell {
text-align: center;
}
</style>
\ No newline at end of file
<template>
<div class="main">
<el-form
:model="ruleForm"
label-width="100px"
class="demo-ruleForm"
ref="formName"
>
<el-form-item label="批次年度:" prop="batchYear" class="fromItem">
<el-select v-model="ruleForm.batchYear" placeholder="请选择" clearable>
<el-option
v-for="(item, index) in yearsList"
:key="index"
:label="item + '年'"
:value="item"
/>
</el-select>
</el-form-item>
<el-form-item label="后评估批次名称:" prop="batchName" class="fromItem">
<el-input
v-model="ruleForm.batchName"
placeholder="请输入"
clearable
></el-input>
</el-form-item>
<!-- <el-form-item label="后评估状态:" prop="postEvalState" class="fromItem">
<el-select
v-model="ruleForm.postEvalState"
placeholder="请选择"
clearable
>
<el-option label="未下发" value="0"></el-option>
<el-option label="已下发" value="1"></el-option>
<el-option label="已撤回" value="2"></el-option>
</el-select>
</el-form-item> -->
<el-form-item class="button">
<el-button @click="submitForm()">
<img class="buttonIcon" src="../../assets/cx.png" />查询</el-button
>
<el-button @click="resetForm('ruleForm')">
<img class="buttonIcon" src="../../assets/cz.png" />重置</el-button
>
<el-button @click="confirm()">
<i class="el-icon-chat-dot-square"></i
>&nbsp;&nbsp;&nbsp;问题整改</el-button
>
<!-- <el-button @click="appeal()">
<i class="el-icon-document-remove"></i
>&nbsp;&nbsp;&nbsp;整改提交</el-button
> -->
</el-form-item>
</el-form>
<div class="setscroll">
<el-table
@selection-change="handleSelectionChange"
ref="multipleTable"
:data="tableData"
tooltip-effect="dark"
header-cell-class-name="custom-th-background"
class="eltable"
:row-class-name="tableRowClassName"
border
>
<el-table-column label="序号" width="55" type="index">
</el-table-column>
<el-table-column type="selection"> </el-table-column>
<el-table-column label="批次年度" prop="batchYear"
><template slot-scope="scope"> {{ scope.row.batchYear }}</template>
</el-table-column>
<el-table-column prop="batchName" label="后评估批次名称">
</el-table-column>
<el-table-column
prop="projectName"
label="评估项目名称"
show-overflow-tooltip
>
</el-table-column>
<el-table-column prop="projectCategory" label="建设形式">
</el-table-column>
<el-table-column prop="projectStatus" label="项目建设阶段">
</el-table-column>
<!-- <el-table-column prop="createTime" label="历史审核状态">
</el-table-column> -->
<el-table-column prop="expertName" label="评审专家名单">
</el-table-column>
<el-table-column prop="appealDeadline" label="问题申诉截止时间">
</el-table-column>
<el-table-column prop="rectificationDeadline" label="问题整改截止时间">
</el-table-column>
<el-table-column prop="postEvalState" label="问题整改状态">
</el-table-column>
<!-- <el-table-column prop="reviewStatus" label="后评估状态"> </el-table-column> -->
<el-table-column prop="reviewDate" label="评估日期"> </el-table-column>
</el-table>
</div>
<el-pagination
@size-change="handleSizeChange"
@current-change="handleCurrentChange"
:current-page="currentPage"
:page-sizes="[10, 15, 20, 50]"
:page-size="100"
layout="total, sizes, prev, pager, next, jumper"
:total="total"
class="elpagination"
>
</el-pagination>
<!-- 问题整改 -->
<el-dialog
title="复核情况"
:visible.sync="dialogQR"
width="79%"
:modal-append-to-body="false"
:append-to-body="false"
@close="closed"
>
<div class="dialog">
<h3>
项目名称:一期项目-电力营销-2023年网上国网(网上国网V1.0)-设计开发项目
</h3>
<div class="continer">
<p class="xqtitle"><span></span>问题清单</p>
<div class="setTable">
<el-table
:data="tableDataQR"
tooltip-effect="dark"
style="width: 100%"
header-cell-class-name="custom-th-background"
class="eltable"
:row-class-name="tableRowClassName"
:span-method="arraySpanMethod"
border
>
<el-table-column
label="项目环节"
prop="projectStagetext"
width="150"
>
</el-table-column>
<el-table-column label="序号" width="100" type="index">
</el-table-column>
<el-table-column
label="问题检查项"
prop="quesCheckItem"
width="200"
>
</el-table-column>
<el-table-column
label="检查说明"
prop="checkDesc"
show-overflow-tooltip
>
</el-table-column>
<el-table-column
label="评估问题"
prop="evalQues"
show-overflow-tooltip
>
</el-table-column>
<el-table-column label="问题确认" width="auto">
<template slot-scope="scope">
<el-switch
v-model="scope.row.confirmStatus"
active-color="#C0C0C0"
inactive-color="#13ce66"
active-value="2"
inactive-value="1"
active-text="无异议"
inactive-text="有异议"
@change="controlSwitch($event, scope.row)"
disabled
>
<template v-slot:active>
<span>开启</span>
</template>
<template v-slot:inactive>
<span>关闭</span>
</template>
</el-switch>
</template>
</el-table-column>
<el-table-column label="解释批注" width="200">
<template
slot-scope="scope"
v-if="scope.row.confirmStatus == '1'"
>
<el-input v-model="scope.row.feedback"></el-input>
</template>
</el-table-column>
<el-table-column label="附加解释材料" prop="fileId" width="400">
<template
slot-scope="scope"
v-if="scope.row.confirmStatus == '1'"
>
<input
type="file"
@change="handleFileUpload($event, scope.row, 'fileId')"
/>
</template>
</el-table-column>
<el-table-column
label="复核情况"
prop="rectificationStatus"
width="200"
>
<template
slot-scope="scope"
v-if="scope.row.confirmStatus == '1'"
>
<el-select
v-model="scope.row.appealStatus"
placeholder="请选择"
disabled
>
<el-option label="请选择" value=""></el-option>
<el-option label="未申诉" :value="0"></el-option>
<el-option label="已申诉" :value="1"></el-option>
<el-option label="申诉驳回" :value="2"></el-option>
<el-option label="申诉通过" :value="3"></el-option>
</el-select>
</template>
</el-table-column>
<el-table-column label="上传整改材料" prop="zgFileId" width="400">
<template
slot-scope="scope"
v-if="scope.row.confirmStatus == '1'"
>
<input
type="file"
@change="handleFileUpload($event, scope.row, 'zgFileId')"
/>
</template>
</el-table-column>
<el-table-column label="情况说明" prop="zgqkFileId" width="400">
<template
slot-scope="scope"
v-if="scope.row.confirmStatus == '1'"
>
<input
type="file"
@change="handleFileUpload($event, scope.row, 'zgqkFileId')"
/>
</template>
</el-table-column>
</el-table>
</div>
</div>
</div>
<p class="midBtn">
<span @click="cancelSS()">取消</span><span @click="saveSS()">保存</span
><span @click="save()">提交</span>
</p>
</el-dialog>
<!-- 复核下发 -->
<el-dialog
title="复核情况"
:visible.sync="dialogSS"
width="79%"
:modal-append-to-body="false"
:append-to-body="false"
>
<div class="dialog">
<h3>
项目名称:一期项目-电力营销-2023年网上国网(网上国网V1.0)-设计开发项目
</h3>
<div class="continer">
<p class="xqtitle"><span></span>问题清单</p>
<div class="setTable">
<el-table
:data="tableDataSS"
tooltip-effect="dark"
style="width: 100%"
header-cell-class-name="custom-th-background"
class="eltable"
:row-class-name="tableRowClassName"
:span-method="arraySpanMethodss"
border
>
<el-table-column
label="项目环节"
prop="projectStagetext"
width="150"
>
</el-table-column>
<el-table-column label="序号" width="100" type="index">
</el-table-column>
<el-table-column
label="问题检查项"
prop="quesCheckItem"
width="200"
>
</el-table-column>
<el-table-column
label="检查说明"
prop="checkDesc"
show-overflow-tooltip
>
</el-table-column>
<el-table-column
label="评估问题"
prop="evalQues"
show-overflow-tooltip
>
</el-table-column>
<el-table-column label="问题确认" width="auto">
<template slot-scope="scope">
<el-switch
v-model="scope.row.confirmStatus"
active-color="#C0C0C0"
inactive-color="#13ce66"
active-value="2"
inactive-value="1"
active-text="无异议"
inactive-text="有异议"
disabled
@change="controlSwitch($event, scope.row)"
>
<template v-slot:active>
<span>开启</span>
</template>
<template v-slot:inactive>
<span>关闭</span>
</template>
</el-switch>
</template>
</el-table-column>
<el-table-column label="解释批注" width="200">
<template
slot-scope="scope"
v-if="scope.row.confirmStatus == '1'"
>
<el-input v-model="scope.row.feedback" disabled></el-input>
</template>
</el-table-column>
<el-table-column label="附加解释材料" prop="fileId" width="400">
<template
slot-scope="scope"
v-if="scope.row.confirmStatus == '1' && scope.row.fileId"
>
{{ scope.row.fileName }}
<el-button @click="handleClickXZ(scope.row)">下载</el-button>
</template>
</el-table-column>
<el-table-column
label="复核情况"
prop="rectificationStatus"
width="200"
>
<template
slot-scope="scope"
v-if="scope.row.confirmStatus == '1'"
>
<el-select
v-model="scope.row.appealStatus"
placeholder="请选择"
disabled
>
<el-option label="请选择" value=""></el-option>
<el-option label="未申诉" :value="0"></el-option>
<el-option label="已申诉" :value="1"></el-option>
<el-option label="申诉驳回" :value="2"></el-option>
<el-option label="申诉通过" :value="3"></el-option>
</el-select>
</template>
</el-table-column>
<el-table-column label="上传整改材料" prop="zgFileId" width="400">
<template
slot-scope="scope"
v-if="scope.row.confirmStatus == '1' && scope.row.fileId"
>
{{ scope.row.fileName }}
<el-button @click="handleClickXZ(scope.row)">下载</el-button>
</template>
</el-table-column>
<el-table-column label="情况说明" prop="zgqkFileId" width="400">
<template
slot-scope="scope"
v-if="scope.row.confirmStatus == '1' && scope.row.fileId"
>
{{ scope.row.fileName }}
<el-button @click="handleClickXZ(scope.row)">下载</el-button>
</template>
</el-table-column>
</el-table>
</div>
</div>
</div>
<p class="midBtn">
<span @click="cancel()">取消</span><span @click="save()">提交</span>
</p>
</el-dialog>
</div>
</template>
<script>
import {
ProblemRectification,
wtssSelProblemRectification,
wtzgProblemRectification,
wtzgxfProblemRectification,
ossupload,
downloadObject,
} from "@/api/index";
import { generateYearOptions } from "@/utils/cache";
export default {
data() {
return {
yearsList: generateYearOptions(),
dialogSS: false,
ruleForm: {
batchYear: "",
batchName: "",
postEvalState: "",
},
tableData: [],
tableDataQR: [],
tableDataSS: [],
checkedList: [],
currentPage: 1,
pageSizetjcl: 10,
total: 0,
dialogQR: false,
pageSize: 10,
mergingPos: 0,
mergingRows: [],
mergingPosss: 0,
mergingRowsss: [],
};
},
mounted() {
this.submitForm();
},
methods: {
async submitForm() {
let params = {
current: this.currentPage,
pageSize: this.pageSize,
};
Object.assign(params, this.ruleForm);
console.log(params);
let res = await ProblemRectification(params);
if (res.code == "200") {
this.tableData = res.data.records;
this.tableData.forEach((item) => {
if (item.reviewStatus == "4") {
this.$set(item, "postEvalState", "未整改");
} else if (item.reviewStatus == "5") {
this.$set(item, "postEvalState", "整改提交");
} else if (item.reviewStatus == "6") {
this.$set(item, "postEvalState", "整改未完成");
} else if (item.reviewStatus == "7") {
this.$set(item, "postEvalState", "整改已完成");
}
});
this.total = res.data.total * 1;
}
},
resetForm() {
this.$refs.formName.resetFields();
this.currentPage = 1;
this.pageSize = 10;
this.submitForm();
},
//问题整改
async confirm() {
this.mergingPos = 0;
this.mergingRows = [];
if (this.checkedList.length != 1) {
this.$message("请选择一条数据进行整改");
return;
}
if (this.checkedList.postEvalState == '整改提交') {
this.$message("整改已经提交");
return;
}
this.dialogQR = true;
let params = {
projectId: this.checkedList[0].projectId,
batchId: this.checkedList[0].batchId,
};
let res = await wtssSelProblemRectification(params);
if (res.code == "200") {
this.tableDataQR = res.data.records;
this.tableDataQR.forEach((item) => {
if (!item.confirmStatus) {
this.$set(item, "confirmStatus", "2");
}
switch (item.projectStage) {
case "1":
this.$set(item, "projectStagetext", "1.可研");
break;
case "2":
this.$set(item, "projectStagetext", "2.计划");
break;
case "3":
this.$set(item, "projectStagetext", "3.采购");
break;
case "4":
this.$set(item, "projectStagetext", "4.合同");
break;
case "5":
this.$set(item, "projectStagetext", "5.执行");
break;
case "6":
this.$set(item, "projectStagetext", "6.结决算及转资");
break;
}
});
console.log(this.tableDataQR, "加不进去?");
this.dataPretreatment();
}
},
dataPretreatment() {
for (let i = 0; i < this.tableDataQR.length; i++) {
// tabledata 表格数据源
if (i === 0) {
this.mergingRows.push(1);
this.mergingPos = 0;
} else {
if (
this.tableDataQR[i].projectStage ===
this.tableDataQR[i - 1].projectStage
) {
//哪些数据是要合并的 合并的条件是什么
this.mergingRows[this.mergingPos] += 1;
this.mergingRows.push(0);
} else {
this.mergingRows.push(1);
this.mergingPos = i;
}
}
}
},
dataPretreatmentSS() {
for (let i = 0; i < this.tableDataSS.length; i++) {
// tabledata 表格数据源
if (i === 0) {
this.mergingRowsss.push(1);
this.mergingPosss = 0;
} else {
if (
this.tableDataSS[i].projectStage ===
this.tableDataSS[i - 1].projectStage
) {
//哪些数据是要合并的 合并的条件是什么
this.mergingRowsss[this.mergingPosss] += 1;
this.mergingRowsss.push(0);
} else {
this.mergingRowsss.push(1);
this.mergingPosss = i;
}
}
}
},
//表格颜色
tableRowClassName({ row, rowIndex }) {
if (rowIndex % 2 == 1) {
return "warning-row";
}
return "";
},
//主列表选中行信息
handleSelectionChange(selection) {
console.log("222222");
if (Array.isArray(selection) && selection.length > 1) {
console.log("222222333", this.checkedList);
this.$refs.multipleTable.toggleRowSelection(selection[0], false);
this.$refs.multipleTable.toggleRowSelection(selection[1], true);
}
this.checkedList = this.$refs.multipleTable.selection;
this.$forceUpdate();
console.log(this.checkedList, "2222");
},
handleSizeChange(val) {
console.log(`每页 ${val} 条`);
this.pageSize = val;
},
handleCurrentChange(val) {
console.log(`当前页: ${val}`);
this.currentPage = val;
},
arraySpanMethod({ row, column, rowIndex, columnIndex }) {
if (columnIndex === 0) {
//第一列
const _row = this.mergingRows[rowIndex];
const _col = _row > 0 ? 1 : 0;
return {
rowspan: _row,
colspan: _col,
};
}
},
arraySpanMethodss({ row, column, rowIndex, columnIndex }) {
if (columnIndex === 0) {
//第一列
const _row = this.mergingRowsss[rowIndex];
const _col = _row > 0 ? 1 : 0;
return {
rowspan: _row,
colspan: _col,
};
}
},
//问题确认开关
controlSwitch(val, row) {
console.log("333", val, row);
},
cancelSS() {
this.dialogQR = false;
},
async save() {
let res = await wtzgxfProblemRectification(this.tableDataQR);
if (res.code == "200") {
this.dialogQR = false;
this.resetForm();
} else {
this.$message("整改提交失败");
}
},
cancel() {
this.dialogSS = false;
},
async saveSS() {
this.tableDataQR.forEach((item) => {
if (item.confirmStatus == "1") {
if (!item.feedback) {
this.$message("有未填写的的解释批注");
throw new Error("主动跳出循环");
}
}
});
let res = await wtzgProblemRectification(this.tableDataQR);
if (res.code == "200") {
this.resetForm();
}
},
//问题提交
async appeal() {
this.mergingPosss = 0;
this.mergingRowsss = [];
if (this.checkedList.length != 1) {
this.$message("请选择一条数据进行提交");
return;
}
this.dialogSS = true;
let params = {
projectId: this.checkedList[0].projectId,
batchId: this.checkedList[0].batchId,
};
let res = await wtssSelProblemRectification(params);
if (res.code == "200") {
this.tableDataSS = res.data.records;
this.tableDataSS.forEach((item) => {
if (!item.confirmStatus) {
this.$set(item, "confirmStatus", "2");
}
switch (item.projectStage) {
case "1":
this.$set(item, "projectStagetext", "1.可研");
break;
case "2":
this.$set(item, "projectStagetext", "2.计划");
break;
case "3":
this.$set(item, "projectStagetext", "3.采购");
break;
case "4":
this.$set(item, "projectStagetext", "4.合同");
break;
case "5":
this.$set(item, "projectStagetext", "5.执行");
break;
case "6":
this.$set(item, "projectStagetext", "6.结决算及转资");
break;
}
});
console.log(this.tableDataSS, "状态是什么");
this.dataPretreatmentSS();
}
},
handleFileUpload(event, row, type) {
console.log("来了么");
this.file = event.target.files[0];
this.submitFile(row, type);
},
submitFile(row, type) {
if (this.file) {
const formData = new FormData();
formData.append("file", this.file);
ossupload(formData)
.then((response) => {
console.log(response);
this.file = [];
this.$set(row, type, response.data.fileId);
})
.catch((error) => {
console.error(error);
});
} else {
this.$message("请先选择文件");
}
},
closed() {
console.log("关闭");
this.handleSelectionChange();
},
async handleClickXZ(scope) {
console.log(scope.fileId);
let response = await downloadObject({
fileId: scope.fileId * 1,
});
let blob = new Blob([response]);
if ("download" in document.createElement("a")) {
let elink = document.createElement("a");
elink.download = scope.fileName;
elink.style.display = "none";
elink.href = URL.createObjectURL(blob);
document.body.appendChild(elink);
elink.click();
URL.revokeObjectURL(elink.href); // 释放URL 对象
document.body.removeChild(elink);
}
},
},
};
</script>
<style scoped lang="scss">
.main {
font-size: 14px;
position: relative;
height: 100%;
width: 100%;
box-sizing: border-box;
overflow-x: hidden;
}
.el-form {
display: flex;
width: 99%;
flex-wrap: wrap;
border-top: 2px solid #23c6c8;
border-left: 1px solid #dee5e7;
border-right: 1px solid #dee5e7;
border-bottom: 1px solid #dee5e7;
padding: 20px 10px;
margin-bottom: 20px;
.fromItem {
min-width: 24%;
margin: 0 0.5%;
margin-bottom: 20px;
.el-input {
width: 226px;
}
.el-select {
width: 226px;
}
}
/deep/ .el-form-item__content {
text-align: left;
display: inline-block;
margin-left: 10px !important;
}
/deep/ .el-form-item__label {
font-weight: bold;
color: #000;
width: 160px !important;
}
.button {
display: inline-block;
width: 100%;
text-align: left;
/deep/ .el-form-item__content {
margin-left: 20px !important;
text-align: left;
img {
width: 14px;
height: 14px;
margin-right: 15px;
vertical-align: middle;
}
}
.el-button {
background-color: #23c6c8;
border-color: #23c6c8;
color: #fff;
}
}
}
.eltable {
box-sizing: border-box;
text-align: center;
width: 150%;
min-width: 150%;
}
/deep/ .el-table .warning-row {
background: #f0ffff;
// color: #2785e6;
}
.elpagination {
text-align: right;
margin-right: 100px;
}
/deep/ .el-dialog {
border-radius: 10px;
margin-top: 3vh !important;
margin-left: 3vw !important;
}
/deep/.el-table th.el-table__cell.is-leaf,
.el-table td.el-table__cell {
text-align: center;
}
/deep/ .el-dialog__wrapper {
position: absolute;
}
/deep/ .v-modal {
position: absolute;
}
/deep/ .el-dialog__header {
background-color: #0d867f;
padding-bottom: 20px;
text-align: left;
border-radius: 10px 10px 0 0;
.el-dialog__title {
color: #fff;
}
}
/deep/ .el-table__header th {
background-color: #eeeeee;
font-weight: bold;
.cell {
color: #333;
}
}
/deep/.el-table {
position: absolute;
width: auto !important;
max-width: none;
// width: 100%;
.el-table__header-wrapper table,
.el-table__body-wrapper table {
// width: 100% !important;
}
.el-table__body,
.el-table__footer,
.el-table__header {
table-layout: auto;
}
}
.textarea {
width: 100%;
.el-textarea {
width: 60%;
}
}
.Btn {
width: 200px;
margin: 0 auto;
height: 30px;
line-height: 30px;
span {
display: inline-block;
width: 80px;
height: 25px;
line-height: 25px;
text-align: center;
border-radius: 4px;
margin-right: 12px;
}
span:first-of-type {
border: 1px solid #000;
}
span:last-of-type {
background-color: #0d867f;
border: 1px solid #0d867f;
color: #fff;
}
}
/deep/ .el-dialog__headerbtn .el-dialog__close {
color: #fff;
}
.zjBtn {
width: 400px;
text-align: left;
vertical-align: middle;
span {
display: inline-block;
width: 140px;
height: 25px;
line-height: 25px;
text-align: center;
border-radius: 5px;
vertical-align: middle;
}
span:last-of-type {
background-color: #4ca6a7;
color: #fff;
padding: 5px 10px;
margin-left: 10px;
}
}
/deep/ .el-icon-position {
margin-right: 10px;
}
/deep/ .el-icon-folder-delete {
margin-right: 10px;
}
.cxItem {
text-align: right;
width: 20%;
.zjquery {
display: inline-block;
background-color: #4ca6a7;
width: 89px;
height: 40px;
color: #fff;
text-align: center;
line-height: 40px;
border-radius: 5px;
}
}
.midBtn {
margin: 0 auto;
margin-top: 20px;
span {
display: inline-block;
width: 80px;
height: 29px;
line-height: 29px;
text-align: center;
margin-right: 10px;
border-radius: 5px;
box-sizing: border-box;
background-color: #4ca6a7;
color: #fff;
border: 1px solid #4ca6a7;
}
span:first-of-type {
border: 1px solid grey;
color: grey;
background-color: #fff;
}
// span:last-of-type {
// background-color: #4ca6a7;
// color: #fff;
// border: 1px solid #4ca6a7;
// }
}
.setTable {
height: 500px;
overflow-y: auto;
overflow-x: scroll;
position: relative;
overflow: auto;
}
.dialog {
// height: 700px;
// overflow-y: auto;
// overflow-x: auto;
.xqtitle {
text-align: left;
font-size: 18px;
border-bottom: 1px solid gainsboro;
padding-bottom: 10px;
span {
display: inline-block;
width: 5px;
height: 20px;
background: #0d867f;
margin-right: 14px;
vertical-align: middle;
}
}
/deep/ .el-form {
width: 65%;
flex-wrap: wrap;
padding: 0 10px;
text-align: center;
margin: 100px auto;
border: none;
.fromItem {
text-align: center;
width: 51%;
margin: 0 auto;
margin-bottom: 20px;
.el-input {
width: 226px;
}
.el-select {
width: 226px;
}
}
/deep/ .el-form-item__content {
text-align: left;
}
/deep/ .el-form-item__label {
font-weight: 400;
// color: #000;
width: 160px !important;
}
}
}
/deep/.el-table th.el-table__cell.is-leaf,
.el-table td.el-table__cell {
text-align: center;
}
/deep/ .el-table__cell {
text-align: center;
}
h3 {
text-align: left;
}
/deep/.el-switch__core {
height: 30px;
width: 79px !important;
border-radius: 20px;
}
/deep/.el-switch.is-checked .el-switch__core::after {
margin-left: -28px;
}
/deep/ .el-switch_label {
height: 30px;
line-height: 30px;
}
/deep/.el-switch {
height: 30px;
line-height: 30px;
border-radius: 20px;
}
/deep/ .el-switch__label * {
font-size: 12px;
}
/deep/.el-switch__core:after {
width: 26px;
height: 26px;
}
/deep/.el-switch__label--left {
position: absolute;
left: 30px;
color: #fff;
z-index: -1111;
cursor: default;
user-select: none;
}
/deep/.el-switch__label--right {
position: absolute;
right: 30px;
color: #fff;
z-index: -1111;
cursor: default;
user-select: none;
}
/deep/.el-switch__label--right.is-active {
z-index: 1111;
color: grey !important;
height: 30px;
line-height: 30px;
}
/deep/.el-switch__label--left.is-active {
z-index: 1111;
color: #fff !important;
height: 30px;
line-height: 30px;
}
/deep/ .el-dialog__body {
padding-bottom: 15px;
}
.setscroll {
width: 100%;
height: 650px;
position: relative;
overflow: auto;
}
.dialog {
.eltable {
box-sizing: border-box;
text-align: center;
width: 100%;
min-width: 100%;
}
}
// ::-webkit-scrollbar {
// width: 6px; // 横向滚动条
// height: 6px; // 纵向滚动条必写
// }
</style>
\ No newline at end of file
<!-- 辅助核验 -->
<template>
<div class="main">
<el-form :model="ruleForm" label-width="100px" class="demo-ruleForm" ref="formName">
<el-form-item label="批次年度:" prop="batchYear" class="fromItem">
<el-select v-model="ruleForm.batchYear" placeholder="请选择">
<el-option
v-for="(item, index) in yearsList"
:key="index"
:label="item+'年'"
:value="item"/>
</el-select>
</el-form-item>
<el-form-item label="后评估批次名称:" prop="batchName" class="fromItem">
<el-input v-model="ruleForm.batchName" placeholder="请输入"></el-input>
</el-form-item>
<el-form-item label="后评估状态:" prop="postEvalState" class="fromItem">
<el-select v-model="ruleForm.postEvalState" placeholder="请选择">
<el-option label="未下发" value="0"></el-option>
<el-option label="已下发" value="1"></el-option>
<el-option label="已撤回" value="2"></el-option>
</el-select>
</el-form-item>
<el-form-item class="button">
<el-button @click="submitForm()">
<img class="buttonIcon" src="../../assets/cx.png" />查询</el-button
>
<el-button @click="resetForm('ruleForm')">
<img class="buttonIcon" src="../../assets/cz.png" />重置</el-button
>
<el-button @click="detailsForm('ruleForm')">
<img class="buttonIcon" src="../../assets/ck.png" />详情</el-button
>
<el-button @click="configs()"
><i class="el-icon-position"></i> 确认项目评估
</el-button>
<el-button @click="withdraw()">
<i class="el-icon-folder-delete"></i>撤回
</el-button>
</el-form-item>
</el-form>
<el-table
@selection-change="handleSelectionChange"
ref="multipleTable"
:data="tableData"
tooltip-effect="dark"
style="width: 100%"
header-cell-class-name="custom-th-background"
class="eltable"
:row-class-name="tableRowClassName"
border
>
<el-table-column label="序号" width="55" type="index"> </el-table-column>
<el-table-column type="selection"> </el-table-column>
<el-table-column label="批次年度" prop="batchYear"> <template slot-scope="scope">
{{scope.row.batchYear}}
</template></el-table-column>
<el-table-column prop="batchName" label="后评估批次名称">
</el-table-column>
<el-table-column
prop="planReviewDate"
label="计划评估日期"
width="auto"
>
</el-table-column>
<el-table-column prop="expertName" label="评审专家" width="auto">
</el-table-column>
<el-table-column prop="postEvalState" label="批次确认状态" width="auto">
</el-table-column>
<el-table-column prop="batchName" label="评估项目" width="auto">
</el-table-column>
<el-table-column prop="prjsOfExpert" label="已选择数量" width="auto">
</el-table-column>
</el-table>
<el-pagination
@size-change="handleSizeChange"
@current-change="handleCurrentChange"
:current-page="currentPage"
:page-sizes="[10, 15, 20, 50]"
:page-size="100"
layout="total, sizes, prev, pager, next, jumper"
:total="total"
class="elpagination"
>
</el-pagination>
<!-- 详情弹窗 -->
<el-dialog
title="提交评估材料"
:visible.sync="dialogXQ"
width="90%"
:modal-append-to-body="false"
:append-to-body="false"
>
<div class="dialog">
<el-form
ref="formName"
:model="ruleFormdialogBJ"
label-width="100px"
class="demo-ruleForm"
:rules="rules"
>
<el-form-item label="批次年度:" prop="batchYear" class="fromItem">
<el-input v-model="ruleFormdialogBJ.batchYear" disabled></el-input>
</el-form-item>
<el-form-item label="后评估批次名称:" prop="batchName" class="fromItem">
<el-input v-model="ruleFormdialogBJ.batchName" disabled></el-input>
</el-form-item>
<el-form-item
label="计划评审日期:"
prop="planReviewDate"
class="fromItem"
>
<el-input
v-model="ruleFormdialogBJ.planReviewDate" disabled
></el-input>
</el-form-item>
<el-form-item label="每位专家可评估项目数:" prop="prjsOfExpert" class="fromItem">
<el-input
v-model="ruleFormdialogBJ.prjsOfExpert" disabled
></el-input>
</el-form-item>
<el-form-item label="工作组织情况:" class="textarea">
<el-input
type="textarea"
v-model="ruleFormdialogBJ.description"
disabled
></el-input>
</el-form-item>
</el-form>
<p class="zjBtn">
待评估项目
</p>
<el-table
@selection-change="handleSelectionChange"
:data="addtableData"
tooltip-effect="dark"
style="width: 100%"
header-cell-class-name="custom-th-background"
class="eltable"
:row-class-name="tableRowClassName"
border
>
<el-table-column label="序号" width="55" type="index">
</el-table-column>
<el-table-column label="项目编码" width="auto" prop="projectId">
</el-table-column>
<el-table-column prop="projectYear" label="项目下达年度" width="auto">
</el-table-column>
<el-table-column prop="projectName" label="项目名称" width="auto">
</el-table-column>
<el-table-column prop="projectCategory" label="建设形式" width="auto">
</el-table-column>
<el-table-column prop="projectStatus" label="项目建设阶段" width="auto">
</el-table-column>
<el-table-column prop="哪个字段" label="历史核查状态" width="auto">
</el-table-column>
<el-table-column prop="email" label="部门" width="auto">
</el-table-column>
<!-- <el-table-column fixed="right" label="操作" width="auto">
<template slot-scope="scope">
<el-button @click="handleClick(scope.row)" type="text" size="small">删除</el-button>
</template>
</el-table-column> -->
</el-table>
<!-- <el-pagination
@size-change="handleSizeChangeAdd"
@current-change="handleCurrentChangeAdd"
:current-page="addcurrentPage"
:page-sizes="[5, 10, 20, 50]"
:page-size="100"
layout="total, sizes, prev, pager, next, jumper"
:total="addtotal"
class="elpagination"
>
</el-pagination> -->
<!-- <p class="midBtn">
<span @click="cancelXZ()">取消</span
><span @click="saveXZ()">确认发布</span>
</p> -->
</div>
</el-dialog>
<!-- 确认评估项目 -->
<el-dialog
title="确认待评估项目"
:visible.sync="dialogAdd"
width="90%"
:modal-append-to-body="false"
:append-to-body="false"
>
<div class="dialog">
<el-form
ref="formName"
:model="ruleFormdialogAdd"
label-width="150px"
class="demo-ruleForm"
:rules="rules"
>
<el-form-item label="批次年度:" prop="batchYear" class="fromItem">
<el-input v-model="ruleFormdialogBJ.batchYear" disabled></el-input>
</el-form-item>
<el-form-item label="后评估批次名称:" prop="batchName" class="fromItem">
<el-input v-model="ruleFormdialogBJ.batchName" disabled></el-input>
</el-form-item>
<el-form-item
label="计划评审日期:"
prop="planReviewDate"
class="fromItem"
>
<el-input
v-model="ruleFormdialogBJ.planReviewDate" disabled
></el-input>
</el-form-item>
<el-form-item label="每位专家可评估项目数:" prop="prjsOfExpert" class="fromItem">
<el-select
v-model="ruleFormdialogBJ.prjsOfExpert"
placeholder="请选择"
>
<el-option label="100" value="100"></el-option>
<el-option label="200" value="200"></el-option>
<el-option label="300" value="300"></el-option>
<el-option label="不限" value="不限"></el-option>
</el-select>
</el-form-item>
<el-form-item label="工作组织情况:" class="textarea">
<el-input
type="textarea"
v-model="ruleFormdialogBJ.description"
disabled
></el-input>
</el-form-item>
</el-form>
<p class="zjBtn">
待评估项目 <span @click="xzExperts()">手动选择待评估项目</span>
</p>
<el-table
@selection-change="handleSelectionChange"
:data="addtableData"
tooltip-effect="dark"
style="width: 100%"
header-cell-class-name="custom-th-background"
class="eltable"
:row-class-name="tableRowClassName"
border
>
<el-table-column label="序号" width="55" type="index">
</el-table-column>
<el-table-column label="项目编码" width="auto" prop="projectId">
</el-table-column>
<el-table-column prop="projectYear" label="项目下达年度" width="auto">
</el-table-column>
<el-table-column prop="projectName" label="项目名称" width="auto">
</el-table-column>
<el-table-column prop="projectCategory" label="建设形式" width="auto">
</el-table-column>
<el-table-column prop="projectStatus" label="项目建设阶段" width="auto">
</el-table-column>
<el-table-column prop="哪个字段" label="历史核查状态" width="auto">
</el-table-column>
<el-table-column prop="email" label="部门" width="auto">
</el-table-column>
<el-table-column fixed="right" label="操作" width="auto">
<template slot-scope="scope">
<el-button @click="handleClick(scope.row)" type="text" size="small">删除</el-button>
</template>
</el-table-column>
</el-table>
<el-pagination
@size-change="handleSizeChangeAdd"
@current-change="handleCurrentChangeAdd"
:current-page="addcurrentPage"
:page-sizes="[5, 10, 20, 50]"
:page-size="100"
layout="total, sizes, prev, pager, next, jumper"
:total="addtotal"
class="elpagination"
>
</el-pagination>
<p class="midBtn">
<span @click="cancelXZ()">取消</span
><span @click="saveXZ()">确认发布</span>
</p>
</div>
</el-dialog>
<!-- 选择评估项目 -->
<el-dialog
title="选择待评估项目"
:visible.sync="dialogAddzj"
width="90%"
:modal-append-to-body="false"
:append-to-body="false"
>
<div class="adzjdialog">
<el-form :model="ruleFormZJ" label-width="100px" class="demo-ruleForm">
<el-form-item label="项目下达年度:" prop="projectYear" class="fromItem">
<el-select v-model="ruleFormZJ.projectYear" placeholder="请选择">
<el-option label="2024年" value="2024"></el-option>
<el-option label="2023年" value="2023"></el-option>
<el-option label="2022年" value="2022"></el-option>
<el-option label="2021年" value="2021"></el-option>
</el-select>
</el-form-item>
<el-form-item label="项目编码:" prop="projectId" class="fromItem">
<el-input
v-model="ruleFormZJ.projectId"
placeholder="请输入"
></el-input>
</el-form-item>
<el-form-item label="项目名称:" prop="projectName" class="fromItem">
<el-input
v-model="ruleFormZJ.projectName"
placeholder="请输入"
></el-input>
</el-form-item>
<el-form-item label="项目内容:" prop="projectInfo" class="fromItem" >
<el-input
v-model="ruleFormZJ.projectInfo"
placeholder="请输入"
></el-input>
</el-form-item>
<el-form-item label="省公司计划文件号:" prop="字段待确认" class="fromItem">
<el-input
v-model="ruleFormZJ.fullName"
placeholder="请输入"
></el-input>
</el-form-item>
<el-form-item label="信通公司计划文件号:" prop="字段待确认" class="fromItem">
<el-input
v-model="ruleFormZJ.fullName"
placeholder="请输入"
></el-input>
</el-form-item>
<el-form-item label="建设形式:" prop="projectCategory" class="fromItem">
<el-select v-model="ruleFormZJ.projectCategory" placeholder="请选择">
<el-option label="2024年" value="2024"></el-option>
<el-option label="2023年" value="2023"></el-option>
<el-option label="2022年" value="2022"></el-option>
<el-option label="2021年" value="2021"></el-option>
</el-select>
</el-form-item>
<el-form-item label="部门:" prop="department" class="fromItem">
<el-select v-model="ruleFormZJ.department" placeholder="请选择">
<el-option label="2024年" value="2024"></el-option>
<el-option label="2023年" value="2023"></el-option>
<el-option label="2022年" value="2022"></el-option>
<el-option label="2021年" value="2021"></el-option>
</el-select>
</el-form-item>
<el-form-item class="cxItem">
<span class="zjquery" @click="xzExperts()"> 查询 </span>
</el-form-item>
</el-form>
<el-table
@selection-change="handleSelectionChangeZJ"
ref="multipleTableZJ"
:data="zjtableData"
tooltip-effect="dark"
style="width: 100%"
header-cell-class-name="custom-th-background"
class="eltable"
:row-class-name="tableRowClassName"
>
border >
<el-table-column type="selection"> </el-table-column>
<el-table-column label="序号" width="55" type="index">
<!-- <template slot-scope="scope">{{ scope.row.id }}</template> -->
</el-table-column>
<!-- <el-table-column type="selection"> </el-table-column> -->
<el-table-column label="项目编码" width="200" prop="projectId">
</el-table-column>
<el-table-column prop="projectYear" label="项目下达年度" width="200">
</el-table-column>
<el-table-column prop="projectName" label="项目名称" width="200">
</el-table-column>
<el-table-column prop="projectCategory" label="建设形式" width="200">
</el-table-column>
<el-table-column prop="projectStatus" label="项目建设阶段" width="200">
</el-table-column>
<el-table-column prop="字段待确认" label="历史核查状态" width="200">
</el-table-column>
<el-table-column prop="字段待确认" label="是否处于正在执行批次" width="200">
</el-table-column>
<el-table-column prop="字段待确认" label="计划文号" width="300">
<el-table-column prop="expertLevel" label="省公司" width="auto">
</el-table-column>
<el-table-column prop="expertLevel" label="信通公司" width="auto">
</el-table-column>
</el-table-column>
<el-table-column label="总投资计划(万元)" width="300">
<el-table-column prop="costAmountTotal" label="成本金" width="auto">
</el-table-column>
<el-table-column prop="capitalAmountTotal" label="资本金" width="auto">
</el-table-column>
</el-table-column>
<el-table-column label="当年投资计划(万元)" width="300">
<el-table-column prop="costAmountCurrentMfdel" label="成本金" width="auto">
</el-table-column>
<el-table-column prop="capitalAmountCurrentMfdel" label="资本金" width="200">
</el-table-column>
</el-table-column>
<el-table-column prop="department" label="部门" width="200">
</el-table-column>
<el-table-column prop="字段待确认" label="承建单位" width="200">
</el-table-column>
<el-table-column prop="字段待确认" label="项目经理" width="200">
</el-table-column>
<el-table-column prop="projectInfo" label="项目内容" width="200" show-overflow-tooltip>
</el-table-column>
<el-table-column prop="inputuser" label="创建人" width="200">
</el-table-column>
<el-table-column prop="inputtime" label="创建时间" width="200">
</el-table-column>
</el-table>
<!-- <el-pagination
@size-change="handleSizeChangeZJ"
@current-change="handleCurrentChangeZJ"
:current-page="currentZJ"
:page-sizes="[5, 10, 20, 50]"
:page-size="100"
layout="total, sizes, prev, pager, next, jumper"
:total="zjtotal"
class="elpagination"
>
</el-pagination> -->
<p class="midBtn">
<span @click="cancelZJ()">取消</span
><span @click="saveZJ()">选择</span>
</p>
</div>
</el-dialog>
</div>
</template>
<script>
import {
projectInfo,
fbProjectInfo,
delProjectInfo,
joinProjectInfo,
getProjectInfo,
chProjectInfo
} from "@/api/index";
import { generateYearOptions } from "@/utils/cache";
export default {
data() {
return {
yearsList:generateYearOptions(),
ruleForm: {
batchYear: "",
batchName: "",
postEvalState: "",
},
ruleFormdialog: {
batchYear: "",
batchName: "",
planReviewDate: "",
fullName: "",
},
ruleFormZJ: {
fields: "",
expertState: "",
fullName: "",
},
ruleFormdialogAdd: {
batchYear: "",
batchName: "",
planReviewDate: "",
description: "",
remark: "",
},
ruleFormdialogBJ: {
batchYear: "",
batchName: "",
planReviewDate: "",
prjsOfExpert:"",
description: "",
},
rules: {
prjsOfExpert: [
{ required: true, message: "请选择每位专家可评估项目数", trigger: "prjsOfExpert" },
],
},
tableData: [],
tableDataQD: [], //清单列表
checkedList: [],
currentPage: 1,
currentPagetjcl: 1,
pageSizetjcl: 10,
total: 0,
dialogXQ: false,
currentPageBJ:1,
pageSizeBJ:10,
dialogAdd: false,
dialogAddzj: false,
pageSize: 10,
current: 1,
pageSizeZJ: 10,
currentZJ: 1,
addtotal: 0,
currentAdd: 1,
pageSizeAdd: 10,
currentedit: 1,
pageSizeedit: 10,
xfParam: "",
dialogedit: false,
expertIdList: [],
totalBJ:0,
addZJList: [],
expertState: "",
fields: "",
zjfullName: "",
zjtotal: 0,
zjtableData: [],
addcurrentPage: 1,
addtableData: [],
message: {},
};
},
mounted() {
this.submitForm();
},
methods: {
async submitForm(formName) {
let params = {
current: this.currentPage,
pageSize: this.pageSize,
};
Object.assign(params, this.ruleForm);
console.log(params);
(this.tableData = [
{
expertId: 1,
fullName: "王小明",
gender: 1,
birthday: "2024-04-23",
compId: 10001,
qualification: "硕士",
contact: "13241375678",
email: "115485@qq.com",
fields: "1",
expertLevel: 1,
description: "1",
expertState: 1,
creator: 1,
createTime: "2024-04-23 14:47:07",
lastUpdatedby: 1,
lastUpdateTime: "2024-04-23 14:47:12",
column14: 1,
},
{
expertId: 2,
fullName: "李晓帅",
gender: 0,
birthday: "2024-04-23",
compId: 10001,
qualification: "博士",
contact: "13241375678",
email: "115485@qq.com",
fields: "1",
expertLevel: 1,
description: "1",
expertState: 1,
creator: 1,
createTime: "2024-04-23 14:47:07",
lastUpdatedby: 1,
lastUpdateTime: "2024-04-23 14:47:12",
column14: 1,
},
{
expertId: 3,
fullName: "张晓楠",
gender: 1,
birthday: "2024-04-23",
compId: 10002,
qualification: "博士后",
contact: "13241375678",
email: "115485@qq.com",
fields: "1",
expertLevel: 1,
description: "1",
expertState: 1,
creator: 1,
createTime: "2024-04-23 14:47:07",
lastUpdatedby: 1,
lastUpdateTime: "2024-04-23 14:47:12",
column14: 1,
},
]),
(this.total = 2);
return;
let res = await projectInfo(params);
if (res.code == "200") {
this.tableData = res.data.records;
this.total = res.data.total * 1;
}
},
resetForm() {
this.$refs.formName.resetFields();
this.currentPage = 1;
this.pageSize = 10;
this.submitForm();
},
//详情
async detailsForm() {
if (this.checkedList.length != 1) {
this.$message("请选择");
return;
}
console.log("222",this.checkedList);
this.dialogXQ = true;
this.ruleFormdialogBJ=this.checkedList[0]
let params={
// current:1,
// pageSize:10,
}
Object.assign(params, this.ruleFormdialogAdd);
let res=await joinProjectInfo(params)
if (res.code == "200") {
this.tableData = res.data.records;
// this.total = res.data.total * 1;
}
},
//确认评估项目
async configs(){
// 只能选中状态待评估的
if (this.checkedList.length != 1) {
this.$message("请选择");
return;
}
this.ruleFormdialogBJ=this.checkedList[0]
this.dialogAdd=true
let params={
// current:1,
// pageSize:10,
}
Object.assign(params, this.ruleFormdialogAdd);
let res=await joinProjectInfo(params)
if (res.code == "200") {
this.tableData = res.data.records;
// this.total = res.data.total * 1;
}
},
//表格颜色
tableRowClassName({ row, rowIndex }) {
if (rowIndex % 2 == 1) {
return "warning-row";
}
return "";
},
//主列表选中行信息
handleSelectionChange(selection) {
if (Array.isArray(selection) && selection.length > 1) {
this.$refs.multipleTable.toggleRowSelection(selection[0], false);
this.$refs.multipleTable.toggleRowSelection(selection[1], true);
}
this.checkedList = this.$refs.multipleTable.selection;
this.ruleFormdialog = this.checkedList[0];
console.log(this.checkedList, "2222");
},
handleSizeChange(val) {
console.log(`每页 ${val} 条`);
this.pageSize = val;
},
handleCurrentChange(val) {
console.log(`当前页: ${val}`);
this.currentPage = val;
},
handleSizeChangeZJ(val) {
console.log(`每页 ${val} 条`);
this.pageSizeZJ = val;
},
handleCurrentChangeZJ(val) {
console.log(`当前页: ${val}`);
this.currentZJ = val;
},
handleSizeChangeAdd(val) {
this.pageSizeAdd = val;
},
handleCurrentChangeAdd(val) {
this.currentAdd = val;
},
handleCurrentChangeBJ(val) {
console.log(`当前页: ${val}`);
this.currentPageBJ = val;
},
//选择项目
saveZJ() {
if (this.addZJList.length < 1) {
this.$message("请选择项目");
return;
}
this.addtableData=this.addZJList;
console.log(this.addtableData, "addtableData");
this.addtotal = this.addtableData.length;
this.dialogAddzj = false;
},
cancelZJ() {
this.dialogAddzj = false;
},
async xzExperts() {
this.dialogAddzj = true;
let params = {
current: this.currentZJ,
pageSize: this.pageSizeZJ,
};
Object.assign(params, this.ruleFormZJ);
let res = await getProjectInfo(params);
this.zjtableData = res.data.records;
// this.zjtotal = res.data.total * 1;
console.log(res, "xxx");
},
saveXZ() {
console.log("保存验证", this.$refs);
this.$refs.formName.validate((valid) => {
if (!valid) {
console.log("error submit!!");
return false;
} else {
if (this.addtableData.length < 1) {
this.$message("请选择待评估项目");
}
console.log(this.addZJList, "this.addZJList");
// 确认发布入参
let expertIdList = [];
// this.addZJList.forEach((item) => {
// expertIdList.push(item.expertId);
// });
// let expertStr = JSON.stringify(expertIdList).slice(1, -1);
// console.log(expertIdList, "expertIdList", expertStr);
// let params = {
// expertStr: expertStr,
// };
// Object.assign(params, this.ruleFormdialogAdd);
// this.xfParams = JSON.parse(JSON.stringify(params));
// console.log(params, "222");
// fbProjectInfo(params).then((res) => {
// this.dialogAdd = false;
// this.expertIdList=expertIdList
// this.resetForm();
// });
}
});
// this.$emit("listenToChildEvent", "reset");
// }
},
cancelXZ() {
this.dialogAdd = false;
},
//选中的专家
handleSelectionChangeZJ() {
this.addZJList = this.$refs.multipleTableZJ.selection;
console.log(this.$refs.multipleTableZJ.selection, "2222");
},
//点击删除
async handleClick(index, row) {
console.log("删除",index, row)
let params={
}
let res = await delProjectInfo(row);
// this.configs()
},
//点击撤回
async withdraw(){
//只能选择已下发未确认的 这块需要加一下
if (this.checkedList.length != 1) {
this.$message("请选择");
return;
}
let res= await chProjectInfo(this.checkedList[0])
},
},
};
</script>
<style scoped lang="scss">
.main {
font-size: 14px;
position: relative;
height: 100%;
width: 100%;
box-sizing: border-box;
}
.el-form {
display: flex;
width: 99%;
flex-wrap: wrap;
border-top: 2px solid #23c6c8;
border-left: 1px solid #dee5e7;
border-right: 1px solid #dee5e7;
border-bottom: 1px solid #dee5e7;
padding: 20px 10px;
margin: 20px 0;
.fromItem {
width: 24%;
margin: 0 0.5%;
margin-bottom: 20px;
.el-input {
width: 226px;
}
.el-select {
width: 226px;
}
}
/deep/ .el-form-item__content {
text-align: left;
}
/deep/ .el-form-item__label {
font-weight: bold;
color: #000;
width: 160px !important;
}
.button {
display: inline-block;
width: 100%;
text-align: left;
/deep/ .el-form-item__content {
margin-left: 20px !important;
text-align: left;
img {
width: 14px;
height: 14px;
margin-right: 15px;
vertical-align: middle;
}
}
.el-button {
background-color: #23c6c8;
border-color: #23c6c8;
color: #fff;
}
}
}
.eltable {
box-sizing: border-box;
text-align: center;
}
/deep/ .el-table .warning-row {
background: #f0ffff;
// color: #2785e6;
}
.elpagination {
text-align: right;
margin-right: 100px;
}
/deep/ .el-dialog {
border-radius: 10px;
}
/deep/.el-table th.el-table__cell.is-leaf, .el-table td.el-table__cell{
text-align: center;
}
/deep/ .el-dialog__wrapper {
position: absolute;
}
/deep/ .v-modal {
position: absolute;
}
/deep/ .el-dialog__header {
background-color: #0d867f;
padding-bottom: 20px;
text-align: left;
border-radius: 10px 10px 0 0;
.el-dialog__title {
color: #fff;
}
}
/deep/ .el-table__header th {
background-color: #eeeeee;
font-weight: bold;
.cell {
color: #333;
}
}
/deep/.el-table {
// width: 100%;
.el-table__header-wrapper table,
.el-table__body-wrapper table {
// width: 100% !important;
}
.el-table__body,
.el-table__footer,
.el-table__header {
table-layout: auto;
}
}
.dialog {
.xqtitle {
text-align: left;
font-size: 18px;
span {
display: inline-block;
width: 5px;
height: 20px;
background: #0d867f;
margin-right: 14px;
vertical-align: middle;
}
}
}
.textarea {
width: 100%;
.el-textarea {
width: 60%;
}
}
.Btn {
width: 200px;
margin: 0 auto;
span {
display: inline-block;
width: 80px;
height: 25px;
line-height: 25px;
text-align: center;
border-radius: 4px;
margin-right: 12px;
}
span:first-of-type {
border: 1px solid #000;
}
span:last-of-type {
background-color: #0d867f;
border: 1px solid #0d867f;
color: #fff;
}
}
/deep/ .el-dialog__headerbtn .el-dialog__close {
color: #fff;
}
.zjBtn {
width:400px;
text-align: left;
vertical-align: middle;
span {
display: inline-block;
width:140px;
height: 25px;
line-height: 25px;
text-align: center;
border-radius: 5px;
vertical-align: middle;
}
span:last-of-type {
background-color: #4ca6a7;
color: #fff;
padding: 5px 10px;
margin-left: 10px;
}
}
/deep/ .el-icon-position {
margin-right: 10px;
}
/deep/ .el-icon-folder-delete {
margin-right: 10px;
}
.cxItem {
text-align: right;
width: 20%;
.zjquery {
display: inline-block;
background-color: #4ca6a7;
width: 89px;
height: 40px;
color: #fff;
text-align: center;
line-height: 40px;
border-radius: 5px;
}
}
.midBtn {
margin: 0 auto;
span {
display: inline-block;
width: 80px;
height: 25px;
line-height: 25px;
text-align: center;
margin-right: 10px;
border-radius: 5px;
}
span:first-of-type {
border: 1px solid grey;
}
span:last-of-type {
background-color: #4ca6a7;
color: #fff;
}
}
</style>
\ No newline at end of file
<template>
<div class="main">
<el-form
:model="ruleForm"
ref="formName"
label-width="100px"
class="demo-ruleForm"
>
<el-form-item label="批次年度:" prop="batchYear" class="fromItem">
<el-select v-model="ruleForm.batchYear" placeholder="请选择" clearable>
<el-option
v-for="(item, index) in yearsList"
:key="index"
:label="item + '年'"
:value="item"
/>
</el-select>
</el-form-item>
<el-form-item label="后评估名称:" prop="batchName" class="fromItem">
<el-input
v-model="ruleForm.batchName"
placeholder="请输入"
clearable
></el-input>
</el-form-item>
<!-- <el-form-item label="后评估状态:" prop="postEvalState" class="fromItem">
<el-select
v-model="ruleForm.postEvalState"
placeholder="请选择"
clearable
>
<el-option label="未下发" value="0"></el-option>
<el-option label="已下发" value="1"></el-option>
<el-option label="已撤回" value="2"></el-option>
</el-select>
</el-form-item> -->
<el-form-item label="项目名称:" prop="projectName" class="fromItem">
<el-input
v-model="ruleForm.projectName"
placeholder="请输入"
clearable
></el-input>
</el-form-item>
<el-form-item label="项目ID:" prop="projectId" class="fromItem">
<el-input
v-model="ruleForm.projectId"
placeholder="请输入"
clearable
></el-input>
</el-form-item>
<el-form-item class="button">
<el-button @click="submitForm()">
<img class="buttonIcon" src="../../assets/cx.png" />查询</el-button
>
<el-button @click="resetForm('ruleForm')">
<img class="buttonIcon" src="../../assets/cz.png" />重置</el-button
>
<el-button @click="detailsForm('ruleForm')">
<img class="buttonIcon" src="../../assets/ck.png" />详情</el-button
>
</el-form-item>
</el-form>
<div class="setscroll">
<el-table
@selection-change="handleSelectionChange"
ref="multipleTable"
:data="tableData"
tooltip-effect="dark"
style="width: 100%"
header-cell-class-name="custom-th-background"
class="eltable"
:row-class-name="tableRowClassName"
border
>
<el-table-column label="序号" width="55" type="index">
</el-table-column>
<el-table-column type="selection"> </el-table-column>
<el-table-column label="批次年度" prop="batchYear">
<template slot-scope="scope">
{{ scope.row.batchYear }}
</template></el-table-column
>
<el-table-column prop="batchName" label="后评估批次名称">
</el-table-column>
<el-table-column
prop="projectName"
label="评估项目名称"
show-overflow-tooltip
>
</el-table-column>
<el-table-column prop="projectCategory" label="建设形式">
</el-table-column>
<el-table-column prop="projectStatus" label="项目建设阶段">
</el-table-column>
<!-- <el-table-column prop="createTime" label="历史审核状态">
</el-table-column> -->
<el-table-column prop="expertName" label="评审专家名单">
</el-table-column>
<!-- <el-table-column prop="字段待确认" label="后评估状态"> </el-table-column> -->
<el-table-column prop="reviewDate" label="评估日期"> </el-table-column>
</el-table>
</div>
<el-pagination
@size-change="handleSizeChange"
@current-change="handleCurrentChange"
:current-page="currentPage"
:page-sizes="[10, 15, 20, 50]"
:page-size="100"
layout="total, sizes, prev, pager, next, jumper"
:total="total"
class="elpagination"
>
</el-pagination>
<el-dialog
title="详情"
:visible.sync="dialog"
width="90%"
:modal-append-to-body="false"
:append-to-body="false"
>
<div class="dialog">
<h3>
项目名称:一期项目-电力营销-2023年网上国网(网上国网V1.0)-设计开发项目
</h3>
<el-tabs v-model="activeName" @tab-click="handleClick">
<el-tab-pane label="基本信息" name="first">
<div>
<p class="title"><span></span>项目基本信息</p>
<div class="content">
<p><label>项目编号:</label>{{ listData.projectId }}</p>
<p><label>项目下达年度:</label>{{ listData.projectYear }}</p>
<p>
<label>项目名称:</label>
<span>{{ listData.projectName }}</span>
</p>
<p><label>建设形式:</label>{{ listData.projectCategory }}</p>
<p>
<label>总投资计划(万元)-成本金:</label
>{{ listData.costAmountTotal }}
</p>
<p>
<label>总投资计划(万元)-资本金:</label
>{{ listData.capitalAmountTotal }}
</p>
<p><label>部门:</label>{{ listData.department }}</p>
<p><label>创建人:</label>{{ listData.inputuser }}</p>
<p><label>创建时间:</label>{{ listData.inputuser }}</p>
<p><label>修改人:</label>{{ listData.lastUpdatedby }}</p>
<p><label>修改时间:</label>{{ listData.lastUpdateTime }}</p>
</div>
<div class="table">
<p>项目后评估资料:</p>
<!-- <el-table
@selection-change="handleSelectionChange"
:data="qdtableData"
tooltip-effect="dark"
style="width: 100%"
header-cell-class-name="custom-th-background"
class="eltable tablepg"
:row-class-name="tableRowClassName"
border
>
<el-table-column label="序号" width="55" type="index">
</el-table-column>
<el-table-column label="类别" prop="batchtype">
</el-table-column>
<el-table-column prop="typeCode" label="资料类型">
</el-table-column>
<el-table-column prop="fileName" label="资料名称">
</el-table-column>
</el-table> -->
<div class="setscrolldialog">
<el-table
@selection-change="handleSelectionChange"
:data="qdtableData"
tooltip-effect="dark"
style="width: 100%"
header-cell-class-name="custom-th-background"
class="eltable"
:row-class-name="tableRowClassName"
border
>
<el-table-column label="序号" width="55" type="index">
</el-table-column>
<el-table-column label="材料类别" prop="batchtype">
</el-table-column>
<el-table-column prop="typeText" label="资料类型">
</el-table-column>
<el-table-column prop="fileName" label="资料名称">
<template slot-scope="scope" v-if="scope.row.fileName">
{{ scope.row.fileName }}&nbsp;&nbsp;<el-button
@click="handleClickXZ(scope.row)"
>下载</el-button
>
</template>
</el-table-column>
</el-table>
</div>
</div>
<p class="title"><span></span>批次详情</p>
<div class="content">
<p><label>批次年度:</label>{{ listData.batchYear }}</p>
<p><label>后评估批次名称:</label>{{ listData.batchName }}</p>
<p><label>计划评审日期:</label>{{ listData.planReviewDate }}</p>
</div>
<p class="title"><span></span>评审专家</p>
<div class="content">
<p><label>评审专家:</label>{{ listData.expertName }}</p>
</div>
</div>
</el-tab-pane>
<el-tab-pane label="问题清单" name="second">
<p class="title"><span></span>项目基本信息</p>
<el-table
:data="xxtableData"
tooltip-effect="dark"
style="width: 100%"
header-cell-class-name="custom-th-background"
class="eltable"
:row-class-name="tableRowClassName"
:span-method="arraySpanMethod"
border
>
<el-table-column
label="项目环节"
prop="projectStagetext"
width="150"
>
</el-table-column>
<el-table-column label="序号" width="100" type="index">
</el-table-column>
<el-table-column label="问题检查项" prop="quesCheckItem">
</el-table-column>
<el-table-column
label="检查说明"
prop="checkDesc"
show-overflow-tooltip
>
</el-table-column>
<el-table-column label="评估问题" prop="evalQues">
<!-- <template slot-scope="scope">
<el-input v-model="scope.row.evalQues"></el-input>
</template> -->
</el-table-column>
</el-table>
</el-tab-pane>
<el-tab-pane label="评审流程" name="third">
<el-table
:data="lctableData"
tooltip-effect="dark"
style="width: 100%"
header-cell-class-name="custom-th-background"
class="eltable"
:row-class-name="tableRowClassName"
border
>
<el-table-column label="流程节点" prop="processNodes" width="150">
</el-table-column>
<el-table-column label="状态" prop="state"> </el-table-column>
<el-table-column label="处理人" prop="processedBy">
</el-table-column>
<el-table-column label="处理时间" prop="processingTime">
</el-table-column>
</el-table>
</el-tab-pane>
</el-tabs>
</div>
<p class="close"><span @click="cancel()">关闭</span></p>
</el-dialog>
</div>
</template>
<script>
import { MaterialsList } from "@/utils/cache";
import {
fzcxselect,
fzcxXqselect,
wtqdqselect,
clqdselect,
selLcb,
downloadObject
} from "@/api/index";
import { generateYearOptions } from "@/utils/cache";
export default {
data() {
return {
yearsList: generateYearOptions(),
listData: {},
qdtableData: [],
tableDataNew: MaterialsList(),
xxtableData: [],
showButton: true,
ruleForm: {
batchYear: "",
batchName: "",
postEvalState: "",
projectName: "",
projectId: "",
},
ruleFormdialog: {
batchYear: "",
batchName: "",
planReviewDate: "",
fullName: "",
},
tableData: [],
checkedList: [],
currentPage: 1,
pageSize: 10,
currentPagetjcl: 1,
pageSizetjcl: 10,
total: 0,
dialog: false,
activeName: "first",
mergingRows: [],
lctableData: [],
};
},
mounted() {
this.submitForm();
},
methods: {
async submitForm() {
let params = {
current: this.currentPage,
pageSize: this.pageSize,
};
Object.assign(params, this.ruleForm);
console.log(params);
let res = await fzcxselect(params);
if (res.code == "200") {
this.tableData = res.data.records;
this.total = res.data.total * 1;
}
},
resetForm() {
this.$refs.formName.resetFields();
this.currentPage = 1;
this.pageSize = 10;
this.submitForm();
},
//详情
detailsForm() {
if (this.checkedList.length != 1) {
this.$message("请选择");
return;
}
this.dialog = true;
let params = {
batchId: this.checkedList[0].batchId,
projectId: this.checkedList[0].projectId,
};
Promise.all([fzcxXqselect(params), clqdselect(params)]).then((res) => {
console.log(res[0], res[1], "2222222");
this.listData = res[0].data.records[0];
this.qdtableData = JSON.parse(JSON.stringify(this.tableDataNew));
if (res[1].data.records.length > 0) {
// this.qdtableData = res[1].data.records;
this.qdtableData = this.qdtableData
.concat(res[1].data.records)
.reduce((accumulator, currentObj) => {
const existingObj = accumulator.find(
(obj) => obj.typeCode == currentObj.typeCode
);
if (existingObj) {
Object.assign(existingObj, currentObj);
} else {
accumulator.push(currentObj);
}
return accumulator;
}, []);
console.log(this.tableDataQD, " mergedArray mergedArray mergedArray");
}
});
},
//表格颜色
tableRowClassName({ row, rowIndex }) {
if (rowIndex % 2 == 1) {
return "warning-row";
}
return "";
},
arraySpanMethod({ row, column, rowIndex, columnIndex }) {
if (columnIndex === 0) {
//第一列
const _row = this.mergingRows[rowIndex];
const _col = _row > 0 ? 1 : 0;
return {
rowspan: _row,
colspan: _col,
};
}
},
dataPretreatment() {
this.mergingRows = [];
this.mergingPos = 0;
for (let i = 0; i < this.xxtableData.length; i++) {
// tabledata 表格数据源
if (i == 0) {
this.mergingRows.push(1);
this.mergingPos = 0;
} else {
if (
this.xxtableData[i].projectStage ===
this.xxtableData[i - 1].projectStage
) {
//哪些数据是要合并的 合并的条件是什么
this.mergingRows[this.mergingPos] += 1;
this.mergingRows.push(0);
} else {
this.mergingRows.push(1);
this.mergingPos = i;
}
}
}
},
async handleClick() {
console.log(this.activeName, "this.activeName");
if (this.activeName == "second") {
let params = {
batchId: this.checkedList[0].batchId,
projectId: this.checkedList[0].projectId,
};
this.xxtableData = [];
let res = await wtqdqselect(params);
if (res.code == "200") {
this.xxtableData = res.data.records;
this.total = res.data.total * 1;
}
this.xxtableData.forEach((item) => {
switch (item.projectStage) {
case 1:
this.$set(item, "projectStagetext", "1.可研");
break;
case 2:
this.$set(item, "projectStagetext", "2.计划");
break;
case 3:
this.$set(item, "projectStagetext", "3.采购");
break;
case 4:
this.$set(item, "projectStagetext", "4.合同");
break;
case 5:
this.$set(item, "projectStagetext", "5.执行");
break;
case 6:
this.$set(item, "projectStagetext", "6.结决算及转资");
break;
}
});
this.dataPretreatment();
} else if (this.activeName == "third") {
let params = {
batchId: this.checkedList[0].batchId,
projectId: this.checkedList[0].projectId,
};
let res = await selLcb(params);
if (res.code == "200") {
this.lctableData = res.data;
}
}
},
//主列表选中行信息
handleSelectionChange(selection) {
if (Array.isArray(selection) && selection.length > 1) {
this.$refs.multipleTable.toggleRowSelection(selection[0], false);
this.$refs.multipleTable.toggleRowSelection(selection[1], true);
}
this.checkedList = this.$refs.multipleTable.selection;
this.ruleFormdialog = this.checkedList[0];
console.log(this.checkedList, "2222");
},
handleSizeChange(val) {
console.log(`每页 ${val} 条`);
this.pageSize = val;
this.submitForm();
},
handleCurrentChange(val) {
console.log(`当前页: ${val}`);
this.currentPage = val;
this.submitForm();
},
cancel() {
this.dialog = false;
},
async handleClickXZ(scope) {
console.log(scope.fileId);
let response = await downloadObject({
fileId: scope.fileId * 1,
});
let blob = new Blob([response]);
if ("download" in document.createElement("a")) {
let elink = document.createElement("a");
elink.download = scope.fileName;
elink.style.display = "none";
elink.href = URL.createObjectURL(blob);
document.body.appendChild(elink);
elink.click();
URL.revokeObjectURL(elink.href); // 释放URL 对象
document.body.removeChild(elink);
}
},
},
};
</script>
<style scoped lang="scss">
.main {
font-size: 14px;
position: relative;
height: 100%;
width: 100%;
box-sizing: border-box;
overflow-x: hidden;
}
.el-form {
display: flex;
width: 100%;
flex-wrap: wrap;
border-top: 2px solid #23c6c8;
border-left: 1px solid #dee5e7;
border-right: 1px solid #dee5e7;
border-bottom: 1px solid #dee5e7;
padding: 20px 10px;
margin-bottom: 20px;
.fromItem {
min-width: 24%;
margin: 0 0.5%;
margin-bottom: 20px;
.el-input {
width: 226px;
}
.el-select {
width: 226px;
}
}
/deep/ .el-form-item__content {
text-align: left;
display: inline-block;
margin-left: 10px !important;
}
/deep/ .el-form-item__label {
font-weight: bold;
color: #000;
width: 160px !important;
}
.button {
display: inline-block;
width: 100%;
text-align: left;
/deep/ .el-form-item__content {
margin-left: 20px !important;
text-align: left;
img {
width: 14px;
height: 14px;
margin-right: 15px;
vertical-align: middle;
}
}
.el-button {
background-color: #23c6c8;
border-color: #23c6c8;
color: #fff;
}
}
}
.eltable {
width: 100%;
box-sizing: border-box;
}
/deep/ .el-table .warning-row {
background: #f0ffff;
// color: #2785e6;
}
.elpagination {
text-align: right;
margin-right: 100px;
}
/deep/ .el-dialog {
border-radius: 10px;
margin-top: 3vh !important;
margin-left: 3vw !important;
// height: 500px;
// box-sizing: border-box;
// overflow-y: auto;
}
/deep/ .el-dialog__wrapper {
position: absolute;
}
/deep/ .v-modal {
position: absolute;
}
/deep/ .el-dialog__header {
background-color: #0d867f;
// padding-bottom: 20px;
text-align: left;
border-radius: 10px 10px 0 0;
.el-dialog__title {
color: #fff;
}
}
/deep/ .el-table__header th {
background-color: #eeeeee;
font-weight: bold;
.cell {
color: #333;
}
}
/deep/.el-table {
width: 100%;
.el-table__header-wrapper table,
.el-table__body-wrapper table {
width: 100% !important;
}
.el-table__body,
.el-table__footer,
.el-table__header {
table-layout: auto;
}
}
.dialog {
.title {
text-align: left;
font-size: 18px;
font-family: "PingFangSC-Regular", "PingFang SC", sans-serif;
font-weight: 400;
font-style: normal;
font-size: 16px;
color: #1ec695;
text-align: left;
height: 20px;
margin-top: 0;
span {
border-radius: 2px;
display: inline-block;
width: 5px;
height: 18px;
background-color: #1ec695;
margin-right: 14px;
vertical-align: middle;
}
}
.content {
width: 100%;
display: flex;
flex-wrap: wrap;
p {
width: 24%;
text-align: left;
display: flex;
label {
display: inline-block;
width: 150px;
flex-shrink: 0;
text-align: right;
font-weight: bold;
margin-right: 20px;
vertical-align: middle;
}
span {
display: inline-block;
text-align: left;
}
}
}
.table {
width: 100%;
display: flex;
p {
width: 150px;
text-align: right;
font-weight: bold;
}
.tablepg {
margin-top: 20px;
margin-left: 5px;
}
}
}
.textarea {
width: 100%;
.el-textarea {
width: 60%;
}
}
.Btn {
width: 200px;
margin: 0 auto;
span {
display: inline-block;
width: 80px;
height: 25px;
line-height: 25px;
text-align: center;
border-radius: 4px;
margin-right: 12px;
}
span:first-of-type {
border: 1px solid #000;
}
span:last-of-type {
background-color: #0d867f;
border: 1px solid #0d867f;
color: #fff;
}
}
/deep/ .el-dialog__headerbtn .el-dialog__close {
color: #fff;
}
/deep/.el-table th.el-table__cell.is-leaf,
.el-table td.el-table__cell {
text-align: center;
}
/deep/ .el-table__cell {
text-align: center;
}
h3 {
text-align: left;
}
/deep/.el-dialog__body {
padding: 0 10px;
h3 {
margin: 10px 0;
}
}
/deep/ .el-descriptions-item__container .el-descriptions-item__label {
font-weight: bold;
width: 100px;
text-align: right;
}
/deep/.el-tabs__content {
overflow: auto;
height: 500px;
padding-bottom: 20px;
}
.close {
width: 100%;
height: 40px;
line-height: 20px;
span {
display: inline-block;
width: 80px;
height: 30px;
line-height: 30px;
border: 1px solid grey;
border-radius: 5px;
}
}
.setscroll {
width: 100%;
height: 650px;
position: relative;
overflow: auto;
}
.setscrolldialog {
width: 100%;
height: 300px;
overflow: auto;
box-sizing: border-box;
/deep/ .el-table {
width: 96% !important;
height: 300px;
overflow: auto;
}
}
</style>
\ No newline at end of file
<template>
<div class="main">
<el-form :model="ruleForm" label-width="100px" class="demo-ruleForm" ref="formName">
<el-form-item label="批次年度:" prop="batchYear" class="fromItem">
<el-select v-model="ruleForm.batchYear" placeholder="请选择" clearable>
<el-option
v-for="(item, index) in yearsList"
:key="index"
:label="item+'年'"
:value="item"/>
</el-select>
</el-form-item>
<el-form-item label="后评估批次名称:" prop="batchName" class="fromItem">
<el-input v-model="ruleForm.batchName" placeholder="请输入" clearable></el-input>
</el-form-item>
<!-- <el-form-item label="后评估状态:" prop="postEvalState" class="fromItem">
<el-select v-model="ruleForm.postEvalState" placeholder="请选择" clearable>
<el-option label="未下发" value="0"></el-option>
<el-option label="已下发" value="1"></el-option>
<el-option label="已撤回" value="2"></el-option>
</el-select>
</el-form-item> -->
<el-form-item label="项目名称:" prop="projectName" class="fromItem">
<el-input
v-model="ruleForm.projectName"
placeholder="请输入"
clearable
></el-input>
</el-form-item>
<el-form-item label="项目ID:" prop="projectId" class="fromItem">
<el-input
v-model="ruleForm.projectId"
placeholder="请输入"
clearable
></el-input>
</el-form-item>
<el-form-item class="button">
<el-button @click="submitForm()">
<img class="buttonIcon" src="../../assets/cx.png" />查询</el-button
>
<el-button @click="resetForm('ruleForm')">
<img class="buttonIcon" src="../../assets/cz.png" />重置</el-button
>
<el-button @click="sendQuestion()">
<i class="el-icon-chat-dot-square"></i
>&nbsp;&nbsp;&nbsp;问题下发</el-button
>
<el-button @click="sendQuestions()"
><i class="el-icon-chat-line-square"></i> &nbsp;&nbsp;问题批量下发
</el-button>
<el-button @click="withdraw()">
<i class="el-icon-folder-delete"></i>撤回
</el-button>
</el-form-item>
</el-form>
<div class="setscroll">
<el-table
@selection-change="handleSelectionChange"
ref="multipleTable"
:data="tableData"
tooltip-effect="dark"
style="width: 100%"
header-cell-class-name="custom-th-background"
class="eltable"
:row-class-name="tableRowClassName"
border
>
<el-table-column label="序号" width="55" type="index"> </el-table-column>
<el-table-column type="selection"> </el-table-column>
<el-table-column label="批次年度" prop="batchYear"><template slot-scope="scope">
{{scope.row.batchYear}}
</template> </el-table-column>
<el-table-column prop="batchName" label="后评估批次名称">
</el-table-column>
<el-table-column prop="projectName" label="评估项目名称" show-overflow-tooltip>
</el-table-column>
<el-table-column prop="projectCategory" label="建设形式">
</el-table-column>
<el-table-column prop="projectStatus" label="项目建设阶段">
</el-table-column>
<!-- <el-table-column prop="createTime" label="历史审核状态">
</el-table-column> -->
<el-table-column prop="expertName" label="评审专家名单">
</el-table-column>
<el-table-column prop="appealDeadline" label="问题申诉截止时间">
</el-table-column>
<el-table-column prop="rectificationDeadline" label="问题整改截止时间">
</el-table-column>
<el-table-column prop="postEvalState" label="问题下发状态">
</el-table-column>
<!-- <el-table-column prop="reviewStatus" label="后评估状态"> </el-table-column> -->
<el-table-column prop="reviewDate" label="评估日期"> </el-table-column>
</el-table>
</div>
<el-pagination
@size-change="handleSizeChange"
@current-change="handleCurrentChange"
:current-page="currentPage"
:page-sizes="[10, 15, 20, 50]"
:page-size="100"
layout="total, sizes, prev, pager, next, jumper"
:total="total"
class="elpagination"
>
</el-pagination>
<!-- 详情弹窗 -->
<el-dialog
title="问题下发"
:visible.sync="dialogXQ"
width="70%"
:modal-append-to-body="false"
:append-to-body="false"
>
<div class="dialog">
<el-form
:model="ruleFormdialogBJ"
label-width="100px"
class="demo-ruleForm"
:rules="rules"
>
<el-form-item
label="问题申诉截止时间:"
prop="appealDeadline"
class="fromItem"
>
<el-date-picker
v-model="ruleFormdialogBJ.appealDeadline"
type="date"
placeholder="选择日期"
value-format="yyyy-MM-dd hh:mm:ss"
:picker-options="pickerOptions"
>
</el-date-picker>
</el-form-item>
<el-form-item
label="问题整改截止时间:"
prop="rectificationDeadline"
class="fromItem"
>
<el-date-picker
v-model="ruleFormdialogBJ.rectificationDeadline"
type="date"
placeholder="选择日期"
value-format="yyyy-MM-dd hh:mm:ss"
:picker-options="pickerOptions"
>
</el-date-picker>
</el-form-item>
</el-form>
<p class="Btn">
<span @click="cancel()">取消</span><span @click="save()">确认</span>
</p>
</div>
</el-dialog>
</div>
</template>
<script>
import {
problemAssistedDistribution,
wtplxfproblemAssistedDistribution,
chproblemAssistedDistribution
} from "@/api/index";
import { generateYearOptions } from "@/utils/cache";
export default {
data() {
return {
yearsList:generateYearOptions(),
pickerOptions: {
disabledDate(time) {
return time.getTime() < Date.now() - 8.64e7;
}
},
ruleForm: {
batchYear: "",
batchName: "",
postEvalState: "",
},
ruleFormdialogBJ: {
appealDeadline: "",
rectificationDeadline: "",
},
rules: {
appealDeadline: [
{
required: true,
message: "请选择问题申诉截止时间",
trigger: "change",
},
],
rectificationDeadline: [
{
required: true,
message: "问题整改截止时间",
trigger: "change",
},
],
},
tableData: [],
checkedList: [],
currentPage: 1,
pageSizetjcl: 10,
total: 0,
dialogXQ: false,
pageSize: 10,
};
},
mounted() {
this.submitForm();
},
methods: {
async submitForm(formName) {
let params = {
current: this.currentPage,
pageSize: this.pageSize,
};
Object.assign(params, this.ruleForm);
console.log(params);
let res = await problemAssistedDistribution(params);
if (res.code == "200") {
this.tableData = res.data.records;
this.tableData.forEach((item) => {
if (item.reviewStatus == "0"||item.reviewStatus ==null||item.reviewStatus ==""){
this.$set(item, "postEvalState", "未下发");
}else if (item.reviewStatus == "1") {
this.$set(item, "postEvalState", "已下发");
} else if (item.reviewStatus == "2") {
this.$set(item, "postEvalState", "已撤回");
} else {
this.$set(item, "postEvalState", "已下发");
}
});
this.total = res.data.total * 1;
}
},
resetForm() {
this.$refs.formName.resetFields();
this.currentPage = 1;
this.pageSize = 10;
this.submitForm();
},
//问题下发
sendQuestion() {
if (this.checkedList.length != 1) {
this.$message("请选择一条数据进行下发");
return;
} else {
if (this.checkedList[0].postEvalState == "已下发") {
this.$message("该项目已下发");
return;
}
let params = {
projectId: this.checkedList[0].projectId,
batchId: this.checkedList[0].batchId,
};
this.$router.push({
path: "/mainLayout/Compliancexf",
query: {
clqparams: JSON.stringify(params),
},
});
}
},
//问题批量下发
sendQuestions() {
if (this.checkedList.length < 1) {
this.$message("请选择项目下发");
return;
}
try {
this.checkedList.forEach((item) => {
if (item.postEvalState == "已下发") {
this.$message("请选择未下发的项目");
throw new Error("退出forEach循环!");
}
});
this.dialogXQ = true;
} catch (e) {
console.log(e);
}
//
},
cancel() {
this.dialogXQ = false;
},
async save() {
let batchStrList = "";
let prjStrList = "";
this.checkedList.forEach((item) => {
batchStrList = batchStrList.concat(item.batchId + ",");
prjStrList = prjStrList.concat(item.projectId + ",");
});
let params = {
batchStr: batchStrList,
prjStr: prjStrList,
...this.ruleFormdialogBJ,
};
console.log(params, "222");
let res = await wtplxfproblemAssistedDistribution(params);
if (res.code == "200") {
this.resetForm()
this.dialogXQ = false;
} else {
this.$message("下发失败");
}
},
//表格颜色
tableRowClassName({ row, rowIndex }) {
if (rowIndex % 2 == 1) {
return "warning-row";
}
return "";
},
//主列表选中行信息
handleSelectionChange(selection) {
this.checkedList = this.$refs.multipleTable.selection;
// if (Array.isArray(selection) && selection.length > 1) {
// this.$refs.multipleTable.toggleRowSelection(selection[0], false);
// this.$refs.multipleTable.toggleRowSelection(selection[1], true);
// }
// this.checkedList = this.$refs.multipleTable.selection;
// this.ruleFormdialog = this.checkedList[0];
// console.log(this.checkedList, "2222");
},
handleSizeChange(val) {
console.log(`每页 ${val} 条`);
this.pageSize = val;
this.submitForm()
},
handleCurrentChange(val) {
console.log(`当前页: ${val}`);
this.currentPage = val;
this.submitForm()
},
//点击撤回
async withdraw() {
//只能选择已下发未确认的 这块需要加一下
if (this.checkedList.length != 1) {
this.$message("请选择");
return;
}
if (this.checkedList[0].postEvalState == "已下发") {
this.$message("该项目未下发");
return;
}
if (this.checkedList[0].postEvalState == "已撤回") {
this.$message("该项目已撤回");
return;
}
let params = {
projectId: this.checkedList[0].projectId,
batchId: this.checkedList[0].batchId,
};
let res = await chproblemAssistedDistribution(params);
if (res.code == "200") {
this.resetForm()
} else {
this.$message("撤回失败");
}
},
},
};
</script>
<style scoped lang="scss">
.main {
font-size: 14px;
position: relative;
height: 100%;
width: 100%;
box-sizing: border-box;
overflow-x: hidden;
}
.el-form {
display: flex;
width: 99%;
flex-wrap: wrap;
border-top: 2px solid #23c6c8;
border-left: 1px solid #dee5e7;
border-right: 1px solid #dee5e7;
border-bottom: 1px solid #dee5e7;
padding: 20px 10px;
margin-bottom: 20px;
.fromItem {
min-width: 24%;
margin: 0 0.5%;
margin-bottom: 20px;
.el-input {
width: 226px;
}
.el-select {
width: 226px;
}
}
/deep/ .el-form-item__content {
text-align: left;
display: inline-block;
margin-left: 10px !important;
}
/deep/ .el-form-item__label {
font-weight: bold;
color: #000;
width: 160px !important;
}
.button {
display: inline-block;
width: 100%;
text-align: left;
/deep/ .el-form-item__content {
margin-left: 20px !important;
text-align: left;
img {
width: 14px;
height: 14px;
margin-right: 15px;
vertical-align: middle;
}
}
.el-button {
background-color: #23c6c8;
border-color: #23c6c8;
color: #fff;
}
}
}
.eltable {
box-sizing: border-box;
text-align: center;
}
/deep/ .el-table .warning-row {
background: #f0ffff;
// color: #2785e6;
}
.elpagination {
text-align: right;
margin-right: 100px;
}
/deep/ .el-dialog {
border-radius: 10px;
// margin-top: 3vh !important;
// margin-left: 3vw !important;
}
/deep/.el-table th.el-table__cell.is-leaf,
.el-table td.el-table__cell {
text-align: center;
}
/deep/ .el-dialog__wrapper {
position: absolute;
}
/deep/ .v-modal {
position: absolute;
}
/deep/ .el-dialog__header {
background-color: #0d867f;
padding-bottom: 20px;
text-align: left;
border-radius: 10px 10px 0 0;
.el-dialog__title {
color: #fff;
}
}
/deep/ .el-table__header th {
background-color: #eeeeee;
font-weight: bold;
.cell {
color: #333;
}
}
/deep/.el-table {
// width: 100%;
.el-table__header-wrapper table,
.el-table__body-wrapper table {
// width: 100% !important;
}
.el-table__body,
.el-table__footer,
.el-table__header {
table-layout: auto;
}
}
.textarea {
width: 100%;
.el-textarea {
width: 60%;
}
}
.Btn {
width: 200px;
margin: 0 auto;
span {
display: inline-block;
width: 80px;
height: 25px;
line-height: 25px;
text-align: center;
border-radius: 4px;
margin-right: 12px;
}
span:first-of-type {
border: 1px solid #000;
}
span:last-of-type {
background-color: #0d867f;
border: 1px solid #0d867f;
color: #fff;
}
}
/deep/ .el-dialog__headerbtn .el-dialog__close {
color: #fff;
}
.zjBtn {
width: 400px;
text-align: left;
vertical-align: middle;
span {
display: inline-block;
width: 140px;
height: 25px;
line-height: 25px;
text-align: center;
border-radius: 5px;
vertical-align: middle;
}
span:last-of-type {
background-color: #4ca6a7;
color: #fff;
padding: 5px 10px;
margin-left: 10px;
}
}
/deep/ .el-icon-position {
margin-right: 10px;
}
/deep/ .el-icon-folder-delete {
margin-right: 10px;
}
.cxItem {
text-align: right;
width: 20%;
.zjquery {
display: inline-block;
background-color: #4ca6a7;
width: 89px;
height: 40px;
color: #fff;
text-align: center;
line-height: 40px;
border-radius: 5px;
}
}
.midBtn {
margin: 0 auto;
span {
display: inline-block;
width: 80px;
height: 25px;
line-height: 25px;
text-align: center;
margin-right: 10px;
border-radius: 5px;
}
span:first-of-type {
border: 1px solid grey;
}
span:last-of-type {
background-color: #4ca6a7;
color: #fff;
}
}
.dialog {
.xqtitle {
text-align: left;
font-size: 18px;
span {
display: inline-block;
width: 5px;
height: 20px;
background: #0d867f;
margin-right: 14px;
vertical-align: middle;
}
}
/deep/ .el-form {
width: 65%;
flex-wrap: wrap;
padding: 0 10px;
text-align: center;
margin: 100px auto;
border: none;
.fromItem {
text-align: center;
// width: 51%;
margin: 0 auto;
margin-bottom: 20px;
.el-input {
width: 226px;
}
.el-select {
width: 226px;
}
}
/deep/ .el-form-item__content {
text-align: left;
}
/deep/ .el-form-item__label {
font-weight: 400;
// color: #000;
width: 160px !important;
}
}
}
/deep/.el-table th.el-table__cell.is-leaf,
.el-table td.el-table__cell {
text-align: center;
}
/deep/ .el-table__cell {
text-align: center;
}
.setscroll {
width: 100%;
height: 650px;
position: relative;
overflow: auto;
}
</style>
\ No newline at end of file
<!-- 材料同步归档 -->
<template>
<div class="main">
<el-form
:model="ruleForm"
label-width="100px"
class="demo-ruleForm"
ref="formName"
>
<el-form-item label="批次年度:" prop="batchYear" class="fromItem">
<el-select v-model="ruleForm.batchYear" placeholder="请选择" clearable>
<el-option
v-for="(item, index) in yearsList"
:key="index"
:label="item+'年'"
:value="item"/>
</el-select>
</el-form-item>
<el-form-item label="后评估批次名称:" prop="batchName" class="fromItem">
<el-input v-model="ruleForm.batchName" clearable></el-input>
</el-form-item>
<!-- <el-form-item label="项目下达年度:" prop="projectYear" class="fromItem">
<el-select v-model="ruleForm.pprojectYear" placeholder="请选择" clearable>
<el-option label="2024年" value="2024"></el-option>
<el-option label="2023年" value="2023"></el-option>
<el-option label="2022年" value="2022"></el-option>
<el-option label="2021年" value="2021"></el-option>
</el-select>
</el-form-item>
<el-form-item label="项目编码:" prop="projectId" class="fromItem">
<el-input v-model="ruleForm.projectId" placeholder="请输入" clearable></el-input>
</el-form-item>
<el-form-item label="项目名称:" prop="projectName" class="fromItem">
<el-input
v-model="ruleForm.projectName"
placeholder="请输入"
clearable
></el-input>
</el-form-item>
<el-form-item label="项目内容:" prop="projectContent" class="fromItem" show-overflow-tooltip>
<el-input
v-model="ruleForm.projectContent"
placeholder="请输入"
clearable
></el-input>
</el-form-item>
<el-form-item
label="省公司计划文件号:"
prop="proCompanyPlanFileNum"
class="fromItem"
clearable
>
<el-input
v-model="ruleForm.proCompanyPlanFileNum"
placeholder="请输入"
clearable
></el-input>
</el-form-item>
<el-form-item
label="信通公司计划文件号:"
prop="infoCompanyPlanFileNum"
class="fromItem"
clearable
>
<el-input
v-model="ruleForm.infoCompanyPlanFileNum"
placeholder="请输入"
clearable
></el-input>
</el-form-item> -->
<el-form-item class="button">
<el-button @click="submitForm()">
<img class="buttonIcon" src="../../assets/cx.png" />查询</el-button
>
<el-button @click="resetForm()">
<img class="buttonIcon" src="../../assets/cz.png" />重置</el-button
>
<el-button @click="detailsForm()">
<img class="buttonIcon" src="../../assets/ck.png" />详情</el-button
>
<!-- <el-button @click="attach('ruleForm')">
<i class="el-icon-receiving"></i>&nbsp;&nbsp;&nbsp;材料归档</el-button
> -->
</el-form-item>
</el-form>
<div class="setscroll">
<el-table
@selection-change="handleSelectionChange"
ref="multipleTable"
:data="tableData"
tooltip-effect="dark"
style="width: 100%"
header-cell-class-name="custom-th-background"
class="eltable"
:row-class-name="tableRowClassName"
border
>
<el-table-column label="序号" width="55" type="index">
</el-table-column>
<el-table-column type="selection"> </el-table-column>
<el-table-column label="批次年度" width="auto" prop="batchYear"><template slot-scope="scope">
{{scope.row.batchYear}}
</template>
</el-table-column>
<el-table-column prop="batchName" label="后评估批次名称" width="auto">
</el-table-column>
<el-table-column prop="projectId" label="项目编码" width="auto">
</el-table-column>
<el-table-column prop="projectYear" label="项目下达年度" width="auto">
</el-table-column>
<el-table-column prop="projectName" label="项目名称" width="350">
</el-table-column>
<el-table-column prop="materialState" label="材料状态" width="auto">
</el-table-column>
<el-table-column prop="projectCategor" label="建设形式" width="auto">
</el-table-column>
<!-- <el-table-column prop="proCompanyApprovalNumber" label="省公司" width="auto">
</el-table-column>
<el-table-column prop="infoCompanyApprovalNumber" label="信通公司" width="auto"> -->
<!-- </el-table-column> -->
<el-table-column label="总投资计划(万元)" width="300">
<el-table-column prop="costAmountTotal" label="成本金" width="auto">
</el-table-column>
<el-table-column
prop="capitalAmountTotal"
label="资本金"
width="auto"
>
</el-table-column>
</el-table-column>
<el-table-column label="当年投资计划(万元)" width="300">
<el-table-column
prop="costAmountCurrentMfdel"
label="成本金"
width="auto"
>
</el-table-column>
<el-table-column
prop="capitalAmountCurrentMfdel"
label="资本金"
width="200"
>
</el-table-column>
</el-table-column>
<el-table-column prop="department" label="部门" width="200">
</el-table-column>
<el-table-column prop="字段待确认" label="承建单位" width="200">
</el-table-column>
<el-table-column prop="字段待确认" label="项目经理" width="200">
</el-table-column>
<el-table-column prop="projectInfo" label="项目内容" show-overflow-tooltip>
</el-table-column>
<el-table-column prop="inputuser" label="创建人" width="200">
</el-table-column>
<el-table-column prop="inputtime" label="创建时间" width="200">
</el-table-column>
</el-table>
</div>
<el-pagination
@size-change="handleSizeChange"
@current-change="handleCurrentChange"
:current-page="currentPage"
:page-sizes="[10, 15, 20, 50]"
:page-size="100"
layout="total, sizes, prev, pager, next, jumper"
:total="total"
class="elpagination"
>
</el-pagination>
<!-- 详情弹窗 -->
<el-dialog
title="详情"
:visible.sync="dialog"
width="90%"
:modal-append-to-body="false"
:append-to-body="false"
>
<div class="dialog">
<h3>
项目名称:一期项目-电力营销-2023年网上国网(网上国网V1.0)-设计开发项目
</h3>
<el-tabs v-model="activeName" @tab-click="handleClick">
<el-tab-pane label="基本信息" name="first">
<div>
<p class="title"><span></span>项目基本信息</p>
<div class="content">
<p><label>项目编号:</label>{{ listData.projectId }}</p>
<p><label>项目下达年度:</label>{{ listData.projectYear }}</p>
<p><label>项目名称:</label>{{ listData.projectName }}</p>
<p><label>建设形式:</label>{{ listData.projectCategory }}</p>
<p>
<label>总投资计划(万元)-成本金:</label
>{{ listData.costAmountTotal }}
</p>
<p>
<label>总投资计划(万元)-资本金:</label
>{{ listData.capitalAmountTotal }}
</p>
<p><label>部门:</label>{{ listData.department }}</p>
<p><label>创建人:</label>{{ listData.inputuser }}</p>
<p><label>创建时间:</label>{{ listData.inputuser }}</p>
<p><label>修改人:</label>{{ listData.lastUpdatedby }}</p>
<p><label>修改时间:</label>{{ listData.lastUpdateTime }}</p>
</div>
<div class="table">
<p>项目后评估资料:</p>
<el-table
@selection-change="handleSelectionChange"
:data="qdtableData"
tooltip-effect="dark"
style="width: 100%"
header-cell-class-name="custom-th-background"
class="tablepg"
:row-class-name="tableRowClassName"
border
>
<el-table-column label="序号" width="55" type="index">
</el-table-column>
<el-table-column label="类别" prop="batchtype">
</el-table-column>
<el-table-column prop="typeCode" label="资料类型">
</el-table-column>
<el-table-column prop="fileName" label="资料名称">
</el-table-column>
</el-table>
</div>
<p class="title"><span></span>批次详情</p>
<div class="content">
<p><label>批次年度:</label>{{ listData.batchYear }}</p>
<p><label>后评估批次名称:</label>{{ listData.batchName }}</p>
<p><label>计划评审日期:</label>{{ listData.planReviewDate }}</p>
</div>
<p class="title"><span></span>评审专家</p>
<div class="content">
<p class="bottom"><label>评审专家:</label>{{ listData.expertName }}</p>
</div>
</div>
</el-tab-pane>
<el-tab-pane label="问题清单" name="second">
<p class="title"><span></span>项目基本信息</p>
<el-table
:data="xxtableData"
tooltip-effect="dark"
style="width: 100%"
header-cell-class-name="custom-th-background"
:row-class-name="tableRowClassName"
:span-method="arraySpanMethod"
border
>
<el-table-column
label="项目环节"
prop="projectStagetext"
width="150"
>
</el-table-column>
<el-table-column label="序号" width="100" type="index">
</el-table-column>
<el-table-column label="问题检查项" prop="quesCheckItem">
</el-table-column>
<el-table-column label="检查说明" prop="checkDesc" show-overflow-tooltip>
</el-table-column>
<el-table-column label="评估问题" prop="evalQues">
<!-- <template slot-scope="scope">
<el-input v-model="scope.row.evalQues"></el-input>
</template> -->
</el-table-column>
</el-table>
</el-tab-pane>
<el-tab-pane label="评审流程" name="third">
<el-table
:data="lctableData"
tooltip-effect="dark"
style="width: 100%"
header-cell-class-name="custom-th-background"
:row-class-name="tableRowClassName"
border
>
<el-table-column
label="流程节点"
prop="processNodes"
width="150"
>
</el-table-column>
<el-table-column label="状态" prop="state"> </el-table-column>
<el-table-column label="处理人" prop="processedBy">
</el-table-column>
<el-table-column label="处理时间" prop="processingTime">
</el-table-column>
</el-table>
</el-tab-pane>
</el-tabs>
</div>
<p class="close"><span @click="cancel()">关闭</span></p>
</el-dialog>
</div>
</template>
<script>
import {
materialSync,
fzcxXqselect,
clqdselect,
wtqdqselect,
selLcb
} from "@/api/index";
import { generateYearOptions } from "@/utils/cache";
import { MaterialsList } from "@/utils/cache";
export default {
data() {
return {
yearsList:generateYearOptions(),
xxtableData:[],
qdtableData: [],
tableDataNew: MaterialsList(),
listData: {},
ruleForm: {
projectId: "",
batchYear: "",
batchName: "",
projectDeliveryYear: "",
projectCode: "",
projectName: "",
projectContent: "",
proCompanyPlanFileNum: "",
infoCompanyPlanFileNum: "",
},
checkedList: [],
tableData: [],
currentPage: 1,
pageSize: 10,
total: 0,
dialog: false,
activeName: "first",
mergingRows: [],
lctableData:[],
};
},
mounted() {
this.submitForm();
},
methods: {
async submitForm(formName) {
let params = {
current: this.currentPage,
pageSize: this.pageSize,
};
Object.assign(params, this.ruleForm);
console.log(params);
let res = await materialSync(params);
if (res.code == "200") {
this.tableData = res.data.records;
this.total = res.data.total * 1;
}
},
resetForm() {
this.$refs.formName.resetFields();
this.currentPage = 1;
this.pageSize = 10;
this.submitForm();
},
//详情
detailsForm() {
if (this.checkedList.length != 1) {
this.$message("请选择");
return;
}
this.dialog = true;
let params = {
batchId: this.checkedList[0].batchId,
projectId: this.checkedList[0].projectId,
};
Promise.all([fzcxXqselect(params), clqdselect(params)]).then((res) => {
console.log(res[0], res[1], "2222222");
this.listData = res[0].data.records[0];
this.qdtableData = JSON.parse(JSON.stringify(this.tableDataNew));
if (res[1].data.records.length > 0) {
// this.qdtableData = res[1].data.records;
this.qdtableData = this.qdtableData
.concat(res[1].data.records)
.reduce((accumulator, currentObj) => {
const existingObj = accumulator.find(
(obj) => obj.typeCode == currentObj.typeCode
);
if (existingObj) {
Object.assign(existingObj, currentObj);
} else {
accumulator.push(currentObj);
}
return accumulator;
}, []);
console.log(this.tableDataQD, " mergedArray mergedArray mergedArray");
}
});
},
attach() {
alert("归档");
},
async handleClick() {
this.xxtableData=[]
console.log(this.activeName, "this.activeName");
if (this.activeName == "second") {
let params = {
batchId: this.checkedList[0].batchId,
projectId: this.checkedList[0].projectId,
};
let res = await wtqdqselect(params);
if (res.code == "200") {
this.xxtableData = res.data.records;
this.qdtotal = res.data.total * 1;
}
this.xxtableData.forEach((item) => {
switch (item.projectStage) {
case 1:
this.$set(item, "projectStagetext", "1.可研");
break;
case 2:
this.$set(item, "projectStagetext", "2.计划");
break;
case 3:
this.$set(item, "projectStagetext", "3.采购");
break;
case 4:
this.$set(item, "projectStagetext", "4.合同");
break;
case 5:
this.$set(item, "projectStagetext", "5.执行");
break;
case 6:
this.$set(item, "projectStagetext", "6.结决算及转资");
break;
}
});
this.dataPretreatment();
}else if (this.activeName == "third") {
let params = {
batchId: this.checkedList[0].batchId,
projectId: this.checkedList[0].projectId,
};
let res = await selLcb(params);
if (res.code == "200") {
this.lctableData = res.data;
}
}
},
arraySpanMethod({ row, column, rowIndex, columnIndex }) {
if (columnIndex === 0) {
//第一列
const _row = this.mergingRows[rowIndex];
const _col = _row > 0 ? 1 : 0;
return {
rowspan: _row,
colspan: _col,
};
}
},
dataPretreatment() {
this.mergingRows=[]
this.mergingPos = 0;
for (let i = 0; i < this.xxtableData.length; i++) {
// tabledata 表格数据源
if (i == 0) {
this.mergingRows.push(1);
this.mergingPos = 0;
} else {
if (
this.xxtableData[i].projectStage ===
this.xxtableData[i - 1].projectStage
) {
//哪些数据是要合并的 合并的条件是什么
this.mergingRows[this.mergingPos] += 1;
this.mergingRows.push(0);
} else {
this.mergingRows.push(1);
this.mergingPos = i;
}
}
}
},
//表格颜色
tableRowClassName({ row, rowIndex }) {
if (rowIndex % 2 == 1) {
return "warning-row";
}
return "";
},
//主列表选中行信息
handleSelectionChange(selection) {
if (Array.isArray(selection) && selection.length > 1) {
this.$refs.multipleTable.toggleRowSelection(selection[0], false);
this.$refs.multipleTable.toggleRowSelection(selection[1], true);
}
this.checkedList = this.$refs.multipleTable.selection;
this.ruleFormdialogRow = this.checkedList[0];
console.log(this.checkedList, "2222");
},
handleSizeChange(val) {
console.log(`每页 ${val} 条`);
this.pageSize = val;
},
handleCurrentChange(val) {
console.log(`当前页: ${val}`);
this.currentPage = val;
},
cancel() {
this.dialog = false;
},
},
};
</script>
<style scoped lang="scss">
.main {
font-size: 14px;
position: relative;
height: 100%;
width: 100%;
box-sizing: border-box;
overflow-x: hidden;
}
.el-form {
display: flex;
width: 99%;
flex-wrap: wrap;
border-top: 2px solid #23c6c8;
border-left: 1px solid #dee5e7;
border-right: 1px solid #dee5e7;
border-bottom: 1px solid #dee5e7;
padding: 20px 10px;
margin-bottom: 20px;
.fromItem {
min-width: 24%;
margin: 0 0.5%;
margin-bottom: 20px;
.el-input {
width: 226px;
}
.el-select {
width: 226px;
}
}
/deep/ .el-form-item__content {
text-align: left;
display: inline-block;
margin-left: 10px !important;
}
/deep/ .el-form-item__label {
font-weight: bold;
color: #000;
width: 160px !important;
}
.button {
display: inline-block;
width: 100%;
text-align: left;
/deep/ .el-form-item__content {
margin-left: 20px !important;
text-align: left;
img {
width: 14px;
height: 14px;
margin-right: 15px;
vertical-align: middle;
}
}
.el-button {
background-color: #23c6c8;
border-color: #23c6c8;
color: #fff;
}
}
}
.eltable {
// widows: 100%;
box-sizing: border-box;
box-sizing: border-box;
text-align: center;
width: 150%;
min-width: 150%;
// margin-right: 210px;
}
/deep/ .el-table .warning-row {
background: #f0ffff;
// color: #2785e6;
}
.elpagination {
text-align: right;
margin-right: 100px;
}
/deep/ .el-dialog {
border-radius: 10px;
}
/deep/ .el-dialog__wrapper {
position: absolute;
}
/deep/ .v-modal {
position: absolute;
}
/deep/ .el-dialog__header {
background-color: #0d867f;
padding-bottom: 20px;
text-align: left;
border-radius: 10px 10px 0 0;
.el-dialog__title {
color: #fff;
}
}
/deep/ .el-table__header th {
background-color: #eeeeee;
font-weight: bold;
.cell {
color: #333;
}
}
/deep/.el-table {
width: 100%;
.el-table__header-wrapper table,
.el-table__body-wrapper table {
width: 100% !important;
}
.el-table__body,
.el-table__footer,
.el-table__header {
table-layout: auto;
}
}
.textarea {
width: 100%;
.el-textarea {
width: 60%;
}
}
.Btn {
width: 200px;
margin: 0 auto;
span {
display: inline-block;
width: 80px;
height: 25px;
line-height: 25px;
text-align: center;
border-radius: 4px;
margin-right: 12px;
}
span:first-of-type {
border: 1px solid #000;
}
span:last-of-type {
background-color: #0d867f;
border: 1px solid #0d867f;
color: #fff;
}
}
/deep/ .el-dialog__headerbtn .el-dialog__close {
color: #fff;
}
.zjBtn {
width: 200px;
text-align: left;
span {
display: inline-block;
width: 80px;
height: 25px;
line-height: 25px;
text-align: center;
border-radius: 5px;
}
span:last-of-type {
background-color: #4ca6a7;
color: #fff;
padding: 5px 10px;
margin-left: 10px;
}
}
/deep/ .el-icon-position {
margin-right: 10px;
}
/deep/ .el-icon-folder-delete {
margin-right: 10px;
}
.cxItem {
text-align: right;
width: 20%;
.zjquery {
display: inline-block;
background-color: #4ca6a7;
width: 89px;
height: 40px;
color: #fff;
text-align: center;
line-height: 40px;
border-radius: 5px;
}
}
.midBtn {
margin: 0 auto;
span {
display: inline-block;
width: 80px;
height: 25px;
line-height: 25px;
text-align: center;
margin-right: 10px;
border-radius: 5px;
}
span:first-of-type {
border: 1px solid grey;
}
span:last-of-type {
background-color: #4ca6a7;
color: #fff;
}
}
/deep/.el-table th.el-table__cell.is-leaf,
.el-table td.el-table__cell {
text-align: center;
}
/deep/ .el-table__cell {
text-align: center;
// color:#eeeeee;
}
.setscroll {
width: 100%;
height: 600px;
overflow: auto;
}
.dialog {
.title {
text-align: left;
font-size: 18px;
font-family: "PingFangSC-Regular", "PingFang SC", sans-serif;
font-weight: 400;
font-style: normal;
font-size: 16px;
color: #1ec695;
text-align: left;
height: 20px;
margin-top: 5px;
span {
border-radius: 2px;
display: inline-block;
width: 5px;
height: 18px;
background-color: #1ec695;
margin-right: 14px;
vertical-align: middle;
}
}
.content {
width: 100%;
display: flex;
flex-wrap: wrap;
p {
width: 24%;
text-align: left;
label {
display: inline-block;
width: 150px;
text-align: right;
font-weight: bold;
margin-right: 20px;
vertical-align: middle;
}
}
.bottom{
width: 100%;
text-align: left;
}
}
.table {
width: 100%;
display: flex;
p {
width: 150px;
text-align: right;
font-weight: bold;
}
.tablepg {
margin-top: 20px;
margin-left: 5px;
}
}
}
.close{
width: 100%;
height: 40px;
line-height: 20px;
span{
display: inline-block;
width:80px;
height: 30px;
line-height: 30px;
border: 1px solid grey;
border-radius: 5px;
}
}
/deep/ .el-dialog {
border-radius: 10px;
margin-top: 3vh !important;
margin-left: 3vw !important;
}
/deep/ .el-table__header th{
// backcolor:#eeeeee;
background-color: #eeeeee;
}
/deep/ .el-table thead.is-group th.el-table__cell{
background-color: #eeeeee !important;
}
// #eeeeee
</style>
\ No newline at end of file
<!-- 辅助检查 -->
<template>
<div class="main">
<el-form
:model="ruleForm"
ref="formName"
label-width="100px"
class="demo-ruleForm"
>
<el-form-item label="批次年度:" prop="batchYear" class="fromItem">
<el-select v-model="ruleForm.batchYear" placeholder="请选择" clearable>
<el-option
v-for="(item, index) in yearsList"
:key="index"
:label="item+'年'"
:value="item"/>
</el-select>
</el-form-item>
<el-form-item label="后评估名称:" prop="batchName" class="fromItem">
<el-input v-model="ruleForm.batchName" placeholder="请输入" clearable ></el-input>
</el-form-item>
<el-form-item label="后评估状态:" prop="postEvalState" class="fromItem">
<el-select v-model="ruleForm.postEvalState" placeholder="请选择" clearable>
<el-option label="待提交" value="2"></el-option>
<el-option label="已撤回" value="4"></el-option>
<el-option label="已提交" value="3"></el-option>
<el-option label="待评估" value="1"></el-option>
</el-select>
</el-form-item>
<el-form-item label="项目名称:" prop="projectName" class="fromItem">
<el-input
v-model="ruleForm.projectName"
placeholder="请输入"
clearable
></el-input>
</el-form-item>
<el-form-item label="项目ID:" prop="projectId" class="fromItem">
<el-input v-model="ruleForm.projectId" placeholder="请输入" clearable></el-input>
</el-form-item>
<el-form-item class="button">
<el-button @click="submitForm()">
<img class="buttonIcon" src="../../assets/cx.png" />查询</el-button
>
<el-button @click="resetForm('ruleForm')">
<img class="buttonIcon" src="../../assets/cz.png" />重置</el-button
>
<el-button @click="detailsForm('ruleForm')">
<img class="buttonIcon" src="../../assets/ck.png" />详情</el-button
>
<el-button @click="inspectNexts()"
><i class="el-icon-tickets"></i> &nbsp;&nbsp;合规性检查评估</el-button
>
<el-button @click="submitNexts()"
><i class="el-icon-finished"></i> &nbsp;&nbsp;提交问题清单</el-button
>
<el-button @click="withdraw()">
<i class="el-icon-folder-delete"></i>撤回
</el-button>
</el-form-item>
</el-form>
<div class="setscroll">
<el-table
@selection-change="handleSelectionChange"
ref="multipleTable"
:data="tableData"
tooltip-effect="dark"
style="width: 100%"
header-cell-class-name="custom-th-background"
class="eltable"
:row-class-name="tableRowClassName"
border
>
<el-table-column label="序号" width="55" type="index"> </el-table-column>
<el-table-column type="selection"> </el-table-column>
<el-table-column label="批次年度" prop="batchYear"> <template slot-scope="scope">
{{scope.row.batchYear}}
</template></el-table-column>
<el-table-column prop="batchName" label="后评估批次名称">
</el-table-column>
<el-table-column prop="projectName" label="评估项目名称" show-overflow-tooltip>
</el-table-column>
<el-table-column prop="projectCategory" label="建设形式">
</el-table-column>
<el-table-column prop="projectStatus" label="项目建设阶段">
</el-table-column>
<!-- <el-table-column prop="createTime" label="历史审核状态">
</el-table-column> -->
<el-table-column prop="expertName" label="评审专家名单">
</el-table-column>
<el-table-column prop="postEvalState" label="检查评估状态">
</el-table-column>
<el-table-column prop="planReviewDate" label="评估日期"> </el-table-column>
</el-table>
</div>
<el-pagination
@size-change="handleSizeChange"
@current-change="handleCurrentChange"
:current-page="currentPage"
:page-sizes="[10, 15, 20, 50]"
:page-size="100"
layout="total, sizes, prev, pager, next, jumper"
:total="total"
class="elpagination"
>
</el-pagination>
</div>
</template>
<script>
import {
postEvalQuesInfo,
chpostEvalQuesInfo,
qrscevaluationMaterials,
} from "@/api/index";
import { generateYearOptions } from "@/utils/cache";
export default {
data() {
return {
yearsList:generateYearOptions(),
showButton: true,
ruleForm: {
batchYear: "",
batchName: "",
postEvalState: "",
projectName: "",
projectId: "",
},
ruleFormdialog: {
batchYear: "",
batchName: "",
planReviewDate: "",
fullName: "",
},
rules: {
batchYear: [
{ required: true, message: "请选择批次年度", trigger: "change" },
],
batchName: [
{
required: true,
message: "请选择后评估批次名称",
trigger: "change",
},
],
},
tableData: [],
tableDataQD: [], //清单列表
checkedList: [],
currentPage: 1,
pageSize: 10,
currentPagetjcl: 1,
pageSizetjcl: 10,
total: 0,
dialog: false,
};
},
mounted() {
this.submitForm();
},
methods: {
async submitForm() {
let params = {
current: this.currentPage,
pageSize: this.pageSize,
};
Object.assign(params, this.ruleForm);
console.log(params);
let res = await postEvalQuesInfo(params);
if (res.code == "200") {
this.tableData = res.data.records;
this.tableData.forEach(item=>{
if (item.postEvalState=='1'){
this.$set( item,'postEvalState','待评估')
}else if (item.postEvalState=='2'){
this.$set( item,'postEvalState','待提交')
}else if(item.postEvalState=='4'){
this.$set( item,'postEvalState','已撤回')
}else {
this.$set( item,'postEvalState','已提交')
}
})
this.total = res.data.total * 1;
}
},
resetForm() {
this.$refs.formName.resetFields();
this.currentPage = 1;
this.pageSize = 10;
this.submitForm();
},
//合规性检查评估
inspectNexts() {
if (this.checkedList.length != 1) {
this.$message("请选择");
return;
}
let params = {
projectId:this.checkedList[0].projectId,
batchId:this.checkedList[0].batchId
};
this.$router.push({
path: "/mainLayout/Compliance",
query:{
"clqparams":JSON.stringify(params),
}
});
},
//详情
async detailsForm(){
if (this.checkedList.length != 1) {
this.$message("请选择");
return;
}
let params = {
projectId:this.checkedList[0].projectId,
batchId:this.checkedList[0].batchId
};
this.$router.push({
path: "/mainLayout/Compliancefz",
query:{
"clqparams":JSON.stringify(params),
"ishow":false
}
});
},
//提交问题清单
async submitNexts() {
if (this.checkedList.length != 1) {
this.$message("请选择");
return;
}
// if(this.checkedList[0].postEvalState=='待评估'){
// this.$message("该项目还未评估");
// return;
// }
if(this.checkedList[0].postEvalState=='已提交'){
this.$message("该项目已提交");
return;
}
console.log("222");
// this.dialog = true;
let params = {
projectId:this.checkedList[0].projectId,
batchId:this.checkedList[0].batchId
};
this.$router.push({
path: "/mainLayout/Compliancefz",
query:{
"clqparams":JSON.stringify(params)
}
});
},
//撤销
async withdraw(){
if (this.checkedList.length != 1) {
this.$message("请选择");
return;
}
if(this.checkedList[0].postEvalState!='已提交'){
this.$message("该项目还未提交");
return;
}
console.log("222");
let params = {
current: this.currentPage,
pageSize: this.pageSize,
projectId:this.checkedList[0].projectId,
batchId:this.checkedList[0].batchId
};
let res =await chpostEvalQuesInfo(params)
if(res.code==200){
this.resetForm()
}
},
//表格颜色
tableRowClassName({ row, rowIndex }) {
if (rowIndex % 2 == 1) {
return "warning-row";
}
return "";
},
//主列表选中行信息
handleSelectionChange(selection) {
if (Array.isArray(selection) && selection.length > 1) {
this.$refs.multipleTable.toggleRowSelection(selection[0], false);
this.$refs.multipleTable.toggleRowSelection(selection[1], true);
}
this.checkedList = this.$refs.multipleTable.selection;
this.ruleFormdialog = this.checkedList[0];
console.log(this.checkedList, "2222");
},
handleSizeChange(val) {
console.log(`每页 ${val} 条`);
this.pageSize = val;
this.submitForm()
},
handleCurrentChange(val) {
console.log(`当前页: ${val}`);
this.currentPage = val;
this.submitForm()
},
cancel() {
this.dialog = false;
// this.dialogXQ = false;
},
closeDialog() {
console.log("guanbi");
this.showButton = true;
},
async save(type) {
this.dialog = false;
// this.dialogXQ = false;
if (type == "add") {
let params = {};
let res = await qrscevaluationMaterials(params);
}
},
},
};
</script>
<style scoped lang="scss">
.main {
font-size: 14px;
position: relative;
height: 100%;
width: 100%;
box-sizing: border-box;
}
.el-form {
display: flex;
width: 100%;
flex-wrap: wrap;
border-top: 2px solid #23c6c8;
border-left: 1px solid #dee5e7;
border-right: 1px solid #dee5e7;
border-bottom: 1px solid #dee5e7;
padding: 20px 10px;
margin-bottom: 20px;
.fromItem {
min-width: 24%;
margin: 0 0.5%;
margin-bottom: 20px;
.el-input {
width: 226px;
}
.el-select {
width: 226px;
}
}
/deep/ .el-form-item__content {
text-align: left;
display: inline-block;
margin-left: 10px !important;
}
/deep/ .el-form-item__label {
font-weight: bold;
color: #000;
width: 160px !important;
}
.button {
display: inline-block;
width: 100%;
text-align: left;
/deep/ .el-form-item__content {
margin-left: 20px !important;
text-align: left;
img {
width: 14px;
height: 14px;
margin-right: 15px;
vertical-align: middle;
}
}
.el-button {
background-color: #23c6c8;
border-color: #23c6c8;
color: #fff;
}
}
}
.eltable {
widows: 100%;
box-sizing: border-box;
}
/deep/ .el-table .warning-row {
background: #f0ffff;
// color: #2785e6;
}
.elpagination {
text-align: right;
margin-right: 100px;
}
/deep/ .el-dialog {
border-radius: 10px;
margin-top: 3vh !important;
margin-left: 3vw !important;
}
/deep/ .el-dialog__wrapper {
position: absolute;
}
/deep/ .v-modal {
position: absolute;
}
/deep/ .el-dialog__header {
background-color: #0d867f;
padding-bottom: 20px;
text-align: left;
border-radius: 10px 10px 0 0;
.el-dialog__title {
color: #fff;
}
}
/deep/ .el-table__header th {
background-color: #eeeeee;
font-weight: bold;
.cell {
color: #333;
}
}
/deep/.el-table {
width: 100%;
.el-table__header-wrapper table,
.el-table__body-wrapper table {
width: 100% !important;
}
.el-table__body,
.el-table__footer,
.el-table__header {
table-layout: auto;
}
}
.dialog {
.xqtitle {
text-align: left;
font-size: 18px;
span {
display: inline-block;
width: 5px;
height: 20px;
background: #0d867f;
margin-right: 14px;
vertical-align: middle;
}
}
}
.textarea {
width: 100%;
.el-textarea {
width: 60%;
}
}
.Btn {
width: 200px;
margin: 0 auto;
span {
display: inline-block;
width: 80px;
height: 25px;
line-height: 25px;
text-align: center;
border-radius: 4px;
margin-right: 12px;
}
span:first-of-type {
border: 1px solid #000;
}
span:last-of-type {
background-color: #0d867f;
border: 1px solid #0d867f;
color: #fff;
}
}
/deep/ .el-dialog__headerbtn .el-dialog__close {
color: #fff;
}
/deep/.el-table th.el-table__cell.is-leaf,
.el-table td.el-table__cell {
text-align: center;
}
/deep/ .el-icon-folder-delete {
margin-right: 10px;
}
/deep/.el-table th.el-table__cell.is-leaf,
.el-table td.el-table__cell {
text-align: center;
}
/deep/ .el-table__cell {
text-align: center;
}
.setscroll {
width: 100%;
height: 650px;
position: relative;
overflow: auto;
}
</style>
\ No newline at end of file
<template>
<div class="main">
<el-form :model="ruleForm" label-width="100px" class="demo-ruleForm" ref="formName">
<el-form-item label="批次年度:" prop="batchYear" class="fromItem">
<el-select v-model="ruleForm.batchYear" placeholder="请选择" clearable>
<el-option
v-for="(item, index) in yearsList"
:key="index"
:label="item+'年'"
:value="item"/>
</el-select>
</el-form-item>
<el-form-item label="后评估批次名称:" prop="batchName" class="fromItem">
<el-input v-model="ruleForm.batchName" placeholder="请输入" clearable></el-input>
</el-form-item>
<!-- <el-form-item label="后评估状态:" prop="postEvalState" class="fromItem">
<el-select v-model="ruleForm.postEvalState" placeholder="请选择" clearable>
<el-option label="未下发" value="0"></el-option>
<el-option label="已下发" value="1"></el-option>
<el-option label="已撤回" value="2"></el-option>
</el-select>
</el-form-item> -->
<el-form-item class="button">
<el-button @click="submitForm()">
<img class="buttonIcon" src="../../assets/cx.png" />查询</el-button
>
<el-button @click="resetForm('ruleForm')">
<img class="buttonIcon" src="../../assets/cz.png" />重置</el-button
>
<!-- <el-button @click="sendQuestion()">
<i class="el-icon-chat-dot-square"></i
>&nbsp;&nbsp;&nbsp;问题下发</el-button
> -->
<el-button @click="detailsForm('ruleForm')">
<img class="buttonIcon" src="../../assets/ck.png" />详情</el-button
>
</el-form-item>
</el-form>
<div class="setscroll">
<el-table
@selection-change="handleSelectionChange"
ref="multipleTable"
:data="tableData"
tooltip-effect="dark"
style="width: 100%"
header-cell-class-name="custom-th-background"
class="eltable"
:row-class-name="tableRowClassName"
border
>
<el-table-column label="序号" width="55" type="index"> </el-table-column>
<el-table-column type="selection"> </el-table-column>
<el-table-column label="批次年度" prop="batchYear"><template slot-scope="scope">
{{scope.row.batchYear}}
</template> </el-table-column>
<el-table-column prop="batchName" label="后评估批次名称">
</el-table-column>
<el-table-column prop="projectName" label="评估项目名称" show-overflow-tooltip>
</el-table-column>
<el-table-column prop="projectCategory" label="建设形式">
</el-table-column>
<el-table-column prop="projectStatus" label="项目建设阶段">
</el-table-column>
<!-- <el-table-column prop="createTime" label="历史审核状态">
</el-table-column> -->
<el-table-column prop="expertName" label="评审专家名单">
</el-table-column>
<el-table-column prop="appealDeadline" label="问题申诉截止时间">
</el-table-column>
<el-table-column prop="rectificationDeadline" label="问题整改截止时间">
</el-table-column>
<el-table-column prop="postEvalState" label="问题下发状态">
</el-table-column>
<!-- <el-table-column prop="reviewStatus" label="后评估状态"> </el-table-column> -->
<el-table-column prop="reviewDate" label="评估日期"> </el-table-column>
</el-table>
</div>
<el-pagination
@size-change="handleSizeChange"
@current-change="handleCurrentChange"
:current-page="currentPage"
:page-sizes="[10, 15, 20, 50]"
:page-size="100"
layout="total, sizes, prev, pager, next, jumper"
:total="total"
class="elpagination"
>
</el-pagination>
<!-- 详情弹窗 -->
<el-dialog
title="问题下发"
:visible.sync="dialogXQ"
width="70%"
:modal-append-to-body="false"
:append-to-body="false"
>
<div class="dialog">
<el-form
:model="ruleFormdialogBJ"
label-width="100px"
class="demo-ruleForm"
:rules="rules"
>
<el-form-item
label="问题申诉截止时间:"
prop="appealDeadline"
class="fromItem"
>
<el-date-picker
v-model="ruleFormdialogBJ.appealDeadline"
type="date"
placeholder="选择日期"
value-format="yyyy-MM-dd hh:mm:ss"
>
</el-date-picker>
</el-form-item>
<el-form-item
label="问题整改截止时间:"
prop="rectificationDeadline"
class="fromItem"
>
<el-date-picker
v-model="ruleFormdialogBJ.rectificationDeadline"
type="date"
placeholder="选择日期"
value-format="yyyy-MM-dd hh:mm:ss"
>
</el-date-picker>
</el-form-item>
</el-form>
<p class="Btn">
<span @click="cancel()">取消</span><span @click="save()">确认</span>
</p>
</div>
</el-dialog>
</div>
</template>
<script>
import {
fzcxpostSelect
} from "@/api/index";
import { generateYearOptions } from "@/utils/cache";
export default {
data() {
return {
yearsList:generateYearOptions(),
ruleForm: {
batchYear: "",
batchName: "",
postEvalState: "",
},
ruleFormdialogBJ: {
appealDeadline: "",
rectificationDeadline: "",
},
rules: {
appealDeadline: [
{
required: true,
message: "请选择问题申诉截止时间",
trigger: "change",
},
],
rectificationDeadline: [
{
required: true,
message: "问题整改截止时间",
trigger: "change",
},
],
},
tableData: [],
checkedList: [],
currentPage: 1,
pageSizetjcl: 10,
total: 0,
dialogXQ: false,
pageSize: 10,
};
},
mounted() {
this.submitForm();
},
methods: {
async submitForm() {
let params = {
current: this.currentPage,
pageSize: this.pageSize,
};
Object.assign(params, this.ruleForm);
console.log(params);
let res = await fzcxpostSelect(params);
if (res.code == "200") {
this.tableData = res.data.records;
this.tableData.forEach((item) => {
if (item.reviewStatus == "1") {
this.$set(item, "postEvalState", "已下发");
} else if (item.reviewStatus == "2") {
this.$set(item, "postEvalState", "已撤回");
} else {
this.$set(item, "postEvalState", "未下发");
}
});
this.total = res.data.total * 1;
}
},
resetForm() {
this.$refs.formName.resetFields();
this.currentPage = 1;
this.pageSize = 10;
this.submitForm();
},
//问题下发
detailsForm() {
if (this.checkedList.length != 1) {
this.$message("请选择一条数据");
return;
} else {
let params = {
projectId: this.checkedList[0].projectId,
batchId: this.checkedList[0].batchId,
};
this.$router.push({
path: "/mainLayout/Compliancexf",
query: {
clqparams: JSON.stringify(params),
fromType:'fzcx',
Form:JSON.stringify({
appealDeadline:this.checkedList[0].appealDeadline,
rectificationDeadline:this.checkedList[0].rectificationDeadline,
})
},
});
}
},
//表格颜色
tableRowClassName({ row, rowIndex }) {
if (rowIndex % 2 == 1) {
return "warning-row";
}
return "";
},
//主列表选中行信息
handleSelectionChange(selection) {
if (Array.isArray(selection) && selection.length > 1) {
this.$refs.multipleTable.toggleRowSelection(selection[0], false);
this.$refs.multipleTable.toggleRowSelection(selection[1], true);
}
this.checkedList = this.$refs.multipleTable.selection;
this.ruleFormdialog = this.checkedList[0];
console.log(this.checkedList, "2222");
},
handleSizeChange(val) {
console.log(`每页 ${val} 条`);
this.pageSize = val;
this.submitForm()
},
handleCurrentChange(val) {
console.log(`当前页: ${val}`);
this.currentPage = val;
this.submitForm()
},
},
};
</script>
<style scoped lang="scss">
.main {
font-size: 14px;
position: relative;
height: 100%;
width: 100%;
box-sizing: border-box;
overflow-x: hidden;
}
.el-form {
display: flex;
width: 99%;
flex-wrap: wrap;
border-top: 2px solid #23c6c8;
border-left: 1px solid #dee5e7;
border-right: 1px solid #dee5e7;
border-bottom: 1px solid #dee5e7;
padding: 20px 10px;
margin-bottom: 20px;
.fromItem {
min-width: 24%;
margin: 0 0.5%;
margin-bottom: 20px;
.el-input {
width: 226px;
}
.el-select {
width: 226px;
}
}
/deep/ .el-form-item__content {
text-align: left;
display: inline-block;
margin-left: 10px !important;
}
/deep/ .el-form-item__label {
font-weight: bold;
color: #000;
width: 160px !important;
}
.button {
display: inline-block;
width: 100%;
text-align: left;
/deep/ .el-form-item__content {
margin-left: 20px !important;
text-align: left;
img {
width: 14px;
height: 14px;
margin-right: 15px;
vertical-align: middle;
}
}
.el-button {
background-color: #23c6c8;
border-color: #23c6c8;
color: #fff;
}
}
}
.eltable {
box-sizing: border-box;
text-align: center;
}
/deep/ .el-table .warning-row {
background: #f0ffff;
// color: #2785e6;
}
.elpagination {
text-align: right;
margin-right: 100px;
}
/deep/ .el-dialog {
border-radius: 10px;
}
/deep/.el-table th.el-table__cell.is-leaf,
.el-table td.el-table__cell {
text-align: center;
}
/deep/ .el-dialog__wrapper {
position: absolute;
}
/deep/ .v-modal {
position: absolute;
}
/deep/ .el-dialog__header {
background-color: #0d867f;
padding-bottom: 20px;
text-align: left;
border-radius: 10px 10px 0 0;
.el-dialog__title {
color: #fff;
}
}
/deep/ .el-table__header th {
background-color: #eeeeee;
font-weight: bold;
.cell {
color: #333;
}
}
/deep/.el-table {
// width: 100%;
.el-table__header-wrapper table,
.el-table__body-wrapper table {
// width: 100% !important;
}
.el-table__body,
.el-table__footer,
.el-table__header {
table-layout: auto;
}
}
.textarea {
width: 100%;
.el-textarea {
width: 60%;
}
}
.Btn {
width: 200px;
margin: 0 auto;
span {
display: inline-block;
width: 80px;
height: 25px;
line-height: 25px;
text-align: center;
border-radius: 4px;
margin-right: 12px;
}
span:first-of-type {
border: 1px solid #000;
}
span:last-of-type {
background-color: #0d867f;
border: 1px solid #0d867f;
color: #fff;
}
}
/deep/ .el-dialog__headerbtn .el-dialog__close {
color: #fff;
}
.zjBtn {
width: 400px;
text-align: left;
vertical-align: middle;
span {
display: inline-block;
width: 140px;
height: 25px;
line-height: 25px;
text-align: center;
border-radius: 5px;
vertical-align: middle;
}
span:last-of-type {
background-color: #4ca6a7;
color: #fff;
padding: 5px 10px;
margin-left: 10px;
}
}
/deep/ .el-icon-position {
margin-right: 10px;
}
/deep/ .el-icon-folder-delete {
margin-right: 10px;
}
.cxItem {
text-align: right;
width: 20%;
.zjquery {
display: inline-block;
background-color: #4ca6a7;
width: 89px;
height: 40px;
color: #fff;
text-align: center;
line-height: 40px;
border-radius: 5px;
}
}
.midBtn {
margin: 0 auto;
span {
display: inline-block;
width: 80px;
height: 25px;
line-height: 25px;
text-align: center;
margin-right: 10px;
border-radius: 5px;
}
span:first-of-type {
border: 1px solid grey;
}
span:last-of-type {
background-color: #4ca6a7;
color: #fff;
}
}
.dialog {
.xqtitle {
text-align: left;
font-size: 18px;
span {
display: inline-block;
width: 5px;
height: 20px;
background: #0d867f;
margin-right: 14px;
vertical-align: middle;
}
}
/deep/ .el-form {
width: 65%;
flex-wrap: wrap;
padding: 0 10px;
text-align: center;
margin: 100px auto;
border: none;
.fromItem {
text-align: center;
width: 51%;
margin: 0 auto;
margin-bottom: 20px;
.el-input {
width: 226px;
}
.el-select {
width: 226px;
}
}
/deep/ .el-form-item__content {
text-align: left;
}
/deep/ .el-form-item__label {
font-weight: 400;
// color: #000;
width: 160px !important;
}
}
}
/deep/.el-table th.el-table__cell.is-leaf,
.el-table td.el-table__cell {
text-align: center;
}
/deep/ .el-table__cell {
text-align: center;
}
.setscroll {
width: 100%;
height: 650px;
position: relative;
overflow: auto;
}
</style>
\ No newline at end of file
<!-- 评估项目辅助选定 -->
<template>
<div class="main">
<el-form
:model="ruleForm"
label-width="100px"
class="demo-ruleForm"
ref="formName"
>
<el-form-item label="批次年度:" prop="batchYear" class="fromItem">
<el-select v-model="ruleForm.batchYear" placeholder="请选择" clearable>
<el-option
v-for="(item, index) in yearsList"
:key="index"
:label="item + '年'"
:value="item"
/>
</el-select>
</el-form-item>
<el-form-item label="后评估批次名称:" prop="batchName" class="fromItem">
<el-input
v-model="ruleForm.batchName"
placeholder="请输入"
clearable
></el-input>
</el-form-item>
<el-form-item label="后评估状态:" prop="postEvalState" class="fromItem">
<el-select
v-model="ruleForm.postEvalState"
placeholder="请选择"
clearable
>
<el-option label="未下发" value="0"></el-option>
<el-option label="已下发" value="1"></el-option>
<el-option label="已撤回" value="2"></el-option>
</el-select>
</el-form-item>
<el-form-item class="button">
<el-button @click="submitForm()">
<img class="buttonIcon" src="../../assets/cx.png" />查询</el-button
>
<el-button @click="resetForm('ruleForm')">
<img class="buttonIcon" src="../../assets/cz.png" />重置</el-button
>
<el-button @click="detailsForm('ruleForm')">
<img class="buttonIcon" src="../../assets/ck.png" />详情</el-button
>
<el-button @click="add()">
<img class="buttonIcon" src="../../assets/xz.png" /> 新增
</el-button>
<el-button @click="edit()">
<img class="buttonIcon" src="../../assets/bj.png" /> 编辑
</el-button>
<el-button @click="deletes()">
<img class="buttonIcon" src="../../assets/sc.png" /> 删除
</el-button>
<el-button @click="sendMsg()"
><i class="el-icon-position"></i> 下发
</el-button>
<el-button @click="withdraw()">
<i class="el-icon-folder-delete"></i>撤回
</el-button>
</el-form-item>
</el-form>
<div class="setscroll">
<el-table
@selection-change="handleSelectionChange"
ref="multipleTable"
:data="tableData"
tooltip-effect="dark"
style="width: 100%"
header-cell-class-name="custom-th-background"
class="eltable"
:row-class-name="tableRowClassName"
border
>
<el-table-column label="序号" width="55" type="index">
</el-table-column>
<el-table-column type="selection"> </el-table-column>
<el-table-column label="批次年度" width="auto" prop="batchYear">
<template slot-scope="scope"> {{ scope.row.batchYear }}</template>
</el-table-column>
<el-table-column prop="batchName" label="后评估批次名称" width="auto">
</el-table-column>
<el-table-column
prop="planReviewDate"
label="计划评审日期"
width="auto"
>
</el-table-column>
<el-table-column prop="expertName" label="后评估专家" width="auto">
</el-table-column>
<el-table-column
prop="postEvalStateText"
label="批次下发状态"
width="auto"
>
</el-table-column>
<!-- <el-table-column prop="postEvalState" label="后评估状态" width="auto">
</el-table-column> -->
<el-table-column prop="creator" label="创建人" width="auto">
</el-table-column>
<el-table-column prop="createTime" label="创建时间" width="auto">
</el-table-column>
</el-table>
</div>
<el-pagination
@size-change="handleSizeChange"
@current-change="handleCurrentChange"
:current-page="currentPage"
:page-sizes="[10, 15, 20, 50]"
:page-size="100"
layout="total, sizes, prev, pager, next, jumper"
:total="total"
class="elpagination"
>
</el-pagination>
<!-- 详情弹窗 -->
<el-dialog
title="提交评估材料"
:visible.sync="dialogXQ"
width="90%"
:modal-append-to-body="false"
:append-to-body="false"
>
<div class="dialog">
<el-form
:model="ruleFormdialogBJ"
label-width="100px"
class="demo-ruleForm"
>
<el-form-item label="批次年度:" prop="batchYear" class="fromItem">
<el-input v-model="ruleFormdialogBJ.batchYear" disabled></el-input>
</el-form-item>
<el-form-item
label="后评估批次名称:"
prop="batchName"
class="fromItem"
>
<el-input v-model="ruleFormdialogBJ.batchName" disabled></el-input>
</el-form-item>
<el-form-item
label="计划评审日期:"
prop="planReviewDate"
class="fromItem"
>
<el-input
v-model="ruleFormdialogBJ.planReviewDate"
disabled
></el-input>
</el-form-item>
<el-form-item label="工作组织情况:" class="textarea">
<el-input
type="textarea"
v-model="ruleFormdialogBJ.description"
disabled
></el-input>
</el-form-item>
<el-form-item label="备注:" class="textarea">
<el-input
type="textarea"
v-model="ruleFormdialogBJ.remark"
disabled
></el-input>
</el-form-item>
</el-form>
<div class="setscrolldialog">
<el-table
@selection-change="handleSelectionChange"
:data="XQtableData"
tooltip-effect="dark"
style="width: 100%"
header-cell-class-name="custom-th-background"
class="eltable"
:row-class-name="tableRowClassName"
border
>
<el-table-column label="序号" width="55" type="index">
</el-table-column>
<el-table-column label="单位" width="auto" prop="compId">
</el-table-column>
<el-table-column prop="fullName" label="专家姓名" width="auto">
</el-table-column>
<el-table-column prop="gender" label="性别" width="auto">
</el-table-column>
<el-table-column prop="birthday" label="出生日期" width="auto">
</el-table-column>
<el-table-column prop="qualification" label="学历" width="auto">
</el-table-column>
<el-table-column prop="contact" label="联系方式" width="auto">
</el-table-column>
<el-table-column prop="email" label="邮箱" width="auto">
</el-table-column>
<el-table-column prop="fields" label="专业领域" width="auto">
</el-table-column>
<el-table-column prop="expertLevel" label="专家级别" width="auto">
</el-table-column>
<el-table-column prop="description" label="成果简介" width="auto">
</el-table-column>
<el-table-column prop="expertState" label="专家状态" width="auto">
</el-table-column>
</el-table>
</div>
<el-pagination
@size-change="handleSizeChangeXQ"
@current-change="handleCurrentChangeXQ"
:current-page="currentPageXQ"
:page-sizes="[5, 10, 20, 50]"
:page-size="100"
layout="total, sizes, prev, pager, next, jumper"
:total="totalXQ"
class="elpagination"
>
</el-pagination>
</div>
</el-dialog>
<el-dialog
title="新增后评估批次信息"
:visible.sync="dialogAdd"
width="90%"
:modal-append-to-body="false"
:append-to-body="false"
>
<div class="dialog">
<el-form
ref="formName"
:model="ruleFormdialogAdd"
label-width="100px"
class="demo-ruleForm"
:rules="rules"
>
<el-form-item label="批次年度:" prop="batchYear" class="fromItem">
<el-select
v-model="ruleFormdialogAdd.batchYear"
placeholder="请选择"
clearable
>
<el-option
v-for="(item, index) in yearsList"
:key="index"
:label="item + '年'"
:value="item"
/>
</el-select>
</el-form-item>
<el-form-item
label="后评估批次名称:"
prop="batchName"
class="fromItem"
>
<el-input
v-model="ruleFormdialogAdd.batchName"
clearable
></el-input>
</el-form-item>
<el-form-item
label="计划评审日期:"
prop="planReviewDate"
class="fromItem"
>
<el-date-picker
v-model="ruleFormdialogAdd.planReviewDate"
type="date"
placeholder="选择日期"
value-format="yyyy-MM-dd hh:mm:ss"
>
</el-date-picker>
</el-form-item>
<el-form-item label="工作组织情况:" class="textarea">
<el-input
type="textarea"
v-model="ruleFormdialogAdd.description"
placeholder="请输入内容"
clearable
></el-input>
</el-form-item>
<el-form-item label="备注:" class="textarea">
<el-input
type="textarea"
v-model="ruleFormdialogAdd.remark"
placeholder="请输入内容"
clearable
></el-input>
</el-form-item>
</el-form>
<p class="zjBtn">
后评估专家 <span @click="xzExperts()">选择专家</span>
</p>
<div class="setscrolldialog">
<el-table
:data="
addtableData.slice(
(addcurrentPage - 1) * pageSizeAdd,
addcurrentPage * pageSizeAdd
)
"
tooltip-effect="dark"
style="width: 100%"
header-cell-class-name="custom-th-background"
class="eltable"
:row-class-name="tableRowClassName"
border
>
<el-table-column label="序号" width="55" type="index">
</el-table-column>
<el-table-column label="单位" width="auto" prop="compId">
</el-table-column>
<el-table-column prop="fullName" label="专家姓名" width="auto">
</el-table-column>
<el-table-column prop="gender" label="性别" width="auto">
</el-table-column>
<el-table-column prop="birthday" label="出生日期" width="auto">
</el-table-column>
<el-table-column prop="qualification" label="学历" width="auto">
</el-table-column>
<el-table-column prop="contact" label="联系方式" width="auto">
</el-table-column>
<el-table-column prop="email" label="邮箱" width="auto">
</el-table-column>
<el-table-column prop="fields" label="专业领域" width="auto">
</el-table-column>
<el-table-column prop="expertLevel" label="专家级别" width="auto">
</el-table-column>
<el-table-column prop="description" label="成果简介" width="auto">
</el-table-column>
<el-table-column prop="expertState" label="专家状态" width="auto">
</el-table-column>
</el-table>
</div>
<el-pagination
@size-change="handleSizeChangeAdd"
@current-change="handleCurrentChangeAdd"
:current-page="addcurrentPage"
:page-sizes="[5, 10, 20, 50]"
:page-size="100"
layout="total, sizes, prev, pager, next, jumper"
:total="addtotal"
class="elpagination"
>
</el-pagination>
<p class="midBtn">
<span @click="cancelXZ()">取消</span
><span @click="saveXZ('add')">保存</span>
</p>
</div>
</el-dialog>
<!-- 选择专家弹窗 -->
<el-dialog
title="选择专家组长"
:visible.sync="dialogAddzj"
width="90%"
:modal-append-to-body="false"
:append-to-body="false"
>
<div class="adzjdialog">
<el-form :model="ruleFormZJ" label-width="100px" class="demo-ruleForm">
<el-form-item label="专家姓名:" prop="fullName" class="fromItem">
<el-input
v-model="ruleFormZJ.fullName"
placeholder="请输入"
clearable
></el-input>
</el-form-item>
<el-form-item label="专业领域:" prop="fields" class="fromItem">
<el-select
v-model="ruleFormZJ.fields"
placeholder="请选择"
clearable
>
<el-option label="2024年" value="2024"></el-option>
<el-option label="2023年" value="2023"></el-option>
<el-option label="2022年" value="2022"></el-option>
<el-option label="2021年" value="2021"></el-option>
</el-select>
</el-form-item>
<el-form-item label="专家状态:" prop="expertState" class="fromItem">
<el-select
v-model="ruleFormZJ.expertState"
placeholder="请选择"
clearable
>
<el-option label="2024年" value="2024"></el-option>
<el-option label="2023年" value="2023"></el-option>
<el-option label="2022年" value="2022"></el-option>
<el-option label="2021年" value="2021"></el-option>
</el-select>
</el-form-item>
<el-form-item class="cxItem">
<span class="zjquery" @click="xzExperts()"> 查询 </span>
</el-form-item>
</el-form>
<div class="setscrolldialog">
<el-table
@selection-change="handleSelectionChangeZJ"
ref="multipleTableZJ"
:data="zjtableData"
tooltip-effect="dark"
style="width: 100%"
header-cell-class-name="custom-th-background"
class="eltable"
:row-class-name="tableRowClassName"
>
border >
<el-table-column type="selection"> </el-table-column>
<el-table-column label="序号" width="55" type="index">
<!-- <template slot-scope="scope">{{ scope.row.id }}</template> -->
</el-table-column>
<!-- <el-table-column type="selection"> </el-table-column> -->
<el-table-column label="单位" width="auto" prop="compId">
</el-table-column>
<el-table-column prop="fullName" label="专家姓名" width="fullName">
</el-table-column>
<el-table-column prop="gender" label="性别" width="gender">
</el-table-column>
<el-table-column prop="birthday" label="出生日期" width="auto">
</el-table-column>
<el-table-column prop="qualification" label="学历" width="auto">
</el-table-column>
<el-table-column prop="contact" label="联系方式" width="auto">
</el-table-column>
<el-table-column prop="email" label="邮箱" width="auto">
</el-table-column>
<el-table-column prop="fields" label="专业领域" width="auto">
</el-table-column>
<el-table-column prop="expertLevel" label="专家级别" width="auto">
</el-table-column>
<el-table-column prop="description" label="成果简介" width="auto">
</el-table-column>
<el-table-column prop="expertState" label="专家状态" width="auto">
</el-table-column>
<el-table-column
prop="expertId"
label="id"
width="auto"
v-show="false"
>
</el-table-column>
</el-table>
</div>
<el-pagination
@size-change="handleSizeChangeZJ"
@current-change="handleCurrentChangeZJ"
:current-page="currentZJ"
:page-sizes="[5, 10, 20, 50]"
:page-size="100"
layout="total, sizes, prev, pager, next, jumper"
:total="zjtotal"
class="elpagination"
>
</el-pagination>
<p class="midBtn">
<span @click="cancelZJ()">取消</span
><span @click="saveZJ()">保存</span>
</p>
</div>
</el-dialog>
<!-- 编辑弹窗 -->
<el-dialog
title="提交评估材料"
:visible.sync="dialogedit"
width="90%"
:modal-append-to-body="false"
:append-to-body="false"
>
<div class="dialog">
<el-form
:model="ruleFormdialogBJ"
label-width="100px"
class="demo-ruleForm"
ref="formNameBJ"
>
<el-form-item label="批次年度:" prop="batchYear" class="fromItem">
<el-select
v-model="ruleFormdialogBJ.batchYear"
placeholder="请选择"
clearable
>
<el-option
v-for="(item, index) in yearsList"
:key="index"
:label="item + '年'"
:value="item"
/>
</el-select>
</el-form-item>
<el-form-item
label="后评估批次名称:"
prop="batchName"
class="fromItem"
>
<el-input v-model="ruleFormdialogBJ.batchName" clearable></el-input>
</el-form-item>
<el-form-item
label="计划评审日期:"
prop="planReviewDate"
class="fromItem"
>
<el-date-picker
v-model="ruleFormdialogBJ.planReviewDate"
type="date"
placeholder="选择日期"
value-format="yyyy-MM-dd hh:mm:ss"
>
</el-date-picker>
</el-form-item>
<el-form-item label="工作组织情况:" class="textarea">
<el-input
type="textarea"
v-model="ruleFormdialogBJ.description"
placeholder="请输入内容"
clearable
></el-input>
</el-form-item>
<el-form-item label="备注:" class="textarea">
<el-input
type="textarea"
v-model="ruleFormdialogBJ.remark"
placeholder="请输入内容"
clearable
></el-input>
</el-form-item>
</el-form>
<p class="zjBtn">
后评估专家 <span @click="xzExperts()">选择专家</span>
</p>
<div class="setscrolldialog">
<el-table
@selection-change="handleSelectionChange"
:data="addtableData"
tooltip-effect="dark"
style="width: 100%"
header-cell-class-name="custom-th-background"
class="eltable"
:row-class-name="tableRowClassName"
border
>
<el-table-column label="序号" width="55" type="index">
</el-table-column>
<el-table-column label="单位" width="auto" prop="compId">
</el-table-column>
<el-table-column prop="fullName" label="专家姓名" width="auto">
</el-table-column>
<el-table-column prop="gender" label="性别" width="auto">
</el-table-column>
<el-table-column prop="birthday" label="出生日期" width="auto">
</el-table-column>
<el-table-column prop="qualification" label="学历" width="auto">
</el-table-column>
<el-table-column prop="contact" label="联系方式" width="auto">
</el-table-column>
<el-table-column prop="email" label="邮箱" width="auto">
</el-table-column>
<el-table-column prop="fields" label="专业领域" width="auto">
</el-table-column>
<el-table-column prop="expertLevel" label="专家级别" width="auto">
</el-table-column>
<el-table-column prop="description" label="成果简介" width="auto">
</el-table-column>
<el-table-column prop="expertState" label="专家状态" width="auto">
</el-table-column>
</el-table>
</div>
<el-pagination
@size-change="handleSizeChangeBJ"
@current-change="handleCurrentChangeBJ"
:current-page="currentPageBJ"
:page-sizes="[5, 10, 20, 50]"
:page-size="100"
layout="total, sizes, prev, pager, next, jumper"
:total="totalBJ"
class="elpagination"
>
</el-pagination>
<p class="midBtn">
<span @click="cancelBJ()">取消</span
><span @click="saveBJ()">保存</span>
</p>
</div>
</el-dialog>
</div>
</template>
<script>
import {
expertInfo,
expert,
sendEvalBatchInfo,
adEvalBatchInfo,
updEvalBatchInfo,
evalBatchInfo,
delEvalBatchInfo,
chEvalBatchInfo,
} from "@/api/index";
import { getCurrentDate } from "@/utils/format";
import { generateYearOptions } from "@/utils/cache";
export default {
data() {
return {
yearsList: generateYearOptions(),
totalXQ: 0,
XQtableData: [],
currentPageXQ: 1,
pageSizeXQ: 5,
ruleForm: {
batchYear: "",
batchName: "",
postEvalState: "",
},
ruleFormdialog: {
batchYear: "",
batchName: "",
planReviewDate: "",
fullName: "",
},
ruleFormZJ: {
fields: "",
expertState: "",
fullName: "",
},
ruleFormdialogAdd: {
batchYear: "",
batchName: "",
planReviewDate: "",
description: "",
remark: "",
},
ruleFormdialogBJ: {
batchYear: "",
batchName: "",
planReviewDate: "",
description: "",
remark: "",
},
rules: {
batchYear: [
{ required: true, message: "请选择批次年度", trigger: "change" },
],
batchName: [
{
required: true,
message: "请选择后评估批次名称",
trigger: "change",
},
],
planReviewDate: [
{
required: true,
message: "请选择计划评审日期",
trigger: "change",
},
],
},
xfParams: "", //下发入参
tableData: [],
tableDataQD: [], //清单列表
checkedList: [],
currentPage: 1,
currentPagetjcl: 1,
pageSizetjcl: 5,
total: 0,
dialogXQ: false,
currentPageBJ: 1,
pageSizeBJ: 5,
dialogAdd: false,
dialogAddzj: false,
pageSize: 10,
current: 1,
pageSizeZJ: 5,
currentZJ: 1,
addtotal: 0,
currentAdd: 1,
pageSizeAdd: 5,
currentedit: 1,
pageSizeedit: 5,
xfParam: "",
dialogedit: false,
expertIdList: [],
totalBJ: 0,
addZJList: [],
expertState: "",
fields: "",
zjfullName: "",
zjtotal: 0,
zjtableData: [],
addcurrentPage: 1,
addtableData: [],
message: {},
};
},
mounted() {
console.log(getCurrentDate(), "222222");
this.submitForm();
},
methods: {
async submitForm() {
let params = {
current: this.currentPage,
pageSize: this.pageSize,
};
console.log(this.ruleForm, " this.ruleForm");
Object.assign(params, this.ruleForm);
console.log(params);
let res = await evalBatchInfo(params);
if (res.code == "200") {
this.tableData = res.data.records;
this.tableData.forEach((item) => {
if (item.postEvalState == "" || item.postEvalState == null) {
this.$set(item, "postEvalStateText", "未下发");
} else if (item.postEvalState == "0") {
this.$set(item, "postEvalStateText", "未下发");
} else if (item.postEvalState == "2") {
this.$set(item, "postEvalStateText", "已撤回");
} else {
this.$set(item, "postEvalStateText", "已下发");
}
});
this.total = res.data.total * 1;
}
},
resetForm() {
this.$refs.formName.resetFields();
this.currentPage = 1;
this.pageSize = 10;
this.submitForm();
},
//点击新增
async add() {
this.dialogAdd = true;
this.addtableData = []; //每次新增清空不然点了还是这几个人
},
//详情
async detailsForm() {
if (this.checkedList.length != 1) {
this.$message("请选择");
return;
}
console.log("222", this.checkedList);
this.dialogXQ = true;
this.ruleFormdialogBJ = this.checkedList[0];
let params = {
current: this.currentPageXQ,
pageSize: this.pageSizeXQ,
batchId: this.checkedList[0].batchId,
};
console.log(params, "params");
let res = await expert(params);
this.XQtableData = res.data.records;
this.totalXQ = res.data.total * 1;
},
//表格颜色
tableRowClassName({ row, rowIndex }) {
if (rowIndex % 2 == 1) {
return "warning-row";
}
return "";
},
//主列表选中行信息
handleSelectionChange(selection) {
if (Array.isArray(selection) && selection.length > 1) {
this.$refs.multipleTable.toggleRowSelection(selection[0], false);
this.$refs.multipleTable.toggleRowSelection(selection[1], true);
}
this.checkedList = this.$refs.multipleTable.selection;
this.ruleFormdialog = this.checkedList[0];
console.log(this.checkedList, "2222");
},
handleSizeChange(val) {
console.log(`每页 ${val} 条`);
this.pageSize = val;
this.submitForm();
},
handleCurrentChange(val) {
console.log(`当前页: ${val}`);
this.currentPage = val;
this.submitForm();
},
handleSizeChangeZJ(val) {
console.log(`每页 ${val} 条`);
this.pageSizeZJ = val;
},
handleCurrentChangeZJ(val) {
console.log(`当前页: ${val}`);
this.currentZJ = val;
},
handleSizeChangetjcl(val) {
console.log(`每页 ${val} 条`);
this.pageSizetjcl = val;
},
handleCurrentChangetjcl(val) {
console.log(`当前页: ${val}`);
this.currentPagetjcl = val;
},
handleSizeChangeAdd(val) {
this.pageSizeAdd = val;
},
handleCurrentChangeAdd(val) {
this.addcurrentPage = val;
},
handleSizeChangeBJ(val) {
console.log(`每页 ${val} 条`);
this.pageSizeBJ = val;
this.edit();
},
handleCurrentChangeBJ(val) {
console.log(`当前页: ${val}`);
this.currentPageBJ = val;
this.edit();
},
//详情分页
handleSizeChangeXQ(val) {
console.log(`每页 ${val} 条`);
this.pageSizeXQ = val;
this.detailsForm();
},
handleCurrentChangeXQ(val) {
console.log(`当前页: ${val}`);
this.currentPageXQ = val;
this.detailsForm();
},
cancel() {
this.dialog = false;
},
async save(type) {
this.dialog = false;
if (type == "add") {
let params = {};
let res = await qrscevaluationMaterials(params);
}
},
//保存专家
saveZJ() {
if (this.addZJList.length < 1) {
this.$message("请选择专家");
return;
}
this.addtableData = [...this.addtableData, ...this.addZJList];
this.addtableData = this.addtableData.filter(
(obj, index, self) =>
index === self.findIndex((t) => t.expertId === obj.expertId)
);
this.addtotal = this.addtableData.length;
this.dialogAddzj = false;
},
cancelZJ() {
this.dialogAddzj = false;
},
cancelBJ() {
this.dialogedit = false;
},
async xzExperts() {
this.dialogAddzj = true;
let params = {
current: this.currentZJ,
pageSize: this.pageSizeZJ,
};
Object.assign(params, this.ruleFormZJ);
console.log("查询专家", params);
let res = await expertInfo(params);
this.zjtableData = res.data.records;
this.zjtotal = res.data.total * 1;
console.log(res, "xxx");
},
cancelBJ() {
this.dialogedit = false;
},
saveXZ() {
console.log("保存验证", this.$refs);
this.$refs.formName.validate((valid) => {
if (!valid) {
console.log("error submit!!");
return false;
} else {
if (this.addtableData.length < 1) {
this.$message("请选择专家");
}
console.log(this.addZJList, "this.addZJList");
let expertIdList = [];
let expertStr = "";
this.addtableData.forEach((item) => {
expertIdList.push(item.expertId);
expertStr = JSON.stringify(expertIdList).slice(1, -1);
});
let params = {
expertStr: expertStr,
creator: sessionStorage.getItem("author"),
createTime: getCurrentDate(),
};
Object.assign(params, this.ruleFormdialogAdd);
this.xfParams = JSON.parse(JSON.stringify(params));
console.log(params, "222");
adEvalBatchInfo(params).then((res) => {
this.dialogAdd = false;
this.expertIdList = expertIdList;
this.resetForm();
});
}
});
// this.$emit("listenToChildEvent", "reset");
// }
},
cancelXZ() {
this.dialogAdd = false;
},
saveBJ() {
console.log("保存编辑验证", this.$refs.formNameBJ);
this.$refs.formNameBJ.validate((valid) => {
if (!valid) {
console.log("error submit!!");
return false;
} else {
if (this.addtableData.length < 1) {
this.$message("请选择专家");
}
console.log(this.addtableData, "addtableData");
let expertIdList = [];
let expertStr = "";
this.addtableData.forEach((item) => {
expertIdList.push(item.expertId);
expertStr = JSON.stringify(expertIdList).slice(1, -1);
});
console.log(expertStr, "expertStr");
let params = {
expertStr: expertStr,
};
Object.assign(this.ruleFormdialogBJ, params);
console.log(this.ruleFormdialogBJ, "222");
updEvalBatchInfo(this.ruleFormdialogBJ).then((res) => {
this.dialogedit = false;
this.resetForm();
});
}
});
},
//选中的专家
handleSelectionChangeZJ() {
this.addZJList = this.$refs.multipleTableZJ.selection;
console.log(this.$refs.multipleTableZJ.selection, "2222");
},
//点击编辑
async edit() {
//只能选择编辑未下发 待增加
if (this.checkedList.length != 1) {
this.$message("请选择");
return;
}
if (this.checkedList[0].postEvalStateText == "已下发") {
this.$message("不能编辑已下发的项目");
return;
}
this.addtableData = [];
this.ruleFormdialogBJ = this.checkedList[0];
this.dialogedit = true;
let params = {
current: this.currentedit,
pageSize: this.pageSizeedit,
batchId: this.checkedList[0].batchId,
};
console.log(params, "params");
let res = await expert(params);
this.addtableData = res.data.records;
this.totalBJ = res.data.total * 1;
this.addtableData.forEach((item) => {
this.expertIdList.push(item.expertId);
});
},
//点击删除
deletes() {
console.log("删除");
if (this.checkedList.length != 1) {
this.$message("请选择");
return;
}
this.$confirm("此操作将删除该批次, 是否继续?", "提示", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning",
})
.then(async () => {
let res = await delEvalBatchInfo(this.checkedList[0]);
if (res.code == 200) {
this.$message({
type: "success",
message: "删除成功!",
});
this.resetForm();
} else {
this.$message({
type: "info",
message: "删除失败!",
});
this.resetForm();
}
})
.catch(() => {
this.$message({
type: "info",
message: "已取消删除",
});
});
},
//点击下发
async sendMsg() {
//只能选择未下发的 这块需要加一下
if (this.checkedList.length != 1) {
this.$message("请选择");
return;
}
if (this.checkedList[0].postEvalStateText == "已下发") {
this.$message("该项目已下发");
return;
}
let res = await sendEvalBatchInfo(this.checkedList[0]);
if (res.code == "200") {
this.$message({
type: "success",
message: "下发成功!",
});
this.resetForm();
} else {
this.$message({
type: "info",
message: "下发失败!",
});
}
},
//点击撤回
async withdraw() {
//只能选择已下发未确认的 这块需要加一下
if (this.checkedList.length != 1) {
this.$message("请选择");
return;
}
if (this.checkedList[0].postEvalStateText == "未下发") {
this.$message("该项目未下发");
return;
}
if (this.checkedList[0].postEvalStateText == "已撤回") {
this.$message("该项目已撤回");
return;
}
let res = await chEvalBatchInfo(this.checkedList[0]);
if (res.code == "200") {
this.resetForm();
}
},
},
};
</script>
<style scoped lang="scss">
.main {
font-size: 14px;
position: relative;
height: 100%;
width: 100%;
box-sizing: border-box;
overflow: hidden;
}
.el-form {
display: flex;
width: 99%;
flex-wrap: wrap;
border-top: 2px solid #23c6c8;
border-left: 1px solid #dee5e7;
border-right: 1px solid #dee5e7;
border-bottom: 1px solid #dee5e7;
padding: 20px 10px;
margin-bottom: 20px;
.fromItem {
min-width: 24%;
margin: 0 0.5%;
margin-bottom: 20px;
.el-input {
width: 226px;
}
.el-select {
width: 226px;
}
}
/deep/ .el-form-item__content {
text-align: left;
display: inline-block;
margin-left: 10px !important;
}
/deep/ .el-form-item__label {
font-weight: bold;
color: #000;
width: 160px !important;
}
.button {
display: inline-block;
width: 100%;
text-align: left;
/deep/ .el-form-item__content {
margin-left: 20px !important;
text-align: left;
img {
width: 14px;
height: 14px;
margin-right: 15px;
vertical-align: middle;
}
}
.el-button {
background-color: #23c6c8;
border-color: #23c6c8;
color: #fff;
}
}
}
/deep/ .el-table .warning-row {
background: #f0ffff;
// color: #2785e6;
}
.elpagination {
text-align: right;
margin-right: 100px;
}
/deep/ .el-dialog {
border-radius: 10px;
margin-top: 3vh !important;
margin-left: 3vw !important;
}
/deep/ .el-dialog__wrapper {
position: absolute;
}
/deep/ .v-modal {
position: absolute;
}
/deep/ .el-dialog__header {
background-color: #0d867f;
padding-bottom: 20px;
text-align: left;
border-radius: 10px 10px 0 0;
.el-dialog__title {
color: #fff;
}
}
/deep/ .el-table__header th {
background-color: #eeeeee;
font-weight: bold;
.cell {
color: #333;
}
}
/deep/.el-table {
// width: 100%;
position: absolute;
// width: auto !important;
max-width: none;
.el-table__header-wrapper table,
.el-table__body-wrapper table {
width: 100% !important;
}
.el-table__body,
.el-table__footer,
.el-table__header {
table-layout: auto;
}
}
.dialog {
.xqtitle {
text-align: left;
font-size: 18px;
span {
display: inline-block;
width: 5px;
height: 20px;
background: #0d867f;
margin-right: 14px;
vertical-align: middle;
}
}
}
.textarea {
width: 100%;
/deep/ .el-form-item__content {
display: flex;
}
.el-textarea {
width: 60%;
}
}
.Btn {
width: 200px;
margin: 0 auto;
span {
display: inline-block;
width: 80px;
height: 25px;
line-height: 25px;
text-align: center;
border-radius: 4px;
margin-right: 12px;
}
span:first-of-type {
border: 1px solid #000;
}
span:last-of-type {
background-color: #0d867f;
border: 1px solid #0d867f;
color: #fff;
}
}
/deep/ .el-dialog__headerbtn .el-dialog__close {
color: #fff;
}
.zjBtn {
width: 200px;
text-align: left;
span {
display: inline-block;
width: 80px;
height: 25px;
line-height: 25px;
text-align: center;
border-radius: 5px;
}
span:last-of-type {
background-color: #4ca6a7;
color: #fff;
padding: 5px 10px;
margin-left: 10px;
}
}
/deep/ .el-icon-position {
margin-right: 10px;
}
/deep/ .el-icon-folder-delete {
margin-right: 10px;
}
.cxItem {
text-align: right;
width: 20%;
.zjquery {
display: inline-block;
background-color: #4ca6a7;
width: 89px;
height: 40px;
color: #fff;
text-align: center;
line-height: 40px;
border-radius: 5px;
}
}
.midBtn {
margin: 0 auto;
span {
display: inline-block;
width: 80px;
height: 25px;
line-height: 25px;
text-align: center;
margin-right: 10px;
border-radius: 5px;
}
span:first-of-type {
border: 1px solid grey;
}
span:last-of-type {
background-color: #4ca6a7;
color: #fff;
}
}
/deep/.el-table th.el-table__cell.is-leaf,
.el-table td.el-table__cell {
text-align: center;
}
/deep/ .el-table__cell {
text-align: center;
}
.setscroll {
width: 100%;
height: 650px;
position: relative;
overflow: auto;
}
.setscrolldialog {
width: 100%;
height: 300px;
overflow: auto;
box-sizing: border-box;
/deep/ .el-table {
width: 96% !important;
height: 300px;
overflow: auto;
}
}
// /deep/ .el-table__body-wrapper::-webkit-scrollbar {
// width: 6px; // 横向滚动条
// height: 6px; // 纵向滚动条必写
// }
</style>
\ No newline at end of file
<template>
<div class="main">
<div class="close"><i class="el-icon-circle-close"></i></div>
<p class="title">国网辽宁电力-桌面终端管理系统合规性检查评估</p>
<div class="continer">
<div class="top">
<el-steps :active="active" align-center finish-status="success">
<el-step
v-for="item in tabList"
:key="item.name"
:title="item.label"
@click.native="change(item.id)"
></el-step>
</el-steps>
</div>
<div class="content">
<div class="left">
<p class="tableTitle">检查内容</p>
<el-tabs v-model="activeName" @tab-click="handleClick">
<el-tab-pane
v-for="item in tabListKY"
:key="item.typeText"
:label="item.typeText"
:name="item.typeCode"
>
<!-- <p style="height:600px"> {{ item.typeText }}</p> -->
<iframe
:src="iframeUrl"
frameborder="0"
style="width: 80%; height: 60vh; margin: auto; display: block"
></iframe>
</el-tab-pane>
</el-tabs>
</div>
<div class="right">
<p class="tableTitle">检查项</p>
<div class="rightscoll">
<div
class="rightContent"
v-for="item in questionList"
:key="item.questionId"
>
<h3>{{ item.questionId }}.{{ item.quesCheckItem }}</h3>
<p class="msg">{{ item.checkDesc }}</p>
<div
class="quesznfx"
v-if="item.znfxList && item.znfxList.length > 0"
>
<p class="tips">智能分析:</p>
<div
v-for="(itemzn, index) in item.znfxList"
:key="index"
class="inputDiv"
v-html="itemzn.checkDesc"
></div>
</div>
<div
class="quesznfx"
v-if="item.fzfxList && item.fzfxList.length > 0"
>
<p class="tips">辅助分析:</p>
<div
v-for="(itemfz, index) in item.fzfxList"
:key="index"
class="inputDiv"
>
<el-input
type="textarea"
:autosize="{ minRows: 1, maxRows: 4 }"
v-model="itemfz.checkDesc"
>
</el-input
><el-button @click="adopt(item, index, itemfz)" type="primary"
:disabled="itemfz.type=='1'">采纳</el-button
>
</div>
</div>
<div class="question">
<p class="tips">问题描述:</p>
<div
v-for="(items, index) in item.evalList"
:key="items.ideval"
class="inputDiv"
>
<el-input
type="textarea"
:autosize="{ minRows: 1, maxRows: 4 }"
placeholder="手动录入问题"
v-model="items.evalQues"
:disabled="items.disabled"
>
</el-input
><el-button @click="delInput(item, index)" type="primary"
>删除</el-button
>
<el-upload
class="upload_box"
ref="upload"
:limit="limitNum"
:class="{ uploadBox_hide: items.hideUploadEdit }"
:on-change="handleEditChange"
:http-request="
(res) => {
return fileupdate(res, items);
}
"
:before-upload="beforeAvatarUpload"
:with-credentials="true"
:auto-upload="true"
accept=".png, .jpg"
list-type="picture-card"
:file-list="items.fileList"
action=""
>
<!-- 加号标识 -->
<el-button
class="upload_btn"
slot="trigger"
size="small"
type="primary"
>
上传截图
</el-button>
<!-- 上传后显示 -->
<div slot="file" slot-scope="{ file }">
<img
class="el-upload-list__item-thumbnail"
:src="file.url"
alt=""
/>
<span class="el-upload-list__item-actions">
<!-- 图片放大 -->
<span
class="el-upload-list__item-preview"
@click="handlePictureCardPreview(file)"
>
<i class="el-icon-zoom-in"></i>
</span>
<!-- 删除 -->
<span
v-if="!disabled"
class="el-upload-list__item-delete"
@click="handleRemove(file)"
>
<i class="el-icon-delete"></i>
</span>
</span>
</div>
</el-upload>
</div>
<el-dialog
:visible.sync="dialogVisible"
:fullscreen="true"
custom-class="fullscreen-dialog"
>
<img
:src="dialogImageUrl"
alt="Full Screen Image"
style="margin: 0 auto; display: block"
/>
</el-dialog>
<p class="addBtn">
<el-checkbox
v-model="item.checked"
@change="changeChecked(item)"
>未发现问题</el-checkbox
><i class="el-icon-circle-plus" @click="addInput(item)"></i>
</p>
</div>
</div>
</div>
</div>
</div>
</div>
<p class="Btn">
<span @click="cancel()">取消</span><span @click="save()">保存</span>
</p>
</div>
</template>
<script>
// import{kkk}from "@/static/web/viewer.mjs"
import {
selWtqdFZ,
selFile,
downloadObject,
selWtmx,
selZnfx,
bcevalQuesInfo,
ossupload,
presignedUrl,
} from "@/api/index";
import { MaterialsListKY } from "@/utils/cache";
export default {
data() {
return {
dialogImageUrl: "",
fileList: [],
evalList: [
{
ideval: "",
evalQues: "",
hideUploadEdit: false,
},
],
tabList: [
{ label: "可研", id: 0 },
{ label: "计划", id: 1 },
{ label: "采购", id: 2 },
{ label: "合同", id: 3 },
{ label: "执行", id: 4 },
{ label: "结决算及转资", id: 5 },
],
tabListKY: MaterialsListKY(1),
active: 0,
activeName: "0",
clqparams: {},
iframeUrl: "",
urlList: [],
questionList: [],
file: "",
dialogVisible: false,
fullURL: "",
hideUploadEdit: false,
limitNum: 1,
disabled: false,
oldQuestionList: [], //对比列表
};
},
mounted() {
console.log(MaterialsListKY(1), "wwwww");
this.clqparams = JSON.parse(this.$route.query.clqparams);
this.init(this.clqparams);
},
methods: {
// 放大图片
handlePictureCardPreview(file) {
console.log("点击放大");
this.dialogImageUrl = file.url;
this.dialogVisible = true;
},
// 删除图片
handleRemove(file, fileList) {
console.log(fileList, "this.fileList");
if (this.fileList.length == 0) {
this.fileList = [];
} else {
let dl = this.fileList.indexOf(file);
this.fileList.splice(dl, 1);
}
this.hideUploadEdit = this.fileList.length >= this.limitNum;
},
// on-change添加文件,上传成功和上传失败时都会被调用
handleEditChange(file, fileList) {
this.hideUploadEdit = fileList.length >= this.limitNum;
// this.fileList.push({ name: items.name, url: items.url });
console.log(fileList, " this.fileList");
},
// http-request自定义上传
ImgUploadSectionFile(param) {
this.param = param;
},
// before-upload上传文件之前的钩子,参数为上传的文件
// 若返回 false 或者返回 Promise 且被 reject,则停止上传
beforeAvatarUpload(file) {
this.file = file;
const isJPG = file.type === "image/jpeg" || file.type === "image/png";
const isLt2M = this.file.size / 1024 < 1000;
console.log(this.file.size / 1024, "this.file.size this.file.size ");
if (!isJPG) {
this.$message.error("上传图片只能是 JPG 或 PNG 格式!");
this.hideUploadEdit = false;
}
if (!isLt2M) {
this.hideUploadEdit = false;
this.$message.error("上传图片大小不能超过 1000k!");
}
return isJPG && isLt2M;
},
// 文件上传成功时的钩子
handleSuccess(file) {
// console.log(file);
const data = file.data;
//然后数据、逻辑处理
},
showFullScreen() {
console.log(this.fileList, "4444");
this.fullURL = this.fileList[0].url;
this.dialogVisible = true;
},
handleExceed() {
this.$message.warning(`只能选择一张图片`);
},
async init(type) {
let params = {
projectStage: this.active * 1 + 1,
...type,
};
Promise.all([selFile(params), selWtqdFZ(params)]).then(async (res) => {
console.log(res[0], res[1], "777777");
this.urlList = res[0].data;
if (res[1].data) {
this.questionList = res[1].data.records;
this.questionList.forEach(async (item) => {
let respon = await selWtmx({ qid: item.qid });
let paramsFX = {
batchId: this.clqparams.batchId,
projectId: this.clqparams.projectId,
projectStage: item.questionId,
};
let responfx = await selZnfx(paramsFX);
if (respon.data.records && respon.data.records.length > 0) {
respon.data.records.forEach(async (itemImg) => {
if (itemImg.url) {
let paramsImg = {
fileId: itemImg.id,
url: itemImg.url,
};
let resUrl = await presignedUrl(paramsImg);
// itemImg.fileList=[{
// url:resUrl.msg
// }]
this.$set(itemImg, "fileList", [
{
url: resUrl.msg,
},
]);
itemImg.hideUploadEdit = true;
} else {
itemImg.hideUploadEdit = false;
}
});
this.$set(item, "evalList", [...respon.data.records]);
console.log(item, "itemitemitem");
} else {
this.$set(item, "evalList", [
{
ideval: "",
evalQues: "",
hideUploadEdit: false,
},
]);
}
if (item.isProblem == 0) {
console.log("未发现问题");
this.$set(item, "checked", true);
this.changeChecked(item);
}
if (responfx.data.records && responfx.data.records.length > 0) {
let znfxList = responfx.data.records.filter((item) => {
if (item.checkDesc) {
item.checkDesc = item.checkDesc.replace(/\n/g, "<br>");
}
return item.type == 0;
});
let fzfxList = responfx.data.records.filter((item) => {
return item.type == 1 || item.type == 2;
});
this.$set(item, "znfxList", [...znfxList]);
this.$set(item, "fzfxList", [...fzfxList]);
} else {
this.$set(item, "znfxList", []);
this.$set(item, "fzfxList", []);
}
this.$set(item, "Id", 0);
});
}
if (this.urlList.length <= 0) {
this.iframeUrl = "/nopdf.png";
return;
}
let paramsUrl = {
fileId: this.urlList[0].id,
url: this.urlList[0].url,
};
let resUrl = await presignedUrl(paramsUrl);
this.iframeUrl = resUrl.msg;
console.log(this.questionList, "总列表");
this.oldQuestionList = JSON.parse(JSON.stringify(this.questionList));
});
},
async handleClick(tab) {
console.log("切换", tab.name, this.urlList);
this.urlList.forEach(async (item) => {
if (item.typeCode == tab.name) {
let paramsUrl = {
fileId: item.id,
url: item.url,
};
let resUrl = await presignedUrl(paramsUrl);
this.iframeUrl = resUrl.msg;
} else {
// this.iframeUrl =""
this.iframeUrl = "/nopdf.png";
}
});
console.log(this.iframeUrl, "this.iframeUrl");
},
change(id) {
this.$confirm("是否保存?", "提示", {
confirmButtonText: "是",
cancelButtonText: "否",
distinguishCancelAndClose: true,
type: "warning",
})
.then(() => {
this.save();
this.active = id * 1;
this.tabListKY = MaterialsListKY(id * 1 + 1);
this.init(this.clqparams);
})
.catch((action) => {
console.log(action, "actionaction");
if (action === "cancel") {
this.active = id * 1;
this.tabListKY = MaterialsListKY(id * 1 + 1);
this.init(this.clqparams);
} else {
}
});
// this.save()
// this.active = id * 1;
// this.tabListKY = MaterialsListKY(id * 1 + 1);
// this.init(this.clqparams);
},
delInput(item, index) {
if (item.evalList.length <= 1) {
item.checked = true;
this.$set(item, "checked", true);
this.changeChecked(item);
return false;
}
item.evalList.splice(index, 1);
},
adopt(item, index, items) {
console.log(item, "item");
console.log(items, "items");
if (item.evalList.length == 1 && !item.evalList[0].evalQues) {
item.evalList[0].evalQues = items.checkDesc;
// this.$set(item,evalList,{
// evalQues: items.checkDesc,
// })
} else {
item.evalList.push({
ideval: "id" + item.Id++,
evalQues: items.checkDesc,
hideUploadEdit: false,
});
}
},
addInput(item) {
if (item.evalList[0].disabled == true) {
console.log("选择了未发现问题");
return;
}
console.log(item, "22");
item.evalList.push({
ideval: "id" + item.Id++,
data: "",
evalQues: "",
});
console.log(item.evalList, "item.evalList");
},
changeChecked(item) {
console.log(item, "2222");
if (item.checked) {
this.$set(item, "evalList", [
{
ideval: "",
evalQues: "",
hideUploadEdit: false,
disabled: true,
},
]);
this.$set(item, "isProblem", 0);
// this.$set(item, "Id", 0);
} else {
item.evalList[0].disabled = false;
this.$set(item, "isProblem", 1);
}
},
cancel() {
console.log("电击取消");
// this.$router.go(-1);
this.$router.push({
path: "/mainLayout/auxiliaryInspection",
});
},
async save() {
this.questionList.forEach((item) => {
let evals = "";
item.evalList.forEach((childItem) => {
evals = evals.concat(childItem.evalQues + ",");
});
evals=evals.slice(0, -1)
item.evalQues = evals;
});
console.log(this.questionList, "questionList");
// return
let params = {
list: this.questionList,
...this.clqparams,
};
console.log(params, "保存");
// return
let res = await bcevalQuesInfo(params);
if (res.code == "200") {
this.$message("保存成功");
} else {
this.$message("保存失败");
}
},
fileupdate(res, items) {
console.log(this.file.size / 1024, "222222");
this.file = res.file;
this.submitFile(res, items);
},
submitFile(item, list) {
console.log(list, "list");
console.log(this.file, "多少k");
if (this.file) {
const formData = new FormData();
formData.append("file", this.file);
ossupload(formData)
.then((response) => {
console.log(response, "上传图片");
if (response.code == "200") {
// list.url = response.data.downLoadUrl;
// list.fileId= response.data.fileId
this.$set(list, "url", response.data.downLoadUrl);
this.$set(list, "fileId", response.data.fileId);
console.log(this.questionList, "总列表");
this.$message("上传成功");
} else {
this.$message("上传失败");
}
})
.catch((error) => {
console.error(error);
this.$message("上传失败");
});
}
},
// successHandler(items) {
// this.fileList.push({ name: items.name, url: items.url });
// console.log("来了么222222", this.fileList);
// },
},
};
</script>
<style lang="scss" scoped>
.main {
font-size: 14px;
position: relative;
height: 100%;
width: 100%;
box-sizing: border-box;
}
.close {
position: absolute;
right: 20px;
top: 20px;
.el-icon-circle-close {
font-size: 30px;
// background-color: #0d867f;
// color: #fff;
}
}
.title {
text-align: left;
background-color: #fff;
height: 40px;
line-height: 40px;
color: grey;
font-size: 15px;
}
.continer {
width: 100%;
background-color: #f5f5f6;
padding: 20px;
position: relative;
box-sizing: border-box;
.top {
width: 70%;
margin: 0 auto;
position: relative;
}
.content {
width: 100%;
margin-top: 10px;
display: flex;
}
.left {
width: 49%;
min-height: 100px;
background: #fff;
// color: #fff;
}
.right {
width: 50%;
margin-left: 10px;
background: #fff;
}
.rightscoll {
height: 610px;
overflow-y: auto;
padding: 10px;
}
}
/deep/.el-step__icon {
color: #0d867f;
border-color: #0d867f;
width: 20px;
height: 20px;
// border:3px solid #0d867f;
}
/deep/.el-icon-caret-right {
font-size: 30px;
line-height: 23px;
display: inline-block;
color: #0d867f;
z-index: 4;
}
/deep/.el-step.is-horizontal .el-step__line {
height: 1px;
// margin-right: -20px !important;
z-index: 1;
}
/deep/.el-step__line {
color: gainsboro;
}
.el-step__head.is-wait {
color: #0d867f;
border-color: #0d867f;
}
/deep/.el-step__title {
color: #000;
}
/deep/.el-step__title.is-process {
color: #0d867f;
}
/deep/ .is-wait .el-step__icon-inner {
display: none;
}
/deep/.upload-demo {
display: inline-block;
}
.tableTitle {
background: #0d867f;
color: #f5f5f6;
height: 40px;
line-height: 40px;
text-align: left;
padding-left: 20px;
font-weight: 600;
font-size: 15px;
}
.rightContent {
width: 100%;
overflow-y: auto;
text-align: left;
h3 {
margin: 0;
}
p {
margin: 5px 0;
}
.question {
border: 1px solid gainsboro;
padding: 5px;
.tips {
color: gray;
font-size: 12px;
}
.el-textarea {
width: 65%;
vertical-align: top;
}
}
}
.el-button--primary {
color: #ffffff;
background-color: #0d867f;
border-color: #0d867f;
height: 35px;
line-height: 0.6;
margin-left: 10px;
vertical-align: top;
}
.el-icon-circle-plus {
font-size: 45px;
vertical-align: middle;
color: #0d867f;
}
.inputDiv {
margin-top: 5px;
}
.addBtn {
display: flex;
justify-content: space-between;
}
.Btn {
width: calc(100% - 270px);
position: fixed;
height: 80px;
bottom: -15px;
right: 0;
z-index: 100;
background-color: #f5f5f6;
line-height: 80px;
span {
display: inline-block;
width: 89px;
height: 30px;
line-height: 30px;
text-align: center;
border-radius: 5px;
margin-right: 32px;
background-color: #0d867f;
border: 1px solid #0d867f;
color: #fff;
}
span:first-of-type {
border: 1px solid grey;
color: #000;
background-color: #fff;
}
}
.quesznfx {
background-color: rgba(255, 248, 226, 1);
color: #ff5a2e;
font-size: 12px;
padding: 5px;
margin-bottom: 10px;
.el-textarea {
width: 65%;
vertical-align: top;
}
}
/deep/.uploadBox_hide .el-upload--picture-card {
display: none;
}
/deep/.upload_box {
display: inline-block;
}
/deep/.el-upload--picture-card {
width: 80px;
height: 40px;
line-height: 50px;
margin-left: 10px;
border: none;
}
</style>
\ No newline at end of file
<template>
<div class="main">
<div class="close">
<i class="el-icon-circle-close" @click="cancel()"></i>
</div>
<p class="title">国网辽宁电力-桌面终端管理系统合规性检查评估</p>
<div class="continer">
<p class="xqtitle"><span></span>问题清单</p>
<el-table
ref="multipleTable"
:data="tableData"
tooltip-effect="dark"
style="width: 100%"
header-cell-class-name="custom-th-background"
class="eltable"
:row-class-name="tableRowClassName"
:span-method="arraySpanMethod"
border
>
<el-table-column label="项目环节" prop="projectStagetext" width="150">
</el-table-column>
<el-table-column label="序号" width="100" type="index">
</el-table-column>
<el-table-column label="问题检查项" prop="quesCheckItem" width="auto">
</el-table-column>
<el-table-column
label="检查说明"
prop="checkDesc"
show-overflow-tooltip
width="auto"
>
</el-table-column>
<el-table-column label="评估问题" width="auto">
<template slot-scope="scope">
<el-input v-model="scope.row.evalQues" :disabled="ishow"></el-input>
</template>
</el-table-column>
<el-table-column label="问题截图" width="auto">
<template slot-scope="scope">
<el-image
class="imgList"
v-for="(img, index) in scope.row.images"
:key="index"
:src="img"
:preview-src-list="scope.row.images"
@click="handleImageClick(scope.row.images)"
></el-image>
</template>
</el-table-column>
</el-table>
</div>
<p class="Btn" v-if="!ishow">
<span @click="cancel()">取消</span><span @click="save('add')">确定</span>
<span @click="save('upLoad')">提交</span>
</p>
</div>
</template>
<script>
import {
selWtqdpostEvalQuesInfo,
bcpostEvalQuesInfo,
tjpostEvalQuesInfo,
presignedUrl,
} from "@/api/index";
export default {
data() {
return {
tableData: [],
mergingRows: [],
mergingPos: 0,
clqparams: {},
ishow: true,
};
},
mounted() {
this.clqparams = JSON.parse(this.$route.query.clqparams);
this.ishow = this.$route.query.ishow;
this.init(this.clqparams);
},
methods: {
async init(type) {
let params = type;
console.log(params, "333");
let res = await selWtqdpostEvalQuesInfo(params);
console.log(res, "0000");
if (res.code == "200") {
this.tableData = res.data.records;
this.tableData.forEach((item) => {
switch (item.projectStage) {
case 1:
this.$set(item, "projectStagetext", "1.可研");
break;
case 2:
this.$set(item, "projectStagetext", "2.计划");
break;
case 3:
this.$set(item, "projectStagetext", "3.采购");
break;
case 4:
this.$set(item, "projectStagetext", "4.合同");
break;
case 5:
this.$set(item, "projectStagetext", "5.执行");
break;
case 6:
this.$set(item, "projectStagetext", "6.结决算及转资");
break;
}
let urlStr = item.url;
let arrUrl = [];
let showUrlList = [];
// 有url拆分调接口换预览
if (urlStr) {
console.log(urlStr, "urlStr");
if (urlStr.includes(",")) {
arrUrl = item.url.split(",");
} else {
arrUrl.push(urlStr);
}
console.log(arrUrl, "arrUrlarrUrl");
arrUrl.forEach(async (showUrl) => {
let paramsUrl = {
url: showUrl,
};
let resUrl = await presignedUrl(paramsUrl);
showUrlList.push(resUrl.msg);
});
console.log(showUrlList, "showUrlList");
this.$set(item, "images", showUrlList);
}
});
this.total = res.data.total * 1;
this.dataPretreatment();
}
},
//表格颜色
tableRowClassName({ row, rowIndex }) {
if (rowIndex % 2 == 1) {
return "warning-row";
}
return "";
},
arraySpanMethod({ row, column, rowIndex, columnIndex }) {
if (columnIndex === 0) {
//第一列
const _row = this.mergingRows[rowIndex];
const _col = _row > 0 ? 1 : 0;
return {
rowspan: _row,
colspan: _col,
};
}
},
dataPretreatment() {
for (let i = 0; i < this.tableData.length; i++) {
// tabledata 表格数据源
if (i === 0) {
this.mergingRows.push(1);
this.mergingPos = 0;
} else {
if (
this.tableData[i].projectStage ===
this.tableData[i - 1].projectStage
) {
//哪些数据是要合并的 合并的条件是什么
this.mergingRows[this.mergingPos] += 1;
this.mergingRows.push(0);
} else {
this.mergingRows.push(1);
this.mergingPos = i;
}
}
}
},
cancel() {
this.$router.go(-1);
},
handleImageClick() {},
//保存
async save(type) {
console.log(this.clqparams, "this.clqparams");
let params = {
projectId: this.clqparams.projectId,
batchId: this.clqparams.batchId,
list: this.tableData,
};
if (type == "add") {
console.log(params, "this.zjtableDatathis.zjtableData");
let res = await bcpostEvalQuesInfo(params);
if (res.code == "200") {
this.$router.go(-1);
} else {
this.$message("保存失败");
}
} else {
let res = await tjpostEvalQuesInfo(params);
if (res.code == "200") {
this.$router.go(-1);
} else {
this.$message("上传失败");
}
}
},
},
};
</script>
<style lang="scss" scoped>
.main {
font-size: 14px;
position: relative;
height: 100%;
width: 100%;
box-sizing: border-box;
overflow-x: hidden;
.Btn {
width: calc(100% - 246px);
position: fixed;
height: 80px;
bottom: -15px;
right: 0;
z-index: 100;
background-color: #f5f5f6;
line-height: 80px;
span {
display: inline-block;
width: 89px;
height: 30px;
line-height: 30px;
text-align: center;
border-radius: 5px;
margin-right: 32px;
background-color: #0d867f;
border: 1px solid #0d867f;
color: #fff;
}
span:first-of-type {
border: 1px solid grey;
color: #000;
background-color: #fff;
}
}
}
.close {
position: absolute;
right: 20px;
top: 20px;
.el-icon-circle-close {
font-size: 30px;
// background-color: #0d867f;
// color: #fff;
}
}
.title {
text-align: left;
background-color: #fff;
height: 40px;
line-height: 40px;
color: grey;
font-size: 15px;
}
.continer {
width: 100%;
height: 800px;
overflow-y: auto;
background-color: #f5f5f6;
padding: 10px;
padding-top: 0;
// display: flex;
// padding: 0 20px;
padding-bottom: 20px;
position: relative;
}
.tableTitle {
background: #0d867f;
color: #f5f5f6;
height: 40px;
line-height: 40px;
text-align: left;
padding-left: 20px;
font-weight: 600;
font-size: 15px;
}
/deep/ .el-table .warning-row {
background: #f0ffff;
color: #2785e6;
}
.eltable {
width: 100%;
box-sizing: border-box;
margin-bottom: 10px;
}
/deep/ .el-table .warning-row {
background: #f0ffff;
// color: #2785e6;
}
.elpagination {
text-align: right;
margin-right: 100px;
}
/deep/.el-table {
width: 100%;
.el-table__header-wrapper table,
.el-table__body-wrapper table {
width: 100% !important;
}
.el-table__body,
.el-table__footer,
.el-table__header {
table-layout: auto;
}
}
/deep/.el-table th.el-table__cell.is-leaf,
.el-table td.el-table__cell {
text-align: center;
}
/deep/ .el-icon-folder-delete {
margin-right: 10px;
}
/deep/.el-table th.el-table__cell.is-leaf,
.el-table td.el-table__cell {
text-align: center;
}
/deep/ .el-table__cell {
text-align: center;
}
.xqtitle {
width: 100%;
height: 20px;
text-align: left;
font-size: 18px;
padding: 20px 0;
border-bottom: 1px solid gainsboro;
margin-top: 1px;
span {
display: inline-block;
width: 5px;
height: 20px;
background: #0d867f;
margin-right: 14px;
vertical-align: middle;
}
}
.imgList {
/deep/ .el-image__inner {
width: 60px;
height: 60px;
}
}
</style>
\ No newline at end of file
<template>
<div class="main">
<div class="close">
<i class="el-icon-circle-close" @click="cancel()"></i>
</div>
<p class="title">国网辽宁电力-桌面终端管理系统合规性检查评估</p>
<div class="continer">
<p class="xqtitle"><span></span>问题清单</p>
<el-table
ref="multipleTable"
:data="tableData"
tooltip-effect="dark"
style="width: 100%"
header-cell-class-name="custom-th-background"
class="eltable"
:row-class-name="tableRowClassName"
:span-method="arraySpanMethod"
border
>
<el-table-column label="项目环节" prop="projectStagetext" width="150">
</el-table-column>
<el-table-column label="序号" width="100" type="index">
</el-table-column>
<el-table-column label="问题检查项" prop="quesCheckItem">
</el-table-column>
<el-table-column label="检查说明" prop="checkDesc" show-overflow-tooltip> </el-table-column>
<el-table-column label="评估问题" prop="evalQues">
<!-- <template slot-scope="scope">
<el-input v-model="scope.row.evalQues"></el-input>
</template> -->
</el-table-column>
</el-table>
</div>
<div class="bottom">
<p class="JYtitle"><span></span>问题下发要求</p>
<el-form
:model="ruleForm"
label-width="100px"
class="demo-ruleForm"
:rules="rules"
ref="formName"
>
<el-form-item
label="问题申诉截止时间:"
prop="appealDeadline"
class="fromItem"
>
<el-date-picker
v-model="ruleForm.appealDeadline"
type="date"
placeholder="选择日期"
value-format="yyyy-MM-dd hh:mm:ss"
:disabled="fromType"
:picker-options="pickerOptions"
>
</el-date-picker>
</el-form-item>
<el-form-item
label="问题整改截止时间:"
prop="rectificationDeadline"
class="fromItem"
>
<el-date-picker
v-model="ruleForm.rectificationDeadline"
type="date"
placeholder="选择日期"
value-format="yyyy-MM-dd hh:mm:ss"
:disabled="fromType"
:picker-options="pickerOptions"
>
</el-date-picker>
</el-form-item>
</el-form>
<p class="Btn" v-if="!fromType">
<span @click="cancel()">取消</span>
<span @click="confirm()">下发</span>
</p>
</div>
</div>
</template>
<script>
import {
selWtqdpostEvalQuesInfo,
wtxfproblemAssistedDistribution,
} from "@/api/index";
export default {
data() {
return {
pickerOptions: {
disabledDate(time) {
return time.getTime() < Date.now() - 8.64e7;
}
},
tableData: [],
mergingRows: [],
mergingPos: 0,
clqparams: {},
textarea1: "",
ruleForm: {
appealDeadline: "",
rectificationDeadline: "",
},
rules: {
appealDeadline: [
{
required: true,
message: "请选择问题申诉截止时间",
trigger: "change",
},
],
rectificationDeadline: [
{
required: true,
message: "问题整改截止时间",
trigger: "change",
},
],
},
fromType:false,
};
},
mounted() {
this.clqparams = JSON.parse(this.$route.query.clqparams);
if (this.$route.query.fromType == "fzcx") {
this.fromType = true;
this.ruleForm=JSON.parse(this.$route.query.Form);
console.log(this.ruleForm,'ruleForm')
}
console.log(this.fromType,'this.fromType')
console.log(this.clqparams, "this.clqparams");
this.init(this.clqparams);
},
methods: {
async init(type) {
let params = type;
console.log(params, "333");
let res = await selWtqdpostEvalQuesInfo(params);
console.log(res, "0000");
if (res.code == "200") {
this.tableData = res.data.records;
this.tableData.forEach((item) => {
switch (item.projectStage) {
case 1:
this.$set(item, "projectStagetext", "1.可研");
break;
case 2:
this.$set(item, "projectStagetext", "2.计划");
break;
case 3:
this.$set(item, "projectStagetext", "3.采购");
break;
case 4:
this.$set(item, "projectStagetext", "4.合同");
break;
case 5:
this.$set(item, "projectStagetext", "5.执行");
break;
case 6:
this.$set(item, "projectStagetext", "6.结决算及转资");
break;
}
});
this.total = res.data.total * 1;
this.dataPretreatment();
}
},
//表格颜色
tableRowClassName({ row, rowIndex }) {
if (rowIndex % 2 == 1) {
return "warning-row";
}
return "";
},
arraySpanMethod({ row, column, rowIndex, columnIndex }) {
if (columnIndex === 0) {
//第一列
const _row = this.mergingRows[rowIndex];
const _col = _row > 0 ? 1 : 0;
return {
rowspan: _row,
colspan: _col,
};
}
},
dataPretreatment() {
for (let i = 0; i < this.tableData.length; i++) {
// tabledata 表格数据源
if (i === 0) {
this.mergingRows.push(1);
this.mergingPos = 0;
} else {
if (
this.tableData[i].projectStage ===
this.tableData[i - 1].projectStage
) {
//哪些数据是要合并的 合并的条件是什么
this.mergingRows[this.mergingPos] += 1;
this.mergingRows.push(0);
} else {
this.mergingRows.push(1);
this.mergingPos = i;
}
}
}
},
cancel() {
this.$router.go(-1);
},
//确认更改
async confirm() {
this.$refs.formName.validate((valid) => {
if (!valid) {
console.log("error submit!!");
return false;
}
});
let params = {
projectId: this.clqparams.projectId,
batchId: this.clqparams.batchId,
...this.ruleForm,
};
console.log(params, "222");
let res = await wtxfproblemAssistedDistribution(params);
if (res.code == "200") {
this.$router.go(-1);
} else {
this.$message("下发失败");
}
},
},
};
</script>
<style lang="scss" scoped>
.main {
font-size: 14px;
position: relative;
height: 100%;
width: 100%;
box-sizing: border-box;
overflow-x: hidden;
.bottom {
width:calc(100% - 270px);
position:fixed;
bottom: -15px;
right: 0;
z-index: 100;
background-color: #f5f5f6;
line-height: 80px;
.textarea {
margin-top: 1px;
}
.Btn {
span {
display: inline-block;
width: 95px;
height: 30px;
line-height: 30px;
text-align: center;
border-radius: 5px;
margin-right: 32px;
background-color: #0d867f;
border: 1px solid #0d867f;
color: #fff;
}
span:first-of-type {
border: 1px solid grey;
color: #000;
background-color: #fff;
}
}
}
.JYtitle {
width: 100%;
height: 20px;
text-align: left;
font-size: 18px;
// margin-top: 1px;
padding-left: 10px;
line-height: 20px;
span {
display: inline-block;
width: 5px;
height: 30px;
background: #0d867f;
margin-right: 24px;
vertical-align: middle;
border-radius: 3px;
}
}
}
.close {
position: absolute;
right: 20px;
top: 20px;
.el-icon-circle-close {
font-size: 30px;
// background-color: #0d867f;
// color: #fff;
}
}
.title {
text-align: left;
background-color: #fff;
height: 40px;
line-height: 40px;
color: grey;
font-size: 15px;
}
.continer {
width: 100%;
height: 800px;
overflow-y: auto;
background-color: #f5f5f6;
padding: 10px;
padding-top: 0;
padding-bottom: 10px;
position: relative;
}
.tableTitle {
background: #0d867f;
color: #f5f5f6;
height: 40px;
line-height: 40px;
text-align: left;
padding-left: 20px;
font-weight: 600;
font-size: 15px;
}
/deep/ .el-table .warning-row {
background: #f0ffff;
color: #2785e6;
}
.eltable {
width: 100%;
box-sizing: border-box;
margin-bottom: 180px;
}
/deep/ .el-table .warning-row {
background: #f0ffff;
// color: #2785e6;
}
.elpagination {
text-align: right;
margin-right: 100px;
}
/deep/.el-table {
width: 100%;
.el-table__header-wrapper table,
.el-table__body-wrapper table {
width: 100% !important;
}
.el-table__body,
.el-table__footer,
.el-table__header {
table-layout: auto;
}
}
/deep/.el-table th.el-table__cell.is-leaf,
.el-table td.el-table__cell {
text-align: center;
}
/deep/ .el-icon-folder-delete {
margin-right: 10px;
}
/deep/.el-table th.el-table__cell.is-leaf,
.el-table td.el-table__cell {
text-align: center;
}
/deep/ .el-table__cell {
text-align: center;
}
.xqtitle {
width: 100%;
height: 20px;
text-align: left;
font-size: 18px;
padding: 20px 0;
border-bottom: 1px solid gainsboro;
margin-top: 1px;
span {
display: inline-block;
width: 5px;
height: 20px;
background: #0d867f;
margin-right: 14px;
vertical-align: middle;
}
}
.el-form {
display: flex;
width: 99%;
flex-wrap: wrap;
padding: 0 10px;
.fromItem {
width: 24%;
margin: 0 0.5%;
margin-bottom: 20px;
.el-input {
width: 226px;
}
.el-select {
width: 226px;
}
}
/deep/ .el-form-item__content {
text-align: left;
}
/deep/ .el-form-item__label {
// font-weight: bold;
color: #000;
width: 160px !important;
}
}
</style>
\ No newline at end of file
<!-- 辅助检查 -->
<template>
<div class="main">
<el-form
:model="ruleForm"
ref="formName"
label-width="100px"
class="demo-ruleForm"
>
<el-form-item label="批次年度:" prop="batchYear" class="fromItem">
<el-select v-model="ruleForm.batchYear" placeholder="请选择" clearable>
<el-option
v-for="(item, index) in yearsList"
:key="index"
:label="item+'年'"
:value="item"/>
</el-select>
</el-form-item>
<el-form-item label="后评估名称:" prop="batchName" class="fromItem">
<el-input v-model="ruleForm.batchName" placeholder="请输入" clearable></el-input>
</el-form-item>
<el-form-item label="后评估状态:" prop="postEvalState" class="fromItem">
<el-select v-model="ruleForm.postEvalState" placeholder="请选择" clearable>
<el-option label="确认需整改" value="5"></el-option>
<el-option label="确认无需整改" value="6"></el-option>
</el-select>
</el-form-item>
<el-form-item label="项目名称:" prop="projectName" class="fromItem">
<el-input
v-model="ruleForm.projectName"
placeholder="请输入"
clearable
></el-input>
</el-form-item>
<el-form-item label="项目ID:" prop="projectId" class="fromItem" >
<el-input v-model="ruleForm.projectId" placeholder="请输入" clearable></el-input>
</el-form-item>
<el-form-item class="button">
<el-button @click="submitForm()">
<img class="buttonIcon" src="../../assets/cx.png" />查询</el-button
>
<el-button @click="resetForm('ruleForm')">
<img class="buttonIcon" src="../../assets/cz.png" />重置</el-button
>
<el-button @click="submitNexts()"
><i class="el-icon-finished"></i>&nbsp;&nbsp;确认问题清单</el-button
>
</el-form-item>
</el-form>
<div class="setscroll">
<el-table
@selection-change="handleSelectionChange"
ref="multipleTable"
:data="tableData"
tooltip-effect="dark"
style="width: 100%"
header-cell-class-name="custom-th-background"
class="eltable"
:row-class-name="tableRowClassName"
border
>
<el-table-column label="序号" width="55" type="index"> </el-table-column>
<el-table-column type="selection"> </el-table-column>
<el-table-column label="批次年度" prop="batchYear"> <template slot-scope="scope">
{{scope.row.batchYear}}
</template></el-table-column>
<el-table-column prop="batchName" label="后评估批次名称">
</el-table-column>
<el-table-column prop="projectName" label="评估项目名称" show-overflow-tooltip>
</el-table-column>
<el-table-column prop="projectCategory" label="建设形式">
</el-table-column>
<el-table-column prop="projectStatus" label="项目建设阶段">
</el-table-column>
<!-- <el-table-column prop="createTime" label="历史审核状态">
</el-table-column> -->
<el-table-column prop="expertName" label="评审专家名单">
</el-table-column>
<el-table-column prop="postEvalState" label="检查评估状态"> </el-table-column>
<el-table-column prop="planReviewDate" label="评估日期"> </el-table-column>
</el-table>
</div>
<el-pagination
@size-change="handleSizeChange"
@current-change="handleCurrentChange"
:current-page="currentPage"
:page-sizes="[10, 15, 20, 50]"
:page-size="100"
layout="total, sizes, prev, pager, next, jumper"
:total="total"
class="elpagination"
>
</el-pagination>
<el-dialog
title="国网辽宁电力-桌面终端管理系统合规性检查评估"
:visible.sync="dialog"
width="90%"
:modal-append-to-body="false"
:append-to-body="false"
@close="closeDialog"
>
<div class="dialog">
<p class="xqtitle"><span></span>问题清单</p>
<el-form
:model="ruleFormdialog"
ref="ruleFormdialog"
label-width="100px"
class="demo-ruleForm"
>
<el-form-item label="批次年度:" prop="batchYear" class="fromItem">
<el-input v-model="ruleFormdialog.batchYear" disabled></el-input>
</el-form-item>
<el-form-item label="后评估名称:" prop="batchName" class="fromItem">
<el-input v-model="ruleFormdialog.batchName" disabled></el-input>
</el-form-item>
<el-form-item
label="计划评审日期:"
prop="planReviewDate"
class="fromItem"
>
<el-input
v-model="ruleFormdialog.planReviewDate"
disabled
></el-input>
</el-form-item>
<el-form-item label="后评估专家:" prop="fullName" class="fromItem">
<el-input v-model="ruleFormdialog.fullName" disabled></el-input>
</el-form-item>
<el-form-item label="工作组织情况:" class="textarea">
<el-input type="textarea" v-model="ruleFormdialog.desc"></el-input>
</el-form-item>
</el-form>
<p class="xqtitle"><span></span>本项目材料清单</p>
<el-table
@selection-change="handleSelectionChange"
ref="multipleTable"
:data="tableDataQD"
tooltip-effect="dark"
style="width: 100%"
header-cell-class-name="custom-th-background"
class="eltable"
:row-class-name="tableRowClassName"
border
>
<el-table-column label="序号" width="55" type="index">
</el-table-column>
<el-table-column label="材料类别" prop="batchYear"><template slot-scope="scope">
{{scope.row.batchYear}}
</template> </el-table-column>
<el-table-column prop="batchName" label="资料类型"> </el-table-column>
<el-table-column prop="projectName" label="资料名称">
</el-table-column>
<el-table-column prop="projectCategory" label="操作">
</el-table-column>
</el-table>
<el-pagination
@size-change="handleSizeChangetjcl"
@current-change="handleCurrentChangetjcl"
:current-page="currentPagetjcl"
:page-sizes="[10, 15, 20, 50]"
:page-size="100"
layout="total, sizes, prev, pager, next, jumper"
:total="total"
class="elpagination"
>
</el-pagination>
<p class="Btn" v-if="showButton">
<span @click="cancel()">取消</span
><span @click="save('add')">确认上传</span>
</p>
</div>
</el-dialog>
</div>
</template>
<script>
import {
qrbgSelQuesInfo,
clqdevaluationMaterials,
qrscevaluationMaterials,
} from "@/api/index";
import { generateYearOptions } from "@/utils/cache";
export default {
data() {
return {
yearsList:generateYearOptions(),
showButton: true,
ruleForm: {
batchYear: "",
batchName: "",
postEvalState: "",
projectName: "",
projectId: "",
},
ruleFormdialog: {
batchYear: "",
batchName: "",
planReviewDate: "",
fullName: "",
},
rules: {
batchYear: [
{ required: true, message: "请选择批次年度", trigger: "change" },
],
batchName: [
{
required: true,
message: "请选择后评估批次名称",
trigger: "change",
},
],
},
tableData: [],
tableDataQD: [], //清单列表
checkedList: [],
currentPage: 1,
pageSize: 10,
currentPagetjcl: 1,
pageSizetjcl: 10,
total: 0,
dialog: false,
};
},
mounted() {
this.submitForm();
},
methods: {
async submitForm() {
let params = {
current: this.currentPage,
pageSize: this.pageSize,
};
Object.assign(params, this.ruleForm);
let res =await qrbgSelQuesInfo(params);
if (res.code == "200") {
this.tableData = res.data.records;
this.tableData.forEach(item=>{
if (item.postEvalState=='6'){
this.$set( item,'postEvalState','确认无需整改')
}else if(item.postEvalState=='5'){
this.$set( item,'postEvalState','确认需整改')
}else{
this.$set( item,'postEvalState','待确认')
}
})
this.total = res.data.total * 1;
}
},
resetForm() {
this.$refs.formName.resetFields();
this.currentPage = 1;
this.pageSize = 10;
this.submitForm();
},
//提交评估材料
async submitNexts() {
if (this.checkedList.length != 1) {
this.$message("请选择");
return;
}
if(this.checkedList[0].postEvalState!='待确认'){
this.$message("该项目已确认");
return;
}
let params = {
current: this.currentPage,
pageSize: this.pageSize,
projectId:this.checkedList[0].projectId,
batchId:this.checkedList[0].batchId
};
this.$router.push({
path: "/mainLayout/qrCompliance",
query:{
"qrparams":JSON.stringify(params)
}
});
},
//表格颜色
tableRowClassName({ row, rowIndex }) {
if (rowIndex % 2 == 1) {
return "warning-row";
}
return "";
},
//主列表选中行信息
handleSelectionChange(selection) {
if (Array.isArray(selection) && selection.length > 1) {
this.$refs.multipleTable.toggleRowSelection(selection[0], false);
this.$refs.multipleTable.toggleRowSelection(selection[1], true);
}
this.checkedList = this.$refs.multipleTable.selection;
this.ruleFormdialog = this.checkedList[0];
console.log(this.checkedList, "2222");
},
handleSizeChange(val) {
console.log(`每页 ${val} 条`);
this.pageSize = val;
},
handleCurrentChange(val) {
console.log(`当前页: ${val}`);
this.currentPage = val;
this.submitForm()
},
handleSizeChangetjcl(val) {
console.log(`每页 ${val} 条`);
this.pageSizetjcl = val;
this.submitForm()
},
handleCurrentChangetjcl(val) {
console.log(`当前页: ${val}`);
this.currentPagetjcl = val;
},
cancel() {
this.dialog = false;
// this.dialogXQ = false;
},
closeDialog() {
console.log("guanbi");
this.showButton = true;
},
async save(type) {
this.dialog = false;
// this.dialogXQ = false;
if (type == "add") {
let params = {};
let res = await qrscevaluationMaterials(params);
}
},
},
};
</script>
<style scoped lang="scss">
.main {
font-size: 14px;
position: relative;
height: 100%;
width: 100%;
box-sizing: border-box;
overflow-x: hidden;
}
.el-form {
display: flex;
width: 100%;
flex-wrap: wrap;
border-top: 2px solid #23c6c8;
border-left: 1px solid #dee5e7;
border-right: 1px solid #dee5e7;
border-bottom: 1px solid #dee5e7;
padding: 20px 10px;
margin-bottom: 20px;
.fromItem {
width: 24%;
margin: 0 0.5%;
margin-bottom: 20px;
.el-input {
width: 226px;
}
.el-select {
width: 226px;
}
}
/deep/ .el-form-item__content {
text-align: left;
display: inline-block;
margin-left: 10px !important;
}
/deep/ .el-form-item__label {
font-weight: bold;
color: #000;
width: 160px !important;
}
.button {
display: inline-block;
width: 100%;
text-align: left;
/deep/ .el-form-item__content {
margin-left: 20px !important;
text-align: left;
img {
width: 14px;
height: 14px;
margin-right: 15px;
vertical-align: middle;
}
}
.el-button {
background-color: #23c6c8;
border-color: #23c6c8;
color: #fff;
}
}
}
.eltable {
widows: 100%;
box-sizing: border-box;
}
/deep/ .el-table .warning-row {
background: #f0ffff;
// color: #2785e6;
}
.elpagination {
text-align: right;
margin-right: 100px;
}
/deep/ .el-dialog {
border-radius: 10px;
}
/deep/ .el-dialog__wrapper {
position: absolute;
}
/deep/ .v-modal {
position: absolute;
}
/deep/ .el-dialog__header {
background-color: #0d867f;
padding-bottom: 20px;
text-align: left;
border-radius: 10px 10px 0 0;
.el-dialog__title {
color: #fff;
}
}
/deep/ .el-table__header th {
background-color: #eeeeee;
font-weight: bold;
.cell {
color: #333;
}
}
/deep/.el-table {
width: 100%;
.el-table__header-wrapper table,
.el-table__body-wrapper table {
width: 100% !important;
}
.el-table__body,
.el-table__footer,
.el-table__header {
table-layout: auto;
}
}
.dialog {
.xqtitle {
text-align: left;
font-size: 18px;
span {
display: inline-block;
width: 5px;
height: 20px;
background: #0d867f;
margin-right: 14px;
vertical-align: middle;
}
}
}
.textarea {
width: 100%;
.el-textarea {
width: 60%;
}
}
.Btn {
width: 200px;
margin: 0 auto;
span {
display: inline-block;
width: 80px;
height: 25px;
line-height: 25px;
text-align: center;
border-radius: 4px;
margin-right: 12px;
}
span:first-of-type {
border: 1px solid #000;
}
span:last-of-type {
background-color: #0d867f;
border: 1px solid #0d867f;
color: #fff;
}
}
/deep/ .el-dialog__headerbtn .el-dialog__close {
color: #fff;
}
/deep/.el-table th.el-table__cell.is-leaf,
.el-table td.el-table__cell {
text-align: center;
}
/deep/ .el-table__cell {
text-align: center;
}
.setscroll {
width: 100%;
height: 650px;
position: relative;
overflow: auto;
}
</style>
\ No newline at end of file
<!-- 辅助核验 -->
<template>
<div class="main">
<el-form
:model="ruleForm"
label-width="100px"
class="demo-ruleForm"
ref="formName"
>
<el-form-item label="批次年度:" prop="batchYear" class="fromItem">
<el-select v-model="ruleForm.batchYear" placeholder="请选择" clearable>
<el-option
v-for="(item, index) in yearsList"
:key="index"
:label="item + '年'"
:value="item"
/>
</el-select>
</el-form-item>
<el-form-item label="后评估批次名称:" prop="batchName" class="fromItem">
<el-input
v-model="ruleForm.batchName"
placeholder="请输入"
clearable
></el-input>
</el-form-item>
<el-form-item label="后评估状态:" prop="postEvalState" class="fromItem">
<el-select
v-model="ruleForm.postEvalState"
placeholder="请选择"
clearable
>
<el-option label="已确认" value="3"></el-option>
<el-option label="未确认" value="1"></el-option>
<el-option label="已撤回" value="4"></el-option>
</el-select>
</el-form-item>
<el-form-item class="button">
<el-button @click="submitForm()">
<img class="buttonIcon" src="../../assets/cx.png" />查询</el-button
>
<el-button @click="resetForm('ruleForm')">
<img class="buttonIcon" src="../../assets/cz.png" />重置</el-button
>
<el-button @click="detailsForm('ruleForm')">
<img class="buttonIcon" src="../../assets/ck.png" />详情</el-button
>
<el-button @click="configs()"
><i class="el-icon-position"></i> 确认项目评估
</el-button>
<el-button @click="withdraw()">
<i class="el-icon-folder-delete"></i>撤回
</el-button>
</el-form-item>
</el-form>
<div class="setscroll">
<el-table
@selection-change="handleSelectionChange"
ref="multipleTable"
:data="tableData"
tooltip-effect="dark"
style="width: 100%"
header-cell-class-name="custom-th-background"
class="eltable"
:row-class-name="tableRowClassName"
border
>
<el-table-column label="序号" width="55" type="index">
</el-table-column>
<el-table-column type="selection"> </el-table-column>
<el-table-column label="批次年度" prop="batchYear">
<template slot-scope="scope">
{{ scope.row.batchYear }}
</template></el-table-column
>
<el-table-column prop="batchName" label="后评估批次名称">
</el-table-column>
<el-table-column
prop="planReviewDate"
label="计划评估日期"
width="auto"
>
</el-table-column>
<el-table-column prop="expertName" label="评审专家" width="auto">
</el-table-column>
<el-table-column
prop="postEvalStateText"
label="批次确认状态"
width="auto"
>
</el-table-column>
<el-table-column prop="batchName" label="评估项目" width="auto">
</el-table-column>
<!-- <el-table-column prop="prjsOfExpert" label="已选择数量" width="auto">
</el-table-column> -->
</el-table>
</div>
<el-pagination
@size-change="handleSizeChange"
@current-change="handleCurrentChange"
:current-page="currentPage"
:page-sizes="[10, 15, 20, 50]"
:page-size="100"
layout="total, sizes, prev, pager, next, jumper"
:total="total"
class="elpagination"
>
</el-pagination>
<!-- 详情弹窗 -->
<el-dialog
title="提交评估材料"
:visible.sync="dialogXQ"
width="90%"
:modal-append-to-body="false"
:append-to-body="false"
close="closeXQ"
>
<div class="dialog">
<el-form
ref="formNames"
:model="ruleFormdialogBJ"
label-width="100px"
class="demo-ruleForm"
>
<el-form-item label="批次年度:" prop="batchYear" class="fromItem">
<el-input v-model="ruleFormdialogBJ.batchYear" disabled></el-input>
</el-form-item>
<el-form-item
label="后评估批次名称:"
prop="batchName"
class="fromItem"
>
<el-input v-model="ruleFormdialogBJ.batchName" disabled></el-input>
</el-form-item>
<el-form-item
label="计划评审日期:"
prop="planReviewDate"
class="fromItem"
>
<el-input
v-model="ruleFormdialogBJ.planReviewDate"
disabled
></el-input>
</el-form-item>
<!-- <el-form-item label="每位专家可评估项目数:" prop="prjsOfExpert" class="fromItem">
<el-input
v-model="ruleFormdialogBJ.prjsOfExpert" disabled
></el-input>
</el-form-item> -->
<el-form-item label="工作组织情况:" class="textarea">
<el-input
type="textarea"
v-model="ruleFormdialogBJ.description"
disabled
></el-input>
</el-form-item>
</el-form>
<p class="zjBtn">待评估项目</p>
<div class="setscrolldialog">
<el-table
@selection-change="handleSelectionChange"
:data="addtableData"
tooltip-effect="dark"
style="width: 100%"
header-cell-class-name="custom-th-background"
class="eltable"
:row-class-name="tableRowClassName"
border
>
<el-table-column label="序号" width="55" type="index">
</el-table-column>
<el-table-column label="项目编码" width="auto" prop="projectId">
</el-table-column>
<el-table-column
prop="projectYear"
label="项目下达年度"
width="auto"
>
<template slot-scope="scope">
{{ scope.row.projectYear }}
</template>
</el-table-column>
<el-table-column
prop="projectName"
label="项目名称"
width="auto"
show-overflow-tooltip
>
</el-table-column>
<el-table-column
prop="projectCategory"
label="建设形式"
width="auto"
>
</el-table-column>
<el-table-column
prop="projectStatus"
label="项目建设阶段"
width="auto"
>
</el-table-column>
<!-- <el-table-column prop="哪个字段" label="历史核查状态" width="auto">
</el-table-column> -->
<el-table-column prop="department" label="部门" width="auto">
</el-table-column>
</el-table>
</div>
<el-pagination
@size-change="handleSizeChangeAdd"
@current-change="handleCurrentChangeAdd"
:current-page="addcurrentPage"
:page-sizes="[5, 10, 20, 50]"
:page-size="100"
layout="total, sizes, prev, pager, next, jumper"
:total="addtotal"
class="elpagination"
>
</el-pagination>
</div>
</el-dialog>
<!-- 确认评估项目 -->
<el-dialog
title="确认待评估项目"
:visible.sync="dialogAdd"
width="90%"
:modal-append-to-body="false"
:append-to-body="false"
>
<div class="dialog">
<el-form
ref="formNames"
:model="ruleFormdialogBJ"
label-width="150px"
class="demo-ruleForm"
>
<el-form-item label="批次年度:" prop="batchYear" class="fromItem">
<el-input v-model="ruleFormdialogBJ.batchYear" disabled></el-input>
</el-form-item>
<el-form-item
label="后评估批次名称:"
prop="batchName"
class="fromItem"
>
<el-input v-model="ruleFormdialogBJ.batchName" disabled></el-input>
</el-form-item>
<el-form-item
label="计划评审日期:"
prop="planReviewDate"
class="fromItem"
>
<el-input
v-model="ruleFormdialogBJ.planReviewDate"
disabled
></el-input>
</el-form-item>
<!-- <el-form-item label="每位专家可评估项目数:" prop="prjsOfExpert" class="fromItem">
<el-select
v-model="ruleFormdialogBJ.prjsOfExpert"
placeholder="请选择"
clearable
>
<el-option label="100" value="100"></el-option>
<el-option label="200" value="200"></el-option>
<el-option label="300" value="300"></el-option>
<el-option label="不限" value="不限"></el-option>
</el-select>
</el-form-item> -->
<el-form-item label="工作组织情况:" class="textarea">
<el-input
type="textarea"
v-model="ruleFormdialogBJ.description"
disabled
></el-input>
</el-form-item>
</el-form>
<p class="zjBtn">
待评估项目 <span @click="xzExperts()">手动选择待评估项目</span>
</p>
<div class="setscrolldialog">
<el-table
@selection-change="handleSelectionChange"
:data="addtableData"
tooltip-effect="dark"
style="width: 100%"
header-cell-class-name="custom-th-background"
class="eltable"
:row-class-name="tableRowClassName"
border
>
<el-table-column label="序号" width="55" type="index">
</el-table-column>
<el-table-column label="项目编码" width="auto" prop="projectId">
</el-table-column>
<el-table-column
prop="projectYear"
label="项目下达年度"
width="auto"
>
<template slot-scope="scope">
{{ scope.row.projectYear }}
</template></el-table-column
>
<el-table-column
prop="projectName"
label="项目名称"
width="auto"
show-overflow-tooltip
>
</el-table-column>
<el-table-column
prop="projectCategory"
label="建设形式"
width="auto"
>
</el-table-column>
<el-table-column
prop="projectStatus"
label="项目建设阶段"
width="auto"
>
</el-table-column>
<!-- <el-table-column prop="哪个字段" label="历史核查状态" width="auto">
</el-table-column> -->
<el-table-column prop="department" label="部门" width="auto">
</el-table-column>
<el-table-column label="操作" width="130">
<template slot-scope="scope">
<el-button
@click="handleClick(scope.row, scope.$index, addtableData)"
type="text"
size="small"
>删除</el-button
>
</template>
</el-table-column>
</el-table>
</div>
<el-pagination
@size-change="handleSizeChangeAdd"
@current-change="handleCurrentChangeAdd"
:current-page="addcurrentPage"
:page-sizes="[5, 10, 20, 50]"
:page-size="100"
layout="total, sizes, prev, pager, next, jumper"
:total="addtotal"
class="elpagination"
>
</el-pagination>
<p class="midBtn">
<span @click="cancelXZ()">取消</span
><span @click="saveXZ()">确认发布</span>
</p>
</div>
</el-dialog>
<!-- 选择评估项目 -->
<el-dialog
title="选择待评估项目"
:visible.sync="dialogAddzj"
width="90%"
:modal-append-to-body="false"
:append-to-body="false"
>
<div class="adzjdialog">
<el-form :model="ruleFormZJ" label-width="100px" class="demo-ruleForm">
<el-form-item
label="项目下达年度:"
prop="projectYear"
class="fromItem"
>
<el-select
v-model="ruleFormZJ.projectYear"
placeholder="请选择"
clearable
>
<el-option
v-for="(item, index) in yearsList"
:key="index"
:label="item + '年'"
:value="item"
/>
</el-select>
</el-form-item>
<el-form-item label="项目编码:" prop="projectId" class="fromItem">
<el-input
v-model="ruleFormZJ.projectId"
placeholder="请输入"
clearable
></el-input>
</el-form-item>
<el-form-item label="项目名称:" prop="projectName" class="fromItem">
<el-input
v-model="ruleFormZJ.projectName"
placeholder="请输入"
clearable
></el-input>
</el-form-item>
<el-form-item label="项目内容:" prop="projectInfo" class="fromItem">
<el-input
v-model="ruleFormZJ.projectInfo"
placeholder="请输入"
clearable
></el-input>
</el-form-item>
<!-- <el-form-item label="省公司计划文件号:" prop="字段待确认" class="fromItem">
<el-input
v-model="ruleFormZJ.fullName"
placeholder="请输入"
></el-input>
</el-form-item>
<el-form-item label="信通公司计划文件号:" prop="字段待确认" class="fromItem">
<el-input
v-model="ruleFormZJ.fullName"
placeholder="请输入"
></el-input>
</el-form-item> -->
<!-- <el-form-item
label="建设形式:"
prop="projectCategory"
class="fromItem"
>
<el-select
v-model="ruleFormZJ.projectCategory"
placeholder="请选择"
clearable
>
<el-option label="2024年" value="2024"></el-option>
<el-option label="2023年" value="2023"></el-option>
<el-option label="2022年" value="2022"></el-option>
<el-option label="2021年" value="2021"></el-option>
</el-select>
</el-form-item> -->
<!-- <el-form-item label="部门:" prop="department" class="fromItem">
<el-select
v-model="ruleFormZJ.department"
placeholder="请选择"
clearable
>
<el-option label="2024年" value="2024"></el-option>
<el-option label="2023年" value="2023"></el-option>
<el-option label="2022年" value="2022"></el-option>
<el-option label="2021年" value="2021"></el-option>
</el-select>
</el-form-item> -->
<el-form-item class="cxItem">
<span class="zjquery" @click="xzExperts()"> 查询 </span>
</el-form-item>
</el-form>
<div class="setscrolldialogx">
<el-table
@selection-change="handleSelectionChangeZJ"
ref="multipleTableZJ"
:data="zjtableData"
tooltip-effect="dark"
style="width: 100%"
header-cell-class-name="custom-th-background"
class="eltable"
:row-class-name="tableRowClassName"
border
>
<el-table-column type="selection"> </el-table-column>
<el-table-column label="序号" width="55" type="index">
</el-table-column>
<el-table-column label="项目编码" width="200" prop="projectId">
</el-table-column>
<el-table-column
prop="projectYear"
label="项目下达年度"
width="200"
>
<template slot-scope="scope">
{{ scope.row.projectYear }}
</template>
</el-table-column>
<el-table-column
prop="projectName"
label="项目名称"
width="auto"
show-overflow-tooltip
>
</el-table-column>
<el-table-column
prop="projectCategory"
label="建设形式"
width="200"
>
</el-table-column>
<el-table-column
prop="projectStatus"
label="项目建设阶段"
width="200"
>
</el-table-column>
<!-- <el-table-column prop="字段待确认" label="历史核查状态" width="200">
</el-table-column>
<el-table-column prop="字段待确认" label="是否处于正在执行批次" width="200">
</el-table-column> -->
<!-- <el-table-column prop="字段待确认" label="计划文号" width="300">
<el-table-column prop="expertLevel" label="省公司" width="auto">
</el-table-column>
<el-table-column prop="expertLevel" label="信通公司" width="auto">
</el-table-column>
</el-table-column> -->
<el-table-column label="总投资计划(万元)" width="300">
<el-table-column
prop=" costAmountTotal"
label="成本金"
width="auto"
>
</el-table-column>
<el-table-column
prop="capitalAmountTotal"
label="资本金"
width="auto"
>
</el-table-column>
</el-table-column>
<el-table-column label="当年投资计划(万元)" width="300">
<el-table-column
prop="costAmountCurrentMfdel"
label="成本金"
width="auto"
>
</el-table-column>
<el-table-column
prop="capitalAmountCurrentMfdel"
label="资本金"
width="200"
>
</el-table-column>
</el-table-column>
<el-table-column prop="department" label="部门" width="200">
</el-table-column>
<el-table-column prop="department" label="承建单位" width="200">
</el-table-column>
<el-table-column prop="personCharge" label="项目经理" width="200">
</el-table-column>
<el-table-column
prop="projectInfo"
label="项目内容"
show-overflow-tooltip
>
</el-table-column>
<el-table-column prop="inputuser" label="创建人" width="200">
</el-table-column>
<el-table-column prop="inputtime" label="创建时间" width="200">
</el-table-column>
</el-table>
</div>
<el-pagination
@size-change="handleSizeChangeZJ"
@current-change="handleCurrentChangeZJ"
:current-page="currentZJ"
:page-sizes="[5, 10, 20, 50]"
:page-size="100"
layout="total, sizes, prev, pager, next, jumper"
:total="zjtotal"
class="elpagination"
>
</el-pagination>
<p class="midBtn">
<span @click="cancelZJ()">取消</span
><span @click="saveZJ()">选择</span>
</p>
</div>
</el-dialog>
</div>
</template>
<script>
import {
projectInfo,
fbProjectInfo,
delProjectInfo,
joinProjectInfo,
getProjectInfo,
chProjectInfo,
} from "@/api/index";
import { generateYearOptions } from "@/utils/cache";
export default {
data() {
return {
yearsList: generateYearOptions(),
oldid: "",
ruleForm: {
batchYear: "",
batchName: "",
postEvalState: "",
},
ruleFormdialog: {
batchYear: "",
batchName: "",
planReviewDate: "",
fullName: "",
},
ruleFormZJ: {
fields: "",
expertState: "",
fullName: "",
},
ruleFormdialogAdd: {
batchYear: "",
batchName: "",
planReviewDate: "",
description: "",
remark: "",
},
ruleFormdialogBJ: {
batchYear: "",
batchName: "",
planReviewDate: "",
prjsOfExpert: "",
description: "",
},
// rules: {
// prjsOfExpert: [
// {
// required: true,
// message: "请选择每位专家可评估项目数",
// trigger: "change",
// },
// ]
// },
tableData: [],
tableDataQD: [], //清单列表
checkedList: [],
currentPage: 1,
currentPagetjcl: 1,
pageSizetjcl: 10,
total: 0,
dialogXQ: false,
dialogAdd: false,
dialogAddzj: false,
pageSize: 10,
current: 1,
pageSizeZJ: 5,
currentZJ: 1,
addtotal: 0,
currentAdd: 1,
pageSizeAdd: 5,
currentedit: 1,
pageSizeedit: 5,
xfParam: "",
dialogedit: false,
expertIdList: [],
totalBJ: 0,
addZJList: [],
expertState: "",
fields: "",
zjfullName: "",
zjtotal: 0,
zjtableData: [],
addcurrentPage: 1,
addtableData: [],
message: {},
};
},
watch: {
// 监听路由对象中的参数部分
"$route.params": {
immediate: true,
handler(newParams, oldParams) {
//现在配合demo路由变化掉了两次接口等线上去掉这块时候mounted要调用
this.submitForm();
},
},
},
mounted() {
console.log("author");
// this.submitForm();
},
methods: {
async submitForm() {
console.log("来了几次");
let params = {
current: this.currentPage,
pageSize: this.pageSize,
};
Object.assign(params, this.ruleForm);
console.log(params);
let res = await projectInfo(params);
if (res.code == "200") {
this.tableData = res.data.records;
this.tableData.forEach((item) => {
if (item.postEvalState == "3") {
this.$set(item, "postEvalStateText", "已确认");
} else if (item.postEvalState == "4") {
this.$set(item, "postEvalStateText", "已撤回");
} else {
this.$set(item, "postEvalStateText", "未确认");
}
});
this.total = res.data.total * 1;
}
},
resetForm() {
this.$refs.formName.resetFields();
this.currentPage = 1;
this.pageSize = 10;
this.submitForm();
},
//详情
async detailsForm() {
if (this.checkedList.length != 1) {
this.$message("请选择");
return;
}
console.log("222", this.checkedList);
this.dialogXQ = true;
this.ruleFormdialogBJ = this.checkedList[0];
let params = {
current: this.addcurrentPage,
pageSize: this.pageSizeAdd,
batchId: this.checkedList[0].batchId,
};
Object.assign(params, this.ruleFormdialogAdd);
this.addtableData = [];
let res = await joinProjectInfo(params);
if (res.code == "200") {
this.addtableData = res.data.records;
this.addtotal = res.data.total * 1;
}
},
//确认评估项目
async configs() {
// 只能选中状态待评估的
if (this.checkedList.length != 1) {
this.$message("请选择");
return;
}
if (this.checkedList[0].postEvalStateText == "已确认") {
this.$message("该项目已确认");
return;
}
this.ruleFormdialogBJ = this.checkedList[0];
this.dialogAdd = true;
this.addtableData = [];
let params = {
current: this.addcurrentPage,
pageSize: this.pageSizeAdd,
batchId: this.checkedList[0].batchId,
};
Object.assign(params, this.ruleFormdialogAdd);
let res = await joinProjectInfo(params);
if (res.code == "200") {
this.addtableData = res.data.records;
this.addtotal = res.data.total * 1;
this.oldid = "";
if (this.addtableData.length > 0) {
this.addtableData.forEach((item) => {
this.oldid = this.oldid.concat(item.projectId + ",");
});
}
}
},
closeXQ() {
console.log("关闭详情");
},
//表格颜色
tableRowClassName({ row, rowIndex }) {
if (rowIndex % 2 == 1) {
return "warning-row";
}
return "";
},
//主列表选中行信息
handleSelectionChange(selection) {
if (Array.isArray(selection) && selection.length > 1) {
this.$refs.multipleTable.toggleRowSelection(selection[0], false);
this.$refs.multipleTable.toggleRowSelection(selection[1], true);
}
this.checkedList = this.$refs.multipleTable.selection;
this.ruleFormdialog = this.checkedList[0];
console.log(this.checkedList, "2222");
},
handleSizeChange(val) {
console.log(`每页 ${val} 条`);
this.pageSize = val;
this.submitForm();
},
handleCurrentChange(val) {
console.log(`当前页: ${val}`);
this.currentPage = val;
this.submitForm();
},
handleSizeChangeZJ(val) {
console.log(`每页 ${val} 条`);
this.pageSizeZJ = val;
this.xzExperts();
},
handleCurrentChangeZJ(val) {
console.log(`当前页: ${val}`);
this.currentZJ = val;
this.xzExperts();
},
handleSizeChangeAdd(val) {
this.pageSizeAdd = val;
this.detailsForm();
},
handleCurrentChangeAdd(val) {
this.currentAdd = val;
this.detailsForm();
},
//选择项目
saveZJ() {
if (this.addZJList.length < 1) {
this.$message("请选择项目");
return;
}
console.log(this.addtableData, this.addZJList, "55555");
this.addtableData = [...this.addtableData, ...this.addZJList];
this.addtableData = this.addtableData.filter((obj, index, self) => {
return index == self.findIndex((t) => t.projectId == obj.projectId);
});
console.log(this.addtableData, "addtableData");
this.addtotal = this.addtableData.length;
this.dialogAddzj = false;
},
cancelZJ() {
this.dialogAddzj = false;
},
async xzExperts() {
this.dialogAddzj = true;
let params = {
current: this.currentZJ,
pageSize: this.pageSizeZJ,
prjStr: this.oldid,
};
Object.assign(params, this.ruleFormZJ);
let res = await getProjectInfo(params);
console.log(res.data.records, "res.data.recordsres.data.records");
this.zjtableData = res.data.records;
this.zjtotal = res.data.total * 1;
console.log(res, "xxx");
},
saveXZ() {
console.log("保存验证", this.$refs);
this.$refs.formNames.validate((valid) => {
if (!valid) {
console.log("error submit!!");
return false;
} else {
if (this.addtableData.length < 1) {
this.$message("请选择待评估项目");
}
console.log(this.addZJList, "this.addZJList");
// 确认发布入参
let expertIdList = "";
if (this.addZJList.length > 0) {
this.addZJList.forEach((item) => {
expertIdList = expertIdList.concat(item.projectId + ",");
});
}
let params = {
expertStr: expertIdList,
};
params.batchId = this.ruleFormdialogBJ.batchId;
params.prjsOfExpert = this.ruleFormdialogBJ.prjsOfExpert;
console.log(params, "222");
fbProjectInfo(params).then((res) => {
this.dialogAdd = false;
this.expertIdList = expertIdList;
this.resetForm();
});
}
});
// this.$emit("listenToChildEvent", "reset");
// }
},
cancelXZ() {
this.dialogAdd = false;
},
//选中的专家
handleSelectionChangeZJ() {
this.addZJList = this.$refs.multipleTableZJ.selection;
console.log(this.$refs.multipleTableZJ.selection, "2222");
},
//点击删除
async handleClick(row, index, rows) {
console.log("删除", row);
rows.splice(index, 1);
let params = {
projectId: row.projectId,
batchId: this.checkedList[0].batchId,
};
let res = await delProjectInfo(params);
// this.configs()
},
//点击撤回
async withdraw() {
if (this.checkedList.length != 1) {
this.$message("请选择");
return;
}
if (this.checkedList[0].postEvalStateText == "已撤回") {
this.$message("该项目已撤回");
return;
}
if (this.checkedList[0].postEvalStateText == "未确认") {
this.$message("该项目还未确认");
return;
}
let res = await chProjectInfo({ batchId: this.checkedList[0].batchId });
if ((res.code = "200")) {
this.resetForm();
}
},
},
};
</script>
<style scoped lang="scss">
.main {
font-size: 14px;
position: relative;
height: 100%;
width: 100%;
box-sizing: border-box;
overflow-x: hidden;
}
.el-form {
display: flex;
width: 99%;
flex-wrap: wrap;
border-top: 2px solid #23c6c8;
border-left: 1px solid #dee5e7;
border-right: 1px solid #dee5e7;
border-bottom: 1px solid #dee5e7;
padding: 20px 10px;
margin: 0;
.fromItem {
min-width: 24%;
margin: 0 0.5%;
margin-bottom: 20px;
.el-input {
width: 226px;
}
.el-select {
width: 226px;
}
}
/deep/ .el-form-item__content {
text-align: left;
display: inline-block;
margin-left: 10px !important;
}
/deep/ .el-form-item__label {
font-weight: bold;
color: #000;
width: 160px !important;
}
.button {
display: inline-block;
width: 100%;
text-align: left;
/deep/ .el-form-item__content {
margin-left: 20px !important;
text-align: left;
img {
width: 14px;
height: 14px;
margin-right: 15px;
vertical-align: middle;
}
}
.el-button {
background-color: #23c6c8;
border-color: #23c6c8;
color: #fff;
}
}
}
.eltable {
box-sizing: border-box;
text-align: center;
height: 100%;
overflow-y: auto;
}
/deep/ .el-table .warning-row {
background: #f0ffff;
// color: #2785e6;
}
.elpagination {
text-align: right;
margin-right: 100px;
}
/deep/ .el-dialog {
border-radius: 10px;
margin-top: 3vh !important;
margin-left: 3vw !important;
}
/deep/.el-table th.el-table__cell.is-leaf,
.el-table td.el-table__cell {
text-align: center;
}
/deep/ .el-dialog__wrapper {
position: absolute;
}
/deep/ .v-modal {
position: absolute;
}
/deep/ .el-dialog__header {
background-color: #0d867f;
padding-bottom: 20px;
text-align: left;
border-radius: 10px 10px 0 0;
.el-dialog__title {
color: #fff;
}
}
/deep/ .el-table__header th {
background-color: #eeeeee;
font-weight: bold;
.cell {
color: #333;
}
}
/deep/.el-table {
// width: 100%;
.el-table__header-wrapper table,
.el-table__body-wrapper table {
// width: 100% !important;
}
.el-table__body,
.el-table__footer,
.el-table__header {
table-layout: auto;
}
}
.dialog {
height: 680px;
.xqtitle {
text-align: left;
font-size: 18px;
span {
display: inline-block;
width: 5px;
height: 20px;
background: #0d867f;
margin-right: 14px;
vertical-align: middle;
}
}
}
.textarea {
width: 100%;
/deep/ .el-form-item__content {
display: flex;
}
.el-textarea {
width: 60%;
}
}
.Btn {
width: 200px;
margin: 0 auto;
span {
display: inline-block;
width: 80px;
height: 25px;
line-height: 25px;
text-align: center;
border-radius: 4px;
margin-right: 12px;
}
span:first-of-type {
border: 1px solid #000;
}
span:last-of-type {
background-color: #0d867f;
border: 1px solid #0d867f;
color: #fff;
}
}
/deep/ .el-dialog__headerbtn .el-dialog__close {
color: #fff;
}
.zjBtn {
width: 400px;
text-align: left;
vertical-align: middle;
span {
display: inline-block;
width: 140px;
height: 25px;
line-height: 25px;
text-align: center;
border-radius: 5px;
vertical-align: middle;
}
span:last-of-type {
background-color: #4ca6a7;
color: #fff;
padding: 5px 10px;
margin-left: 10px;
}
}
/deep/ .el-icon-position {
margin-right: 10px;
}
/deep/ .el-icon-folder-delete {
margin-right: 10px;
}
.cxItem {
text-align: right;
width: 20%;
.zjquery {
display: inline-block;
background-color: #4ca6a7;
width: 89px;
height: 40px;
color: #fff;
text-align: center;
line-height: 40px;
border-radius: 5px;
}
}
.midBtn {
margin: 0 auto;
span {
display: inline-block;
width: 80px;
height: 25px;
line-height: 25px;
text-align: center;
margin-right: 10px;
border-radius: 5px;
}
span:first-of-type {
border: 1px solid grey;
}
span:last-of-type {
background-color: #4ca6a7;
color: #fff;
}
}
/deep/.el-table th.el-table__cell.is-leaf,
.el-table td.el-table__cell {
text-align: center;
}
/deep/ .el-table__cell {
text-align: center;
}
.dialogHeigth {
height: 300px;
box-sizing: border-box;
overflow-y: auto;
}
.setscroll {
width: 100%;
height: 650px;
position: relative;
overflow: auto;
}
.setscrolldialog {
width: 100%;
height: 300px;
position: relative;
overflow: auto;
box-sizing: border-box;
/deep/ .el-table {
height: 300px;
overflow: auto;
position: absolute;
min-width: 100%;
}
}
.setscrolldialogx {
width: 100%;
height: 300px;
position: relative;
overflow: auto;
box-sizing: border-box;
/deep/ .el-table {
position: absolute;
width: auto !important;
max-width: none;
}
}
::v-deep.el-table::before {
display: none !important;
}
</style>
\ No newline at end of file
<!-- 整改辅助核验 -->
<template>
<div class="main">
<el-form
:model="ruleForm"
label-width="100px"
class="demo-ruleForm"
ref="formName"
>
<el-form-item label="批次年度:" prop="batchYear" class="fromItem">
<el-select v-model="ruleForm.batchYear" placeholder="请选择" clearable>
<el-option
v-for="(item, index) in yearsList"
:key="index"
:label="item+'年'"
:value="item"/>
</el-select>
</el-form-item>
<el-form-item label="后评估批次名称:" prop="batchName" class="fromItem">
<el-input v-model="ruleForm.batchName" clearable></el-input>
</el-form-item>
<!-- <el-form-item
label="计划评审日期:"
prop="planReviewDate"
class="fromItem"
>
<el-date-picker
v-model="ruleForm.planReviewDate"
type="date"
placeholder="选择日期"
value-format="yyyy-MM-dd hh:mm:ss"
>
</el-date-picker>
</el-form-item>
<el-form-item label="后评估专家组长:" prop="fullName" class="fromItem">
<el-select v-model="ruleForm.fullName" placeholder="请选择" clearable>
<el-option label="zhangsan" value="0"></el-option>
</el-select>
</el-form-item> -->
<!-- <el-form-item label="后评估状态:" prop="postEvalState" class="fromItem">
<el-select v-model="ruleForm.postEvalState" placeholder="请选择" clearable>
<el-option label="未下发" value="0"></el-option>
<el-option label="已下发" value="1"></el-option>
<el-option label="已撤回" value="2"></el-option>
</el-select>
</el-form-item> -->
<!-- <el-form-item label="创建人:" prop="creator" class="fromItem">
<el-input v-model="ruleForm.creator" placeholder="请输入" clearable></el-input>
</el-form-item>
<el-form-item label="创建时间:" prop="createTime" class="fromItem">
<el-date-picker
v-model="ruleForm.createTime"
type="date"
placeholder="选择日期"
value-format="yyyy-MM-dd hh:mm:ss"
>
</el-date-picker>
</el-form-item> -->
<el-form-item class="button">
<el-button @click="submitForm()">
<img class="buttonIcon" src="../../assets/cx.png" />查询</el-button
>
<el-button @click="resetForm('ruleForm')">
<img class="buttonIcon" src="../../assets/cz.png" />重置</el-button
>
<el-button @click="rectificationReview('ruleForm')">
<i class="el-icon-chat-dot-square"></i
>&nbsp;&nbsp;&nbsp;整改复核</el-button
>
<!-- <el-button @click="submmitRectificationReview('ruleForm')">
<i class="el-icon-document-remove"></i
>&nbsp;&nbsp;&nbsp;提交整改复核</el-button
> -->
</el-form-item>
</el-form>
<div class="setscroll">
<el-table
@selection-change="handleSelectionChange"
ref="multipleTable"
:data="tableData"
tooltip-effect="dark"
style="width: 100%"
header-cell-class-name="custom-th-background"
class="eltable"
:row-class-name="tableRowClassName"
border
>
<el-table-column label="序号" width="55" type="index"> </el-table-column>
<el-table-column type="selection"> </el-table-column>
<el-table-column label="批次年度" width="auto" prop="batchYear"><template slot-scope="scope">
{{scope.row.batchYear}}
</template>
</el-table-column>
<el-table-column prop="batchName" label="后评估批次名称" width="auto">
</el-table-column>
<el-table-column prop="projectName" label="评估项目名称" show-overflow-tooltip>
</el-table-column>
<el-table-column prop="projectCategory" label="建设形式" width="auto">
</el-table-column>
<!-- <el-table-column
prop="historyCheckStatus"
label="历史审核状态"
width="auto"
>
</el-table-column> -->
<!-- <el-table-column
prop="formerYearsCheckStatus"
label="往年审核状态"
width="auto"
>
</el-table-column> -->
<el-table-column
prop="expertName"
label="评审专家名单"
width="auto"
>
</el-table-column>
<el-table-column
prop="appealDeadline"
label="问题申诉截止时间"
width="auto"
>
</el-table-column>
<el-table-column
prop="rectificationDeadline"
label="问题整改截止时间"
width="auto"
>
</el-table-column>
<el-table-column
prop="postEvalState"
label="整改复核状态"
width="auto"
>
</el-table-column>
<el-table-column prop="reviewDate" label="评估日期" width="auto">
</el-table-column>
</el-table>
</div>
<el-pagination
@size-change="handleSizeChange"
@current-change="handleCurrentChange"
:current-page="currentPage"
:page-sizes="[10, 15, 20, 50]"
:page-size="100"
layout="total, sizes, prev, pager, next, jumper"
:total="total"
class="elpagination"
>
</el-pagination>
<!-- 问题整改 -->
<el-dialog
title="复核情况"
:visible.sync="dialogQR"
width="79%"
:modal-append-to-body="false"
:append-to-body="false"
@close="closed"
>
<div class="dialog">
<h3>
项目名称:一期项目-电力营销-2023年网上国网(网上国网V1.0)-设计开发项目
</h3>
<div class="continer">
<p class="xqtitle"><span></span>问题清单</p>
<div class="setTable">
<el-table
:data="tableDataQR"
tooltip-effect="dark"
style="width: 100%"
header-cell-class-name="custom-th-background"
class="eltable"
:row-class-name="tableRowClassName"
:span-method="arraySpanMethod"
border
>
<el-table-column
label="项目环节"
prop="projectStagetext"
width="150"
>
</el-table-column>
<el-table-column label="序号" width="100" type="index">
</el-table-column>
<el-table-column
label="问题检查项"
prop="quesCheckItem"
width="200"
>
</el-table-column>
<el-table-column label="检查说明" prop="checkDesc" width="300">
</el-table-column>
<el-table-column label="评估问题" prop="evalQues" width="300">
</el-table-column>
<el-table-column label="问题确认" width="auto">
<template slot-scope="scope">
<el-switch
v-model="scope.row.confirmStatus"
active-color="#C0C0C0"
inactive-color="#13ce66"
active-value="2"
inactive-value="1"
active-text="无异议"
inactive-text="有异议"
@change="controlSwitch($event, scope.row)"
disabled
>
<template v-slot:active>
<span>开启</span>
</template>
<template v-slot:inactive>
<span>关闭</span>
</template>
</el-switch>
</template>
</el-table-column>
<el-table-column label="解释批注" width="200">
<template slot-scope="scope" v-if="scope.row.confirmStatus=='1'" >
<el-input v-model="scope.row.feedback" disabled></el-input>
</template>
</el-table-column>
<el-table-column label="附加解释材料" prop="fileId" width="400">
<!-- <template slot-scope="scope" v-if="scope.row.confirmStatus=='1'">
<input type="file" @change="handleFileUpload($event,scope.row, 'fileId')" />
</template> -->
<template slot-scope="scope" v-if="scope.row.confirmStatus == '1'&&scope.row.fileId">
{{
scope.row.fileName
}} <el-button @click="handleClickXZ(scope.row.fileId,scope.row.fileName)">下载</el-button>
</template>
</el-table-column>
<el-table-column
label="复核情况"
prop="rectificationStatus"
width="200"
>
<template slot-scope="scope" v-if="scope.row.confirmStatus=='1'">
<el-select
v-model="scope.row.appealStatus"
placeholder="请选择"
disabled
>
<el-option label="请选择" value=""></el-option>
<el-option label="未申诉" :value="0"></el-option>
<el-option label="已申诉" :value="1"></el-option>
<el-option label="申诉驳回" :value="2"></el-option>
<el-option label="申诉通过" :value="3"></el-option>
</el-select>
</template>
</el-table-column>
<el-table-column
label="上传整改材料"
prop="zgFileId"
width="400"
>
<template slot-scope="scope" v-if="scope.row.confirmStatus == '1'&&scope.row.zgFileId">
{{
scope.row.zgFileName
}} <el-button @click="handleClickXZ(scope.row.zgFileId,scope.row.zgFileName)">下载</el-button>
</template>
<!-- <template slot-scope="scope" v-if="scope.row.confirmStatus=='1'">
<input type="file" @change="handleFileUpload($event,scope.row, 'zgFileId')" />
</template> -->
</el-table-column>
<el-table-column label="情况说明" prop="zgqkFileId" width="400">
<!-- <template slot-scope="scope" v-if="scope.row.confirmStatus=='1'">
<input type="file" @change="handleFileUpload($event,scope.row, 'zgqkFileId')" />
</template> -->
<template slot-scope="scope" v-if="scope.row.confirmStatus == '1'&&scope.row.zgqkFileId">
{{
scope.row.zgqkFileName
}} <el-button @click="handleClickXZ(scope.row.zgqkFileId,scope.row.zgqkFileName)">下载</el-button>
</template>
</el-table-column>
<el-table-column
label="整改复核"
prop="rectificationStatus"
width="200"
>
<template slot-scope="scope" v-if="scope.row.confirmStatus=='1'">
<el-select
v-model="scope.row.rectificationStatus"
placeholder="请选择"
>
<el-option label="请选择" value=""></el-option>
<el-option label="问题未整改" :value="0"></el-option>
<el-option label="整改不合格" :value="1"></el-option>
<el-option label="整改完成" :value="2"></el-option>
</el-select>
</template>
</el-table-column>
</el-table>
</div>
</div>
</div>
<p class="midBtn">
<span @click="cancelSS()">取消</span><span @click="saveSS()">保存</span><span @click="save()">提交</span>
</p>
</el-dialog>
<!-- 复核下发 -->
<!-- <el-dialog
title="复核情况"
:visible.sync="dialogSS"
width="79%"
:modal-append-to-body="false"
:append-to-body="false"
>
<div class="dialog">
<h3>
项目名称:一期项目-电力营销-2023年网上国网(网上国网V1.0)-设计开发项目
</h3>
<div class="continer">
<p class="xqtitle"><span></span>问题清单</p>
<div class="setTable">
<el-table
:data="tableDataSS"
tooltip-effect="dark"
style="width: 100%"
header-cell-class-name="custom-th-background"
class="eltable"
:row-class-name="tableRowClassName"
:span-method="arraySpanMethodss"
border
>
<el-table-column
label="项目环节"
prop="projectStagetext"
width="150"
>
</el-table-column>
<el-table-column label="序号" width="100" type="index">
</el-table-column>
<el-table-column
label="问题检查项"
prop="quesCheckItem"
width="200"
>
</el-table-column>
<el-table-column label="检查说明" prop="checkDesc" width="300">
</el-table-column>
<el-table-column label="评估问题" prop="evalQues" width="300">
</el-table-column>
<el-table-column label="问题确认" width="auto">
<template slot-scope="scope">
<el-switch
v-model="scope.row.confirmStatus"
active-color="#C0C0C0"
inactive-color="#13ce66"
active-value="2"
inactive-value="1"
active-text="无异议"
inactive-text="有异议"
@change="controlSwitch($event, scope.row)"
disabled
>
<template v-slot:active>
<span>开启</span>
</template>
<template v-slot:inactive>
<span>关闭</span>
</template>
</el-switch>
</template>
</el-table-column>
<el-table-column label="解释批注" width="200">
<template slot-scope="scope">
<el-input v-model="scope.row.feedback" disabled></el-input>
</template>
</el-table-column>
<el-table-column label="附加解释材料" prop="fileId" width="400">
<template slot-scope="scope" v-if="scope.row.confirmStatus == '1'&&scope.row.fileId">
{{
scope.row.fileName
}} <el-button @click="handleClickXZ(scope.row)">下载</el-button>
</template>
</el-table-column>
<el-table-column
label="复核情况"
prop="rectificationStatus"
width="200"
>
<template slot-scope="scope" v-if="scope.row.confirmStatus == '1'">
<el-select
v-model="scope.row.appealStatus"
placeholder="请选择"
disabled
>
<el-option label="请选择" value=""></el-option>
<el-option label="未申诉" :value="0"></el-option>
<el-option label="已申诉" :value="1"></el-option>
<el-option label="申诉驳回" :value="2"></el-option>
<el-option label="申诉通过" :value="3"></el-option>
</el-select>
</template>
</el-table-column>
<el-table-column
label="上传整改材料"
prop="zgFileId"
width="400"
>
<template slot-scope="scope" v-if="scope.row.confirmStatus == '1'&&scope.row.fileId">
{{
scope.row.fileName
}} <el-button @click="handleClickXZ(scope.row)">下载</el-button>
</template>
</el-table-column>
<el-table-column label="情况说明" prop="zgqkFileId" width="400">
<template slot-scope="scope" v-if="scope.row.confirmStatus == '1'&&scope.row.fileId">
{{
scope.row.fileName
}} <el-button @click="handleClickXZ(scope.row)">下载</el-button>
</template>
</el-table-column>
</el-table>
</div>
</div>
</div>
<p class="midBtn">
<span @click="cancel()">取消</span><span @click="save()">提交</span>
</p>
</el-dialog> -->
</div>
</template>
<script>
import {
rectificationVerification,
wtssSelectificationVerification,
bcrectificationVerification,
tjrectificationVerification,
ossupload,
downloadObject
} from "@/api/index";
import { generateYearOptions } from "@/utils/cache";
export default {
data() {
return {
yearsList:generateYearOptions(),
dialogSS: false,
ruleForm: {
batchYear: "",
batchName: "",
planReviewDate: "",
fullName: "",
postEvalState: "",
creator: "",
createTime: "",
},
tableData: [],
tableDataQR: [],
tableDataSS: [],
checkedList: [],
currentPage: 1,
pageSizetjcl: 10,
total: 0,
dialogQR: false,
pageSize: 10,
mergingPos: 0,
mergingRows: [],
mergingPosss: 0,
mergingRowsss: [],
};
},
mounted() {
this.submitForm();
},
mounted() {
this.submitForm();
},
methods: {
async submitForm() {
let params = {
current: this.currentPage,
pageSize: this.pageSize,
};
Object.assign(params, this.ruleForm);
console.log(params);
let res = await rectificationVerification(params);
if (res.code == "200") {
this.tableData = res.data.records;
this.tableData.forEach((item) => {
if (item.reviewStatus == "5") {
this.$set(item, "postEvalState", "整改提交");
} else if (item.reviewStatus == "6"){
this.$set(item, "postEvalState", "整改未完成");
}else{
this.$set(item, "postEvalState", "整改已完成");
}
});
this.total = res.data.total * 1;
}
},
resetForm() {
this.$refs.formName.resetFields();
this.currentPage = 1;
this.pageSize = 10;
this.submitForm();
},
//整改复核
async rectificationReview() {
this.mergingPos = 0;
this.mergingRows = [];
if (this.checkedList.length != 1) {
this.$message("请选择一条数据进行整改");
return;
}
this.dialogQR = true;
let params = {
projectId: this.checkedList[0].projectId,
batchId: this.checkedList[0].batchId,
};
let res = await wtssSelectificationVerification(params);
if (res.code == "200") {
this.tableDataQR = res.data.records;
this.tableDataQR.forEach((item) => {
switch (item.projectStage) {
case "1":
this.$set(item, "projectStagetext", "1.可研");
break;
case "2":
this.$set(item, "projectStagetext", "2.计划");
break;
case "3":
this.$set(item, "projectStagetext", "3.采购");
break;
case "4":
this.$set(item, "projectStagetext", "4.合同");
break;
case "5":
this.$set(item, "projectStagetext", "5.执行");
break;
case "6":
this.$set(item, "projectStagetext", "6.结决算及转资");
break;
}
});
console.log(this.tableDataQR, "加不进去?");
this.dataPretreatment();
}
},
dataPretreatment() {
for (let i = 0; i < this.tableDataQR.length; i++) {
// tabledata 表格数据源
if (i === 0) {
this.mergingRows.push(1);
this.mergingPos = 0;
} else {
if (
this.tableDataQR[i].projectStage ===
this.tableDataQR[i - 1].projectStage
) {
//哪些数据是要合并的 合并的条件是什么
this.mergingRows[this.mergingPos] += 1;
this.mergingRows.push(0);
} else {
this.mergingRows.push(1);
this.mergingPos = i;
}
}
}
},
dataPretreatmentSS() {
for (let i = 0; i < this.tableDataSS.length; i++) {
// tabledata 表格数据源
if (i === 0) {
this.mergingRowsss.push(1);
this.mergingPosss = 0;
} else {
if (
this.tableDataSS[i].projectStage ===
this.tableDataSS[i - 1].projectStage
) {
//哪些数据是要合并的 合并的条件是什么
this.mergingRowsss[this.mergingPosss] += 1;
this.mergingRowsss.push(0);
} else {
this.mergingRowsss.push(1);
this.mergingPosss = i;
}
}
}
},
//表格颜色
tableRowClassName({ row, rowIndex }) {
if (rowIndex % 2 == 1) {
return "warning-row";
}
return "";
},
//主列表选中行信息
handleSelectionChange(selection) {
console.log("222222");
if (Array.isArray(selection) && selection.length > 1) {
console.log("222222333", this.checkedList);
this.$refs.multipleTable.toggleRowSelection(selection[0], false);
this.$refs.multipleTable.toggleRowSelection(selection[1], true);
}
this.checkedList = this.$refs.multipleTable.selection;
this.$forceUpdate();
console.log(this.checkedList, "2222");
},
handleSizeChange(val) {
console.log(`每页 ${val} 条`);
this.pageSize = val;
},
handleCurrentChange(val) {
console.log(`当前页: ${val}`);
this.currentPage = val;
},
arraySpanMethod({ row, column, rowIndex, columnIndex }) {
if (columnIndex === 0) {
//第一列
const _row = this.mergingRows[rowIndex];
const _col = _row > 0 ? 1 : 0;
return {
rowspan: _row,
colspan: _col,
};
}
},
arraySpanMethodss({ row, column, rowIndex, columnIndex }) {
if (columnIndex === 0) {
//第一列
const _row = this.mergingRowsss[rowIndex];
const _col = _row > 0 ? 1 : 0;
return {
rowspan: _row,
colspan: _col,
};
}
},
//问题确认开关
controlSwitch(val, row) {
console.log("333", val, row);
},
cancelSS() {
this.dialogQR = false;
},
async save() {
let res = await tjrectificationVerification(this.tableDataQR);
if (res.code == "200") {
this.dialogQR = false;
this.resetForm();
} else {
this.$message("整改复核提交失败");
}
},
cancel() {
this.dialogSS = false;
},
async saveSS() {
let res = await bcrectificationVerification(this.tableDataQR);
if (res.code == "200") {
this.dialogQR = false;
// this.$message('保存成功')
this.resetForm();
}
},
//提交整改复核
async submmitRectificationReview() {
this.mergingPosss = 0;
this.mergingRowsss = [];
if (this.checkedList.length != 1) {
this.$message("请选择一条数据进行提交");
return;
}
this.dialogSS = true;
let params = {
projectId: this.checkedList[0].projectId,
batchId: this.checkedList[0].batchId,
};
let res = await wtssSelectificationVerification(params);
if (res.code == "200") {
this.tableDataSS = res.data.records;
this.tableDataSS.forEach((item) => {
if(!item.confirmStatus){
this.$set(item, "confirmStatus", "2")
}
switch (item.projectStage) {
case "1":
this.$set(item, "projectStagetext", "1.可研");
break;
case "2":
this.$set(item, "projectStagetext", "2.计划");
break;
case "3":
this.$set(item, "projectStagetext", "3.采购");
break;
case "4":
this.$set(item, "projectStagetext", "4.合同");
break;
case "5":
this.$set(item, "projectStagetext", "5.执行");
break;
case "6":
this.$set(item, "projectStagetext", "6.结决算及转资");
break;
}
});
console.log(this.tableDataSS);
this.dataPretreatmentSS();
}
},
handleFileUpload(event,row,type) {
console.log("来了么");
this.file = event.target.files[0];
this.submitFile(row,type)
},
submitFile(row,type) {
// return;
console.log(row);
if (this.file) {
const formData = new FormData();
formData.append("file", this.file);
// formData.append("prjId", this.checkedList[0].projectId);
// formData.append("typeCode", row.typeCode);
ossupload(formData)
.then((response) => {
console.log(response);
this.file =[]
this.$set(row, type, response.data.fileId );
})
.catch((error) => {
console.error(error);
});
}else{
this.$message('请先选择文件')
}
},
closed() {
console.log("关闭");
this.handleSelectionChange();
},
async handleClickXZ(fileId,fileName) {
console.log(fileId);
let response = await downloadObject({
fileId: fileId * 1,
});
let blob = new Blob([response]);
if ("download" in document.createElement("a")) {
let elink = document.createElement("a");
elink.download = fileName;
elink.style.display = "none";
elink.href = URL.createObjectURL(blob);
document.body.appendChild(elink);
elink.click();
URL.revokeObjectURL(elink.href); // 释放URL 对象
document.body.removeChild(elink);
}
},
},
};
</script>
<style scoped lang="scss">
.main {
font-size: 14px;
position: relative;
height: 100%;
width: 100%;
box-sizing: border-box;
overflow-x: hidden;
}
.el-form {
display: flex;
width: 99%;
flex-wrap: wrap;
border-top: 2px solid #23c6c8;
border-left: 1px solid #dee5e7;
border-right: 1px solid #dee5e7;
border-bottom: 1px solid #dee5e7;
padding: 20px 10px;
margin-bottom: 20px;
.fromItem {
min-width: 24%;
margin: 0 0.5%;
margin-bottom: 20px;
.el-input {
width: 226px;
}
.el-select {
width: 226px;
}
}
/deep/ .el-form-item__content {
text-align: left;
display: inline-block;
margin-left: 10px !important;
}
/deep/ .el-form-item__label {
font-weight: bold;
color: #000;
width: 160px !important;
}
.button {
display: inline-block;
width: 100%;
text-align: left;
/deep/ .el-form-item__content {
margin-left: 20px !important;
text-align: left;
img {
width: 14px;
height: 14px;
margin-right: 15px;
vertical-align: middle;
}
}
.el-button {
background-color: #23c6c8;
border-color: #23c6c8;
color: #fff;
}
}
}
.eltable {
box-sizing: border-box;
text-align: center;
width: 150%;
min-width: 150%;
}
/deep/ .el-table .warning-row {
background: #f0ffff;
// color: #2785e6;
}
.elpagination {
text-align: right;
margin-right: 100px;
}
/deep/ .el-dialog {
border-radius: 10px;
margin-top: 3vh !important;
margin-left: 3vw !important;
}
/deep/.el-table th.el-table__cell.is-leaf,
.el-table td.el-table__cell {
text-align: center;
}
/deep/ .el-dialog__wrapper {
position: absolute;
}
/deep/ .v-modal {
position: absolute;
}
/deep/ .el-dialog__header {
background-color: #0d867f;
padding-bottom: 20px;
text-align: left;
border-radius: 10px 10px 0 0;
.el-dialog__title {
color: #fff;
}
}
/deep/ .el-table__header th {
background-color: #eeeeee;
font-weight: bold;
.cell {
color: #333;
}
}
/deep/.el-table {
position: absolute;
width: auto !important;
max-width: none;
// width: 100%;
.el-table__header-wrapper table,
.el-table__body-wrapper table {
// width: 100% !important;
}
.el-table__body,
.el-table__footer,
.el-table__header {
table-layout: auto;
}
}
.textarea {
width: 100%;
.el-textarea {
width: 60%;
}
}
.Btn {
width: 200px;
margin: 0 auto;
height: 30px;
line-height: 30px;
span {
display: inline-block;
width: 80px;
height: 25px;
line-height: 25px;
text-align: center;
border-radius: 4px;
margin-right: 12px;
}
span:first-of-type {
border: 1px solid #000;
}
span:last-of-type {
background-color: #0d867f;
border: 1px solid #0d867f;
color: #fff;
}
}
/deep/ .el-dialog__headerbtn .el-dialog__close {
color: #fff;
}
.zjBtn {
width: 400px;
text-align: left;
vertical-align: middle;
span {
display: inline-block;
width: 140px;
height: 25px;
line-height: 25px;
text-align: center;
border-radius: 5px;
vertical-align: middle;
}
span:last-of-type {
background-color: #4ca6a7;
color: #fff;
padding: 5px 10px;
margin-left: 10px;
}
}
/deep/ .el-icon-position {
margin-right: 10px;
}
/deep/ .el-icon-folder-delete {
margin-right: 10px;
}
.cxItem {
text-align: right;
width: 20%;
.zjquery {
display: inline-block;
background-color: #4ca6a7;
width: 89px;
height: 40px;
color: #fff;
text-align: center;
line-height: 40px;
border-radius: 5px;
}
}
.midBtn {
margin: 20px auto;
// margin-top: 20px;
span {
display: inline-block;
width: 80px;
height: 29px;
line-height: 29px;
text-align: center;
margin-right: 10px;
border-radius: 5px;
box-sizing: border-box;
background-color: #4ca6a7;
color: #fff;
border: 1px solid #4ca6a7;
}
span:first-of-type {
border: 1px solid grey;
background-color: #fff;
color: grey;
}
// span:last-of-type {
// background-color: #4ca6a7;
// color: #fff;
// border: 1px solid #4ca6a7;
// }
}
.setTable {
height: 500px;
overflow-y: auto;
overflow-x: scroll;
position: relative;
overflow: auto;
}
.dialog {
// height: 700px;
// overflow-y: auto;
// overflow-x: auto;
.xqtitle {
text-align: left;
font-size: 18px;
border-bottom: 1px solid gainsboro;
padding-bottom: 10px;
span {
display: inline-block;
width: 5px;
height: 20px;
background: #0d867f;
margin-right: 14px;
vertical-align: middle;
}
}
/deep/ .el-form {
width: 65%;
flex-wrap: wrap;
padding: 0 10px;
text-align: center;
margin: 100px auto;
border: none;
.fromItem {
text-align: center;
width: 51%;
margin: 0 auto;
margin-bottom: 20px;
.el-input {
width: 226px;
}
.el-select {
width: 226px;
}
}
/deep/ .el-form-item__content {
text-align: left;
}
/deep/ .el-form-item__label {
font-weight: 400;
// color: #000;
width: 160px !important;
}
}
}
/deep/.el-table th.el-table__cell.is-leaf,
.el-table td.el-table__cell {
text-align: center;
}
/deep/ .el-table__cell {
text-align: center;
}
h3 {
text-align: left;
}
/deep/.el-switch__core {
height: 30px;
width: 79px !important;
border-radius: 20px;
}
/deep/.el-switch.is-checked .el-switch__core::after {
margin-left: -28px;
}
/deep/ .el-switch_label {
height: 30px;
line-height: 30px;
}
/deep/.el-switch {
height: 30px;
line-height: 30px;
border-radius: 20px;
}
/deep/ .el-switch__label * {
font-size: 12px;
}
/deep/.el-switch__core:after {
width: 26px;
height: 26px;
}
/deep/.el-switch__label--left {
position: absolute;
left: 30px;
color: #fff;
z-index: -1111;
cursor: default;
user-select: none;
}
/deep/.el-switch__label--right {
position: absolute;
right: 30px;
color: #fff;
z-index: -1111;
cursor: default;
user-select: none;
}
/deep/.el-switch__label--right.is-active {
z-index: 1111;
color: grey !important;
height: 30px;
line-height: 30px;
}
/deep/.el-switch__label--left.is-active {
z-index: 1111;
color: #fff !important;
height: 30px;
line-height: 30px;
}
/deep/ .el-dialog__body {
padding-bottom: 15px;
}
.setscroll {
width: 100%;
height: 650px;
position: relative;
overflow: auto;
}
.dialog {
.eltable {
box-sizing: border-box;
text-align: center;
width: 100%;
min-width: 100%;
}
}
// ::-webkit-scrollbar {
// width: 6px; // 横向滚动条
// height: 6px; // 纵向滚动条必写
// }
</style>
\ No newline at end of file
<!-- 评估材料自动获取 -->
<template>
<div class="main">
<el-form
:model="ruleForm"
ref="formName"
label-width="100px"
class="demo-ruleForm"
>
<el-form-item label="批次年度:" prop="batchYear" class="fromItem">
<el-select v-model="ruleForm.batchYear" placeholder="请选择" clearable>
<el-option
v-for="(item, index) in yearsList"
:key="index"
:label="item+'年'"
:value="item"/>
</el-select>
</el-form-item>
<el-form-item label="后评估名称:" prop="batchName" class="fromItem">
<el-input v-model="ruleForm.batchName" placeholder="请输入" clearable></el-input>
</el-form-item>
<el-form-item label="后评估状态:" prop="postEvalState" class="fromItem">
<el-select v-model="ruleForm.postEvalState" placeholder="请选择" clearable>
<el-option label="未上传" value="0"></el-option>
<el-option label="已上传" value="1"></el-option>
<!-- <el-option label="已撤回" value="2"></el-option> -->
</el-select>
</el-form-item>
<el-form-item label="项目名称:" prop="projectName" class="fromItem" show-overflow-tooltip>
<el-input
v-model="ruleForm.projectName"
placeholder="请输入"
clearable
></el-input>
</el-form-item>
<el-form-item label="项目ID:" prop="projectId" class="fromItem">
<el-input v-model="ruleForm.projectId" placeholder="请输入" clearable></el-input>
</el-form-item>
<el-form-item class="button">
<el-button @click="submitForm()">
<img class="buttonIcon" src="../../assets/cx.png" />查询</el-button
>
<el-button @click="resetForm()">
<img class="buttonIcon" src="../../assets/cz.png" />重置</el-button
>
<el-button @click="detailsForm()">
<img class="buttonIcon" src="../../assets/ck.png" />详情</el-button
>
<el-button @click="submitNexts()"
><i class="el-icon-finished"></i> 提交评估材料</el-button
>
</el-form-item>
</el-form>
<div class="setscroll">
<el-table
@selection-change="handleSelectionChange"
ref="multipleTable"
:data="tableData"
tooltip-effect="dark"
style="width: 100%"
header-cell-class-name="custom-th-background"
class="eltable"
:row-class-name="tableRowClassName"
border
>
<el-table-column label="序号" width="55" type="index">
</el-table-column>
<el-table-column type="selection"> </el-table-column>
<el-table-column label="批次年度" prop="batchYear"> <template slot-scope="scope">
{{scope.row.batchYear}}
</template></el-table-column>
<el-table-column prop="batchName" label="后评估批次名称">
</el-table-column>
<el-table-column prop="projectName" label="评估项目名称" show-overflow-tooltip>
</el-table-column>
<el-table-column prop="projectCategory" label="建设形式">
</el-table-column>
<el-table-column prop="projectStatus" label="项目建设阶段">
</el-table-column>
<!-- <el-table-column prop="待确认" label="历史审核状态"> </el-table-column> -->
<el-table-column prop="planReviewDate" label="计划评估日期">
</el-table-column>
<el-table-column prop="expertName" label="评审专家名单">
</el-table-column>
<el-table-column prop="postEvalStateText" label="提交评估材料">
</el-table-column>
</el-table>
</div>
<el-pagination
@size-change="handleSizeChange"
@current-change="handleCurrentChange"
:current-page="currentPage"
:page-sizes="[10, 15, 20, 50]"
:page-size="100"
layout="total, sizes, prev, pager, next, jumper"
:total="total"
class="elpagination"
>
</el-pagination>
<el-dialog
title="提交评估材料"
:visible.sync="dialog"
width="90%"
:modal-append-to-body="false"
:append-to-body="false"
@close="closeDialog"
>
<div class="dialog">
<p class="xqtitle"><span></span>批次详情</p>
<el-form
:model="ruleFormdialog"
label-width="100px"
class="demo-ruleForm"
>
<el-form-item label="批次年度:" prop="batchYear" class="fromItem">
<el-input v-model="ruleFormdialog.batchYear" disabled></el-input>
</el-form-item>
<el-form-item label="后评估名称:" prop="batchName" class="fromItem">
<el-input v-model="ruleFormdialog.batchName" disabled></el-input>
</el-form-item>
<el-form-item
label="计划评审日期:"
prop="planReviewDate"
class="fromItem"
>
<el-input
v-model="ruleFormdialog.planReviewDate"
disabled
></el-input>
</el-form-item>
<el-form-item label="后评估专家:" prop="expertName" class="fromItem">
<el-input v-model="ruleFormdialog.expertName" disabled></el-input>
</el-form-item>
<el-form-item label="工作组织情况:" class="textarea">
<el-input
type="textarea"
v-model="ruleFormdialog.desc"
disabled
></el-input>
</el-form-item>
</el-form>
<p class="xqtitle"><span></span>本项目材料清单</p>
<div class="setscrolldialog">
<el-table
@selection-change="handleSelectionChange"
:data="tableDataQD"
tooltip-effect="dark"
style="width: 100%"
header-cell-class-name="custom-th-background"
class="eltable"
:row-class-name="tableRowClassName"
border
>
<el-table-column label="序号" width="55" type="index">
</el-table-column>
<el-table-column label="材料类别" prop="batchtype"> </el-table-column>
<el-table-column prop="typeText" label="资料类型"> </el-table-column>
<el-table-column prop="fileName" label="资料名称" show-overflow-tooltip> </el-table-column>
<el-table-column prop="projectCategory" label="操作">
<template slot-scope="scope">
<input type="file" @change="handleFileUpload($event,scope.row)" />
</template>
</el-table-column>
</el-table>
</div>
<p class="Btn">
<span @click="cancel()">取消</span
><span @click="save()">确认上传</span>
</p>
</div>
</el-dialog>
<el-dialog
title="提交评估材料"
:visible.sync="dialogXQ"
width="90%"
:modal-append-to-body="false"
:append-to-body="false"
@close="closeDialog"
>
<div class="dialog">
<p class="xqtitle"><span></span>批次详情</p>
<el-form
:model="ruleFormdialog"
ref="ruleFormdialog"
label-width="100px"
class="demo-ruleForm"
>
<el-form-item label="批次年度:" prop="batchYear" class="fromItem">
<el-input v-model="ruleFormdialog.batchYear" disabled></el-input>
</el-form-item>
<el-form-item label="后评估名称:" prop="batchName" class="fromItem">
<el-input v-model="ruleFormdialog.batchName" disabled></el-input>
</el-form-item>
<el-form-item
label="计划评审日期:"
prop="planReviewDate"
class="fromItem"
>
<el-input
v-model="ruleFormdialog.planReviewDate"
disabled
></el-input>
</el-form-item>
<el-form-item label="后评估专家:" prop="expertName" class="fromItem">
<el-input v-model="ruleFormdialog.expertName" disabled></el-input>
</el-form-item>
<el-form-item label="工作组织情况:" class="textarea">
<el-input
type="textarea"
v-model="ruleFormdialog.desc"
disabled
></el-input>
</el-form-item>
</el-form>
<p class="xqtitle"><span></span>本项目材料清单</p>
<div class="setscrolldialog">
<el-table
@selection-change="handleSelectionChange"
:data="tableDataQD"
tooltip-effect="dark"
style="width: 100%"
header-cell-class-name="custom-th-background"
class="eltable"
:row-class-name="tableRowClassName"
border
>
<el-table-column label="序号" width="55" type="index">
</el-table-column>
<el-table-column label="材料类别" prop="batchtype"> </el-table-column>
<el-table-column prop="typeText" label="资料类型"> </el-table-column>
<el-table-column prop="fileName" label="资料名称" >
<template slot-scope="scope" v-if="scope.row.fileName">
{{scope.row.fileName}}&nbsp;&nbsp;<el-button @click="handleClickXZ(scope.row)">下载</el-button>
</template>
</el-table-column>
</el-table>
</div>
</div>
</el-dialog>
</div>
</template>
<script>
import { MaterialsList } from '@/utils/cache'
import {
evaluationMaterials,
clqdevaluationMaterials,
qrscevaluationMaterials,
ossupload,
downloadObject
} from "@/api/index";
import { generateYearOptions } from "@/utils/cache";
export default {
data() {
return {
yearsList:generateYearOptions(),
dialogXQ: false,
file: "",
showButton: true,
ruleForm: {
batchYear: "",
batchName: "",
postEvalState: "",
projectName: "",
projectId: "",
},
ruleFormdialog: {
batchYear: "",
batchName: "",
planReviewDate: "",
fullName: "",
},
tableData: [],
tableDataNew:MaterialsList(),
tableDataQD:[],
checkedList: [],
currentPage: 1,
pageSize: 10,
currentPagetjcl: 1,
pageSizetjcl: 10,
total: 0,
dialog: false,
};
},
watch:{
// 监听路由对象中的参数部分
'$route.params': {
immediate: true,
handler(newParams, oldParams) {
this.submitForm();
}
}
},
mounted() {
// this.submitForm();
},
methods: {
async submitForm() {
let params = {
current: this.currentPage,
pageSize: this.pageSize,
};
Object.assign(params, this.ruleForm);
console.log(params);
let res = await evaluationMaterials(params);
if (res.code == "200") {
this.tableData = res.data.records;
this.tableData.forEach((item) => {
if (item.postEvalState == "" || item.postEvalState == null) {
this.$set(item, "postEvalStateText", "未上传");
} else if (item.postEvalState == "0") {
this.$set(item, "postEvalStateText", "未上传");
} else if (item.postEvalState >=1) {
this.$set(item, "postEvalStateText", "已上传");
}
});
this.total = res.data.total * 1;
}
},
resetForm() {
this.$refs.formName.resetFields();
this.currentPage = 1;
this.pageSize = 10;
console.log("重置");
this.submitForm();
},
//提交评估材料
async submitNexts() {
if (this.checkedList.length != 1) {
this.$message("请选择");
return;
}
// if (this.checkedList[0].postEvalStateText == "已上传") {
// this.$message("已上传评估材料");
// return;
// }
console.log("222");
this.dialog = true;
let params = {
current: this.currentPage,
pageSize: this.pageSize,
projectId: this.checkedList[0].projectId,
batchId:this.checkedList[0].batchId
};
let res = await clqdevaluationMaterials(params);
// this.tableDataQD =this.tableDataNew
this.tableDataQD =JSON.parse(JSON.stringify(this.tableDataNew))
if (res.data.records.length > 0) {
this.tableDataQD = this.tableDataQD
.concat(res.data.records)
.reduce((accumulator, currentObj) => {
const existingObj = accumulator.find(
(obj) => obj.typeCode == currentObj.typeCode
);
if (existingObj) {
Object.assign(existingObj, currentObj);
} else {
accumulator.push(currentObj);
}
return accumulator;
}, []);
console.log( this.tableDataQD,' mergedArray mergedArray mergedArray')
// this.tableDataQD.forEach((item) => {
// // this.$set(item, "batchtype", "开发、实施类");
// });
}
},
//详情
async detailsForm() {
if (this.checkedList.length != 1) {
this.$message("请选择");
return;
}
console.log("222");
this.dialogXQ = true;
let params = {
current: this.currentPage,
pageSize: this.pageSize,
projectId: this.checkedList[0].projectId,
batchId:this.checkedList[0].batchId
};
let res = await clqdevaluationMaterials(params);
this.tableDataQD =this.tableDataNew
this.tableDataQD = this.tableDataQD
.concat(res.data.records)
.reduce((accumulator, currentObj) => {
const existingObj = accumulator.find(
(obj) => obj.typeCode == currentObj.typeCode
);
if (existingObj) {
Object.assign(existingObj, currentObj);
} else {
accumulator.push(currentObj);
}
return accumulator;
}, []);
},
//表格颜色
tableRowClassName({ row, rowIndex }) {
if (rowIndex % 2 == 1) {
return "warning-row";
}
return "";
},
//主列表选中行信息
handleSelectionChange(selection) {
if (Array.isArray(selection) && selection.length > 1) {
this.$refs.multipleTable.toggleRowSelection(selection[0], false);
this.$refs.multipleTable.toggleRowSelection(selection[1], true);
}
this.checkedList = this.$refs.multipleTable.selection;
this.ruleFormdialog = this.checkedList[0];
console.log(this.checkedList, "2222");
},
handleSizeChange(val) {
console.log(`每页 ${val} 条`);
this.pageSize = val;
this.submitForm();
},
handleCurrentChange(val) {
console.log(`当前页: ${val}`);
this.currentPage = val;
this.submitForm();
},
handleSizeChangetjcl(val) {
console.log(`每页 ${val} 条`);
this.pageSizetjcl = val;
},
handleCurrentChangetjcl(val) {
console.log(`当前页: ${val}`);
this.currentPagetjcl = val;
},
cancel() {
this.dialog = false;
// this.dialogXQ = false;
},
closeDialog() {
console.log("guanbi");
this.showButton = true;
},
async save(type) {
this.dialog = false;
let params = {
projectId: this.checkedList[0].projectId,
batchId: this.checkedList[0].batchId,
};
let res = await qrscevaluationMaterials(params);
this.resetForm();
},
handleFileUpload(event,row) {
console.log("来了么",event,row);
this.file = event.target.files[0];
this.submitFile(row)
},
submitFile(row) {
console.log(row);
if (this.file) {
const formData = new FormData();
formData.append("file", this.file);
formData.append("prjId", this.checkedList[0].projectId);
formData.append("typeCode", row.typeCode);
formData.append("bathId", this.checkedList[0].batchId);
ossupload(formData)
.then((response) => {
console.log(response);
if(response.code=='200'){
this.$message('上传成功')
this.$set(row, "fileName", response.data.fileName);
}else{
this.$message('上传失败')
}
})
.catch((error) => {
console.error(error);
this.$message('上传失败')
});
}
},
async handleClickXZ(scope) {
console.log(scope.fileId);
let response = await downloadObject({
fileId: scope.fileId * 1,
});
let blob = new Blob([response]);
if ("download" in document.createElement("a")) {
let elink = document.createElement("a");
elink.download = scope.fileName;
elink.style.display = "none";
elink.href = URL.createObjectURL(blob);
document.body.appendChild(elink);
elink.click();
URL.revokeObjectURL(elink.href); // 释放URL 对象
document.body.removeChild(elink);
}
},
},
};
</script>
<style scoped lang="scss">
.main {
font-size: 14px;
position: relative;
height: 100%;
width: 100%;
box-sizing: border-box;
}
.el-form {
display: flex;
width: 100%;
flex-wrap: wrap;
border-top: 2px solid #23c6c8;
border-left: 1px solid #dee5e7;
border-right: 1px solid #dee5e7;
border-bottom: 1px solid #dee5e7;
padding: 20px 10px;
margin-bottom: 20px;
.fromItem {
min-width: 24%;
margin: 0 0.5%;
margin-bottom: 20px;
.el-input {
width: 226px;
}
.el-select {
width: 226px;
}
}
/deep/ .el-form-item__content {
text-align: left;
display: inline-block;
margin-left: 10px !important;
}
/deep/ .el-form-item__label {
font-weight: bold;
color: #000;
width: 160px !important;
}
.button {
display: inline-block;
width: 100%;
text-align: left;
/deep/ .el-form-item__content {
margin-left: 20px !important;
text-align: left;
img {
width: 14px;
height: 14px;
margin-right: 15px;
vertical-align: middle;
}
}
.el-button {
background-color: #23c6c8;
border-color: #23c6c8;
color: #fff;
}
}
}
.eltable {
width: 100%;
// height: 650px;
// overflow-y: auto;
box-sizing: border-box;
}
/deep/ .el-table .warning-row {
background: #f0ffff;
// color: #2785e6;
}
.elpagination {
text-align: right;
margin-right: 100px;
}
/deep/ .el-dialog {
border-radius: 10px;
margin-top: 3vh !important;
margin-left: 3vw !important;
}
/deep/ .el-dialog__wrapper {
position: absolute;
}
/deep/ .v-modal {
position: absolute;
}
/deep/ .el-dialog__header {
background-color: #0d867f;
padding-bottom: 20px;
text-align: left;
border-radius: 10px 10px 0 0;
.el-dialog__title {
color: #fff;
}
}
/deep/ .el-table__header th {
background-color: #eeeeee;
font-weight: bold;
.cell {
color: #333;
}
}
/deep/.el-table {
width: 100%;
.el-table__header-wrapper table,
.el-table__body-wrapper table {
width: 100% !important;
}
.el-table__body,
.el-table__footer,
.el-table__header {
table-layout: auto;
}
}
.dialog {
.xqtitle {
text-align: left;
font-size: 18px;
span {
display: inline-block;
width: 5px;
height: 20px;
background: #0d867f;
margin-right: 14px;
vertical-align: middle;
}
}
}
.textarea {
width: 100%;
/deep/ .el-form-item__content{
display: flex;
}
.el-textarea {
width: 60%;
}
}
.Btn {
width: 200px;
margin: 0 auto;
margin-top: 20px;
span {
display: inline-block;
width: 80px;
height: 25px;
line-height: 25px;
text-align: center;
border-radius: 4px;
margin-right: 12px;
}
span:first-of-type {
border: 1px solid #000;
}
span:last-of-type {
background-color: #0d867f;
border: 1px solid #0d867f;
color: #fff;
}
}
/deep/ .el-dialog__headerbtn .el-dialog__close {
color: #fff;
}
/deep/.el-table th.el-table__cell.is-leaf,
.el-table td.el-table__cell {
text-align: center;
}
/deep/ .el-table__cell {
text-align: center;
}
.setscroll {
width: 100%;
height: 650px;
position: relative;
overflow: auto;
}
.setscrolldialog {
width: 100%;
height: 290px;
overflow: auto;
box-sizing: border-box;
/deep/ .el-table {
width: 96% !important;
height: 300px;
overflow: auto;
}
}
.dialog{
.eltable{
height: 650px;
overflow-y: auto;
}
}
</style>
\ No newline at end of file
<!-- 评估材料自动解析 -->
<template>
<div class="main">
<el-form
:model="ruleForm"
ref="formName"
label-width="100px"
class="demo-ruleForm"
>
<el-form-item label="批次年度:" prop="batchYear" class="fromItem">
<el-select v-model="ruleForm.batchYear" placeholder="请选择">
<el-option
v-for="(item, index) in yearsList"
:key="index"
:label="item+'年'"
:value="item"/>
</el-select>
</el-form-item>
<el-form-item label="后评估名称:" prop="batchName" class="fromItem">
<el-input v-model="ruleForm.batchName" placeholder="请输入"></el-input>
</el-form-item>
<el-form-item label="后评估状态:" prop="postEvalState" class="fromItem">
<el-select v-model="ruleForm.postEvalState" placeholder="请选择">
<el-option label="未下发" value="0"></el-option>
<el-option label="已下发" value="1"></el-option>
<el-option label="已撤回" value="2"></el-option>
</el-select>
</el-form-item>
<el-form-item label="项目名称:" prop="projectName" class="fromItem">
<el-input
v-model="ruleForm.projectName"
placeholder="请输入"
></el-input>
</el-form-item>
<el-form-item label="项目ID:" prop="projectId" class="fromItem">
<el-input v-model="ruleForm.projectId" placeholder="请输入"></el-input>
</el-form-item>
<el-form-item class="button">
<el-button @click="submitForm()">
<img class="buttonIcon" src="../../assets/cx.png" />查询</el-button
>
<el-button @click="resetForm('ruleForm')">
<img class="buttonIcon" src="../../assets/cz.png" />重置</el-button
>
<el-button @click="detailsForm('ruleForm')">
<img class="buttonIcon" src="../../assets/ck.png" />详情</el-button
>
<el-button @click="submitNexts()"
><i class="el-icon-finished"></i> 提交评估材料</el-button
>
</el-form-item>
</el-form>
<el-table
@selection-change="handleSelectionChange"
ref="multipleTable"
:data="tableData"
tooltip-effect="dark"
style="width: 100%"
header-cell-class-name="custom-th-background"
class="eltable"
:row-class-name="tableRowClassName"
border
>
<el-table-column label="序号" width="55" type="index"> </el-table-column>
<el-table-column type="selection"> </el-table-column>
<el-table-column label="批次年度" prop="batchYear"><template slot-scope="scope">
{{scope.row.batchYear}}
</template> </el-table-column>
<el-table-column prop="batchName" label="后评估批次名称">
</el-table-column>
<el-table-column prop="projectName" label="评估项目名称" show-overflow-tooltip>
</el-table-column>
<el-table-column prop="projectCategory" label="建设形式">
</el-table-column>
<el-table-column prop="projectStatus" label="项目建设阶段">
</el-table-column>
<el-table-column prop="createTime" label="历史审核状态">
</el-table-column>
<el-table-column prop="planReviewDate" label="计划评估提起">
</el-table-column>
<el-table-column prop="expertName" label="评审专家名单">
</el-table-column>
<el-table-column prop="column17" label="提交评估材料"> </el-table-column>
</el-table>
<el-pagination
@size-change="handleSizeChange"
@current-change="handleCurrentChange"
:current-page="currentPage"
:page-sizes="[10, 15, 20, 50]"
:page-size="100"
layout="total, sizes, prev, pager, next, jumper"
:total="total"
class="elpagination"
>
</el-pagination>
<el-dialog
title="提交评估材料"
:visible.sync="dialog"
width="90%"
:modal-append-to-body="false"
:append-to-body="false"
@close="closeDialog"
>
<div class="dialog">
<p class="xqtitle"><span></span>批次详情</p>
<el-form
:model="ruleFormdialog"
ref="ruleFormdialog"
label-width="100px"
class="demo-ruleForm"
>
<el-form-item label="批次年度:" prop="batchYear" class="fromItem">
<el-input v-model="ruleFormdialog.batchYear" disabled></el-input>
</el-form-item>
<el-form-item label="后评估名称:" prop="batchName" class="fromItem">
<el-input v-model="ruleFormdialog.batchName" disabled></el-input>
</el-form-item>
<el-form-item
label="计划评审日期:"
prop="planReviewDate"
class="fromItem"
>
<el-input
v-model="ruleFormdialog.planReviewDate"
disabled
></el-input>
</el-form-item>
<el-form-item label="后评估专家:" prop="fullName" class="fromItem">
<el-input v-model="ruleFormdialog.fullName" disabled></el-input>
</el-form-item>
<el-form-item label="工作组织情况:" class="textarea">
<el-input type="textarea" v-model="ruleFormdialog.desc"></el-input>
</el-form-item>
</el-form>
<p class="xqtitle"><span></span>本项目材料清单</p>
<el-table
@selection-change="handleSelectionChange"
ref="multipleTable"
:data="tableDataQD"
tooltip-effect="dark"
style="width: 100%"
header-cell-class-name="custom-th-background"
class="eltable"
:row-class-name="tableRowClassName"
border
>
<el-table-column label="序号" width="55" type="index">
</el-table-column>
<el-table-column label="材料类别" prop="batchYear"><template slot-scope="scope">
{{scope.row.batchYear}}
</template> </el-table-column>
<el-table-column prop="batchName" label="资料类型"> </el-table-column>
<el-table-column prop="projectName" label="资料名称">
</el-table-column>
<el-table-column prop="projectCategory" label="操作">
</el-table-column>
</el-table>
<el-pagination
@size-change="handleSizeChangetjcl"
@current-change="handleCurrentChangetjcl"
:current-page="currentPagetjcl"
:page-sizes="[10, 15, 20, 50]"
:page-size="100"
layout="total, sizes, prev, pager, next, jumper"
:total="total"
class="elpagination"
>
</el-pagination>
<p class="Btn" v-if="showButton">
<span @click="cancel()">取消</span
><span @click="save('add')">确认上传</span>
</p>
</div>
</el-dialog>
</div>
</template>
<script>
import {
evaluationMaterials,
clqdevaluationMaterials,
qrscevaluationMaterials,
} from "@/api/index";
import { generateYearOptions } from "@/utils/cache";
export default {
data() {
return {
yearsList:generateYearOptions(),
showButton: true,
ruleForm: {
batchYear: "",
batchName: "",
postEvalState: "",
projectName: "",
projectId: "",
},
ruleFormdialog: {
batchYear: "",
batchName: "",
planReviewDate: "",
fullName: "",
},
rules: {
batchYear: [
{ required: true, message: "请选择批次年度", trigger: "change" },
],
batchName: [
{
required: true,
message: "请选择后评估批次名称",
trigger: "change",
},
],
},
tableData: [],
tableDataQD: [], //清单列表
checkedList: [],
currentPage: 1,
pageSize: 10,
currentPagetjcl: 1,
pageSizetjcl: 10,
total: 0,
dialog: false,
};
},
mounted() {
this.submitForm();
},
methods: {
submitForm() {
let params = {
current: this.currentPage,
pageSize: this.pageSize,
};
Object.assign(params, this.ruleForm);
console.log(params);
let res = evaluationMaterials(params);
if (res.code == "200") {
this.tableData = res.data.records;
this.total = res.data.total * 1;
}
},
resetForm(formName) {
this.$refs.formName.resetFields();
this.currentPage = 1;
this.pageSize = 10;
this.submitForm();
},
//提交评估材料
async submitNexts() {
if (this.checkedList.length != 1) {
this.$message("请选择");
return;
}
console.log("222");
this.dialog = true;
let params = {
current: this.currentPage,
pageSize: this.pageSize,
};
let res = await clqdevaluationMaterials(params);
},
//详情
detailsForm() {
if (this.checkedList.length != 1) {
this.$message("请选择");
return;
}
console.log("222");
this.dialog = true;
this.showButton = false;
},
//表格颜色
tableRowClassName({ row, rowIndex }) {
if (rowIndex % 2 == 1) {
return "warning-row";
}
return "";
},
//主列表选中行信息
handleSelectionChange(selection) {
if (Array.isArray(selection) && selection.length > 1) {
this.$refs.multipleTable.toggleRowSelection(selection[0], false);
this.$refs.multipleTable.toggleRowSelection(selection[1], true);
}
this.checkedList = this.$refs.multipleTable.selection;
this.ruleFormdialog = this.checkedList[0];
console.log(this.checkedList, "2222");
},
handleSizeChange(val) {
console.log(`每页 ${val} 条`);
this.pageSize = val;
},
handleCurrentChange(val) {
console.log(`当前页: ${val}`);
this.currentPage = val;
},
handleSizeChangetjcl(val) {
console.log(`每页 ${val} 条`);
this.pageSizetjcl = val;
},
handleCurrentChangetjcl(val) {
console.log(`当前页: ${val}`);
this.currentPagetjcl = val;
},
cancel() {
this.dialog = false;
// this.dialogXQ = false;
},
closeDialog() {
console.log("guanbi");
this.showButton = true;
},
async save(type) {
this.dialog = false;
// this.dialogXQ = false;
if (type == "add") {
let params = {};
let res = await qrscevaluationMaterials(params);
}
},
},
};
</script>
<style scoped lang="scss">
.main {
font-size: 14px;
position: relative;
height: 100%;
width: 100%;
box-sizing: border-box;
}
.el-form {
display: flex;
width: 100%;
flex-wrap: wrap;
border-top: 2px solid #23c6c8;
border-left: 1px solid #dee5e7;
border-right: 1px solid #dee5e7;
border-bottom: 1px solid #dee5e7;
padding: 20px 10px;
margin-bottom: 20px;
.fromItem {
width: 24%;
margin: 0 0.5%;
margin-bottom: 20px;
.el-input {
width: 226px;
}
.el-select {
width: 226px;
}
}
/deep/ .el-form-item__content {
text-align: left;
}
/deep/ .el-form-item__label {
font-weight: bold;
color: #000;
width: 120px !important;
}
.button {
display: inline-block;
width: 100%;
text-align: left;
/deep/ .el-form-item__content {
margin-left: 20px !important;
text-align: left;
img {
width: 14px;
height: 14px;
margin-right: 15px;
vertical-align: middle;
}
}
.el-button {
background-color: #23c6c8;
border-color: #23c6c8;
color: #fff;
}
}
}
.eltable {
widows: 100%;
box-sizing: border-box;
}
/deep/ .el-table .warning-row {
background: #f0ffff;
// color: #2785e6;
}
.elpagination {
text-align: right;
margin-right: 100px;
}
/deep/ .el-dialog {
border-radius: 10px;
}
/deep/ .el-dialog__wrapper {
position: absolute;
}
/deep/ .v-modal {
position: absolute;
}
/deep/ .el-dialog__header {
background-color: #0d867f;
padding-bottom: 20px;
text-align: left;
border-radius: 10px 10px 0 0;
.el-dialog__title {
color: #fff;
}
}
/deep/ .el-table__header th {
background-color: #eeeeee;
font-weight: bold;
.cell {
color: #333;
}
}
/deep/.el-table {
width: 100%;
.el-table__header-wrapper table,
.el-table__body-wrapper table {
width: 100% !important;
}
.el-table__body,
.el-table__footer,
.el-table__header {
table-layout: auto;
}
}
.dialog {
.xqtitle {
text-align: left;
font-size: 18px;
span {
display: inline-block;
width: 5px;
height: 20px;
background: #0d867f;
margin-right: 14px;
vertical-align: middle;
}
}
}
.textarea {
width: 100%;
.el-textarea {
width: 60%;
}
}
.Btn {
width: 200px;
margin: 0 auto;
span {
display: inline-block;
width: 80px;
height: 25px;
line-height: 25px;
text-align: center;
border-radius: 4px;
margin-right: 12px;
}
span:first-of-type {
border: 1px solid #000;
}
span:last-of-type {
background-color: #0d867f;
border: 1px solid #0d867f;
color: #fff;
}
}
/deep/ .el-dialog__headerbtn .el-dialog__close {
color: #fff;
}
</style>
\ No newline at end of file
<template>
<div class="main">
<div class="close">
<i class="el-icon-circle-close" @click="cancel()"></i>
</div>
<p class="title">国网辽宁电力-桌面终端管理系统合规性检查评估</p>
<div class="continer">
<p class="xqtitle"><span></span>问题清单</p>
<el-table
ref="multipleTable"
:data="tableData"
tooltip-effect="dark"
style="width: 100%"
header-cell-class-name="custom-th-background"
class="eltable"
:row-class-name="tableRowClassName"
:span-method="arraySpanMethod"
border
>
<el-table-column label="项目环节" prop="projectStagetext" width="150">
</el-table-column>
<el-table-column label="序号" width="100" type="index">
</el-table-column>
<el-table-column label="问题检查项" prop="quesCheckItem">
</el-table-column>
<el-table-column label="检查说明" prop="checkDesc"> </el-table-column>
<el-table-column label="评估问题" prop="evalQues">
<!-- <template slot-scope="scope">
<el-input v-model="scope.row.evalQues"></el-input>
</template> -->
</el-table-column>
<el-table-column label="问题截图" width="auto">
<template slot-scope="scope">
<el-image
class="imgList"
v-for="(img, index) in scope.row.images"
:key="index"
:src="img"
:preview-src-list="scope.row.images"
@click="handleImageClick(scope.row.images)"
></el-image>
</template>
</el-table-column>
</el-table>
</div>
<div class="bottom">
<!-- <p class="JYtitle"><span></span>建议</p>
<el-input
type="textarea"
:autosize="{ minRows: 2, maxRows: 4}"
placeholder="输入建议"
v-model="textarea1"
class="textarea"
>
</el-input> -->
<p class="Btn">
<span @click="cancel()">取消</span
><span @click="confirmNo()">确认无需整改</span>
<span @click="confirm()">确认需整改</span>
</p>
</div>
</div>
</template>
<script>
import {
selWtqdpostEvalQuesInfo,
qrzgqrbgSelQuesInfo,
qrwzgqrbgSelQuesInfo,
presignedUrl
} from "@/api/index";
export default {
data() {
return {
tableData: [],
mergingRows: [],
mergingPos: 0,
clqparams: {},
textarea1: "",
};
},
mounted() {
this.clqparams = JSON.parse(this.$route.query.qrparams);
console.log(this.clqparams, "this.clqparams");
this.init(this.clqparams);
},
methods: {
async init(type) {
let params = type;
console.log(params, "333");
let res = await selWtqdpostEvalQuesInfo(params);
console.log(res, "0000");
if (res.code == "200") {
this.tableData = res.data.records;
this.tableData.forEach((item) => {
switch (item.projectStage) {
case 1:
this.$set(item, "projectStagetext", "1.可研");
break;
case 2:
this.$set(item, "projectStagetext", "2.计划");
break;
case 3:
this.$set(item, "projectStagetext", "3.采购");
break;
case 4:
this.$set(item, "projectStagetext", "4.合同");
break;
case 5:
this.$set(item, "projectStagetext", "5.执行");
break;
case 6:
this.$set(item, "projectStagetext", "6.结决算及转资");
break;
}
let urlStr = item.url;
let arrUrl = [];
let showUrlList = [];
// 有url拆分调接口换预览
if (urlStr) {
console.log(urlStr, "urlStr");
if (urlStr.includes(",")) {
arrUrl = item.url.split(",");
} else {
arrUrl.push(urlStr);
}
console.log(arrUrl, "arrUrlarrUrl");
arrUrl.forEach(async (showUrl) => {
let paramsUrl = {
url: showUrl,
};
let resUrl = await presignedUrl(paramsUrl);
showUrlList.push(resUrl.msg);
});
console.log(showUrlList, "showUrlList");
this.$set(item, "images", showUrlList);
}
});
this.total = res.data.total * 1;
this.dataPretreatment();
}
},
//表格颜色
tableRowClassName({ row, rowIndex }) {
if (rowIndex % 2 == 1) {
return "warning-row";
}
return "";
},
arraySpanMethod({ row, column, rowIndex, columnIndex }) {
if (columnIndex === 0) {
//第一列
const _row = this.mergingRows[rowIndex];
const _col = _row > 0 ? 1 : 0;
return {
rowspan: _row,
colspan: _col,
};
}
},
dataPretreatment() {
for (let i = 0; i < this.tableData.length; i++) {
// tabledata 表格数据源
if (i === 0) {
this.mergingRows.push(1);
this.mergingPos = 0;
} else {
if (
this.tableData[i].projectStage ===
this.tableData[i - 1].projectStage
) {
//哪些数据是要合并的 合并的条件是什么
this.mergingRows[this.mergingPos] += 1;
this.mergingRows.push(0);
} else {
this.mergingRows.push(1);
this.mergingPos = i;
}
}
}
},
cancel() {
console.log('电击取消')
this.$router.go(-1);
},
//确认更改
async confirm() {
let params = {
projectId: this.clqparams.projectId,
batchId: this.clqparams.batchId,
};
let res = await qrzgqrbgSelQuesInfo(params);
if (res.code == "200") {
this.$router.go(-1);
} else {
this.$message("确认失败");
}
},
//确认无更改
async confirmNo() {
let params = {
projectId: this.clqparams.projectId,
batchId: this.clqparams.batchId,
};
let res = await qrwzgqrbgSelQuesInfo(params);
if (res.code == "200") {
this.$router.go(-1);
} else {
this.$message("确认失败");
}
},
},
};
</script>
<style lang="scss" scoped>
.main {
font-size: 14px;
position: relative;
height: 100%;
width: 100%;
box-sizing: border-box;
overflow-x: hidden;
.bottom {
width:calc(100% - 246px);
position:fixed;
bottom: -15px;
right: 0;
z-index: 100;
background-color: #f5f5f6;
line-height: 80px;
.textarea {
margin-top: 1px;
}
.Btn {
line-height: 80px;
span {
display: inline-block;
width: 95px;
height: 30px;
line-height: 30px;
text-align: center;
border-radius: 5px;
margin-right: 32px;
background-color: #0d867f;
border: 1px solid #0d867f;
color: #fff;
}
span:first-of-type {
border: 1px solid grey;
color: #000;
background-color: #fff;
}
}
}
.JYtitle {
width: 100%;
height: 20px;
text-align: left;
font-size: 18px;
// margin-top: 1px;
padding-left: 10px;
line-height: 20px;
span {
display: inline-block;
width: 5px;
height: 30px;
background: #0d867f;
margin-right: 24px;
vertical-align: middle;
border-radius: 3px;
}
}
}
.close {
position: absolute;
right: 20px;
top: 20px;
.el-icon-circle-close {
font-size: 30px;
// background-color: #0d867f;
// color: #fff;
}
}
.title {
text-align: left;
background-color: #fff;
height: 40px;
line-height: 40px;
color: grey;
font-size: 15px;
}
.continer {
width: 100%;
height: 800px;
overflow-y: auto;
background-color: #f5f5f6;
padding: 10px;
padding-top: 0;
}
.tableTitle {
background: #0d867f;
color: #f5f5f6;
height: 40px;
line-height: 40px;
text-align: left;
padding-left: 20px;
font-weight: 600;
font-size: 15px;
}
.eltable {
width: 100%;
box-sizing: border-box;
margin-bottom: 50px;
}
/deep/ .el-table .warning-row {
background: #f0ffff;
// color: #2785e6;
}
.elpagination {
text-align: right;
margin-right: 100px;
}
/deep/.el-table {
width: 100%;
.el-table__header-wrapper table,
.el-table__body-wrapper table {
width: 100% !important;
}
.el-table__body,
.el-table__footer,
.el-table__header {
table-layout: auto;
}
}
/deep/.el-table th.el-table__cell.is-leaf,
.el-table td.el-table__cell {
text-align: center;
}
/deep/ .el-icon-folder-delete {
margin-right: 10px;
}
/deep/.el-table th.el-table__cell.is-leaf,
.el-table td.el-table__cell {
text-align: center;
}
/deep/ .el-table__cell {
text-align: center;
}
.xqtitle {
width: 100%;
height: 20px;
text-align: left;
font-size: 18px;
padding: 20px 0;
border-bottom: 1px solid gainsboro;
margin-top: 1px;
span {
display: inline-block;
width: 5px;
height: 20px;
background: #0d867f;
margin-right: 14px;
vertical-align: middle;
}
}
.imgList {
/deep/ .el-image__inner {
width: 60px;
height: 60px;
}
}
</style>
\ No newline at end of file
...@@ -129,7 +129,7 @@ export default { ...@@ -129,7 +129,7 @@ export default {
} else if (newVal == 99) { } else if (newVal == 99) {
this.menuList = trendsRules(99); this.menuList = trendsRules(99);
this.$router.push({ this.$router.push({
path: "/mainLayout/auxiliarySelection", path: "/assesszc/auxiliarySelection",
}); });
} }
this.$refs.kzMenu.activeIndex = this.$route.path; this.$refs.kzMenu.activeIndex = this.$route.path;
......
...@@ -86,7 +86,6 @@ export default { ...@@ -86,7 +86,6 @@ export default {
{ {
name: "张宇", name: "张宇",
code: "sgtig_zhangyu", code: "sgtig_zhangyu",
url: "/mainLayout/auxiliarySelection",
children: [], children: [],
}, },
], ],
......
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!