From dfd8d9289ccfaa14bb69e9586bff80fa727832c5 Mon Sep 17 00:00:00 2001 From: shanao <wangpeng@zcloudchina.com> Date: Wed, 23 Oct 2024 20:55:17 +0800 Subject: [PATCH 1/4] =?UTF-8?q?=20=E5=88=A0=E9=99=A4=E9=9A=90=E6=82=A3?= =?UTF-8?q?=E7=9A=84=E4=BA=8C=E6=AC=A1=E6=8F=90=E7=A4=BA=E5=8A=A0=E4=B8=8A?= =?UTF-8?q?=E2=80=9C=E5=88=A0=E9=99=A4=E9=9A=90=E6=82=A3=E5=90=8E=EF=BC=8C?= =?UTF-8?q?=E9=9A=90=E6=82=A3=E7=9B=B8=E5=85=B3=E7=9A=84=E5=A4=84=E7=BD=9A?= =?UTF-8?q?=E4=BF=A1=E6=81=AF=E4=B9=9F=E4=BC=9A=E5=88=A0=E9=99=A4=E2=80=9D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/views/keyprojects/hidden/components/list.vue | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/views/keyprojects/hidden/components/list.vue b/src/views/keyprojects/hidden/components/list.vue index 9bc565b..1d02246 100644 --- a/src/views/keyprojects/hidden/components/list.vue +++ b/src/views/keyprojects/hidden/components/list.vue @@ -231,7 +231,7 @@ export default { */ handleBatchDel(HIDDEN_ID) { // 弹出确认框 - this.$confirm('确定要删除吗?', '提示', { + this.$confirm('确定要删除吗?删除隐患后,隐患相关的处罚信息也会删除', '提示', { confirmButtonText: '确定', cancelButtonText: '取消', type: 'warning' From 9f0703e91ad175cf78de849e8d4f1470377b0947 Mon Sep 17 00:00:00 2001 From: fufeifei <fufeifei@zcloudchina.com> Date: Thu, 24 Oct 2024 17:13:35 +0800 Subject: [PATCH 2/4] =?UTF-8?q?1=E3=80=81=E9=9A=90=E6=82=A3=E9=87=8D?= =?UTF-8?q?=E5=A4=8D=E6=AC=A1=E6=95=B0=E7=BB=9F=E8=AE=A1,=E5=8C=85?= =?UTF-8?q?=E5=90=AB=E9=87=8D=E5=A4=8D=E9=9A=90=E6=82=A3=E5=9B=BE=E7=89=87?= =?UTF-8?q?=E7=9A=84=E5=88=97=E8=A1=A8=E3=80=81=E6=AF=8F=E4=B8=80=E4=B8=AA?= =?UTF-8?q?=E9=87=8D=E5=A4=8D=E9=9A=90=E6=82=A3=E5=9B=BE=E7=89=87=E7=9A=84?= =?UTF-8?q?=E8=AF=A6=E6=83=85=E5=88=97=E8=A1=A8=E3=80=81=E6=AF=8F=E4=B8=80?= =?UTF-8?q?=E4=B8=AA=E9=9A=90=E6=82=A3=E4=BF=A1=E6=81=AF=E7=9A=84=E8=AF=A6?= =?UTF-8?q?=E6=83=85=E4=BF=A1=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../hiddenRepeatedTimes/components/detail.vue | 148 +++++ .../hiddenRepeatedTimes/components/info.vue | 602 ++++++++++++++++++ .../hiddenRepeatedTimes/components/list.vue | 100 +++ .../hidden/hiddenRepeatedTimes/index.vue | 27 + 4 files changed, 877 insertions(+) create mode 100644 src/views/hidden/hiddenRepeatedTimes/components/detail.vue create mode 100644 src/views/hidden/hiddenRepeatedTimes/components/info.vue create mode 100644 src/views/hidden/hiddenRepeatedTimes/components/list.vue create mode 100644 src/views/hidden/hiddenRepeatedTimes/index.vue diff --git a/src/views/hidden/hiddenRepeatedTimes/components/detail.vue b/src/views/hidden/hiddenRepeatedTimes/components/detail.vue new file mode 100644 index 0000000..285471d --- /dev/null +++ b/src/views/hidden/hiddenRepeatedTimes/components/detail.vue @@ -0,0 +1,148 @@ +<template> + <div id="app-container"> + <el-table v-loading="listLoading" ref="multipleTable" :row-key="getRowKey" :data="varList" border tooltip-effect="dark" style="width: 100%"> + <el-table-column :reserve-selection="true" type="selection" width="55" align="center" /> + <el-table-column type = "index" label="序号" width="50" align = "center" /> + <el-table-column prop="CORP_NAME" label="所属单位" align="center" /> + <el-table-column :formatter="formatHiddenSource" prop="SOURCE" label="隐患来源" width="130" align="center" /> + <el-table-column :formatter="formatRectificationType" prop="RECTIFICATIONTYPE" label="整改类型" width="100" align="center" /> + <el-table-column prop="HIDDENDESCR" label="隐患描述" width="260" align="center" /> + <el-table-column prop="HIDDENLEVEL_NAME" label="隐患级别" width="130" align="center" /> + <el-table-column prop="FIND_USER_NAME" label="隐患发现人" width="110" align="center" /> + <el-table-column prop="HIDDENREGION" label="隐患部位" width="130" align="center" /> + <el-table-column prop="CREATTIME" label="隐患发现时间" align="center" /> + <el-table-column :formatter="formatHiddenState" prop="STATE" label="隐患状态" width="100" align="center" /> + <el-table-column prop="CONFIRM_USER_NAME" label="确认人" width="110" align="center" /> + <el-table-column prop="RECTIFICATIONTIME" label="整改时间" align="center" /> + <el-table-column prop="RECTIFICATIONOR_NAME" label="整改人" width="110" align="center" /> + <el-table-column prop="CHECK_USER_NAME" label="验收人" width="110" align="center" /> + <el-table-column label="操作" align="left" width="100"> + <template slot-scope="{row}"> + <el-button type="primary" icon="el-icon-view" size="mini" @click="handleShow(row.HIDDEN_ID)">查看</el-button> + </template> + </el-table-column> + </el-table> + <div class="page-btn-group"> + <div style="padding-left: 10px;"> + <el-button plain type="info" @click="back">返回</el-button> + </div> + <pagination :total="total" :page.sync="listQuery.page" :limit.sync="listQuery.limit" @pagination="getPageList" /> + </div> + </div> +</template> +<script> +import Pagination from '@/components/Pagination' // 通过 el-pagination二次打包 +import { requestFN } from '@/utils/request' +import waves from '@/directive/waves' +export default { + components: { Pagination }, + directives: { waves }, + data() { + return { + HIDDEN_ID: '', // 主键ID + detail: true, + listLoading: true, + listQuery: { + page: 1, + limit: 20 + }, + total: 0, + varList: [], + hiddenlevelList: [], // 隐患级别 + hiddenPartList: [], // 隐患部位, + hiddenTypeList: [], // 隐患类型, + /** 条件中的字段,没有放在form表单中,是因为怕动态加载中出现问题 **/ + // 隐患来源 + sourceList: [ + { ID: '1', NAME: '隐患快报' }, + { ID: '2', NAME: '清单排查' }, + { ID: '4', NAME: '安全环保检查(监管端)' }, + { ID: '5', NAME: '安全环保检查(企业端)' }, + { ID: '6', NAME: '消防检查' } + ], + // 整改类型 + rectificationTypeList: [ + { ID: '1', NAME: '立即整改' }, + { ID: '2', NAME: '限期整改' } + ], + isrelevantList: [ + { ID: '1', NAME: '是' }, + { ID: '2', NAME: '否' } + ], + statusList: [ + { ID: '1', NAME: '未整改' }, + { ID: '2', NAME: '已整改' }, + { ID: '4', NAME: '已验收' }, + { ID: '5', NAME: '忽略隐患' }, + { ID: '6', NAME: '重大隐患' }, + { ID: '7', NAME: '待处理的特殊隐患' }, + { ID: '8', NAME: '已处理的特殊隐患' }, + { ID: '-1', NAME: '已过期' }, + { ID: '-2', NAME: '待确认' }, + { ID: '16', NAME: '确认打回' }, + { ID: '10', NAME: '验收打回' } + ] + } + }, + created() { + this.getPageList(this.$parent.MD5) // 获取分页列表信息 + // this.getDict() // 获取字典的信息 + }, + methods: { + getRowKey(row) { // 专门获取并设置行的id + return row.HIDDEN_ID + }, + getPageList(MD5) { + this.varList = [] + this.listLoading = true + requestFN( + '/duplicatehazard/findByMD5?showCount=' + this.listQuery.limit + '¤tPage=' + this.listQuery.page, + { + MD5: MD5 + } + ).then((data) => { + console.info(data) + this.listLoading = false + this.varList = data.varList + this.total = data.page.totalResult + }).catch((e) => { + this.listLoading = false + }) + }, + handleShow(hiddenID) { + this.$parent.activeName = 'Info' + this.$parent.HIDDEN_ID = hiddenID + }, + // 获取数据字典数据 + getDict: function() { + // 隐患部位 + requestFN( + '/hiddenRegion/listAll' + ).then((data) => { + this.hiddenPartList = JSON.parse(data.zTreeNodes) + }).catch((e) => { + this.listLoading = false + }) + }, + // 格式化隐患来源 + formatHiddenSource(row) { + const dictItem = this.sourceList.find(item => item.ID == row.SOURCE) + return dictItem ? dictItem.NAME : '' + }, + // 格式化整改类型 + formatRectificationType(row) { + const dictItem = this.rectificationTypeList.find(item => item.ID == row.RECTIFICATIONTYPE) + return dictItem ? dictItem.NAME : '' + }, + // 格式化隐患状态 + formatHiddenState(row) { + const dictItem = this.statusList.find(item => item.ID == row.STATE) + return dictItem ? dictItem.NAME : '' + }, + back() { + this.$parent.activeName = 'List' + } + } +} +</script> + diff --git a/src/views/hidden/hiddenRepeatedTimes/components/info.vue b/src/views/hidden/hiddenRepeatedTimes/components/info.vue new file mode 100644 index 0000000..12481bb --- /dev/null +++ b/src/views/hidden/hiddenRepeatedTimes/components/info.vue @@ -0,0 +1,602 @@ +<template> + <div> + <div id="printTest" class="app-container"> + <div class="print-break"> + <div class="level-title"> + <h1>隐患信息</h1> + </div> + <div class="mb-20"> + <table class="table-ui"> + <tr> + <td class="tbg">隐患来源</td> + <template v-if="pd.SOURCE"> + <td> {{ translate(pd.SOURCE.toString() =='3'?'2':pd.SOURCE.toString(), sourceList) }}</td> + </template> + </tr> + <tr> + <td class="tbg">隐患描述</td> + <td>{{ pd.HIDDENDESCR }}</td> + </tr> + <template v-if="pd.SOURCE=='2'"> <!-- 只有清单排查的时候 显示里面的内容 --> + <tr > + <td class="tbg">风险点(单元)</td> + <td>{{ pd.RISK_UNIT }}</td> + </tr> + <tr > + <td class="tbg">辨识部位</td> + <td>{{ pd.IDENTIFICATION }}</td> + </tr> + <tr > + <td class="tbg">存在风险</td> + <td>{{ pd.RISK_DESCR }}</td> + </tr> + <tr> + <td class="tbg">风险分级</td> + <td>{{ pd.LEVEL }}</td> + </tr> + <tr> + <td class="tbg">检查内容</td> + <td>{{ pd.CHECK_CONTENT }}</td> + </tr> + </template> + <tr> + <td class="tbg">隐患级别</td> + <td >{{ pd.editLevelName?pd.editLevelName:pd.HIDDENLEVELNAME }}</td> + </tr> + <tr> + <td class="tbg">隐患类型</td> + <td>{{ pd.HIDDENTYPENAME }}</td> + </tr> + <tr> + <td class="tbg">隐患状态</td> + <td> + <template v-if="pd.STATE"> + {{ translate(pd.STATE.toString(), statusList) }} + </template> + </td> + </tr> + <tr> + <td class="tbg">隐患部位</td> + <td>{{ pd.hregionName?pd.hregionName:pd.HIDDENPART }}</td> + </tr> + <tr> + <td class="tbg">隐患上报位置</td> + <td>经度:{{ pd.LONGITUDE }} , 纬度:{{ pd.LATITUDE }}</td> + </tr> + <tr> + <td class="tbg">隐患位置描述</td> + <td>{{ pd.POSITIONDESC }}</td> + </tr> + <tr> + <td class="tbg">隐患图片</td> + <td class="img-select"> + <viewer :images="hImgs"> + <img v-for="item in hImgs" :src="config.fileUrl + item.FILEPATH" :key="item.IMGFILES_ID" width="100" height="100"> + </viewer> + </td> + </tr> + <tr> + <td class="tbg">重复的隐患图片</td> + <td class="img-select"> + <viewer :images="[config.fileUrl + this.$parent.repeatedHiddenUrl]"> + <img :src="config.fileUrl + this.$parent.repeatedHiddenUrl" width="100" height="100"> + </viewer> + </td> + </tr> + <tr v-if="playerOptions.sources[0].src"> + <td class="tbg">隐患视频</td> + <td> + <span style="color: #4395ff;cursor: pointer" @click="dialogVideoVisible = true">隐患视频</span> + </td> + </tr> + <tr v-for="item in hiddenFindPeople" :key="item.USER_ID"> + <td class="tbg">隐患发现人 </td> + <td>{{ item.NAME }}</td> + </tr> + <tr> + <td class="tbg">隐患发现时间</td> + <td>{{ formatDate(pd.DISCOVERYTIME,'YYYY-MM-DD HH:mm:ss') }}</td> + </tr> + <tr> + <td class="tbg">整改类型</td> + <td> + <template v-if="pd.RECTIFICATIONTYPE=='1'"> + 立即整改 + </template> + <template v-else-if="pd.RECTIFICATIONTYPE=='2'"> + 限期整改 + </template> + </td> + </tr> + <tr v-if="pd.editDeptName ?pd.editDeptName :pd.RECTIFICATIONDEPTNAME"> + <td class="tbg">整改负责部门</td> + <td >{{ pd.editDeptName ?pd.editDeptName :pd.RECTIFICATIONDEPTNAME }}</td> + </tr> + <tr v-if="pd.editUserName ?pd.editUserName :pd.RECTIFICATIONORNAME"> + <td class="tbg">整改负责人</td> + <td >{{ pd.editUserName ?pd.editUserName :pd.RECTIFICATIONORNAME }}</td> + </tr> + <tr v-if="pd.RECTIFICATIONTYPE=='2' && pd.RECTIFICATIONDEADLINE"> + <td class="tbg">整改期限</td> + <td>{{ pd.RECTIFICATIONDEADLINE }}</td> + </tr> + <tr> + <td class="tbg">是否相关方</td> + <td>{{ pd.ISRELEVANT=='1'?'是':'否' }}</td> + </tr> + <template v-if="repulsecause"> + <tr v-for="item in repulsecause" :key="item.USER_ID"> + <td class="tbg">打回原因</td> + <td>{{ item.REPULSE_CAUSE }}</td> + </tr> + </template> + <template v-if="repulsecause"> + <tr v-for="item in repulsecause" :key="item.USER_ID"> + <td class="tbg">打回时间</td> + <td>{{ item.OPERATTIME }}</td> + </tr> + </template> + </table> + </div> + </div> + <div v-for="(item,index) in hiddenExamineList" :key="index"> + <div class="level-line" /> + <table v-if="item.TYPE === 4" class="table-ui print-break"> + <div class="level-title"> + <h1 >确认信息</h1> + </div> + <tr> + <td class="tbg">隐患级别</td> + <td >{{ item.editLevelName }}</td> + </tr> + <tr v-if="item.editUserName"> + <td class="tbg">整改负责人</td> + <td >{{ item.editUserName }}</td> + </tr> + <tr v-if="item.spare3"> + <td class="tbg">整改完成期限</td> + <td >{{ item.spare3 }}</td> + </tr> + <tr> + <td class="tbg">隐患确认人</td> + <td>{{ pd.conUserName }}</td> + </tr> + <tr > + <td class="tbg">隐患确认时间</td> + <td>{{ pd.CONFIRM_TIME }}</td> + </tr> + </table> + <table v-else-if="item.TYPE === 2" class="table-ui print-break"> + <div class="level-title"> + <h1 >延期信息</h1> + </div> + <tr> + <td class="tbg">申请延期日期</td> + <td >{{ item.DELAY_TIME }}</td> + </tr> + <tr> + <td class="tbg">审核人</td> + <td>{{ pd.conUserName }}</td> + </tr> + <tr> + <td class="tbg">处置方案</td> + <td >{{ item.DISPOSAL_PLAN }}</td> + </tr> + <tr v-if="item.DISPOSAL_FILE"> + <td class="tbg">方案附件</td> + <td><a style="color: #1e9fff" @click="goViewPdf(item.DISPOSAL_FILE)">[预览]</a> </td> + </tr> + <tr> + <td class="tbg">延期审核状态</td> + <template v-if="item.STATE===-1"> + <td>待审核</td> + </template> + <template v-else-if="item.STATE===1"> + <td>通过</td> + </template> + <template v-else-if="item.STATE===2"> + <td>未通过</td> + </template> + </tr> + <tr v-if="item.STATE===1"> + <td class="tbg">审核时间</td> + <td>{{ item.OPERATTIME }}</td> + </tr> + </table> + <table v-else-if="item.TYPE === 1" class="table-ui print-break"> + <div class="level-title"> + <h1 >特殊处理审核信息</h1> + </div> + <tr> + <td class="tbg">无法整改原因</td> + <td >{{ item.EXAMINE }}</td> + </tr> + <tr> + <td class="tbg">特殊处置审核状态</td> + <template v-if="item.STATE===-1"> + <td>待审核</td> + </template> + <template v-else-if="item.STATE===2"> + <td>通过</td> + </template> + <template v-else-if="item.STATE===1"> + <td>未通过</td> + </template> + </tr> + <tr v-if="item.STATE===2"> + <td class="tbg">处置方案</td> + <td>{{ item.DISPOSAL_PLAN }}</td> + </tr> + <tr v-if="item.STATE===2 && item.DISPOSAL_FILE"> + <td class="tbg">处置方案附件</td> + <td><a style="color: #1e9fff" @click="goViewPdf(item.DISPOSAL_FILE)">[预览]</a> </td> + </tr> + <tr v-if="item.STATE!==-1"> + <td class="tbg">审核时间</td> + <td>{{ item.OPERATTIME }}</td> + </tr> + <tr v-if="item.STATE!==-1"> + <td class="tbg">审核人</td> + <td>{{ pd.conUserName }}</td> + </tr> + <tr v-if="item.TYPE ==='2'"> + <td class="tbg">是否更换整改负责人</td> + <td v-if="item.spare1==='1'">是</td> + <td v-if="item.spare1==='0'">否</td> + </tr> + <tr v-if="item.STATE!==-1"> + <td class="tbg">是否更换整改负责人</td> + <td v-if="item.spare2 == undefined">否</td> + <td v-else>是</td> + </tr> + <tr v-if="item.NEWRECTIFICATIONOR != undefined" > + <td class="tbg">更换整改负责人姓名</td> + <td>{{ item.NEWRECTIFICATIONOR }}</td> + </tr> + </table> + </div> + <div v-if="pd.STATE ==2 || pd.STATE ==4 || pd.STATE == 10 || pd.RECTIFICATIONTYPE == 1" class="print-break"> + <div class="level-line" /> + <div class="level-title"> + <h1>整改信息</h1> + </div> + <table class="table-ui"> + <tr> + <td class="tbg">整改描述</td> + <td>{{ pd.RECTIFYDESCR }}</td> + </tr> + + <tr v-if="pd.RECTIFICATIONDEPTNAME"> + <td class="tbg">整改部门</td> + <td>{{ pd.RECTIFICATIONDEPTNAME }}</td> + </tr> + <tr v-if="pd.RECTIFICATIONORNAME"> + <td class="tbg">整改人</td> + <td>{{ pd.RECTIFICATIONORNAME }}</td> + </tr> + <tr v-if="pd.RECTIFICATIONTIME"> + <td class="tbg">整改时间</td> + <td>{{ pd.RECTIFICATIONTIME }}</td> + </tr> + <tr v-if="pd.INVESTMENT_FUNDS"> + <td class="tbg">投入资金</td> + <td>{{ pd.INVESTMENT_FUNDS }}元</td> + </tr> + <tr> + <td class="tbg">整改后图片</td> + <td class="img-select"> + <viewer :images="rImgs"> + <img v-for="item in rImgs" :src="config.fileUrl + item.FILEPATH" :key="item.IMGFILES_ID" width="100" height="100"> + </viewer> + </td> + </tr> + <tr v-if="pd.HAVESCHEME"> + <td class="tbg">整改方案</td> + <td v-if="pd.HAVESCHEME==0">无</td> + <td v-else-if="pd.HAVESCHEME==1">有</td> + <td v-else/> + </tr> + <tr v-if="hs && pd.HAVESCHEME==1"> + <td class="tbg">排查日期</td> + <td>{{ hs.SCREENINGDATE }}</td> + </tr> + <tr v-if="hs && pd.HAVESCHEME==1 && hs.LISTNAME"> + <td class="tbg">隐患清单</td> + <td>{{ hs.LISTNAME }}</td> + </tr> + <tr v-if="hs && pd.HAVESCHEME==1"> + <td class="tbg">治理标准要求</td> + <td>{{ hs.GOVERNSTANDARDS }}</td> + </tr> + <tr v-if="hs && pd.HAVESCHEME==1"> + <td class="tbg">治理方法</td> + <td>{{ hs.GOVERNMETHOD }}</td> + </tr> + <tr v-if="hs && pd.HAVESCHEME==1"> + <td class="tbg">经费和物资的落实</td> + <td>{{ hs.EXPENDITURE }}</td> + </tr> + <tr v-if="hs && pd.HAVESCHEME==1"> + <td class="tbg">负责治理人员</td> + <td>{{ hs.PRINCIPAL }}</td> + </tr> + <tr v-if="hs && pd.HAVESCHEME==1"> + <td class="tbg">工时安排</td> + <td>{{ hs.PROGRAMMING }}</td> + </tr> + <tr v-if="hs && pd.HAVESCHEME==1"> + <td class="tbg">时限要求</td> + <td>{{ hs.TIMELIMITFOR }}</td> + </tr> + <tr v-if="hs && pd.HAVESCHEME==1"> + <td class="tbg">工作要求</td> + <td>{{ hs.JOBREQUIREMENT }}</td> + </tr> + <tr v-if="hs && pd.HAVESCHEME==1"> + <td class="tbg">其他事项</td> + <td>{{ hs.OTHERBUSINESS }}</td> + </tr> + <tr v-if="hs && pd.HAVESCHEME==1"> + <td class="tbg">方案图片</td> + <td class="img-select"> + <viewer :images="sImgs"> + <img v-for="item in sImgs" :src="config.fileUrl + item.FILEPATH" :key="item.IMGFILES_ID" width="100" height="100"> + </viewer> + </td> + </tr> + </table> + </div> + + <div v-show="pd.STATE ==4" class="print-break"> + <div class="level-line" /> + <div class="level-title"> + <h1>验收信息</h1> + </div> + <template v-if="pd.RECTIFICATIONTYPE!='1'"> + <table v-for="(data) in checkList" :key="data.value" class="table-ui"> + <tr> + <td class="tbg">验收描述</td> + <td>{{ data.CHECKDESCR }}</td> + </tr> + <tr> + <td class="tbg">是否合格</td> + <td> + <template v-if="data.STATUS=='1'"> + 是 + </template> + <template v-else-if="data.STATUS=='0'"> + 否 + </template> + </td> + </tr> + <tr> + <td class="tbg">验收部门</td> + <td>{{ data.CHECKDEPTNAME }}</td> + </tr> + <tr> + <td class="tbg">验收人</td> + <td>{{ data.CHECKORNAME }}</td> + </tr> + + <tr> + <td class="tbg">验收时间</td> + <td>{{ data.CHECK_TIME }}</td> + </tr> + <tr> + <td class="tbg">验收图片</td> + <td class="img-select"> + <viewer :images="data.cImgs"> + <img v-for="item in data.cImgs" :src="config.fileUrl + item.FILEPATH" :key="item.IMGFILES_ID" width="100" height="100"> + </viewer> + </td> + </tr> + </table> + </template> + <template v-if="pd.RECTIFICATIONTYPE=='1'"> + <table class="table-ui"> + <tr> + <td class="tbg">验收人</td> + <td>{{ pd.CHECKORNAME }}</td> + </tr> + </table> + </template> + </div> + + <div v-show="returnInformation != ''" class="print-break"> + <div class="level-line" /> + <div class="level-title"> + <h1>验收打回信息</h1> + </div> + <table class="table-ui"> + <tr> + <td class="tbg">验收打回意见</td> + <td>{{ returnInformation.EXAMINE }}</td> + </tr> + <tr> + <td class="tbg">验收人</td> + <td>{{ returnInformation.CREATORNAME }}</td> + </tr> + <tr> + <td class="tbg">验收时间</td> + <td>{{ returnInformation.CREATTIME }}</td> + </tr> + </table> + </div> + </div> + + <div class="ui-height" /> + <div class="ui-foot"> + <el-button v-print="'#printTest'" type="primary">打 印</el-button> + <el-button plain type="info" @click="back">返 回</el-button> + </div> + <el-dialog :visible.sync="dialogVideoVisible" title="隐患视频"> + <div> + <video-player + ref="videoPlayer" + :playsinline="true" + :options="playerOptions" + style="width: 100%;" + class="video-player vjs-custom-skin"/> + </div> + <span slot="footer" class="dialog-footer"> + <el-button @click="dialogVideoVisible = false">关 闭</el-button> + </span> + </el-dialog> + <el-dialog :visible.sync="dialogViewPdf" title="文档" width="600px"> + <div> + <iframe :src="pdfUrl" width="500px" height="500px" frameborder="1" /> + </div> + </el-dialog> + </div> +</template> + +<script> +import Pagination from '@/components/Pagination' // 通过 el-pagination二次打包 +import formatDate from '@/utils/dateformat' +import { requestFN } from '@/utils/request' +import 'video.js/dist/video-js.css' +import { videoPlayer } from 'vue-video-player' +export default { + components: { Pagination, videoPlayer }, + data() { + return { + HIDDEN_ID: '', // 主键ID + pd: [], // 存放字段参数 + hs: [], + checkList: [], + msg: 'add', + pageType: '', + config: config, + pdfUrl: '', + hImgs: [], // 隐患图片 + rImgs: [], + sImgs: [], + hiddenFindPeople: [], // 隐患发现人 + repulsecause: [], // 打回信息 + sourceList: [ + { ID: '1', NAME: '隐患快报' }, + { ID: '2', NAME: '清单排查' }, + { ID: '4', NAME: '安全环保检查(监管端)' }, + { ID: '5', NAME: '安全环保检查(企业端)' }, + { ID: '6', NAME: '消防检查' } + ], + statusList: [ + { ID: '1', NAME: '未整改' }, + { ID: '2', NAME: '已整改' }, + { ID: '4', NAME: '已验收' }, + { ID: '5', NAME: '忽略隐患' }, + { ID: '6', NAME: '重大隐患' }, + { ID: '7', NAME: '待处理的特殊隐患' }, + { ID: '8', NAME: '已处理的特殊隐患' }, + { ID: '-1', NAME: '已过期' }, + { ID: '-2', NAME: '待确认' }, + { ID: '16', NAME: '确认打回' }, + { ID: '10', NAME: '验收打回' } + ], + playerOptions: { + playbackRates: [0.5, 1.0, 1.5, 2.0], // 可选的播放速度 + autoplay: false, // 如果为true,浏览器准备好时开始回放。 + muted: false, // 默认情况下将会消除任何音频。 + loop: false, // 是否视频一结束就重新开始。 + preload: 'auto', // 建议浏览器在<video>加载元素后是否应该开始下载视频数据。auto浏览器选择最佳行为,立即开始加载视频(如果浏览器支持) + language: 'zh-CN', + aspectRatio: '16:9', // 将播放器置于流畅模式,并在计算播放器的动态大小时使用该值。值应该代表一个比例 - 用冒号分隔的两个数字(例如"16:9"或"4:3") + fluid: true, // 当true时,Video.js player将拥有流体大小。换句话说,它将按比例缩放以适应其容器。 + sources: [{ + type: 'video/mp4', // 类型 + src: '' // url地址 + }], + poster: '', // 封面地址 + notSupportedMessage: '此视频暂无法播放,请稍后再试', // 允许覆盖Video.js无法播放媒体源时显示的默认信息。 + controlBar: { + timeDivider: true, // 当前时间和持续时间的分隔符 + durationDisplay: true, // 显示持续时间 + remainingTimeDisplay: false, // 是否显示剩余时间功能 + fullscreenToggle: true // 是否显示全屏按钮 + } + }, + dialogVideoVisible: false, + dialogViewPdf: false, + hiddenExamineList: [], + returnInformation: '' + + } + }, + created() { + if (this.$parent.HIDDEN_ID) { + this.getData(this.$parent.HIDDEN_ID) + } + }, + methods: { + getData(hiddenId) { + this.listLoading = true + requestFN( + '/hiddenlist/getHiddenById', + { + HIDDEN_ID: hiddenId, + tm: new Date().getTime() + } + ).then((data) => { + var vm = this + vm.pd = data.hidden// 隐患信息 + this.hiddenExamineList = data.hiddenExa // 特殊处置审核信息 隐患记录 + // 找出hiddenExamineList中验收打回日期最新的一条 + if (this.hiddenExamineList.length > 0) { + for (let i = 0; i < this.hiddenExamineList.length; i++) { + if (this.hiddenExamineList[i].TYPE === 3) { + this.returnInformation = this.hiddenExamineList[i] + if (this.returnInformation != '' && new Date(this.hiddenExamineList[i].CREATTIME).getTime() > new Date(this.returnInformation.CREATTIME).getTime()) { + this.returnInformation = this.hiddenExamineList[i] + } + } + } + } + vm.hs = data.hs // 查询整改方案 + vm.checkList = data.checkList // 验收信息 + this.hImgs = data.hImgs // 图片 + this.rImgs = data.rImgs // 图片 + this.sImgs = data.sImgs // 图片 + this.repulsecause = data.repulsecause // 应该是一样的 特殊处置审核信息 隐患记录 + this.hiddenFindPeople = data.hiddenFindPeople // 隐患发现人 + if (data.hiddenVideoSrc) { + this.playerOptions.sources[0].src = config.fileUrl + data.hiddenVideoSrc + } + }).catch((e) => { + this.listLoading = false + }) + }, + goViewPdf(filePath) { + this.pageNum = 1 + this.pdfUrl = this.config.fileUrl + filePath + this.dialogViewPdf = true + }, + back() { + this.$parent.activeName = 'Detail' + }, + formatDate(date, format) { + return formatDate(date, format) + }, + // 没有字典是的数据转换 + translate(id, list) { + for (let i = 0; i < list.length; i++) { + if (list[i].BIANMA === id || list[i].value === id || list[i].id === id || list[i].ID === id) return list[i].NAME || list[i].label || list[i].name + } + } + } +} +</script> + +<style lang="sass" scoped> +.table-ui + .tbg + width: 150px + .img-flex + display: flex + .img-ui + width: 240px + height: 240px + margin-right: 20px + & img + width: 100% + height: 100% +</style> diff --git a/src/views/hidden/hiddenRepeatedTimes/components/list.vue b/src/views/hidden/hiddenRepeatedTimes/components/list.vue new file mode 100644 index 0000000..e82936a --- /dev/null +++ b/src/views/hidden/hiddenRepeatedTimes/components/list.vue @@ -0,0 +1,100 @@ +<template> + <div class="app-container"> + <el-table + v-loading="listLoading" + ref="multipleTable" + :data="varList" + :row-key="getRowKey" + :header-cell-style="{ + 'font-weight': 'bold', + 'color': '#000' + }" + tooltip-effect="dark" + border + fit + highlight-current-row> + <el-table-column :reserve-selection="true" type="selection" width="55" align="center" /> + <el-table-column type = "index" label="序号" width="50" align = "center" /> + <el-table-column label="隐患图片预览" align = "center"> + <template slot-scope="scope"> + <el-tooltip placement="top"> + <div slot="content"> + <viewer v-if="scope.row.FILEPATH" :images="[config.fileUrl + scope.row.FILEPATH]"> + <img v-show="!imageError" :src="config.fileUrl + scope.row.FILEPATH" width="100" height="100" @error="imageError = true"> + </viewer> + <div v-else>暂无图片</div> + </div> + <el-tag>预览</el-tag> + </el-tooltip> + </template> + </el-table-column> + <el-table-column prop="TOTALNUM" label="隐患重复次数" width="120" align="center" /> + <el-table-column label="查看重复隐患列表" width="150" align="center"> + <template slot-scope="scope"> + <el-button v-if="detail" icon="el-icon-view" size="mini" @click="handleView(scope.row.MD5, scope.row.FILEPATH)">详情</el-button> + </template> + </el-table-column> + </el-table> + <div class="page-btn-group"> + <div/> + <pagination :total="total" :page.sync="listQuery.page" :limit.sync="listQuery.limit" @pagination="getList" /> + </div> + </div> +</template> +<script> +import Pagination from '@/components/Pagination' // 通过 el-pagination二次打包 +import { requestFN } from '@/utils/request' +import waves from '@/directive/waves' +export default { + components: { Pagination }, + directives: { waves }, + data() { + return { + config: config, + listLoading: true, + imageError: false, + detail: true, + listQuery: { + page: 1, + limit: 20 + }, + total: 0, + dates: [], + varList: [] + } + }, + created() { + console.info('dhggh') + this.getList() + }, + methods: { + getRowKey(row) { // 专门获取并设置行的id + return row.MD5 + }, + // 获取分页列表 + getList() { + this.varList = [] + this.listLoading = true + requestFN( + '/duplicatehazard/dangerPictureCountList?showCount=' + this.listQuery.limit + '¤tPage=' + this.listQuery.page, + ).then((data) => { + this.listLoading = false + this.varList = data.varList + this.total = data.page.totalResult + console.info('data: ' + data) + console.info('data.page.totalResult: ' + data.page.totalResult) + console.info('this.total' + this.total) + // this.hasButton() + }).catch((e) => { + this.listLoading = false + }) + }, + // 查看 + handleView(MD5, url) { + this.$parent.activeName = 'Detail' + this.$parent.MD5 = MD5 + this.$parent.repeatedHiddenUrl = url // 将重复图片的地址存储起来 + } + } +} +</script> diff --git a/src/views/hidden/hiddenRepeatedTimes/index.vue b/src/views/hidden/hiddenRepeatedTimes/index.vue new file mode 100644 index 0000000..605cddc --- /dev/null +++ b/src/views/hidden/hiddenRepeatedTimes/index.vue @@ -0,0 +1,27 @@ +<template> + <div> + <List v-show="activeName=='List'" ref="list" /> + <Detail v-if="activeName=='Detail'" /> + <Info v-if="activeName=='Info'" /> + </div> +</template> +<script> +import List from './components/list' +import Detail from './components/detail' +import Info from './components/info' +export default { + components: { + List: List, + Detail: Detail, + Info: Info + }, + data() { + return { + activeName: 'List', + HIDDEN_ID: '', + repeatedHiddenUrl: '', + MD5: '' // 行的主键id为MD5 + } + } +} +</script> From d140f7b27b096a8ba31e911db8ea025b3b48c018 Mon Sep 17 00:00:00 2001 From: fufeifei <fufeifei@zcloudchina.com> Date: Thu, 24 Oct 2024 17:17:38 +0800 Subject: [PATCH 3/4] =?UTF-8?q?1=E3=80=81=E9=A3=8E=E9=99=A9=E5=88=86?= =?UTF-8?q?=E7=BA=A7=E7=AE=A1=E6=8E=A7=E7=B3=BB=E7=BB=9F=E4=B8=AD=E7=9A=84?= =?UTF-8?q?=EF=BC=9A=E9=A3=8E=E9=99=A9=E5=9B=9B=E8=89=B2=E5=9B=BE=E3=80=81?= =?UTF-8?q?=E4=B8=89=E4=BA=BA=E4=BB=A5=E4=B8=8A=E4=BD=9C=E4=B8=9A=E5=88=86?= =?UTF-8?q?=E5=B8=83=E5=9B=BE=E3=80=81=E4=BA=BA=E5=91=98=E8=81=9A=E9=9B=86?= =?UTF-8?q?=E5=88=86=E5=B8=83=E5=9B=BE=E7=9A=84=E4=B8=89=E4=B8=AA=E5=89=8D?= =?UTF-8?q?=E7=AB=AF=E9=A1=B5=E9=9D=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/views/risk/riskfour/index.vue | 355 +++++++++++++++++++++++ src/views/risk/riskpeoples/index.vue | 355 +++++++++++++++++++++++ src/views/risk/riskthreepeople/index.vue | 355 +++++++++++++++++++++++ 3 files changed, 1065 insertions(+) create mode 100644 src/views/risk/riskfour/index.vue create mode 100644 src/views/risk/riskpeoples/index.vue create mode 100644 src/views/risk/riskthreepeople/index.vue diff --git a/src/views/risk/riskfour/index.vue b/src/views/risk/riskfour/index.vue new file mode 100644 index 0000000..2b24c95 --- /dev/null +++ b/src/views/risk/riskfour/index.vue @@ -0,0 +1,355 @@ +<template> + <div class="app-container"> + <el-form label-width="60px"> + <el-row> + <el-col :span="4"> + <el-form-item label="文件名"> + <el-input v-model="KEYWORDS" placeholder="请输入关键字"/> + </el-form-item> + </el-col> + <el-col :span="4"> + <el-form-item label-width="10px"> + <el-button v-waves type="primary" icon="el-icon-search" @click="getQuery"> + 搜索 + </el-button> + <el-button v-waves type="success" icon="el-icon-refresh" @click="goKeyReset"> + 重置 + </el-button> + </el-form-item> + </el-col> + </el-row> + </el-form> + <el-table + v-loading="listLoading" + ref="multipleTable" + :data="varList" + :row-key="getRowKey" + :header-cell-style="{ + 'font-weight': 'bold', + 'color': '#000' + }" + tooltip-effect="dark" + border + fit + highlight-current-row + > + <el-table-column + :reserve-selection="true" + type="selection" + width="55" + align="center"/> + <el-table-column type="index" label="序号" width="50" align="center" /> + <el-table-column prop="NAME" label="文件名" /> + <el-table-column prop="imgPatn" label="图片" > + <template slot-scope="{row}"> + <el-tooltip placement="top"> + <template slot="content"> + <viewer> + <img :src="config.fileUrl + row.FILEPATH" width="100" height="100"> + </viewer> + </template> + <el-tag>预览</el-tag> + </el-tooltip> + </template> + </el-table-column> + <el-table-column label="操作" align="left" width="500"> + <template slot-scope="{row}"> + <el-button type="primary" icon="el-icon-edit" size="mini" @click="downloadFile(row.RISKWARNING_ID)">下载</el-button> + <el-button v-show="del" type="danger" icon="el-icon-delete" plain @click="handleDelete(row.RISKWARNING_ID)">删除</el-button> + </template> + </el-table-column> + </el-table> + <div class="page-btn-group"> + <div> + <el-button v-show="add" type="primary" icon="el-icon-plus" @click="handleAdd">新增</el-button> + <el-button v-show="del" type="danger" icon="el-icon-delete" plain @click="batchDel">批量删除</el-button> + </div> + <pagination :total="total" :page.sync="listQuery.page" :limit.sync="listQuery.limit" @pagination="getList" /> + </div> + + <el-dialog :visible.sync="dialogForm" title="上传文件" width="600px"> + <el-form ref="form" :model="form" :rules="rules" label-width="110px" style="width: 500px;"> + <el-form-item label="文件名" prop="NAME"> + <el-input v-model="form.NAME" placeholder="这里输入名称..." /> + </el-form-item> + <el-form-item label="附件" prop="FILE"> + <el-upload + ref="upload" + :on-preview="handlePictureCardPreview" + :on-remove="handleRemove" + :on-change="handleChangeIMG" + :before-upload="beforeFileUpload" + :auto-upload="false" + :limit="1" + :class="{hide:hideUpload}" + action="#" + accept=".jpg,.jpeg,.png" + list-type="picture-card"> + <i class="el-icon-plus" /> + </el-upload> + <el-dialog :visible.sync="dialogVisible"> + <img :src="dialogImageUrl" width="100%" alt=""> + </el-dialog> + </el-form-item> + </el-form> + <div slot="footer" class="dialog-footer"> + <el-button @click="dialogForm = false">取 消</el-button> + <el-button type="primary" @click="upload">确 定</el-button> + </div> + </el-dialog> + </div> +</template> +<script> +import Pagination from '@/components/Pagination' // 通过 el-pagination二次打包 +import { requestFN } from '@/utils/request' +import waves from '@/directive/waves' // waves directive +import { upload } from '@/utils/upload' +export default { + components: { Pagination }, + directives: { waves }, + data() { + return { + config: config, + listLoading: true, + dialogForm: false, + dialogImageUrl: '', + dialogVisible: false, + add: true, + del: true, + edit: true, + listQuery: { + page: 1, + limit: 20 + }, + total: 0, + KEYWORDS: '', + dates: [], + varList: [], + hideUpload: false, + form: { + NAME: '', // + FFILE: [] + }, + rules: { + NAME: [{ required: true, message: '名称不能为空', trigger: 'blur' }], + FILE: [{ required: true, message: '附件不能为空', trigger: 'blur' }] + } + } + }, + created() { + this.getList() + }, + methods: { + getRowKey(row) { + return row.RISKWARNING_ID + }, + // 搜索 + getQuery() { + this.$refs.multipleTable.clearSelection() + this.getList() + }, + + // 获取列表 + getList() { + this.listLoading = true + requestFN( + '/riskdisclaimer/list?showCount=' + this.listQuery.limit + '¤tPage=' + this.listQuery.page, + { + KEYWORDS: this.KEYWORDS, + TYPE: '1' + } + ).then((data) => { + this.listLoading = false + this.varList = data.varList + this.total = data.page.totalResult + // this.hasButton() + }).catch((e) => { + this.listLoading = false + }) + }, + // 添加 + handleAdd() { + this.hideUpload = false + this.resetForm() + if (this.$refs.upload) { + this.$refs.upload.clearFiles() + } + this.dialogForm = true + }, + beforeFileUpload(file) { + const types = ['image/jpeg', 'image/jpg', 'image/png'] + const isImage = types.includes(file.type) + if (!isImage) { + this.$message.error('上传图片只能是 JPG、JPEG、PNG 格式!') + return false + } else { + this.form.FFILE = file + } + }, + handlePictureCardPreview(file, fileList) { + this.dialogImageUrl = file.url + this.dialogVisible = true + }, + handleChangeIMG(file, fileList) { + const types = ['image/jpeg', 'image/jpg', 'image/png'] + const isImage = types.includes(file.raw.type) + if (!isImage) { + this.$message.error('上传图片只能是 JPG、JPEG、PNG 格式!') + fileList.pop() + } + this.hideUpload = fileList.length >= 1 + }, + handleRemove(file, fileList) { + this.hideUpload = fileList.length >= 1 + }, + // 保存 + upload() { + this.$refs.form.validate(valid => { + if (this.$refs.upload.uploadFiles.length < 1) { + this.$message({ + message: '请上传图片', + type: 'error' + }) + return false + } + this.$refs.upload.submit() + const loading = this.$loading({ + lock: true, + text: '上传中...', + spinner: 'el-icon-loading', + background: 'rgba(0, 0, 0, 0.7)' + }) + const formData = new FormData() + Object.keys(this.form).map(key => { + formData.append(key, this.form[key]) + }) + formData.append('TYPE', '1') + upload( + '/riskdisclaimer/add', + formData + ).then((data) => { + this.dialogForm = false + this.getList() + loading.close() + }).catch((e) => { + loading.close() + }) + }) + }, + downloadFile(RISKWARNING_ID) { + this.$confirm('确定要下载此文件吗?', { + confirmButtonText: '确定', + cancelButtonText: '取消', + type: 'warning' + }).then(() => { + this.listLoading = false + // '/mfolder/download?RISKWARNING_ID=' + RISKWARNING_ID, + window.location.href = config.httpurl + 'riskdisclaimer/goDownload?RISKWARNING_ID=' + RISKWARNING_ID + }).catch(() => { + this.listLoading = false + }) + this.listLoading = false + }, + handleDelete(id) { + this.$confirm('确定要删除吗?', { + confirmButtonText: '确定', + cancelButtonText: '取消', + type: 'warning' + }).then(() => { + this.listLoading = true + requestFN( + '/riskdisclaimer/delete', + { + RISKWARNING_ID: id + } + ).then(() => { + this.$message({ + message: '删除成功', + type: 'success' + }) + this.listLoading = false + this.varList = [] + this.listQuery.page = 1 + this.getList() + }).catch((e) => { + this.listLoading = false + }) + }).catch(() => { + }) + }, + batchDel() { + const _selectData = this.$refs.multipleTable.selection + if (_selectData == null || _selectData.length == 0) { + this.$message({ + message: '请选中要删除的项...', + type: 'error' + }) + return false + } + const ids = _selectData.map((item, index) => { + return item.RISKWARNING_ID + }).join(',') + + this.$confirm('确定要删除选中的数据吗?', { + confirmButtonText: '确定', + cancelButtonText: '取消', + type: 'warning' + }).then(() => { + this.listLoading = true + requestFN( + '/riskdisclaimer/deleteAll', + { + DATA_IDS: ids + } + ).then(() => { + this.listLoading = false + this.varList = [] + this.listQuery.page = 1 + this.$refs.multipleTable.clearSelection() + this.$message({ + message: '批量删除成功', + type: 'success' + }) + this.getList() + }).catch((e) => { + this.listLoading = false + }) + }).catch(() => { + }) + }, + // 判断按钮权限,用于是否显示按钮 + hasButton: function() { + var keys = 'riskwarning:add,riskwarning:del,riskwarning:edit,toExcel' + requestFN( + '/head/hasButton', + { + keys: keys + } + ).then((data) => { + this.add = data.riskwarningfhadminadd // 新增权限 + this.del = data.riskwarningfhadmindel // 删除权限 + this.edit = data.riskwarningfhadminedit // 修改权限 + }).catch((e) => { + this.listLoading = false + }) + }, + goKeyReset() { + this.KEYWORDS = '' + this.getList() + }, + resetForm() { + this.form = { + NAME: '', // + FFILE: [] + } + } + } + +} + +</script> +<style> +.hide .el-upload--picture-card { + display: none; +} +</style> diff --git a/src/views/risk/riskpeoples/index.vue b/src/views/risk/riskpeoples/index.vue new file mode 100644 index 0000000..f27e77f --- /dev/null +++ b/src/views/risk/riskpeoples/index.vue @@ -0,0 +1,355 @@ +<template> + <div class="app-container"> + <el-form label-width="60px"> + <el-row> + <el-col :span="4"> + <el-form-item label="文件名"> + <el-input v-model="KEYWORDS" placeholder="请输入关键字"/> + </el-form-item> + </el-col> + <el-col :span="4"> + <el-form-item label-width="10px"> + <el-button v-waves type="primary" icon="el-icon-search" @click="getQuery"> + 搜索 + </el-button> + <el-button v-waves type="success" icon="el-icon-refresh" @click="goKeyReset"> + 重置 + </el-button> + </el-form-item> + </el-col> + </el-row> + </el-form> + <el-table + v-loading="listLoading" + ref="multipleTable" + :data="varList" + :row-key="getRowKey" + :header-cell-style="{ + 'font-weight': 'bold', + 'color': '#000' + }" + tooltip-effect="dark" + border + fit + highlight-current-row + > + <el-table-column + :reserve-selection="true" + type="selection" + width="55" + align="center"/> + <el-table-column type="index" label="序号" width="50" align="center" /> + <el-table-column prop="NAME" label="文件名" /> + <el-table-column prop="imgPatn" label="图片" > + <template slot-scope="{row}"> + <el-tooltip placement="top"> + <template slot="content"> + <viewer> + <img :src="config.fileUrl + row.FILEPATH" width="100" height="100"> + </viewer> + </template> + <el-tag>预览</el-tag> + </el-tooltip> + </template> + </el-table-column> + <el-table-column label="操作" align="left" width="500"> + <template slot-scope="{row}"> + <el-button type="primary" icon="el-icon-edit" size="mini" @click="downloadFile(row.RISKWARNING_ID)">下载</el-button> + <el-button v-show="del" type="danger" icon="el-icon-delete" plain @click="handleDelete(row.RISKWARNING_ID)">删除</el-button> + </template> + </el-table-column> + </el-table> + <div class="page-btn-group"> + <div> + <el-button v-show="add" type="primary" icon="el-icon-plus" @click="handleAdd">新增</el-button> + <el-button v-show="del" type="danger" icon="el-icon-delete" plain @click="batchDel">批量删除</el-button> + </div> + <pagination :total="total" :page.sync="listQuery.page" :limit.sync="listQuery.limit" @pagination="getList" /> + </div> + + <el-dialog :visible.sync="dialogForm" title="上传文件" width="600px"> + <el-form ref="form" :model="form" :rules="rules" label-width="110px" style="width: 500px;"> + <el-form-item label="文件名" prop="NAME"> + <el-input v-model="form.NAME" placeholder="这里输入名称..." /> + </el-form-item> + <el-form-item label="附件" prop="FILE"> + <el-upload + ref="upload" + :on-preview="handlePictureCardPreview" + :on-remove="handleRemove" + :on-change="handleChangeIMG" + :before-upload="beforeFileUpload" + :auto-upload="false" + :limit="1" + :class="{hide:hideUpload}" + action="#" + accept=".jpg,.jpeg,.png" + list-type="picture-card"> + <i class="el-icon-plus" /> + </el-upload> + <el-dialog :visible.sync="dialogVisible"> + <img :src="dialogImageUrl" width="100%" alt=""> + </el-dialog> + </el-form-item> + </el-form> + <div slot="footer" class="dialog-footer"> + <el-button @click="dialogForm = false">取 消</el-button> + <el-button type="primary" @click="upload">确 定</el-button> + </div> + </el-dialog> + </div> +</template> +<script> +import Pagination from '@/components/Pagination' // 通过 el-pagination二次打包 +import { requestFN } from '@/utils/request' +import waves from '@/directive/waves' // waves directive +import { upload } from '@/utils/upload' +export default { + components: { Pagination }, + directives: { waves }, + data() { + return { + config: config, + listLoading: true, + dialogForm: false, + dialogImageUrl: '', + dialogVisible: false, + add: true, + del: true, + edit: true, + listQuery: { + page: 1, + limit: 20 + }, + total: 0, + KEYWORDS: '', + dates: [], + varList: [], + hideUpload: false, + form: { + NAME: '', // + FFILE: [] + }, + rules: { + NAME: [{ required: true, message: '名称不能为空', trigger: 'blur' }], + FILE: [{ required: true, message: '附件不能为空', trigger: 'blur' }] + } + } + }, + created() { + this.getList() + }, + methods: { + getRowKey(row) { + return row.RISKWARNING_ID + }, + // 搜索 + getQuery() { + this.$refs.multipleTable.clearSelection() + this.getList() + }, + + // 获取列表 + getList() { + this.listLoading = true + requestFN( + '/riskdisclaimer/list?showCount=' + this.listQuery.limit + '¤tPage=' + this.listQuery.page, + { + KEYWORDS: this.KEYWORDS, + TYPE: '4' + } + ).then((data) => { + this.listLoading = false + this.varList = data.varList + this.total = data.page.totalResult + // this.hasButton() + }).catch((e) => { + this.listLoading = false + }) + }, + // 添加 + handleAdd() { + this.hideUpload = false + this.resetForm() + if (this.$refs.upload) { + this.$refs.upload.clearFiles() + } + this.dialogForm = true + }, + beforeFileUpload(file) { + const types = ['image/jpeg', 'image/jpg', 'image/png'] + const isImage = types.includes(file.type) + if (!isImage) { + this.$message.error('上传图片只能是 JPG、JPEG、PNG 格式!') + return false + } else { + this.form.FFILE = file + } + }, + handlePictureCardPreview(file, fileList) { + this.dialogImageUrl = file.url + this.dialogVisible = true + }, + handleChangeIMG(file, fileList) { + const types = ['image/jpeg', 'image/jpg', 'image/png'] + const isImage = types.includes(file.raw.type) + if (!isImage) { + this.$message.error('上传图片只能是 JPG、JPEG、PNG 格式!') + fileList.pop() + } + this.hideUpload = fileList.length >= 1 + }, + handleRemove(file, fileList) { + this.hideUpload = fileList.length >= 1 + }, + // 保存 + upload() { + this.$refs.form.validate(valid => { + if (this.$refs.upload.uploadFiles.length < 1) { + this.$message({ + message: '请上传图片', + type: 'error' + }) + return false + } + this.$refs.upload.submit() + const loading = this.$loading({ + lock: true, + text: '上传中...', + spinner: 'el-icon-loading', + background: 'rgba(0, 0, 0, 0.7)' + }) + const formData = new FormData() + Object.keys(this.form).map(key => { + formData.append(key, this.form[key]) + }) + formData.append('TYPE', '4') + upload( + '/riskdisclaimer/add', + formData + ).then((data) => { + this.dialogForm = false + this.getList() + loading.close() + }).catch((e) => { + loading.close() + }) + }) + }, + downloadFile(RISKWARNING_ID) { + this.$confirm('确定要下载此文件吗?', { + confirmButtonText: '确定', + cancelButtonText: '取消', + type: 'warning' + }).then(() => { + this.listLoading = false + // '/mfolder/download?RISKWARNING_ID=' + RISKWARNING_ID, + window.location.href = config.httpurl + 'riskdisclaimer/goDownload?RISKWARNING_ID=' + RISKWARNING_ID + }).catch(() => { + this.listLoading = false + }) + this.listLoading = false + }, + handleDelete(id) { + this.$confirm('确定要删除吗?', { + confirmButtonText: '确定', + cancelButtonText: '取消', + type: 'warning' + }).then(() => { + this.listLoading = true + requestFN( + '/riskdisclaimer/delete', + { + RISKWARNING_ID: id + } + ).then(() => { + this.$message({ + message: '删除成功', + type: 'success' + }) + this.listLoading = false + this.varList = [] + this.listQuery.page = 1 + this.getList() + }).catch((e) => { + this.listLoading = false + }) + }).catch(() => { + }) + }, + batchDel() { + const _selectData = this.$refs.multipleTable.selection + if (_selectData == null || _selectData.length == 0) { + this.$message({ + message: '请选中要删除的项...', + type: 'error' + }) + return false + } + const ids = _selectData.map((item, index) => { + return item.RISKWARNING_ID + }).join(',') + + this.$confirm('确定要删除选中的数据吗?', { + confirmButtonText: '确定', + cancelButtonText: '取消', + type: 'warning' + }).then(() => { + this.listLoading = true + requestFN( + '/riskdisclaimer/deleteAll', + { + DATA_IDS: ids + } + ).then(() => { + this.listLoading = false + this.varList = [] + this.listQuery.page = 1 + this.$refs.multipleTable.clearSelection() + this.$message({ + message: '批量删除成功', + type: 'success' + }) + this.getList() + }).catch((e) => { + this.listLoading = false + }) + }).catch(() => { + }) + }, + // 判断按钮权限,用于是否显示按钮 + hasButton: function() { + var keys = 'riskwarning:add,riskwarning:del,riskwarning:edit,toExcel' + requestFN( + '/head/hasButton', + { + keys: keys + } + ).then((data) => { + this.add = data.riskwarningfhadminadd // 新增权限 + this.del = data.riskwarningfhadmindel // 删除权限 + this.edit = data.riskwarningfhadminedit // 修改权限 + }).catch((e) => { + this.listLoading = false + }) + }, + goKeyReset() { + this.KEYWORDS = '' + this.getList() + }, + resetForm() { + this.form = { + NAME: '', // + FFILE: [] + } + } + } + +} + +</script> +<style> + .hide .el-upload--picture-card { + display: none; + } +</style> diff --git a/src/views/risk/riskthreepeople/index.vue b/src/views/risk/riskthreepeople/index.vue new file mode 100644 index 0000000..cabf523 --- /dev/null +++ b/src/views/risk/riskthreepeople/index.vue @@ -0,0 +1,355 @@ +<template> + <div class="app-container"> + <el-form label-width="60px"> + <el-row> + <el-col :span="4"> + <el-form-item label="文件名"> + <el-input v-model="KEYWORDS" placeholder="请输入关键字"/> + </el-form-item> + </el-col> + <el-col :span="4"> + <el-form-item label-width="10px"> + <el-button v-waves type="primary" icon="el-icon-search" @click="getQuery"> + 搜索 + </el-button> + <el-button v-waves type="success" icon="el-icon-refresh" @click="goKeyReset"> + 重置 + </el-button> + </el-form-item> + </el-col> + </el-row> + </el-form> + <el-table + v-loading="listLoading" + ref="multipleTable" + :data="varList" + :row-key="getRowKey" + :header-cell-style="{ + 'font-weight': 'bold', + 'color': '#000' + }" + tooltip-effect="dark" + border + fit + highlight-current-row + > + <el-table-column + :reserve-selection="true" + type="selection" + width="55" + align="center"/> + <el-table-column type="index" label="序号" width="50" align="center" /> + <el-table-column prop="NAME" label="文件名" /> + <el-table-column prop="imgPatn" label="图片" > + <template slot-scope="{row}"> + <el-tooltip placement="top"> + <template slot="content"> + <viewer> + <img :src="config.fileUrl + row.FILEPATH" width="100" height="100"> + </viewer> + </template> + <el-tag>预览</el-tag> + </el-tooltip> + </template> + </el-table-column> + <el-table-column label="操作" align="left" width="500"> + <template slot-scope="{row}"> + <el-button type="primary" icon="el-icon-edit" size="mini" @click="downloadFile(row.RISKWARNING_ID)">下载</el-button> + <el-button v-show="del" type="danger" icon="el-icon-delete" plain @click="handleDelete(row.RISKWARNING_ID)">删除</el-button> + </template> + </el-table-column> + </el-table> + <div class="page-btn-group"> + <div> + <el-button v-show="add" type="primary" icon="el-icon-plus" @click="handleAdd">新增</el-button> + <el-button v-show="del" type="danger" icon="el-icon-delete" plain @click="batchDel">批量删除</el-button> + </div> + <pagination :total="total" :page.sync="listQuery.page" :limit.sync="listQuery.limit" @pagination="getList" /> + </div> + + <el-dialog :visible.sync="dialogForm" title="上传文件" width="600px"> + <el-form ref="form" :model="form" :rules="rules" label-width="110px" style="width: 500px;"> + <el-form-item label="文件名" prop="NAME"> + <el-input v-model="form.NAME" placeholder="这里输入名称..." /> + </el-form-item> + <el-form-item label="附件" prop="FILE"> + <el-upload + ref="upload" + :on-preview="handlePictureCardPreview" + :on-remove="handleRemove" + :on-change="handleChangeIMG" + :before-upload="beforeFileUpload" + :auto-upload="false" + :limit="1" + :class="{hide:hideUpload}" + action="#" + accept=".jpg,.jpeg,.png" + list-type="picture-card"> + <i class="el-icon-plus" /> + </el-upload> + <el-dialog :visible.sync="dialogVisible"> + <img :src="dialogImageUrl" width="100%" alt=""> + </el-dialog> + </el-form-item> + </el-form> + <div slot="footer" class="dialog-footer"> + <el-button @click="dialogForm = false">取 消</el-button> + <el-button type="primary" @click="upload">确 定</el-button> + </div> + </el-dialog> + </div> +</template> +<script> +import Pagination from '@/components/Pagination' // 通过 el-pagination二次打包 +import { requestFN } from '@/utils/request' +import waves from '@/directive/waves' // waves directive +import { upload } from '@/utils/upload' +export default { + components: { Pagination }, + directives: { waves }, + data() { + return { + config: config, + listLoading: true, + dialogForm: false, + dialogImageUrl: '', + dialogVisible: false, + add: true, + del: true, + edit: true, + listQuery: { + page: 1, + limit: 20 + }, + total: 0, + KEYWORDS: '', + dates: [], + varList: [], + hideUpload: false, + form: { + NAME: '', // + FFILE: [] + }, + rules: { + NAME: [{ required: true, message: '名称不能为空', trigger: 'blur' }], + FILE: [{ required: true, message: '附件不能为空', trigger: 'blur' }] + } + } + }, + created() { + this.getList() + }, + methods: { + getRowKey(row) { + return row.RISKWARNING_ID + }, + // 搜索 + getQuery() { + this.$refs.multipleTable.clearSelection() + this.getList() + }, + + // 获取列表 + getList() { + this.listLoading = true + requestFN( + '/riskdisclaimer/list?showCount=' + this.listQuery.limit + '¤tPage=' + this.listQuery.page, + { + KEYWORDS: this.KEYWORDS, + TYPE: '3' + } + ).then((data) => { + this.listLoading = false + this.varList = data.varList + this.total = data.page.totalResult + // this.hasButton() + }).catch((e) => { + this.listLoading = false + }) + }, + // 添加 + handleAdd() { + this.hideUpload = false + this.resetForm() + if (this.$refs.upload) { + this.$refs.upload.clearFiles() + } + this.dialogForm = true + }, + beforeFileUpload(file) { + const types = ['image/jpeg', 'image/jpg', 'image/png'] + const isImage = types.includes(file.type) + if (!isImage) { + this.$message.error('上传图片只能是 JPG、JPEG、PNG 格式!') + return false + } else { + this.form.FFILE = file + } + }, + handlePictureCardPreview(file, fileList) { + this.dialogImageUrl = file.url + this.dialogVisible = true + }, + handleChangeIMG(file, fileList) { + const types = ['image/jpeg', 'image/jpg', 'image/png'] + const isImage = types.includes(file.raw.type) + if (!isImage) { + this.$message.error('上传图片只能是 JPG、JPEG、PNG 格式!') + fileList.pop() + } + this.hideUpload = fileList.length >= 1 + }, + handleRemove(file, fileList) { + this.hideUpload = fileList.length >= 1 + }, + // 保存 + upload() { + this.$refs.form.validate(valid => { + if (this.$refs.upload.uploadFiles.length < 1) { + this.$message({ + message: '请上传图片', + type: 'error' + }) + return false + } + this.$refs.upload.submit() + const loading = this.$loading({ + lock: true, + text: '上传中...', + spinner: 'el-icon-loading', + background: 'rgba(0, 0, 0, 0.7)' + }) + const formData = new FormData() + Object.keys(this.form).map(key => { + formData.append(key, this.form[key]) + }) + formData.append('TYPE', '3') + upload( + '/riskdisclaimer/add', + formData + ).then((data) => { + this.dialogForm = false + this.getList() + loading.close() + }).catch((e) => { + loading.close() + }) + }) + }, + downloadFile(RISKWARNING_ID) { + this.$confirm('确定要下载此文件吗?', { + confirmButtonText: '确定', + cancelButtonText: '取消', + type: 'warning' + }).then(() => { + this.listLoading = false + // '/mfolder/download?RISKWARNING_ID=' + RISKWARNING_ID, + window.location.href = config.httpurl + 'riskdisclaimer/goDownload?RISKWARNING_ID=' + RISKWARNING_ID + }).catch(() => { + this.listLoading = false + }) + this.listLoading = false + }, + handleDelete(id) { + this.$confirm('确定要删除吗?', { + confirmButtonText: '确定', + cancelButtonText: '取消', + type: 'warning' + }).then(() => { + this.listLoading = true + requestFN( + '/riskdisclaimer/delete', + { + RISKWARNING_ID: id + } + ).then(() => { + this.$message({ + message: '删除成功', + type: 'success' + }) + this.listLoading = false + this.varList = [] + this.listQuery.page = 1 + this.getList() + }).catch((e) => { + this.listLoading = false + }) + }).catch(() => { + }) + }, + batchDel() { + const _selectData = this.$refs.multipleTable.selection + if (_selectData == null || _selectData.length == 0) { + this.$message({ + message: '请选中要删除的项...', + type: 'error' + }) + return false + } + const ids = _selectData.map((item, index) => { + return item.RISKWARNING_ID + }).join(',') + + this.$confirm('确定要删除选中的数据吗?', { + confirmButtonText: '确定', + cancelButtonText: '取消', + type: 'warning' + }).then(() => { + this.listLoading = true + requestFN( + '/riskdisclaimer/deleteAll', + { + DATA_IDS: ids + } + ).then(() => { + this.listLoading = false + this.varList = [] + this.listQuery.page = 1 + this.$refs.multipleTable.clearSelection() + this.$message({ + message: '批量删除成功', + type: 'success' + }) + this.getList() + }).catch((e) => { + this.listLoading = false + }) + }).catch(() => { + }) + }, + // 判断按钮权限,用于是否显示按钮 + hasButton: function() { + var keys = 'riskwarning:add,riskwarning:del,riskwarning:edit,toExcel' + requestFN( + '/head/hasButton', + { + keys: keys + } + ).then((data) => { + this.add = data.riskwarningfhadminadd // 新增权限 + this.del = data.riskwarningfhadmindel // 删除权限 + this.edit = data.riskwarningfhadminedit // 修改权限 + }).catch((e) => { + this.listLoading = false + }) + }, + goKeyReset() { + this.KEYWORDS = '' + this.getList() + }, + resetForm() { + this.form = { + NAME: '', // + FFILE: [] + } + } + } + +} + +</script> +<style> + .hide .el-upload--picture-card { + display: none; + } +</style> From c85d5a54663d839f076e9ce84eb986cb81fcce6a Mon Sep 17 00:00:00 2001 From: "1261008090@qq.com" <wangxuan> Date: Wed, 30 Oct 2024 14:35:27 +0800 Subject: [PATCH 4/4] =?UTF-8?q?=E4=BC=98=E5=8C=96=E4=BA=BA=E5=91=98?= =?UTF-8?q?=E5=AE=9A=E4=BD=8D=E6=A0=87=E8=AE=B0=E7=82=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/views/map/index.vue | 171 +++++++++++++++++++++------------------- 1 file changed, 88 insertions(+), 83 deletions(-) diff --git a/src/views/map/index.vue b/src/views/map/index.vue index d2b4712..2e5b981 100644 --- a/src/views/map/index.vue +++ b/src/views/map/index.vue @@ -93,11 +93,11 @@ :corp-info-id="CORP_INFO_ID" :area="area" :gangkou="gangkouActive"/> - <renyuan - v-if="gangkouActive && gangkouActive !== '00004' && gangkouActive !== '00002' && gangkouActive !== '00005' && bottomOptionsIndex === 4" - :corp-info-id="CORP_INFO_ID" - :area="area" - :gangkou="gangkouActive"/> + <!-- <renyuan--> + <!-- v-if="gangkouActive && gangkouActive !== '00004' && gangkouActive !== '00002' && gangkouActive !== '00005' && bottomOptionsIndex === 4"--> + <!-- :corp-info-id="CORP_INFO_ID"--> + <!-- :area="area"--> + <!-- :gangkou="gangkouActive"/>--> <renyuan-cfd v-if="gangkouActive && gangkouActive === '00004' && bottomOptionsIndex === 1" :corp-info-id="CORP_INFO_ID" @@ -226,8 +226,8 @@ leave-active-class="animate__animated animate__fadeOutUp" > <div v-if="isPeopleTrajectory" class="people_trajectory"> - <el-select v-model="peopleTrajectoryValue" popper-class="people_trajectory_select"> - <el-option v-for="item in onePerLocArr" :key="item.id" :value="item.id" :label="item.id"/> + <el-select v-model="peopleTrajectoryValue" popper-class="people_trajectory_select" filterable> + <el-option v-for="item in onePerLocArr" :key="item.id" :value="item.id" :label="item.name || item.id"/> </el-select> <el-button class="search_btn" @click="addTrajectory">搜索</el-button> <el-button class="reset_btn" @click="()=>{removeTrajectory();peopleTrajectoryValue = ''}">重置</el-button> @@ -326,6 +326,8 @@ var PI = 3.1415926535897932384626 var a = 6378245.0 // 卫星椭球坐标投影到平面地图坐标系的投影因子。 var ee = 0.00669342162296594323 // 椭球的偏心率。//判断是否在国内,在中国国内的经纬度才需要做偏移 const iframeObj = null +const mqttPoint = {} +let trajectoryEntityCollection = {} export default { components: { AnquanCfd, @@ -478,7 +480,7 @@ export default { ], myEntityCollection: {}, poinEntity: {}, - mqttPoint: {}, + // mqttPoint: {}, allOrientationPoint: [], gangkouActive: '', centerOptionsList: [ @@ -1247,7 +1249,7 @@ export default { linkPort: '8093', VIIDPort: '8088' }, - trajectoryEntityCollection: {}, + // trajectoryEntityCollection: {}, isPeopleTrajectory: false, peopleTrajectoryValue: '' } @@ -1555,24 +1557,24 @@ export default { document.addEventListener('contextmenu', function(event) { event.preventDefault() }) - // this.handler.setInputAction(movement => { - // const pick = viewer.scene.pick(movement.position) - // if (Cesium.defined(pick) && (pick.id.id)) { - // if (!pick.id._monitoItems) { - // this.removeTrajectory() - // return - // } - // const point_type = pick.id._monitoItems.data.point_type - // const point_id = pick.id._monitoItems.data.id - // const corpInfoId = pick.id._monitoItems.data.corpInfoId - // if (point_type === '标记点peoplePositionOne') { - // this.removeTrajectory() - // this.addTrajectory(point_id, corpInfoId) - // } - // } else { - // this.removeTrajectory() - // } - // }, Cesium.ScreenSpaceEventType.RIGHT_CLICK) + // this.handler.setInputAction(movement => { + // const pick = viewer.scene.pick(movement.position) + // if (Cesium.defined(pick) && (pick.id.id)) { + // if (!pick.id._monitoItems) { + // this.removeTrajectory() + // return + // } + // const point_type = pick.id._monitoItems.data.point_type + // const point_id = pick.id._monitoItems.data.id + // const corpInfoId = pick.id._monitoItems.data.corpInfoId + // if (point_type === '标记点peoplePositionOne') { + // this.removeTrajectory() + // this.addTrajectory(point_id, corpInfoId) + // } + // } else { + // this.removeTrajectory() + // } + // }, Cesium.ScreenSpaceEventType.RIGHT_CLICK) }, addTrajectory() { this.removeTrajectory() @@ -1595,14 +1597,14 @@ export default { const collection = new Cesium.CustomDataSource('trajectoryEntityCollection') collection.entities.add(entity) viewer.dataSources.add(collection) - this.trajectoryEntityCollection = collection + trajectoryEntityCollection = collection } }) }, removeTrajectory() { - if (Object.keys(this.trajectoryEntityCollection).length === 0) return - viewer.dataSources.remove(this.trajectoryEntityCollection) - this.trajectoryEntityCollection = {} + if (Object.keys(trajectoryEntityCollection).length === 0) return + viewer.dataSources.remove(trajectoryEntityCollection) + trajectoryEntityCollection = {} }, getCatesian3FromPX: function(px) { @@ -1677,11 +1679,11 @@ export default { transformWGS84ToCartesian: function(position, alt) { // eslint-disable-next-line no-return-assign return position ? Cesium.Cartesian3.fromDegrees( - position.lng || position.lon, - position.lat, - position.alt = alt || position.alt, - Cesium.Ellipsoid.WGS84 - ) + position.lng || position.lon, + position.lat, + position.alt = alt || position.alt, + Cesium.Ellipsoid.WGS84 + ) : Cesium.Cartesian3.ZERO }, closeBubbles() { @@ -2361,7 +2363,7 @@ export default { } else { ry_drag.addEntity(this.perLocArr[i]) - this.mqttPoint['cfdrydw' + this.perLocArr[i].cardNo] = this.perLocArr[i].cardNo + mqttPoint['cfdrydw' + this.perLocArr[i].cardNo] = this.perLocArr[i].cardNo } } }, @@ -2715,7 +2717,7 @@ export default { czksPerLoc.push(perLoc) ry_drag.addEntity(perLoc) var qianzhui = 'czksperson' - _this.mqttPoint[qianzhui + item.cardId] = item.cardId + mqttPoint[qianzhui + item.cardId] = item.cardId } } // 最后更新ninePerLocArr @@ -2788,7 +2790,7 @@ export default { } this.onePerLocArr.push(perLoc) ry_drag.addEntity(perLoc) - this.mqttPoint[this.subscription.topic.substring(0, this.subscription.topic.lastIndexOf('+')) + item.deviceCode] = item.deviceCode + mqttPoint[this.subscription.topic.substring(0, this.subscription.topic.lastIndexOf('+')) + item.deviceCode] = item.deviceCode } } } else if (topic.indexOf('alarm') !== -1) { @@ -2803,20 +2805,20 @@ export default { }) }, clearMqttPoint(prefix) { - for (const mqttPointKey in this.mqttPoint) { - const key = prefix ? prefix + this.mqttPoint[mqttPointKey] : mqttPointKey - viewer.entities.removeById(this.mqttPoint[key]) - this.onePerLocArr = this.onePerLocArr.filter(item => item.data_id !== this.mqttPoint[key]) - delete this.mqttPoint[key] + for (const mqttPointKey in mqttPoint) { + const key = prefix ? prefix + mqttPoint[mqttPointKey] : mqttPointKey + viewer.entities.removeById(mqttPoint[key]) + this.onePerLocArr = this.onePerLocArr.filter(item => item.data_id !== mqttPoint[key]) + delete mqttPoint[key] } }, clearRYDWPoint(prefix) { this.fwebsocket.close() - for (const mqttPointKey in this.mqttPoint) { - const key = prefix ? prefix + this.mqttPoint[mqttPointKey] : mqttPointKey - viewer.entities.removeById(this.mqttPoint[key]) - this.onePerLocArr = this.onePerLocArr.filter(item => item.data_id !== this.mqttPoint[key]) - delete this.mqttPoint[key] + for (const mqttPointKey in mqttPoint) { + const key = prefix ? prefix + mqttPoint[mqttPointKey] : mqttPointKey + viewer.entities.removeById(mqttPoint[key]) + this.onePerLocArr = this.onePerLocArr.filter(item => item.data_id !== mqttPoint[key]) + delete mqttPoint[key] } }, // 删除人员定位点 @@ -2999,8 +3001,9 @@ export default { _this.fwebsocket = new WebSocket(encodeURI(wsUrl)) _this.fwebsocket.onmessage = function(message) { console.info('接收消息') - const peopleList = JSON.parse(message.data).data.data + const peopleList = JSON.parse(message.data) console.log(peopleList) + viewer.entities.suspendEvents() for (let i = 0; i < peopleList.length; i++) { const item = peopleList[i] if ((!item)) continue @@ -3019,6 +3022,7 @@ export default { } else { const perLoc = { id: item.id, + name: item.name, x: x, y: y, icon_type: 'img4_0' + pointColor, @@ -3029,9 +3033,10 @@ export default { } _this.onePerLocArr.push(perLoc) ry_drag.addEntity(perLoc) - _this.mqttPoint[_this.subscription.topic.substring(0, _this.subscription.topic.lastIndexOf('+')) + item.id] = item.id + mqttPoint[_this.subscription.topic.substring(0, _this.subscription.topic.lastIndexOf('+')) + item.id] = item.id } } + viewer.entities.resumeEvents() } } }, @@ -3067,12 +3072,12 @@ export default { if (decodedStr) { // const perTrack = JSON.parse(decodedStr) const perTrack = { 'msg': '000', 'data': [ - '8905,118.50022313549867,38.92716921306408,-88.96163116878053,0.15,8905,测试工单', - '8001,118.5044033058593,38.926660124965956,-88.96163116878053,0.15,8001,张悦', - '8002,118.48886198164132,38.916885738277635,-88.96163116878053,0.15,8002,齐津铖', - '8003,118.50289308906841,38.92012841170512,-88.96163116878053,0.15,8003,白伟', - '8004,118.48820877892216,38.91690951376236,-88.96163116878053,0.15,8004,孙海官' - ] } + '8905,118.50022313549867,38.92716921306408,-88.96163116878053,0.15,8905,测试工单', + '8001,118.5044033058593,38.926660124965956,-88.96163116878053,0.15,8001,张悦', + '8002,118.48886198164132,38.916885738277635,-88.96163116878053,0.15,8002,齐津铖', + '8003,118.50289308906841,38.92012841170512,-88.96163116878053,0.15,8003,白伟', + '8004,118.48820877892216,38.91690951376236,-88.96163116878053,0.15,8004,孙海官' + ] } if (perTrack.msg === '000' && perTrack.data && perTrack.data.length > 0) { perTrack.data.forEach(item => { const newPos = item.split(',') @@ -3743,38 +3748,38 @@ export default { transform: translateY(0); } } - .people_trajectory{ - position: absolute; - top: -60px; - left: 0; - width: 400px; - padding: 10px; - background-image: linear-gradient(to right, rgb(31 62 129 / 57%) 0%, rgb(17 93 255 / 40%) 50%, rgb(31 62 129 / 57%) 100%); - .search_btn{ - background-color: #1563e3; - color: #fff; - border-color: #1563e3; - } - .reset_btn{ - background-color: #558be5; - color: #fff; - border-color: #558be5; - } +.people_trajectory{ + position: absolute; + top: -60px; + left: 0; + width: 400px; + padding: 10px; + background-image: linear-gradient(to right, rgb(31 62 129 / 57%) 0%, rgb(17 93 255 / 40%) 50%, rgb(31 62 129 / 57%) 100%); + .search_btn{ + background-color: #1563e3; + color: #fff; + border-color: #1563e3; } + .reset_btn{ + background-color: #558be5; + color: #fff; + border-color: #558be5; + } +} </style> <style> .cesium-viewer-toolbar, .cesium-viewer-fullscreenContainer, .cesium-infoBox-visible { display: none !important; } - .people_trajectory .el-input__inner{ - background-color: #100693 !important; - border-color: #100693 !important; - color: #fff !important; - } - .people_trajectory_select{ - background-color: #100693 !important; - border-color: #100693 !important; - } +.people_trajectory .el-input__inner{ + background-color: #100693 !important; + border-color: #100693 !important; + color: #fff !important; +} +.people_trajectory_select{ + background-color: #100693 !important; + border-color: #100693 !important; +} .people_trajectory_select .el-select-dropdown__item{ color: #fff !important; }