2023-08-04 13:41:13 +08:00

1122 lines
31 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<template>
<div class="overview">
<el-dialog :show-close="false" v-model="visible1" :style="dialogStyle" @close="closeMain">
<template #title>
<div class="title-detail">
<div class="line-style"></div>
<div class="title-content">新增隐患问题</div>
<el-icon>
<close @click="closeMain" />
</el-icon>
</div>
</template>
<div class="detail-content">
<div class="content-title">隐患记录</div>
<div class="row">
<el-row :gutter="20">
<el-col :span="8">
<span class="row-span">检查情况:<span>执法中</span></span>
</el-col>
<el-col :span="8">
<span class="row-span">工程/项目名称:</span>
<span class="select-text" v-if="projectSelectedData.createTime" style="margin-right: 15px">{{
projectSelectedData.projectName || projectSelectedData.engineeringName
}}</span>
<el-button class="btn-style" type="primary" @click="projectVisible = true">选择工程/项目</el-button>
</el-col>
<el-col :span="8">
<span class="row-span">建设单位:</span>
<el-input class="input-style" disabled placeholder="请输入" v-model="basicData.buildEnt" />
</el-col>
</el-row>
</div>
<div class="row">
<el-row :gutter="20">
<el-col :span="8">
<span class="row-span">监理单位:</span>
<el-input class="input-style" disabled placeholder="请输入" v-model="basicData.supervisorEnt" />
</el-col>
<el-col :span="8">
<span class="row-span">施工单位:</span>
<el-input class="input-style" disabled placeholder="请输入" v-model="basicData.opEnt" />
</el-col>
<el-col :span="8">
<span class="row-span">勘察单位:</span>
<el-input class="input-style" disabled placeholder="请输入" v-model="basicData.surveyEnt" />
</el-col>
</el-row>
</div>
<div class="row">
<el-row :gutter="20">
<el-col :span="8">
<span class="row-span">设计单位:</span>
<el-input class="input-style" disabled placeholder="请输入" v-model="basicData.designEnt" />
</el-col>
<el-col :span="8">
<span class="row-span">责任区域:</span>
<el-input class="input-style" disabled placeholder="请输入" v-model="basicData.address" />
</el-col>
<el-col :span="8">
<span class="row-span">检查人员:</span>
<el-input class="input-style" disabled placeholder="请选择" v-model="basicData.selectedMember">
<!-- 标记dialog -->
<template #suffix>
<div class="diaMapIcon" @click="selectMember">
<el-icon style="font-size: 19px"><Plus /></el-icon>
</div>
</template> </el-input
></el-col>
</el-row>
</div>
<div class="row">
<el-row :gutter="20">
<el-col :span="8">
<span class="row-span">整改期限:</span>
<el-date-picker
v-model="basicData.deadline"
style="width: 180px; height: 26px"
type="datetime"
placeholder="请选择日期"
format="YYYY-MM-DD HH:mm:ss"
value-format="YYYY-MM-DD HH:mm:ss"
:disabledDate="disabledDate"
/></el-col>
<el-col :span="8">
<span class="row-span">整改类型:</span>
<el-radio-group v-model="basicData.requireType">
<el-radio :label="1">限期整改</el-radio>
<el-radio :label="2">停工整改</el-radio>
</el-radio-group>
</el-col>
<el-col :span="8">
<span class="row-span">施工单位:</span>
<div class="face-img">
<div class="imgList" v-if="basicData.opSignature">
<div v-for="(item, index) in basicData.opSignature" :key="index">
<img :src="item.url" class="face-avatar" />
<div class="close-icon" @click="deleteImg(1, index)">X</div>
</div>
</div>
<el-upload
ref="upload"
:headers="headers"
:show-file-list="false"
accept="image/jpg, image/jpeg, image/png"
:action="`${baseUrl}` + '/xmgl/file/upload'"
:on-success="response => uploadSuccess(response, 1)"
style="display: inline-block"
>
<el-button class="btn-style" type="primary">上传签名</el-button>
</el-upload>
</div>
</el-col>
</el-row>
</div>
<div class="row">
<el-row :gutter="20">
<el-col :span="8">
<span class="row-span">监理单位:</span>
<div class="face-img">
<div class="imgList" v-if="basicData.supervisorSignature">
<div v-for="(item, index) in basicData.supervisorSignature" :key="index">
<img :src="item.url" class="face-avatar" />
<div class="close-icon" @click="deleteImg(2, index)">X</div>
</div>
</div>
<el-upload
ref="upload"
:headers="headers"
:show-file-list="false"
accept="image/jpg, image/jpeg, image/png"
:action="`${baseUrl}` + '/xmgl/file/upload'"
:on-success="response => uploadSuccess(response, 2)"
style="display: inline-block"
>
<el-button class="btn-style" type="primary">上传签名</el-button>
</el-upload>
</div>
</el-col>
<el-col :span="8">
<span class="row-span">检查人员:</span>
<div class="face-img">
<div class="imgList" v-if="basicData.inspectSignature">
<div v-for="(item, index) in basicData.inspectSignature" :key="index">
<img :src="item.url" class="face-avatar" />
<div class="close-icon" @click="deleteImg(3, index)">X</div>
</div>
</div>
<el-upload
ref="upload"
:headers="headers"
:show-file-list="false"
accept="image/jpg, image/jpeg, image/png"
:action="`${baseUrl}` + '/xmgl/file/upload'"
:on-success="response => uploadSuccess(response, 3)"
style="display: inline-block"
>
<el-button class="btn-style" type="primary">上传签名</el-button>
</el-upload>
</div>
</el-col>
<el-col :span="8">
<span class="row-span">其他单位:</span>
<div class="face-img">
<div class="imgList" v-if="basicData.otherSignature">
<div v-for="(item, index) in basicData.otherSignature" :key="index">
<img :src="item.url" class="face-avatar" />
<div class="close-icon" @click="deleteImg(4, index)">X</div>
</div>
</div>
<el-upload
ref="upload"
:headers="headers"
:show-file-list="false"
accept="image/jpg, image/jpeg, image/png"
:action="`${baseUrl}` + '/xmgl/file/upload'"
:on-success="response => uploadSuccess(response, 4)"
style="display: inline-block"
>
<el-button class="btn-style" type="primary">上传签名</el-button>
</el-upload>
</div>
</el-col>
</el-row>
</div>
</div>
<div class="detail-table">
<div class="content-title">
<span>隐患问题记录</span>
<el-button class="addButtonStyle" @click="addDangerRecord">新增</el-button>
</div>
<div class="table">
<el-table
:data="recordData"
:show-overflow-tooltip="true"
class="el-table"
:row-style="{ height: '40px' }"
:header-cell-style="{ backgroundColor: '#F5F7FA', textAlign: 'center', height: '40px' }"
:cell-style="{ textAlign: 'center', height: '40px' }"
>
<!-- <el-table-column prop="createByName" label="创建人" /> -->
<el-table-column prop="questionDesc" label="隐患问题" :show-overflow-tooltip="true" />
<el-table-column label="隐患照片">
<template #default="scope">
<el-image
v-if="scope.row.image && scope.row.image.length > 0"
style="width: 38px; height: 28px"
:src="scope.row.image[0].url"
fit="fill"
></el-image>
</template>
</el-table-column>
<el-table-column fixed="right" label="操作" width="100">
<template #default="scope">
<el-button type="danger" link :icon="Delete" @click="handleDeleteItem(scope.$index)">删除</el-button>
</template>
</el-table-column>
</el-table>
</div>
<div class="operation-btn">
<el-button type="primary" @click="allSubmit">统一下发放整改单</el-button>
</div>
</div>
<div class="transform-record" v-if="transformDialog">
<div class="title-detail">
<div class="line-style"></div>
<div class="title-content">新增隐患记录</div>
<el-icon>
<close @click="closeSecondary" />
</el-icon>
</div>
<div class="content-title">隐患问题</div>
<!-- <div class="row">
<span>创建人:</span>
<el-input v-model="dangerForm.createByName" placeholder="请输入" />
</div> -->
<!-- <div class="row">
<span>创建日期:</span>
<el-date-picker
v-model="dangerForm.createTime"
type="datetime"
style="width: 100%"
placeholder="请选择日期"
format="YYYY-MM-DD HH:mm:ss"
value-format="YYYY-MM-DD HH:mm:ss"
/>
</div> -->
<div class="row">
<span>隐患问题:</span>
<div class="danger-option">
<el-button v-if="!dangerForm.questionType" type="primary" @click="openStore">隐患库</el-button>
<el-button v-if="!dangerForm.questionType" type="primary" @click="dangerForm.questionType = 2">自定义隐患</el-button>
<el-input
v-if="dangerForm.questionType"
v-model="dangerForm.questionDesc"
:disabled="dangerForm.questionType == 1"
type="textarea"
:rows="2"
placeholder="请输入"
/>
</div>
</div>
<div class="row">
<span>备注:</span>
<el-input v-model="dangerForm.remark" type="textarea" :rows="2" placeholder="请输入" />
</div>
<div class="row">
<span>隐患照片:</span>
<div class="face-img">
<div class="imgList" v-if="dangerForm.image && dangerForm.image.length > 0">
<div v-for="(item, index) in dangerForm.image" :key="index">
<img :src="item.url" class="face-avatar" />
<el-icon class="close-icon" @click="deleteDangerImg(index)">
<circle-close />
</el-icon>
</div>
</div>
<el-upload
class="face-uploader"
:action="`${baseUrl}` + '/xmgl/file/upload'"
:show-file-list="false"
:before-upload="handleAvatarUpload"
:on-success="handleAvatarSuccess"
accept="image/jpg, image/jpeg, image/png"
>
<el-icon><plus /></el-icon>
</el-upload>
</div>
</div>
<div class="status-operate">
<el-button type="primary" @click="submitForm">提交</el-button>
</div>
</div>
</el-dialog>
<!-- 隐患库 -->
<el-dialog v-model="storeVisible" custom-class="store-style">
<template #title>
<div style="border-left: 2px solid #0f81ff; font-size: 20px; color: #333333">
<span style="margin-left: 5px">隐患库</span>
</div>
</template>
<div class="content-select">
<div class="left-menu" style="height: calc(100% - 1px); border-bottom: 1px solid #ccc">
<el-tree
:data="dangerData"
style="margin-top: 10px"
:highlight-current="true"
node-key="id"
:expand-on-click-node="false"
>
<template #default="{ node, data }">
<span class="custom-tree-node" @click.capture="selectDangerTree(data)">
<span>{{ data.name }}</span>
</span>
</template>
</el-tree>
</div>
<div class="right-menu" style="height: calc(100% - 1px); border-bottom: 1px solid #ccc">
<el-table
ref="multipleTable"
:data="smallTableData"
tooltip-effect="dark"
style="margin: 12px 15px; width: 95%; height: 400px"
@selection-change="handleSmallSelectionChange"
>
<el-table-column type="selection" width="55"></el-table-column>
<el-table-column prop="name" label="隐患内容"></el-table-column>
</el-table>
</div>
</div>
<template #footer>
<span class="dialog-footer">
<el-button @click="storeVisible = false"> </el-button>
<el-button type="primary" @click="confirmSmallSelected"> </el-button>
</span>
</template>
</el-dialog>
<!-- 工程/项目库 -->
<el-dialog v-model="projectVisible" custom-class="project-style" width="60%">
<template #title>
<div style="border-left: 2px solid #0f81ff; font-size: 20px; color: #333333">
<span style="margin-left: 5px">选择工程/项目</span>
</div>
</template>
<div class="content-select">
<div class="left-menu">
<el-tree :data="projectData" style="margin-top: 10px" :highlight-current="true" node-key="id">
<template #default="{ node, data }">
<span class="custom-tree-node" @click.capture="selectProjectTree(data)">
<span>{{ data.label }}</span>
</span>
</template>
</el-tree>
</div>
<div class="right-menu">
<div class="table-select" v-if="projectTreeData.id">
<span style="margin: 0 10px 2px 0">{{ projectTreeData.id == 1 ? "工程" : "项目" }}名称</span>
<el-input style="width: 200px" v-model="projectForm.name" placeholder="请输入" clearable />
<el-button type="primary" style="margin-left: 20px" @click="searchData">查询</el-button>
</div>
<div class="table" v-if="projectTreeData.id == 1">
<el-table
style="width: 100%; height: 350px"
ref="multipleTable"
:data="projectTableData"
tooltip-effect="dark"
@row-click="projectRowClick"
>
<!-- <el-table-column type="selection" width="55"></el-table-column> -->
<el-table-column prop="engineeringName" align="center" label="工程名称"></el-table-column>
<el-table-column prop="engineeringTypeName" align="center" label="工程类型"></el-table-column>
<el-table-column prop="stateName" align="center" label="工程状态"></el-table-column>
</el-table>
</div>
<div class="table" v-if="projectTreeData.id == 2">
<el-table
style="width: 100%; height: 350px"
ref="multipleTable"
:data="projectTableData"
tooltip-effect="dark"
@row-click="projectRowClick"
>
<!-- <el-table-column type="selection" width="55"></el-table-column> -->
<el-table-column prop="projectName" align="center" label="项目名称"></el-table-column>
<el-table-column prop="projectManage" align="center" label="负责人"></el-table-column>
<el-table-column prop="projectTel" align="center" label="手机号码"></el-table-column>
</el-table>
</div>
</div>
</div>
<!-- <template #footer>
<span class="dialog-footer">
<el-button @click="projectVisible = false"> </el-button>
<el-button type="primary" @click="projectVisible = false"> </el-button>
</span>
</template> -->
</el-dialog>
<!-- 检查人员 -->
<el-dialog v-model="memberVisible" style="width: 500px">
<template #title>
<div style="border-left: 2px solid #0f81ff; font-size: 20px; color: #333333">
<span style="margin-left: 5px">添加检查人员</span>
</div>
</template>
<div class="content-select">
<div class="member-menu">
<el-table
ref="multipleMemberTable"
:data="membertableData"
tooltip-effect="dark"
@selection-change="handleSelectionChange"
>
<el-table-column type="selection" width="55"></el-table-column>
<el-table-column prop="realName" label="检查人员"></el-table-column>
<el-table-column prop="account" label="用户名称"></el-table-column>
<el-table-column prop="userTel" label="手机号码"></el-table-column>
</el-table>
</div>
</div>
<template #footer>
<span class="dialog-footer">
<el-button @click="memberVisible = false"> </el-button>
<el-button type="primary" @click="confirmMemberSelected"> </el-button>
</span>
</template>
</el-dialog>
</div>
</template>
<script lang="ts" setup>
import { onMounted, ref, watch, reactive } from "vue";
import { ElMessage, ElMessageBox } from "element-plus";
import type { FormInstance, UploadProps } from "element-plus";
import {
addDividerQuestion,
getEngineeringApproveList,
AIproList,
getEngineerInfo,
getProjectInfo,
getgovNamelist,
bigStore,
smallStoreList
} from "@/api/modules/goverment";
import { GlobalStore } from "@/stores";
import { Delete } from "@element-plus/icons-vue";
import { jxj_User } from "@/api/types";
const multipleMemberTable = ref();
const memberVisible = ref(false);
const store = GlobalStore();
const headers = ref({ Authorization: "Bearer " + store.token });
const projectVisible = ref(false);
const tableData = ref([{ name: "111" }]);
const membertableData = ref([]); // 获取检查人员表格数据
const projectTableData = ref([]); // 获取工程/项目表格数据
const projectForm = ref({
name: ""
});
const projectData = ref([
{
id: 1,
label: "工程名称"
},
{
id: 2,
label: "项目名称"
}
]);
const projectSelectedData = ref({}); // 工程/项目列表选中的行数据
const bigTreeData = ref({}); // 大项选中树数据
const smallTableData = ref([]); // 小项列表数据
const dangerData = ref([]);
const dangerForm = ref({
// createByName: "",
createTime: "",
questionType: 0,
questionDesc: "",
remark: "",
image: []
});
const storeVisible = ref(false);
const baseUrl = import.meta.env.VITE_API_URL;
const props = defineProps({
orderDialog: Boolean
});
const emits = defineEmits(["update:orderDialog", "confirm"]);
const visible1 = ref(false);
const transformDialog = ref(false); // 整改记录对话框
const recordData = ref([]); // 整改记录表格数据
const basicData = ref({
// 基础信息
requireType: 1,
opSignature: [],
supervisorSignature: [],
inspectSignature: [],
otherSignature: []
});
const dialogStyle = ref({
"min-width": "824px"
});
const selectedMemberList = ref([]); // 选中的检查人员列表
const selectedSmallList = ref([]); // 选中的小项列表
// 设置日期的禁用状态
const disabledDate = date => {
let todayTime = new Date().getTime();
let dateTime = date.getTime();
if (dateTime < todayTime) {
return true;
} else {
return false;
}
};
const deleteImg = (arrIndex, index) => {
// 删除签名图片
switch (arrIndex) {
case 1:
basicData.value.opSignature.splice(index, 1);
break;
case 2:
basicData.value.supervisorSignature.splice(index, 1);
break;
case 3:
basicData.value.inspectSignature.splice(index, 1);
break;
case 4:
basicData.value.otherSignature.splice(index, 1);
break;
}
};
const confirmSmallSelected = () => {
let text = "";
for (let i = 0; i < selectedSmallList.value.length; i++) {
if (i == selectedSmallList.value.length - 1) {
text += selectedSmallList.value[i].name;
} else {
text += selectedSmallList.value[i].name + ",";
}
}
dangerForm.value.questionDesc = text;
dangerForm.value.questionType = 1;
storeVisible.value = false;
};
const getSmallList = async () => {
console.log(bigTreeData.value);
const res = await smallStoreList({ libraryId: bigTreeData.value.id, name: "" });
smallTableData.value = res.result;
console.log(res);
};
const selectDangerTree = data => {
console.log(data);
bigTreeData.value = data;
getSmallList();
};
const openStore = async () => {
const res = await bigStore({ name: "", type: 1 });
dangerData.value = res.result;
smallTableData.value = [];
storeVisible.value = true;
};
const addDangerRecord = () => {
dangerForm.value = reactive({
// createByName: "",
createTime: "",
questionType: 0,
questionDesc: "",
remark: "",
image: []
});
transformDialog.value = true;
dialogStyle.value = reactive({
"min-width": "824px",
transform: "translateX(-170px)"
});
};
const confirmMemberSelected = () => {
let selectedtext = "";
for (let i = 0; i < selectedMemberList.value.length; i++) {
if (i == selectedMemberList.value.length - 1) {
selectedtext += selectedMemberList.value[i].realName;
} else {
selectedtext += selectedMemberList.value[i].realName + ",";
}
}
basicData.value.selectedMember = selectedtext;
memberVisible.value = false;
};
const projectRowClick = row => {
// 工程/项目列表选中的行数据
projectSelectedData.value = row;
projectVisible.value = false;
getRowDetails();
};
const projectTreeData = ref({}); // 工程/项目树数据
const searchData = () => {
if (projectTreeData.value.id == 1) {
getEngieerData();
} else {
getProjectData();
}
};
const getRowDetails = async () => {
basicData.value = {
requireType: 1,
opSignature: [],
supervisorSignature: [],
inspectSignature: [],
otherSignature: []
};
// 工程/项目详细信息
if (projectTreeData.value.id == 1) {
const res = await getEngineerInfo({ id: projectSelectedData.value.id });
console.log(res);
basicData.value = reactive({ ...basicData.value, ...res.result });
} else {
const res = await getProjectInfo({ projectId: projectSelectedData.value.projectId });
console.log(res);
basicData.value = reactive({ ...basicData.value, ...res.result });
}
};
const getEngieerData = async () => {
// 工程列表
let requestData = {
engineeringName: projectForm.value.name,
pageSize: -1,
pageNo: -1
};
const res = await getEngineeringApproveList(requestData);
projectTableData.value = res.result.records;
console.log(res);
};
const getProjectData = async () => {
// 项目列表
let requestData = {
projectName: projectForm.value.name
};
const res = await AIproList(requestData);
projectTableData.value = res.result;
console.log(res);
};
const getMemberList = async () => {
const res = await getgovNamelist({});
console.log(res);
membertableData.value = res.result;
};
const selectMember = async () => {
console.log(membertableData.value);
console.log(selectedMemberList.value);
selectedMemberList.value.forEach(key => {
membertableData.value.forEach(row => {
if (row.userId == key.userId) {
multipleMemberTable.value.toggleRowSelection(row, true);
}
});
});
memberVisible.value = true;
};
// 删除用户信息
const handleDeleteItem = async index => {
recordData.value.splice(index, 1);
};
const uploadSuccess = (response: any, index: number) => {
ElMessage.success("上传成功");
console.log(response, index);
if (index == 1) {
basicData.value.opSignature.push({ url: response.result.url });
} else if (index == 2) {
basicData.value.supervisorSignature.push({ url: response.result.url });
} else if (index == 3) {
basicData.value.inspectSignature.push({ url: response.result.url });
} else if (index == 4) {
basicData.value.otherSignature.push({ url: response.result.url });
}
};
const handleSelectionChange = val => {
selectedMemberList.value = val;
console.log(val);
};
const handleSmallSelectionChange = val => {
selectedSmallList.value = val;
};
const selectProjectTree = data => {
// 选择工程/项目树节点
console.log(data);
if (data.id == 1) {
getEngieerData();
} else {
getProjectData();
}
projectTreeData.value = data;
};
// 删除隐患照片
const deleteDangerImg = (index: number) => {
dangerForm.value.image.splice(index, 1);
};
// 图片上传之前
const handleAvatarUpload = file => {
if (dangerForm.value.image.length == 3) {
ElMessage.error("上传图片不能大于三张");
return false;
}
};
// 图片上传成功后的钩子
const handleAvatarSuccess: UploadProps["onSuccess"] = response => {
dangerForm.value.image.push({
url: response.result.url
});
};
// 提交整改情况
const submitForm = async () => {
if (!dangerForm.value.questionDesc) {
ElMessage.error("请添加隐患问题");
return;
}
// if (dangerForm.value.image.length == 0) {
// ElMessage.error("请添加隐患照片");
// return;
// }
recordData.value.push({
...dangerForm.value
});
closeSecondary();
ElMessage.success("提交成功");
};
// 全部提交
const allSubmit = async () => {
if (!(projectSelectedData.value.projectName || projectSelectedData.value.engineeringName)) {
ElMessage.error("请选择工程/项目");
return;
}
// if (!basicData.value.selectedMember) {
// ElMessage.error("请选择检查人员");
// return;
// }
if (!basicData.value.deadline) {
ElMessage.error("请选择整改期限");
return;
}
if (recordData.value.length == 0) {
ElMessage.error("请添加隐患问题");
return;
}
recordData.value.map(item => {
item.image = JSON.stringify(item.image);
});
let requestData = {
...basicData.value,
inspectSignature: JSON.stringify(basicData.value.inspectSignature),
opSignature: JSON.stringify(basicData.value.opSignature),
otherSignature: JSON.stringify(basicData.value.otherSignature),
supervisorSignature: JSON.stringify(basicData.value.supervisorSignature),
inspectQuestionList: recordData.value,
type: 1
};
const res = await addDividerQuestion(requestData);
closeMain();
ElMessage.success("操作成功");
};
// 关闭两个对话框
const closeMain = () => {
visible1.value = false;
transformDialog.value = false;
dialogStyle.value = {
"min-width": "824px",
transform: "translateX(0px)"
};
};
// 关闭整改记录辅弹框
const closeSecondary = () => {
transformDialog.value = false;
dialogStyle.value = {
"min-width": "824px",
transform: "translateX(0px)"
};
};
// 监听父组件的visible用来简介控制el-dialog的弹框开关一般是用于开
watch(
() => props.orderDialog,
(n, o) => {
visible1.value = n;
if (n) {
basicData.value = {
requireType: 1,
opSignature: [],
supervisorSignature: [],
inspectSignature: [],
otherSignature: []
};
recordData.value = [];
projectSelectedData.value = {};
} else {
emits("confirm");
}
}
);
// 监听el-dialog显示状态再通过@update:visible 通知父组件,一般是用于关
watch(visible1, (n, o) => {
emits("update:orderDialog", n);
});
onMounted(() => {
getMemberList();
});
</script>
<style lang="scss" scoped>
@mixin flex {
display: flex;
align-items: center;
}
@mixin title {
font-size: 14px;
font-family: Source Han Sans CN-Regular, Source Han Sans CN;
font-weight: 400;
color: #333333;
border-left: 2px solid #008bff;
padding-left: 5px;
}
.overview {
// background-color: #fff;
flex: 1;
:deep(.el-dialog) {
position: relative;
}
.title-detail {
@include flex;
.line-style {
width: 4px;
height: 20px;
background: #0f81ff;
margin-right: 12px;
}
.title-content {
font-size: 20px;
font-family: Source Han Sans CN-Regular, Source Han Sans CN;
font-weight: 400;
color: #333333;
margin-right: auto;
}
:deep(.el-icon) {
cursor: pointer;
color: #a8abb2;
}
}
.detail-content {
.content-title {
@include title;
}
.row {
margin-top: 14px;
:deep(.el-col) {
display: flex;
align-items: center;
}
.row-span {
font-size: 12px;
font-family: Source Han Sans CN-Medium, Source Han Sans CN;
font-weight: 500;
white-space: nowrap;
color: #333333;
> span {
font-weight: 400;
color: #008bff;
}
.diaMapIcon {
background-color: #008bff;
width: 34px;
position: absolute;
right: 0;
border-radius: 0 4px 4px 0;
color: #fff;
display: flex;
align-items: center;
justify-content: center;
height: 100%;
cursor: pointer;
}
}
.face-img {
@include flex;
flex-wrap: wrap;
.imgList {
@include flex;
margin-right: 15px;
> div {
position: relative;
img {
width: 50px;
height: 34px;
}
.close-icon {
width: 15px;
height: 15px;
border-radius: 50%;
text-align: center;
border: 1px solid red;
line-height: 15px;
position: absolute;
top: -8px;
right: -7px;
color: red;
cursor: pointer;
}
}
}
}
.select-text {
display: inline-block;
width: 75px;
height: 20px;
white-space: nowrap;
text-overflow: ellipsis;
overflow: hidden;
}
.btn-style {
width: 105px;
height: 20px;
background: rgba(48, 172, 124, 0.15);
opacity: 1;
border: 1px solid #30ac7c;
color: #30ac7c;
}
.input-style {
width: 180px;
height: 26px;
background: #ffffff;
}
}
}
.detail-table {
height: 391px;
margin-top: 20px;
.content-title {
@include title;
@include flex;
> span {
margin-right: auto;
}
}
.table {
height: 310px;
margin-top: 20px;
:deep(.el-table) {
height: 100%;
}
}
.operation-btn {
display: flex;
align-items: center;
justify-content: center;
margin-top: 20px;
}
}
.transform-record {
position: absolute;
top: 0;
right: -460px;
width: 380px;
height: calc(100% - 31px);
min-width: 420px;
background: #ffffff;
box-shadow: 0px 4px 8px 0px rgba(48, 62, 100, 0.2);
border-radius: 8px 8px 8px 8px;
padding: 15px 20px;
.content-title {
@include title;
margin-top: 45px;
margin-bottom: 24px;
}
.row {
display: flex;
align-items: center;
margin-bottom: 12px;
span:nth-child(1) {
width: 56px;
text-align: right;
font-size: 12px;
font-family: Source Han Sans CN-Medium, Source Han Sans CN;
font-weight: 500;
color: #333333;
white-space: nowrap;
margin-right: 10px;
}
span:nth-child(2) {
font-size: 12px;
font-family: Source Han Sans CN-Regular, Source Han Sans CN;
font-weight: 400;
color: #333333;
}
.imgList {
display: flex;
flex-wrap: wrap;
> div {
position: relative;
}
:deep(.el-icon) {
position: absolute;
top: -10px;
right: 5px;
font-size: 24px;
color: red;
text-align: center;
cursor: pointer;
}
}
.face-img {
width: 100%;
align-self: flex-start;
@include flex;
flex-wrap: wrap;
:deep(.face-uploader .el-upload) {
border: 1px dashed #d9d9d9 !important;
border-radius: 6px !important;
cursor: pointer !important;
position: relative !important;
overflow: hidden !important;
.el-icon {
font-size: 28px;
color: #8c939d;
width: 53px;
height: 53px;
line-height: 53px;
text-align: center;
}
}
.face-uploader .el-upload:hover {
border-color: #409eff !important;
}
.face-avatar {
width: 53px;
height: 53px;
display: block;
margin-right: 15px;
}
}
.danger-option {
width: 100%;
display: flex;
align-items: center;
}
}
.status-operate {
display: flex;
align-items: center;
justify-content: flex-end;
}
}
.content-select {
width: 100%;
height: 426px;
display: flex;
align-items: center;
.left-menu {
min-width: 200px;
height: 100%;
background-color: #ffffff;
border-right: 1px solid #ccc;
.custom-tree-node {
width: 100%;
display: flex;
align-items: center;
> span:first-child {
width: 98%;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
margin-right: auto;
}
}
:deep(.el-tree-node__content) {
height: 35px !important;
}
:deep(.is-current) {
color: #008bff;
border-left: 2px solid #008bff;
}
}
.right-menu {
flex: 1;
height: 100%;
.table-select {
display: flex;
align-items: center;
margin: 20px 0 20px 15px;
}
.table {
margin: 0px 15px;
}
}
.member-menu {
width: 100%;
min-height: 300px;
align-self: self-start;
display: flex;
}
}
}
:deep(.el-table__empty-text) {
min-height: 200px;
display: flex;
justify-content: center;
align-items: center;
}
// 隐患库对话框样式
:deep(.store-style) {
.el-dialog__header {
border-bottom: 1px solid #ccc;
}
.el-dialog__body {
padding: 0;
}
}
// 工程/项目对话框样式
:deep(.project-style) {
.el-dialog__header {
border-bottom: 1px solid #ccc;
}
.el-dialog__body {
padding: 0;
}
}
</style>