From 457f9c817adef8b003ee6379f493798bae5cbb69 Mon Sep 17 00:00:00 2001 From: zhouwx <1175765986@qq.com> Date: 星期一, 19 五月 2025 09:31:19 +0800 Subject: [PATCH] 修改 --- src/views/Admin/components/callListMod.vue | 188 ++++++++++++++++++++++++++++++++++++++++++---- 1 files changed, 169 insertions(+), 19 deletions(-) diff --git a/src/views/Admin/components/callListMod.vue b/src/views/Admin/components/callListMod.vue index 7b4e630..53929b3 100644 --- a/src/views/Admin/components/callListMod.vue +++ b/src/views/Admin/components/callListMod.vue @@ -6,10 +6,15 @@ width="50%" cancelText="取消" @cancel="handleCancel" + @ok="handleCancel" > - <a-table :columns="columns" :data-source="data" bordered :pagination="pagination"> + <a-table :columns="columns" :data-source="data" bordered :pagination="pagination" :rowKey="record=>record.id"> <template #index="text,record,index"> {{ index + 1 }} + </template> + <template #receiveUnit="name,record"> + <span v-if="unitType == 3">{{ name }}</span> + <span v-else style="cursor: pointer;color: #1890ff" @click="digData(record.forwardWarnInfoId,record.unittype)">{{ name }}</span> </template> <template #warningLevel="text"> <a-tag :color="text === 3 ? 'yellow' :text === 2? 'orange':text === 1?'red':'blue'"> @@ -23,17 +28,65 @@ {{ unittype==1?'省级':unittype==2?'地(市、州)级':unittype==3?'区县级':unittype==4?'村(乡、镇)级':'管理员' }} </a-tag> </template > + <template #responseStatus="text"> + <a-tag :color="text === 3 ? 'red' :text === 2? 'green':text === 1?'orange':'blue'"> + {{text == 1 ? '待叫应' : text == 2 ?'已叫应':text == 3 ?'超时未叫应' : ''}} + </a-tag> + </template> + <template #forwardRate="text,record"> + {{record.forwardStatus == 1?text: '--'}} + </template> + <template #operation="text, record, index"> + <a-button type="primary" @click="viewDetail(record.id)">查看详情</a-button> + </template> </a-table> + <call-list-mod ref="callList"></call-list-mod> + <a-modal + title="响应举措" + centered + :visible="detailVisible" + width="50%" + cancelText="取消" + @cancel="detailCancel" + @ok="detailCancel" + > + <div class="detail-mod"> + <a-row :gutter="24" v-if="details.title"><a-col :span="4">标题</a-col><a-col class="noBorder" :span="14" style="font-size: 24px;font-weight: bolder">{{details.title}}</a-col></a-row> + <a-row :gutter="24" v-if="details.publishingUnit"><a-col :span="4">发布单位</a-col><a-col :span="14">{{details.publishingUnit}}</a-col></a-row> + <a-row :gutter="24" v-if="details.publishingTime"><a-col :span="4">发布时间</a-col><a-col :span="14">{{details.publishingTime}}</a-col></a-row> + <a-row :gutter="24" v-if="details.baseMeasures && details.baseMeasures.length > 0"><a-col :span="4">基础措施</a-col> + <a-col :span="14" class="noBorder"> + <div v-for="(item,index) in details.baseMeasures" :key="index"> + {{index+1}}、{{item}} + </div> + </a-col> + </a-row> + <a-row :gutter="24" v-if="details.responseMeasure"><a-col :span="4">响应反馈</a-col><a-col :span="14">{{details.responseMeasure}}</a-col></a-row> + <a-row :gutter="24" v-if="details.attachments && details.attachments.length > 0"><a-col :span="4">附件内容</a-col> + <a-col :span="14" class="noBorder"> + <a-button @click="viewFile(item)" type="link" v-for="(item,index) in details.attachments" :key="index"><a-icon type="paper-clip"/>{{item.attachmentName}}</a-button> + </a-col> + </a-row> + </div> + </a-modal> </a-modal> </template> <script> import {getResponseById} from "@/api/list"; +import callListMod from "@/views/Admin/components/callListMod"; +import msgDetailMod from "@/views/Admin/components/msgDetailMod"; +import {responseMeasure} from "@/api/new"; +import axios from "axios"; +import Cookies from "js-cookie"; export default { - name: 'callListMod', + name: 'call-list-mod', + components: { callListMod }, data () { return { visible: false, + detailVisible: false, + unitType: null, search:{ pageIndex: 1, pageSize: 10, @@ -42,6 +95,7 @@ } }, data: [], + details: {}, pagination: { current: 1, defaultCurrent: 1, @@ -54,7 +108,6 @@ { title: '序号', dataIndex: 'index', - width: '8%', scopedSlots: { customRender: 'index' } @@ -62,34 +115,39 @@ { title: '接收人单位', dataIndex: 'receiveUnit', - width: '20%', - scopedSlots: { - customRender: 'receiveUnit' - } + scopedSlots: { customRender: 'receiveUnit' } }, { title: '接收人', dataIndex: 'recipienterName', - width: '20%', - scopedSlots: { - customRender: 'recipienterName' - } }, { title: '级别', dataIndex: 'unittype', - width: '12%', scopedSlots: { customRender: 'unittype' }, }, { - title: '叫应时间', - dataIndex: 'responseTime', - width: '15%', + title: '叫应状态', + dataIndex: 'responseStatus', scopedSlots: { - customRender: 'responseTime' - } //设置定制化表格数据 + customRender: 'responseStatus' + } + }, + { + title: '转发叫应率', + dataIndex: 'forwardRate', + scopedSlots: { + customRender: 'forwardRate' + } + }, + { + title: '响应措施', + dataIndex: 'operation', + scopedSlots: { + customRender: 'operation' + }, } ] } @@ -98,11 +156,17 @@ const t = this }, methods:{ - openMod(id){ + openMod(id,type){ const t = this t.visible = true + t.unitType = type t.search.searchParams.warnInfoId = id t.getData() + if(type == 3){ + t.columns = t.columns.filter(i=>i.dataIndex !== 'forwardRate') + }else{ + t.columns = t.columns.filter(i=>i.dataIndex !== 'operation') + } }, async getData(){ const t = this @@ -112,6 +176,30 @@ t.pagination.total = res.data.total }else{ this.$message.error(res.data.msg) + } + }, + + async viewDetail(id){ + const t = this + const res = await responseMeasure({id:id}) + if(res.data.code == 100){ + const data = res.data.data + if(!data.baseMeasures || data.baseMeasures.length == 0){ + t.$message.error('该记录暂无响应措施') + }else{ + t.details = data + t.detailVisible = true + } + }else{ + this.$message.error(res.data.msg) + } + }, + + digData(id,type){ + if(id){ + this.$refs.callList.openMod(id,type) + }else{ + this.$message.error('暂无下级叫应数据') } }, @@ -126,13 +214,75 @@ const t = this t.visible = false; }, + detailCancel(e){ + this.detailVisible = false + }, onChange(value) { console.log(value); - } + }, + viewFile(item){ + const t = this + const { baseUrl } = require('../../../../config/env.' + process.env.NODE_ENV) + axios.get(baseUrl + item.attachment,{headers:{'Content-Type': 'application/json','tk': `${Cookies.get('resTk')}`,'uid':`${Cookies.get('resUid')}`},responseType: 'blob'}).then(res=>{ + if (res) { + const link = document.createElement('a') + let blob = new Blob([res.data],{type: res.data.type}) + link.style.display = "none"; + link.href = URL.createObjectURL(blob); // 创建URL + window.open(link.href) + // link.setAttribute("download", item.attachementName); + // document.body.appendChild(link); + // link.click(); + // document.body.removeChild(link); + } else { + this.$message.error('获取文件失败') + } + }) + }, } } </script> <style lang="less" scoped> +.detail-mod{ + font-size: 16px; + .ant-row{ + margin-bottom: 24px; + display: flex; + align-items: center; + + &:first-of-type{ + margin-bottom: 12px; + } + + .ant-col{ + &:first-of-type{ + text-align: right; + } + + &:last-of-type{ + border: 1px solid #d9d9d9; + padding: 5px 10px; + } + } + + .noBorder{ + border: none !important; + padding: 5px 10px; + } + + .table{ + display: flex; + align-items: center; + border-bottom: 1px solid @blackBorder; + &:last-of-type{ + border-bottom: none; + } + &>div{ + padding: 5px 10px; + } + } + } +} </style> -- Gitblit v1.9.2