update code
parent
837f3fe9e1
commit
bea8384839
|
@ -20,6 +20,7 @@
|
|||
"less": "^4.1.3",
|
||||
"less-loader": "^11.1.3",
|
||||
"lodash.debounce": "^4.0.8",
|
||||
"lodash.throttle": "^4.1.1",
|
||||
"logt": "^1.4.1",
|
||||
"nprogress": "0.2.0",
|
||||
"vue": "^2.6.14",
|
||||
|
|
|
@ -13,7 +13,33 @@ const getProjectCheckingList=(deptId,projectId)=> {
|
|||
method: 'get'
|
||||
})
|
||||
}
|
||||
|
||||
const getProjectCheckingGroupFoChart=(deptId,projectId)=> {
|
||||
return request({
|
||||
url: `bgscreen/projectChecking/getProjectCheckingGroupFoChart?deptId=${deptId||0}&projectId=${projectId||0}`,
|
||||
method: 'get'
|
||||
})
|
||||
}
|
||||
|
||||
const groupCheckingByProjectId=(lvl,deptId,projectId)=> {
|
||||
return request({
|
||||
url: `bgscreen/projectChecking/groupCheckingByProjectId?lvl=${lvl}&deptId=${deptId||0}&projectId=${projectId||0}`,
|
||||
method: 'get'
|
||||
})
|
||||
}
|
||||
const queryProjectCheckingList=(pageNum,pageSize,data)=> {
|
||||
return request({
|
||||
url: `bgscreen/projectChecking/queryProjectCheckingList??pageNum=${pageNum}&pageSize=${pageSize}`,
|
||||
method: 'post',
|
||||
data:data
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
export default{
|
||||
getProjectCheckingList,
|
||||
getProjectCheckingView
|
||||
getProjectCheckingView,
|
||||
getProjectCheckingGroupFoChart,
|
||||
groupCheckingByProjectId,
|
||||
queryProjectCheckingList
|
||||
}
|
|
@ -13,7 +13,16 @@ const getGroupByDataType=(deptId,projectId)=> {
|
|||
})
|
||||
}
|
||||
|
||||
const queryWorkTrainList=(pageNum,pageSize,data)=> {
|
||||
return request({
|
||||
url: `bgscreen/workTrain/queryWorkTrainList?pageNum=${pageNum}&pageSize=${pageSize}`,
|
||||
method: 'post',
|
||||
data:data
|
||||
})
|
||||
}
|
||||
|
||||
export default{
|
||||
getWorkTrainList,
|
||||
getGroupByDataType
|
||||
getGroupByDataType,
|
||||
queryWorkTrainList
|
||||
}
|
|
@ -46,7 +46,7 @@
|
|||
:color="scope.$index < 3 && +scope.row.id > 0 ? '#f05e35' : '#6ab9fe'"></idle-list-chart>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="id" label="隐患数" width="60" align="center">
|
||||
<el-table-column prop="id" label="隐患数" width="70" align="center">
|
||||
<template slot-scope="scope">
|
||||
<div>{{ scope.row.id }} </div>
|
||||
</template>
|
||||
|
@ -155,8 +155,10 @@
|
|||
:typedata="measuredData" :text="measuredText" :height="230"></project-overview-chart>
|
||||
</module-one-1-1>
|
||||
</el-col>
|
||||
<el-col :span="6">
|
||||
<module-one-3-1 label="举牌验收" class="scroll">
|
||||
<el-col :span="6">
|
||||
|
||||
<projectChecking></projectChecking>
|
||||
<!--
|
||||
<div class="nav-info" style="padding:20px 20px 10px">
|
||||
<span>
|
||||
<span class="nav-label">首次验收:</span>
|
||||
|
@ -193,8 +195,8 @@
|
|||
<div class="row-5" @click="doShowChecking(it)">
|
||||
验收描述:{{it.intro}}
|
||||
</div>
|
||||
</div>
|
||||
</module-one-3-1>
|
||||
</div>-->
|
||||
|
||||
</el-col>
|
||||
</el-row>
|
||||
</div>
|
||||
|
@ -220,10 +222,11 @@ import checkDetectionDlg from './quality/checkDetectionDlg.vue'
|
|||
import measuredDlg from './quality/measuredDlg.vue'
|
||||
import materialSealChart from './quality/materialSealChart.vue'
|
||||
import materialSealListDlg from './quality/materialSealListDlg.vue'
|
||||
import projectChecking from './quality/projectChecking.vue'
|
||||
import debounce from 'lodash.debounce'
|
||||
export default {
|
||||
components:{
|
||||
materialSealListDlg, materialSealChart, ProblemmodifyDetail,showCheckingDlg,materialSealDetialDlg,checkDetectionDlg,measuredDlg
|
||||
materialSealListDlg, materialSealChart, ProblemmodifyDetail,showCheckingDlg,materialSealDetialDlg,checkDetectionDlg,measuredDlg,projectChecking
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
|
@ -483,8 +486,8 @@ export default {
|
|||
})
|
||||
this.elSummaryPrjKey++;
|
||||
});
|
||||
this.doProjectChecking();
|
||||
},
|
||||
//this.doProjectChecking();
|
||||
},
|
||||
doMeasuredNav(n,t){
|
||||
this.measuredNav=n;
|
||||
this.measuredText=t;
|
||||
|
@ -523,10 +526,10 @@ export default {
|
|||
this.acceptanceData=d.rows;
|
||||
});
|
||||
//举牌验收统计
|
||||
this.$api.projectChecking.getProjectCheckingView(this.dept?.id||0,this.projectInfo?.id||0).then(d=>{
|
||||
this.acceptanceDataView.sum=d.data.sum;
|
||||
this.acceptanceDataView.okSum=d.data.okSum;
|
||||
});
|
||||
// this.$api.projectChecking.getProjectCheckingView(this.dept?.id||0,this.projectInfo?.id||0).then(d=>{
|
||||
// this.acceptanceDataView.sum=d.data.sum;
|
||||
// this.acceptanceDataView.okSum=d.data.okSum;
|
||||
// });
|
||||
},
|
||||
init(){
|
||||
this.localStorage = JSON.parse(localStorage.getItem("data1"))
|
||||
|
@ -753,37 +756,6 @@ export default {
|
|||
padding:0px 5px;
|
||||
}
|
||||
}
|
||||
.material-seal-list{
|
||||
.material-seal-item{
|
||||
padding:8px;
|
||||
display: flex;
|
||||
border-bottom: solid 1px #fff;
|
||||
box-shadow: inset 7px 0px 11px 5px rgb(36 131 167 / 70%);
|
||||
&:last-child{
|
||||
border-bottom: none;
|
||||
}
|
||||
.material-seal-left{
|
||||
width:40%;
|
||||
}
|
||||
.material-seal-right{
|
||||
width:60%;
|
||||
padding-left:12px;
|
||||
line-height: 24px;
|
||||
img{
|
||||
width: 8px;
|
||||
position: relative;;
|
||||
top:3px;
|
||||
}
|
||||
.sp-lbl{
|
||||
color: aquamarine;
|
||||
white-space: nowrap;
|
||||
}
|
||||
.div-text{
|
||||
margin-left:24px;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
</style>
|
|
@ -72,7 +72,10 @@
|
|||
</module-one-3-1>
|
||||
</el-col>
|
||||
<el-col :span="6">
|
||||
<module-one-1-1 :label="'专项培训('+WorkTrainCnt1+')'">
|
||||
<module-one-1-1 :label="'专项培训('+WorkTrainCnt1+')'" style="position: relative;">
|
||||
<img src="images/icon2001.png"
|
||||
style="position: absolute;cursor: pointer;right: 20px;top: 13px;z-index: 9;"
|
||||
@click="doShowWorkTrain(0)">
|
||||
<enginChart ref="chart3" :height="300"></enginChart>
|
||||
<!--
|
||||
<div style="padding:10px" class="train-list scroll">
|
||||
|
@ -106,7 +109,10 @@
|
|||
</div>
|
||||
</div>-->
|
||||
</module-one-1-1>
|
||||
<module-one-1-1 :label="'应急演练('+WorkTrainCnt2+')'">
|
||||
<module-one-1-1 :label="'应急演练('+WorkTrainCnt2+')'" style="position: relative;">
|
||||
<img src="images/icon2001.png"
|
||||
style="position: absolute;cursor: pointer;right: 20px;top: 13px;z-index: 9;"
|
||||
@click="doShowWorkTrain(1)">
|
||||
<enginChart ref="chart4" :height="300"></enginChart>
|
||||
<!--
|
||||
<div style="padding:10px" class="train-list scroll">
|
||||
|
@ -287,6 +293,7 @@
|
|||
<AttendanceDetailDialog ref="attDetailDlg"></AttendanceDetailDialog>
|
||||
<projectInsuranceDlg ref="insDlg"></projectInsuranceDlg>
|
||||
<JobWorkerDialog ref="jobWorkerdlg"></JobWorkerDialog>
|
||||
<workTrainListDlg ref="workTrainListDlg"></workTrainListDlg>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
|
@ -306,15 +313,17 @@ import AttendanceDetailDialog from './components/AttendanceDetailDialog.vue'
|
|||
import JobWorkerDialog from './components/JobWorkerDialog.vue'
|
||||
import debounce from 'lodash.debounce'
|
||||
import enginChart from './engin/enginChart.vue'
|
||||
import workTrainListDlg from './safe/workTrainListDlg.vue'
|
||||
export default {
|
||||
components: {
|
||||
worktrainDlg,
|
||||
projectSpecialDlg,
|
||||
ProblemmodifyDetail,AttendanceDetailDialog,
|
||||
projectInsuranceDlg,JobWorkerDialog,enginChart
|
||||
projectInsuranceDlg,JobWorkerDialog,enginChart,workTrainListDlg
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
dictWorkTrainDataType:[],
|
||||
selDate:'',
|
||||
elSummaryKey:0,
|
||||
elSummaryPrjKey:0,
|
||||
|
@ -399,6 +408,9 @@ export default {
|
|||
},
|
||||
created() {
|
||||
this.init();
|
||||
this.$api.dict('work_train_data_type').then(d => {
|
||||
this.dictWorkTrainDataType = d || [];
|
||||
});
|
||||
},
|
||||
mounted() {
|
||||
this.$bus.$on("projectChange", debounce(res => {
|
||||
|
@ -432,10 +444,19 @@ export default {
|
|||
|
||||
},
|
||||
methods: {
|
||||
doShowWorkTrain(type){
|
||||
this.$refs.workTrainListDlg.showDialog({
|
||||
type:type,
|
||||
deptId:this.dept.id||0,
|
||||
projectId:this.projectInfo?.id||0,
|
||||
prj:this.projectInfo||{},
|
||||
dicts:this.dictWorkTrainDataType.filter(d=>d.cssClass==(type==0?'a':'b'))
|
||||
});
|
||||
},
|
||||
doShowAttendanceDetail(){
|
||||
let data={
|
||||
deptId:this.dept.id||0,
|
||||
projectId:this.project.id||0,
|
||||
projectId:this.projectInfo?.id||0,
|
||||
attendanceTime: this.$dt(new Date()).format("YYYY-MM-DD")
|
||||
}
|
||||
if(this.infoNav == 1){
|
||||
|
@ -510,13 +531,12 @@ export default {
|
|||
type: 'pie',
|
||||
radius: '60%',
|
||||
data: this.WorkTrainChart1,
|
||||
label: {
|
||||
label: {
|
||||
alignTo:'edge',
|
||||
edgeDistance: "10%",
|
||||
color: "#fff",
|
||||
formatter: '{name|{b}}\n{cnt|{c}}',
|
||||
rich: {
|
||||
name:{
|
||||
|
||||
},
|
||||
rich: {
|
||||
cnt: {
|
||||
fontSize: 10,
|
||||
color: '#eee'
|
||||
|
|
|
@ -0,0 +1,524 @@
|
|||
<template>
|
||||
<div class="project-quality-checking">
|
||||
<module-one-1-1 label="举牌验收">
|
||||
<div class="checking-row1" style="position: relative;height: 310px;overflow: hidden;">
|
||||
<div class="checking-chart-nav">
|
||||
<span class="chart-nv-item" @click="showChart1 = true" :class="showChart1 ? 'active' : ''">常规验收</span>
|
||||
<span class="chart-nv-item" @click="showChart1 = false" :class="!showChart1 ? 'active' : ''">隐蔽验收</span>
|
||||
</div>
|
||||
<div v-if="chart">
|
||||
<enginChart :class="showChart1 ? 'show-chart' : 'hide-chart'" ref="chart1" :height="300"></enginChart>
|
||||
<enginChart :class="!showChart1 ? 'show-chart' : 'hide-chart'" ref="chart2" :height="300"></enginChart>
|
||||
</div>
|
||||
</div>
|
||||
</module-one-1-1>
|
||||
<module-one-1-1 label="常规验收" class="scroll checking-row2" style="position: relative;">
|
||||
<img src="images/icon2001.png" style="position: absolute;cursor: pointer;right: 12px;top: 12px;"
|
||||
@click="doShowCheckingListDlg(1)">
|
||||
<div class="checking-group-nav warning-info-title" style="padding-left: 20px;">
|
||||
<div class="nav-item" :class="nav1 == it.dictValue ? 'active' : ''" @click="doQueryGroup(it.dictValue, 'a')"
|
||||
v-for="(it, idx) in dict1" :key="it.dictValue">{{ it.dictLabel }}</div>
|
||||
</div>
|
||||
<div v-if="!projectInfo || projectInfo.id == 0">
|
||||
<div class="idle-list problemmodify_list" style="padding:0px 10px">
|
||||
<el-table style="width: 100%" ref="wgzp" :row-style="rowStyle" :data="dataList1" height="233"
|
||||
class="el-table">
|
||||
|
||||
<el-table-column type="index" width="40">
|
||||
<template slot-scope="scope">
|
||||
<div :class="scope.$index < 3 && +scope.row.value > 0 ? 'idle-list-color' : ''">
|
||||
{{ scope.$index + 1 }} </div>
|
||||
</template></el-table-column>
|
||||
<el-table-column prop="name" label="项目名称" class-name="text-left" :show-overflow-tooltip="true">
|
||||
</el-table-column>
|
||||
<el-table-column prop="id" label="验收数量" width="80" align="center">
|
||||
<template slot-scope="scope">
|
||||
<div>{{ scope.row.count }} </div>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="id" label="占比" width="100" align="center">
|
||||
<template slot-scope="scope">
|
||||
<div>{{ scope.row.percent?scope.row.percent.toFixed(2)+'%':'' }} </div>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
</div>
|
||||
</div>
|
||||
<div v-else style="padding:0px 2px;">
|
||||
<div v-if="dataList1.length == 0" style="text-align: center;padding-top:20px" class="div-no-data">
|
||||
<img src="images/nodata.png" style="width: 120px;">
|
||||
<div style="text-align: center;font-size: 12px;color:#888;">暂无数据</div>
|
||||
</div>
|
||||
<div v-else class="acceptance-list scroll" >
|
||||
<div class="acceptance-item" v-for="(it, idx) in dataList1" :key="idx" style="cursor: pointer;">
|
||||
<div class="row-1">
|
||||
<div class="div-img">
|
||||
<el-image :src="getProfileImage(it.mainImage)" :preview-src-list="getBigProfileImage(it)" />
|
||||
</div>
|
||||
<div class="div-text" style="width: 65%;" @click="doShowChecking(it)">
|
||||
<div class="row-3">
|
||||
<div v-if="it.checkResult == '1'" class="sp-lbl">验收合格</div>
|
||||
<div v-if="it.checkResult == '2'" class="sp-err">验收不合格</div>
|
||||
<div class="sp-date">{{ it.checkingDate }}</div>
|
||||
</div>
|
||||
<div class="row-3">
|
||||
<span class="sp-label">项目:</span>
|
||||
<span class="sp-text">{{ it.projectName }}</span>
|
||||
</div>
|
||||
<div class="row-3">
|
||||
<span class="sp-label">区域:</span>
|
||||
<span class="sp-text">{{ it.checkWorkingPosition }}</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row-5" @click="doShowChecking(it)">
|
||||
验收描述:{{ it.intro }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</module-one-1-1>
|
||||
<module-one-1-1 label="隐蔽验收" class="scroll checking-row3" style="position: relative;">
|
||||
<img src="images/icon2001.png" style="position: absolute;cursor: pointer;right: 12px;top: 12px;"
|
||||
@click="doShowCheckingListDlg(2)">
|
||||
<div class="checking-group-nav warning-info-title" style="padding-left: 20px;">
|
||||
<div class="nav-item" :class="nav2 == it.dictValue ? 'active' : ''" @click="doQueryGroup(it.dictValue, 'b')"
|
||||
v-for="(it, idx) in dict2" :key="it.dictValue">{{ it.dictLabel }}</div>
|
||||
</div>
|
||||
<div v-if="!projectInfo || projectInfo.id == 0">
|
||||
<div class="idle-list problemmodify_list" style="padding:0px 10px">
|
||||
<el-table style="width: 100%" ref="wgzp" :row-style="rowStyle" :data="dataList2" height="233"
|
||||
class="el-table">
|
||||
|
||||
<el-table-column type="index" width="40">
|
||||
<template slot-scope="scope">
|
||||
<div :class="scope.$index < 3 && +scope.row.value > 0 ? 'idle-list-color' : ''">
|
||||
{{ scope.$index + 1 }} </div>
|
||||
</template></el-table-column>
|
||||
<el-table-column prop="name" label="项目名称" class-name="text-left" :show-overflow-tooltip="true">
|
||||
</el-table-column>
|
||||
<el-table-column prop="id" label="验收数量" width="80" align="center">
|
||||
<template slot-scope="scope">
|
||||
<div>{{ scope.row.count }} </div>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="id" label="占比" width="100" align="center">
|
||||
<template slot-scope="scope">
|
||||
<div>{{ scope.row.percent?scope.row.percent.toFixed(2)+'%':'' }} </div>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
</div>
|
||||
</div>
|
||||
<div v-else style="padding:0px 2px;">
|
||||
<div v-if="dataList2.length == 0" style="text-align: center;padding-top:20px" class="div-no-data">
|
||||
<img src="images/nodata.png" style="width: 120px;">
|
||||
<div style="text-align: center;font-size: 12px;color:#888;">暂无数据</div>
|
||||
</div>
|
||||
<div v-else class="acceptance-list scroll" >
|
||||
<div class="acceptance-item" v-for="(it, idx) in dataList2" :key="idx" style="cursor: pointer;">
|
||||
<div class="row-1">
|
||||
<div class="div-img">
|
||||
<el-image :src="getProfileImage(it.mainImage)" :preview-src-list="getBigProfileImage(it)" />
|
||||
</div>
|
||||
<div class="div-text" style="width: 65%;" @click="doShowChecking(it)">
|
||||
<div class="row-3">
|
||||
<div v-if="it.checkResult == '1'" class="sp-lbl">验收合格</div>
|
||||
<div v-if="it.checkResult == '2'" class="sp-err">验收不合格</div>
|
||||
<div class="sp-date">{{ it.checkingDate }}</div>
|
||||
</div>
|
||||
<div class="row-3">
|
||||
<span class="sp-label">项目:</span>
|
||||
<span class="sp-text">{{ it.projectName }}</span>
|
||||
</div>
|
||||
<div class="row-3">
|
||||
<span class="sp-label">区域:</span>
|
||||
<span class="sp-text">{{ it.checkWorkingPosition }}</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row-5" @click="doShowChecking(it)">
|
||||
验收描述:{{ it.intro }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</module-one-1-1>
|
||||
<showCheckingDlg ref="checkDlg"></showCheckingDlg>
|
||||
<listDlg ref="listDlg"></listDlg>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import throttle from 'lodash.throttle'
|
||||
import enginChart from '../engin/enginChart.vue'
|
||||
import showCheckingDlg from './showCheckingDlg.vue'
|
||||
import listDlg from './projectCheckingListDlg.vue'
|
||||
export default {
|
||||
name: 'JhbigscreenProjectChecking',
|
||||
components: {
|
||||
enginChart, showCheckingDlg,listDlg
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
rowStyle: {
|
||||
color: '#B6CFEF',
|
||||
fontSize: '12px',
|
||||
height: '32px'
|
||||
},
|
||||
showChart1: true,
|
||||
dept: null,
|
||||
projectInfo: null,
|
||||
dict1: [],
|
||||
dict2: [],
|
||||
nav1: 1,
|
||||
nav2: 1,
|
||||
chart: true,
|
||||
dataList1: [],
|
||||
dataList2: [],
|
||||
};
|
||||
},
|
||||
created() {
|
||||
this.$api.dict('project_checking_data_type_lvl2').then(d => {
|
||||
let tmps = d || [];
|
||||
this.dict1 = tmps.filter(it => it.cssClass == 'a');
|
||||
this.dict2 = tmps.filter(it => it.cssClass == 'b');
|
||||
if (this.dict1.length > 0) {
|
||||
this.nav1 = this.dict1[0].dictValue;
|
||||
this.doQueryGroup(this.nav1, "a");
|
||||
}
|
||||
if (this.dict2.length > 0) {
|
||||
this.nav2 = this.dict2[0].dictValue;
|
||||
this.doQueryGroup(this.nav2, "b");
|
||||
}
|
||||
});
|
||||
},
|
||||
mounted() {
|
||||
this.$bus.$on("projectChange", throttle((res) => {
|
||||
this.projectInfo = res;
|
||||
this.loadData();
|
||||
}));
|
||||
this.$bus.$on("deptChange", throttle((dept) => {
|
||||
this.dept = dept;
|
||||
this.loadData();
|
||||
}));
|
||||
if (this.$root.hasInitHeader) {
|
||||
this.initMe();
|
||||
}
|
||||
},
|
||||
|
||||
methods: {
|
||||
doShowCheckingListDlg(lvl1){
|
||||
this.$refs.listDlg.showDialog({
|
||||
lvl1:lvl1,
|
||||
deptId:this.dept?.id || 0,
|
||||
projectInfo:this.projectInfo,
|
||||
dicts:lvl1==1?this.dict1:this.dict2
|
||||
});
|
||||
},
|
||||
doShowChecking(it) {
|
||||
this.$refs.checkDlg.showDialog(it);
|
||||
},
|
||||
// 获取图片映射
|
||||
getProfileImage(url) {
|
||||
if (url) {
|
||||
return '/jhapi' + url + ".min.jpg";
|
||||
}
|
||||
return url;
|
||||
},
|
||||
getBigProfileImage(it) {
|
||||
if (it.imageUrls) {
|
||||
let tmps = it.imageUrls.split(",").filter(d => d).map(it => {
|
||||
return '/jhapi' + it;
|
||||
})
|
||||
if (tmps.length > 0) {
|
||||
return tmps;
|
||||
}
|
||||
}
|
||||
if (it.mainImage && it.mainImage.trim()) {
|
||||
return ['/jhapi' + it.mainImage];
|
||||
}
|
||||
return [];
|
||||
},
|
||||
doQueryGroup(nav, t) {
|
||||
if (t == 'a') {
|
||||
this.nav1 = nav;
|
||||
} else {
|
||||
this.nav2 = nav;
|
||||
}
|
||||
if (!this.projectInfo || this.projectInfo.id == 0) {
|
||||
this.loadGroupData(nav, t);
|
||||
} else {
|
||||
this.queryDataList(nav, t);
|
||||
}
|
||||
|
||||
},
|
||||
queryDataList(nav, t) {
|
||||
let postData = {
|
||||
projectId: this.projectInfo.id,
|
||||
dataTypeLvl2: nav
|
||||
}
|
||||
this.$api.projectChecking.queryProjectCheckingList(1, 20, postData).then(d => {
|
||||
if (t == "a") {
|
||||
this.dataList1 = d.rows || [];
|
||||
} else {
|
||||
this.dataList2 = d.rows || [];
|
||||
}
|
||||
});
|
||||
},
|
||||
loadGroupData(nav, t) {
|
||||
this.$api.projectChecking.groupCheckingByProjectId(nav, this.dept?.id || 0, this.projectInfo?.id || 0).then(d => {
|
||||
let tmps = (d.data || []).map(it => {
|
||||
return {
|
||||
name: it.projectName,
|
||||
count: it.id || 0,
|
||||
percent: 0
|
||||
}
|
||||
});
|
||||
let sum = 0;
|
||||
tmps.forEach(it => {
|
||||
sum += it.count;
|
||||
})
|
||||
if (sum > 0) {
|
||||
tmps.forEach(it => {
|
||||
it.percent = it.count * 100.0 / sum
|
||||
})
|
||||
}
|
||||
if (t == "a") {
|
||||
this.dataList1 = tmps;
|
||||
} else {
|
||||
this.dataList2 = tmps;
|
||||
}
|
||||
});
|
||||
},
|
||||
initMe() {
|
||||
this.projectInfo = this.$root.project || {};
|
||||
this.dept = this.$root.dept || {};
|
||||
this.loadData();
|
||||
},
|
||||
loadData: throttle(function () {
|
||||
this.doGetProjectCheckingChart();
|
||||
if (this.dict1.length > 0) {
|
||||
this.nav1 = this.dict1[0].dictValue;
|
||||
this.doQueryGroup(this.nav1, "a");
|
||||
}
|
||||
if (this.dict2.length > 0) {
|
||||
this.nav2 = this.dict2[0].dictValue;
|
||||
this.doQueryGroup(this.nav2, "b");
|
||||
}
|
||||
}),
|
||||
initChartData(d) {
|
||||
let tmp1 = (d.data || []).filter(it => it.checkType == 'a').map(it => {
|
||||
return { name: it.mainImage, value: it.id || 0 };
|
||||
});
|
||||
let tmp2 = (d.data || []).filter(it => it.checkType == 'b').map(it => {
|
||||
return { name: it.mainImage, value: it.id || 0 };
|
||||
});
|
||||
let opt = {
|
||||
|
||||
tooltip: {
|
||||
trigger: 'item'
|
||||
},
|
||||
series: [{
|
||||
top: 10,
|
||||
type: 'pie',
|
||||
radius: '60%',
|
||||
data: tmp1,
|
||||
label: {
|
||||
alignTo: 'edge',
|
||||
edgeDistance: "10%",
|
||||
color: "#fff",
|
||||
formatter: '{name|{b}}\n{cnt|{c}}',
|
||||
rich: {
|
||||
cnt: {
|
||||
fontSize: 10,
|
||||
color: '#eee',
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
}
|
||||
]
|
||||
};
|
||||
if (this.$refs.chart1 && this.$refs.chart1.init) {
|
||||
this.$refs.chart1.init(opt);
|
||||
}
|
||||
let opt2 = {
|
||||
tooltip: {
|
||||
trigger: 'item'
|
||||
},
|
||||
series: [{
|
||||
top: 10,
|
||||
type: 'pie',
|
||||
radius: '60%',
|
||||
data: tmp2,
|
||||
label: {
|
||||
alignTo: 'edge',
|
||||
edgeDistance: "10%",
|
||||
color: "#fff",
|
||||
formatter: '{name|{b}}\n{cnt|{c}}',
|
||||
rich: {
|
||||
cnt: {
|
||||
fontSize: 10,
|
||||
color: '#eee'
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
}
|
||||
]
|
||||
};
|
||||
if (this.$refs.chart2 && this.$refs.chart2.init) {
|
||||
this.$refs.chart2.init(opt2);
|
||||
}
|
||||
},
|
||||
doGetProjectCheckingChart() {
|
||||
this.chart = false;
|
||||
this.$api.projectChecking.getProjectCheckingGroupFoChart(this.dept?.id || 0, this.projectInfo?.id || 0).then(d => {
|
||||
this.chart = true;
|
||||
setTimeout(() => {
|
||||
this.initChartData(d);
|
||||
}, 400);
|
||||
});
|
||||
},
|
||||
},
|
||||
};
|
||||
</script>
|
||||
|
||||
<style lang="less">
|
||||
.project-quality-checking {
|
||||
.checking-row1 {
|
||||
position: relative;
|
||||
|
||||
.checking-chart-nav {
|
||||
position: absolute;
|
||||
width: 100%;
|
||||
top: 12px;
|
||||
text-align: center;
|
||||
z-index: 10;
|
||||
|
||||
.chart-nv-item {
|
||||
cursor: pointer;
|
||||
display: inline-block;
|
||||
padding: 4px 10px;
|
||||
font-size: 12px;
|
||||
background-color: #fff;
|
||||
color: #000;
|
||||
|
||||
&.active {
|
||||
background-color: #68BBC4;
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
&:first-child {
|
||||
border-radius: 4px 0px 0px 4px;
|
||||
}
|
||||
|
||||
&:last-child {
|
||||
border-radius: 0px 4px 4px 0px;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.engin-chart1 {
|
||||
&.hide-chart {
|
||||
left: -100000px;
|
||||
top: -100000px;
|
||||
}
|
||||
|
||||
&.show-chart {
|
||||
position: relative;
|
||||
left: unset;
|
||||
}
|
||||
|
||||
&:last-child {
|
||||
&.show-chart {
|
||||
top: -300px;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.problemmodify_list {
|
||||
&.idle-list{
|
||||
.el-table__body .el-table__row {
|
||||
line-height: 36px;
|
||||
height: 36px !important;
|
||||
}
|
||||
.el-table td{
|
||||
height: 36px;
|
||||
}
|
||||
}
|
||||
.el-table__body-wrapper {
|
||||
&::-webkit-scrollbar {
|
||||
width: 8px;
|
||||
height: 8px;
|
||||
}
|
||||
|
||||
&::-webkit-scrollbar-thumb {
|
||||
background-color: rgb(1, 169, 255);
|
||||
border-radius: 4px;
|
||||
}
|
||||
|
||||
tr {
|
||||
cursor: pointer;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.material-seal-list {
|
||||
.material-seal-item {
|
||||
padding: 8px;
|
||||
display: flex;
|
||||
border-bottom: solid 1px #fff;
|
||||
box-shadow: inset 7px 0px 11px 5px rgb(36 131 167 / 70%);
|
||||
|
||||
&:last-child {
|
||||
border-bottom: none;
|
||||
}
|
||||
|
||||
.material-seal-left {
|
||||
width: 40%;
|
||||
}
|
||||
|
||||
.material-seal-right {
|
||||
width: 60%;
|
||||
padding-left: 12px;
|
||||
line-height: 24px;
|
||||
|
||||
img {
|
||||
width: 8px;
|
||||
position: relative;
|
||||
;
|
||||
top: 3px;
|
||||
}
|
||||
|
||||
.sp-lbl {
|
||||
color: aquamarine;
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
.div-text {
|
||||
margin-left: 24px;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
.acceptance-list{
|
||||
margin-top: 0px;
|
||||
max-height: 230px;
|
||||
overflow-y: auto;
|
||||
.acceptance-item{
|
||||
&:first-child{
|
||||
margin-top:0px;
|
||||
}
|
||||
.row-3{
|
||||
display: flex;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
|
@ -0,0 +1,222 @@
|
|||
<template>
|
||||
<MyDialog v-if="show" v-model="show" width="1600px" height="800px" class="project-checking-list-dialog">
|
||||
<template slot="title">{{ lvl1 == 1 ? '常规验收' : '隐蔽验收' }}{{ prjName ? ' - ' + prjName : '' }}</template>
|
||||
<div class="head-title-tab" style="padding: 10px 0px;max-width: unset;">
|
||||
<div v-for="(it, idx) in dicts" :key="idx" :class="nav == it.dictValue ? 'head-nav active' : 'head-nav'" @click="doNav(it.dictValue)"
|
||||
>{{ it.dictLabel }}</div>
|
||||
</div>
|
||||
<div class="data-list">
|
||||
<div v-if="tableData.length == 0" style="text-align: center;padding-top:200px" class="div-no-data">
|
||||
<img src="images/nodata.png" style="width: 120px;">
|
||||
<div style="text-align: center;font-size: 12px;color:#888;">暂无数据</div>
|
||||
</div>
|
||||
<div v-else class="acceptance-list" >
|
||||
<div class="acceptance-item" v-for="(it, idx) in tableData" :key="idx" style="cursor: pointer;">
|
||||
<div class="row-1">
|
||||
<div class="div-img">
|
||||
<el-image :src="getProfileImage(it.mainImage,true)" :preview-src-list="getBigProfileImage(it)" />
|
||||
</div>
|
||||
<div class="div-text" style="width: 65%;" @click="doShowChecking(it)">
|
||||
<div class="row-3">
|
||||
<div v-if="it.checkResult == '1'" class="sp-lbl">验收合格</div>
|
||||
<div v-if="it.checkResult == '2'" class="sp-err">验收不合格</div>
|
||||
<div class="sp-date">{{ it.checkingDate }}</div>
|
||||
</div>
|
||||
<div class="row-3">
|
||||
<span class="sp-label">项目:</span>
|
||||
<span class="sp-text" :title="it.projectName">
|
||||
<span class="span-text">{{ it.projectName }}</span>
|
||||
</span>
|
||||
</div>
|
||||
<div class="row-3">
|
||||
<span class="sp-label">区域:</span>
|
||||
<span class="sp-text" :title="it.checkWorkingPosition">
|
||||
<span class="span-text">{{ it.checkWorkingPosition }}</span>
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row-5" @click="doShowChecking(it)">
|
||||
<div class="row-5-txt"> 验收描述:{{ it.intro }}</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<el-pagination layout="total,prev, pager, next" :hide-on-single-page="true" @current-change="handleCurrentChange"
|
||||
:total="total" :page-size="size" :current-page.sync="index" class="bg-pagination"></el-pagination>
|
||||
<showCheckingDlg ref="checkDlg"></showCheckingDlg>
|
||||
</MyDialog>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import showCheckingDlg from './showCheckingDlg.vue'
|
||||
import MyDialog from '../components/MyDialog'
|
||||
export default {
|
||||
name: 'JhbigscreenProjectCheckingListDlg',
|
||||
components: {
|
||||
MyDialog,showCheckingDlg
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
show:false,
|
||||
tableData: [],
|
||||
nav: 1,
|
||||
index: 1,
|
||||
size: 9,
|
||||
deptId: 0,
|
||||
projectId: 0,
|
||||
total: 0,
|
||||
prjName: '',
|
||||
lvl1:1,
|
||||
dicts: [],
|
||||
};
|
||||
},
|
||||
|
||||
mounted() {
|
||||
|
||||
},
|
||||
|
||||
methods: {
|
||||
doShowChecking(it) {
|
||||
this.$refs.checkDlg.showDialog(it);
|
||||
},
|
||||
getBigProfileImage(it) {
|
||||
if (it.imageUrls) {
|
||||
let tmps = it.imageUrls.split(",").filter(d => d).map(it => {
|
||||
return '/jhapi' + it;
|
||||
})
|
||||
if (tmps.length > 0) {
|
||||
return tmps;
|
||||
}
|
||||
}
|
||||
if (it.mainImage && it.mainImage.trim()) {
|
||||
return ['/jhapi' + it.mainImage];
|
||||
}
|
||||
return [];
|
||||
},
|
||||
// 获取图片映射
|
||||
getProfileImage(url, min) {
|
||||
if (url) {
|
||||
return '/jhapi' + url + (min ? ".min.jpg" : "");
|
||||
}
|
||||
return url;
|
||||
},
|
||||
handleCurrentChange(n) {
|
||||
this.index = n;
|
||||
this.loadData();
|
||||
},
|
||||
doNav(n) {
|
||||
this.nav = n;
|
||||
this.index = 1;
|
||||
this.loadData();
|
||||
},
|
||||
showDialog(data) {
|
||||
this.lvl1=data.lvl1;
|
||||
this.dicts=data.dicts||[];
|
||||
this.deptId=data.deptId;
|
||||
this.projectId=data.projectInfo?.id||0;
|
||||
if(data.projectInfo){
|
||||
this.prjName=data.projectInfo.projectName||'';
|
||||
}else{
|
||||
this.projectName="";
|
||||
}
|
||||
this.nav = this.dicts.length > 0 ? this.dicts[0].dictValue : 0;
|
||||
this.index = 1;
|
||||
this.loadData();
|
||||
this.show = true
|
||||
},
|
||||
loadData(){
|
||||
let postData = {
|
||||
dataTypeLvl2: this.nav
|
||||
};
|
||||
if(this.deptId>0){
|
||||
postData.deptId=this.deptId;
|
||||
}
|
||||
if(this.projectId>0){
|
||||
postData.projectId=this.projectId;
|
||||
}
|
||||
this.$api.projectChecking.queryProjectCheckingList(this.index, 9, postData).then(d => {
|
||||
this.tableData=d.rows||[];
|
||||
this.total=d.total;
|
||||
});
|
||||
}
|
||||
},
|
||||
};
|
||||
</script>
|
||||
|
||||
<style lang="less">
|
||||
.project-checking-list-dialog{
|
||||
.popup-project-introduction-min {
|
||||
transform: translateY(10vh);
|
||||
.data-list{
|
||||
margin-bottom: 8px;
|
||||
.acceptance-list{
|
||||
margin-top:12px;
|
||||
display: grid;
|
||||
grid-template-columns: 33% 33% 33%;
|
||||
grid-row-gap: 30px;
|
||||
margin-left: -80px;
|
||||
width: calc(100% + 100px);
|
||||
max-height: 630px;
|
||||
.acceptance-item{
|
||||
display: inline-block;
|
||||
height: 155px;
|
||||
border: solid 1px #ccc;
|
||||
border-radius: 5px;
|
||||
margin-left: 80px;
|
||||
.row-1{
|
||||
.div-img{
|
||||
|
||||
div.el-image {
|
||||
display: flex;
|
||||
height: 120px;
|
||||
width: 160px;
|
||||
justify-items: center;
|
||||
align-items: center;
|
||||
.el-image__inner {
|
||||
height: unset;
|
||||
width: 160px;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
.row-5{
|
||||
display: flex;
|
||||
align-items: center;
|
||||
height: 48px;
|
||||
.row-5-txt{
|
||||
line-height: 24px;
|
||||
display: -webkit-box;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
-webkit-line-clamp: 2;
|
||||
-webkit-box-orient: vertical;
|
||||
}
|
||||
}
|
||||
.sp-label{
|
||||
display: inline-block;
|
||||
width: 40px;
|
||||
}
|
||||
.sp-text{
|
||||
display: inline-block;
|
||||
max-width: calc(100% - 40px);
|
||||
|
||||
height: 24px;
|
||||
.span-text{
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
width: 100%;
|
||||
display: block;
|
||||
white-space: nowrap;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.head-nav {
|
||||
width: 150px;
|
||||
}
|
||||
}
|
||||
</style>
|
|
@ -0,0 +1,200 @@
|
|||
<template>
|
||||
<MyDialog v-if="show" v-model="show" width="1600px" height="740px" class="work-train-dialog">
|
||||
<template slot="title">{{ trainType == 0 ? '专项培训' : '应急演练' }}{{ prjName ? ' - ' + prjName : '' }}</template>
|
||||
<div class="head-title-tab" style="padding: 10px 0px;max-width: unset;">
|
||||
<div v-for="(it, idx) in dicts" :key="idx" :class="nav == it.dictValue ? 'head-nav active' : 'head-nav'" @click="doNav(it.dictValue)"
|
||||
>{{ it.dictLabel }}</div>
|
||||
</div>
|
||||
<div class="data-list">
|
||||
<div class="data-item" v-for="(it, idx) in tableData" :key="idx" >
|
||||
<div class="data-item-row1">
|
||||
<div class="data-item-img">
|
||||
<el-image :src="getProfileImage(it.mainImage, true)" style="width:100%;"
|
||||
:preview-src-list="[getProfileImage(it.mainImage)]" />
|
||||
</div>
|
||||
<div class="data-item-row-right" style="cursor: pointer;" @click="doShowDlgTrain(it)">
|
||||
<div class="bottom-line2" style="line-height: 24px;margin-top: 8px;">
|
||||
<span style="color:#59A0DC;display: inline-block;margin-right: 8px;">{{ idx < 9 ? '0' + (idx +
|
||||
1) : '' + (idx + 1) }}</span>
|
||||
<span style="font-weight: bold;color:#59A0DC;">{{ it.trainTitle }}</span>
|
||||
</div>
|
||||
<div style="display: flex;align-items: center;">
|
||||
<div style="line-height: 24px;color:#aaa;font-size: 12px;margin-top:12px;">
|
||||
<div><span>参与人数:</span><span style="color:#436CE9">{{ it.trainParticipants }}</span><span>
|
||||
人</span>
|
||||
</div>
|
||||
<div>
|
||||
<span>培训时间:</span><span>{{ it.beginDate }}</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="data-item-row2" style="cursor: pointer;" @click="doShowDlgTrain(it)">
|
||||
<div style="margin-top: -6px;color:#b8beef;font-size: 12px;">
|
||||
<span>协作队伍:</span><span class="txt-over" :title="it.trainDeptNames">{{ it.trainDeptNames }}</span></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<el-pagination layout="total,prev, pager, next" :hide-on-single-page="true" @current-change="handleCurrentChange"
|
||||
:total="total" :page-size="size" :current-page.sync="index" class="bg-pagination"></el-pagination>
|
||||
<worktrainDlg ref="workTrainDlg"></worktrainDlg>
|
||||
</MyDialog>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
|
||||
import MyDialog from '../components/MyDialog'
|
||||
import worktrainDlg from '../dlg/workTrainDlg.vue'
|
||||
export default {
|
||||
components: {
|
||||
MyDialog,worktrainDlg
|
||||
},
|
||||
name: 'JhbigscreenIndexDlg1',
|
||||
|
||||
data() {
|
||||
return {
|
||||
show: false,
|
||||
tableData: [],
|
||||
nav: 1,
|
||||
index: 1,
|
||||
size: 9,
|
||||
deptId: 0,
|
||||
projectId: 0,
|
||||
total: 0,
|
||||
prjName: '',
|
||||
trainType: 0,
|
||||
dicts: [],
|
||||
};
|
||||
},
|
||||
|
||||
mounted() {
|
||||
|
||||
},
|
||||
|
||||
methods: {
|
||||
doShowDlgTrain(it) {
|
||||
if (this.trainType == 0) {
|
||||
it.title = "专项培训";
|
||||
it.typeTitle = "培训";
|
||||
} else {
|
||||
it.title = "应急演练";
|
||||
it.typeTitle = "演练";
|
||||
}
|
||||
this.$refs.workTrainDlg.showDialog(it)
|
||||
},
|
||||
// 获取图片映射
|
||||
getProfileImage(url, min) {
|
||||
if (url) {
|
||||
return '/jhapi' + url + (min ? ".min.jpg" : "");
|
||||
}
|
||||
return url;
|
||||
},
|
||||
handleCurrentChange(n) {
|
||||
this.index = n;
|
||||
this.loadData();
|
||||
},
|
||||
doNav(n) {
|
||||
this.nav = n;
|
||||
this.index = 1;
|
||||
this.loadData();
|
||||
},
|
||||
showDialog(data) {
|
||||
this.dicts = data.dicts || [];
|
||||
this.trainType = data.type;
|
||||
this.deptId = data.deptId;
|
||||
this.projectId = data.projectId;
|
||||
if (data.prj) {
|
||||
this.prjName = data.prj.projectName || '';
|
||||
} else {
|
||||
this.prjName = "";
|
||||
}
|
||||
this.nav = this.dicts.length > 0 ? this.dicts[0].dictValue : 0;
|
||||
this.index = 1;
|
||||
this.loadData();
|
||||
this.show = true
|
||||
},
|
||||
loadData() {
|
||||
let data = {
|
||||
deptId: this.deptId,
|
||||
projectId: this.projectId,
|
||||
trainType: this.trainType,
|
||||
dataType: this.nav
|
||||
};
|
||||
this.$api.workTrain.queryWorkTrainList(this.index, 9, data).then(d => {
|
||||
this.tableData = d.rows || [];
|
||||
this.total = d.total;
|
||||
})
|
||||
}
|
||||
},
|
||||
};
|
||||
</script>
|
||||
|
||||
<style lang="less" scoped>
|
||||
.mytable {
|
||||
/deep/ th .cell {
|
||||
color: aquamarine;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
<style lang="less">
|
||||
.work-train-dialog {
|
||||
.popup-project-introduction-min {
|
||||
transform: translateY(10vh);
|
||||
}
|
||||
|
||||
.head-nav {
|
||||
width: 150px;
|
||||
}
|
||||
|
||||
.bg-pagination {
|
||||
margin-top: 20px;
|
||||
}
|
||||
|
||||
.data-list {
|
||||
margin-top:12px;
|
||||
display: grid;
|
||||
grid-template-columns: 33% 33% 33%;
|
||||
grid-row-gap: 30px;
|
||||
margin-left: -80px;
|
||||
width: calc(100% + 100px);
|
||||
|
||||
.data-item {
|
||||
display: inline-block;
|
||||
height: 155px;
|
||||
border: solid 1px #ccc;
|
||||
border-radius: 5px;
|
||||
margin-left: 80px;
|
||||
|
||||
&.col-1 {
|
||||
margin-left: 0px;
|
||||
}
|
||||
|
||||
.data-item-row1 {
|
||||
display: grid;
|
||||
grid-template-columns: 50% 50%;
|
||||
|
||||
.data-item-img {
|
||||
padding: 10px;
|
||||
|
||||
div.el-image {
|
||||
display: flex;
|
||||
height: 100px;
|
||||
justify-items: center;
|
||||
align-items: center;
|
||||
|
||||
.el-image__inner {
|
||||
height: unset;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
.data-item-row2 {
|
||||
padding:0px 10px;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
height: 30px;
|
||||
}
|
||||
}
|
||||
}
|
||||
}</style>
|
|
@ -4107,6 +4107,11 @@ lodash.merge@^4.6.2:
|
|||
resolved "https://registry.npmmirror.com/lodash.merge/-/lodash.merge-4.6.2.tgz"
|
||||
integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==
|
||||
|
||||
lodash.throttle@^4.1.1:
|
||||
version "4.1.1"
|
||||
resolved "https://registry.npmmirror.com/lodash.throttle/-/lodash.throttle-4.1.1.tgz#c23e91b710242ac70c37f1e1cda9274cc39bf2f4"
|
||||
integrity sha512-wIkUCfVKpVsWo3JSZlc+8MB5it+2AN5W8J7YVMST30UrvcQNZ1Okbj+rbVniijTWE6FGYy4XJq/rHkas8qJMLQ==
|
||||
|
||||
lodash.truncate@^4.4.2:
|
||||
version "4.4.2"
|
||||
resolved "https://registry.npmmirror.com/lodash.truncate/-/lodash.truncate-4.4.2.tgz"
|
||||
|
|
Loading…
Reference in New Issue