|
@@ -1,185 +1,189 @@
|
|
|
<template>
|
|
|
- <div
|
|
|
- style="width: 100%; height: calc(100% - 10px); display: flex; flex-direction: column;overflow: auto;"
|
|
|
+ <div
|
|
|
+ style="
|
|
|
+ width: 100%;
|
|
|
+ height: calc(100% - 10px);
|
|
|
+ display: flex;
|
|
|
+ flex-direction: column;
|
|
|
+ overflow: auto;
|
|
|
+ "
|
|
|
+ >
|
|
|
+ <table
|
|
|
+ v-if="JQTbData.length > 0"
|
|
|
+ class="table-auto"
|
|
|
+ border="0"
|
|
|
+ cellspacing="0"
|
|
|
+ cellpadding="0"
|
|
|
+ style="border-collapse: collapse"
|
|
|
+ width="100%"
|
|
|
>
|
|
|
- <table
|
|
|
- v-if="JQTbData.length>0"
|
|
|
- class="table-auto"
|
|
|
- border="0"
|
|
|
- cellspacing="0"
|
|
|
- cellpadding="0"
|
|
|
- style="border-collapse: collapse"
|
|
|
- width="100%"
|
|
|
- >
|
|
|
- <thead>
|
|
|
- <tr class="thead-content">
|
|
|
- <td colspan="2">自动审查</td>
|
|
|
- </tr>
|
|
|
- </thead>
|
|
|
- <tbody v-for="item in JQTbData" :key="item.id">
|
|
|
- <tr>
|
|
|
- <td colspan="1" class="tb-head-title">
|
|
|
- {{ item.rulename }}
|
|
|
- </td>
|
|
|
- <td class="field">
|
|
|
- <el-button
|
|
|
- type="primary"
|
|
|
- link
|
|
|
- @click="viewAutoDetail(item.children,item.rulename)"
|
|
|
- >详情</el-button
|
|
|
- >
|
|
|
- </td>
|
|
|
- </tr>
|
|
|
- <tr v-for="option in item.children" :key="option.id">
|
|
|
- <td valign="center" class="tb-title">
|
|
|
- {{ option.rulename }}
|
|
|
- </td>
|
|
|
- <td valign="center" class="field">
|
|
|
- {{ option.taskresult !== "正在审查" ? option.taskresult : "无数据" }}
|
|
|
- </td>
|
|
|
- </tr>
|
|
|
- </tbody>
|
|
|
- </table>
|
|
|
- <table
|
|
|
- v-if="RGTbData.length>0"
|
|
|
- class="table-auto"
|
|
|
- border="0"
|
|
|
- cellspacing="0"
|
|
|
- cellpadding="0"
|
|
|
- style="border-collapse: collapse"
|
|
|
- width="100%"
|
|
|
- >
|
|
|
- <thead>
|
|
|
- <tr class="thead-content">
|
|
|
- <td colspan="2">人工审查</td>
|
|
|
- </tr>
|
|
|
- </thead>
|
|
|
- <tbody v-for="item in RGTbData" :key="item.id">
|
|
|
- <tr>
|
|
|
- <td colspan="2" class="tb-head-title">
|
|
|
- {{ item.rulename }}
|
|
|
- </td>
|
|
|
- </tr>
|
|
|
- <tr v-for="option in item.children" :key="option.id">
|
|
|
- <td valign="center" class="tb-title">
|
|
|
- {{ option.rulename }}
|
|
|
- </td>
|
|
|
- <td valign="center" class="field">
|
|
|
- <el-radio-group
|
|
|
- v-model="option.bz"
|
|
|
- class="ml-4"
|
|
|
- :disabled="!canSC"
|
|
|
- >
|
|
|
- <el-radio label="是" size="small">是</el-radio>
|
|
|
- <el-radio label="否" size="small">否</el-radio>
|
|
|
- </el-radio-group>
|
|
|
- </td>
|
|
|
- </tr>
|
|
|
- </tbody>
|
|
|
- </table>
|
|
|
- <table
|
|
|
- class="table-auto"
|
|
|
- border="0"
|
|
|
- cellspacing="0"
|
|
|
- cellpadding="0"
|
|
|
- style="flex: 1; border-collapse: collapse"
|
|
|
- width="100%"
|
|
|
- >
|
|
|
- <thead>
|
|
|
- <tr class="thead-content">
|
|
|
- <td colspan="2">审查意见(必填)</td>
|
|
|
- </tr>
|
|
|
- </thead>
|
|
|
- <tbody>
|
|
|
- <tr>
|
|
|
- <td
|
|
|
- style="padding: 0; border: none"
|
|
|
- rowspan="5"
|
|
|
- colspan="1"
|
|
|
- valign="center"
|
|
|
- class="field"
|
|
|
- name="problemDescription"
|
|
|
- @click="clickIpt($event)"
|
|
|
- >
|
|
|
- <el-input
|
|
|
- :disabled="!canSC"
|
|
|
- resize="none"
|
|
|
- ref="inputRef"
|
|
|
- @blur="canedit = false"
|
|
|
- v-model="scyj"
|
|
|
- :autosize="{ minRows: 7, maxRows: 7 }"
|
|
|
- type="textarea"
|
|
|
- ></el-input>
|
|
|
- </td>
|
|
|
- </tr>
|
|
|
- </tbody>
|
|
|
- </table>
|
|
|
- <div
|
|
|
- style="
|
|
|
- display: flex;
|
|
|
- align-items: center;
|
|
|
- justify-content: center;
|
|
|
- height: 50px;
|
|
|
- margin-top:10px
|
|
|
- "
|
|
|
- >
|
|
|
- <el-button
|
|
|
- :disabled="!canSC"
|
|
|
- @click="save"
|
|
|
- type="primary"
|
|
|
- size="small"
|
|
|
- style="width: 80px"
|
|
|
- >保存</el-button
|
|
|
- >
|
|
|
+ <thead>
|
|
|
+ <tr class="thead-content">
|
|
|
+ <td colspan="2">自动审查</td>
|
|
|
+ </tr>
|
|
|
+ </thead>
|
|
|
+ <tbody v-for="item in JQTbData" :key="item.id">
|
|
|
+ <tr>
|
|
|
+ <td colspan="1" class="tb-head-title">
|
|
|
+ {{ item.rulename }}
|
|
|
+ </td>
|
|
|
+ <td class="field">
|
|
|
<el-button
|
|
|
- :disabled="!canSC"
|
|
|
- @click="complete"
|
|
|
- type="primary"
|
|
|
- size="small"
|
|
|
- style="width: 80px"
|
|
|
- >完结</el-button
|
|
|
+ type="primary"
|
|
|
+ link
|
|
|
+ @click="viewAutoDetail(item.children, item.rulename)"
|
|
|
+ >详情</el-button
|
|
|
>
|
|
|
- <el-button
|
|
|
- :disabled="!canSC"
|
|
|
- @click="reback"
|
|
|
- type="primary"
|
|
|
- size="small"
|
|
|
- style="width: 80px"
|
|
|
- >退回</el-button
|
|
|
- >
|
|
|
- </div>
|
|
|
- <kjyzxDialog
|
|
|
- v-if="showDialog === '空间一致性'"
|
|
|
- v-model:showDialog="showDialog"
|
|
|
- :data="detailData"
|
|
|
- style="z-index: 99999"
|
|
|
- >
|
|
|
- </kjyzxDialog>
|
|
|
- <kjzrDialog
|
|
|
- v-if="showDialog === '空间准入'"
|
|
|
- v-model:showDialog="showDialog"
|
|
|
- :data="detailData"
|
|
|
- style="z-index: 99999"
|
|
|
- v-model:cg_option_item="cg_option_item"
|
|
|
- >
|
|
|
- </kjzrDialog>
|
|
|
- <zbfhxDialog
|
|
|
- v-if="showDialog === '指标符合性'"
|
|
|
- v-model:showDialog="showDialog"
|
|
|
- :data="detailData"
|
|
|
- style="z-index: 99999"
|
|
|
- >
|
|
|
- </zbfhxDialog>
|
|
|
+ </td>
|
|
|
+ </tr>
|
|
|
+ <tr v-for="option in item.children" :key="option.id">
|
|
|
+ <td valign="center" class="tb-title">
|
|
|
+ {{ option.rulename }}
|
|
|
+ </td>
|
|
|
+ <td valign="center" class="field">
|
|
|
+ {{
|
|
|
+ option.taskresult !== "正在审查" ? option.taskresult : "无数据"
|
|
|
+ }}
|
|
|
+ </td>
|
|
|
+ </tr>
|
|
|
+ </tbody>
|
|
|
+ </table>
|
|
|
+ <table
|
|
|
+ v-if="RGTbData.length > 0"
|
|
|
+ class="table-auto"
|
|
|
+ border="0"
|
|
|
+ cellspacing="0"
|
|
|
+ cellpadding="0"
|
|
|
+ style="border-collapse: collapse"
|
|
|
+ width="100%"
|
|
|
+ >
|
|
|
+ <thead>
|
|
|
+ <tr class="thead-content">
|
|
|
+ <td colspan="2">人工审查</td>
|
|
|
+ </tr>
|
|
|
+ </thead>
|
|
|
+ <tbody v-for="item in RGTbData" :key="item.id">
|
|
|
+ <tr>
|
|
|
+ <td colspan="2" class="tb-head-title">
|
|
|
+ {{ item.rulename }}
|
|
|
+ </td>
|
|
|
+ </tr>
|
|
|
+ <tr v-for="option in item.children" :key="option.id">
|
|
|
+ <td valign="center" class="tb-title">
|
|
|
+ {{ option.rulename }}
|
|
|
+ </td>
|
|
|
+ <td valign="center" class="field">
|
|
|
+ <el-radio-group v-model="option.bz" class="ml-4" :disabled="!canSC">
|
|
|
+ <el-radio label="是" size="small">是</el-radio>
|
|
|
+ <el-radio label="否" size="small">否</el-radio>
|
|
|
+ </el-radio-group>
|
|
|
+ </td>
|
|
|
+ </tr>
|
|
|
+ </tbody>
|
|
|
+ </table>
|
|
|
+ <table
|
|
|
+ class="table-auto"
|
|
|
+ border="0"
|
|
|
+ cellspacing="0"
|
|
|
+ cellpadding="0"
|
|
|
+ style="flex: 1; border-collapse: collapse"
|
|
|
+ width="100%"
|
|
|
+ >
|
|
|
+ <thead>
|
|
|
+ <tr class="thead-content">
|
|
|
+ <td colspan="2">审查意见(必填)</td>
|
|
|
+ </tr>
|
|
|
+ </thead>
|
|
|
+ <tbody>
|
|
|
+ <tr>
|
|
|
+ <td
|
|
|
+ style="padding: 0; border: none"
|
|
|
+ rowspan="5"
|
|
|
+ colspan="1"
|
|
|
+ valign="center"
|
|
|
+ class="field"
|
|
|
+ name="problemDescription"
|
|
|
+ @click="clickIpt($event)"
|
|
|
+ >
|
|
|
+ <el-input
|
|
|
+ :disabled="!canSC"
|
|
|
+ resize="none"
|
|
|
+ ref="inputRef"
|
|
|
+ @blur="canedit = false"
|
|
|
+ v-model="scyj"
|
|
|
+ :autosize="{ minRows: 7, maxRows: 7 }"
|
|
|
+ type="textarea"
|
|
|
+ ></el-input>
|
|
|
+ </td>
|
|
|
+ </tr>
|
|
|
+ </tbody>
|
|
|
+ </table>
|
|
|
+ <div
|
|
|
+ style="
|
|
|
+ display: flex;
|
|
|
+ align-items: center;
|
|
|
+ justify-content: center;
|
|
|
+ height: 50px;
|
|
|
+ margin-top: 10px;
|
|
|
+ "
|
|
|
+ >
|
|
|
+ <el-button
|
|
|
+ :disabled="!canSC"
|
|
|
+ @click="save"
|
|
|
+ type="primary"
|
|
|
+ size="small"
|
|
|
+ style="width: 80px"
|
|
|
+ >通过</el-button
|
|
|
+ >
|
|
|
+ <!-- <el-button
|
|
|
+ :disabled="!canSC"
|
|
|
+ @click="complete"
|
|
|
+ type="primary"
|
|
|
+ size="small"
|
|
|
+ style="width: 80px"
|
|
|
+ >完结</el-button
|
|
|
+ > -->
|
|
|
+ <el-button
|
|
|
+ :disabled="!canSC"
|
|
|
+ @click="reback"
|
|
|
+ type="primary"
|
|
|
+ size="small"
|
|
|
+ style="width: 80px"
|
|
|
+ >退回</el-button
|
|
|
+ >
|
|
|
</div>
|
|
|
+ <kjyzxDialog
|
|
|
+ v-if="showDialog === '空间一致性'"
|
|
|
+ v-model:showDialog="showDialog"
|
|
|
+ :data="detailData"
|
|
|
+ style="z-index: 99999"
|
|
|
+ >
|
|
|
+ </kjyzxDialog>
|
|
|
+ <kjzrDialog
|
|
|
+ v-if="showDialog === '空间准入'"
|
|
|
+ v-model:showDialog="showDialog"
|
|
|
+ :data="detailData"
|
|
|
+ style="z-index: 99999"
|
|
|
+ v-model:cg_option_item="cg_option_item"
|
|
|
+ >
|
|
|
+ </kjzrDialog>
|
|
|
+ <zbfhxDialog
|
|
|
+ v-if="showDialog === '指标符合性'"
|
|
|
+ v-model:showDialog="showDialog"
|
|
|
+ :data="detailData"
|
|
|
+ style="z-index: 99999"
|
|
|
+ >
|
|
|
+ </zbfhxDialog>
|
|
|
+ </div>
|
|
|
</template>
|
|
|
-
|
|
|
+
|
|
|
<script>
|
|
|
import { reactive, toRefs } from "@vue/reactivity";
|
|
|
import {
|
|
|
- onMounted,
|
|
|
- watch,
|
|
|
- getCurrentInstance,
|
|
|
- onBeforeUnmount,
|
|
|
+ onMounted,
|
|
|
+ watch,
|
|
|
+ getCurrentInstance,
|
|
|
+ onBeforeUnmount,
|
|
|
} from "@vue/runtime-core";
|
|
|
import { useStore } from "vuex";
|
|
|
import { ref, nextTick } from "vue";
|
|
@@ -191,312 +195,299 @@ import { useRouter } from "vue-router";
|
|
|
import { jqlist, rjlist, getzjy, saveandend } from "@/api/ghcgysc/cggl.js";
|
|
|
|
|
|
export default {
|
|
|
- components: {
|
|
|
- kjyzxDialog,
|
|
|
- kjzrDialog,
|
|
|
- zbfhxDialog,
|
|
|
+ components: {
|
|
|
+ kjyzxDialog,
|
|
|
+ kjzrDialog,
|
|
|
+ zbfhxDialog,
|
|
|
+ },
|
|
|
+ props: {
|
|
|
+ fileView: {
|
|
|
+ type: Boolean,
|
|
|
},
|
|
|
- props: {
|
|
|
- fileView: {
|
|
|
- type: Boolean,
|
|
|
- },
|
|
|
- cg_option_item: {
|
|
|
- type: Object,
|
|
|
- },
|
|
|
+ cg_option_item: {
|
|
|
+ type: Object,
|
|
|
},
|
|
|
- setup(prop, context) {
|
|
|
- const parent = { ...context };
|
|
|
- const { proxy } = getCurrentInstance();
|
|
|
- const router = useRouter();
|
|
|
- const shenHeRule = reactive({
|
|
|
- canSC: false, // 完结/退回不可编辑,待审/审查中可编辑
|
|
|
- showDialog: "", // 自动审查的审查详情弹窗
|
|
|
- detailData: {}, // 自动审查详情某项弹窗数据
|
|
|
- RGTbData: [], // 人工审查规则项
|
|
|
- JQTbData: [], // 机器审查规则项
|
|
|
- scyj: "", // 审查意见内容
|
|
|
- RGSCDatas_origin: [], // 人工审查原始数据
|
|
|
- canedit: false, // 审查意见输入框状态
|
|
|
- timer: null, // 定时器,实时获取自动审查数据
|
|
|
- // 点击了审查意见输入框
|
|
|
- clickIpt(e) {
|
|
|
- if (shenHeRule.canSC) {
|
|
|
- shenHeRule.canedit = true;
|
|
|
- nextTick(() => {
|
|
|
- proxy.$refs.inputRef.focus();
|
|
|
- });
|
|
|
- }
|
|
|
- },
|
|
|
- // 自动审查详情
|
|
|
- viewAutoDetail(data,type) {
|
|
|
- shenHeRule.showDialog = type;
|
|
|
- shenHeRule.detailData = data;
|
|
|
- },
|
|
|
- // 保存 --- 临时保存接口 ,保存人工审查和审查意见
|
|
|
- save() {
|
|
|
- if (!shenHeRule.scyj) {
|
|
|
- ElMessage.warning("请填写审查意见");
|
|
|
- return;
|
|
|
- }
|
|
|
- let RGSCDatas_new = shenHeRule.RGSCDatas_origin.map((item) => {
|
|
|
- let obj = shenHeRule.getObjById(
|
|
|
- shenHeRule.RGTbData,
|
|
|
- item.id
|
|
|
- );
|
|
|
- item.bz = obj.bz;
|
|
|
- item.taskresult = '保存';
|
|
|
- return item;
|
|
|
- });
|
|
|
- let params = {
|
|
|
- lists: JSON.stringify(RGSCDatas_new),
|
|
|
- scyj: shenHeRule.scyj,
|
|
|
- sczt: "保存",
|
|
|
- gcid:prop.cg_option_item.id
|
|
|
- };
|
|
|
- saveandend(params)
|
|
|
- .then((res) => {
|
|
|
- if (res.success) {
|
|
|
- ElMessage.success(res.message);
|
|
|
- } else {
|
|
|
- ElMessage.warning(res.message);
|
|
|
- }
|
|
|
- })
|
|
|
- .catch((e) => {
|
|
|
- ElMessage.warning(e);
|
|
|
- });
|
|
|
- },
|
|
|
- // 完结
|
|
|
- complete() {
|
|
|
- ElMessageBox.confirm(
|
|
|
- "该操作将保存审查内容,且无法修改审查内容,确定要完结审查吗?",
|
|
|
- "提示",
|
|
|
- {
|
|
|
- confirmButtonText: "确定",
|
|
|
- cancelButtonText: "取消",
|
|
|
- type: "warning",
|
|
|
- }
|
|
|
- )
|
|
|
- .then(() => {
|
|
|
- if (!shenHeRule.scyj) {
|
|
|
- ElMessage.warning("请填写审查意见");
|
|
|
- return;
|
|
|
- }
|
|
|
- let RGSCDatas_new = shenHeRule.RGSCDatas_origin.map(
|
|
|
- (item) => {
|
|
|
- let obj = shenHeRule.getObjById(
|
|
|
- shenHeRule.RGTbData,
|
|
|
- item.id
|
|
|
- );
|
|
|
- item.bz = obj.bz;
|
|
|
- item.taskresult = '完结';
|
|
|
- return item;
|
|
|
- }
|
|
|
- );
|
|
|
- let params = {
|
|
|
- lists: JSON.stringify(RGSCDatas_new),
|
|
|
- scyj: shenHeRule.scyj,
|
|
|
- sczt: "完结",
|
|
|
- gcid:prop.cg_option_item.id
|
|
|
- };
|
|
|
- saveandend(params).then((res) => {
|
|
|
- if (res.success) {
|
|
|
- ElMessage.success(res.message);
|
|
|
- router.push("/ghcgscygl/cgsc/cgwj");
|
|
|
- } else {
|
|
|
- ElMessage.warning(res.message);
|
|
|
- }
|
|
|
- });
|
|
|
- })
|
|
|
- .catch((e) => {
|
|
|
- ElMessage.warning(e);
|
|
|
- });
|
|
|
- },
|
|
|
- // 退回
|
|
|
- reback() {
|
|
|
- ElMessageBox.confirm(
|
|
|
- "该操作将规划成果退回至提交方,确定要退回吗?",
|
|
|
- "提示",
|
|
|
- {
|
|
|
- confirmButtonText: "确定",
|
|
|
- cancelButtonText: "取消",
|
|
|
- type: "warning",
|
|
|
- }
|
|
|
- )
|
|
|
- .then(() => {
|
|
|
- if (!shenHeRule.scyj) {
|
|
|
- ElMessage.warning("请填写审查意见");
|
|
|
- return;
|
|
|
- }
|
|
|
- let RGSCDatas_new = shenHeRule.RGSCDatas_origin.map(
|
|
|
- (item) => {
|
|
|
- item.taskresult = '退回';
|
|
|
- return item;
|
|
|
- }
|
|
|
- );
|
|
|
- let params = {
|
|
|
- lists: JSON.stringify(RGSCDatas_new),
|
|
|
- scyj: shenHeRule.scyj,
|
|
|
- sczt: "退回",
|
|
|
- gcid:prop.cg_option_item.id
|
|
|
- };
|
|
|
- saveandend(params).then((res) => {
|
|
|
- if (res.success) {
|
|
|
- ElMessage.success(res.message);
|
|
|
- router.push("/ghcgscygl/cgsc/cgth");
|
|
|
- } else {
|
|
|
- ElMessage.warning(res.message);
|
|
|
- }
|
|
|
- });
|
|
|
- })
|
|
|
- .catch((e) => {
|
|
|
- ElMessage.warning(e);
|
|
|
- });
|
|
|
- },
|
|
|
- // 实时获取机器审查数据
|
|
|
- getJQList() {
|
|
|
- jqlist({ gcid: prop.cg_option_item.id }).then((res) => {
|
|
|
- shenHeRule.JQTbData = shenHeRule.toTree(res.data);
|
|
|
- });
|
|
|
- if( ['待审','审查中'].indexOf(prop.cg_option_item.sczt) > -1)
|
|
|
- shenHeRule.timer = setInterval(() => {
|
|
|
- // 机器审查结果
|
|
|
- jqlist({ gcid: prop.cg_option_item.id }).then((res) => {
|
|
|
- shenHeRule.JQTbData = shenHeRule.toTree(res.data);
|
|
|
- });
|
|
|
- }, 20000);
|
|
|
- },
|
|
|
- // 获取自动、人工、审查意见,调用三个接口 TODO还有左侧成果包列表一个接口
|
|
|
- initSCGZ() {
|
|
|
- shenHeRule.getJQList();
|
|
|
- // 人机审查结果
|
|
|
- rjlist({ gcid: prop.cg_option_item.id }).then((res) => {
|
|
|
- shenHeRule.RGSCDatas_origin = res.data;
|
|
|
- shenHeRule.RGTbData = shenHeRule.toTree(res.data);
|
|
|
- });
|
|
|
- // 总体审查意见
|
|
|
- getzjy({ gcid: prop.cg_option_item.id }).then((res) => {
|
|
|
- if (res.success) {
|
|
|
- shenHeRule.scyj = res.data;
|
|
|
- }
|
|
|
- });
|
|
|
- },
|
|
|
- // 生成树
|
|
|
- toTree(data) {
|
|
|
- let result = [];
|
|
|
- if (!Array.isArray(data)) {
|
|
|
- return result;
|
|
|
- }
|
|
|
- let map = {};
|
|
|
- data.forEach((item) => {
|
|
|
- if (!item.bz) {
|
|
|
- item.bz = "是";
|
|
|
- }
|
|
|
- map[item.id] = item;
|
|
|
- });
|
|
|
- data.forEach((item) => {
|
|
|
- let parent = map[item.pid];
|
|
|
- if (parent) {
|
|
|
- (parent.children || (parent.children = [])).push(item);
|
|
|
- } else {
|
|
|
- result.push(item);
|
|
|
- }
|
|
|
- });
|
|
|
- return result;
|
|
|
- },
|
|
|
- /**
|
|
|
- * 根据树形唯一value获取对应节点
|
|
|
- * @param {*} list
|
|
|
- * @param {*} value
|
|
|
- * @returns
|
|
|
- */
|
|
|
- getObjById(list, value) {
|
|
|
- //判断list是否是数组
|
|
|
- if (!list instanceof Array) {
|
|
|
- return null;
|
|
|
- }
|
|
|
- //遍历数组
|
|
|
- for (let i in list) {
|
|
|
- let item = list[i];
|
|
|
- if (item.id === value) {
|
|
|
- return item;
|
|
|
- } else {
|
|
|
- //查不到继续遍历
|
|
|
- if (item.children) {
|
|
|
- let value1 = shenHeRule.getObjById(
|
|
|
- item.children,
|
|
|
- value
|
|
|
- );
|
|
|
- //查询到直接返回
|
|
|
- if (value1) {
|
|
|
- return value1;
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- },
|
|
|
+ },
|
|
|
+ setup(prop, context) {
|
|
|
+ const parent = { ...context };
|
|
|
+ const { proxy } = getCurrentInstance();
|
|
|
+ const router = useRouter();
|
|
|
+ const shenHeRule = reactive({
|
|
|
+ canSC: false, // 完结/退回不可编辑,待审/审查中可编辑
|
|
|
+ showDialog: "", // 自动审查的审查详情弹窗
|
|
|
+ detailData: {}, // 自动审查详情某项弹窗数据
|
|
|
+ RGTbData: [], // 人工审查规则项
|
|
|
+ JQTbData: [], // 机器审查规则项
|
|
|
+ scyj: "", // 审查意见内容
|
|
|
+ RGSCDatas_origin: [], // 人工审查原始数据
|
|
|
+ canedit: false, // 审查意见输入框状态
|
|
|
+ timer: null, // 定时器,实时获取自动审查数据
|
|
|
+ // 点击了审查意见输入框
|
|
|
+ clickIpt(e) {
|
|
|
+ if (shenHeRule.canSC) {
|
|
|
+ shenHeRule.canedit = true;
|
|
|
+ nextTick(() => {
|
|
|
+ proxy.$refs.inputRef.focus();
|
|
|
+ });
|
|
|
+ }
|
|
|
+ },
|
|
|
+ // 自动审查详情
|
|
|
+ viewAutoDetail(data, type) {
|
|
|
+ shenHeRule.showDialog = type;
|
|
|
+ shenHeRule.detailData = data;
|
|
|
+ },
|
|
|
+ // 保存 --- 临时保存接口 ,保存人工审查和审查意见
|
|
|
+ save() {
|
|
|
+ if (!shenHeRule.scyj) {
|
|
|
+ ElMessage.warning("请填写审查意见");
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ let RGSCDatas_new = shenHeRule.RGSCDatas_origin.map((item) => {
|
|
|
+ let obj = shenHeRule.getObjById(shenHeRule.RGTbData, item.id);
|
|
|
+ item.bz = obj.bz;
|
|
|
+ item.taskresult = "保存";
|
|
|
+ return item;
|
|
|
});
|
|
|
- watch(
|
|
|
- () => prop.fileView,
|
|
|
- (count) => {
|
|
|
- nextTick(() => {});
|
|
|
- }
|
|
|
- );
|
|
|
- onMounted(() => {
|
|
|
- if (["完结", "退回"].indexOf(prop.cg_option_item.sczt) > -1) {
|
|
|
- shenHeRule.canSC = false;
|
|
|
+ let params = {
|
|
|
+ lists: JSON.stringify(RGSCDatas_new),
|
|
|
+ scyj: shenHeRule.scyj,
|
|
|
+ sczt: "保存",
|
|
|
+ gcid: prop.cg_option_item.id,
|
|
|
+ };
|
|
|
+ saveandend(params)
|
|
|
+ .then((res) => {
|
|
|
+ if (res.success) {
|
|
|
+ ElMessage.success(res.message);
|
|
|
} else {
|
|
|
- shenHeRule.canSC = true;
|
|
|
+ ElMessage.warning(res.message);
|
|
|
}
|
|
|
- shenHeRule.initSCGZ();
|
|
|
+ })
|
|
|
+ .catch((e) => {
|
|
|
+ ElMessage.warning(e);
|
|
|
+ });
|
|
|
+ },
|
|
|
+ // 完结
|
|
|
+ complete() {
|
|
|
+ ElMessageBox.confirm(
|
|
|
+ "该操作将保存审查内容,且无法修改审查内容,确定要完结审查吗?",
|
|
|
+ "提示",
|
|
|
+ {
|
|
|
+ confirmButtonText: "确定",
|
|
|
+ cancelButtonText: "取消",
|
|
|
+ type: "warning",
|
|
|
+ },
|
|
|
+ )
|
|
|
+ .then(() => {
|
|
|
+ if (!shenHeRule.scyj) {
|
|
|
+ ElMessage.warning("请填写审查意见");
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ let RGSCDatas_new = shenHeRule.RGSCDatas_origin.map((item) => {
|
|
|
+ let obj = shenHeRule.getObjById(shenHeRule.RGTbData, item.id);
|
|
|
+ item.bz = obj.bz;
|
|
|
+ item.taskresult = "完结";
|
|
|
+ return item;
|
|
|
+ });
|
|
|
+ let params = {
|
|
|
+ lists: JSON.stringify(RGSCDatas_new),
|
|
|
+ scyj: shenHeRule.scyj,
|
|
|
+ sczt: "完结",
|
|
|
+ gcid: prop.cg_option_item.id,
|
|
|
+ };
|
|
|
+ saveandend(params).then((res) => {
|
|
|
+ if (res.success) {
|
|
|
+ ElMessage.success(res.message);
|
|
|
+ router.push("/ghcgscygl/cgsc/cgwj");
|
|
|
+ } else {
|
|
|
+ ElMessage.warning(res.message);
|
|
|
+ }
|
|
|
+ });
|
|
|
+ })
|
|
|
+ .catch((e) => {
|
|
|
+ ElMessage.warning(e);
|
|
|
+ });
|
|
|
+ },
|
|
|
+ // 退回
|
|
|
+ reback() {
|
|
|
+ ElMessageBox.confirm(
|
|
|
+ "该操作将规划成果退回至提交方,确定要退回吗?",
|
|
|
+ "提示",
|
|
|
+ {
|
|
|
+ confirmButtonText: "确定",
|
|
|
+ cancelButtonText: "取消",
|
|
|
+ type: "warning",
|
|
|
+ },
|
|
|
+ )
|
|
|
+ .then(() => {
|
|
|
+ if (!shenHeRule.scyj) {
|
|
|
+ ElMessage.warning("请填写审查意见");
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ let RGSCDatas_new = shenHeRule.RGSCDatas_origin.map((item) => {
|
|
|
+ item.taskresult = "退回";
|
|
|
+ return item;
|
|
|
+ });
|
|
|
+ let params = {
|
|
|
+ lists: JSON.stringify(RGSCDatas_new),
|
|
|
+ scyj: shenHeRule.scyj,
|
|
|
+ sczt: "退回",
|
|
|
+ gcid: prop.cg_option_item.id,
|
|
|
+ };
|
|
|
+ saveandend(params).then((res) => {
|
|
|
+ if (res.success) {
|
|
|
+ ElMessage.success(res.message);
|
|
|
+ router.push("/ghcgscygl/cgsc/cgth");
|
|
|
+ } else {
|
|
|
+ ElMessage.warning(res.message);
|
|
|
+ }
|
|
|
+ });
|
|
|
+ })
|
|
|
+ .catch((e) => {
|
|
|
+ ElMessage.warning(e);
|
|
|
+ });
|
|
|
+ },
|
|
|
+ // 实时获取机器审查数据
|
|
|
+ getJQList() {
|
|
|
+ jqlist({ gcid: prop.cg_option_item.id }).then((res) => {
|
|
|
+ shenHeRule.JQTbData = shenHeRule.toTree(res.data);
|
|
|
});
|
|
|
- // 页面销毁之前清除定时器
|
|
|
- onBeforeUnmount(() => {
|
|
|
- clearInterval(shenHeRule.timer);
|
|
|
- shenHeRule.timer = null;
|
|
|
+ if (["待审", "审查中"].indexOf(prop.cg_option_item.sczt) > -1)
|
|
|
+ shenHeRule.timer = setInterval(() => {
|
|
|
+ // 机器审查结果
|
|
|
+ jqlist({ gcid: prop.cg_option_item.id }).then((res) => {
|
|
|
+ shenHeRule.JQTbData = shenHeRule.toTree(res.data);
|
|
|
+ });
|
|
|
+ }, 20000);
|
|
|
+ },
|
|
|
+ // 获取自动、人工、审查意见,调用三个接口 TODO还有左侧成果包列表一个接口
|
|
|
+ initSCGZ() {
|
|
|
+ shenHeRule.getJQList();
|
|
|
+ // 人机审查结果
|
|
|
+ rjlist({ gcid: prop.cg_option_item.id }).then((res) => {
|
|
|
+ shenHeRule.RGSCDatas_origin = res.data;
|
|
|
+ shenHeRule.RGTbData = shenHeRule.toTree(res.data);
|
|
|
});
|
|
|
- return { ...toRefs(shenHeRule) };
|
|
|
- },
|
|
|
+ // 总体审查意见
|
|
|
+ getzjy({ gcid: prop.cg_option_item.id }).then((res) => {
|
|
|
+ if (res.success) {
|
|
|
+ shenHeRule.scyj = res.data;
|
|
|
+ }
|
|
|
+ });
|
|
|
+ },
|
|
|
+ // 生成树
|
|
|
+ toTree(data) {
|
|
|
+ let result = [];
|
|
|
+ if (!Array.isArray(data)) {
|
|
|
+ return result;
|
|
|
+ }
|
|
|
+ let map = {};
|
|
|
+ data.forEach((item) => {
|
|
|
+ if (!item.bz) {
|
|
|
+ item.bz = "是";
|
|
|
+ }
|
|
|
+ map[item.id] = item;
|
|
|
+ });
|
|
|
+ data.forEach((item) => {
|
|
|
+ let parent = map[item.pid];
|
|
|
+ if (parent) {
|
|
|
+ (parent.children || (parent.children = [])).push(item);
|
|
|
+ } else {
|
|
|
+ result.push(item);
|
|
|
+ }
|
|
|
+ });
|
|
|
+ return result;
|
|
|
+ },
|
|
|
+ /**
|
|
|
+ * 根据树形唯一value获取对应节点
|
|
|
+ * @param {*} list
|
|
|
+ * @param {*} value
|
|
|
+ * @returns
|
|
|
+ */
|
|
|
+ getObjById(list, value) {
|
|
|
+ //判断list是否是数组
|
|
|
+ if (!list instanceof Array) {
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+ //遍历数组
|
|
|
+ for (let i in list) {
|
|
|
+ let item = list[i];
|
|
|
+ if (item.id === value) {
|
|
|
+ return item;
|
|
|
+ } else {
|
|
|
+ //查不到继续遍历
|
|
|
+ if (item.children) {
|
|
|
+ let value1 = shenHeRule.getObjById(item.children, value);
|
|
|
+ //查询到直接返回
|
|
|
+ if (value1) {
|
|
|
+ return value1;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ },
|
|
|
+ });
|
|
|
+ watch(
|
|
|
+ () => prop.fileView,
|
|
|
+ (count) => {
|
|
|
+ nextTick(() => {});
|
|
|
+ },
|
|
|
+ );
|
|
|
+ onMounted(() => {
|
|
|
+ if (["完结", "退回"].indexOf(prop.cg_option_item.sczt) > -1) {
|
|
|
+ shenHeRule.canSC = false;
|
|
|
+ } else {
|
|
|
+ shenHeRule.canSC = true;
|
|
|
+ }
|
|
|
+ shenHeRule.initSCGZ();
|
|
|
+ });
|
|
|
+ // 页面销毁之前清除定时器
|
|
|
+ onBeforeUnmount(() => {
|
|
|
+ clearInterval(shenHeRule.timer);
|
|
|
+ shenHeRule.timer = null;
|
|
|
+ });
|
|
|
+ return { ...toRefs(shenHeRule) };
|
|
|
+ },
|
|
|
};
|
|
|
</script>
|
|
|
-
|
|
|
+
|
|
|
<style lang="less" scoped>
|
|
|
.table-auto tr {
|
|
|
- min-height: 30px;
|
|
|
+ min-height: 30px;
|
|
|
}
|
|
|
|
|
|
.table-auto tr:hover {
|
|
|
- background-color: #f5f7fb;
|
|
|
+ background-color: #f5f7fb;
|
|
|
}
|
|
|
|
|
|
.table-auto .thead-content {
|
|
|
- background-color: #f8f8f8;
|
|
|
- text-align: center;
|
|
|
- font-size: 14px;
|
|
|
- font-weight: 600;
|
|
|
- // height: 35px;
|
|
|
+ background-color: #f8f8f8;
|
|
|
+ text-align: center;
|
|
|
+ font-size: 14px;
|
|
|
+ font-weight: 600;
|
|
|
+ // height: 35px;
|
|
|
}
|
|
|
|
|
|
.table-auto .tb-head-title {
|
|
|
- font-size: 14px;
|
|
|
- text-align: left;
|
|
|
- border: solid #ccc 1px;
|
|
|
- padding-left: 5px;
|
|
|
+ font-size: 14px;
|
|
|
+ text-align: left;
|
|
|
+ border: solid #ccc 1px;
|
|
|
+ padding-left: 5px;
|
|
|
}
|
|
|
|
|
|
.table-auto .tb-title {
|
|
|
- padding-left: 40px;
|
|
|
- text-align: left;
|
|
|
- border: solid #ccc 1px;
|
|
|
- white-space: normal;
|
|
|
- word-break: break-all;
|
|
|
- width: 75%;
|
|
|
+ padding-left: 40px;
|
|
|
+ text-align: left;
|
|
|
+ border: solid #ccc 1px;
|
|
|
+ white-space: normal;
|
|
|
+ word-break: break-all;
|
|
|
+ width: 75%;
|
|
|
}
|
|
|
|
|
|
.table-auto .field {
|
|
|
- font-size: 14px;
|
|
|
- text-align: center;
|
|
|
- border: solid #ccc 1px;
|
|
|
- padding: 0 10px;
|
|
|
- width: 30%;
|
|
|
+ font-size: 14px;
|
|
|
+ text-align: center;
|
|
|
+ border: solid #ccc 1px;
|
|
|
+ padding: 0 10px;
|
|
|
+ width: 30%;
|
|
|
}
|
|
|
-</style>
|
|
|
+</style>
|