Browse Source

4.08任务

master
KeXuCong 2 weeks ago
parent
commit
030e718896
  1. 2
      jwtech-admin-page/.gitignore
  2. 9
      jwtech-admin-page/src/api/site/equipmentMonitoring.js
  3. 9
      jwtech-admin-page/src/api/site/equipmentOperationWarning.js
  4. 10
      jwtech-admin-page/src/api/site/productionOutputStatistics.js
  5. 10
      jwtech-admin-page/src/api/site/projectPersonnelStatistics.js
  6. 4
      jwtech-admin-page/src/utils/fileUpload.js
  7. 205
      jwtech-admin-page/src/views/building/photoManagement/index.vue
  8. 8
      jwtech-admin-page/src/views/building/projectInfo/projectProcess/index.vue
  9. 31
      jwtech-admin-page/src/views/building/projectInfo/projectProcess/site/deviceInformation/index.vue
  10. 92
      jwtech-admin-page/src/views/building/projectInfo/projectProcess/site/equipmentMonitoring/index.vue
  11. 93
      jwtech-admin-page/src/views/building/projectInfo/projectProcess/site/equipmentOperationWarning/index.vue
  12. 48
      jwtech-admin-page/src/views/building/projectInfo/projectProcess/site/index.vue
  13. 10
      jwtech-admin-page/src/views/building/projectInfo/projectProcess/site/information/index.vue
  14. 6
      jwtech-admin-page/src/views/building/projectInfo/projectProcess/site/loInformation/index.vue
  15. 36
      jwtech-admin-page/src/views/building/projectInfo/projectProcess/site/monitoring/index.vue
  16. 28
      jwtech-admin-page/src/views/building/projectInfo/projectProcess/site/noiseMonitoring/index.vue
  17. 6
      jwtech-admin-page/src/views/building/projectInfo/projectProcess/site/output/index.vue
  18. 10
      jwtech-admin-page/src/views/building/projectInfo/projectProcess/site/personDetails/index.vue
  19. 84
      jwtech-admin-page/src/views/building/projectInfo/projectProcess/site/personnel/index.vue
  20. 107
      jwtech-admin-page/src/views/building/projectInfo/projectProcess/site/productionOutputStatistics/index.vue
  21. 149
      jwtech-admin-page/src/views/building/projectInfo/projectProcess/site/projectPersonnelStatistics/index.vue
  22. 27
      jwtech-admin-page/src/views/building/projectInfo/projectProcess/site/qualityMonitoring/index.vue
  23. 6
      jwtech-admin-page/src/views/building/projectInfo/projectProcess/site/record/index.vue
  24. 47
      jwtech-admin-page/src/views/building/projectInfo/projectProcess/site/statistics/index.vue
  25. 6
      jwtech-admin-page/src/views/building/projectInfo/projectProcess/site/track/index.vue
  26. 6
      jwtech-admin-page/src/views/building/projectInfo/projectProcess/site/vehicleInformation/index.vue
  27. 2
      jwtech-admin-page/vue.config.js

2
jwtech-admin-page/.gitignore

