feat: 惠州项目端板块内容更改
This commit is contained in:
parent
6b5c63f9c6
commit
4a69462f3f
@ -25,12 +25,14 @@ $primary: #008bff;
|
||||
> span {
|
||||
flex-shrink: 0;
|
||||
font-size: 13px;
|
||||
color: #666666;
|
||||
color: white;
|
||||
}
|
||||
}
|
||||
}
|
||||
.btn-search,
|
||||
.btn-submit {
|
||||
background-color: #087ba4;
|
||||
border-color: #087ba4;
|
||||
margin-left: 10px;
|
||||
}
|
||||
}
|
||||
|
||||
@ -73,7 +73,11 @@ const open = async () => {
|
||||
const AMap = await initAMap();
|
||||
|
||||
// 地图加载与点击
|
||||
map.value = new AMap.Map("map-container", { zoom: 8, resizeEnable: true });
|
||||
map.value = new AMap.Map("map-container", {
|
||||
zoom: 8,
|
||||
resizeEnable: true,
|
||||
mapStyle: "amap://styles/57994c871bb604a4c79184f5f65d8782"
|
||||
});
|
||||
|
||||
map.value?.on("complete", e => {
|
||||
setCenter(props.defaultAddress);
|
||||
|
||||
@ -149,8 +149,8 @@
|
||||
</template>
|
||||
</el-form>
|
||||
<template #footer>
|
||||
<el-button class="cancelButtonStyle" @click="visible1 = false">取消</el-button>
|
||||
<el-button type="primary" @click="confirm(ruleFormRef)"> 保存 </el-button>
|
||||
<el-button class="hzCancelStyle" @click="visible1 = false">取消</el-button>
|
||||
<el-button class="hzStyle" type="primary" @click="confirm(ruleFormRef)"> 保存 </el-button>
|
||||
</template>
|
||||
</el-dialog>
|
||||
</div>
|
||||
@ -365,11 +365,38 @@ onMounted(() => {
|
||||
// color: #000;
|
||||
// }
|
||||
}
|
||||
|
||||
:deep(.el-form-item__label) {
|
||||
color: #000;
|
||||
:deep(.el-input-number) {
|
||||
width: 100%;
|
||||
.el-input-number__increase {
|
||||
background-color: #09405f;
|
||||
color: #3f6ab0;
|
||||
border: 0 !important;
|
||||
border-bottom: 1px solid #087ba4 !important;
|
||||
border-left: 1px solid #087ba4 !important;
|
||||
}
|
||||
.el-input-number__decrease {
|
||||
background-color: #09405f;
|
||||
color: #3f6ab0;
|
||||
border: 0 !important;
|
||||
border-top: 1px solid #087ba4 !important;
|
||||
border-left: 1px solid #087ba4 !important;
|
||||
}
|
||||
.el-icon {
|
||||
font-size: 20px;
|
||||
}
|
||||
}
|
||||
:deep(.el-form-item__label) {
|
||||
color: white;
|
||||
}
|
||||
:deep(.el-input__wrapper),
|
||||
:deep(.el-textarea__inner) {
|
||||
background-color: transparent;
|
||||
box-shadow: 0 0 0 1px #087ba4 inset;
|
||||
}
|
||||
:deep(.el-input__inner),
|
||||
:deep(.el-textarea__inner) {
|
||||
color: white;
|
||||
}
|
||||
|
||||
// 标记地图icon
|
||||
// :deep(.el-input__wrapper) {
|
||||
// padding: 1px 10px 0 11px;
|
||||
|
||||
@ -13,21 +13,34 @@
|
||||
}
|
||||
.el-input {
|
||||
margin: 0 0 15px;
|
||||
:deep(.el-input__wrapper) {
|
||||
background-color: transparent;
|
||||
box-shadow: 0 0 0 1px var(--el-color-primary, var(--el-color-primary)) inset;
|
||||
}
|
||||
:deep(.el-input__inner) {
|
||||
color: white;
|
||||
}
|
||||
}
|
||||
.el-scrollbar {
|
||||
:deep(.el-tree) {
|
||||
// height: 80%;
|
||||
overflow: auto;
|
||||
background-color: transparent;
|
||||
color: #c4c4c4;
|
||||
.el-tree-node__content {
|
||||
height: 33px;
|
||||
}
|
||||
.el-tree-node__content:hover {
|
||||
background: #09405f;
|
||||
color: #0bc4f0;
|
||||
}
|
||||
}
|
||||
:deep(.el-tree--highlight-current) {
|
||||
.el-tree-node.is-current > .el-tree-node__content {
|
||||
background-color: #e0ebf9;
|
||||
background-color: #09405f;
|
||||
.el-tree-node__label {
|
||||
font-size: 12px;
|
||||
color: #008bff;
|
||||
color: #0bc4f0;
|
||||
}
|
||||
.el-tree-node__expand-icon {
|
||||
color: white;
|
||||
|
||||
@ -2,7 +2,7 @@
|
||||
box-sizing: border-box;
|
||||
padding: 20px;
|
||||
overflow-x: hidden;
|
||||
background-color: #f6f6f6;
|
||||
background-color: #092945;
|
||||
&::-webkit-scrollbar {
|
||||
background-color: #f0f2f5;
|
||||
}
|
||||
|
||||
@ -170,7 +170,7 @@
|
||||
// font-size: 30px;
|
||||
}
|
||||
.diaMapIcon {
|
||||
background-color: #008bff;
|
||||
background-color: #087ba4;
|
||||
width: 34px;
|
||||
position: absolute;
|
||||
right: 0;
|
||||
|
||||
@ -157,15 +157,18 @@
|
||||
}
|
||||
td.el-table__cell {
|
||||
background-color: transparent !important;
|
||||
border-bottom: 0 !important;
|
||||
}
|
||||
th.el-table__cell {
|
||||
background-color: transparent;
|
||||
border-bottom: 0 !important;
|
||||
}
|
||||
td.el-table-fixed-column--right {
|
||||
background-color: transparent !important;
|
||||
}
|
||||
.el-table__header {
|
||||
background-color: #09405f;
|
||||
// background-color: #09405f;
|
||||
background: rgba(11, 196, 240, 0.15);
|
||||
// background: url("@/assets/images/layoutImg/tableThead.png") no-repeat 0 0;
|
||||
// background-size: 100% 100%;
|
||||
}
|
||||
@ -337,6 +340,7 @@
|
||||
|
||||
// * el-dialog 样式
|
||||
.el-dialog {
|
||||
background-color: rgba(9, 64, 95, 0.85);
|
||||
border-radius: 8px;
|
||||
// .el-dialog__body {
|
||||
// min-height: 300px;
|
||||
@ -353,6 +357,7 @@
|
||||
// border-bottom: 1px solid var(--el-border-color-lighter);
|
||||
.el-dialog__title {
|
||||
font-size: 20px;
|
||||
color: white;
|
||||
}
|
||||
}
|
||||
.el-dialog__footer {
|
||||
@ -361,6 +366,16 @@
|
||||
// margin: -36px 0;
|
||||
}
|
||||
}
|
||||
.hzStyle {
|
||||
background-color: #087ba4;
|
||||
border-color: #087ba4;
|
||||
}
|
||||
.hzCancelStyle {
|
||||
margin-right: 14%;
|
||||
background-color: transparent;
|
||||
border-color: #087ba4;
|
||||
color: #0a769a;
|
||||
}
|
||||
.addButtonStyle {
|
||||
color: #ffffff;
|
||||
background-color: #30ac7c;
|
||||
@ -444,3 +459,29 @@
|
||||
.el-card.is-always-shadow {
|
||||
box-shadow: none;
|
||||
}
|
||||
|
||||
// 单选框
|
||||
.el-radio {
|
||||
.el-radio__inner {
|
||||
width: 18px !important;
|
||||
height: 18px !important;
|
||||
background-color: transparent;
|
||||
}
|
||||
.el-radio__input.is-checked .el-radio__inner {
|
||||
width: 18px !important;
|
||||
height: 18px !important;
|
||||
background-color: transparent;
|
||||
}
|
||||
.el-radio__inner::after {
|
||||
width: 13px;
|
||||
height: 13px;
|
||||
background: #3f6ab0;
|
||||
border-radius: 50%;
|
||||
}
|
||||
}
|
||||
// 表单
|
||||
.el-form {
|
||||
.el-form-item__label {
|
||||
color: var(--el-color-primary);
|
||||
}
|
||||
}
|
||||
|
||||
@ -169,8 +169,8 @@
|
||||
}
|
||||
.imgDialog {
|
||||
.uploadBtn {
|
||||
color: #30ac7c;
|
||||
border: 1px solid #30ac7c;
|
||||
color: #087ba4;
|
||||
border: 1px solid #087ba4;
|
||||
background: rgba(48, 172, 124, 0.1);
|
||||
}
|
||||
}
|
||||
|
||||
@ -41,10 +41,9 @@
|
||||
<h4>考勤明细</h4>
|
||||
<el-table
|
||||
:data="attendanceSingles"
|
||||
border
|
||||
max-height="340"
|
||||
class="el-table"
|
||||
:header-cell-style="{ backgroundColor: '#e1eeff', textAlign: 'center' }"
|
||||
:header-cell-style="{ textAlign: 'center' }"
|
||||
:cell-style="{ textAlign: 'center' }"
|
||||
>
|
||||
<el-table-column prop="personName" label="姓名" />
|
||||
@ -423,7 +422,7 @@ onBeforeMount(() => {
|
||||
font-size: 14px;
|
||||
font-family: Source Han Sans CN-Regular, Source Han Sans CN;
|
||||
font-weight: 400;
|
||||
color: #333333;
|
||||
color: white;
|
||||
margin-right: 10px;
|
||||
margin-left: 10px;
|
||||
}
|
||||
@ -431,14 +430,13 @@ onBeforeMount(() => {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
padding: 20px;
|
||||
background-color: #fff;
|
||||
h4 {
|
||||
position: relative;
|
||||
padding-left: 6px;
|
||||
font-size: 20px;
|
||||
font-weight: 500;
|
||||
color: #333333;
|
||||
border-left: 3px solid #008bff;
|
||||
color: #ffffff;
|
||||
border-left: 3px solid #0bc4f0;
|
||||
}
|
||||
.el-table {
|
||||
width: calc(100% - 20px);
|
||||
|
||||
@ -9,8 +9,8 @@
|
||||
:tool-button="false"
|
||||
:pagination="true"
|
||||
background
|
||||
:isShowSearch="false"
|
||||
:initParam="initParam"
|
||||
:isShowSearch="false"
|
||||
>
|
||||
</ProTable>
|
||||
<engineeringDrawer v-model="engVisable" ref="engDrawer" :request="getengineering">
|
||||
@ -22,21 +22,19 @@
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script setup lang="tsx" name="ProjectSupervisionRecord">
|
||||
<script setup lang="tsx" name="ProjectDustRealTime">
|
||||
import { ref, reactive } from "vue";
|
||||
import { ElMessage } from "element-plus";
|
||||
import { ColumnProps } from "@/components/ProTable/interface";
|
||||
import ProTable from "@/components/ProTable/index.vue";
|
||||
import { getRealTimePage } from "@/api/modules/enterpriseApi";
|
||||
import { getRelevanceList } from "@/api/modules/common";
|
||||
import { getRealTimePage } from "@/api/modules/project";
|
||||
import engineeringDrawer from "@/components/engineeringDrawer/index.vue";
|
||||
import allEngineering from "@/components/allEngineering/index.vue";
|
||||
import { getRelevanceList } from "@/api/modules/common";
|
||||
import { ElMessage, ElMessageBox } from "element-plus";
|
||||
|
||||
// 获取 ProTable 元素,调用其获取刷新数据方法(还能获取到当前查询参数,方便导出携带参数)
|
||||
const proTable = ref();
|
||||
|
||||
const engVisable = ref(false);
|
||||
|
||||
// 表格配置项
|
||||
const columns: ColumnProps[] = [
|
||||
{ type: "index", label: "序号", width: 80 },
|
||||
@ -95,7 +93,6 @@ const columns: ColumnProps[] = [
|
||||
{ prop: "createTime", label: "上报时间" }
|
||||
];
|
||||
|
||||
// 如果表格需要初始化请求参数,直接定义传给 ProTable(之后每次请求都会自动带上该参数,此参数更改之后也会一直带上,改变此参数会自动刷新表格数据)
|
||||
const initParam = reactive({
|
||||
engineeringSn: ""
|
||||
});
|
||||
@ -118,15 +115,14 @@ const getTableList = (params: any) => {
|
||||
let newParams = JSON.parse(JSON.stringify(params));
|
||||
return getRealTimePage(newParams);
|
||||
};
|
||||
const getengineering = (params: any) => {
|
||||
// let newParams = JSON.parse(JSON.stringify(params));
|
||||
return getRelevanceList();
|
||||
};
|
||||
|
||||
// 点击抽屉的工程名称更新页面
|
||||
const onUpdate = async row => {
|
||||
initParam.engineeringSn = row.engineeringSn;
|
||||
ElMessage.success("页面已更新");
|
||||
};
|
||||
|
||||
const getengineering = (params: any) => {
|
||||
// let newParams = JSON.parse(JSON.stringify(params));
|
||||
return getRelevanceList();
|
||||
};
|
||||
</script>
|
||||
|
||||
@ -84,7 +84,7 @@
|
||||
:data="recordData"
|
||||
class="el-table"
|
||||
:row-style="{ height: '40px' }"
|
||||
:header-cell-style="{ backgroundColor: '#F5F7FA', textAlign: 'center', height: '40px' }"
|
||||
:header-cell-style="{ textAlign: 'center', height: '40px' }"
|
||||
:cell-style="{ textAlign: 'center', height: '40px' }"
|
||||
@row-click="rowClick"
|
||||
>
|
||||
@ -93,7 +93,7 @@
|
||||
<el-table-column label="隐患照片">
|
||||
<template #default="scope">
|
||||
<el-image
|
||||
v-if="scope.row.image"
|
||||
v-if="scope.row.image && scope.row.image.length > 0"
|
||||
style="width: 38px; height: 28px"
|
||||
:src="scope.row.image[0].url"
|
||||
fit="fill"
|
||||
@ -120,7 +120,7 @@
|
||||
<div class="operation-btn" v-if="basicData?.state != 4">
|
||||
<!-- <el-button type="info" style="margin-right: 98px">驳回,请尽快整改</el-button>
|
||||
<el-button type="primary">整改完成,全部合格</el-button> -->
|
||||
<el-button type="primary" @click="allSubmit">全部整改完成,提交审核</el-button>
|
||||
<el-button class="hzStyle" type="primary" @click="allSubmit">全部整改完成,提交审核</el-button>
|
||||
</div>
|
||||
</div>
|
||||
<div class="transform-record" v-if="transformDialog">
|
||||
@ -226,7 +226,7 @@
|
||||
<el-button type="primary" @click="auditVisible = true">审核</el-button>
|
||||
</div> -->
|
||||
<div class="status-operate" v-if="item.type">
|
||||
<el-button type="primary" @click="submitForm">提交</el-button>
|
||||
<el-button class="hzStyle" type="primary" @click="submitForm">提交</el-button>
|
||||
</div>
|
||||
</el-timeline-item>
|
||||
</el-timeline>
|
||||
@ -395,7 +395,7 @@ onMounted(() => {});
|
||||
font-size: 14px;
|
||||
font-family: Source Han Sans CN-Regular, Source Han Sans CN;
|
||||
font-weight: 400;
|
||||
color: #333333;
|
||||
color: white;
|
||||
border-left: 2px solid #008bff;
|
||||
padding-left: 5px;
|
||||
}
|
||||
@ -404,6 +404,7 @@ onMounted(() => {});
|
||||
flex: 1;
|
||||
:deep(.el-dialog) {
|
||||
position: relative;
|
||||
background-color: rgba(9, 64, 95, 0.85);
|
||||
}
|
||||
.title-detail {
|
||||
@include flex;
|
||||
@ -415,7 +416,7 @@ onMounted(() => {});
|
||||
font-size: 18px;
|
||||
font-family: Source Han Sans CN-Regular, Source Han Sans CN;
|
||||
font-weight: 400;
|
||||
color: #333333;
|
||||
color: white;
|
||||
margin-left: 5px;
|
||||
margin-right: auto;
|
||||
}
|
||||
@ -434,7 +435,7 @@ onMounted(() => {});
|
||||
font-size: 12px;
|
||||
font-family: Source Han Sans CN-Medium, Source Han Sans CN;
|
||||
font-weight: 500;
|
||||
color: #333333;
|
||||
color: white;
|
||||
> span {
|
||||
font-weight: 400;
|
||||
color: #008bff;
|
||||
@ -469,7 +470,7 @@ onMounted(() => {});
|
||||
width: 380px;
|
||||
height: 650px;
|
||||
min-width: 420px;
|
||||
background: #ffffff;
|
||||
background-color: rgba(9, 64, 95, 0.85);
|
||||
box-shadow: 0px 4px 8px 0px rgba(48, 62, 100, 0.2);
|
||||
border-radius: 8px 8px 8px 8px;
|
||||
padding: 15px 20px;
|
||||
@ -487,7 +488,7 @@ onMounted(() => {});
|
||||
font-size: 12px;
|
||||
font-family: Source Han Sans CN-Medium, Source Han Sans CN;
|
||||
font-weight: 500;
|
||||
color: #333333;
|
||||
color: white;
|
||||
white-space: nowrap;
|
||||
margin-right: 10px;
|
||||
}
|
||||
@ -495,7 +496,7 @@ onMounted(() => {});
|
||||
font-size: 12px;
|
||||
font-family: Source Han Sans CN-Regular, Source Han Sans CN;
|
||||
font-weight: 400;
|
||||
color: #333333;
|
||||
color: white;
|
||||
}
|
||||
.imgList {
|
||||
display: flex;
|
||||
@ -512,7 +513,7 @@ onMounted(() => {});
|
||||
@include flex;
|
||||
flex-wrap: wrap;
|
||||
:deep(.face-uploader .el-upload) {
|
||||
border: 1px dashed #d9d9d9 !important;
|
||||
border: 1px dashed #087ba4 !important;
|
||||
border-radius: 6px !important;
|
||||
cursor: pointer !important;
|
||||
position: relative !important;
|
||||
@ -523,7 +524,7 @@ onMounted(() => {});
|
||||
}
|
||||
:deep(.el-icon) {
|
||||
font-size: 28px;
|
||||
color: #8c939d;
|
||||
color: #087ba4;
|
||||
width: 53px;
|
||||
height: 53px;
|
||||
line-height: 53px;
|
||||
@ -543,6 +544,7 @@ onMounted(() => {});
|
||||
span {
|
||||
margin-right: auto;
|
||||
margin-left: 5px;
|
||||
color: white;
|
||||
}
|
||||
}
|
||||
.situation-step {
|
||||
@ -561,6 +563,15 @@ onMounted(() => {});
|
||||
:deep(.el-timeline) {
|
||||
padding: 0;
|
||||
}
|
||||
:deep(.el-input__wrapper),
|
||||
:deep(.el-textarea__inner) {
|
||||
background-color: transparent;
|
||||
box-shadow: 0 0 0 1px #087ba4 inset;
|
||||
}
|
||||
:deep(.el-input__inner),
|
||||
:deep(.el-textarea__inner) {
|
||||
color: white;
|
||||
}
|
||||
.status-name {
|
||||
position: absolute;
|
||||
right: 0;
|
||||
|
||||
@ -11,7 +11,7 @@
|
||||
:pagination="true"
|
||||
background
|
||||
:isShowSearch="false"
|
||||
:onReset="false"
|
||||
:onReset="true"
|
||||
>
|
||||
<template #operation="{ row }">
|
||||
<el-button type="primary" link @click="handleLookItem(row)">
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
<template>
|
||||
<div class="overview">
|
||||
<el-dialog :show-close="false" append-to-body v-model="visible1" :style="dialogStyle" @close="closeMain">
|
||||
<div class="overview" v-if="visible1">
|
||||
<el-dialog :show-close="false" v-model="visible1" :style="dialogStyle" @close="closeMain">
|
||||
<template #title>
|
||||
<div class="title-detail">
|
||||
<img src="@/assets/images/tableIcon/look.png" alt="" />
|
||||
@ -84,7 +84,7 @@
|
||||
:data="recordData"
|
||||
class="el-table"
|
||||
:row-style="{ height: '40px' }"
|
||||
:header-cell-style="{ backgroundColor: '#F5F7FA', textAlign: 'center', height: '40px' }"
|
||||
:header-cell-style="{ textAlign: 'center', height: '40px' }"
|
||||
:cell-style="{ textAlign: 'center', height: '40px' }"
|
||||
@row-click="rowClick"
|
||||
>
|
||||
@ -93,7 +93,7 @@
|
||||
<el-table-column label="隐患照片">
|
||||
<template #default="scope">
|
||||
<el-image
|
||||
v-if="scope.row.image"
|
||||
v-if="scope.row.image && scope.row.image.length > 0"
|
||||
style="width: 38px; height: 28px"
|
||||
:src="scope.row.image[0].url"
|
||||
fit="fill"
|
||||
@ -120,7 +120,7 @@
|
||||
<div class="operation-btn" v-if="basicData?.state != 4">
|
||||
<!-- <el-button type="info" style="margin-right: 98px">驳回,请尽快整改</el-button>
|
||||
<el-button type="primary">整改完成,全部合格</el-button> -->
|
||||
<el-button type="primary" @click="allSubmit">全部整改完成,提交审核</el-button>
|
||||
<el-button class="hzStyle" type="primary" @click="allSubmit">全部整改完成,提交审核</el-button>
|
||||
</div>
|
||||
</div>
|
||||
<div class="transform-record" v-if="transformDialog">
|
||||
@ -226,7 +226,7 @@
|
||||
<el-button type="primary" @click="auditVisible = true">审核</el-button>
|
||||
</div> -->
|
||||
<div class="status-operate" v-if="item.type">
|
||||
<el-button type="primary" @click="submitForm">提交</el-button>
|
||||
<el-button class="hzStyle" type="primary" @click="submitForm">提交</el-button>
|
||||
</div>
|
||||
</el-timeline-item>
|
||||
</el-timeline>
|
||||
@ -395,7 +395,7 @@ onMounted(() => {});
|
||||
font-size: 14px;
|
||||
font-family: Source Han Sans CN-Regular, Source Han Sans CN;
|
||||
font-weight: 400;
|
||||
color: #333333;
|
||||
color: white;
|
||||
border-left: 2px solid #008bff;
|
||||
padding-left: 5px;
|
||||
}
|
||||
@ -404,6 +404,7 @@ onMounted(() => {});
|
||||
flex: 1;
|
||||
:deep(.el-dialog) {
|
||||
position: relative;
|
||||
background-color: rgba(9, 64, 95, 0.85);
|
||||
}
|
||||
.title-detail {
|
||||
@include flex;
|
||||
@ -415,7 +416,7 @@ onMounted(() => {});
|
||||
font-size: 18px;
|
||||
font-family: Source Han Sans CN-Regular, Source Han Sans CN;
|
||||
font-weight: 400;
|
||||
color: #333333;
|
||||
color: white;
|
||||
margin-left: 5px;
|
||||
margin-right: auto;
|
||||
}
|
||||
@ -434,7 +435,7 @@ onMounted(() => {});
|
||||
font-size: 12px;
|
||||
font-family: Source Han Sans CN-Medium, Source Han Sans CN;
|
||||
font-weight: 500;
|
||||
color: #333333;
|
||||
color: white;
|
||||
> span {
|
||||
font-weight: 400;
|
||||
color: #008bff;
|
||||
@ -468,7 +469,7 @@ onMounted(() => {});
|
||||
right: -460px;
|
||||
width: 380px;
|
||||
min-width: 420px;
|
||||
background: #ffffff;
|
||||
background-color: rgba(9, 64, 95, 0.85);
|
||||
box-shadow: 0px 4px 8px 0px rgba(48, 62, 100, 0.2);
|
||||
border-radius: 8px 8px 8px 8px;
|
||||
padding: 15px 20px;
|
||||
@ -486,7 +487,7 @@ onMounted(() => {});
|
||||
font-size: 12px;
|
||||
font-family: Source Han Sans CN-Medium, Source Han Sans CN;
|
||||
font-weight: 500;
|
||||
color: #333333;
|
||||
color: white;
|
||||
white-space: nowrap;
|
||||
margin-right: 10px;
|
||||
}
|
||||
@ -494,7 +495,7 @@ onMounted(() => {});
|
||||
font-size: 12px;
|
||||
font-family: Source Han Sans CN-Regular, Source Han Sans CN;
|
||||
font-weight: 400;
|
||||
color: #333333;
|
||||
color: white;
|
||||
}
|
||||
.imgList {
|
||||
display: flex;
|
||||
@ -511,7 +512,7 @@ onMounted(() => {});
|
||||
@include flex;
|
||||
flex-wrap: wrap;
|
||||
:deep(.face-uploader .el-upload) {
|
||||
border: 1px dashed #d9d9d9 !important;
|
||||
border: 1px dashed #087ba4 !important;
|
||||
border-radius: 6px !important;
|
||||
cursor: pointer !important;
|
||||
position: relative !important;
|
||||
@ -522,7 +523,7 @@ onMounted(() => {});
|
||||
}
|
||||
:deep(.el-icon) {
|
||||
font-size: 28px;
|
||||
color: #8c939d;
|
||||
color: #087ba4;
|
||||
width: 53px;
|
||||
height: 53px;
|
||||
line-height: 53px;
|
||||
@ -542,6 +543,7 @@ onMounted(() => {});
|
||||
span {
|
||||
margin-right: auto;
|
||||
margin-left: 5px;
|
||||
color: white;
|
||||
}
|
||||
}
|
||||
.situation-step {
|
||||
@ -560,6 +562,15 @@ onMounted(() => {});
|
||||
:deep(.el-timeline) {
|
||||
padding: 0;
|
||||
}
|
||||
:deep(.el-input__wrapper),
|
||||
:deep(.el-textarea__inner) {
|
||||
background-color: transparent;
|
||||
box-shadow: 0 0 0 1px #087ba4 inset;
|
||||
}
|
||||
:deep(.el-input__inner),
|
||||
:deep(.el-textarea__inner) {
|
||||
color: white;
|
||||
}
|
||||
.status-name {
|
||||
position: absolute;
|
||||
right: 0;
|
||||
|
||||
@ -18,7 +18,6 @@
|
||||
</el-button>
|
||||
</template>
|
||||
</ProTable>
|
||||
|
||||
<DialogForm
|
||||
:title="title"
|
||||
:formConfig="formConfig"
|
||||
@ -29,13 +28,13 @@
|
||||
@confirm="saveItem"
|
||||
>
|
||||
</DialogForm>
|
||||
<engineeringDrawer v-model="engVisable" ref="engDrawer" :request="getengineering">
|
||||
<template #default="{ data }">
|
||||
<span style="margin-left: 10px" @click="onUpdate(data)">{{ data.engineeringName }}</span>
|
||||
</template>
|
||||
</engineeringDrawer>
|
||||
<allEngineering @click="engVisable = true" />
|
||||
</div>
|
||||
<engineeringDrawer v-model="engVisable" ref="engDrawer" :request="getengineering">
|
||||
<template #default="{ data }">
|
||||
<span style="margin-left: 10px" @click="onUpdate(data)">{{ data.engineeringName }}</span>
|
||||
</template>
|
||||
</engineeringDrawer>
|
||||
<allEngineering @click="engVisable = true" />
|
||||
</template>
|
||||
|
||||
<script setup lang="tsx" name="ProjectSupervisionRecord">
|
||||
@ -43,7 +42,7 @@ import { ref, reactive, onMounted } from "vue";
|
||||
import { ElMessage, ElMessageBox } from "element-plus";
|
||||
import { ColumnProps } from "@/components/ProTable/interface";
|
||||
import ProTable from "@/components/ProTable/index.vue";
|
||||
import { getLedgerPage, editLedger } from "@/api/modules/enterpriseApi";
|
||||
import { getLedgerPage, editLedger } from "@/api/modules/project";
|
||||
import { getRelevanceList } from "@/api/modules/common";
|
||||
import DialogForm from "@/components/DialogForm/index.vue";
|
||||
import engineeringDrawer from "@/components/engineeringDrawer/index.vue";
|
||||
@ -55,7 +54,6 @@ const engVisable = ref(false);
|
||||
const title = ref("");
|
||||
// 获取 ProTable 元素,调用其获取刷新数据方法(还能获取到当前查询参数,方便导出携带参数)
|
||||
const proTable = ref();
|
||||
const engDrawer = ref();
|
||||
|
||||
interface formData {
|
||||
deviceName: string;
|
||||
@ -88,15 +86,10 @@ const columns: ColumnProps[] = [
|
||||
// 多级 prop
|
||||
{ prop: "name", label: "设备名称", isShow: false, search: { el: "input" } },
|
||||
{ prop: "deviceName", label: "设备名称" },
|
||||
{ prop: "type", label: "报警类型" },
|
||||
{
|
||||
prop: "createTime",
|
||||
label: "报警时间"
|
||||
},
|
||||
{ prop: "type", label: "报警类型", search: { el: "input" } },
|
||||
{
|
||||
prop: "createTime",
|
||||
label: "报警时间",
|
||||
isShow: false,
|
||||
search: {
|
||||
el: "date-picker",
|
||||
|
||||
@ -226,6 +219,11 @@ const formConfig = reactive({
|
||||
}
|
||||
});
|
||||
|
||||
// 如果表格需要初始化请求参数,直接定义传给 ProTable(之后每次请求都会自动带上该参数,此参数更改之后也会一直带上,改变此参数会自动刷新表格数据)
|
||||
const initParam = reactive({
|
||||
engineeringSn: ""
|
||||
});
|
||||
|
||||
// dataCallback 是对于返回的表格数据做处理,如果你后台返回的数据不是 list && total && pageNum && pageSize 这些字段,那么你可以在这里进行处理成这些字段
|
||||
// 或者直接去 hooks/useTable.ts 文件中把字段改为你后端对应的就行
|
||||
const dataCallback = (data: any) => {
|
||||
@ -238,11 +236,6 @@ const dataCallback = (data: any) => {
|
||||
};
|
||||
};
|
||||
|
||||
// 如果表格需要初始化请求参数,直接定义传给 ProTable(之后每次请求都会自动带上该参数,此参数更改之后也会一直带上,改变此参数会自动刷新表格数据)
|
||||
const initParam = reactive({
|
||||
engineeringSn: ""
|
||||
});
|
||||
|
||||
// 如果你想在请求之前对当前请求参数做一些操作,可以自定义如下函数:params 为当前所有的请求参数(包括分页),最后返回请求列表接口
|
||||
// 默认不做操作就直接在 ProTable 组件上绑定 :requestApi="getUserList"
|
||||
const getTableList = (params: any) => {
|
||||
@ -280,15 +273,14 @@ const saveItem = async (form: any) => {
|
||||
ElMessage.success("提交成功");
|
||||
visible.value = false;
|
||||
};
|
||||
const getengineering = (params: any) => {
|
||||
// let newParams = JSON.parse(JSON.stringify(params));
|
||||
return getRelevanceList();
|
||||
};
|
||||
|
||||
// 点击抽屉的工程名称更新页面
|
||||
const onUpdate = async row => {
|
||||
initParam.engineeringSn = row.engineeringSn;
|
||||
ElMessage.success("页面已更新");
|
||||
};
|
||||
|
||||
const getengineering = (params: any) => {
|
||||
// let newParams = JSON.parse(JSON.stringify(params));
|
||||
return getRelevanceList();
|
||||
};
|
||||
</script>
|
||||
|
||||
@ -47,13 +47,13 @@
|
||||
</template>
|
||||
</DialogForm>
|
||||
<AMap v-model="isOpen" @get-address="getAddress" />
|
||||
<engineeringDrawer v-model="engVisable" ref="engDrawer" :request="getengineering">
|
||||
<template #default="{ data }">
|
||||
<span style="margin-left: 10px" @click="onUpdate(data)">{{ data.engineeringName }}</span>
|
||||
</template>
|
||||
</engineeringDrawer>
|
||||
<allEngineering @click="engVisable = true" />
|
||||
</div>
|
||||
<engineeringDrawer v-model="engVisable" ref="engDrawer" :request="getengineering">
|
||||
<template #default="{ data }">
|
||||
<span style="margin-left: 10px" @click="onUpdate(data)">{{ data.engineeringName }}</span>
|
||||
</template>
|
||||
</engineeringDrawer>
|
||||
<allEngineering @click="engVisable = true" />
|
||||
</template>
|
||||
|
||||
<script setup lang="tsx" name="ProjectSupervisionRecord">
|
||||
@ -62,6 +62,7 @@ import { ElMessage, ElMessageBox } from "element-plus";
|
||||
import { ColumnProps } from "@/components/ProTable/interface";
|
||||
import { Delete } from "@element-plus/icons-vue";
|
||||
import { jxj_User } from "@/api/types";
|
||||
import { GlobalStore } from "@/stores";
|
||||
import { useHandleData } from "@/hooks/useHandleData";
|
||||
import ProTable from "@/components/ProTable/index.vue";
|
||||
import {
|
||||
@ -70,7 +71,7 @@ import {
|
||||
editDustManagement,
|
||||
deleteDustManagement,
|
||||
getengineeringList
|
||||
} from "@/api/modules/enterpriseApi";
|
||||
} from "@/api/modules/project";
|
||||
import { getRelevanceList } from "@/api/modules/common";
|
||||
import DialogForm from "@/components/DialogForm/index.vue";
|
||||
import AMap from "@/components/AMap/AMap.vue";
|
||||
@ -78,12 +79,12 @@ import engineeringDrawer from "@/components/engineeringDrawer/index.vue";
|
||||
import allEngineering from "@/components/allEngineering/index.vue";
|
||||
|
||||
const visible = ref(false);
|
||||
const isOpen = ref(false);
|
||||
const engVisable = ref(false);
|
||||
const isOpen = ref(false);
|
||||
const title = ref("");
|
||||
const store = GlobalStore();
|
||||
// 获取 ProTable 元素,调用其获取刷新数据方法(还能获取到当前查询参数,方便导出携带参数)
|
||||
const proTable = ref();
|
||||
const engDrawer = ref();
|
||||
|
||||
interface formData {
|
||||
name?: string;
|
||||
@ -96,8 +97,6 @@ interface formData {
|
||||
priority: number;
|
||||
}
|
||||
|
||||
const records = ref({});
|
||||
|
||||
const formData = ref<formData>({
|
||||
name: "",
|
||||
code: "",
|
||||
@ -109,13 +108,38 @@ const formData = ref<formData>({
|
||||
position: ""
|
||||
});
|
||||
|
||||
// 修改数据按钮
|
||||
const handleEditItem = async (index: number, row: any) => {
|
||||
if (index === 1) {
|
||||
formConfig.formItemConfig[1].disabled = false;
|
||||
title.value = "新增设备";
|
||||
formData.value = reactive({
|
||||
name: "",
|
||||
code: "",
|
||||
hardwareId: "",
|
||||
priority: 1,
|
||||
engineeringSn: "",
|
||||
lat: undefined,
|
||||
lng: undefined,
|
||||
position: ""
|
||||
});
|
||||
} else {
|
||||
formConfig.formItemConfig[1].disabled = true;
|
||||
title.value = "编辑设备";
|
||||
formData.value = reactive({ ...row });
|
||||
// 判断后端返回的经纬度是不是为null
|
||||
row.lng === null
|
||||
? formData.value.position === ""
|
||||
: (formData.value.position = "经度:" + row.lng + "," + "维度:" + row.lat);
|
||||
}
|
||||
visible.value = true;
|
||||
};
|
||||
|
||||
// 表格配置项
|
||||
const columns: ColumnProps[] = [
|
||||
{ type: "index", label: "序号", width: 80 },
|
||||
|
||||
// 多级 prop
|
||||
{ prop: "engineeringName", label: "工程名称" },
|
||||
|
||||
{ prop: "name", label: "设备名称", search: { el: "input" } },
|
||||
{ prop: "state", label: "在线状态" },
|
||||
{ prop: "code", label: "设备编码" },
|
||||
@ -145,7 +169,8 @@ const formConfig = reactive({
|
||||
label: "所属工程",
|
||||
prop: "engineeringSn",
|
||||
type: "select",
|
||||
data: []
|
||||
data: [],
|
||||
clearable: true
|
||||
},
|
||||
|
||||
{
|
||||
@ -218,33 +243,6 @@ const getTableList = (params: any) => {
|
||||
return getDustManagementPage(newParams);
|
||||
};
|
||||
|
||||
// 修改数据按钮
|
||||
const handleEditItem = async (index: number, row: any) => {
|
||||
if (index === 1) {
|
||||
formConfig.formItemConfig[1].disabled = false;
|
||||
title.value = "新增设备";
|
||||
formData.value = reactive({
|
||||
name: "",
|
||||
code: "",
|
||||
hardwareId: "",
|
||||
priority: 1,
|
||||
engineeringSn: "",
|
||||
lat: undefined,
|
||||
lng: undefined,
|
||||
position: ""
|
||||
});
|
||||
} else {
|
||||
formConfig.formItemConfig[1].disabled = true;
|
||||
title.value = "编辑设备";
|
||||
formData.value = reactive({ ...row });
|
||||
// 判断后端返回的经纬度是不是为null
|
||||
row.lng === null
|
||||
? formData.value.position === ""
|
||||
: (formData.value.position = "经度:" + row.lng + "," + "维度:" + row.lat);
|
||||
}
|
||||
visible.value = true;
|
||||
};
|
||||
|
||||
// 删除用户信息
|
||||
const handleDeleteItem = async (params: jxj_User.ResUserList) => {
|
||||
await useHandleData(deleteDustManagement, { id: params.id }, `删除【${params.name}】`);
|
||||
@ -272,6 +270,20 @@ const getAddress = async (e: any) => {
|
||||
isOpen.value = false;
|
||||
ElMessage.success("获取经纬度成功");
|
||||
};
|
||||
|
||||
// 获取工程列表
|
||||
const getengineering = (params: any) => {
|
||||
// let newParams = JSON.parse(JSON.stringify(params));
|
||||
return getRelevanceList();
|
||||
};
|
||||
|
||||
// 点击抽屉的工程名称更新页面
|
||||
const onUpdate = async row => {
|
||||
initParam.engineeringSn = row.engineeringSn;
|
||||
ElMessage.success("页面已更新");
|
||||
};
|
||||
|
||||
// 新增或者编辑按钮的下拉框
|
||||
const getNameList = async () => {
|
||||
const res = await getengineeringList({});
|
||||
formConfig.formItemConfig[3].data = res.result.map(item => {
|
||||
@ -281,19 +293,10 @@ const getNameList = async () => {
|
||||
};
|
||||
});
|
||||
};
|
||||
|
||||
// 点击抽屉的工程名称更新页面
|
||||
const onUpdate = async row => {
|
||||
initParam.engineeringSn = row.engineeringSn;
|
||||
ElMessage.success("页面已更新");
|
||||
};
|
||||
|
||||
const getengineering = (params: any) => {
|
||||
// let newParams = JSON.parse(JSON.stringify(params));
|
||||
return getRelevanceList();
|
||||
};
|
||||
|
||||
onMounted(async () => {
|
||||
getNameList();
|
||||
if (store.projectDateAuth === 1) {
|
||||
delete formConfig.rules.engineeringSn;
|
||||
}
|
||||
});
|
||||
</script>
|
||||
|
||||
@ -9,8 +9,8 @@
|
||||
:tool-button="false"
|
||||
:pagination="true"
|
||||
background
|
||||
:isShowSearch="false"
|
||||
:initParam="initParam"
|
||||
:isShowSearch="false"
|
||||
>
|
||||
</ProTable>
|
||||
<engineeringDrawer v-model="engVisable" ref="engDrawer" :request="getengineering">
|
||||
@ -22,21 +22,19 @@
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script setup lang="tsx" name="ProjectSupervisionRecord">
|
||||
<script setup lang="tsx" name="ProjectDustRealTime">
|
||||
import { ref, reactive } from "vue";
|
||||
import { ElMessage } from "element-plus";
|
||||
import { ColumnProps } from "@/components/ProTable/interface";
|
||||
import ProTable from "@/components/ProTable/index.vue";
|
||||
import { getRealTimePage } from "@/api/modules/enterpriseApi";
|
||||
import { getRelevanceList } from "@/api/modules/common";
|
||||
import { getRealTimePage } from "@/api/modules/project";
|
||||
import engineeringDrawer from "@/components/engineeringDrawer/index.vue";
|
||||
import allEngineering from "@/components/allEngineering/index.vue";
|
||||
import { getRelevanceList } from "@/api/modules/common";
|
||||
import { ElMessage, ElMessageBox } from "element-plus";
|
||||
|
||||
// 获取 ProTable 元素,调用其获取刷新数据方法(还能获取到当前查询参数,方便导出携带参数)
|
||||
const proTable = ref();
|
||||
|
||||
const engVisable = ref(false);
|
||||
|
||||
// 表格配置项
|
||||
const columns: ColumnProps[] = [
|
||||
{ type: "index", label: "序号", width: 80 },
|
||||
@ -95,7 +93,6 @@ const columns: ColumnProps[] = [
|
||||
{ prop: "createTime", label: "上报时间" }
|
||||
];
|
||||
|
||||
// 如果表格需要初始化请求参数,直接定义传给 ProTable(之后每次请求都会自动带上该参数,此参数更改之后也会一直带上,改变此参数会自动刷新表格数据)
|
||||
const initParam = reactive({
|
||||
engineeringSn: ""
|
||||
});
|
||||
@ -118,15 +115,14 @@ const getTableList = (params: any) => {
|
||||
let newParams = JSON.parse(JSON.stringify(params));
|
||||
return getRealTimePage(newParams);
|
||||
};
|
||||
const getengineering = (params: any) => {
|
||||
// let newParams = JSON.parse(JSON.stringify(params));
|
||||
return getRelevanceList();
|
||||
};
|
||||
|
||||
// 点击抽屉的工程名称更新页面
|
||||
const onUpdate = async row => {
|
||||
initParam.engineeringSn = row.engineeringSn;
|
||||
ElMessage.success("页面已更新");
|
||||
};
|
||||
|
||||
const getengineering = (params: any) => {
|
||||
// let newParams = JSON.parse(JSON.stringify(params));
|
||||
return getRelevanceList();
|
||||
};
|
||||
</script>
|
||||
|
||||
@ -20,7 +20,7 @@
|
||||
padding: 16px 0 0 36px;
|
||||
border-radius: 8px;
|
||||
// height: 56px;
|
||||
background-color: #ffffff;
|
||||
background-color: #092945;
|
||||
}
|
||||
.imgPage {
|
||||
box-sizing: border-box;
|
||||
@ -29,7 +29,7 @@
|
||||
padding: 20px 10px 20px 20px;
|
||||
margin-top: 20px;
|
||||
overflow-y: scroll;
|
||||
background-color: #ffffff;
|
||||
background-color: #092945;
|
||||
border-radius: 8px;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
@ -43,7 +43,7 @@
|
||||
width: 23.1%;
|
||||
height: 244px;
|
||||
margin: 10px;
|
||||
border: 1px solid #dedddd;
|
||||
border: 2px solid #09405f;
|
||||
border-radius: 4px;
|
||||
opacity: 1;
|
||||
.page_text {
|
||||
@ -53,7 +53,7 @@
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
font-size: 12px;
|
||||
color: #333333;
|
||||
color: #c4c4c4;
|
||||
.position {
|
||||
width: 97px;
|
||||
overflow: hidden;
|
||||
@ -78,6 +78,46 @@
|
||||
justify-content: center;
|
||||
margin-top: 20px;
|
||||
}
|
||||
:deep(.el-pagination) {
|
||||
.el-pagination__goto {
|
||||
color: var(--el-color-primary);
|
||||
}
|
||||
.el-pagination__classifier {
|
||||
color: var(--el-color-primary);
|
||||
}
|
||||
.el-input__wrapper {
|
||||
color: var(--el-color-primary);
|
||||
background-color: transparent;
|
||||
border: none;
|
||||
box-shadow: 0 0 0 1px var(--el-color-primary, var(--el-color-primary)) inset;
|
||||
height: 26px;
|
||||
}
|
||||
.el-input__inner {
|
||||
color: var(--el-color-primary);
|
||||
}
|
||||
.el-pager li {
|
||||
color: white;
|
||||
border: none;
|
||||
height: 26px;
|
||||
}
|
||||
.el-pager li:active {
|
||||
color: var(--el-color-primary);
|
||||
border: none;
|
||||
height: 26px;
|
||||
}
|
||||
.el-pagination__total {
|
||||
color: var(--el-color-primary);
|
||||
}
|
||||
.btn-prev,
|
||||
.btn-next,
|
||||
.btn-prev:disabled,
|
||||
.btn-next:disabled {
|
||||
color: var(--el-color-primary);
|
||||
background-color: transparent;
|
||||
border: 1px solid var(--el-color-primary);
|
||||
height: 26px;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -92,7 +132,7 @@
|
||||
margin: 0 0 4px;
|
||||
font-family: "siyuan_Medium";
|
||||
font-size: 14px;
|
||||
color: #00378f;
|
||||
color: #0bc4f0;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
> span {
|
||||
@ -120,9 +160,9 @@
|
||||
}
|
||||
.imgDialog {
|
||||
.uploadBtn {
|
||||
color: #30ac7c;
|
||||
border: 1px solid #30ac7c;
|
||||
background: rgba(48, 172, 124, 0.1);
|
||||
color: #087ba4;
|
||||
border: 1px solid #087ba4;
|
||||
background-color: transparent;
|
||||
}
|
||||
}
|
||||
.pending {
|
||||
@ -152,7 +192,28 @@
|
||||
:deep(.el-form .el-form-item__content .el-range-editor) {
|
||||
width: 200px;
|
||||
}
|
||||
|
||||
// 表单
|
||||
:deep(.el-form) {
|
||||
.el-form-item__content > :not(button) {
|
||||
width: 160px;
|
||||
}
|
||||
.el-form-item__label {
|
||||
color: var(--el-color-primary);
|
||||
}
|
||||
.el-input__wrapper,
|
||||
.el-textarea__inner {
|
||||
background-color: transparent;
|
||||
box-shadow: 0 0 0 1px var(--el-color-primary, var(--el-color-primary)) inset;
|
||||
}
|
||||
.el-input__inner,
|
||||
.el-textarea__inner {
|
||||
color: white;
|
||||
}
|
||||
// 去除时间选择器上下 padding
|
||||
.el-range-editor.el-input__wrapper {
|
||||
padding: 0 10px;
|
||||
}
|
||||
}
|
||||
// :deep(.el-dialog__body) {
|
||||
// padding: 0 0 0 0 !important;
|
||||
// background-color: pink;
|
||||
|
||||
@ -68,11 +68,11 @@
|
||||
<el-dialog class="imgDialog" :title="title" width="40%" v-model="visible" show-close>
|
||||
<el-form class="diaForm" :rules="rules" :model="formData" ref="ruleFormRef" label-width="160px">
|
||||
<el-form-item label="录像标题:" prop="title">
|
||||
<el-input v-model="formData.title" placeholder="请输入" />
|
||||
<el-input style="width: 70%" v-model="formData.title" placeholder="请输入" />
|
||||
</el-form-item>
|
||||
<el-form-item label="上传时间:" prop="uploadTime">
|
||||
<el-date-picker
|
||||
style="width: 100%"
|
||||
style="width: 70%"
|
||||
v-model="formData.uploadTime"
|
||||
format="YYYY-MM-DD HH:mm:ss"
|
||||
value-format="YYYY-MM-DD HH:mm:ss"
|
||||
@ -81,7 +81,7 @@
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="备注:" prop="remark">
|
||||
<el-input v-model="formData.remark" type="textarea" :rows="3" placeholder="请输入" />
|
||||
<el-input style="width: 70%" v-model="formData.remark" type="textarea" :rows="3" placeholder="请输入" />
|
||||
</el-form-item>
|
||||
<el-form-item label="录像文件:" prop="videoUrl">
|
||||
<el-upload
|
||||
@ -101,9 +101,9 @@
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<template #footer>
|
||||
<div>
|
||||
<el-button class="cancelButtonStyle" @click="visible = false">取消</el-button>
|
||||
<el-button type="primary" @click="confirm(ruleFormRef, formData)"> 保存 </el-button>
|
||||
<div class="form-footer">
|
||||
<el-button class="hzCancelStyle" @click="visible = false">取消</el-button>
|
||||
<el-button class="hzStyle" type="primary" @click="confirm(ruleFormRef, formData)"> 保存 </el-button>
|
||||
</div>
|
||||
</template>
|
||||
</el-dialog>
|
||||
@ -282,7 +282,6 @@ const onDatePicker = () => {
|
||||
|
||||
onMounted(async () => {
|
||||
getVideoData();
|
||||
getNameData();
|
||||
});
|
||||
</script>
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user