From 0d0968ec2d1a39c21e15e447c4f2227f70d6a11b Mon Sep 17 00:00:00 2001
From: 张晓波 <bingbo1993@126.com>
Date: 星期一, 11 十二月 2023 10:38:37 +0800
Subject: [PATCH] Merge branch 'master' of http://111.30.93.211:10101/r/supipe
---
web/src/views/GoodManage/components/MixingExpend.vue | 19 +
web/src/views/SecureManage/RiskGrad/components/TaskPunchcard.vue | 21 +
web/src/views/GoodManage/MixingScreen.vue | 14
web/src/views/SecureManage/RiskGrad/components/PollingTask.vue | 13 +
hd/pipe/materialsManage/src/main/java/com/thhy/materials/modules/biz/concret/entity/dto/PieceDto.java | 3
web/src/assets/mixing/container_90.png | 0
hd/pipe/materialsManage/src/main/java/com/thhy/materials/modules/biz/concret/service/impl/TMaterialReleaseServiceImpl.java | 2
web/src/views/MixingInfo/mixing.vue | 2
web/src/assets/mixing/container_40.png | 0
web/src/assets/mixing/container_60.png | 0
web/src/views/SecureManage/BroadcastSystem.vue | 351 +++++++++++++++++++++++++++++
web/src/assets/mixing/container_10.png | 0
web/src/assets/mixing/container_20.png | 0
web/src/api/modules/safety.js | 17 +
web/src/assets/mixing/container_80.png | 0
web/src/views/MixingInfo/messageInfo.vue | 140 ++++++-----
hd/pipe/materialsManage/src/main/java/com/thhy/materials/modules/biz/concret/mapper/TMaterialReleaseMappper.java | 2
web/src/views/SecureManage/RiskGrad/AreaPolling.vue | 13 +
hd/pipe/materialsManage/src/main/resources/mapping/TMaterialReleaseMapper.xml | 14
hd/pipe/materialsManage/src/main/resources/mapping/SysSteelRecordMapper.xml | 2
web/src/assets/mixing/container_100.png | 0
web/src/views/GoodManage/MixRatioScreen.vue | 55 ++--
22 files changed, 557 insertions(+), 111 deletions(-)
diff --git a/hd/pipe/materialsManage/src/main/java/com/thhy/materials/modules/biz/concret/entity/dto/PieceDto.java b/hd/pipe/materialsManage/src/main/java/com/thhy/materials/modules/biz/concret/entity/dto/PieceDto.java
index f5bc41f..970c692 100644
--- a/hd/pipe/materialsManage/src/main/java/com/thhy/materials/modules/biz/concret/entity/dto/PieceDto.java
+++ b/hd/pipe/materialsManage/src/main/java/com/thhy/materials/modules/biz/concret/entity/dto/PieceDto.java
@@ -11,6 +11,9 @@
private Integer byId;
+ private String bldTim;
+
+ private Integer types;
private List<TRawMaterial> rawMaterials;
diff --git a/hd/pipe/materialsManage/src/main/java/com/thhy/materials/modules/biz/concret/mapper/TMaterialReleaseMappper.java b/hd/pipe/materialsManage/src/main/java/com/thhy/materials/modules/biz/concret/mapper/TMaterialReleaseMappper.java
index 1896449..574b207 100644
--- a/hd/pipe/materialsManage/src/main/java/com/thhy/materials/modules/biz/concret/mapper/TMaterialReleaseMappper.java
+++ b/hd/pipe/materialsManage/src/main/java/com/thhy/materials/modules/biz/concret/mapper/TMaterialReleaseMappper.java
@@ -26,7 +26,7 @@
List<PieceDto> pieceList(HashMap<String, Object> values);
- List<TRawMaterial> materialRew(Integer byId);
+ List<TRawMaterial> materialRew(@Param("byId") Integer byId,@Param("types")Integer types);
void mixingInsert(@Idkey("mixingId") Map<String,Object> mixing);
diff --git a/hd/pipe/materialsManage/src/main/java/com/thhy/materials/modules/biz/concret/service/impl/TMaterialReleaseServiceImpl.java b/hd/pipe/materialsManage/src/main/java/com/thhy/materials/modules/biz/concret/service/impl/TMaterialReleaseServiceImpl.java
index fa524be..778f6af 100644
--- a/hd/pipe/materialsManage/src/main/java/com/thhy/materials/modules/biz/concret/service/impl/TMaterialReleaseServiceImpl.java
+++ b/hd/pipe/materialsManage/src/main/java/com/thhy/materials/modules/biz/concret/service/impl/TMaterialReleaseServiceImpl.java
@@ -214,7 +214,7 @@
PageHelper.startPage(pageNum,pageSize);
List<PieceDto> pieceDtos = materialReleaseMappper.pieceList(values);
for (PieceDto pieceDto : pieceDtos){
- List<TRawMaterial> rawMaterials = materialReleaseMappper.materialRew(pieceDto.getById());
+ List<TRawMaterial> rawMaterials = materialReleaseMappper.materialRew(pieceDto.getById(),pieceDto.getTypes());
pieceDto.setRawMaterials(rawMaterials);
}
PageInfo<PieceDto> pieceDtoPageInfo = new PageInfo<>(pieceDtos);
diff --git a/hd/pipe/materialsManage/src/main/resources/mapping/SysSteelRecordMapper.xml b/hd/pipe/materialsManage/src/main/resources/mapping/SysSteelRecordMapper.xml
index 6848161..88e85c9 100644
--- a/hd/pipe/materialsManage/src/main/resources/mapping/SysSteelRecordMapper.xml
+++ b/hd/pipe/materialsManage/src/main/resources/mapping/SysSteelRecordMapper.xml
@@ -190,7 +190,7 @@
where ssr.is_use=1
and ssr.stock_type=2
and ss.company_id=#{companyId}
- order by ssr.create_time desc
+ order by ssr.create_time desc limit 0,10
</select>
<select id="recordInfo" parameterType="java.lang.String" resultType="com.thhy.materials.modules.biz.concret.entity.SysSteelRecord">
select
diff --git a/hd/pipe/materialsManage/src/main/resources/mapping/TMaterialReleaseMapper.xml b/hd/pipe/materialsManage/src/main/resources/mapping/TMaterialReleaseMapper.xml
index 5ceb27c..179b10e 100644
--- a/hd/pipe/materialsManage/src/main/resources/mapping/TMaterialReleaseMapper.xml
+++ b/hd/pipe/materialsManage/src/main/resources/mapping/TMaterialReleaseMapper.xml
@@ -147,10 +147,16 @@
where material_release_id=#{materialReleaseId}
</update>
<select id="pieceList" resultType="com.thhy.materials.modules.biz.concret.entity.dto.PieceDto">
- select by_id as byId from t_piece
+ select by_id as byId,
+ BldTim as bldTim,
+ types as types
+ from t_piece
where 1=1
<if test="byId!=null and byId!='' ">
and by_id=#{byId}
+ </if>
+ <if test="types!=null and types!=''">
+ and types=#{types}
</if>
ORDER BY by_id desc
</select>
@@ -161,7 +167,7 @@
PlanAmnt as planamnt,
FactAmnt as factamnt
from t_raw_material
- where Piece=#{byId}
+ where Piece=#{byId} and types=#{types}
</select>
<insert id="mixingInsert" >
insert into t_mixing
@@ -433,7 +439,7 @@
<select id="mixingConsumes" resultType="com.thhy.materials.modules.biz.concret.entity.TMixingConsume">
select
mc.mixing_consume_id as mixingConsumeId,
- sd.dict_name as dictName,
+ -- sd.dict_name as dictName,
mc.dict_id as dictId,
mc.spec as spec,
mc.manufacturer as manufacturer,
@@ -447,7 +453,7 @@
mc.create_time as createTime,
mc.construction_unit as constructionUnit
from t_mixing_consume mc
- left join sys_dict sd on mc.dict_id=sd.dict_id
+ -- left join sys_dict sd on mc.dict_id=sd.dict_id
where mc.mixing_signboard_id=#{mixingSignboardId} and mc.star=#{star}
<!-- <if test="strTime!=null and strTime!='' and endTime !=null and endTime!=''">-->
<!-- and mc.create_time between #{strTime} and #{endTime}-->
diff --git a/web/src/api/modules/safety.js b/web/src/api/modules/safety.js
index 2fa8af7..28e61c6 100644
--- a/web/src/api/modules/safety.js
+++ b/web/src/api/modules/safety.js
@@ -362,4 +362,21 @@
responseType: 'blob',
data: params
}),
+
+ /**
+ * 广播文件上传模块
+ */
+ //查询广播文件列表
+ searchBoardLists: (params) =>
+ axios.post('/secure/integralAccount/selectSafeIntegralPageList', params),
+ //查询所有区域
+ getAreaLists: (params) =>
+ axios.post('/screen/audio/groups', params),
+ //上传文件添加/修改
+ addAreaInfos: (params) =>
+ axios.post('/screen/audio/addFile', params),
+ //上传文件详情
+ detailsAreaInfos: (params) =>
+ axios.post('/screen/audio/groupInfo', params),
+
}
\ No newline at end of file
diff --git a/web/src/assets/mixing/container_10.png b/web/src/assets/mixing/container_10.png
index 15291b0..025f1e4 100644
--- a/web/src/assets/mixing/container_10.png
+++ b/web/src/assets/mixing/container_10.png
Binary files differ
diff --git a/web/src/assets/mixing/container_100.png b/web/src/assets/mixing/container_100.png
index 5b73dda..b861079 100644
--- a/web/src/assets/mixing/container_100.png
+++ b/web/src/assets/mixing/container_100.png
Binary files differ
diff --git a/web/src/assets/mixing/container_20.png b/web/src/assets/mixing/container_20.png
index 2bbe0dc..a0101dd 100644
--- a/web/src/assets/mixing/container_20.png
+++ b/web/src/assets/mixing/container_20.png
Binary files differ
diff --git a/web/src/assets/mixing/container_40.png b/web/src/assets/mixing/container_40.png
index d2f52d3..0f410f2 100644
--- a/web/src/assets/mixing/container_40.png
+++ b/web/src/assets/mixing/container_40.png
Binary files differ
diff --git a/web/src/assets/mixing/container_60.png b/web/src/assets/mixing/container_60.png
index 5ced4a7..70422d7 100644
--- a/web/src/assets/mixing/container_60.png
+++ b/web/src/assets/mixing/container_60.png
Binary files differ
diff --git a/web/src/assets/mixing/container_80.png b/web/src/assets/mixing/container_80.png
index 38348d1..5c06d53 100644
--- a/web/src/assets/mixing/container_80.png
+++ b/web/src/assets/mixing/container_80.png
Binary files differ
diff --git a/web/src/assets/mixing/container_90.png b/web/src/assets/mixing/container_90.png
index 47ee2ac..5c06d53 100644
--- a/web/src/assets/mixing/container_90.png
+++ b/web/src/assets/mixing/container_90.png
Binary files differ
diff --git a/web/src/views/GoodManage/MixRatioScreen.vue b/web/src/views/GoodManage/MixRatioScreen.vue
index af1f047..177c8f3 100644
--- a/web/src/views/GoodManage/MixRatioScreen.vue
+++ b/web/src/views/GoodManage/MixRatioScreen.vue
@@ -78,8 +78,8 @@
<el-dialog class="prop_dialog" width="80%" v-if="isRenderDialog" :title="dialogTitle" :visible.sync="asyncVisible"
@close="closeDialog">
<el-form ref="ruleForm" class="rule_form" :model="ruleForm" :rules="rules">
- <el-form-item label="拌合站屏:" prop="mixingSignboardId">
- <el-select size="mini" v-model="ruleForm.mixingSignboardId" :disabled="isUpdate" placeholder="请选择拌合站屏"
+ <el-form-item label="拌和站屏:" prop="mixingSignboardId">
+ <el-select size="mini" v-model="ruleForm.mixingSignboardId" :disabled="isUpdate" placeholder="请选择拌和站屏"
@change="changeSelectForm($event)">
<el-option v-for="item in selects.screenNames" :key="item.value" :label="item.label"
:value="item.value"></el-option>
@@ -110,10 +110,11 @@
<div style="display: flex;">
<div style="margin-right: 10px;" v-for="(item, index) in ruleForm.infos " :key="index">
<el-form-item :label="index === 0 ? '材料名称' : ''" :prop="`infos.${index}.dictId`">
- <el-select v-model="item.dictId" size="mini" placeholder="请选择材料名称">
+ <!-- <el-select v-model="item.dictId" size="mini" placeholder="请选择材料名称">
<el-option v-for="item in selects.materials" :key="item.value" :label="item.label"
:value="item.value"></el-option>
- </el-select>
+ </el-select> -->
+ <el-input v-model="item.dictId" size="mini" placeholder="请输入" clearable></el-input>
</el-form-item>
<el-form-item :label="index === 0 ? '规格型号' : ''" :prop="`infos.${index}.spec`">
<el-input v-model="item.spec" size="mini" placeholder="请输入" clearable></el-input>
@@ -153,7 +154,7 @@
times: [], // 时间范围
selects: {
screenNames: [], // 配合比屏
- materials: [] // 材料名称
+ // materials: [] // 材料名称[先改成输入,,字典表材料不匹配]
}, // 下拉框状态选择汇总
tableData: [{
inType: '', // 录入方式
@@ -166,7 +167,7 @@
construction: '', // 施工部位
mixingConsumeId: '', // 每个材料id
dataLists: [
- {name: '材料名称', type: 'dictName', value: []}, // 材料名称
+ {name: '材料名称', type: 'dictId', value: []}, // 材料名称
{name: '规格型号', type: 'spec', value: []}, // 规格型号
{name: '生产厂家', type: 'manufacturer', value: []}, // 生产厂家
{name: '材料含水率(%)', type: 'watFull', value: []}, // 含水率
@@ -177,7 +178,7 @@
}],
ruleForm: {
mixingSignboardId: '', // 屏名称id
- proName: '', // 工程名称 [拌合站屏下拉框联动]
+ proName: '', // 工程名称 [拌和站屏下拉框联动]
constructionUnit: '', // 施工单位
saveStamp: '', // 施工日期
construction: '', // 施工部位
@@ -194,7 +195,7 @@
pageNum: 1,
pageSize: 9999,
// stata: '', // 录入方式
- mixingSignboardId: '', // 拌合站屏名称
+ mixingSignboardId: '', // 拌和站屏名称
strTime: '',
endTime: '',
},
@@ -220,7 +221,7 @@
2: '手动',
}
this.rules = {
- mixingSignboardId: [{required: true, message: '请选择拌合站屏', trigger: 'change'}],
+ mixingSignboardId: [{required: true, message: '请选择拌和站屏', trigger: 'change'}],
proName: [{required: true, message: '请输入工程名称', trigger: 'change'}],
constructionUnit: [{required: true, message: '请输入工程名称', trigger: 'blur'}],
saveStamp: [{required: true, message: '请输入施工日期', trigger: 'blur'}],
@@ -252,7 +253,7 @@
construction: '', // 施工部位
mixingConsumeId: '', // 每个材料id
dataLists: [
- {name: '材料名称', type: 'dictName', value: []}, // 材料名称
+ {name: '材料名称', type: 'dictId', value: []}, // 材料名称
{name: '规格型号', type: 'spec', value: []}, // 规格型号
{name: '生产厂家', type: 'manufacturer', value: []}, // 生产厂家
{name: '材料含水率(%)', type: 'watFull', value: []}, // 含水率
@@ -307,18 +308,18 @@
})
},
//获取字典表材料名称
- async getDicFilteredData() {
- let params = {pageNum: 1, pageSize: 100000000}
- let {data} = await this.$api.Dictionary.searchDictionary(params)
- data.list.forEach(item => {
- if (item.dictType === 'pipe_materials') {
- this.selects.materials.push({
- label: item.dictName,
- value: item.dictId,
- })
- }
- })
- },
+ // async getDicFilteredData() {
+ // let params = {pageNum: 1, pageSize: 100000000}
+ // let {data} = await this.$api.Dictionary.searchDictionary(params)
+ // data.list.forEach(item => {
+ // if (item.dictType === 'pipe_materials') {
+ // this.selects.materials.push({
+ // label: item.dictName,
+ // value: item.dictId,
+ // })
+ // }
+ // })
+ // },
// 获取配比屏名称
async getScreenNames() {
const params = {pageNum: 1, pageSize: 9999}
@@ -351,9 +352,9 @@
if (!this.isRenderDialog) {
this.isRenderDialog = true
}
- if (!this.selects.materials.length) {
- await this.getDicFilteredData()
- }
+ // if (!this.selects.materials.length) {
+ // await this.getDicFilteredData()
+ // }
this.asyncVisible = true
this.$nextTick(() => {
resolve()
@@ -372,7 +373,6 @@
this.submitMode = 'update'
this.showDialog().then(() => {
const {mixingSignboardId, proName, constructionUnit, saveStamp, construction, dataListFlat} = this.tableData[i]
- console.log(constructionUnit)
this.ruleForm = Object.assign(this.ruleForm, {
mixingSignboardId,
proName,
@@ -543,8 +543,11 @@
justify-content: center;
align-items: center;
flex: 1;
+ padding: 0 4px;
+ line-height: 24px;
margin: -1px -1px -1px 0;
border: 1px solid #01B3EF;
+ word-break: break-all;
}
}
}
diff --git a/web/src/views/GoodManage/MixingScreen.vue b/web/src/views/GoodManage/MixingScreen.vue
index 0b2382f..38ccb70 100644
--- a/web/src/views/GoodManage/MixingScreen.vue
+++ b/web/src/views/GoodManage/MixingScreen.vue
@@ -1,4 +1,4 @@
-<!-- 物资管理 ==> 拌合站屏管理-->
+<!-- 物资管理 ==> 拌和站屏管理-->
<template>
<div class="main">
<div class="main_header">
@@ -87,8 +87,8 @@
<el-dialog class="prop_dialog" v-if="isRenderDialog" :title="dialogTitle" :visible.sync="asyncVisible"
@close="closeDialog">
<el-form ref="ruleForm" class="rule_form" :model="ruleForm" :rules="rules" label-width="auto">
- <el-form-item label="拌合站屏:" prop="name">
- <el-select size="mini" v-model="ruleForm.name" :disabled="isUpdate" placeholder="请选择拌合站屏"
+ <el-form-item label="拌和站屏:" prop="name">
+ <el-select size="mini" v-model="ruleForm.name" :disabled="isUpdate" placeholder="请选择拌和站屏"
@change="changeSelectForm($event)">
<el-option v-for="item in selects.screenNames" :key="item.value" :label="item.label"
:value="item.value"></el-option>
@@ -149,8 +149,8 @@
submitMode: '', // add update
dataLists: [], // [[],[],[]]
selects: {
- screenNames: [], // 拌合站屏
- screenNameIds: {}, // 拌合站屏id map
+ screenNames: [], // 拌和站屏
+ screenNameIds: {}, // 拌和站屏id map
}, // 下拉框状态选择汇总
ruleForm: {
name: '', // 下拉框屏名称
@@ -187,7 +187,7 @@
pageNum: 1,
pageSize: 9999,
stata: '', // 录入方式
- types: '', // 拌合站屏
+ types: '', // 拌和站屏
strTime: '',
endTime: '',
},
@@ -203,7 +203,7 @@
},
beforeCreate() {
this.rules = {
- name: [{required: true, message: '请选择拌合站屏', trigger: 'change'}],
+ name: [{required: true, message: '请选择拌和站屏', trigger: 'change'}],
infos: [{
num: [{required: true, message: '请输入', trigger: 'blur'}],
spec: [{required: true, message: '请输入', trigger: 'blur'}],
diff --git a/web/src/views/GoodManage/components/MixingExpend.vue b/web/src/views/GoodManage/components/MixingExpend.vue
index 20d0934..2aa5da8 100644
--- a/web/src/views/GoodManage/components/MixingExpend.vue
+++ b/web/src/views/GoodManage/components/MixingExpend.vue
@@ -15,6 +15,14 @@
<div class="content_tables_headers">
<div class="tables_headers_title">盘次:</div>
<div class="tables_headers_datas">{{item.byId}}</div>
+ <div style="display: flex; margin-left: 30px">
+ <div class="tables_headers_title">搅拌时间:</div>
+ <div class="tables_headers_datas">{{item.bldTim}}</div>
+ </div>
+ <div style="display: flex; margin-left: 30px">
+ <div class="tables_headers_title">搅拌站:</div>
+ <div class="tables_headers_datas">{{item.types == 1 ? '二号' : '一号'}}</div>
+ </div>
</div>
<div class="content_tables_alone">
<el-table
@@ -119,7 +127,16 @@
this.$api.Materials.mixingExpendLists(params).then((res) => {
if(res.statusMsg === 'ok') {
this.total = res.data.total;
- this.tablesList = res.data.list;
+ this.tablesList = res.data.list.map(item => {
+ let dataTime = item.bldTim.split(',');
+ dataTime = dataTime.map(time => {
+ time = time.substring(0, 19);
+ return time;
+ })
+ item.bldTim = dataTime.join();
+ // item.bldTim
+ return item;
+ });
}
this.loading = false;
})
diff --git a/web/src/views/MixingInfo/messageInfo.vue b/web/src/views/MixingInfo/messageInfo.vue
index dd43d75..fb8fc0a 100644
--- a/web/src/views/MixingInfo/messageInfo.vue
+++ b/web/src/views/MixingInfo/messageInfo.vue
@@ -1,39 +1,47 @@
<template>
<div class="mixing_index">
<div class="mixing_header">
- <span>中铁十四局通甬站前I标管片场拌合站</span>
+ <span>中铁十四局通甬站前I标管片场拌和站</span>
</div>
<div class="mixing_main">
<div class="mixing_left">
<div class="mixing_left_num">
- <div class="">{{mixingList&&mixingList.tableNum}}</div>
+ <div class="">{{ mixingList.tableNum }}</div>
</div>
- <div class="mixing_left_name">{{mixingList&&mixingList.materialName}}</div>
+ <div class="mixing_left_name">{{ mixingList.materialName || '' }}</div>
</div>
<div class="mixing_right">
<div class="mixing_rows">
<div class="mixing_rows_titles">产地名称:</div>
- <div class="mixing_rows_datas">{{mixingList&&mixingList.nameOfOrigin}}</div>
+ <div class="mixing_rows_datas">{{ mixingList.nameOfOrigin || '' }}</div>
</div>
<div class="mixing_rows">
<div class="mixing_rows_titles">进场数量:</div>
- <div class="mixing_rows_datas">{{mixingList&&mixingList.incomingQuantity}} t</div>
+ <div class="mixing_rows_datas">{{ mixingList.incomingQuantity || '' }} t</div>
</div>
<div class="mixing_rows">
<div class="mixing_rows_titles">进场日期:</div>
- <div class="mixing_rows_datas">{{mixingList&&mixingList.inTime}}</div>
+ <div class="mixing_rows_datas">{{ mixingList.inTime || '' }}</div>
</div>
<div class="mixing_rows">
<div class="mixing_rows_titles">检验日期:</div>
- <div class="mixing_rows_datas">{{mixingList&&mixingList.inspectionDate}}</div>
+ <div class="mixing_rows_datas">{{ mixingList.inspectionDate || '' }}</div>
</div>
<div class="mixing_rows">
<div class="mixing_rows_titles">检验状态:</div>
- <div class="mixing_rows_datas" :class="{'standardStyle':mixingList.status===1,'notStandardStyle':mixingList.status!==1}">{{mixingList&&mixingList.status===1?'合格':mixingList&&mixingList.status===2?'待检':''}}</div>
+ <div class="mixing_rows_datas"
+ :class="{ 'standardStyle': mixingList.status === 1, 'notStandardStyle': mixingList.status !== 1 }">
+ {{ mixingList.status === 1 ? '合格' : mixingList.status === 2 ? '待检' : ''
+ }}</div>
</div>
<div class="mixing_rows">
<div class="mixing_rows_titles">报告编号:</div>
- <div class="mixing_rows_datas">{{mixingList&&mixingList.reportNumber}}</div>
+ <div class="mixing_rows_datas small_size">
+ {{
+ mixingList.reportNumber &&
+ mixingList.reportNumber.replace(/\s/g, '\n')
+ }}
+ </div>
</div>
</div>
</div>
@@ -41,21 +49,21 @@
</template>
<script>
export default {
- data(){
- return{
- timer:null,//定时器
- mixingList:null,//展示数据
+ data() {
+ return {
+ timer: null,//定时器
+ mixingList: {},//展示数据
}
},
- created(){
+ created() {
this.searchMixingInfos()
},
- mounted(){
+ mounted() {
const that = this;
// that.searchMixingInfos()
- that.timer = setInterval(()=>{
+ that.timer = setInterval(() => {
that.searchMixingInfos()
- },60000 * 10)
+ }, 60000 * 10)
let width = document.getElementsByClassName('mixing_index')[0].clientWidth
let $html = document.getElementsByTagName('html')[0]
@@ -71,15 +79,15 @@
clearInterval(this.timer);
this.timer = null;
},
- methods:{
- searchMixingInfos(){
- let params={
- tableNum:window.location.href.split('/')[5].split('=')[1]
+ methods: {
+ searchMixingInfos() {
+ let params = {
+ tableNum: window.location.href.split('/')[5].split('=')[1]
}
- this.$api.Infos.showHmixings(params).then(res=>{
- if(res.statusMsg==='ok'){
- this.mixingList = res.data===null?[]:res.data
- }else{
+ this.$api.Infos.showHmixings(params).then(res => {
+ if (res.statusMsg === 'ok' && res.data) {
+ this.mixingList = res.data
+ } else {
this.$message.warning('请检查网络或联系管理员!!!')
}
})
@@ -88,27 +96,26 @@
}
</script>
<style scoped lang="scss">
-.mixing_index{
+.mixing_index {
display: flex;
flex-direction: column;
width: 100%;
height: 100%;
- padding: 5px;
+ padding: 0.4rem;
background: url("../../assets/mixing/mixing_bg3.png") no-repeat;
background-size: 100% 100%;
background-position: center center;
-
- .mixing_header{
+
+ .mixing_header {
width: 100%;
- height: 3.2rem;
+ height: 9rem;
position: relative;
- padding: 4rem;
display: flex;
justify-content: center;
align-items: center;
-
- span{
+
+ span {
position: absolute;
font-size: 5rem;
font-weight: bold;
@@ -120,25 +127,25 @@
}
}
- .mixing_main{
+ .mixing_main {
overflow: hidden;
flex: 1;
width: 100%;
height: 100%;
- padding: 6rem;
+ padding: 3rem 4rem 5rem 4rem;
display: flex;
- .mixing_left{
+ .mixing_left {
display: flex;
flex-direction: column;
- width: 45%;
- margin-right: 15px;
+ flex: 1;
+ margin-right: 3rem;
display: flex;
flex-direction: column;
align-items: center;
justify-content: space-between;
- .mixing_left_num{
+ .mixing_left_num {
position: relative;
overflow: hidden;
padding: 1rem;
@@ -146,7 +153,8 @@
width: 100%;
background: url("../../assets/mixing/mixing_left_bg.png") no-repeat;
background-size: 100% 100%;
- >div{
+
+ > div {
display: flex;
justify-content: center;
align-items: center;
@@ -158,51 +166,63 @@
background-color: rgba(37, 129, 255, 0.29);
}
}
- .mixing_left_name{
+
+ .mixing_left_name {
flex: 1;
width: 100%;
display: flex;
justify-content: center;
align-items: center;
- text-shadow: 5px 7px 0px rgba(0,66,255,0.2), 16px 23px 16px rgba(14,19,48,0.15);
- background: linear-gradient(to bottom,#FFFFFF 0%,rgba(140, 186, 255, 0.88) 100%);
+ text-shadow: 5px 7px 0px rgba(0, 66, 255, 0.2), 16px 23px 16px rgba(14, 19, 48, 0.15);
+ background: linear-gradient(to bottom, #FFFFFF 0%, rgba(140, 186, 255, 0.88) 100%);
background-clip: text;
-webkit-background-clip: text;
- text-fill-color: transparent;
-webkit-text-fill-color: transparent;
color: #FFFFFF;
font-size: 9rem;
font-weight: 500;
}
}
- .mixing_right{
- width: calc(55% - 100px);
- background: linear-gradient(to right,#0D3776 0%,#041A40 100%);
+
+ .mixing_right {
+ flex: 1.2;
+ background: linear-gradient(to right, #0D3776 0%, #041A40 100%);
display: flex;
flex-direction: column;
- justify-content: space-between;
- .mixing_rows{
- padding: 10px 20px;
+ justify-content: space-around;
+ padding: 2rem 4rem;
+
+ .mixing_rows {
+ overflow: hidden;
display: flex;
- .mixing_rows_titles{
- flex: none;
+
+ .mixing_rows_titles {
color: #FFFFFF;
font-weight: 400;
font-size: 5rem;
}
- .mixing_rows_datas{
- flex: none;
+
+ .mixing_rows_datas {
+ overflow: hidden;
+ flex: 1;
color: #FFFFFF;
font-weight: 400;
font-size: 5rem;
+ white-space: pre-wrap;
+
+ &.small_size {
+ font-size: 4.3rem;
+ }
}
- .standardStyle{
- color:#15EF48;
- font-size:8rem;
+
+ .standardStyle {
+ color: #15EF48;
+ font-size: 8rem;
}
- .notStandardStyle{
- color:rgba(255, 102, 0, 1);
- font-size:8rem;
+
+ .notStandardStyle {
+ color: rgba(255, 102, 0, 1);
+ font-size: 8rem;
}
}
}
diff --git a/web/src/views/MixingInfo/mixing.vue b/web/src/views/MixingInfo/mixing.vue
index b6801dd..ab40a78 100644
--- a/web/src/views/MixingInfo/mixing.vue
+++ b/web/src/views/MixingInfo/mixing.vue
@@ -263,7 +263,7 @@
> p {
position: absolute;
left: 50%;
- top: 18%;
+ top: 9%;
font-size: 0.7rem;
white-space: nowrap;
transform: translate(-50%, -50%);
diff --git a/web/src/views/SecureManage/BroadcastSystem.vue b/web/src/views/SecureManage/BroadcastSystem.vue
new file mode 100644
index 0000000..4f44b86
--- /dev/null
+++ b/web/src/views/SecureManage/BroadcastSystem.vue
@@ -0,0 +1,351 @@
+<template>
+ <div class="main">
+ <div class="main_header">
+ <div class="header_item">
+ <span class="header_label">区域名称:</span>
+ <el-select v-model="search.groupId" placeholder="请选择区域名称" clearable>
+ <el-option
+ v-for="item in optionAreaList"
+ :key="item.id"
+ :label="item.groupName"
+ :value="item.id">
+ </el-option>
+ </el-select>
+ </div>
+ <div class="header_item">
+ <el-button icon="el-icon-search" v-if="showButton('search')" @click="searchButtonInfo(true)">查询</el-button>
+ <!-- <el-button class="search_btn" icon="el-icon-plus" v-if="showButton('insert')" @click="insertProp">新增</el-button> -->
+ </div>
+ </div>
+ <div class="main_content">
+ <el-table
+ v-loading="loading"
+ :data="dataList"
+ height="100%">
+ <el-table-column align="center" label="序号" width="60">
+ <template #default="scope">
+ <span>{{(pageNum - 1) * pageSize + scope.$index + 1}}</span>
+ </template>
+ </el-table-column>
+ <el-table-column prop="groupName" label="区域名称" align="center"></el-table-column>
+ <!-- <el-table-column prop="dictName" label="上传文件" align="center"></el-table-column> -->
+ <el-table-column label="操作" align="center" width="200">
+ <template #default="{ row }">
+ <el-button class="table_btn" size="mini" v-if="showButton('update')" @click="updateProp(row)">修改</el-button>
+ <!-- <el-button class="delete_btn" size="mini" v-if="showButton('delete')" @click="deleteInfo(row)">删除</el-button> -->
+ </template>
+ </el-table-column>
+ </el-table>
+ </div>
+ <!-- <div class="main_footer">
+ <el-pagination
+ background
+ @current-change="changePageNum"
+ @size-change="changePageSize"
+ :current-page="pageNum"
+ :page-sizes="[10, 20, 50, 100]"
+ :page-size="pageSize"
+ layout="total, sizes, prev, pager, next, jumper"
+ :total="total">
+ </el-pagination>
+ </div> -->
+ <el-dialog
+ class="prop_dialog"
+ :title="asyncTitle ? '新增' : '修改'"
+ :close-on-click-modal="false"
+ :visible.sync="asyncVisible"
+ width="55%">
+ <el-form ref="ruleForm" :model="ruleForm" :rules="rules" label-width="auto" class="rule_form">
+ <el-form-item label="区域名称:" prop="groupId">
+ <el-select v-model="ruleForm.groupId" placeholder="请选择区域名称">
+ <el-option
+ v-for="item in optionAreaList"
+ :key="item.id"
+ :label="item.groupName"
+ :value="item.id">
+ </el-option>
+ </el-select>
+ </el-form-item>
+ <el-form-item label="上传文件:" >
+ <div class="upload_index">
+ <div class="upload_text">
+ <el-upload
+ class="upload-demo"
+ action=""
+ :multiple="false"
+ :http-request="httpRequest"
+ :show-file-list="false"
+ :file-list="fileList">
+ <el-button type="text" :size="size">上传文件</el-button>
+ </el-upload>
+ </div>
+ <div class="upload_tables">
+ <el-table
+ v-loading="loadingUpload"
+ :data="fileList"
+ height="100%">
+ <el-table-column prop="name" label="文件" align="center"></el-table-column>
+ <el-table-column label="操作" align="center">
+ <template #default="{ row }">
+ <el-button class="delete_btn" size="mini" v-if="showButton('delete')" @click="deleteFiles(row)">删除</el-button>
+ </template>
+ </el-table-column>
+ <el-table-column label="是否默认播放" align="center">
+ <template #default="{ row }">
+ <el-radio v-model="row.defaults" :label="1">是</el-radio>
+ <el-radio v-model="row.defaults" :label="2">否</el-radio>
+ </template>
+ </el-table-column>
+ </el-table>
+ </div>
+ </div>
+ </el-form-item>
+ </el-form>
+ <div slot="footer">
+ <el-button @click="asyncVisible = false">取 消</el-button>
+ <el-button class="submit_btn" @click="asyncTitle ? submitInsert() : submitUpdate()">提 交</el-button>
+ </div>
+ </el-dialog>
+ </div>
+</template>
+
+<script>
+import { buttonPinia } from '../../pinia/index';
+import { throttle, changeSize } from '../../plugins/public'; // 导入节流、动态切换组件尺寸方法
+ export default {
+ data() {
+ return {
+ size: changeSize(), // 组件尺寸
+ pageNum: 1,
+ pageSize: 10,
+ search:{},//查询条件
+ total: 0,
+ loading: false,
+ loadingUpload:false,
+ dataList: [], //广播文件上传信息列表
+ asyncTitle: true, // 对话框title 新增:true 修改:false
+ asyncVisible: false, // 添加 修改对话框
+ ruleForm: {
+ }, // 按钮表单
+ rules: {
+ groupId: [{
+ required: true,
+ message: '请选择区域',
+ trigger: 'blur'
+ }],
+ },
+ optionAreaList:[],//所有区域
+ fileList:[
+ ],//上传文件
+ }
+ },
+ watch: {
+ asyncVisible(bol) {
+ if(!bol) {
+ this.ruleForm = {};
+ this.$refs.ruleForm.resetFields();
+ }
+ }
+ },
+ mounted() {
+ const that = this;
+ // 根据窗口大小动态修改组件尺寸
+ window.onresize = () => {
+ that.size = changeSize();
+ }
+ that.searchButtonInfo(true);
+ that.getAllTypes()
+ },
+ methods: {
+ //获取所有区域
+ getAllTypes(){
+ let params = {
+ }
+ this.$api.Safety.getAreaLists(params).then(res=>{
+ if(res.statusMsg === 'ok'){
+ this.optionAreaList = res.data
+ }else{
+ this.$message.warning(res.statusMsg)
+ }
+ })
+ },
+ //删除上传的文件
+ deleteFiles(row){
+ this.fileList.splice(this.fileList.findIndex(item => item.ids == row.ids),1);
+ this.$message.success("删除成功!")
+ },
+ // 自定义上传事件
+ httpRequest({file}) {
+ this.functionLoading();
+ this.loadingUpload = true
+ if(file.type !=="video/mp4"){
+ this.$message.warning("请上传MP4格式的文件!!!")
+ this.loadingView.close();
+ return false
+ }
+ const formData = new FormData();
+ formData.set('file', file);
+ this.$api.System.uploadFileRequest(formData).then((res) => {
+ if(res.success) {
+ this.$message.success('上传成功!');
+ this.$nextTick(() => {
+ this.fileList.push({
+ ids: this.fileList.length + 1,
+ name:file.name,
+ defaults:2,
+ audioFile:res.data
+ })
+ })
+ } else {
+ this.$message.warning(res.statusMsg);
+ }
+ this.loadingUpload = false
+ this.loadingView.close();
+ }).catch(() => {
+ this.loadingUpload = false
+ this.loadingView.close();
+ this.$message.error('请检查网络连接后重新上传!');
+ })
+ },
+ // 等待方法
+ functionLoading() {
+ this.loadingView = this.$loading({
+ lock: true,
+ text: '请稍后...',
+ spinner: 'el-icon-loading',
+ background: 'rgba(0, 0, 0, 0.7)'
+ });
+ },
+ // 查询按钮列表信息
+ searchButtonInfo(bol) {
+ if(bol) {
+ this.pageNum = 1;
+ }
+ let params = Object.assign({},this.search,{
+ // pageNum: this.pageNum,
+ // pageSize: this.pageSize
+ })
+ this.loading = true;
+ this.$api.Safety.getAreaLists(params).then((res) => {
+ if(res.statusMsg === 'ok') {
+ // this.total = res.data.total;
+ this.dataList = res.data;
+ }
+ this.loading = false;
+ })
+ },
+ // 新增按钮信息
+ insertProp() {
+ this.asyncTitle = true;
+ this.asyncVisible = true;
+ },
+ // 修改按钮信息
+ updateProp(row) {
+ this.asyncTitle = false;
+ this.asyncVisible = true;
+ this.$api.Safety.detailsAreaInfos({groupId: row.id}).then(res=>{
+ if(res.statusMsg === 'ok'){
+ this.$set(this.ruleForm,'groupId',res.data.id)
+ this.fileList = res.data.fileList
+ let projectArr = []
+ res.data.supplierPros.forEach(item=>{
+ projectArr.push(item.proId)
+ })
+ this.$set(this.ruleForm,'proIds',projectArr)
+ }else{
+ this.$message.warning(res.statusMsg)
+ }
+ })
+ },
+ // 删除按钮信息
+ deleteInfo(row) {
+ this.$confirm("该操作将删除该信息,是否继续删除?", "提示", {
+ confirmButtonText: "确定",
+ cancelButtonText: "取消",
+ type: "warning"
+ })
+ .then(() => {
+ this.$api.Safety.deleteSupplier({supplierId: row.id})
+ .then(res => {
+ if(res.statusMsg === 'ok') {
+ this.searchButtonInfo(true);
+ this.$message.success("删除成功!");
+ } else {
+ this.$message.warning(res.statusMsg);
+ }
+ })
+ })
+ .catch(() => {
+ this.$message.warning("您已取消");
+ })
+ },
+ // 提交添加按钮信息
+ submitInsert: throttle(function() {
+ this.$refs.ruleForm.validate((valid) => {
+ if(valid) {
+ const params = Object.assign({}, this.ruleForm);
+ params.fileList = this.fileList
+ this.$api.Safety.addAreaInfos(params).then((res) => {
+ if(res.statusMsg === 'ok') {
+ this.asyncVisible = false;
+ this.searchButtonInfo(true);
+ this.$message.success('添加成功!');
+ } else {
+ this.$message.warning(res.statusMsg);
+ }
+ })
+ }
+ })
+ }, 3000),
+ // 提交修改按钮信息
+ submitUpdate: throttle(function() {
+ this.$refs.ruleForm.validate((valid) => {
+ if(valid) {
+ const params = Object.assign({}, this.ruleForm);
+ params.fileList = this.fileList
+ this.$api.Safety.addAreaInfos(params).then((res) => {
+ if(res.statusMsg === 'ok') {
+ this.asyncVisible = false;
+ this.searchButtonInfo(true);
+ this.$message.success('修改成功!');
+ } else {
+ this.$message.warning(res.statusMsg);
+ }
+ })
+ }
+ })
+ }, 3000),
+ // 判断按钮权限信息
+ showButton(str) {
+ const pinia = buttonPinia();
+ return pinia.$state.buttonInfo.includes(str);
+ },
+ // 切换页数
+ changePageNum(page) {
+ this.pageNum = page;
+ this.searchButtonInfo();
+ },
+ // 切换每页条数
+ changePageSize(size) {
+ this.pageSize = size;
+ this.searchButtonInfo();
+ }
+ }
+ }
+</script>
+
+<style lang="scss" scoped>
+@import '../../style/layout-main.scss';
+.upload_index{
+ width: 100%;
+ display: flex;
+ flex-direction: column;
+ .upload_text{
+ display: flex;
+ justify-content: flex-end;
+ }
+ .upload_tables{
+ height: 200px;
+ }
+}
+</style>
\ No newline at end of file
diff --git a/web/src/views/SecureManage/RiskGrad/AreaPolling.vue b/web/src/views/SecureManage/RiskGrad/AreaPolling.vue
index 3a0ed7f..61cee9b 100644
--- a/web/src/views/SecureManage/RiskGrad/AreaPolling.vue
+++ b/web/src/views/SecureManage/RiskGrad/AreaPolling.vue
@@ -7,7 +7,9 @@
<el-tab-pane label="任务打卡" name="second"></el-tab-pane>
</el-tabs>
</div>
- <component :is="cpns[activeName]"></component>
+ <div class="content">
+ <component :is="cpns[activeName]"></component>
+ </div>
</div>
</template>
<script>
@@ -32,4 +34,13 @@
<style lang="scss" scoped>
@import '@/style/layout-main.scss';
+
+.main {
+ display: flex;
+
+ .content {
+ overflow: hidden;
+ flex: 1;
+ }
+}
</style>
\ No newline at end of file
diff --git a/web/src/views/SecureManage/RiskGrad/components/PollingTask.vue b/web/src/views/SecureManage/RiskGrad/components/PollingTask.vue
index e02fce3..0f171c6 100644
--- a/web/src/views/SecureManage/RiskGrad/components/PollingTask.vue
+++ b/web/src/views/SecureManage/RiskGrad/components/PollingTask.vue
@@ -1,6 +1,6 @@
<!-- 安全管理 ==> 风险分级管控 => 区域巡检(巡检任务)-->
<template>
- <div>
+ <div class="wrap">
<div class="main_header">
<div class="header_item">
<span class="header_label">巡检任务:</span>
@@ -385,6 +385,17 @@
<style lang="scss" scoped>
@import '@/style/layout-main.scss';
+.wrap {
+ display: flex;
+ flex-direction: column;
+ height: 100%;
+
+ .main_content {
+ overflow: hidden;
+ flex: 1;
+ }
+}
+
.divider {
position: relative;
margin-bottom: 30px;
diff --git a/web/src/views/SecureManage/RiskGrad/components/TaskPunchcard.vue b/web/src/views/SecureManage/RiskGrad/components/TaskPunchcard.vue
index 28afc51..50c2238 100644
--- a/web/src/views/SecureManage/RiskGrad/components/TaskPunchcard.vue
+++ b/web/src/views/SecureManage/RiskGrad/components/TaskPunchcard.vue
@@ -1,6 +1,6 @@
<!-- 安全管理 ==> 风险分级管控 => 区域巡检(任务打卡)-->
<template>
- <div>
+ <div class="wrap">
<div class="main_header">
<div class="header_item">
<span class="header_label">巡检人:</span>
@@ -8,7 +8,7 @@
</div>
<div class="header_item">
<span class="header_label">巡检状态:</span>
- <el-select size="mini" v-model="queryInfo.status">
+ <el-select size="mini" v-model="queryInfo.status" clearable>
<el-option v-for="item in queryStatus" :key="item.value" :label="item.label" :value="item.value"
placeholder="请选择巡检状态"></el-option>
</el-select>
@@ -72,8 +72,6 @@
<el-image class="image" v-for="(item, index) in regionInfos.img" :key="index" :src="item" fit="contain"
:preview-src-list="regionInfos.img"></el-image>
</el-form-item>
-
- <el-form-item label="获取当前位置:">{{ regionInfos.location }}</el-form-item>
</el-form>
</el-dialog>
</div>
@@ -120,7 +118,6 @@
region: '', // 巡检区域
res: '', // 巡检结果
img: '', // 上传的图片
- location: '', // 位置
}
}
},
@@ -230,13 +227,12 @@
this.regionInfos.time = res.data.inspectionTime
this.regionInfos.region = res.data.region
this.regionInfos.res = res.data.result
- this.regionInfos.location = res.data.location
this.regionInfos.img = []
if (res.data.imgPaths) {
let arr = []
res.data.imgPaths.split(',').forEach(item => {
- arr.push(process.env.VUE_APP_BASE_URL + '/' + item)
+ arr.push('https://szpipe.thhy-tj.com/' + item) // 是生产地址
})
this.regionInfos.img.push(...arr)
}
@@ -265,6 +261,17 @@
<style lang="scss" scoped>
@import '@/style/layout-main.scss';
+.wrap {
+ display: flex;
+ flex-direction: column;
+ height: 100%;
+
+ .main_content {
+ overflow: hidden;
+ flex: 1;
+ }
+}
+
.rule_form {
color: #fff;
--
Gitblit v1.9.3