@ -10,6 +10,8 @@ tests/**/coverage/
tests/e2e/reports
selenium-debug.log
dist/*
# Editor directories and files
.idea
.vscode

9
jwtech-admin-page/src/api/site/equipmentMonitoring.js

@ -0,0 +1,9 @@
import request from "@/utils/request";
// 查询项目人员名单信息列表
export function statisticsOfNormal(proNo) {
return request({
url: `/site/deviceInformation/statisticsOfNormal/${proNo}`,
method: "get",
});
}

9
jwtech-admin-page/src/api/site/equipmentOperationWarning.js

@ -0,0 +1,9 @@
import request from "@/utils/request";
// 查询项目人员名单信息列表
export function statisticsOfOverweightEquipment(proNo) {
return request({
url: `/site/deviceInformation/statisticsOfOverweightEquipment/${proNo}`,
method: "get",
});
}

10
jwtech-admin-page/src/api/site/productionOutputStatistics.js

@ -0,0 +1,10 @@
import request from "@/utils/request";
// 查询项目人员名单信息列表
export function getMaterialOutputStatistics(params) {
return request({
url: `/site/monitoring/getMaterialOutputStatistics`,
method: "get",
params: params
});
}

10
jwtech-admin-page/src/api/site/projectPersonnelStatistics.js

@ -0,0 +1,10 @@
import request from "@/utils/request";
// 查询项目人员名单信息列表
export function typeStatistics(params) {
return request({
url: `/site/personnel/typeStatistics`,
method: "post",
params: params,
});
}

4
jwtech-admin-page/src/utils/fileUpload.js

@ -5,10 +5,10 @@ export function fileBeforeUpload (file, fileListName) {
const fileSuffix = file.name.substring(file.name.lastIndexOf(".") + 1);
const whiteList = ["jpg", "jpeg", "png", "doc", "docx", "xls", "xlsx", "ppt", "pptx","bmp", "gif", "html", "htm", "txt", "rar", "zip", "gz", "bz2", "pdf","PDF","JPG"];
const whiteList = ["jpg", "jpeg", "png", "doc", "docx", "xls", "xlsx", "ppt", "pptx","bmp", "gif", "txt", "rar", "zip", "gz", "bz2", "pdf","PDF","JPG"];
if (whiteList.indexOf(fileSuffix) === -1) {
this.msgError("上传文件只能是 jpg, jpeg, png, doc, docx, xls, xlsx, ppt, pptx,bmp, gif, html, htm, txt, rar, zip, gz, bz2, pdf]格式", "error");
this.msgError("上传文件只能是 jpg, jpeg, png, doc, docx, xls, xlsx, ppt, pptx,bmp, gif, txt, rar, zip, gz, bz2, pdf]格式", "error");
// return false;
this[fileListName] = this[fileListName].slice(0, this[fileListName].length);
}

205
jwtech-admin-page/src/views/building/photoManagement/index.vue

@ -0,0 +1,205 @@
<template>
<!-- 图片管理-->
<div class="app-container">
<el-form :model="queryParams" ref="queryForm" :inline="true">
<el-form-item label="隐患名称" prop="hazardName">
<el-input
v-model="queryParams.cv.value"
placeholder="请输入隐患名称"
clearable
size="small"
@keyup.enter.native="handleQuery"
>
<el-button
type="primary"
slot="append"
icon="el-icon-search"
size="small"
@click="handleQuery"
></el-button>
</el-input>
</el-form-item>
<el-form-item>
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery"
>重置</el-button
>
</el-form-item>
</el-form>
<el-table
v-loading="loading"
:data="accList"
tooltip-effect="dark myTooltips"
>
<el-table-column
label="序号"
type="index"
width="50"
align="center"
fixed
/>
<el-table-column
label="项目名称"
align="left"
prop="entryName"
min-width="200"
/>
<el-table-column
label="隐患名称"
align="left"
prop="hazardName"
min-width="200"
/>
<el-table-column
label="文档附件"
align="left"
prop="hazardAttachment"
min-width="180"
>
<template slot-scope="scope">
<template v-if="scope.row.hazardAttachment">
<div
v-for="(item, index) in JSON.parse(scope.row.hazardAttachment)"
:key="item.id + index"
>
<i class="el-icon-document"></i>
{{ item.name }}
<i
class="el-icon-download"
@click="downloadFile1(scope, index)"
style="cursor: pointer"
></i>
</div>
</template>
<template v-else>
<span>暂无附件</span>
</template>
</template>
</el-table-column>
<el-table-column
label="操作"
align="right"
class-name="small-padding fixed-width"
min-width="100"
fixed="right"
>
<template slot-scope="scope">
<el-button
size="mini"
type="text"
icon="el-icon-delete"
@click="handleView(scope.row)"
>查看</el-button
>
</template>
</el-table-column>
</el-table>
<pagination
v-show="total > 0"
:total="total"
:page.sync="queryParams.pageNum"
:limit.sync="queryParams.pageSize"
@pagination="getList"
/>
</div>
</template>
<script>
import { listRecord } from "@/api/build/hazardRecord";
export default {
name: "PhotoManagement",
components: {},
data() {
return {
//
queryParams: {
pageNum: 1,
pageSize: 10,
ids: null,
data: {},
cv: {
name: "hazardName",
type: "like",
value: null,
},
//
params: {
//
orderBy: "create_time",
// descasc
sortBy: "desc",
},
},
//
total: 0,
//
loading: true,
//
accList: [],
};
},
created() {
this.getList();
},
methods: {
/** 重置按钮操作 */
resetQuery() {
this.resetQueryForm();
this.handleQuery();
},
//
resetQueryForm() {
this.queryParams = {
pageNum: 1,
pageSize: 10,
ids: null,
data: {},
cv: {
name: "hazardName",
type: "like",
value: null,
},
//
params: {
//
orderBy: "create_time",
// descasc
sortBy: "desc",
},
};
this.resetForm("form");
},
/** 搜索按钮操作 */
handleQuery() {
this.queryParams.pageNum = 1;
this.getList();
},
/** 查询竣工验收列表 */
getList() {
this.loading = true;
this.queryParams.data.proNo = "";
this.queryParams.data.proCode = "";
listRecord(this.queryParams).then((response) => {
this.accList = response.records;
this.total = response.total;
this.loading = false;
});
},
handleView(row) {
console.log(row);
if (!row.proNo) {
this.$message.warning("暂无项目信息");
return;
}
this.$router.push({
path: `/building/projectInfo/projectProcess?baseDataId=${row.proNo}&activeName=missIdentification` ,
});
},
},
};
</script>
<style lang="scss" scoped>
@import "@/assets/css/dialog.scss";
</style>

8
jwtech-admin-page/src/views/building/projectInfo/projectProcess/index.vue

