flx:新增危大辨识

This commit is contained in:
Rain_ 2025-09-27 15:09:04 +08:00
parent b0b54cb6ab
commit 1fdb13b8ae
7 changed files with 714 additions and 32 deletions

View File

@ -181,6 +181,13 @@ export const getBigDangerRecognizeDetailPageApi = data => get('xmgl/bigDangerRec
export const saveByTypeBigDangerRecognizeDetailApi = data => post('xmgl/bigDangerRecognizeDetail/saveByType', data);
// 删除危大清单辨识详情信息
export const deleteBigDangerRecognizeDetailApi = data => post('xmgl/bigDangerRecognizeDetail/delete', data);
// 危大工程清单汇总
export const getNewestListByDescribeBigDangerRecognizeDetailApi = data => post('xmgl/bigDangerRecognizeDetail/getNewestListByDescribe', data);
// 新增查看管控要点
export const getControlContentListByDescribeIdApi = data => post('xmgl/bigDangerTypeControlContent/getControlContentListByDescribeId', data);
// 编辑查看管控要点
export const getselectListBigDangerControlItemApi = data => post('xmgl/bigDangerControlItem/selectControlItemList', data);
// 列表查询危大工程类别信息
export const getBigDangerTypeListApi = data => post('xmgl/bigDangerType/list', data);

View File

@ -60,7 +60,7 @@
class="width_100"
@click="goto5()"
v-if="
$route.path.indexOf('/firm/projectManage') == -1 &&
$route.path.indexOf('/firm/') == -1 &&
![5, 6, 10].includes($store.state.userInfo.accountType)
"
:title="enterpriseFront"

View File

@ -83,7 +83,7 @@
<el-option
v-for="item in bigDangerTypeList"
:key="item.id"
:label="item.title"
:label="item.typeName"
:value="item.id"
></el-option>
</el-select>
@ -98,7 +98,6 @@
</el-form-item>
</el-form>
<el-table
height="671px"
:data="dataList"
class="tables"
ref="multipleTable"
@ -176,12 +175,11 @@
</el-table-column>
<el-table-column align="center" prop="catalogName" label="管控要点">
<template slot-scope="scope">
<!-- {{ scope.row.controlItemCount.yesNum }}/ -->
<span
class="primaryText hovers"
@click="showBindDialogFn(scope.row)"
>{{ scope.row.controlItemCount.yesNum }}/{{
scope.row.controlItemCount.totalItemNum
}}</span
>{{ scope.row.controlItemCount.totalItemNum }}</span
>
</template>
</el-table-column>
@ -277,23 +275,6 @@
<span class="redText">{{ scope.row.noShowName }}</span>
</template>
</el-table-column>
<!-- <el-table-column
label="状态"
align="center"
v-if="$route.path.indexOf('/project/') == -1"
>
<template slot-scope="scope">
<el-button
@click="delBindFn(scope.row)"
type="text"
size="small"
style="color: red"
icon="el-icon-delete"
>
<span style="font-size: 14px">取消绑定</span>
</el-button>
</template>
</el-table-column> -->
</el-table>
<div
class="dialog-footer"
@ -338,6 +319,8 @@ import {
saveByTypeBigDangerRecognizeDetailApi,
selectBigDangerTypeControlContentApi,
getBigDangerTypeListApi,
getControlContentListByDescribeIdApi,
getselectListBigDangerControlItemApi,
} from "@/assets/js/api/dangerousBigProject";
import { getDictionaryItemApi } from "@/assets/js/api/companyDiagram";
import CatalogueLibraryDetail from "@/views/projectFront/dangerousBigProject/newCheckTable/catalogueLibraryDetail.vue";
@ -400,11 +383,24 @@ export default {
methods: {
showBindDialogFn(item) {
this.bindControlDialog = true;
selectBigDangerTypeControlContentApi({
typeId: this.parentid1,
}).then((res) => {
this.itemDetailsData = res.result;
});
if(this.dynamicType == 'add') {
getControlContentListByDescribeIdApi({
describeId: item.id,
projectSn: this.projectSn,
}).then((res) => {
this.itemDetailsData = res.result;
});
} else {
let params = {
projectSn: this.projectSn,
recognizeDetailId: item.id,
}
getselectListBigDangerControlItemApi({
...params,
}).then((res) => {
this.itemDetailsData = res.result;
});
}
},
//
getDicProjectTypeList() {
@ -420,6 +416,7 @@ export default {
getBigDangerTypeDetailList() {
getBigDangerTypeListApi({
projectSn: this.projectSn,
projectClassify: this.queryParams.projectClassify,
}).then((res) => {
if (res.result.length > 0) {
this.bigDangerTypeList = res.result;

View File

@ -0,0 +1,672 @@
<template>
<div class="whiteBlock">
<div class="checkPoint">
<div class="header_title">
<!-- <div class="radio-group">
<el-radio-group
@change="handleQuery"
size="medium"
border
v-model="queryParams.recognizeConclusion"
>
<el-radio-button label="">全部</el-radio-button>
<el-radio-button :label="1"
>已辨识出危大工程({{
riskListDetailInfo.recognizedBigDangerNum || 0
}})</el-radio-button
>
</el-radio-group>
</div> -->
<el-form
size="medium"
:model="queryParams"
ref="queryForm"
:inline="true"
>
<el-form-item label="是否超危" prop="dangerType">
<el-radio-group
@change="handleQuery"
v-model="queryParams.dangerType"
>
<el-radio :label="2"></el-radio>
<el-radio :label="1"></el-radio>
</el-radio-group>
</el-form-item>
<el-form-item label="施工专业" prop="projectClassify">
<el-select
@change="getBigDangerTypeDetailList"
v-model="queryParams.projectClassify"
clearable
filterable
placeholder="请选择"
>
<el-option
v-for="item in projectTypeList"
:key="item.id"
:label="item.name"
:value="item.data"
></el-option>
</el-select>
</el-form-item>
<el-form-item label="危大工程类别" prop="engineeringTypeId">
<el-select
v-model="queryParams.engineeringTypeId"
clearable
filterable
placeholder="请选择"
>
<el-option
v-for="item in bigDangerTypeList"
:key="item.id"
:label="item.typeName"
:value="item.id"
></el-option>
</el-select>
</el-form-item>
<el-form-item label="辨识结论" prop="recognizeConclusion">
<el-select
v-model="queryParams.recognizeConclusion"
size="medium"
clearable
filterable
placeholder="请选择"
>
<el-option label="√" :value="1"></el-option>
<el-option label="×" :value="2"></el-option>
</el-select>
</el-form-item>
<el-form-item>
<el-button type="primary" plain @click="handleQuery"
>查询</el-button
>
<el-button type="warning" plain @click="handleRefresh"
>刷新</el-button
>
</el-form-item>
</el-form>
<el-table
:data="dataList"
class="tables"
ref="multipleTable"
row-key="id"
:height="550"
>
<!-- <el-table-column align="center" type="selection" width="55">
</el-table-column> -->
<el-table-column
align="center"
prop="projectClassifyName"
label="施工专业"
></el-table-column>
<el-table-column
align="center"
prop="typeName"
label="工程类别"
></el-table-column>
<el-table-column
align="center"
prop="catalogName"
label="辨识标准"
></el-table-column>
<el-table-column align="center" prop="dangerType" label="是否超危">
<template slot-scope="scope">
<span style="color: #f76c6c" v-if="scope.row.dangerType === 2"
></span
>
<span v-else></span>
</template>
</el-table-column>
<el-table-column
align="center"
prop="recognizeConclusion"
label="辨识结论"
>
<template slot-scope="scope">
<span
class="attendance-success"
v-if="scope.row.recognizeConclusion === 1"
></span>
<span
class="attendance-fail"
v-else-if="scope.row.recognizeConclusion === 2"
></span>
<span v-else>--</span>
</template>
</el-table-column>
<el-table-column align="center" prop="catalogName" label="管控要点">
<template slot-scope="scope">
<span
class="primaryText hovers"
@click="showBindDialogFn(scope.row)"
>{{ scope.row.controlItemCount.totalItemNum }}</span
>
</template>
</el-table-column>
<el-table-column
align="center"
prop="catalogName"
label="计划施工起止时间"
width="280"
>
<template slot-scope="scope">
<span
>{{ scope.row.planBuildBeginDate || "--" }}
{{ scope.row.planBuildEndDate || "--" }}</span
>
</template>
</el-table-column>
<el-table-column
align="center"
prop="catalogName"
label="备注"
></el-table-column>
</el-table>
<pagination
:total="Number(queryParams.total)"
:page.sync="queryParams.pageNo"
:limit.sync="queryParams.pageSize"
@pagination="getBigDangerRecognizeDetailPage"
:pageSizes="[...$store.state.PAGESIZRS]"
layout="total,sizes, prev, pager, next, jumper"
/>
</div>
</div>
<!-- 绑定管控内容 -->
<el-dialog
class="dialig"
:modal-append-to-body="false"
:title="
$t('message.dangerousBigDictionary.bind') +
$t('message.dangerousBigDictionary.controlContent')
"
:visible.sync="bindControlDialog"
width="867px"
>
<div class="dialog_content">
<el-table
class="tables"
ref="multipleTable"
:data="itemDetailsData"
style="width: 100%"
>
<!-- 分类 -->
<el-table-column
prop="controlTypeName"
:label="$t('message.dangerousBigDictionary.type')"
align="center"
>
<template slot-scope="scope">
{{ scope.row.controlTypeName }}
</template>
</el-table-column>
<!-- 管控内容 -->
<el-table-column
prop="controlContent"
:label="$t('message.dangerousBigDictionary.controlContent')"
align="center"
>
</el-table-column>
<!-- 显示状态 -->
<el-table-column
prop="tableName"
:label="$t('message.dangerousBigDictionary.showStatus')"
align="center"
>
<template slot-scope="scope">
<span class="primaryText" style="margin-right: 20px">{{
scope.row.yesShowName
}}</span>
<span class="redText">{{ scope.row.noShowName }}</span>
</template>
</el-table-column>
</el-table>
<div
class="dialog-footer"
v-if="$route.path.indexOf('/project/') == -1"
>
<el-button
@click="bindControlDialog = false"
size="medium"
icon="el-icon-circle-close"
>
<!-- -->
{{ $t("message.dangerousBigDictionary.cancel") }}
</el-button>
<!-- <el-button
type="danger"
@click="delBindFn()"
size="medium"
icon="el-icon-circle-check"
>
删除绑定
{{$t('message.dangerousBigDictionary.remove')+$t('message.dangerousBigDictionary.bind')}}
</el-button
> -->
<el-button
type="primary"
@click="saveSelectedControl()"
size="medium"
icon="el-icon-circle-check"
>
<!-- -->
{{ $t("message.dangerousBigDictionary.bind") }}
</el-button>
</div>
</div>
</el-dialog>
</div>
</template>
<script>
import {
deleteBigDangerRecognizeDetailApi,
getNewestListByDescribeBigDangerRecognizeDetailApi,
saveByTypeBigDangerRecognizeDetailApi,
getselectListBigDangerControlItemApi,
getBigDangerTypeListApi,
} from "@/assets/js/api/dangerousBigProject";
import { getDictionaryItemApi } from "@/assets/js/api/companyDiagram";
import CatalogueLibraryDetail from "@/views/projectFront/dangerousBigProject/newCheckTable/catalogueLibraryDetail.vue";
export default {
name: "dictionaryDetail",
components: {
CatalogueLibraryDetail,
},
data() {
return {
projectSn: "",
projectTypeList: [],
safetyRiskDetailShow: false,
dataList: [],
bigDangerModuleList: [
{
id: 1,
title: "专项施工方案",
},
{
id: 2,
title: "专家论证",
},
{
id: 3,
title: "方案交底",
},
{
id: 4,
title: "安全技术交底",
},
],
//
queryParams: {
pageNo: 1,
pageSize: 10,
total: 0,
projectClassify: "",
engineeringTypeId: "",
dangerType: 2,
recognizeConclusion: "",
},
bindControlDialog: false,
bigDangerTypeList: [],
itemDetailsData: [],
selectionList: [],
};
},
created() {
this.projectSn = this.$store.state.projectSn;
this.getDicProjectTypeList();
this.getBigDangerRecognizeDetailPage();
},
mounted() {},
methods: {
showBindDialogFn(item) {
this.bindControlDialog = true;
let params = {
projectSn: this.projectSn,
recognizeDetailId: item.id,
};
getselectListBigDangerControlItemApi({
...params,
}).then((res) => {
this.itemDetailsData = res.result;
});
},
//
getDicProjectTypeList() {
//
getDictionaryItemApi({
dictionaryEncoding: "risk_list_project_type",
}).then((res) => {
if (res.result.length > 0) {
this.projectTypeList = res.result;
}
});
},
getBigDangerTypeDetailList() {
getBigDangerTypeListApi({
projectSn: this.projectSn,
projectClassify: this.queryParams.projectClassify,
}).then((res) => {
if (res.result.length > 0) {
this.bigDangerTypeList = res.result;
}
});
},
getBigDangerRecognizeDetailPage() {
getNewestListByDescribeBigDangerRecognizeDetailApi({
pageNo: this.queryParams.pageNo,
pageSize: this.queryParams.pageSize,
dangerType: this.queryParams.dangerType,
recognizeConclusion: this.queryParams.recognizeConclusion,
engineeringTypeId: this.queryParams.engineeringTypeId,
projectClassify: this.queryParams.projectClassify,
// recognizeId: this.riskListDetailInfo.id,
projectSn: this.projectSn,
}).then((res) => {
if (res.code == 200) {
this.dataList = res.result.records.map((item) => {
return {
...item,
};
});
this.queryParams.total = res.result.total;
}
});
},
handleQuery() {
this.queryParams.pageNo = 1;
this.getBigDangerRecognizeDetailPage();
},
handleRefresh() {
this.queryParams.projectClassify = "";
this.queryParams.engineeringTypeId = "";
this.handleQuery();
},
handleChange(row) {
const findIndex = this.selectionList.findIndex(
(item) => item.id == row.id
);
if (findIndex == -1) {
this.selectionList.push(row);
} else {
this.selectionList.splice(findIndex, 1, row);
}
},
saveBtn() {
let catalogModuleList = this.selectionList.map((item) => {
return {
detailId: item.id,
describeId: item.describeId,
planBuildBeginDate:
item.identificationTime.length > 0
? item.identificationTime[0]
: "",
planBuildEndDate:
item.identificationTime.length > 0
? item.identificationTime[1]
: "",
recognizeConclusion: item.recognizeConclusion,
};
});
saveByTypeBigDangerRecognizeDetailApi({
detailList: catalogModuleList,
projectClassify: this.queryParams.projectClassify,
recognizeId: this.riskListDetailInfo.id,
projectSn: this.projectSn,
}).then((res) => {
if (res.success) {
this.$message.success("保存成功");
this.sendValue();
}
});
},
handleDelete(row) {
this.$confirm("删除后操作不可恢复,请谨慎操作!", "警告", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning",
})
.then(() => {
if (row.id) {
deleteBigDangerRecognizeDetailApi({
id: row.id,
}).then((res) => {
this.getBigDangerRecognizeDetailPage();
});
} else {
const findIndex = this.dataList.findIndex(
(item) => item.catalogId === row.catalogId
);
if (findIndex !== -1) {
this.dataList.splice(findIndex, 1);
}
}
})
.catch(() => {});
},
sendValue() {
this.selectionList = [];
// this.safetyRiskDetailShow = true;
this.$emit("updateValue", false);
},
},
};
</script>
<style lang="less" scoped>
.tables {
min-height: initial;
.el-select {
width: 92px !important;
height: 34px;
}
}
.checkPoint {
box-sizing: border-box;
position: relative;
// height: calc(100% - 42px);
height: calc(100%);
.header_title {
padding: 16px 20px 0 20px;
:deep(.el-cascader__search-input) {
min-width: 10px;
}
}
:deep(.el-radio-button__orig-radio:checked + .el-radio-button__inner) {
color: #5181f6;
background-color: transparent;
border-color: #d7dbe9;
box-shadow: none;
}
.pagination-container {
padding: 0;
width: 100%;
position: absolute;
bottom: 16px;
left: 50%;
transform: translateX(-50%);
}
.el-form-item {
margin-bottom: 20px;
margin-right: 30px;
}
.el-form-item:last-child {
margin-right: 0;
}
.el-button + .el-button {
margin-left: 20px;
}
.el-radio {
margin-right: 20px;
}
.el-select,
.el-input {
width: 192px;
height: 34px;
}
.el-date-editor {
width: 247px;
height: 34px;
}
.radio-group {
margin-bottom: 20px;
/deep/ .el-radio-button__inner {
// width: 100px;
height: 33px;
color: #b2b8c2;
}
}
.edit {
width: 100%;
justify-content: center;
cursor: pointer;
img {
margin-right: 5px;
}
}
}
.el-form-item {
margin-bottom: 10px;
}
.attendance-success {
width: 14px;
height: 14px;
background-image: url(~@/assets/images/laborManage/opensuccess_active.png);
background-size: 100% 100%;
background-repeat: no-repeat;
display: inline-block;
}
.attendance-fail {
width: 14px;
height: 14px;
background-image: url(~@/assets/images/laborManage/openerror_active.png);
background-size: 100% 100%;
background-repeat: no-repeat;
display: inline-block;
}
.flex {
display: flex;
}
:deep(.el-icon-back) {
background-image: url("~@/assets/images/rollback-icon.png");
background-size: 100% 100%;
background-repeat: no-repeat;
width: 14px;
height: 14px;
background-color: white;
border-radius: 50%;
}
:deep(.el-icon-back::before) {
display: none;
}
.table_my {
margin: 12px 0;
display: flex;
align-items: flex-start;
> .el-button {
margin-left: 15px;
}
table {
width: 50%;
border: 1px solid #ccc;
border-collapse: collapse;
font-size: 14px;
}
th,
td {
height: 50px;
border: 1px solid #ccc;
text-align: center;
min-width: 80px;
}
thead {
background-color: #f2f2f2;
}
:deep(.el-input-number) {
width: 127px;
.el-input__inner {
height: 35px;
width: 127px;
}
}
tr:first-child :deep(.el-input-number),
tr:last-child :deep(.el-input-number) {
width: 270px;
.el-input__inner {
width: 270px;
}
}
tr:first-child td:first-child span {
margin-left: 0;
margin-right: 20px;
}
tr:last-child td:first-child span {
margin-left: 20px;
margin-right: 0;
}
.tablebox2 {
width: 35%;
tr:last-child td:first-child span,
tr:first-child td:first-child span {
margin-left: 26px;
margin-right: 26px;
}
:deep(.el-input-number) {
width: 127px !important;
.el-input__inner {
width: 127px !important;
}
}
}
span {
margin: 0 26px;
}
.riskcolor {
color: white;
padding: 4px 6px;
width: 64px;
display: inline-block;
}
.riskcolor1 {
background-color: #eb4047;
}
.riskcolor2 {
background-color: #ffbf00;
}
.riskcolor3 {
background-color: #ffff00;
}
.riskcolor4 {
background-color: #006fbf;
}
}
.container_main {
width: calc(100% - 30px);
height: calc(100% - 30px);
padding: 15px;
overflow-y: auto;
overflow-x: hidden;
.el-form-item {
margin-bottom: 10px;
}
}
.sidebar_btn {
display: flex;
justify-content: space-between;
align-items: center;
padding-bottom: 8px;
> div {
display: flex;
align-items: center;
}
.el-button + .el-button,
p,
.el-radio-group {
margin-left: 8px;
}
}
.el-form-item--mini.el-form-item {
margin-bottom: 8px;
}
</style>

View File

@ -1390,6 +1390,7 @@ export default {
}
},
onExamineClick(row) {
console.log(112233, row)
this.workTicketId = row.id;
this.getWorkTicketQueryById();
this.getWorkTicketHistoryList();
@ -1700,8 +1701,10 @@ export default {
});
},
onChangeState(operateStatus) {
console.log(55555, this.workTicketId);
const workTicketId = this.workTicketId;
let data = {
id: this.workTicketId,
id: workTicketId,
projectSn: this.projectSn,
operateStatus,
};
@ -1711,8 +1714,10 @@ export default {
this.initWorkTicketClose();
this.getWorkTicketList();
this.getWorkTicketCountWorkTicket();
console.log(44444, workTicketId);
this.onExamineClick({
id: this.workTicketId,
id: workTicketId,
});
}
});

View File

@ -67,6 +67,7 @@
type="primary"
plain
@click="backTo()"
v-if="$route.path.indexOf('/userCenter/') == -1"
size="mini"
style="margin-right: 30px;"
>返回</el-button

View File

@ -175,7 +175,7 @@ export default {
},
exportFn() {
let requestData = {
sn: this.$store.state.projectSn,
sn: this.$store.state.projectSn || this.$store.state.userInfo.sn,
// sn: this.$store.state.userInfo.sn || this.$store.state.userInfo.headquartersSn,
pageNo: this.pageInfo.pageNo,
pageSize: this.pageInfo.pageSize,
@ -230,7 +230,7 @@ export default {
//
getList() {
let requestData = {
sn: this.$store.state.projectSn,
sn: this.$store.state.projectSn || this.$store.state.userInfo.sn || this.$store.state.userInfo.headquartersSn,
// sn: this.$store.state.userInfo.sn || this.$store.state.userInfo.headquartersSn,
pageNo: this.pageInfo.pageNo,
pageSize: this.pageInfo.pageSize,