修改中建四局大屏

This commit is contained in:
yjl 2023-02-23 21:03:56 +08:00
parent 10fb3eef7e
commit b048f301d8
17 changed files with 1074 additions and 694 deletions

View File

@ -19,6 +19,13 @@ export const deletematerialRecordApi = data => post('xmgl/materialRecord/delete'
export const materialRecordListApi = data => post('xmgl/materialRecord/selectList', data);
//材料进场记录
export const getMaterialApprApi = data => get('xmgl/materialApproachRecord/page', data);
export const addMaterialApprApi = data => post('xmgl/materialApproachRecord/add', data);
export const deleteMaterialApprApi = data => post('xmgl/materialApproachRecord/delete', data);
export const editMaterialApprApi = data => post('xmgl/materialApproachRecord/edit', data);
//项目从企业库复制材料数据
export const copyMaterialApi = data => post('xmgl/materialRecord/copyMaterial', data);
//项目从企业库按照类别复制类别下所有材料数据

View File

@ -97,6 +97,8 @@ export const getLimitOrderByAcceptanceDateApi = data => get('/xmgl/subdivisionAc
export const getQualifiedRatioApi = data => get('/xmgl/materialDetectionReport/getQualifiedRatio',data)
export const getLimitByDetectionDateApi = data => get('/xmgl/materialDetectionReport/limitByDetectionDate',data)
export const getWindowDisplaypi = data => get('/xmgl/windowDisplay/list',data)
export const getMeasuredRealQuantitypi = data => get('/xmgl/measuredRealQuantity/limitOrderBySurveyingDate',data)

View File

@ -79,6 +79,7 @@ if (process.env.NODE_ENV == 'development') {
// axios.defaults.baseURL = 'http://183.234.150.152:9090/' //华发 huaxin 123456789
// axios.defaults.baseURL = 'http://139.9.66.234:7072/' //三江集团测试环境
// axios.defaults.baseURL = 'http://116.169.63.183:7070' //三江集团正式环境
// axios.defaults.baseURL = 'http://192.168.34.221:8088' //郭圣雄本地
} else if (process.env.NODE_ENV == 'debug') {
axios.defaults.baseURL = 'https://www.ceshi.com'

View File

@ -1026,10 +1026,15 @@ const routes2 = [
component: () => import('@/views/projectFront/materialManage/materialWeightList.vue')
},
{
path: '/project/materialManage/materialCategory.vue',
path: '/project/materialManage/materialCategory',
name: '材料管理_作业中心_榜单台账',
component: () => import('@/views/projectFront/materialManage/materialCategory.vue')
},
{
path: '/project/materialManage/materialMobilization',
name: '材料管理_计量中心_材料进场记录',
component: () => import('@/views/projectFront/materialManage/materialMobilization.vue')
},
// {
// path: '/project/materialManage/',
// name: '材料管理_资源中心',

View File

@ -48,9 +48,9 @@ export default new Vuex.Store({
BASEURL: baseUrl
? baseUrl
: window.location.protocol + "//" + window.location.host + "/", //
// UPLOADURL:
// window.location.protocol + "//" + window.location.host + "/upload/image", //
// FILEURL: window.location.protocol + "//" + window.location.host + "/image/", //测试
UPLOADURL:
window.location.protocol + "//" + window.location.host + "/upload/image", //
FILEURL: window.location.protocol + "//" + window.location.host + "/image/", //测试
// tag: 本地测试接口 // BASEURL:'http://192.168.34.174:6023/',
/* 2022-05-16 */
// tag: 部署河南项目时,需要打开这两行代码
@ -63,8 +63,8 @@ export default new Vuex.Store({
// BASEURL:'http://192.168.34.116:6023/',
// UPLOADURL: 'http://192.168.34.116:6023/upload/image',
// FILEURL: 'http://192.168.34.116:6023/image/',
UPLOADURL: 'http://124.71.67.160:8088/upload/image',
FILEURL: 'http://124.71.67.160:8088/image/',
// UPLOADURL: 'http://124.71.67.160:8088/upload/image',
// FILEURL: 'http://124.71.67.160:8088/image/',
//---
// UPLOADURL: 'http://192.168.34.125:6023/upload/image',
// FILEURL: 'http://192.168.34.125:6023/image/',

View File

@ -5,36 +5,36 @@
<div class="contentbut">
<div class="lw">
<p>今日出勤</p>
<!-- <p class="number">{{ list.todayAtte||0}}</p> -->
<p class="number">269</p>
<p class="number">{{ list.todayAtte||0}}</p>
<!-- <p class="number">269</p> -->
</div>
<div class="cq">
<p>在场</p>
<!-- <p class="number">{{ list.bePresent||0 }}</p> -->
<p class="number">316</p>
<p class="number">{{ list.bePresent||0 }}</p>
<!-- <p class="number">316</p> -->
</div>
<div class="tc">
<p>今日出勤率</p>
<!-- <p class="number">{{ list.atteRatio ||0}}%</p> -->
<p class="number">85.1%</p>
<p class="number">{{ list.atteRatio ||0}}%</p>
<!-- <p class="number">85.1%</p> -->
</div>
</div>
<div class="contentbut">
<div class="lw">
<p>现场</p>
<!-- <p class="number">{{ list.scene||0 }}</p> -->
<p class="number">253</p>
<p class="number">{{ list.scene||0 }}</p>
<!-- <p class="number">253</p> -->
</div>
<div class="cq">
<p>今日进场</p>
<!-- <p class="number">{{ list.todayMobilization||0 }}</p> -->
<p class="number">0</p>
<p class="number">{{ list.todayMobilization||0 }}</p>
<!-- <p class="number">0</p> -->
</div>
<div class="tc">
<p>今日退场</p>
<!-- <p class="number">{{ list.todayExit||0}}</p> -->
<p class="number">0</p>
<p class="number">{{ list.todayExit||0}}</p>
<!-- <p class="number">0</p> -->
</div>
</div>

View File

@ -75,13 +75,13 @@ export default {
return {
tableData: [
{
date: "混凝土抗压试验",
date: "钢筋原样送检",
name: "28",
address: "28",
rale: "100%"
},
{
date: "砌筑砂浆抗压试验",
date: "钢筋原样送检",
name: "10",
address: "10",
rale: "100%"
@ -93,13 +93,13 @@ export default {
rale: "100%"
},
{
date: "机械连接原样送检",
date: "混凝土抗压试验",
name: "5",
address: "5",
rale: "100%"
},
{
date: "安全网原样送检",
date: "混凝土抗压试验",
name: "1",
address: "1",
rale: "100%"

View File

@ -1,5 +1,5 @@
<template>
<Card title="计划进度">
<Card title="计划与实际进度">
<div class="down-tree">
<el-tree
style="color: #fff"

View File

@ -1,396 +1,241 @@
<template>
<Card title="标养室管理">
<div class="box">
<div class="leftEcharts1" ref="leftEcharts1"></div>
<div class="leftEcharts2" ref="leftEcharts2"></div>
<Card title="实测实量">
<div class="DataTime">
<div class="typeName">楼层</div>
<el-select v-model="floorName" placeholder="请选择"size="mini" filterable popper-class="selectCls"
style="width:170px;"
@change="checkTypes">
<el-option v-for="item in buildData"
:key="item.id"
:label="item.floorName"
:value="item.id">
</el-option>
</el-select>
<!-- <el-select v-model="typeId" placeholder="请选择"
@change="checkTypes"
style="background:transparent;width: 100px;">
<el-option v-for="item in buildData" :key="item.id" :label="item.title" :value="item.id"> </el-option>
</el-select> -->
</div>
<div class="environment">
<div class="item">
<div class="icon temperature"></div>
<div class="info">
<div class="label">室内温度</div>
<div class="value">
<span>{{ currentData.temperature || 0 }}</span>
</div>
<div class="list">
<vue-scroll style="width: 100%; height: 250px">
<div class="list-item" v-for="(item, index) in listData" :key="index">
<div class="imgDiv">
<img
:preview="item.imageUrl[0] ? item.imageUrl[0].url : []"
:src="item.imageUrl[0] ? item.imageUrl[0].url : []"
alt=""
width="50px"
/>
<!-- <img :src="$store.state.FILEURL+item.imageUrl" alt="" /> -->
</div>
<br />
</div>
<div class="item" style="margin-top:100px">
<div class="icon humidity"></div>
<div class="info">
<div class="label">室内湿度</div>
<div class="value">
<span>{{ currentData.humidity || 0 }}</span
>%RH
</div>
<div class="textDiv">
<p style="margin: -70px 0 0 120px; font-size: 16px">
{{ item.title }}
</p>
<p style="margin-top: 10px; font-size: 10px;margin-left:120px">
{{ item.measuredRealQuantityNumber }}/{{ item.qualifiedNumber }}
</p>
<el-progress
:percentage="item.qualifiedRatio"
style="width: 260px; margin-left: 120px"
></el-progress>
</div>
<div class="dateDiv">
{{ item.surveyingDate }}
</div>
</div>
</vue-scroll>
</div>
<div class="tbody" v-if="listData.length == 0">
<div class="dataImg">
<img src="@/assets/images/noData3.png" alt srcset />
<p>{{ $t("message.dataBoard.nodata") }}</p>
</div>
</div>
</Card>
</template>
<script>
import {
getstandardDevListApi,
selectStandardDevStatisticsBySnApi,
selectDayCurrentDataListApi
} from "@/assets/js/api/markingRoom";
import Card from "../components/Card.vue";
import echarts from 'echarts4';
import { getLimitOrderBySurveyingDateApi,getMeasuredRealQuantitypi } from "@/assets/js/api/zhongjianFourth";
export default {
components: { Card },
data() {
return {
currentData: {
currentDayAlarmNum: 0,
humidity: 0,
sampleNum: 0,
temperature: 0,
},
searchSn: "",
devSn: "",
dustData_24: [],
humidityList:[],//湿
temperatureList:[],//
xData:[],//x
time1: "",
sn: "",
listData: [],
time1: "",
buildData:[],
floorName:'',
};
},
mounted() {
this.createdEchart1()
this.createdEchart2()
if (this.$store.state.projectSn) {
this.searchSn = this.$store.state.projectSn;
this.$nextTick(() => {
this.getDevList();
this.getRealTimeData();
});
} else {
this.initData();
}
created() {
this.sn = this.$store.state.projectSn;
this.getData();
this.getBuildList()
},
methods: {
//24-
selectDustNoiseData() {
let data = {
projectSn: this.searchSn,
devSn: this.devSn,
};
selectDayCurrentDataListApi(data).then((res) => {
console.log('近24小时数据',res)
this.dustData_24 = res.result;
this.dustData_24.forEach(item=>{
this.humidityList.push(item.humidity)
this.temperatureList.push(item.temperature)
this.xData.push(item.receiveTime.split(' ')[1])
})
this.createdEchart1();
this.createdEchart2();
});
checkTypes(val) {
console.log("类型或者时间修改事件值 ", val);
this.getData()
},
//echarts1
createdEchart1() {
let chart1 = echarts.init(this.$refs["leftEcharts1"]);
this.option1 = {
// backgroundColor: "#05224d",
tooltip: {},
grid: {
top: "65%",
left: "0%",
right: "0%",
bottom: "0%",
containLabel: true,
},
xAxis: [
{
type: "category",
boundaryGap: true,
axisLine: {
//线x
show: true,
lineStyle: {
color: "#233e64",
},
},
axisLabel: {
//
textStyle: {
color: "#6a9cd5",
margin: 20,
},
},
axisTick: { show: true },
data: this.xData,
},
],
yAxis: [
{
type: "value",
min: 0,
max: 150,
splitNumber: 3,
splitLine: {
show: true,
lineStyle: {
color: "#233e64",
},
},
axisLine: { show: false },
axisLabel: {
margin: 10,
textStyle: {
color: "#6a9cd5",
},
},
axisTick: { show: false },
},
],
series: [
{
name: "异常流量",
type: "line",
smooth: true, //线
// symbol:'circle', //
symbolSize: 0,
lineStyle: {
normal: {
color: "#F56C35 ", // 线
},
},
areaStyle: {
//
normal: {
//线4x0,y0,x2,y2(0~1);true
color: new echarts.graphic.LinearGradient(
0,
0,
0,
1,
[
{ offset: 0, color: "rgba(61,234,255, 0.3)" },
{ offset: 0.7, color: "rgba(61,234,255, 0)" },
],
false
),
shadowColor: "rgba(53,142,215, 0.9)", //
shadowBlur: 100, //shadowBlurshadowColor,shadowOffsetX/Y,
},
},
data: this.temperatureList,
},
],
};
chart1.setOption(this.option1);
},
//echarts2
createdEchart2() {
let chart2 = echarts.init(this.$refs["leftEcharts2"]);
this.option2 = {
// backgroundColor: "#05224d",
tooltip: {},
grid: {
top: "65%",
left: "0%",
right: "0%",
bottom: "0%",
containLabel: true,
},
xAxis: [
{
type: "category",
boundaryGap: true,
axisLine: {
//线x
show: true,
lineStyle: {
color: "#233e64",
},
},
axisLabel: {
//
textStyle: {
color: "#6a9cd5",
margin: 20,
},
},
axisTick: { show: true },
data: this.xData,
},
],
yAxis: [
{
type: "value",
min: 0,
max: 150,
splitNumber: 3,
splitLine: {
show: true,
lineStyle: {
color: "#233e64",
},
},
axisLine: { show: false },
axisLabel: {
margin: 10,
textStyle: {
color: "#6a9cd5",
},
},
axisTick: { show: false },
},
],
series: [
{
name: "异常流量",
type: "line",
smooth: true, //线
// symbol:'circle', //
symbolSize: 0,
lineStyle: {
normal: {
color: "#3deaff", // 线
},
},
areaStyle: {
//
normal: {
//线4x0,y0,x2,y2(0~1);true
color: new echarts.graphic.LinearGradient(
0,
0,
0,
1,
[
{ offset: 0, color: "rgba(61,234,255, 0.3)" },
{ offset: 0.7, color: "rgba(61,234,255, 0)" },
],
false
),
shadowColor: "rgba(53,142,215, 0.9)", //
shadowBlur: 100, //shadowBlurshadowColor,shadowOffsetX/Y,
},
},
data: this.humidityList,
},
],
};
chart2.setOption(this.option2);
},
//
getRealTimeData() {
selectStandardDevStatisticsBySnApi({
projectSn: this.searchSn,
devSn: this.devSn,
//
getData() {
getLimitOrderBySurveyingDateApi({
projectSn: this.sn,
}).then((res) => {
console.log("标养室数据------", res);
this.currentData = res.result.currentData;
console.log("实测实量", res);
this.listData = res.result;
res.result.map((item) => {
if (item.imageUrl.includes("[")) {
item.imageUrl = JSON.parse(item.imageUrl);
console.log("亮点展示 ====");
if (
item.imageUrl.length !== 0 &&
!item.imageUrl[0].url.includes(this.$store.state.FILEURL)
) {
item.imageUrl[0].url =
this.$store.state.FILEURL + item.imageUrl[0].url;
}
} else {
let url = item.imageUrl;
if (url.length !== 0 && !url.includes(this.$store.state.FILEURL)) {
item.imageUrl = [{}];
item.imageUrl[0].url = this.$store.state.FILEURL + url;
}
}
});
});
},
//----
getDevList() {
getstandardDevListApi({ projectSn: this.searchSn }).then((result) => {
console.log("列表", result);
this.devList = result.result;
if (result.result.length > 0) {
this.devSn = result.result[0].devSn;
this.getRealTimeData();
this.selectDustNoiseData()
//
getBuildList(){
// let arr=[]
getMeasuredRealQuantitypi({
projectSn: this.sn,
}).then(res=>{
console.log("楼层数据", res);
if(res.result.length>=1){
this.buildData=res.result
}
});
},
//
initData() {
this.searchSn = this.projectsn;
this.currentData = {
currentDayAlarmNum: 0,
humidity: 0,
sampleNum: 0,
temperature: 0,
};
this.devSn = "";
if (this.personnelTypeChart) {
this.personnelTypeChart.clear();
}
this.getData()
this.getDevList();
// this.buildData.forEach(item=>{
// if(arr.indexOf(item)===-1){
// arr.push(item)
// }
// })
// console.log('',arr);
})
},
},
components: {
Card,
},
};
</script>
<style lang="less" scoped>
.box {
width: 100%;
height: 540px;
display: flex;
flex-flow: column;
.leftEcharts1{
width: 300px;
height: 300px;
margin: -160px 0 0 0px;
}
.leftEcharts2{
width: 300px;
height: 300px;
margin: -150px 0 0 0px; }
}
.environment {
color: #fff;
margin-left: 67%;
margin: -135% 0 0 74%;
.item {
display: flex;
align-items: center;
margin-top: 80px;
.icon {
width: 40px;
height: 40px;
&.temperature {
background: url(../assets/images/quality/i-temperature.png) no-repeat;
background-size: contain;
margin-left: 3px;
}
&.humidity {
background: url(../assets/images/quality/i-humidity.png) no-repeat;
background-size: contain;
margin-left: 3px;
}
// &.spray {
// background: url(../assets/images/quality/i-spray.png) no-repeat;
// background-size: contain;
// }
}
.info {
.value {
margin-top: 4px;
font-size: 14px;
text-align: center;
span {
color: #f7d502;
// margin-right: 10px;
}
}
}
}
.btn {
margin: 8px auto;
width: 408px;
height: 62px;
line-height: 62px;
text-align: center;
font-size: 28px;
font-weight: bold;
color: #02d5d2;
background: url(../assets/images/sourse/bg-car-count.png) no-repeat;
.list {
// width: 1000px;
height: 525px;
// display: flex;
// flex-wrap: wrap;
// margin-left: 20px;
margin-top: 0px;
.list-item {
width: 400px;
height: 100px;
// display: flex;
background: url("~@/assets/images/zjsj/zjsj_scsl.png") no-repeat;
background-size: 100% 100%;
// margin-right: 18px;
margin-top: 10px;
.dateDiv {
margin-left: 320px;
margin-top: -80px;
font-size: 10px;
}
.imgDiv {
img {
width: 100px;
height: 80px;
margin: 10px 10px;
}
}
}
}
</style>
.DataTime {
display:flex;
margin-top: 10px;
.typeName{
margin-left:6px;
line-height: 30px;
}
}
::v-deep .el-date-editor--daterange.el-input__inner {
cursor: pointer;
width: 235px;
height: 30px;
border: 1px solid #66d3d8;
background: transparent;
}
::v-deep .el-range-input {
cursor: pointer;
background: transparent;
color: #fff;
}
::v-deep .el-date-editor {
cursor: pointer;
.el-range__icon {
line-height: 23px;
color: #6ee4f0;
}
.el-range-separator {
line-height: 23px;
color: #757d88;
}
.el-range__close-icon {
color: #757d88;
line-height: 23px;
}
}
#trendContainer {
width: 100%;
height: 100%;
left: 0;
margin-top: -0px;
}
::v-deep .el-progress-bar {
width: 105%;
::v-deep .el-progress-bar__outer {
height: 10px !important;
}
}
::v-deep .el-progress__text {
color: #fff;
}
::v-deep .el-progress-bar__inner {
background-color: #5ce2f6;
}
::v-deep .el-input--suffix .el-input__inner {
background: transparent !important;
color: #fff !important;
border: 1px solid #66D3D8 !important ;
height: 30px !important;
z-index: 999;
margin-left:10px;
// width: 150px;
}
// // ::v-deep .el-input__suffix {
// right: -70px;
// top:2;
// }
</style>

View File

@ -43,7 +43,7 @@
<div class="woria">
<JRingChart
:title="{
text: '今日巡检',
text: '本周巡检',
subTitle: `${list.todayTotal}`,
fontSize: 18,
}"

View File

@ -1,269 +1,396 @@
<template>
<Card title="实测实量">
<div class="DataTime">
<el-date-picker
v-model="time1"
type="daterange"
range-separator="-"
start-placeholder="开始日期"
end-placeholder="结束日期"
value-format="yyyy-MM-dd"
size="mini"
></el-date-picker>
<Card title="标养室管理">
<div class="box">
<div class="leftEcharts1" ref="leftEcharts1"></div>
<div class="leftEcharts2" ref="leftEcharts2"></div>
</div>
<div class="list">
<vue-scroll style="width: 100%; height: 250px">
<div class="list-item" v-for="(item, index) in listData" :key="index">
<div class="imgDiv">
<img
:preview="item.imageUrl[0] ? item.imageUrl[0].url : []"
:src="item.imageUrl[0] ? item.imageUrl[0].url : []"
alt=""
width="50px"
/>
<!-- <img :src="$store.state.FILEURL+item.imageUrl" alt="" /> -->
<div class="environment">
<div class="item">
<div class="icon temperature"></div>
<div class="info">
<div class="label">室内温度</div>
<div class="value">
<span>{{ currentData.temperature || 0 }}</span>
</div>
</div>
<div class="textDiv">
<p style="margin: -70px 0 0 120px; font-size: 16px">
{{ item.title }}
</p>
<p style="margin-top: 10px; font-size: 10px;margin-left:120px">
{{ item.measuredRealQuantityNumber }}/{{ item.qualifiedNumber }}
</p>
<el-progress
:percentage="item.qualifiedRatio"
style="width: 260px; margin-left: 120px"
></el-progress>
</div>
<div class="dateDiv">
{{ item.surveyingDate }}
<br />
</div>
<div class="item" style="margin-top:100px">
<div class="icon humidity"></div>
<div class="info">
<div class="label">室内湿度</div>
<div class="value">
<span>{{ currentData.humidity || 0 }}</span
>%RH
</div>
</div>
</div>
</vue-scroll>
</div>
<div class="tbody" v-if="listData.length == 0">
<div class="dataImg">
<img src="@/assets/images/noData3.png" alt srcset />
<p>{{ $t("message.dataBoard.nodata") }}</p>
</div>
</div>
</Card>
</template>
<script>
import {
getstandardDevListApi,
selectStandardDevStatisticsBySnApi,
selectDayCurrentDataListApi
} from "@/assets/js/api/markingRoom";
import Card from "../components/Card.vue";
import { getLimitOrderBySurveyingDateApi } from "@/assets/js/api/zhongjianFourth";
import echarts from 'echarts4';
export default {
components: { Card },
data() {
return {
time1: "",
// listData:[
// {
// img:'~@/assets/images/zjsj/progress1.jpg',
// name:'',
// moen:'94/100',
// progress:20,
// date:' 2022-12-20'
// },
// {
// img:'~@/assets/images/zjsj/progress1.jpg',
// name:'',
// moen:'94/100',
// progress:20,
// date:' 2022-12-20'
// },
// {
// img:'~@/assets/images/zjsj/progress1.jpg',
// name:'',
// moen:'94/100',
// progress:20,
// date:' 2022-12-20'
// },
// {
// img:'~@/assets/images/zjsj/progress1.jpg',
// name:'',
// moen:'94/100',
// progress:20,
// date:' 2022-12-20'
// },
// // {
// // img:'~@/assets/images/zjsj/progress1.jpg',
// // name:'',
// // moen:'94/100',
// // progress:20,
// // date:' 2022-12-20'
// // },
// // {
// // img:'~@/assets/images/zjsj/progress1.jpg',
// // name:'',
// // moen:'94/100',
// // progress:20,
// // date:' 2022-12-20'
// // },
// // {
// // img:'~@/assets/images/zjsj/progress1.jpg',
// // name:'',
// // moen:'94/100',
// // progress:20,
// // date:' 2022-12-20'
// // },
// // {
// // img:'~@/assets/images/zjsj/progress1.jpg',
// // name:'',
// // moen:'94/100',
// // progress:20,
// // date:' 2022-12-20'
// // },
// // {
// // img:'~@/assets/images/zjsj/progress1.jpg',
// // name:'',
// // moen:'94/100',
// // progress:20,
// // date:' 2022-12-20'
// // },
// // {
// // img:'~@/assets/images/zjsj/progress1.jpg',
// // name:'',
// // moen:'94/100',
// // progress:20,
// // date:' 2022-12-20'
// // },
// ],
sn: "",
listData: [],
time1: "",
currentData: {
currentDayAlarmNum: 0,
humidity: 0,
sampleNum: 0,
temperature: 0,
},
searchSn: "",
devSn: "",
dustData_24: [],
humidityList:[],//湿
temperatureList:[],//
xData:[],//x
};
},
created() {
this.sn = this.$store.state.projectSn;
this.getData();
mounted() {
this.createdEchart1()
this.createdEchart2()
if (this.$store.state.projectSn) {
this.searchSn = this.$store.state.projectSn;
this.$nextTick(() => {
this.getDevList();
this.getRealTimeData();
});
} else {
this.initData();
}
},
methods: {
//
getData() {
getLimitOrderBySurveyingDateApi({
projectSn: this.sn,
}).then((res) => {
console.log("实测实量", res);
this.listData = res.result;
res.result.map((item) => {
if (item.imageUrl.includes("[")) {
item.imageUrl = JSON.parse(item.imageUrl);
console.log("亮点展示 ====");
if (
item.imageUrl.length !== 0 &&
!item.imageUrl[0].url.includes(this.$store.state.FILEURL)
) {
item.imageUrl[0].url =
this.$store.state.FILEURL + item.imageUrl[0].url;
}
} else {
let url = item.imageUrl;
if (url.length !== 0 && !url.includes(this.$store.state.FILEURL)) {
item.imageUrl = [{}];
item.imageUrl[0].url = this.$store.state.FILEURL + url;
}
}
});
//24-
selectDustNoiseData() {
let data = {
projectSn: this.searchSn,
devSn: this.devSn,
};
selectDayCurrentDataListApi(data).then((res) => {
console.log('近24小时数据',res)
this.dustData_24 = res.result;
this.dustData_24.forEach(item=>{
this.humidityList.push(item.humidity)
this.temperatureList.push(item.temperature)
this.xData.push(item.receiveTime.split(' ')[1])
})
this.createdEchart1();
this.createdEchart2();
});
},
},
components: {
Card,
//echarts1
createdEchart1() {
let chart1 = echarts.init(this.$refs["leftEcharts1"]);
this.option1 = {
// backgroundColor: "#05224d",
tooltip: {},
grid: {
top: "65%",
left: "0%",
right: "10%",
bottom: "0%",
containLabel: true,
},
xAxis: [
{
type: "category",
boundaryGap: true,
axisLine: {
//线x
show: true,
lineStyle: {
color: "#233e64",
},
},
axisLabel: {
//
textStyle: {
color: "#6a9cd5",
margin: 20,
},
},
axisTick: { show: true },
data: this.xData,
},
],
yAxis: [
{
type: "value",
min: 0,
max: 150,
splitNumber: 3,
splitLine: {
show: true,
lineStyle: {
color: "#233e64",
},
},
axisLine: { show: false },
axisLabel: {
margin: 10,
textStyle: {
color: "#6a9cd5",
},
},
axisTick: { show: false },
},
],
series: [
{
name: "异常流量",
type: "line",
smooth: true, //线
// symbol:'circle', //
symbolSize: 0,
lineStyle: {
normal: {
color: "#F56C35 ", // 线
},
},
areaStyle: {
//
normal: {
//线4x0,y0,x2,y2(0~1);true
color: new echarts.graphic.LinearGradient(
0,
0,
0,
1,
[
{ offset: 0, color: "rgba(61,234,255, 0.3)" },
{ offset: 0.7, color: "rgba(61,234,255, 0)" },
],
false
),
shadowColor: "rgba(53,142,215, 0.9)", //
shadowBlur: 100, //shadowBlurshadowColor,shadowOffsetX/Y,
},
},
data: this.temperatureList,
},
],
};
chart1.setOption(this.option1);
},
//echarts2
createdEchart2() {
let chart2 = echarts.init(this.$refs["leftEcharts2"]);
this.option2 = {
// backgroundColor: "#05224d",
tooltip: {},
grid: {
top: "65%",
left: "0%",
right: "10%",
bottom: "0%",
containLabel: true,
},
xAxis: [
{
type: "category",
boundaryGap: true,
axisLine: {
//线x
show: true,
lineStyle: {
color: "#233e64",
},
},
axisLabel: {
//
textStyle: {
color: "#6a9cd5",
margin: 20,
},
},
axisTick: { show: true },
data: this.xData,
},
],
yAxis: [
{
type: "value",
min: 0,
max: 150,
splitNumber: 3,
splitLine: {
show: true,
lineStyle: {
color: "#233e64",
},
},
axisLine: { show: false },
axisLabel: {
margin: 10,
textStyle: {
color: "#6a9cd5",
},
},
axisTick: { show: false },
},
],
series: [
{
name: "异常流量",
type: "line",
smooth: true, //线
// symbol:'circle', //
symbolSize: 0,
lineStyle: {
normal: {
color: "#3deaff", // 线
},
},
areaStyle: {
//
normal: {
//线4x0,y0,x2,y2(0~1);true
color: new echarts.graphic.LinearGradient(
0,
0,
0,
1,
[
{ offset: 0, color: "rgba(61,234,255, 0.3)" },
{ offset: 0.7, color: "rgba(61,234,255, 0)" },
],
false
),
shadowColor: "rgba(53,142,215, 0.9)", //
shadowBlur: 100, //shadowBlurshadowColor,shadowOffsetX/Y,
},
},
data: this.humidityList,
},
],
};
chart2.setOption(this.option2);
},
//
getRealTimeData() {
selectStandardDevStatisticsBySnApi({
projectSn: this.searchSn,
devSn: this.devSn,
}).then((res) => {
console.log("标养室数据------", res);
this.currentData = res.result.currentData;
});
},
//----
getDevList() {
getstandardDevListApi({ projectSn: this.searchSn }).then((result) => {
console.log("列表", result);
this.devList = result.result;
if (result.result.length > 0) {
this.devSn = result.result[0].devSn;
this.getRealTimeData();
this.selectDustNoiseData()
}
});
},
//
initData() {
this.searchSn = this.projectsn;
this.currentData = {
currentDayAlarmNum: 0,
humidity: 0,
sampleNum: 0,
temperature: 0,
};
this.devSn = "";
if (this.personnelTypeChart) {
this.personnelTypeChart.clear();
}
this.getDevList();
},
},
};
</script>
<style lang="less" scoped>
.list {
// width: 1000px;
height: 525px;
// display: flex;
// flex-wrap: wrap;
// margin-left: -290%;
margin-top: 20px;
.list-item {
width: 375px;
height: 100px;
// display: flex;
background: url("~@/assets/images/zjsj/zjsj_scsl.png") no-repeat;
background-size: 100% 100%;
// margin-right: 18px;
margin-top: 10px;
.dateDiv {
margin-left: 300px;
margin-top: -80px;
font-size: 10px;
.box {
width: 100%;
height: 540px;
display: flex;
flex-flow: column;
.leftEcharts1{
width: 300px;
height: 300px;
margin: -160px 0 0 0px;
}
.leftEcharts2{
width: 300px;
height: 300px;
margin: -150px 0 0 0px; }
}
.environment {
color: #fff;
margin-left: 67%;
margin: -150% 0 0 71%;
.item {
display: flex;
align-items: center;
margin-top: 80px;
.icon {
width: 40px;
height: 40px;
&.temperature {
background: url(../assets/images/quality/i-temperature.png) no-repeat;
background-size: contain;
margin-left: 3px;
}
&.humidity {
background: url(../assets/images/quality/i-humidity.png) no-repeat;
background-size: contain;
margin-left: 3px;
}
// &.spray {
// background: url(../assets/images/quality/i-spray.png) no-repeat;
// background-size: contain;
// }
}
.imgDiv {
img {
width: 100px;
height: 80px;
margin: 10px 10px;
.info {
.value {
margin-top: 4px;
font-size: 14px;
text-align: center;
span {
color: #f7d502;
// margin-right: 10px;
}
}
}
}
}
.DataTime {
cursor: pointer;
margin-top: 10px;
margin-left: 37.5%;
width: 210;
height: 17px;
}
.dataImg {
width: 100%;
height: 100%;
margin: -120% 0px 0px 40%;
p {
margin: 6px 0 0 13px;
.btn {
margin: 8px auto;
width: 408px;
height: 62px;
line-height: 62px;
text-align: center;
font-size: 28px;
font-weight: bold;
color: #02d5d2;
background: url(../assets/images/sourse/bg-car-count.png) no-repeat;
background-size: 100% 100%;
}
}
::v-deep .el-date-editor--daterange.el-input__inner {
cursor: pointer;
width: 235px;
height: 30px;
border: 1px solid #66d3d8;
background: transparent;
}
::v-deep .el-range-input {
cursor: pointer;
background: transparent;
color: #fff;
}
::v-deep .el-date-editor {
cursor: pointer;
.el-range__icon {
line-height: 23px;
color: #6ee4f0;
}
.el-range-separator {
line-height: 23px;
color: #757d88;
}
.el-range__close-icon {
color: #757d88;
line-height: 23px;
}
}
#trendContainer {
width: 100%;
height: 100%;
left: 0;
margin-top: -0px;
}
::v-deep .el-progress-bar {
width: 100%;
::v-deep .el-progress-bar__outer {
height: 10px !important;
}
}
::v-deep .el-progress__text {
color: #fff;
}
::v-deep .el-progress-bar__inner {
background-color: #5ce2f6;
}
</style>
</style>

View File

@ -1,6 +1,6 @@
<template>
<Card title="材料验收报告">
<div class="imgBox">
<!-- <div class="imgBox">
<img src="@/assets/images/zjsj/groupImg.png" alt="" />
<div class="value">
<span class="number" style="color:#FFC303 !important">{{ list.qualifiedRatio||0 }}</span>
@ -12,21 +12,58 @@
<div class="text">
<span class="number">{{ list.qualified ||0}}</span>/<span class="number">{{ list.sum||0}}</span>
</div>
</div> -->
<div class="titleSelect">
<div class="bulidBox">
<div class="typeName">楼层</div>
<el-select v-model="floorName1" placeholder="请选择"size="mini" filterable popper-class="selectCls"
style="width:170px;"
>
<el-option
label="负三楼"
:value="0">
</el-option>
</el-select>
<!-- <el-select v-model="floorName1" placeholder="请选择"size="mini" filterable popper-class="selectCls"
style="width:170px;"
@change="checkTypes">
<el-option v-for="item in buildData"
:key="item.id"
:label="item.floorName"
:value="item.id">
</el-option>
</el-select> -->
</div>
<div class="typeBox">
<div class="typeName">种类</div>
<el-select v-model="floorName1" placeholder="请选择"size="mini" filterable popper-class="selectCls"
style="width:170px;"
>
<el-option
label="混凝土抗压"
:value="0">
</el-option>
</el-select>
</div>
</div>
<div class="box">
<div class="security-list">
<div class="thead">
<div class="row">
<div class="td">事件类型</div>
<div class="td" style="margin-left: 5px">使用部位</div>
<div class="td" style="margin-left: 5px">检测时间</div>
<div class="td" style="margin-left: 20px">检测结果</div>
</div>
</div>
<div class="tbody">
<vue-scroll style="width: 95%;height:250px">
<vue-scroll style="width: 95%;height:460px">
<div class="row" v-for="(item, index) in tableData" :key="index">
<div class="td">{{ item.eventType }}</div>
<div class="td">{{ item.detectionDate }}</div>
<div class="td">负三层</div>
<div class="td" style="margin-left: 10px">{{ item.detectionDate }}</div>
<div class="td">{{ item.status==1?'合格':'不合格' }}</div>
</div>
<div class="row" v-if="tableData.length == 0">
@ -61,6 +98,8 @@ export default {
],
sn:'',
list:{},
floorName1:'',
floorName2:'',
};
},
@ -99,10 +138,10 @@ getLimitList(){
<style lang="less" scoped>
.security-list {
margin-top: -4%;
// margin-top: -4%;
height: 108%;
color: #fff;
margin-left: 15px;
// margin-left: 15px;
.thead {
color: #6ae3eb;
margin-bottom: 5px;
@ -135,13 +174,11 @@ getLimitList(){
}
&:not(:last-child) {
width: 120px;
text-overflow: ellipsis;
overflow: hidden;
white-space: nowrap;
margin: 20px 0 0 7px;
width: 87px;
text-overflow: ellipsis;
overflow: hidden;
white-space: nowrap;
margin: 20px 0 0 0px;
}
img {
@ -158,9 +195,7 @@ getLimitList(){
}
}
}
.imgBox {
margin: 30px 0 0 80px;
}
.titleRow {
margin-top: 3%;
color: #5ec2c8;
@ -199,38 +234,32 @@ getLimitList(){
::v-deep .el-table td {
border: none;
}
.value{
position: absolute;
top: 27%;
left: 88.7%;
transform: translate(-50%, -50%);
font-size: 37px;
color: #FFC303;
font-weight: 700;
}
.bottom {
flex: 1;
display: flex;
flex-direction: column;
justify-content: center;
font-size: 13px;
.label{
margin-left: 94px;
margin: 18px 0 22px 136px;
font-size: 14px;
.titleSelect{
display:flex;
margin: 20px 0 10px 0px;
}
}
.typeName{
margin-left: 10px;
line-height: 30px;
position: absolute;
}
::v-deep .el-input--suffix .el-input__inner {
background: transparent !important;
color: #fff !important;
border: 1px solid #66D3D8 !important ;
height: 30px !important;
z-index: 999;
margin-left:10px;
width: 120px;
}
::v-deep .el-input__suffix{
right: 50px;
}
.bulidBox{
}
::v-deep .el-select{
margin-left: 37px;
}
.number:nth-child(1) {
color: #af5320;
}
.number:nth-child(2) {
color: #fff;
}
.text{
font-size: 18px;
margin: -16px 0 26px 171px;
}
</style>

View File

@ -1,5 +1,5 @@
<template>
<Card title="危大工程">
<Card title="重大危险源监测">
<div class="tabs">
<div
class="tab"
@ -9,6 +9,7 @@
@click="changeTab(index)"
>{{ tab }}</div>
</div>
<!-- 临边防护 -->
<div class="list" v-if="tabIndex==0">
<div class="thead">
@ -47,9 +48,10 @@
</div>
</div>
<!-- 塔机监测 -->
<div class="list" v-if="tabIndex==1">
<div class="thead">
<!-- <div class="thead">
<div class="row">
<div class="td">名称</div>
<div class="td">测点名称</div>
@ -59,7 +61,7 @@
<div class="td">监测时间</div>
<div class="td">报警状态</div>
</div>
</div>
</div> -->
<!-- <div class="tbody">
<vue-scroll>
<div class="row" v-for="i in 4" :key="i">
@ -80,8 +82,10 @@
</div>
</div>
</div>
<!-- 高支模监测 -->
<div class="list" v-if="tabIndex==2">
<div class="thead">
<!-- <div class="thead">
<div class="row">
<div class="td">设备名称</div>
<div class="td">监测位置</div>
@ -92,7 +96,7 @@
<div class="td">压力监测</div>
<div class="td">水位移位</div>
</div>
</div>
</div> -->
<div class="tbody">
<div class="dataImg">
<img src="@/assets/images/noData3.png" alt srcset />
@ -100,6 +104,57 @@
</div>
</div>
</div>
<!-- 深基坑 -->
<div class="list" v-if="tabIndex==3">
<!-- <div class="thead">
<div class="row">
<div class="td">设备名称</div>
<div class="td">监测位置</div>
<div class="td">监测时间</div>
<div class="td">模版沉降</div>
<div class="td">支杆应力</div>
<div class="td">杆件倾斜</div>
<div class="td">压力监测</div>
<div class="td">水位移位</div>
</div> -->
<div class="tbody">
<div class="dataImg">
<img src="@/assets/images/noData3.png" alt srcset />
<p>{{$t('message.dataBoard.nodata')}}</p>
</div>
</div>
</div>
<!-- <div class="tbody">
<div class="dataImg">
<img src="@/assets/images/noData3.png" alt srcset />
<p>{{$t('message.dataBoard.nodata')}}</p>
</div>
</div>
</div> -->
<!-- 云端建设工厂 -->
<div class="list" v-if="tabIndex==4">
<!-- <div class="thead">
<div class="row">
<div class="td">设备名称</div>
<div class="td">监测位置</div>
<div class="td">监测时间</div>
<div class="td">模版沉降</div>
<div class="td">支杆应力</div>
<div class="td">杆件倾斜</div>
<div class="td">压力监测</div>
<div class="td">水位移位</div>
</div>
</div> -->
<div class="tbody">
<div class="dataImg">
<img src="@/assets/images/noData3.png" alt srcset />
<p>{{$t('message.dataBoard.nodata')}}</p>
</div>
</div>
</div>
</Card>
</template>
@ -111,7 +166,7 @@ export default {
data() {
return {
tabIndex: 0,
tabs: ["临边防护", "塔机监测", "高支模监测"],
tabs: ["临边防护", "塔机监测", "高支模监测","深基坑","云端建设工厂"],
current:0,//
size:0,//
edgeList:[]
@ -147,7 +202,7 @@ export default {
display: flex;
.tab {
margin-right: 20px;
width: 90px;
width: 110px;
height: 32px;
line-height: 32px;
text-align: center;
@ -234,7 +289,7 @@ export default {
margin-left: 500px;
margin-top: 50px;
p {
margin-left: 4%;
margin-left: 2%;
}
}
}

View File

@ -15,6 +15,7 @@
}"
v-show="showPoints"
>
<span class="titleBox">{{point.name}}</span>
</div>
<FaceGageDialog v-if="gateDialog" :close="() => (gateDialog = false)" :data="faceGateData" />
<EnvironmentDialog v-if="environmentDialog" :data="environmentInfo" :close="() => (environmentDialog = false)" />
@ -187,6 +188,13 @@ export default {
&.show {
display: block;
}
.titleBox{
display: inline-block;
width: 260px;
position: absolute;
right: -89px;
top: -20px;
}
// &.i-tower {
// background-image: url('~@/views/projectAdmin/jlw/assets/images/digitalSite/icons/i-tower-crane.png');
// }

View File

@ -4,35 +4,35 @@
<div class="contentbut">
<div class="lw">
<p>今日出勤</p>
<!-- <p class="number">{{ list.todayAtte||0 }}</p> -->
<p class="number">269</p>
<p class="number">{{ list.todayAtte||0 }}</p>
<!-- <p class="number">269</p> -->
</div>
<div class="cq">
<p>在场</p>
<!-- <p class="number">{{ list.bePresent||0 }}</p> -->
<p class="number">316</p>
<p class="number">{{ list.bePresent||0 }}</p>
<!-- <p class="number">316</p> -->
</div>
<div class="tc">
<p>今日出勤率</p>
<!-- <p class="number">{{ list.atteRatio||0 }}%</p> -->
<p class="number">85.1%</p>
<p class="number">{{ list.atteRatio||0 }}%</p>
<!-- <p class="number">85.1%</p> -->
</div>
</div>
<div class="contentbut">
<div class="lw">
<p>现场</p>
<!-- <p class="number">{{ list.scene||0 }}</p> -->
<p class="number">253</p>
<p class="number">{{ list.scene||0 }}</p>
<!-- <p class="number">253</p> -->
</div>
<div class="cq">
<p>今日进场</p>
<p class="number">0</p>
<!-- <p class="number">{{ list.todayMobilization||0 }}</p> -->
<!-- <p class="number">0</p> -->
<p class="number">{{ list.todayMobilization||0 }}</p>
</div>
<div class="tc">
<p>今日退场</p>
<p class="number">0</p>
<!-- <p class="number">{{ list.todayExit||0 }}</p> -->
<!-- <p class="number">0</p> -->
<p class="number">{{ list.todayExit||0 }}</p>
</div>
</div>
</div>

View File

@ -51,7 +51,7 @@
<div class="woria">
<JRingChart
:title="{
text: '今日巡检',
text: '本周巡检',
subTitle: `${safetyPatrolInspection.todayTotalNum}`,
fontSize: 18,
}"

View File

@ -0,0 +1,301 @@
<template>
<!-- 材料进场记录 -->
<div class="panoramaPlan">
<div class="header-box">
<el-button type="primary" @click="addForm"> 新增 </el-button>
</div>
<div class="table-box">
<vue-scroll style="width: 100%; height: 550px">
<el-table class="tables" :data="tableData">
<el-table-column
align="center"
prop="chargerId"
label="序号"
type="index"
></el-table-column>
<el-table-column
align="center"
prop="materialType"
label="材料类型"
></el-table-column>
<el-table-column
align="center"
prop="manufacturer"
label="生产厂家"
></el-table-column>
<el-table-column
align="center"
prop="licensePlateNumber"
label="车牌号"
></el-table-column>
<el-table-column
align="center"
prop="approachVolume"
width="150"
label="进场量"
>
</el-table-column>
<el-table-column
align="center"
prop="entryTime"
label="进场时间"
></el-table-column>
<!-- 操作 -->
<el-table-column label="操作" width="220" align="center">
<template slot-scope="scope">
<el-button
type="text"
icon="el-icon-edit-outline"
@click="editData(scope.row)"
>
编辑
</el-button>
<el-button
class="delete-btn"
type="text"
icon="el-icon-delete"
@click="deleteData(scope.row)"
>
删除
</el-button>
</template>
</el-table-column>
</el-table>
</vue-scroll>
<el-pagination
class="pagerBox"
@size-change="handleSizeChange"
@current-change="handleCurrentChange"
:current-page="current"
:page-sizes="$store.state.PAGESIZRS"
:page-size="size"
layout="total, sizes, prev, pager, next"
:total="Number(total)"
background
></el-pagination>
</div>
<!-- 新增弹框 -->
<el-dialog
class="dialog"
:title="dialogTitle"
:modal-append-to-body="false"
:visible.sync="dialogVisible"
width="667px"
>
<div class="dialog-content">
<vue-scroll>
<el-form
ref="form"
:model="dialogdata"
:rules="rules"
label-width="155px"
size="medium"
class="dialogFormBox"
>
<el-form-item label="材料类型" prop="materialType">
<el-input
v-model="dialogdata.materialType"
placeholder="请输入"
></el-input>
</el-form-item>
<el-form-item label="生产厂家" prop="manufacturer">
<el-input
v-model="dialogdata.manufacturer"
placeholder="请输入"
></el-input>
</el-form-item>
<el-form-item label="车牌号" prop="licensePlateNumber">
<el-input
v-model="dialogdata.licensePlateNumber"
placeholder="请输入"
></el-input>
</el-form-item>
<el-form-item label="进场量" prop="approachVolume">
<el-input
v-model="dialogdata.approachVolume"
placeholder="请输入"
></el-input>
</el-form-item>
<el-form-item label="进场时间" prop="entryTime">
<el-input
v-model="dialogdata.entryTime"
placeholder="请输入"
></el-input>
</el-form-item>
</el-form>
</vue-scroll>
</div>
<div class="dialog-btn">
<el-button type="primary" @click="submitForm"> 确定 </el-button>
<el-button @click="dialogVisible = false"> 取消 </el-button>
</div>
</el-dialog>
</div>
</template>
<script>
import {
getMaterialApprApi,//
addMaterialApprApi,//
deleteMaterialApprApi,//
editMaterialApprApi,//
} from "@/assets/js/api/materialManage";
export default {
data() {
return {
tableData: [], //
dialogTitle: "",
dialogVisible: false,
dialogdata: {
materialType:'',
manufacturer:'',
licensePlateNumber:'',
approachVolume:'',
entryTime:'',
},
rules: {},
pageNo: 1,
pageSize: 10,
total: 0,
projectSn: "",
};
},
created() {
this.projectSn = this.$store.state.projectSn;
this.getData();
// this.getProgressListData();
},
methods: {
//
getData(){
getMaterialApprApi({
pageSize:this.size,
pageNo:this.current,
projectSn:this.projectSn
}).then((res)=>{
console.log('材料进场数据查询',res);
if(res.result.length>=1){
this.tableData=res.result
this.total=res.result.total
}
})
},
//
addForm() {
this.dialogVisible = true;
this.dialogTitle = "新增材料进场记录";
this.dialogdata= {
materialType:'',
manufacturer:'',
licensePlateNumber:'',
approachVolume:'',
entryTime:'',
}
},
//
editData(val) {
console.log("编辑时调用的参数 ", val);
this.dialogVisible = true;
this.dialogTitle = "编辑材料进场记录";
this.dialogdata = JSON.parse(JSON.stringify(val));
},
//
deleteData(val) {
this.$confirm("此操作将永久删除, 是否继续?", "提示", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning",
})
.then(() => {
deleteMaterialApprApi({ id: val.id }).then((res) => {
this.$message({
type: "success",
message: "删除成功!",
});
this.getData();
});
})
.catch(() => {
this.$message({
type: "info",
message: "已取消删除",
});
});
},
//
submitForm() {
this.processTheFile();
let params = JSON.parse(JSON.stringify(this.dialogdata));
params.projectSn = this.$store.state.projectSn;
this.$refs.form.validate((valid) => {
if (valid) {
if (this.dialogTitle == "新增质量验收") {
addMaterialApprApi(params).then((res) => {
this.$message.success("新增成功");
this.dialogVisible = false;
this.getData();
});
} else {
updateSubdivisionAcceptanceApi(params).then((res) => {
this.$message.success("编辑成功");
this.dialogVisible = false;
this.getData();
});
}
}
});
},
handleSizeChange(value) {
this.size = value;
this.getData();
},
handleCurrentChange(value) {
this.current = value;
this.getData();
},
},
};
</script>
<style lang="less" scoped>
.panoramaPlan {
width: 100%;
height: 100%;
background: #fff;
padding: 20px;
box-sizing: border-box;
.header-box {
margin-bottom: 20px;
padding-left: 10px;
.search-item {
display: inline-flex;
align-items: center;
white-space: nowrap;
margin-right: 20px;
/deep/.el-input {
width: 200px;
}
}
}
.delete-btn {
color: #f56c6c;
}
.dialog-content {
height: 630px;
margin-bottom: 60px;
}
.dialog-btn {
margin-left: 245px;
}
::v-deep .el-upload--picture-card {
position: absolute;
}
}
</style>