@ -339,10 +339,16 @@ export default {
};
},
created() {
this.routeList = JSON.parse(this.$store.state.basePageData.routeList);
this.activeName = this.$route.query.activeName?this.$route.query.activeName:'basePage';
console.log(this.routeList)
this.getList();
if (this.$route.query.activeName) {
this.activeName = this.$route.query.activeName
}else{
this.getList();
}
},
methods: {
checkRole,

31
jwtech-admin-page/src/views/building/projectInfo/projectProcess/site/deviceInformation/index.vue

@ -92,6 +92,7 @@
<el-table-column label="设备编号" align="center" prop="deviceNo" min-width="120"/>
<!-- <el-table-column label="设备状态" align="center" prop="status" min-width="120"/> -->
<el-table-column label="设备状态" align="center" prop="status" :formatter="statusTypeFormat" />
<el-table-column label="是否超重报警" align="center" prop="isOverweight" :formatter="overweightAlarmTypeFormat" />
<el-table-column label="设备型号/参数" align="center" prop="model" min-width="120"/>
<el-table-column label="所属机构" align="center" prop="unit" min-width="120"/>
<el-table-column label="设备厂家" align="center" prop="manufacturer" min-width="120"/>
@ -130,7 +131,7 @@
<!-- 添加或修改设备基本信息对话框 -->
<el-dialog :title="title" :visible.sync="open" width="1200px" append-to-body :close-on-click-modal="false">
<el-form ref="form" :model="form" :rules="rules" label-width="80px">
<el-form ref="form" :model="form" :rules="rules" label-width="120px">
<!-- <el-form-item label="设备名称" prop="name">
<el-input v-model="form.name" placeholder="请输入设备名称" />
</el-form-item> -->
@ -160,6 +161,18 @@
></el-option>
</el-select>
</el-form-item>
<el-form-item label="是否超重报警" prop="name">
<el-select v-model="form.isOverweight" placeholder="请选择是否超重报警">
<el-option
v-for="dict in overweightAlarmOptions"
:key="dict.dictValue"
:label="dict.dictLabel"
:value="dict.dictValue"
></el-option>
</el-select>
</el-form-item>
<el-form-item label="设备型号/参数" prop="model">
<el-input v-model="form.model" placeholder="请输入设备型号/参数" />
</el-form-item>
@ -194,6 +207,7 @@ import { listDeviceInformation, getDeviceInformation, delDeviceInformation, addD
export default {
name: "DeviceInformation",
props: ["proNo", "proCode"],
data() {
return {
//
@ -220,6 +234,7 @@ export default {
pageSize: 10,
ids:null,
data:{
proNo: this.proNo,
name: null,
deviceNo: null,
},
@ -238,6 +253,7 @@ export default {
},
nameTypeOptions: [],
statusTypeOptions: [],
overweightAlarmOptions: [],
};
},
created() {
@ -247,6 +263,9 @@ export default {
this.getDicts("device_status").then((response) => {
this.statusTypeOptions = response.data;
});
this.getDicts("sys_yes_no").then((response) => {
this.overweightAlarmOptions = response.data;
});
this.getList();
},
methods: {
@ -256,6 +275,9 @@ export default {
statusTypeFormat(row, column) {
return this.selectDictLabel(this.statusTypeOptions, row.status);
},
overweightAlarmTypeFormat(row, column) {
return this.selectDictLabel(this.overweightAlarmOptions, row.isOverweight);
},
/** 查询设备基本信息列表 */
getList() {
this.loading = true;
@ -281,12 +303,13 @@ export default {
unit: null,
manufacturer: null,
eligibilityDate: null,
proNo: null,
proNo: this.proNo,
createUid: null,
createTime: null,
updateUid: null,
updateTime: null,
remark: null
remark: null,
isOverweight: null,
};
this.resetForm("form");
},
@ -304,7 +327,7 @@ export default {
unit: null,
manufacturer: null,
eligibilityDate: null,
proNo: null,
proNo: this.proNo,
createUid: null,
createTime: null,
updateUid: null,

92
jwtech-admin-page/src/views/building/projectInfo/projectProcess/site/equipmentMonitoring/index.vue

@ -0,0 +1,92 @@
<template>
<div class="app-container">
<div ref="equipmentMonitoring" style="width: 100%; height: 500px"></div>
</div>
</template>
<script>
import * as echarts from "echarts";
import { statisticsOfNormal } from "@/api/site/equipmentMonitoring";
export default {
name: "equipmentMonitoring",
props: ["proNo", "proCode"],
data() {
return {
nameTypeOptions: [],
};
},
created() {
this.getDicts("device_name").then((response) => {
this.nameTypeOptions = response.data;
});
},
mounted() {
this.getequipmentMonitoring();
},
methods: {
nameTypeFormat(name) {
return this.selectDictLabel(this.nameTypeOptions, name);
},
getequipmentMonitoring() {
statisticsOfNormal(this.proNo).then((res) => {
console.log("equipmentMonitoring", res);
this.chartInit(res.data);
});
},
chartInit(dataList) {
let xAxisData = [];
let seriesData = [
{
name: "正常",
type: "bar",
data: [],
},
{
name: "异常",
type: "bar",
data: [],
},
];
dataList.forEach((item) => {
xAxisData.push(this.nameTypeFormat(item.model));
seriesData[0].data.push(item.normal_count || 0);
seriesData[1].data.push(item.no_normal_count || 0);
});
let myChart = echarts.init(this.$refs.equipmentMonitoring);
let option = {
tooltip: {
trigger: "axis",
axisPointer: {
type: "shadow",
},
},
legend: {},
grid: {
left: "3%",
right: "4%",
bottom: "3%",
containLabel: true,
},
xAxis: {
type: "category",
data: xAxisData,
},
yAxis: {
type: "value",
boundaryGap: [0, 1],
minInterval: 1,
},
series: seriesData,
};
option && myChart.setOption(option);
window.addEventListener("resize", function () {
myChart.resize();
});
},
},
};
</script>
<style lang="scss" scoped></style>

93
jwtech-admin-page/src/views/building/projectInfo/projectProcess/site/equipmentOperationWarning/index.vue

@ -0,0 +1,93 @@
<template>
<div class="app-container">
<div ref="equipmentOperationWarning" style="width: 100%; height: 500px"></div>
</div>
</template>
<script>
import * as echarts from "echarts";
import { statisticsOfOverweightEquipment } from "@/api/site/equipmentOperationWarning";
export default {
name: "equipmentOperationWarning",
props: ["proNo", "proCode"],
data() {
return {
nameTypeOptions: [],
};
},
created() {
this.getDicts("device_name").then((response) => {
this.nameTypeOptions = response.data;
});
},
mounted() {
this.getequipmentOperationWarning();
},
methods: {
nameTypeFormat(name) {
return this.selectDictLabel(this.nameTypeOptions, name);
},
getequipmentOperationWarning() {
statisticsOfOverweightEquipment(this.proNo).then((res) => {
console.log("equipmentOperationWarning", res);
this.chartInit(res.data);
});
},
chartInit(dataList) {
let xAxisData = [];
let seriesData = [
{
name: "统计总数",
type: "bar",
data: [],
},
{
name: "超重报警数",
type: "bar",
data: [],
},
];
dataList.forEach((item) => {
xAxisData.push(this.nameTypeFormat(item.model));
seriesData[0].data.push(item.total || 0);
seriesData[1].data.push(item.non_overweight_count
|| 0);
});
let myChart = echarts.init(this.$refs.equipmentOperationWarning);
let option = {
tooltip: {
trigger: "axis",
axisPointer: {
type: "shadow",
},
},
legend: {},
grid: {
left: "3%",
right: "4%",
bottom: "3%",
containLabel: true,
},
xAxis: {
type: "category",
data: xAxisData,
},
yAxis: {
type: "value",
boundaryGap: [0, 1],
minInterval: 1,
},
series: seriesData,
};
option && myChart.setOption(option);
window.addEventListener("resize", function () {
myChart.resize();
});
},
},
};
</script>
<style lang="scss" scoped></style>

48
jwtech-admin-page/src/views/building/projectInfo/projectProcess/site/index.vue

@ -102,6 +102,48 @@
:proCode="proCode"
/>
</el-tab-pane>
<el-tab-pane label="设备实时监测信息" name="equipmentMonitoring">
<equipmentMonitoring
v-if="activeName === 'equipmentMonitoring'"
:proNo="proNo"
:proCode="proCode"
/>
</el-tab-pane>
<el-tab-pane label="设备运行预警信息" name="equipmentOperationWarning">
<equipmentOperationWarning
v-if="activeName === 'equipmentOperationWarning'"
:proNo="proNo"
:proCode="proCode"
/>
</el-tab-pane>
<el-tab-pane label="生产出料统计信息" name="productionOutputStatistics">
<productionOutputStatistics
v-if="activeName === 'productionOutputStatistics'"
:proNo="proNo"
:proCode="proCode"
/>
</el-tab-pane>
<el-tab-pane label="灌浆次数统计信息" name="groutingTimesStatistics">
<productionOutputStatistics
v-if="activeName === 'groutingTimesStatistics'"
:proNo="proNo"
:proCode="proCode"
/>
</el-tab-pane>
<el-tab-pane label="工区噪声达标率统计信息" name="zoneNoise">
<productionOutputStatistics
v-if="activeName === 'zoneNoise'"
:proNo="proNo"
:proCode="proCode"
/>
</el-tab-pane>
<el-tab-pane label="项目人员统计信息" name="projectPersonnelStatistics">
<projectPersonnelStatistics
v-if="activeName === 'projectPersonnelStatistics'"
:proNo="proNo"
:proCode="proCode"
/>
</el-tab-pane>
</el-tabs>
</div>
</template>
@ -121,11 +163,15 @@ import record from "./record/index.vue";
import statistics from "./statistics/index.vue";
import qualityMonitoring from "./qualityMonitoring/index.vue";
import personnelAttendanceStatistics from "./personnelAttendanceStatistics/index.vue";
import equipmentMonitoring from "./equipmentMonitoring/index.vue";
import equipmentOperationWarning from "./equipmentOperationWarning/index.vue";
import productionOutputStatistics from "./productionOutputStatistics/index.vue";
import projectPersonnelStatistics from "./projectPersonnelStatistics/index.vue";
export default {
props: ["projectName", "proNo", "proCode"],
components: { personnel, personDetails, loInformation, deviceInformation, information,monitoring,
noiseMonitoring,vehicleInformation,outputL,trackL,record,statistics,qualityMonitoring,personnelAttendanceStatistics},
noiseMonitoring,vehicleInformation,outputL,trackL,record,statistics,qualityMonitoring,personnelAttendanceStatistics,equipmentMonitoring,equipmentOperationWarning,productionOutputStatistics,projectPersonnelStatistics},
data() {
return {
activeName: "personnel",

10
jwtech-admin-page/src/views/building/projectInfo/projectProcess/site/information/index.vue

@ -137,9 +137,9 @@
placeholder="选择逗留时间">
</el-date-picker>
</el-form-item>
<el-form-item label="项目编号" prop="proNo">
<!-- <el-form-item label="项目编号" prop="proNo">
<el-input v-model="form.proNo" placeholder="请输入项目编号" />
</el-form-item>
</el-form-item> -->
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="submitForm"> </el-button>
@ -154,6 +154,7 @@ import { listInformation, getInformation, delInformation, addInformation, update
export default {
name: "Information",
props: ["proNo", "proCode"],
data() {
return {
//
@ -180,6 +181,7 @@ export default {
pageSize: 10,
ids:null,
data:{
proNo: this.proNo,
name: null,
},
//
@ -226,7 +228,7 @@ export default {
longitudeLatitude: null,
highRisk: null,
stayTime: null,
proNo: null,
proNo: this.proNo,
createUid: null,
createTime: null,
updateUid: null,
@ -249,7 +251,7 @@ export default {
longitudeLatitude: null,
highRisk: null,
stayTime: null,
proNo: null,
proNo: this.proNo,
createUid: null,
createTime: null,
updateUid: null,

6
jwtech-admin-page/src/views/building/projectInfo/projectProcess/site/loInformation/index.vue

@ -141,6 +141,7 @@ import { listLoInformation, getLoInformation, delLoInformation, addLoInformation
export default {
name: "LoInformation",
props: ["proNo", "proCode"],
data() {
return {
//
@ -167,6 +168,7 @@ export default {
pageSize: 10,
ids:null,
data:{
proNo: this.proNo,
name: null,
},
//
@ -212,7 +214,7 @@ export default {
unit: null,
workArea: null,
trajectory: null,
proNo: null,
proNo: this.proNo,
createUid: null,
createTime: null,
updateUid: null,
@ -234,7 +236,7 @@ export default {
unit: null,
workArea: null,
trajectory: null,
proNo: null,
proNo: this.proNo,
createUid: null,
createTime: null,
updateUid: null,

36
jwtech-admin-page/src/views/building/projectInfo/projectProcess/site/monitoring/index.vue

@ -120,6 +120,17 @@
<el-form-item label="物料对比" prop="comparison">
<el-input v-model="form.comparison" placeholder="请输入物料对比" />
</el-form-item>
<el-form-item label="物料时间" prop="materialTime">
<el-date-picker
v-model="form.materialTime"
type="datetime"
format="yyyy-MM-dd H"
data-format="yyyy-MM-dd HH"
popper-class="datepickerPopperClass"
value-format="yyyy-MM-dd HH"
placeholder="请选择物料时间">
</el-date-picker>
</el-form-item>
<el-form-item label="用料偏差报警" prop="deviationWarning">
<el-input v-model="form.deviationWarning" placeholder="请输入用料偏差报警" />
</el-form-item>
@ -140,6 +151,7 @@ import { listMonitoring, getMonitoring, delMonitoring, addMonitoring, updateMoni
export default {
name: "Monitoring",
props: ["proNo", "proCode"],
data() {
return {
//
@ -166,6 +178,7 @@ export default {
pageSize: 10,
ids:null,
data:{
proNo: this.proNo,
deviceNo: null,
},
//
@ -180,6 +193,9 @@ export default {
form: {},
//
rules: {
materialYield:[
{pattern: /^[0-9]*$/, message: '投资效益需为数字', trigger: 'blur'}
]
}
};
},
@ -210,12 +226,13 @@ export default {
materialYield: null,
comparison: null,
deviationWarning: null,
proNo: null,
proNo: this.proNo,
createUid: null,
createTime: null,
updateUid: null,
updateTime: null,
remark: null
remark: null,
materialTime: null
};
this.resetForm("form");
},
@ -231,7 +248,7 @@ export default {
materialYield: null,
comparison: null,
deviationWarning: null,
proNo: null,
proNo: this.proNo,
createUid: null,
createTime: null,
updateUid: null,
@ -353,3 +370,16 @@ export default {
// }
//}
</style>
<style lang="scss">
.datepickerPopperClass {
.el-time-spinner__wrapper {
width: 100%;
}
// .el-scrollbar__wrap {
// display: none;
// }
}
</style>

28
jwtech-admin-page/src/views/building/projectInfo/projectProcess/site/noiseMonitoring/index.vue

@ -59,7 +59,7 @@
<el-table-column label="序号" type="index" width="50" align="center" fixed/>
<el-table-column label="项目名称" align="center" prop="sectionName" min-width="120"/>
<el-table-column label="所在工区" align="center" prop="workArea" min-width="120"/>
<el-table-column label="所在工区" align="center" prop="workArea" :formatter="workAreaFormat" min-width="120"/>
<el-table-column label="日期" align="center" prop="date" min-width="120">
<template slot-scope="scope">
<span>{{ parseTime(scope.row.date, '{y}-{m}-{d}') }}</span>
@ -105,7 +105,15 @@
</el-select>
</el-form-item>
<el-form-item label="所在工区" prop="workArea">
<el-input v-model="form.workArea" placeholder="请输入所在工区" />
<!-- <el-input v-model="form.workArea" placeholder="请输入所在工区" /> -->
<el-select v-model="form.workArea" placeholder="请选择所在工区" style="width: 100%">
<el-option
v-for="dict in workAreaOptions"
:key="dict.dictValue"
:label="dict.dictLabel"
:value="dict.dictValue"
></el-option>
</el-select>
</el-form-item>
<el-form-item label="日期" prop="date">
<el-date-picker clearable size="small" style="width: 100%"
@ -151,6 +159,7 @@ import { listNoiseMonitoring, getNoiseMonitoring, delNoiseMonitoring, addNoiseMo
export default {
name: "NoiseMonitoring",
props: ["proNo", "proCode"],
data() {
return {
//
@ -179,6 +188,7 @@ export default {
pageSize: 10,
ids:null,
data:{
proNo: this.proNo,
sectionName: null,
},
//
@ -193,7 +203,8 @@ export default {
form: {},
//
rules: {
}
},
workAreaOptions:[]
};
},
created() {
@ -201,6 +212,9 @@ export default {
this.getDicts("whether").then(response => {
this.outOfStandardOptions = response.data;
});
this.getDicts("work_area").then(response => {
this.workAreaOptions = response.data;
});
},
methods: {
/** 查询工区噪声监测列表 */
@ -216,6 +230,10 @@ export default {
outOfStandardFormat(row, column) {
return this.selectDictLabel(this.outOfStandardOptions, row.outOfStandard);
},
workAreaFormat(row, column) {
return this.selectDictLabel(this.workAreaOptions, row.workArea);
},
//
cancel() {
this.open = false;
@ -231,7 +249,7 @@ export default {
decibel: null,
value: null,
outOfStandard: null,
proNo: null,
proNo: this.proNo,
sectionNo: null,
createUid: null,
createTime: null,
@ -254,7 +272,7 @@ export default {
decibel: null,
value: null,
outOfStandard: null,
proNo: null,
proNo: this.proNo,
sectionNo: null,
createUid: null,
createTime: null,

6
jwtech-admin-page/src/views/building/projectInfo/projectProcess/site/output/index.vue

@ -152,6 +152,7 @@ import { listOutput, getOutput, delOutput, addOutput, updateOutput, exportOutput
export default {
name: "Output",
props: ["proNo", "proCode"],
data() {
return {
//
@ -178,6 +179,7 @@ export default {
pageSize: 10,
ids:null,
data:{
proNo: this.proNo,
productionNo: null,
},
//
@ -225,7 +227,7 @@ export default {
actualValue: null,
deviationRate: null,
productionCapacity: null,
proNo: null,
proNo: this.proNo,
createUid: null,
createTime: null,
updateUid: null,
@ -249,7 +251,7 @@ export default {
actualValue: null,
deviationRate: null,
productionCapacity: null,
proNo: null,
proNo: this.proNo,
createUid: null,
createTime: null,
updateUid: null,

10
jwtech-admin-page/src/views/building/projectInfo/projectProcess/site/personDetails/index.vue

@ -132,9 +132,9 @@
<el-form-item label="出勤工区" prop="workArea">
<el-input v-model="form.workArea" placeholder="请输入出勤工区" />
</el-form-item>
<el-form-item label="项目编号" prop="proNo">
<!-- <el-form-item label="项目编号" prop="proNo">
<el-input v-model="form.proNo" placeholder="请输入项目编号" />
</el-form-item>
</el-form-item> -->
<el-form-item label="出勤时间" prop="attendanceTime">
<el-date-picker clearable size="small" style="width: 100%"
v-model="form.attendanceTime"
@ -157,6 +157,7 @@ import { listPersonDetails, getPersonDetails, delPersonDetails, addPersonDetails
export default {
name: "PersonDetails",
props: ["proNo", "proCode"],
data() {
return {
//
@ -183,6 +184,7 @@ export default {
pageSize: 10,
ids:null,
data:{
proNo: this.proNo,
name: null,
},
//
@ -228,7 +230,7 @@ export default {
type: null,
unit: null,
workArea: null,
proNo: null,
proNo: this.proNo,
attendanceTime: null,
createUid: null,
createTime: null,
@ -251,7 +253,7 @@ export default {
type: null,
unit: null,
workArea: null,
proNo: null,
proNo: this.proNo,
attendanceTime: null,
createUid: null,
createTime: null,

84
jwtech-admin-page/src/views/building/projectInfo/projectProcess/site/personnel/index.vue

@ -73,9 +73,10 @@
<el-table-column label="姓名" align="center" prop="name" min-width="120"/>
<el-table-column label="电话" align="center" prop="phone" min-width="120"/>
<el-table-column label="所属单位" align="center" prop="unit" min-width="120"/>
<el-table-column label="岗位" align="center" prop="post" min-width="120"/>
<el-table-column label="岗位" align="center" prop="post" :formatter="postFormat" min-width="120"/>
<el-table-column label="位置" align="center" prop="position" :formatter="positionFormat" min-width="120"/>
<el-table-column label="持有资质证书" align="center" prop="qualificationCertificate" min-width="120"/>
<el-table-column label="持有资质证书" align="center" prop="qualificationCertificate" :formatter="qualificationCertificateFormat" min-width="120"/>
<el-table-column label="是否进场" align="center" prop="enterArena" :formatter="enterArenaFormat" min-width="120"/>
<el-table-column label="职称" align="center" prop="professional" min-width="120"/>
<el-table-column label="学历水平" align="center" prop="educational" :formatter="educationalFormat" min-width="120"/>
<el-table-column label="人员照片信息" align="center" prop="personnelPhoto" min-width="120"/>
@ -121,7 +122,12 @@
</el-form-item>
<el-form-item label="岗位" prop="post">
<el-select v-model="form.post" placeholder="请选择岗位" style="width: 100%">
<el-option label="请选择字典生成" value="" />
<el-option
v-for="dict in postOptions"
:key="dict.dictValue"
:label="dict.dictLabel"
:value="dict.dictValue"
></el-option>
</el-select>
</el-form-item>
<el-form-item label="位置" prop="position">
@ -135,7 +141,25 @@
</el-select>
</el-form-item>
<el-form-item label="持有资质证书" prop="qualificationCertificate">
<el-input v-model="form.qualificationCertificate" placeholder="请输入持有资质证书" />
<!-- <el-input v-model="form.qualificationCertificate" placeholder="请输入持有资质证书" /> -->
<el-select v-model="form.qualificationCertificate" placeholder="请选择持有资质证书" style="width: 100%">
<el-option
v-for="dict in qualificationCertificateOptions"
:key="dict.dictValue"
:label="dict.dictLabel"
:value="dict.dictValue"
></el-option>
</el-select>
</el-form-item>
<el-form-item label="是否进场" prop="enterArena">
<el-select v-model="form.enterArena" placeholder="请选择是否进场" style="width: 100%">
<el-option
v-for="dict in enterArenaOptions"
:key="dict.dictValue"
:label="dict.dictLabel"
:value="dict.dictValue"
></el-option>
</el-select>
</el-form-item>
<el-form-item label="职称" prop="professional">
<el-input v-model="form.professional" placeholder="请输入职称" />
@ -167,6 +191,7 @@ import { listPersonnel, getPersonnel, delPersonnel, addPersonnel, updatePersonne
export default {
name: "Personnel",
props: ["proNo", "proCode"],
data() {
return {
//
@ -195,17 +220,31 @@ export default {
queryParams: {
pageNum: 1,
pageSize: 10,
ids:null,
data:{
name: null,
},
data:{
id: null,
name: null,
phone: null,
unit: null,
post: null,
position: null,
qualificationCertificate: null,
professional: null,
educational: null,
personnelPhoto: null,
proNo: this.proNo,
createUid: null,
createTime: null,
updateUid: null,
updateTime: null,
remark: null
},
//
params: {
//
orderBy: "create_time",
// descasc
sortBy: "desc",
},
},
},
//
form: {},
@ -217,7 +256,10 @@ export default {
phone: [
{ required: true, message: "电话不能为空", trigger: "blur" }
],
}
},
postOptions: [],
qualificationCertificateOptions:[],
enterArenaOptions:[]
};
},
created() {
@ -228,8 +270,26 @@ export default {
this.getDicts("educational_background").then(response => {
this.educationalOptions = response.data;
});
this.getDicts("post").then(response => {
this.postOptions = response.data;
});
this.getDicts("qualifications").then(response => {
this.qualificationCertificateOptions = response.data;
});
this.getDicts("sys_yes_no").then((response) => {
this.enterArenaOptions = response.data;
});
},
methods: {
postFormat(row, column) {
return this.selectDictLabel(this.postOptions, row.post);
},
qualificationCertificateFormat(row, column) {
return this.selectDictLabel(this.qualificationCertificateOptions, row.qualificationCertificate);
},
enterArenaFormat(row, column) {
return this.selectDictLabel(this.enterArenaOptions, row.enterArena);
},
/** 查询项目人员名单信息列表 */
getList() {
this.loading = true;
@ -265,7 +325,7 @@ export default {
professional: null,
educational: null,
personnelPhoto: null,
proNo: null,
proNo: this.proNo,
createUid: null,
createTime: null,
updateUid: null,
@ -290,7 +350,7 @@ export default {
professional: null,
educational: null,
personnelPhoto: null,
proNo: null,
proNo: this.proNo,
createUid: null,
createTime: null,
updateUid: null,

107
jwtech-admin-page/src/views/building/projectInfo/projectProcess/site/productionOutputStatistics/index.vue

@ -0,0 +1,107 @@
<template>
<div class="app-container">
<el-form :model="queryParams" ref="queryForm" :inline="true">
<el-form-item label="统计时间" prop="timeType">
<el-select
v-model="queryParams.timeType"
placeholder="请选择统计时间"
@change="getproductionOutputStatistics"
>
<el-option label="年" value="1"></el-option>
<el-option label="月" value="2"></el-option>
<el-option label="日" value="3"></el-option> </el-select
></el-form-item>
</el-form>
<div
ref="productionOutputStatistics"
style="width: 100%; height: 500px"
></div>
</div>
</template>
<script>
import * as echarts from "echarts";
import { getMaterialOutputStatistics } from "@/api/site/productionOutputStatistics";
export default {
name: "productionOutputStatistics",
props: ["proNo", "proCode"],
data() {
return {
queryParams: {
proNo: this.proNo,
timeType: "1",
},
};
},
created() {},
mounted() {
this.getproductionOutputStatistics();
},
methods: {
getproductionOutputStatistics() {
getMaterialOutputStatistics(this.queryParams).then((res) => {
console.log("productionOutputStatistics", res);
this.chartInit(res.data);
});
},
chartInit(dataList) {
let xAxisData = [];
let seriesData = [
{
type: "bar",
data: [],
},
];
let titleText =
this.queryParams.timeType == 1
? "本年物料生产量"
: this.queryParams.timeType == 2
? "本月物料生产量"
: "本日物料生产量";
dataList.forEach((item) => {
xAxisData.push(item.time || 0);
seriesData[0].data.push(item.materialYield || 0);
});
let myChart = echarts.init(this.$refs.productionOutputStatistics);
let option = {
title: {
left: "center",
text: titleText,
},
tooltip: {
trigger: "axis",
axisPointer: {
type: "shadow",
},
},
legend: {},
grid: {
left: "3%",
right: "4%",
bottom: "3%",
containLabel: true,
},
xAxis: {
type: "category",
data: xAxisData,
},
yAxis: {
type: "value",
boundaryGap: [0, 1],
minInterval: 1,
},
series: seriesData,
};
option && myChart.setOption(option);
window.addEventListener("resize", function () {
myChart.resize();
});
},
},
};
</script>
<style lang="scss" scoped></style>

149
jwtech-admin-page/src/views/building/projectInfo/projectProcess/site/projectPersonnelStatistics/index.vue

@ -0,0 +1,149 @@
<template>
<div class="app-container">
<el-form :model="queryParams" ref="queryForm" :inline="true">
<el-form-item label="统计类型" prop="type">
<el-select
v-model="queryParams.type"
placeholder="请选择统计类型"
@change="getprojectPersonnelStatistics"
>
<el-option label="岗位" value="post"></el-option>
<el-option label="位置" value="position"></el-option>
<el-option
label="资质证书"
value="qualification_certificate"
></el-option>
<el-option
label="是否进场"
value="enter_arena"
></el-option> </el-select
></el-form-item>
</el-form>
<div
ref="projectPersonnelStatistics"
style="width: 100%; height: 500px"
></div>
</div>
</template>
<script>
import * as echarts from "echarts";
import { typeStatistics } from "@/api/site/projectPersonnelStatistics";
export default {
name: "projectPersonnelStatistics",
props: ["proNo", "proCode"],
data() {
return {
queryParams: {
proNo: this.proNo,
type: "post",
},
//
postOptions: [],
//
positionOptions: [],
//
qualification_certificateOptions: [],
//
enter_arenaOptions: [],
};
},
created() {
this.getDicts("post").then((response) => {
this.postOptions = response.data;
});
this.getDicts("risk_address").then((response) => {
this.positionOptions = response.data;
});
this.getDicts("qualifications").then((response) => {
this.qualification_certificateOptions = response.data;
});
this.getDicts("sys_yes_no").then((response) => {
this.enter_arenaOptions = response.data;
});
},
mounted() {
this.getprojectPersonnelStatistics();
},
methods: {
dataFormat(data, type) {
return this.selectDictLabel(data, type);
},
getprojectPersonnelStatistics() {
typeStatistics(this.queryParams).then((res) => {
console.log("projectPersonnelStatistics", res);
this.chartInit(res.data);
});
},
chartInit(dataList) {
let xAxisData = [];
let seriesData = [
{
type: "bar",
data: [],
},
];
let titleText =
this.queryParams.type == "post"
? "工区人员分布统计"
: this.queryParams.type == "position"
? "项目人员组成统计"
: this.queryParams.type == "qualification_certificate"
? "人员资质情况统计"
: "人员进退场统计";
dataList.forEach((item) => {
xAxisData.push(
this.dataFormat(
this[`${this.queryParams.type}Options`],
item[this.queryParams.type]
) || 0
);
seriesData[0].data.push(item.count || 0);
});
console.log("xAxisData", xAxisData);
console.log("seriesData", seriesData);
let myChart = echarts.init(this.$refs.projectPersonnelStatistics);
let option = {
title: {
left: "center",
text: titleText,
},
tooltip: {
trigger: "axis",
axisPointer: {
type: "shadow",
},
},
legend: {},
grid: {
left: "3%",
right: "4%",
bottom: "3%",
containLabel: true,
},
xAxis: {
type: "category",
data: xAxisData,
},
yAxis: {
type: "value",
boundaryGap: [0, 1],
minInterval: 1,
},
series: seriesData,
};
option && myChart.setOption(option);
window.addEventListener("resize", function () {
myChart.resize();
});
},
},
};
</script>
<style lang="scss" scoped></style>

27
jwtech-admin-page/src/views/building/projectInfo/projectProcess/site/qualityMonitoring/index.vue

@ -59,7 +59,7 @@
<el-table-column label="序号" type="index" width="50" align="center" fixed/>
<el-table-column label="项目名称" align="center" prop="sectionName" min-width="120"/>
<el-table-column label="所在工区" align="center" prop="workArea" min-width="120"/>
<el-table-column label="所在工区" align="center" prop="workArea" :formatter="workAreaFormat" min-width="120"/>
<el-table-column label="日期" align="center" prop="date" min-width="120">
<template slot-scope="scope">
<span>{{ parseTime(scope.row.date, '{y}-{m}-{d}') }}</span>
@ -107,7 +107,15 @@
</el-select>
</el-form-item>
<el-form-item label="所在工区" prop="workArea">
<el-input v-model="form.workArea" placeholder="请输入所在工区" />
<!-- <el-input v-model="form.workArea" placeholder="请输入所在工区" /> -->
<el-select v-model="form.workArea" placeholder="请选择所在工区" style="width: 100%">
<el-option
v-for="dict in workAreaOptions"
:key="dict.dictValue"
:label="dict.dictLabel"
:value="dict.dictValue"
></el-option>
</el-select>
</el-form-item>
<el-form-item label="日期" prop="date">
<el-date-picker clearable size="small" style="width: 100%"
@ -159,6 +167,7 @@ import { listQualityMonitoring, getQualityMonitoring, delQualityMonitoring, addQ
export default {
name: "QualityMonitoring",
props: ["proNo", "proCode"],
data() {
return {
//
@ -187,6 +196,7 @@ export default {
pageSize: 10,
ids:null,
data:{
proNo: this.proNo,
sectionName: null,
},
//
@ -201,7 +211,8 @@ export default {
form: {},
//
rules: {
}
},
workAreaOptions:[]
};
},
created() {
@ -209,8 +220,14 @@ export default {
this.getDicts("whether").then(response => {
this.outOfStandardOptions = response.data;
});
this.getDicts("work_area").then(response => {
this.workAreaOptions = response.data;
});
},
methods: {
workAreaFormat(row, column) {
return this.selectDictLabel(this.workAreaOptions, row.workArea);
},
/** 查询工区空气质量实时监测信息列表 */
getList() {
this.loading = true;
@ -241,7 +258,7 @@ export default {
monitored10: null,
forewarning10: null,
outOfStandard: null,
proNo: null,
proNo: this.proNo,
sectionNo: null,
createUid: null,
createTime: null,
@ -266,7 +283,7 @@ export default {
monitored10: null,
forewarning10: null,
outOfStandard: null,
proNo: null,
proNo: this.proNo,
sectionNo: null,
createUid: null,
createTime: null,

6
jwtech-admin-page/src/views/building/projectInfo/projectProcess/site/record/index.vue

@ -152,6 +152,7 @@ import { listRecord, getRecord, delRecord, addRecord, updateRecord, exportRecord
export default {
name: "Record",
props: ["proNo", "proCode"],
data() {
return {
//
@ -178,6 +179,7 @@ export default {
pageSize: 10,
ids:null,
data:{
proNo: this.proNo,
number: null,
},
//
@ -225,7 +227,7 @@ export default {
exitGate: null,
exitTime: null,
stayTime: null,
proNo: null,
proNo: this.proNo,
createUid: null,
createTime: null,
updateUid: null,
@ -249,7 +251,7 @@ export default {
exitGate: null,
exitTime: null,
stayTime: null,
proNo: null,
proNo: this.proNo,
createUid: null,
createTime: null,
updateUid: null,

47
jwtech-admin-page/src/views/building/projectInfo/projectProcess/site/statistics/index.vue

@ -52,7 +52,8 @@
<el-table v-loading="loading" :data="statisticsList" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" align="center" fixed/>
<el-table-column label="序号" type="index" width="50" align="center" fixed/>
<el-table-column label="所在工区" align="center" prop="workArea" :formatter="workAreaFormat" min-width="120"/>
<el-table-column label="时间选择" align="center" prop="timeRange" :formatter="timeRangeFormat" min-width="120"/>
<el-table-column label="灌浆设备在线数" align="center" prop="onlineNumber" min-width="120"/>
<el-table-column label="灌浆部位" align="center" prop="position" min-width="120"/>
<el-table-column label="灌浆报警" align="center" prop="forewarning" min-width="120"/>
@ -90,6 +91,26 @@
<!-- 添加或修改灌浆实时状态统计信息对话框 -->
<el-dialog :title="title" :visible.sync="open" width="1200px" append-to-body :close-on-click-modal="false">
<el-form ref="form" :model="form" :rules="rules" label-width="80px">
<el-form-item label="所在工区" prop="workArea">
<el-select v-model="form.workArea" placeholder="请选择所在工区" style="width: 100%">
<el-option
v-for="dict in workAreaOptions"
:key="dict.dictValue"
:label="dict.dictLabel"
:value="dict.dictValue"
></el-option>
</el-select>
</el-form-item>
<el-form-item label="时间选择" prop="timeRange">
<el-select v-model="form.timeRange" placeholder="请选择时间" style="width: 100%">
<el-option
v-for="dict in timeRangeOptions"
:key="dict.dictValue"
:label="dict.dictLabel"
:value="dict.dictValue"
></el-option>
</el-select>
</el-form-item>
<el-form-item label="灌浆设备在线数" prop="onlineNumber">
<el-input v-model="form.onlineNumber" placeholder="请输入灌浆设备在线数" />
</el-form-item>
@ -131,6 +152,7 @@ import { listStatistics, getStatistics, delStatistics, addStatistics, updateStat
export default {
name: "Statistics",
props: ["proNo", "proCode"],
data() {
return {
//
@ -159,6 +181,7 @@ export default {
pageSize: 10,
ids:null,
data:{
proNo: this.proNo,
},
//
params: {
@ -172,7 +195,9 @@ export default {
form: {},
//
rules: {
}
},
workAreaOptions:[],
timeRangeOptions:[]
};
},
created() {
@ -180,8 +205,20 @@ export default {
this.getDicts("whether").then(response => {
this.outOfStandardOptions = response.data;
});
this.getDicts("work_area").then(response => {
this.workAreaOptions = response.data;
});
this.getDicts("time_range").then(response => {
this.timeRangeOptions = response.data;
});
},
methods: {
workAreaFormat(row, column) {
return this.selectDictLabel(this.workAreaOptions, row.workArea);
},
timeRangeFormat(row, column) {
return this.selectDictLabel(this.timeRangeOptions, row.timeRange);
},
/** 查询灌浆实时状态统计信息列表 */
getList() {
this.loading = true;
@ -214,7 +251,8 @@ export default {
createTime: null,
updateUid: null,
updateTime: null,
remark: null
remark: null,
proNo: this.proNo,
};
this.resetForm("form");
},
@ -235,7 +273,8 @@ export default {
createTime: null,
updateUid: null,
updateTime: null,
remark: null
remark: null,
proNo: this.proNo,
},
//
params: {

6
jwtech-admin-page/src/views/building/projectInfo/projectProcess/site/track/index.vue

@ -153,6 +153,7 @@ import { listTrack, getTrack, delTrack, addTrack, updateTrack, exportTrack } fro
export default {
name: "Track",
props: ["proNo", "proCode"],
data() {
return {
//
@ -179,6 +180,7 @@ export default {
pageSize: 10,
ids:null,
data:{
proNo: this.proNo,
type: null,
workArea: null,
number: null,
@ -225,7 +227,7 @@ export default {
workArea: null,
number: null,
trajectory: null,
proNo: null,
proNo: this.proNo,
createUid: null,
createTime: null,
updateUid: null,
@ -245,7 +247,7 @@ export default {
workArea: null,
number: null,
trajectory: null,
proNo: null,
proNo: this.proNo,
createUid: null,
createTime: null,
updateUid: null,

6
jwtech-admin-page/src/views/building/projectInfo/projectProcess/site/vehicleInformation/index.vue

@ -165,6 +165,7 @@ import { listVehicleInformation, getVehicleInformation, delVehicleInformation, a
export default {
name: "VehicleInformation",
props: ["proNo", "proCode"],
data() {
return {
//
@ -191,6 +192,7 @@ export default {
pageSize: 10,
ids:null,
data:{
proNo: this.proNo,
vehicleNo: null,
name: null,
},
@ -238,7 +240,7 @@ export default {
transportUse: null,
type: null,
model: null,
proNo: null,
proNo: this.proNo,
createUid: null,
createTime: null,
updateUid: null,
@ -261,7 +263,7 @@ export default {
transportUse: null,
type: null,
model: null,
proNo: null,
proNo: this.proNo,
createUid: null,
createTime: null,
updateUid: null,

2
jwtech-admin-page/vue.config.js

@ -40,7 +40,7 @@ module.exports = {
proxy: {
// detail: https://cli.vuejs.org/config/#devserver-proxy
[process.env.VUE_APP_BASE_API]: {
target: "http://192.168.3.14:18082",
target: "http://192.168.2.100:18081",
// target: "http://192.168.2.108:18080",
// target: "http://192.168.2.103:18082",
// target: "http://192.168.31.26:18082",

Loading…
Cancel
Save