# events

id: 17f61140-95ab-4b0b-a798-b57ea1423cf9
app_name: my_agent
user_id: codebuddy
session_id: test_long_output_001
invocation_id: e-a5956bec-6f8a-451f-b787-adfb9dfce554
event_data:
  {"model_version":"deepseek-v4-flash","content":{"parts":[{"text":"Now let me look at the reference pages to understand the patterns used in the V3 project"},{"function_call":{"id":"call_1e765f039c1b423d88a293c2","args":{"path":"D:/nzy/workspace_git/Baseplatform-Ui-V3/src/views/serviceManage/serviceIndexDd.vue","head":100},"name":"read_text_file"}},{"function_call":{"id":"call_5577b13507874491819e612d","args":{"path":"D:/nzy/workspace_git/Baseplatform-Ui-V3/src/views/serviceManage/workData.vue","head":100},"name":"read_text_file"}}],"role":"model"},"partial":false,"finish_reason":"STOP","usage_metadata":{"cached_content_token_count":0,"candidates_token_count":224,"prompt_token_count":114017,"thoughts_token_count":47,"total_token_count":114241},"invocation_id":"e-a5956bec-6f8a-451f-b787-adfb9dfce554","author":"my_agent","actions":{"state_delta":{},"artifact_delta":{},"requested_auth_configs":{},"requested_tool_confirmations":{}},"node_info":{"path":"my_agent@1"},"long_running_tool_ids":[],"id":"17f61140-95ab-4b0b-a798-b57ea1423cf9","timestamp":1785486245.548079}


id: cd803b9d-20f2-4af4-b842-550f09f721ca
app_name: my_agent
user_id: codebuddy
session_id: test_long_output_001
invocation_id: e-a5956bec-6f8a-451f-b787-adfb9dfce554
event_data:
  {"content":{"parts":[{"function_response":{"id":"call_1e765f039c1b423d88a293c2","name":"read_text_file","response":{"content":[{"type":"text","text":"<template>\r\n  <bg-and-info title-menu=\"勤务管理\" title-name=\"勤务排班\" step-url=\"/frontend/serviceIndexDd\" bg-size=\"small\">\r\n    <div class=\"service-page\">\r\n      <!-- 左侧栏 -->\r\n      <div class=\"service-left\">\r\n        <!-- 今日勤务情况 -->\r\n        <div class=\"panel panel-today\">\r\n          <div class=\"panel-title\">今日勤务情况</div>\r\n          <div class=\"stat-cards\">\r\n            <div class=\"stat-card card-level\">\r\n              <div class=\"stat-value\">{{ todayDuty.dutyLevel }}</div>\r\n              <div class=\"stat-label\">勤务等级</div>\r\n            </div>\r\n            <div class=\"stat-card card-police\">\r\n              <div class=\"stat-value\">{{ todayDuty.onlinePolice }}</div>\r\n              <div class=\"stat-label\">在线警力</div>\r\n            </div>\r\n            <div class=\"stat-card card-rate\">\r\n              <div class=\"stat-value\">{{ todayDuty.attendanceRate }}%</div>\r\n              <div class=\"stat-label\">今日出勤率</div>\r\n            </div>\r\n          </div>\r\n\r\n          <!-- 今日值班领导 -->\r\n          <div class=\"duty-leader-section\">\r\n            <div class=\"section-header\">\r\n              <span class=\"section-icon\"></span>\r\n              <span class=\"section-text\">今日值班领导</span>\r\n              <span class=\"edit-btn\" @click=\"showDutyEdit = !showDutyEdit\">编辑</span>\r\n            </div>\r\n            <div class=\"duty-list\">\r\n              <div class=\"duty-group leader-group\">\r\n                <span class=\"duty-group-icon leader-icon\"></span>\r\n                <div class=\"duty-items\">\r\n                  <div v-for=\"(item, idx) in dutyLeaders\" :key=\"'l'+idx\" class=\"duty-item\">\r\n                    {{ item.dept }}　　{{ item.leader }}\r\n                  </div>\r\n                </div>\r\n              </div>\r\n              <div class=\"duty-group normal-group\">\r\n                <span class=\"duty-group-icon normal-icon\"></span>\r\n                <div class=\"duty-items\">\r\n                  <div v-for=\"(item, idx) in dutyNormals\" :key=\"'n'+idx\" class=\"duty-item\">\r\n                    {{ item.dept }}　{{ item.leader }}\r\n                  </div>\r\n                </div>\r\n              </div>\r\n            </div>\r\n          </div>\r\n\r\n          <!-- 重点工作提示 -->\r\n          <div class=\"notice-section\">\r\n            <div class=\"section-header\">\r\n              <span class=\"section-icon\"></span>\r\n              <span class=\"section-text\">重点工作提示</span>\r\n              <span class=\"edit-btn\" @click=\"showNoticeEdit = !showNoticeEdit\">编辑</span>\r\n            </div>\r\n            <div class=\"notice-marquee\">\r\n              <span class=\"notice-icon\"></span>\r\n              <div class=\"marquee-box\">\r\n                <div class=\"marquee-track\" :style=\"{ animationDuration: noticeList.length * 8 + 's' }\">\r\n                  <span v-for=\"(n, i) in noticeList\" :key=\"i\" class=\"marquee-item\">{{ n }}</span>\r\n                  <span v-for=\"(n, i) in noticeList\" :key=\"'dup'+i\" class=\"marquee-item\">{{ n }}</span>\r\n                </div>\r\n              </div>\r\n            </div>\r\n          </div>\r\n        </div>\r\n\r\n        <!-- 岗位类型分布 -->\r\n        <div class=\"panel panel-post-type\">\r\n          <div class=\"panel-title\">岗位类型分布</div>\r\n          <div class=\"ring-chart-view\">\r\n            <div class=\"ring-legend ring-legend-left\">\r\n              <div v-for=\"(item, idx) in postTypeList.slice(0, 4)\" :key=\"idx\" class=\"legend-item\">\r\n                <span class=\"legend-dot\" :style=\"{ background: item.color }\"></span>\r\n                <span class=\"legend-name\">{{ item.name }}</span>\r\n                <span class=\"legend-num\">{{ item.num }}</span>\r\n              </div>\r\n            </div>\r\n            <div class=\"ring-chart\" ref=\"ringChartRef\"></div>\r\n            <div class=\"ring-legend ring-legend-right\">\r\n              <div v-for=\"(item, idx) in postTypeList.slice(4, 8)\" :key=\"idx+4\" class=\"legend-item\">\r\n                <span class=\"legend-dot\" :style=\"{ background: item.color }\"></span>\r\n                <span class=\"legend-name\">{{ item.name }}</span>\r\n                <span class=\"legend-num\">{{ item.num }}</span>\r\n              </div>\r\n            </div>\r\n          </div>\r\n        </div>\r\n\r\n        <!-- 直属大队柱状图 -->\r\n        <div class=\"panel panel-team-chart\">\r\n          <div class=\"panel-tab-header\">\r\n            <span class=\"tab-label active\">直属大队</span>\r\n          </div>\r\n          <div class=\"type-switch\">\r\n            <label class=\"radio-label\" :class=\"{ active: postType === 3 }\">\r\n              <input type=\"radio\" v-model=\"postType\" :value=\"3\" /> 全部\r\n            </label>\r"}],"structuredContent":{"content":"<template>\r\n  <bg-and-info title-menu=\"勤务管理\" title-name=\"勤务排班\" step-url=\"/frontend/serviceIndexDd\" bg-size=\"small\">\r\n    <div class=\"service-page\">\r\n      <!-- 左侧栏 -->\r\n      <div class=\"service-left\">\r\n        <!-- 今日勤务情况 -->\r\n        <div class=\"panel panel-today\">\r\n          <div class=\"panel-title\">今日勤务情况</div>\r\n          <div class=\"stat-cards\">\r\n            <div class=\"stat-card card-level\">\r\n              <div class=\"stat-value\">{{ todayDuty.dutyLevel }}</div>\r\n              <div class=\"stat-label\">勤务等级</div>\r\n            </div>\r\n            <div class=\"stat-card card-police\">\r\n              <div class=\"stat-value\">{{ todayDuty.onlinePolice }}</div>\r\n              <div class=\"stat-label\">在线警力</div>\r\n            </div>\r\n            <div class=\"stat-card card-rate\">\r\n              <div class=\"stat-value\">{{ todayDuty.attendanceRate }}%</div>\r\n              <div class=\"stat-label\">今日出勤率</div>\r\n            </div>\r\n          </div>\r\n\r\n          <!-- 今日值班领导 -->\r\n          <div class=\"duty-leader-section\">\r\n            <div class=\"section-header\">\r\n              <span class=\"section-icon\"></span>\r\n              <span class=\"section-text\">今日值班领导</span>\r\n              <span class=\"edit-btn\" @click=\"showDutyEdit = !showDutyEdit\">编辑</span>\r\n            </div>\r\n            <div class=\"duty-list\">\r\n              <div class=\"duty-group leader-group\">\r\n                <span class=\"duty-group-icon leader-icon\"></span>\r\n                <div class=\"duty-items\">\r\n                  <div v-for=\"(item, idx) in dutyLeaders\" :key=\"'l'+idx\" class=\"duty-item\">\r\n                    {{ item.dept }}　　{{ item.leader }}\r\n                  </div>\r\n                </div>\r\n              </div>\r\n              <div class=\"duty-group normal-group\">\r\n                <span class=\"duty-group-icon normal-icon\"></span>\r\n                <div class=\"duty-items\">\r\n                  <div v-for=\"(item, idx) in dutyNormals\" :key=\"'n'+idx\" class=\"duty-item\">\r\n                    {{ item.dept }}　{{ item.leader }}\r\n                  </div>\r\n                </div>\r\n              </div>\r\n            </div>\r\n          </div>\r\n\r\n          <!-- 重点工作提示 -->\r\n          <div class=\"notice-section\">\r\n            <div class=\"section-header\">\r\n              <span class=\"section-icon\"></span>\r\n              <span class=\"section-text\">重点工作提示</span>\r\n              <span class=\"edit-btn\" @click=\"showNoticeEdit = !showNoticeEdit\">编辑</span>\r\n            </div>\r\n            <div class=\"notice-marquee\">\r\n              <span class=\"notice-icon\"></span>\r\n              <div class=\"marquee-box\">\r\n                <div class=\"marquee-track\" :style=\"{ animationDuration: noticeList.length * 8 + 's' }\">\r\n                  <span v-for=\"(n, i) in noticeList\" :key=\"i\" class=\"marquee-item\">{{ n }}</span>\r\n                  <span v-for=\"(n, i) in noticeList\" :key=\"'dup'+i\" class=\"marquee-item\">{{ n }}</span>\r\n                </div>\r\n              </div>\r\n            </div>\r\n          </div>\r\n        </div>\r\n\r\n        <!-- 岗位类型分布 -->\r\n        <div class=\"panel panel-post-type\">\r\n          <div class=\"panel-title\">岗位类型分布</div>\r\n          <div class=\"ring-chart-view\">\r\n            <div class=\"ring-legend ring-legend-left\">\r\n              <div v-for=\"(item, idx) in postTypeList.slice(0, 4)\" :key=\"idx\" class=\"legend-item\">\r\n                <span class=\"legend-dot\" :style=\"{ background: item.color }\"></span>\r\n                <span class=\"legend-name\">{{ item.name }}</span>\r\n                <span class=\"legend-num\">{{ item.num }}</span>\r\n              </div>\r\n            </div>\r\n            <div class=\"ring-chart\" ref=\"ringChartRef\"></div>\r\n            <div class=\"ring-legend ring-legend-right\">\r\n              <div v-for=\"(item, idx) in postTypeList.slice(4, 8)\" :key=\"idx+4\" class=\"legend-item\">\r\n                <span class=\"legend-dot\" :style=\"{ background: item.color }\"></span>\r\n                <span class=\"legend-name\">{{ item.name }}</span>\r\n                <span class=\"legend-num\">{{ item.num }}</span>\r\n              </div>\r\n            </div>\r\n          </div>\r\n        </div>\r\n\r\n        <!-- 直属大队柱状图 -->\r\n        <div class=\"panel panel-team-chart\">\r\n          <div class=\"panel-tab-header\">\r\n            <span class=\"tab-label active\">直属大队</span>\r\n          </div>\r\n          <div class=\"type-switch\">\r\n            <label class=\"radio-label\" :class=\"{ active: postType === 3 }\">\r\n              <input type=\"radio\" v-model=\"postType\" :value=\"3\" /> 全部\r\n            </label>\r"},"isError":false}}},{"function_response":{"id":"call_5577b13507874491819e612d","name":"read_text_file","response":{"content":[{"type":"text","text":"<template>\r\n  <bg-and-info title-menu=\"勤务管理\" title-name=\"施工智管\" step-url=\"/frontend/workData\" bg-size=\"small\">\r\n    <div class=\"work-page\">\r\n      <!-- 地图底层 -->\r\n      <div class=\"map-bg\">\r\n        <MapContainer\r\n          map-id=\"workMap\"\r\n          :map-zoom=\"13\"\r\n          :map-height=\"960\"\r\n          :map-width=\"1920\"\r\n          map-style=\"mapabc-wd\"\r\n          :drag-rotate=\"false\"\r\n        />\r\n      </div>\r\n\r\n      <!-- 左侧：施工智管列表 -->\r\n      <div class=\"left-panel\">\r\n        <div class=\"panel-title\">施工智管列表</div>\r\n\r\n        <!-- 搜索工具栏 -->\r\n        <div class=\"search-bar\">\r\n          <div class=\"search-input-wrap\">\r\n            <input class=\"search-input\" v-model=\"searchKeyword\" placeholder=\"关键字搜索\" />\r\n            <span class=\"search-btn\" @click=\"onSearch\"></span>\r\n          </div>\r\n          <select class=\"dept-select\" v-model=\"selectedDept\">\r\n            <option :value=\"0\">所属辖区</option>\r\n            <option v-for=\"d in deptOptions\" :key=\"d.id\" :value=\"d.id\">{{ d.name }}</option>\r\n          </select>\r\n          <div class=\"filter-btn\" :class=\"{ active: showFilter }\" @click=\"showFilter = !showFilter\">\r\n            <span class=\"filter-icon\"></span>\r\n            <span>高级筛选</span>\r\n          </div>\r\n        </div>\r\n\r\n        <!-- 列表 -->\r\n        <div class=\"work-list\">\r\n          <div\r\n            v-for=\"(item, idx) in workList\"\r\n            :key=\"idx\"\r\n            class=\"work-card\"\r\n            :class=\"{ active: selectedWorkId === item.id }\"\r\n            @click=\"selectWork(item)\"\r\n          >\r\n            <div class=\"card-header\">\r\n              <span class=\"work-name\" :title=\"item.name\">{{ item.name }}</span>\r\n              <span class=\"work-tag\" :class=\"`tag-${item.category}`\">{{ categoryMap[item.category] }}</span>\r\n            </div>\r\n            <div class=\"card-body\">\r\n              <div class=\"info-row\">\r\n                <span class=\"info-label\">施工单位：</span>\r\n                <span class=\"info-value\" :title=\"item.company\">{{ item.company }}</span>\r\n              </div>\r\n              <div class=\"info-row\">\r\n                <span class=\"info-label\">施工负责：</span>\r\n                <span class=\"info-value\">{{ item.manager }}</span>\r\n              </div>\r\n              <div class=\"info-row\">\r\n                <span class=\"info-label\">所属辖区：</span>\r\n                <span class=\"info-value\">{{ item.dept }}</span>\r\n              </div>\r\n              <div class=\"info-row\">\r\n                <span class=\"info-label\">起止时间：</span>\r\n                <span class=\"info-value\">{{ item.startTime }} ~ {{ item.endTime }}</span>\r\n              </div>\r\n            </div>\r\n            <div class=\"card-footer\">\r\n              <span class=\"status-tag\" :class=\"`status-${item.auditStatus}`\">\r\n                {{ auditStatusMap[item.auditStatus] }}\r\n              </span>\r\n              <span class=\"status-tag\" :class=\"`inspect-${item.inspectStatus}`\">\r\n                {{ inspectStatusMap[item.inspectStatus] }}\r\n              </span>\r\n            </div>\r\n          </div>\r\n        </div>\r\n      </div>\r\n\r\n      <!-- 右侧面板组 -->\r\n      <div class=\"right-panels\" v-show=\"!isInspectMode\">\r\n        <!-- 概况 -->\r\n        <div class=\"right-panel survey-panel\">\r\n          <div class=\"panel-title\">\r\n            <span>概况</span>\r\n            <span class=\"view-detail-link\" @click=\"showSummaryDetail = true\">查看详情</span>\r\n          </div>\r\n          <div class=\"survey-grid\">\r\n            <div class=\"survey-item\">\r\n              <span class=\"survey-icon icon-total\"></span>\r\n              <div class=\"survey-info\">\r\n                <div class=\"survey-num\">{{ surveyData.total }}</div>\r\n                <div class=\"survey-label\">施工总数</div>\r\n              </div>\r\n            </div>\r\n            <div class=\"survey-item\">\r\n              <span class=\"survey-icon icon-over\"></span>\r\n              <div class=\"survey-info\">\r\n                <div class=\"survey-num over\">{{ surveyData.overdue }}</div>\r\n                <div class=\"survey-label\">超期</div>\r\n              </div>\r"}],"structuredContent":{"content":"<template>\r\n  <bg-and-info title-menu=\"勤务管理\" title-name=\"施工智管\" step-url=\"/frontend/workData\" bg-size=\"small\">\r\n    <div class=\"work-page\">\r\n      <!-- 地图底层 -->\r\n      <div class=\"map-bg\">\r\n        <MapContainer\r\n          map-id=\"workMap\"\r\n          :map-zoom=\"13\"\r\n          :map-height=\"960\"\r\n          :map-width=\"1920\"\r\n          map-style=\"mapabc-wd\"\r\n          :drag-rotate=\"false\"\r\n        />\r\n      </div>\r\n\r\n      <!-- 左侧：施工智管列表 -->\r\n      <div class=\"left-panel\">\r\n        <div class=\"panel-title\">施工智管列表</div>\r\n\r\n        <!-- 搜索工具栏 -->\r\n        <div class=\"search-bar\">\r\n          <div class=\"search-input-wrap\">\r\n            <input class=\"search-input\" v-model=\"searchKeyword\" placeholder=\"关键字搜索\" />\r\n            <span class=\"search-btn\" @click=\"onSearch\"></span>\r\n          </div>\r\n          <select class=\"dept-select\" v-model=\"selectedDept\">\r\n            <option :value=\"0\">所属辖区</option>\r\n            <option v-for=\"d in deptOptions\" :key=\"d.id\" :value=\"d.id\">{{ d.name }}</option>\r\n          </select>\r\n          <div class=\"filter-btn\" :class=\"{ active: showFilter }\" @click=\"showFilter = !showFilter\">\r\n            <span class=\"filter-icon\"></span>\r\n            <span>高级筛选</span>\r\n          </div>\r\n        </div>\r\n\r\n        <!-- 列表 -->\r\n        <div class=\"work-list\">\r\n          <div\r\n            v-for=\"(item, idx) in workList\"\r\n            :key=\"idx\"\r\n            class=\"work-card\"\r\n            :class=\"{ active: selectedWorkId === item.id }\"\r\n            @click=\"selectWork(item)\"\r\n          >\r\n            <div class=\"card-header\">\r\n              <span class=\"work-name\" :title=\"item.name\">{{ item.name }}</span>\r\n              <span class=\"work-tag\" :class=\"`tag-${item.category}`\">{{ categoryMap[item.category] }}</span>\r\n            </div>\r\n            <div class=\"card-body\">\r\n              <div class=\"info-row\">\r\n                <span class=\"info-label\">施工单位：</span>\r\n                <span class=\"info-value\" :title=\"item.company\">{{ item.company }}</span>\r\n              </div>\r\n              <div class=\"info-row\">\r\n                <span class=\"info-label\">施工负责：</span>\r\n                <span class=\"info-value\">{{ item.manager }}</span>\r\n              </div>\r\n              <div class=\"info-row\">\r\n                <span class=\"info-label\">所属辖区：</span>\r\n                <span class=\"info-value\">{{ item.dept }}</span>\r\n              </div>\r\n              <div class=\"info-row\">\r\n                <span class=\"info-label\">起止时间：</span>\r\n                <span class=\"info-value\">{{ item.startTime }} ~ {{ item.endTime }}</span>\r\n              </div>\r\n            </div>\r\n            <div class=\"card-footer\">\r\n              <span class=\"status-tag\" :class=\"`status-${item.auditStatus}`\">\r\n                {{ auditStatusMap[item.auditStatus] }}\r\n              </span>\r\n              <span class=\"status-tag\" :class=\"`inspect-${item.inspectStatus}`\">\r\n                {{ inspectStatusMap[item.inspectStatus] }}\r\n              </span>\r\n            </div>\r\n          </div>\r\n        </div>\r\n      </div>\r\n\r\n      <!-- 右侧面板组 -->\r\n      <div class=\"right-panels\" v-show=\"!isInspectMode\">\r\n        <!-- 概况 -->\r\n        <div class=\"right-panel survey-panel\">\r\n          <div class=\"panel-title\">\r\n            <span>概况</span>\r\n            <span class=\"view-detail-link\" @click=\"showSummaryDetail = true\">查看详情</span>\r\n          </div>\r\n          <div class=\"survey-grid\">\r\n            <div class=\"survey-item\">\r\n              <span class=\"survey-icon icon-total\"></span>\r\n              <div class=\"survey-info\">\r\n                <div class=\"survey-num\">{{ surveyData.total }}</div>\r\n                <div class=\"survey-label\">施工总数</div>\r\n              </div>\r\n            </div>\r\n            <div class=\"survey-item\">\r\n              <span class=\"survey-icon icon-over\"></span>\r\n              <div class=\"survey-info\">\r\n                <div class=\"survey-num over\">{{ surveyData.overdue }}</div>\r\n                <div class=\"survey-label\">超期</div>\r\n              </div>\r"},"isError":false}}}],"role":"user"},"invocation_id":"e-a5956bec-6f8a-451f-b787-adfb9dfce554","author":"my_agent","actions":{"state_delta":{},"artifact_delta":{},"requested_auth_configs":{},"requested_tool_confirmations":{}},"node_info":{"path":"my_agent@1"},"id":"cd803b9d-20f2-4af4-b842-550f09f721ca","timestamp":1785486250.982022}


id: d8f8a670-c346-43bf-b83f-b0e27b9135f5
app_name: my_agent
user_id: codebuddy
session_id: test_long_output_001
invocation_id: e-a5956bec-6f8a-451f-b787-adfb9dfce554
event_data:
  {"model_version":"step-3.7-flash","content":{"parts":[{"text":"Good, I now have a solid understanding of both the reference page (old project, Vue 2 + Element UI) and the current V3 project structure (Vue 3 + Ant Design Vue). \n\nLooking at the current file `D:/nzy/workspace_git/Baseplatform-Ui-V3/src/views/serviceManage/schedulingStatistical.vue`, I can see it's already been partially migrated to Vue 3 + Ant Design Vue. It has:\n- BgAndInfo component\n- MapContainer component\n- a-tree (Ant Design tree)\n- a-collapse\n- a-tooltip\n- a-date-picker\n- ECharts with proper typing\n- Mock data\n- TypeScript interfaces\n\nHowever, the current file only has placeholder styling without the proper background images, and it's missing the date picker positioning at top-center, the proper panel backgrounds using the specified images, and the icon description popup with actual post type icons.\n\nI need to create an enhanced version in the output directory that addresses these gaps while keeping the existing structure intact. The main improvements needed are adding the left panel background image, implementing the date picker positioning, and creating the icon description popup with the post type icons from the old project.","thought":true},{"text":"Now let me check the existing files in the output directory and examine the reference images/assets:"},{"function_call":{"id":"chatcmpl-tool-b83cfafa35bfffd6","args":{"path":"D:/nzy/workspace_git/test_scheduling_output"},"name":"list_directory"}}],"role":"model"},"partial":false,"finish_reason":"STOP","usage_metadata":{"cached_content_token_count":0,"candidates_token_count":311,"prompt_token_count":119344,"total_token_count":119655},"invocation_id":"e-a5956bec-6f8a-451f-b787-adfb9dfce554","author":"my_agent","actions":{"state_delta":{},"artifact_delta":{},"requested_auth_configs":{},"requested_tool_confirmations":{}},"node_info":{"path":"my_agent@1"},"long_running_tool_ids":[],"id":"d8f8a670-c346-43bf-b83f-b0e27b9135f5","timestamp":1785486250.9967422}


id: 8b37f8c0-2c6b-4639-bfac-a12cab8cf71b
app_name: my_agent
user_id: codebuddy
session_id: test_long_output_001
invocation_id: e-a5956bec-6f8a-451f-b787-adfb9dfce554
event_data:
  {"content":{"parts":[{"function_response":{"id":"chatcmpl-tool-b83cfafa35bfffd6","name":"list_directory","response":{"content":[{"type":"text","text":"ENOENT: no such file or directory, scandir 'D:\\nzy\\workspace_git\\test_scheduling_output'"}],"isError":true}}}],"role":"user"},"invocation_id":"e-a5956bec-6f8a-451f-b787-adfb9dfce554","author":"my_agent","actions":{"state_delta":{},"artifact_delta":{},"requested_auth_configs":{},"requested_tool_confirmations":{}},"node_info":{"path":"my_agent@1"},"id":"8b37f8c0-2c6b-4639-bfac-a12cab8cf71b","timestamp":1785486280.7428515}


id: dbc870e3-c415-4494-8cbb-c14f279b4939
app_name: my_agent
user_id: codebuddy
session_id: test_long_output_001
invocation_id: e-a5956bec-6f8a-451f-b787-adfb9dfce554
event_data:
  {"model_version":"sensenova-6.7-flash-lite","content":{"parts":[{"text":"The output directory doesn't exist yet. Let me create it. But wait - I need to think about what exactly to create here. The task is to write a standalone version of the schedulingStatistical.vue file to the output directory. The key question is whether this should be a single file or a full project structure.\n\nLooking at the instructions again, it says \"所有输出文件写入 D:\\nzy\\workspace_git\\test_scheduling_output\\ 目录下\" - all output files should be written to that directory. The existing file already has a good skeleton. I need to rewrite it to be a complete, pixel-perfect replica of the old project's visual style.\n\nThe current file is decent but has issues:\n\n\n- No background image for the left panel (uses CSS gradient instead of the actual image from old project)\n- The \"search-btn\" uses '/@/assets/map_image/goScreenBg.png' path which may or may not work in output\n- The \"now-btn\" uses the same\n- The group-icon uses '/@/assets/service/videoDes.png'\n- Missing proper bg-image for left panel and right panels\n- The left panel is missing the `background-image: url('../../assets/map_image/ponding/pointBg.png')` equivalent\n- The old project has specific background images for the panel frames that I need to replicate\n\n. Since we can't use actual images in the output, I'll create a comprehensive Vue component that mimics the old project's styling as closely as possible, with proper background references.\n\nI need to create a standalone output directory and generate the complete `schedulingStatistical.vue` file that replicates the old project's styling, including the specific background image references for the left panel, right panels, date container, and post info backgrounds. I'm deciding whether to focus on a pure CSS/gradient approach or use the actual asset paths from the original project, but since the output directory won't have those assets, I'll stick with gradients and styling techniques that capture the visual essence. I'm realizing the old project uses `<img>` tags for the icon legend popup with specific asset paths, but the migration guidelines prefer CSS background-image with asset paths. I'll need to figure out how to reference those scheduling icons properly in the new component structure. I'm settling on writing the file to the specified output directory and using the old project's style references directly, even though the assets won't actually be accessible—this keeps the migration faithful to the original. Now I need to review the existing code structure and enhance the styling, particularly for the panel backgrounds and overall layout polish. I'm identifying the key components that need to be migrated to the test directory: the left panel with tree and table, top-right attendance/road statistics, bottom-right with line chart and abnormal list, centered date picker, popup dialogs, and icon descriptions. The current structure has most of the logic in place, so I'm focusing on refining the styles and fixing a few critical issues like the date picker positioning and ensuring proper panel styling without breaking the existing functionality.\n\nNow I'm reconsidering whether to use a gradient-based approach or replicate the exact pixel-perfect backgrounds from the old project. The user specified \"像素级复刻老项目样式\" (pixel-level replica of old project styles), so I need to match the background image styles more precisely rather than relying on gradients alone.\n\nFor the test output, I'll create a version that references the original asset paths for the background images. Since the file will sit in a separate test directory outside the src folder, the relative asset paths won't work, but this still fulfills the requirement of outputting to that directory.\n\nThe user mentioned this is for testing, so I think the output file is meant to serve as a reference or prototype. Rather than trying to perfectly replicate the exact layout and spacing from the original project, I should focus on creating a functional standalone file that demonstrates the key visual elements and structure. I've identified several key differences between the current code and the original design—the panel backgrounds use gradients instead of images, the layout doesn't match the old project's specific dimensions, and some visual elements like background images for buttons are missing. I'm planning to enhance the styles with gradients and borders to get closer to that sci-fi aesthetic, add the missing layout details, and ensure the date container background and button styling are included. Now I'm deciding whether to output the complete file or just the improved version to the test directory—I think outputting a standalone file with all enhancements makes more sense for the test case.\n\nWriting the complete file... I'm planning out the output structure for the standalone file—I need to create the directory, write the Vue component, and then validate it. Since the task explicitly asks me not to modify the source project, I'll just output the complete standalone file to `test_scheduling_output/` without running the full build. The user wants pixel-perfect replication, so I need to focus on getting the styling exactly right with the proper background images and visual effects. I'm going through the component list and noting which items are already correctly positioned, then identifying the few remaining adjustments needed—like refining the date container's background and ensuring the post table row heights match the original design. The search bar also needs some polish on its styling details. Now I'm reviewing the layout positioning to ensure the panel heights and widths align with the original design—left panel at 480px wide by 774px tall starting at top: 30px, right top panel at 426px wide by 536px tall at top: 128px, and right bottom at 426px wide by 266px tall at top: 662px. I'm also verifying the search bar layout with the left select controls, input field, location button, and search button.\n\nNow I'm comparing the actual column widths in the post table against the original design—left panel should be 480px with the tree section taking 146px and the post table filling the remaining 326px, then I'm checking the column allocations for post name, police deployment, delay index, and type to match the original proportions. The old code has position: relative, so I need to set it to position: absolute to match the pixel-perfect requirement. For the date container, I'm positioning it absolutely at top: 130px and left: 550px, which is approximately centered on the screen, and I need to create a background div that matches the old styling rather than wrapping the date picker directly.\n\nWriting the complete file... I'm verifying the background image paths work correctly — since the output directory is a test sandbox separate from the actual project, referencing assets like `/@/assets/image/bj@2x.png` via CSS background-image should handle Vite's runtime properly. Now I'm setting up the file structure and starting with the imports for the necessary components and libraries.\n\nI'm going to create the output directory and write the complete Vue file with full styling, including the exact panel positioning and background image references from the original project, plus a detailed README explaining the migration changes.\n\nWriting the complete component...\n","thought":true},{"text":"\n\nNow I have a thorough understanding of both the old project's source and the V3 target project's patterns. Let me create the output directory and write the complete, pixel-perfect replica.\n\n"},{"function_call":{"id":"call_0d3c1279f61345e794dcae23","args":{"path":"D:/nzy/workspace_git/test_scheduling_output"},"name":"create_directory"}}],"role":"model"},"partial":false,"finish_reason":"STOP","usage_metadata":{"cached_content_token_count":0,"candidates_token_count":1561,"prompt_token_count":117637,"total_token_count":119198},"invocation_id":"e-a5956bec-6f8a-451f-b787-adfb9dfce554","author":"my_agent","actions":{"state_delta":{},"artifact_delta":{},"requested_auth_configs":{},"requested_tool_confirmations":{}},"node_info":{"path":"my_agent@1"},"long_running_tool_ids":[],"id":"dbc870e3-c415-4494-8cbb-c14f279b4939","timestamp":1785486280.756257}


id: 7bb3aa5b-5127-4aac-b776-0aeabd25a434
app_name: my_agent
user_id: codebuddy
session_id: test_long_output_001
invocation_id: e-a5956bec-6f8a-451f-b787-adfb9dfce554
event_data:
  {"content":{"parts":[{"function_response":{"id":"call_0d3c1279f61345e794dcae23","name":"create_directory","response":{"content":[{"type":"text","text":"Successfully created directory D:/nzy/workspace_git/test_scheduling_output"}],"structuredContent":{"content":"Successfully created directory D:/nzy/workspace_git/test_scheduling_output"},"isError":false}}}],"role":"user"},"invocation_id":"e-a5956bec-6f8a-451f-b787-adfb9dfce554","author":"my_agent","actions":{"state_delta":{},"artifact_delta":{},"requested_auth_configs":{},"requested_tool_confirmations":{}},"node_info":{"path":"my_agent@1"},"id":"7bb3aa5b-5127-4aac-b776-0aeabd25a434","timestamp":1785486310.2255826}


id: 6dbc63c7-8850-44a0-aa0a-6e12ac5786ac
app_name: my_agent
user_id: codebuddy
session_id: test_long_output_001
invocation_id: e-4160cec6-c901-4d0b-9f5a-41d5f9ed204e
event_data:
  {"content":{"parts":[{"text":"重构勤务统计页面（schedulingStatistical.vue），将现有占位页面改为大屏可视化风格，像素级复刻老项目样式。\n\n---\n项目信息\n\n- 项目路径：D:\\nzy\\workspace_git\\Baseplatform-Ui-V3\n- 目标文件：src/views/serviceManage/schedulingStatistical.vue\n- 老项目参考源：D:\\nzy\\workspace_git\\baseplatform-ui/src/views/postPage/schedulingStatistical.vue\n- 技术栈：Vue 3 + TypeScript + Ant Design Vue 4.x + ECharts 5\n\n⚠️ 重要：所有输出文件写入 D:\\nzy\\workspace_git\\test_scheduling_output\\ 目录下，不要修改源项目文件！\n\n---\n迁移规范\n\n1. 布局框架\n- 使用 BgAndInfo 公共组件包裹页面，传入 title-menu=\"勤务管理\"、title-name=\"勤务统计\"、step-url=\"/frontend/schedulingStatistical\"、bg-size=\"1920\"\n- 页面主容器使用绝对定位（地图类页面）或 flex 布局（管理类页面）\n- 整体设计稿尺寸 1920×960，无需手动 transform scale\n\n2. 图片引用规则\n- 所有本地图片使用 CSS background-image + url('/@/assets/...') 方式引用\n- 不要用 <img> 标签引用本地资源（vite 运行时解析有限制）\n- 图标类小图优先用 CSS 伪元素或 mask-image 实现\n\n3. 组件迁移规则\n- el-tree → a-tree（Ant Design Vue 树形组件），需用 :deep() 覆盖深色样式\n- el-table / 自定义 div 表格 → 继续用 div + flex 手写表格\n- el-select → 原生 <select> + 自定义样式，或 a-select 加深度覆盖\n- el-input → 原生 <input> + 自定义样式\n- el-pagination → a-pagination，需深度覆盖深色样式\n- el-collapse → a-collapse\n- el-popover / el-tooltip → a-tooltip\n- el-dialog → 自定义弹窗 div\n\n4. Mock 数据规则\n- 所有数据全部使用 Mock 数据，不调用真实 API\n- 数据量要足够展示效果（岗位列表不少于10条，警力列表不少于6人）\n- 部门树数据至少包含支队 → 大队（8个）→ 中队三级结构\n\n5. 图表迁移\n- ECharts 5 用法保持不变，但使用 import * as echarts from 'echarts'\n- 在 onMounted + nextTick 中初始化图表\n- 使用 ref 保存 DOM 引用，let xxxChart: echarts.ECharts | null = null\n- 深色主题配色：主色 #29B3FF、辅助色 #44FFFD、警告色 #FFE478、危险色 #EE5A52\n\n6. Vue3 写法\n- 使用 <script setup lang=\"ts\"> 语法\n- data() → ref / reactive\n- methods → 普通函数\n- computed → computed(() => ...)\n- created/mounted → onMounted\n- 类型定义用 interface 或 type\n\n7. 样式写法\n- 使用 <style lang=\"scss\" scoped>\n- 深度选择器用 :deep(.class-name)\n- 背景色半透明：rgba(41, 179, 255, 0.x) 系列\n- 滚动条样式统一：细、蓝色半透明\n\n8. 可复用资源路径\n- src/assets/image/bj@2x.png — 左侧树面板背景\n- src/assets/image/组 16257.png — 列表面板背景\n- src/assets/map_image/policeSituation/searchBar.png — 搜索栏背景\n- src/assets/map_image/goScreenBg.png — 确认按钮背景\n- src/assets/map_image/cancel.png — 取消按钮背景\n- src/assets/map_image/alertMessageBg.png — 弹窗背景\n- src/assets/service/videoDes.png — 小图标\n- BgAndInfo 组件：/@/components/Common/bgAndInfo.vue\n- MapContainer 组件：/@/components/TumengIndex/MapContainer.vue\n\n9. 自查清单\n☐ BgAndInfo 组件引入正确，面包屑和标题正常显示\n☐ 所有图片使用 background-image 方式，没有 <img> 引用本地资源\n☐ 页面在浏览器中不报错（控制台无红色错误）\n☐ Mock 数据量充足，列表/表格内容完整\n☐ ECharts 图表能正常渲染\n☐ 深色科技风格统一，主色调 #29B3FF\n☐ TypeScript 类型定义合理，没有大量 any\n\n---\n页面结构说明\n\n勤务统计是一个地图大屏页面，主要结构：\n\n1. 地图背景：MapContainer 全屏铺底\n2. 左侧岗位列表面板（约 420px 宽）：\n  - 标题栏（岗位列表 + 图标说明按钮）\n  - 搜索筛选栏（岗位类型一级/二级下拉 + 关键字搜索 + 定位按钮 + 查询按钮）\n  - 左侧部门树（约 160px 宽，三级部门，可勾选）\n  - 右侧岗位表格（岗位名称、警力部署（警/辅/保）、拥堵指数、类型）\n3. 右上出勤情况面板（约 420px 宽）：\n  - 可切换\"出勤情况\"和\"路勤统计\"两个模式\n  - 出勤模式：手风琴式展开班次，每个班次含民警/辅警/保通员人员列表，显示在岗状态、4G设备、对讲机、签到/签退状态\n  - 路勤统计模式：3个统计卡片（总岗位/重点/异常）+ 环形图 + 警力统计（警/辅/保）+ 排班率/准点率\n4. 右下面板（约 420px 宽）：\n  - 出勤模式下：路面保通情况折线图（双折线）\n  - 路勤模式下：异常班次表格（班次、岗位、异常人员）\n5. 顶部日期选择器：居中，带\"当前\"按钮\n6. 岗位信息弹窗：点击岗位行弹出，显示基础信息和班次信息\n7. 图标说明弹窗：显示警力类型图例\n\n---\n参考页面\n\n已完成的参考页面（可学习风格和写法）：\n- src/views/serviceManage/serviceIndexDd.vue — 勤务排班（左中右布局，ECharts图表）\n- src/views/serviceManage/workData.vue — 施工智管（地图+左右面板+弹窗）\n\n---\n验收标准\n\n1. 页面构建通过（vite build 无错误）\n2. 主要 UI 元素都有（左侧面板、右侧出勤/路勤面板、底部面板、日期选择器）\n3. 交互基本可用（tab切换、手风琴展开、部门树勾选筛选岗位列表）\n4. 图表正常渲染（环形图、折线图各一个）\n5. 整体风格与老项目一致（深色科技风 + 蓝色主色调）\n\n⚠️ 再次强调：所有输出文件必须写入 D:\\nzy\\workspace_git\\test_scheduling_output\\ 目录，不要修改 Baseplatform-Ui-V3 或 baseplatform-ui 的任何文件。"}],"role":"user"},"invocation_id":"e-4160cec6-c901-4d0b-9f5a-41d5f9ed204e","author":"user","actions":{"state_delta":{},"artifact_delta":{},"requested_auth_configs":{},"requested_tool_confirmations":{}},"node_info":{"path":""},"id":"6dbc63c7-8850-44a0-aa0a-6e12ac5786ac","timestamp":1785486376.2011573}


id: 3e21a16d-448f-4af2-8d61-c3a619e06254
app_name: my_agent
user_id: codebuddy
session_id: test_long_output_002
invocation_id: e-bffbeedd-b688-4485-8881-b902dc965b25
event_data:
  {"content":{"parts":[{"text":"请写一个完整的 Vue 3 + TypeScript 单文件组件，内容是一个简单的待办事项列表（TodoList），包含添加、删除、标记完成功能，用 <script setup lang=\"ts\"> + <style scoped>。直接输出完整的 .vue 文件代码，不少于 150 行。"}],"role":"user"},"invocation_id":"e-bffbeedd-b688-4485-8881-b902dc965b25","author":"user","actions":{"state_delta":{},"artifact_delta":{},"requested_auth_configs":{},"requested_tool_confirmations":{}},"node_info":{"path":""},"id":"3e21a16d-448f-4af2-8d61-c3a619e06254","timestamp":1785487003.9718537}


id: 1f3c9d8e-99c7-45ff-9594-f3aa6eed6187
app_name: my_agent
user_id: codebuddy
session_id: test_long_output_002
invocation_id: e-bffbeedd-b688-4485-8881-b902dc965b25
event_data:
  {"model_version":"deepseek-v4-flash","content":{"parts":[{"text":"The user wants me to write a complete Vue 3 + TypeScript single-file component for a TodoList with add, delete, and mark-complete functionality. Let me create a comprehensive component with at least 150 lines.\n\nLet me write a well-structured TodoList component with:\n- Add todo items\n- Delete todo items\n- Mark as complete\n- Filter (all/active/completed)\n- Local storage persistence\n- Animated transitions\n- Clean UI\n\nLet me create this file in the project directory.","thought":true},{"function_call":{"id":"call_c7094cbbe26b42bb9e54495b","args":{},"name":"list_allowed_directories"}}],"role":"model"},"partial":false,"finish_reason":"STOP","usage_metadata":{"cached_content_token_count":0,"candidates_token_count":137,"prompt_token_count":6716,"thoughts_token_count":104,"total_token_count":6853},"invocation_id":"e-bffbeedd-b688-4485-8881-b902dc965b25","author":"my_agent","actions":{"state_delta":{},"artifact_delta":{},"requested_auth_configs":{},"requested_tool_confirmations":{}},"node_info":{"path":"my_agent@1"},"long_running_tool_ids":[],"id":"1f3c9d8e-99c7-45ff-9594-f3aa6eed6187","timestamp":1785487004.009307}


id: 3d06e016-a001-4fac-8341-ef6b7fd036bb
app_name: my_agent
user_id: codebuddy
session_id: test_long_output_002
invocation_id: e-bffbeedd-b688-4485-8881-b902dc965b25
event_data:
  {"content":{"parts":[{"function_response":{"id":"call_c7094cbbe26b42bb9e54495b","name":"list_allowed_directories","response":{"content":[{"type":"text","text":"Allowed directories:\nD:\\nzy\\workspace_git"}],"structuredContent":{"content":"Allowed directories:\nD:\\nzy\\workspace_git"},"isError":false}}}],"role":"user"},"invocation_id":"e-bffbeedd-b688-4485-8881-b902dc965b25","author":"my_agent","actions":{"state_delta":{},"artifact_delta":{},"requested_auth_configs":{},"requested_tool_confirmations":{}},"node_info":{"path":"my_agent@1"},"id":"3d06e016-a001-4fac-8341-ef6b7fd036bb","timestamp":1785487007.407664}


id: 41a5484a-da4f-41ea-a501-be0baa48af6c
app_name: my_agent
user_id: codebuddy
session_id: test_long_output_002
invocation_id: e-bffbeedd-b688-4485-8881-b902dc965b25
event_data:
  {"model_version":"step-3.7-flash","content":{"parts":[{"text":"I need to create a Vue 3 + TypeScript single-file component for a TodoList. Let me write a comprehensive component with add, delete, and mark-complete functionality. I'll create it at a path within the allowed directory.\n\nLet me write a complete TodoList component with at least 150 lines, including:\n- Adding todo items\n- Deleting todo items\n- Marking as complete\n- Filtering (all/active/completed)\n- Local storage persistence\n- Animated transitions\n- Clean, modern UI with scoped styles","thought":true},{"function_call":{"id":"chatcmpl-tool-a8959ad958c6538e","args":{"content":"<template>\n  <div class=\"todo-list-container\">\n    <!-- 头部统计区 -->\n    <div class=\"todo-header\">\n      <h2 class=\"todo-title\">📋 待办事项</h2>\n      <div class=\"todo-stats\">\n        <span class=\"stat-item\">\n          <span class=\"stat-label\">全部</span>\n          <span class=\"stat-value stat-all\">{{ totalCount }}</span>\n        </span>\n        <span class=\"stat-item\">\n          <span class=\"stat-label\">进行中</span>\n          <span class=\"stat-value stat-active\">{{ activeCount }}</span>\n        </span>\n        <span class=\"stat-item\">\n          <span class=\"stat-label\">已完成</span>\n          <span class=\"stat-value stat-done\">{{ completedCount }}</span>\n        </span>\n      </div>\n    </div>\n\n    <!-- 输入区 -->\n    <div class=\"todo-input-section\">\n      <input\n        v-model=\"inputText\"\n        type=\"text\"\n        class=\"todo-input\"\n        placeholder=\"请输入待办事项...\"\n        @keydown.enter=\"addTodo\"\n        maxlength=\"100\"\n      />\n      <button class=\"btn-add\" :disabled=\"!canAdd\" @click=\"addTodo\">\n        <span class=\"btn-icon\">＋</span>\n        <span>添加</span>\n      </button>\n    </div>\n\n    <!-- 筛选标签 -->\n    <div class=\"todo-filter-bar\">\n      <button\n        v-for=\"f in filters\"\n        :key=\"f.value\"\n        class=\"filter-tab\"\n        :class=\"{ active: currentFilter === f.value }\"\n        @click=\"currentFilter = f.value\"\n      >\n        {{ f.label }}\n      </button>\n      <button\n        v-if=\"hasCompleted\"\n        class=\"filter-tab filter-clear\"\n        @click=\"clearCompleted\"\n      >\n        清除已完成\n      </button>\n    </div>\n\n    <!-- 列表区 -->\n    <transition-group\n      v-if=\"visibleTodos.length > 0\"\n      name=\"todo-list\"\n      tag=\"ul\"\n      class=\"todo-list\"\n    >\n      <li\n        v-for=\"todo in visibleTodos\"\n        :key=\"todo.id\"\n        class=\"todo-item\"\n        :class=\"{ completed: todo.completed }\"\n      >\n        <!-- 复选框 -->\n        <label class=\"todo-checkbox-wrapper\">\n          <input\n            type=\"checkbox\"\n            class=\"todo-checkbox\"\n            :checked=\"todo.completed\"\n            @change=\"toggleTodo(todo.id)\"\n          />\n          <span class=\"checkbox-custom\"></span>\n        </label>\n\n        <!-- 内容 -->\n        <span class=\"todo-content\" @dblclick=\"startEdit(todo)\">\n          {{ todo.text }}\n        </span>\n\n        <!-- 编辑输入框 -->\n        <input\n          v-if=\"editingId === todo.id\"\n          v-model=\"editText\"\n          class=\"todo-edit-input\"\n          @blur=\"finishEdit(todo)\"\n          @keydown.enter=\"finishEdit(todo)\"\n          @keydown.escape=\"cancelEdit\"\n          maxlength=\"100\"\n        />\n\n        <!-- 删除按钮 -->\n        <button\n          class=\"btn-delete\"\n          title=\"删除\"\n          @click=\"removeTodo(todo.id)\"\n        >\n          ✕\n        </button>\n      </li>\n    </transition-group>\n\n    <!-- 空状态 -->\n    <div v-else class=\"todo-empty\">\n      <span class=\"empty-icon\">📭</span>\n      <p class=\"empty-text\">{{ emptyMessage }}</p>\n    </div>\n\n    <!-- 底部信息栏 -->\n    <div class=\"todo-footer\">\n      <span class=\"footer-hint\">双击文字可编辑 · 共 {{ totalCount }} 项</span>\n      <button\n        v-if=\"activeCount > 0\"\n        class=\"btn-complete-all\"\n        @click=\"completeAll\"\n      >\n        全部标记完成\n      </button>\n    </div>\n  </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { ref, computed, watch, onMounted } from 'vue'\n\n// ==================== 类型定义 ====================\n\ninterface TodoItem {\n  id: number\n  text: string\n  completed: boolean\n  createdAt: number\n}\n\ntype FilterType = 'all' | 'active' | 'completed'\n\ninterface FilterOption {\n  value: FilterType\n  label: string\n}\n\n// ==================== 常量 ====================\n\nconst STORAGE_KEY = 'todo-list-data'\nconst MAX_TEXT_LENGTH = 100\n\nconst filters: FilterOption[] = [\n  { value: 'all', label: '全部' },\n  { value: 'active', label: '进行中' },\n  { value: 'completed', label: '已完成' },\n]\n\n// ==================== 响应式状态 ====================\n\nconst todos = ref<TodoItem[]>([])\nconst inputText = ref<string>('')\nconst currentFilter = ref<FilterType>('all')\nconst editingId = ref<number | null>(null)\nconst editText = ref<string>('')\nlet nextId = ref<number>(1)\n\n// ==================== 计算属性 ====================\n\nconst totalCount = computed(() => todos.value.length)\n\nconst activeCount = computed(\n  () => todos.value.filter((t: TodoItem) => !t.completed).length\n)\n\nconst completedCount = computed(\n  () => todos.value.filter((t: TodoItem) => t.completed).length\n)\n\nconst hasCompleted = computed(() => completedCount.value > 0)\n\nconst canAdd = computed(() => {\n  const trimmed = inputText.value.trim()\n  return trimmed.length > 0 && !todos.value.some(\n    (t: TodoItem) => t.text.toLowerCase() === trimmed.toLowerCase()\n  )\n})\n\nconst visibleTodos = computed(() => {\n  switch (currentFilter.value) {\n    case 'active':\n      return todos.value.filter((t: TodoItem) => !t.completed)\n    case 'completed':\n      return todos.value.filter((t: TodoItem) => t.completed)\n    default:\n      return todos.value\n  }\n})\n\nconst emptyMessage = computed(() => {\n  switch (currentFilter.value) {\n    case 'active':\n      return '🎉 太棒了，没有进行中的待办事项！'\n    case 'completed':\n      return '还没有完成任何事项，加油！'\n    default:\n      return '还没有待办事项，添加一个吧！'\n  }\n})\n\n// ==================== 持久化：LocalStorage ====================\n\nfunction saveToStorage(): void {\n  try {\n    const data = {\n      todos: todos.value,\n      nextId: nextId.value,\n    }\n    localStorage.setItem(STORAGE_KEY, JSON.stringify(data))\n  } catch (e) {\n    console.warn('保存待办数据失败:', e)\n  }\n}\n\nfunction loadFromStorage(): void {\n  try {\n    const raw = localStorage.getItem(STORAGE_KEY)\n    if (!raw) return\n    const data = JSON.parse(raw)\n    if (data && Array.isArray(data.todos)) {\n      todos.value = data.todos\n      nextId.value = data.nextId || (todos.value.length > 0\n        ? Math.max(...todos.value.map((t: TodoItem) => t.id)) + 1\n        : 1)\n    }\n  } catch (e) {\n    console.warn('读取待办数据失败:', e)\n  }\n}\n\n// 监听数据变化自动保存\nwatch(todos, saveToStorage, { deep: true })\nwatch(nextId, saveToStorage)\n\n// ==================== 操作函数 ====================\n\nfunction addTodo(): void {\n  const text = inputText.value.trim()\n  if (!text) return\n  if (todos.value.some(\n    (t: TodoItem) => t.text.toLowerCase() === text.toLowerCase()\n  )) {\n    inputText.value = ''\n    return\n  }\n\n  const newTodo: TodoItem = {\n    id: nextId.value++,\n    text,\n    completed: false,\n    createdAt: Date.now(),\n  }\n\n  todos.value.unshift(newTodo)\n  inputText.value = ''\n\n  // 如果当前筛选是\"已完成\"，自动切回\"全部\"\n  if (currentFilter.value === 'completed') {\n    currentFilter.value = 'all'\n  }\n}\n\nfunction removeTodo(id: number): void {\n  const index = todos.value.findIndex((t: TodoItem) => t.id === id)\n  if (index !== -1) {\n    todos.value.splice(index, 1)\n  }\n}\n\nfunction toggleTodo(id: number): void {\n  const todo = todos.value.find((t: TodoItem) => t.id === id)\n  if (todo) {\n    todo.completed = !todo.completed\n  }\n}\n\nfunction completeAll(): void {\n  todos.value.forEach((t: TodoItem) => {\n    t.completed = true\n  })\n}\n\nfunction clearCompleted(): void {\n  todos.value = todos.value.filter((t: TodoItem) => !t.completed)\n}\n\n// ==================== 行内编辑 ====================\n\nfunction startEdit(todo: TodoItem): void {\n  editingId.value = todo.id\n  editText.value = todo.text\n}\n\nfunction finishEdit(todo: TodoItem): void {\n  const trimmed = editText.value.trim()\n  if (trimmed.length > 0) {\n    todo.text = trimmed\n  }\n  cancelEdit()\n}\n\nfunction cancelEdit(): void {\n  editingId.value = null\n  editText.value = ''\n}\n\n// ==================== 生命周期 ====================\n\nonMounted(() => {\n  loadFromStorage()\n  // 如果本地没有数据，加载一些示例数据\n  if (todos.value.length === 0) {\n    loadDemoData()\n  }\n})\n\nfunction loadDemoData(): void {\n  const demos: Omit<TodoItem, 'id'>[] = [\n    { text: '完成勤务统计页面重构', completed: true, createdAt: Date.now() - 86400000 },\n    { text: '修复 ECharts 环形图渲染问题', completed: false, createdAt: Date.now() - 72000000 },\n    { text: '优化部门树勾选性能', completed: false, createdAt: Date.now() - 36000000 },\n    { text: '编写单元测试用例', completed: false, createdAt: Date.now() - 18000000 },\n    { text: 'Review PR #42: 地图组件迁移', completed: false, createdAt: Date.now() - 9000000 },\n  ]\n  demos.forEach((item) => {\n    todos.value.push({\n      id: nextId.value++,\n      ...item,\n    })\n  })\n}\n</script>\n\n<style lang=\"scss\" scoped>\n// ==================== 变量定义 ====================\n$primary-color: #29b3ff;\n$primary-hover: #44c8ff;\n$primary-bg: rgba(41, 179, 255, 0.1);\n$primary-border: rgba(41, 179, 255, 0.3);\n$bg-dark: #0d1b2a;\n$bg-card: rgba(13, 27, 42, 0.85);\n$bg-item: rgba(41, 179, 255, 0.04);\n$bg-item-hover: rgba(41, 179, 255, 0.1);\n$text-primary: #e0f0ff;\n$text-secondary: rgba(224, 240, 255, 0.6);\n$text-muted: rgba(224, 240, 255, 0.35);\n$danger-color: #ee5a52;\n$danger-hover: #f0706a;\n$success-color: #00e5a0;\n$border-color: rgba(41, 179, 255, 0.15);\n$shadow-glow: 0 0 20px rgba(41, 179, 255, 0.15);\n$radius-sm: 6px;\n$radius-md: 10px;\n$radius-lg: 14px;\n$transition-fast: 0.2s ease;\n$transition-normal: 0.3s ease;\n\n// ==================== 容器 ====================\n.todo-list-container {\n  max-width: 620px;\n  margin: 0 auto;\n  padding: 28px 24px 20px;\n  background: $bg-card;\n  border: 1px solid $border-color;\n  border-radius: $radius-lg;\n  box-shadow: $shadow-glow, 0 8px 32px rgba(0, 0, 0, 0.4);\n  backdrop-filter: blur(12px);\n  font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto,\n    'Helvetica Neue', Arial, sans-serif;\n  color: $text-primary;\n}\n\n// ==================== 头部 ====================\n.todo-header {\n  display: flex;\n  align-items: center;\n  justify-content: space-between;\n  margin-bottom: 20px;\n  padding-bottom: 16px;\n  border-bottom: 1px solid $border-color;\n\n  .todo-title {\n    margin: 0;\n    font-size: 22px;\n    font-weight: 700;\n    letter-spacing: 1px;\n    background: linear-gradient(135deg, #29b3ff, #44fffd);\n    -webkit-background-clip: text;\n    -webkit-text-fill-color: transparent;\n    background-clip: text;\n  }\n\n  .todo-stats {\n    display: flex;\n    gap: 14px;\n\n    .stat-item {\n      display: flex;\n      flex-direction: column;\n      align-items: center;\n      gap: 2px;\n\n      .stat-label {\n        font-size: 11px;\n        color: $text-secondary;\n        text-transform: uppercase;\n        letter-spacing: 0.5px;\n      }\n\n      .stat-value {\n        font-size: 20px;\n        font-weight: 700;\n        font-variant-numeric: tabular-nums;\n\n        &.stat-all {\n          color: $primary-color;\n        }\n        &.stat-active {\n          color: #ffe478;\n        }\n        &.stat-done {\n          color: $success-color;\n        }\n      }\n    }\n  }\n}\n\n// ==================== 输入区 ====================\n.todo-input-section {\n  display: flex;\n  gap: 10px;\n  margin-bottom: 16px;\n\n  .todo-input {\n    flex: 1;\n    padding: 12px 16px;\n    background: rgba(41, 179, 255, 0.06);\n    border: 1px solid $border-color;\n    border-radius: $radius-md;\n    color: $text-primary;\n    font-size: 14px;\n    outline: none;\n    transition: border-color $transition-fast, box-shadow $transition-fast;\n\n    &::placeholder {\n      color: $text-muted;\n    }\n\n    &:focus {\n      border-color: $primary-color;\n      box-shadow: 0 0 0 3px rgba(41, 179, 255, 0.15);\n    }\n  }\n\n  .btn-add {\n    display: flex;\n    align-items: center;\n    gap: 5px;\n    padding: 12px 20px;\n    background: linear-gradient(135deg, #29b3ff, #1a9fe0);\n    border: none;\n    border-radius: $radius-md;\n    color: #fff;\n    font-size: 14px;\n    font-weight: 600;\n    cursor: pointer;\n    transition: opacity $transition-fast, transform $transition-fast;\n    white-space: nowrap;\n\n    &:hover:not(:disabled) {\n      opacity: 0.9;\n      transform: translateY(-1px);\n    }\n\n    &:active:not(:disabled) {\n      transform: translateY(0);\n    }\n\n    &:disabled {\n      opacity: 0.4;\n      cursor: not-allowed;\n    }\n\n    .btn-icon {\n      font-size: 18px;\n      line-height: 1;\n    }\n  }\n}\n\n// ==================== 筛选栏 ====================\n.todo-filter-bar {\n  display: flex;\n  gap: 6px;\n  margin-bottom: 14px;\n  flex-wrap: wrap;\n\n  .filter-tab {\n    padding: 6px 14px;\n    background: rgba(41, 179, 255, 0.06);\n    border: 1px solid transparent;\n    border-radius: 20px;\n    color: $text-secondary;\n    font-size: 12px;\n    cursor: pointer;\n    transition: all $transition-fast;\n\n    &:hover {\n      background: rgba(41, 179, 255, 0.12);\n      color: $text-primary;\n    }\n\n    &.active {\n      background: $primary-bg;\n      border-color: $primary-border;\n      color: $primary-color;\n      font-weight: 600;\n    }\n\n    &.filter-clear {\n      margin-left: auto;\n      color: $danger-color;\n\n      &:hover {\n        background: rgba(238, 90, 82, 0.1);\n      }\n    }\n  }\n}\n\n// ==================== 列表 ====================\n.todo-list {\n  list-style: none;\n  margin: 0;\n  padding: 0;\n  max-height: 380px;\n  overflow-y: auto;\n\n  // 自定义滚动条\n  &::-webkit-scrollbar {\n    width: 5px;\n  }\n  &::-webkit-scrollbar-track {\n    background: rgba(41, 179, 255, 0.03);\n    border-radius: 10px;\n  }\n  &::-webkit-scrollbar-thumb {\n    background: rgba(41, 179, 255, 0.2);\n    border-radius: 10px;\n    &:hover {\n      background: rgba(41, 179, 255, 0.4);\n    }\n  }\n}\n\n.todo-item {\n  display: flex;\n  align-items: center;\n  gap: 12px;\n  padding: 12px 14px;\n  margin-bottom: 6px;\n  background: $bg-item;\n  border: 1px solid transparent;\n  border-radius: $radius-md;\n  transition: all $transition-fast;\n  cursor: default;\n\n  &:hover {\n    background: $bg-item-hover;\n    border-color: $border-color;\n  }\n\n  &.completed {\n    opacity: 0.55;\n\n    .todo-content {\n      text-decoration: line-through;\n      color: $text-muted;\n    }\n  }\n}\n\n// ==================== 复选框 ====================\n.todo-checkbox-wrapper {\n  position: relative;\n  display: flex;\n  align-items: center;\n  cursor: pointer;\n  flex-shrink: 0;\n\n  .todo-checkbox {\n    position: absolute;\n    opacity: 0;\n    width: 0;\n    height: 0;\n  }\n\n  .checkbox-custom {\n    width: 20px;\n    height: 20px;\n    border: 2px solid rgba(41, 179, 255, 0.4);\n    border-radius: 50%;\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    transition: all $transition-fast;\n    background: transparent;\n\n    &::after {\n      content: '';\n      width: 8px;\n      height: 8px;\n      border-radius: 50%;\n      background: $primary-color;\n      opacity: 0;\n      transform: scale(0);\n      transition: all $transition-fast;\n    }\n  }\n\n  .todo-checkbox:checked + .checkbox-custom {\n    border-color: $primary-color;\n    box-shadow: 0 0 8px rgba(41, 179, 255, 0.3);\n\n    &::after {\n      opacity: 1;\n      transform: scale(1);\n    }\n  }\n}\n\n// ==================== 内容 ====================\n.todo-content {\n  flex: 1;\n  font-size: 14px;\n  line-height: 1.5;\n  word-break: break-word;\n  user-select: none;\n}\n\n.todo-edit-input {\n  flex: 1;\n  padding: 8px 12px;\n  background: rgba(41, 179, 255, 0.08);\n  border: 1px solid $primary-border;\n  border-radius: $radius-sm;\n  color: $text-primary;\n  font-size: 14px;\n  outline: none;\n}\n\n// ==================== 删除按钮 ====================\n.btn-delete {\n  display: flex;\n  align-items: center;\n  justify-content: center;\n  width: 26px;\n  height: 26px;\n  padding: 0;\n  background: transparent;\n  border: 1px solid transparent;\n  border-radius: $radius-sm;\n  color: $text-muted;\n  font-size: 14px;\n  cursor: pointer;\n  opacity: 0;\n  transition: all $transition-fast;\n  flex-shrink: 0;\n}\n\n.todo-item:hover .btn-delete {\n  opacity: 1;\n}\n\n.btn-delete:hover {\n  background: rgba(238, 90, 82, 0.15);\n  border-color: rgba(238, 90, 82, 0.4);\n  color: $danger-color;\n}\n\n// ==================== 空状态 ====================\n.todo-empty {\n  display: flex;\n  flex-direction: column;\n  align-items: center;\n  justify-content: center;\n  padding: 48px 20px;\n  text-align: center;\n\n  .empty-icon {\n    font-size: 48px;\n    margin-bottom: 12px;\n    opacity: 0.6;\n  }\n\n  .empty-text {\n    margin: 0;\n    font-size: 14px;\n    color: $text-muted;\n  }\n}\n\n// ==================== 底部 ====================\n.todo-footer {\n  display: flex;\n  align-items: center;\n  justify-content: space-between;\n  margin-top: 16px;\n  padding-top: 14px;\n  border-top: 1px solid $border-color;\n\n  .footer-hint {\n    font-size: 11px;\n    color: $text-muted;\n  }\n\n  .btn-complete-all {\n    padding: 6px 14px;\n    background: transparent;\n    border: 1px solid $primary-border;\n    border-radius: 20px;\n    color: $primary-color;\n    font-size: 12px;\n    cursor: pointer;\n    transition: all $transition-fast;\n\n    &:hover {\n      background: $primary-bg;\n    }\n  }\n}\n\n// ==================== 过渡动画 ====================\n.todo-list-enter-active {\n  transition: all 0.35s ease;\n}\n.todo-list-leave-active {\n  transition: all 0.25s ease;\n}\n.todo-list-enter-from {\n  opacity: 0;\n  transform: translateX(-30px);\n}\n.todo-list-leave-to {\n  opacity: 0;\n  transform: translateX(30px);\n}\n.todo-list-move {\n  transition: transform 0.3s ease;\n}\n</style>\n","path":"D:/nzy/workspace_git/TodoList.vue"},"name":"write_file"}}],"role":"model"},"partial":false,"finish_reason":"STOP","usage_metadata":{"cached_content_token_count":4352,"candidates_token_count":5179,"prompt_token_count":6728,"total_token_count":11907},"invocation_id":"e-bffbeedd-b688-4485-8881-b902dc965b25","author":"my_agent","actions":{"state_delta":{},"artifact_delta":{},"requested_auth_configs":{},"requested_tool_confirmations":{}},"node_info":{"path":"my_agent@1"},"long_running_tool_ids":[],"id":"41a5484a-da4f-41ea-a501-be0baa48af6c","timestamp":1785487007.4227684}


id: 6496bb2a-5561-45b8-9d8b-2b5f5c954125
app_name: my_agent
user_id: codebuddy
session_id: test_long_output_002
invocation_id: e-bffbeedd-b688-4485-8881-b902dc965b25
event_data:
  {"content":{"parts":[{"function_response":{"id":"chatcmpl-tool-a8959ad958c6538e","name":"write_file","response":{"content":[{"type":"text","text":"Successfully wrote to D:/nzy/workspace_git/TodoList.vue"}],"structuredContent":{"content":"Successfully wrote to D:/nzy/workspace_git/TodoList.vue"},"isError":false}}}],"role":"user"},"invocation_id":"e-bffbeedd-b688-4485-8881-b902dc965b25","author":"my_agent","actions":{"state_delta":{},"artifact_delta":{},"requested_auth_configs":{},"requested_tool_confirmations":{}},"node_info":{"path":"my_agent@1"},"id":"6496bb2a-5561-45b8-9d8b-2b5f5c954125","timestamp":1785487048.4446733}


id: 3bdeba29-d894-4e11-b4d4-e35db48a4db8
app_name: my_agent
user_id: codebuddy
session_id: test_long_output_002
invocation_id: e-bffbeedd-b688-4485-8881-b902dc965b25
event_data:
  {"model_version":"sensenova-6.7-flash-lite","content":{"parts":[{"text":"Let me count the lines to make sure it's at least 150.\n","thought":true},{"text":"\n\n"},{"function_call":{"id":"call_9d3128c6a0bf45f68757501e","args":{"command":"wc -l \"D:/nzy/workspace_git/TodoList.vue\""},"name":"run_command"}}],"role":"model"},"partial":false,"finish_reason":"STOP","usage_metadata":{"cached_content_token_count":0,"candidates_token_count":61,"prompt_token_count":13392,"total_token_count":13453},"invocation_id":"e-bffbeedd-b688-4485-8881-b902dc965b25","author":"my_agent","actions":{"state_delta":{},"artifact_delta":{},"requested_auth_configs":{},"requested_tool_confirmations":{}},"node_info":{"path":"my_agent@1"},"long_running_tool_ids":[],"id":"3bdeba29-d894-4e11-b4d4-e35db48a4db8","timestamp":1785487048.461731}


id: d0cf1b1b-4505-4638-831d-90fd7fcb2191
app_name: my_agent
user_id: codebuddy
session_id: test_long_output_002
invocation_id: e-bffbeedd-b688-4485-8881-b902dc965b25
event_data:
  {"content":{"parts":[{"function_response":{"id":"call_9d3128c6a0bf45f68757501e","name":"run_command","response":{"result":"命令执行失败 (退出码 1)\n[stderr]\n'wc' �����ڲ����ⲿ���Ҳ���ǿ����еĳ���\r\n���������ļ���\r\n"}}}],"role":"user"},"invocation_id":"e-bffbeedd-b688-4485-8881-b902dc965b25","author":"my_agent","actions":{"state_delta":{},"artifact_delta":{},"requested_auth_configs":{},"requested_tool_confirmations":{}},"node_info":{"path":"my_agent@1"},"id":"d0cf1b1b-4505-4638-831d-90fd7fcb2191","timestamp":1785487050.3031335}


id: 8b3f1608-3cf9-4a20-8779-ddfa5a58f94c
app_name: my_agent
user_id: codebuddy
session_id: test_long_output_002
invocation_id: e-bffbeedd-b688-4485-8881-b902dc965b25
event_data:
  {"model_version":"astron-code-latest","content":{"parts":[{"function_call":{"id":"call_1643f49d831a43f092786724","args":{"command":"powershell -Command \"(Get-Content 'D:\\nzy\\workspace_git\\TodoList.vue' | Measure-Object -Line).Lines\""},"name":"run_command"}}],"role":"model"},"partial":false,"finish_reason":"STOP","usage_metadata":{"cached_content_token_count":0,"candidates_token_count":56,"prompt_token_count":12939,"total_token_count":12995},"invocation_id":"e-bffbeedd-b688-4485-8881-b902dc965b25","author":"my_agent","actions":{"state_delta":{},"artifact_delta":{},"requested_auth_configs":{},"requested_tool_confirmations":{}},"node_info":{"path":"my_agent@1"},"long_running_tool_ids":[],"id":"8b3f1608-3cf9-4a20-8779-ddfa5a58f94c","timestamp":1785487050.319584}


id: 21687b3b-d027-4d0a-9103-45d0c10ca65b
app_name: my_agent
user_id: codebuddy
session_id: test_long_output_002
invocation_id: e-bffbeedd-b688-4485-8881-b902dc965b25
event_data:
  {"content":{"parts":[{"function_response":{"id":"call_1643f49d831a43f092786724","name":"run_command","response":{"result":"命令执行成功\n[stdout]\n664\r\n"}}}],"role":"user"},"invocation_id":"e-bffbeedd-b688-4485-8881-b902dc965b25","author":"my_agent","actions":{"state_delta":{},"artifact_delta":{},"requested_auth_configs":{},"requested_tool_confirmations":{}},"node_info":{"path":"my_agent@1"},"id":"21687b3b-d027-4d0a-9103-45d0c10ca65b","timestamp":1785487053.8802445}


id: f2bcf9b2-2fdd-4041-93fa-20d3790a9f6e
app_name: my_agent
user_id: codebuddy
session_id: test_long_output_002
invocation_id: e-bffbeedd-b688-4485-8881-b902dc965b25
event_data:
  {"model_version":"deepseek-v4-flash","content":{"parts":[{"text":"**状态**：成功\n\n**修改的文件**：\n- `D:/nzy/workspace_git/TodoList.vue`\n\n**变更摘要**：\n创建了一个完整的 Vue 3 + TypeScript 待办事项列表组件（**664 行**），包含：\n\n| 功能 | 说明 |\n|------|------|\n| ✅ **添加待办** | 输入框 + 回车/按钮添加，自动去重校验 |\n| ✅ **删除待办** | 悬停显示删除按钮，点击移除 |\n| ✅ **标记完成** | 自定义复选框，点击切换 completed 状态 |\n| ✅ **筛选切换** | 全部 / 进行中 / 已完成 三个 tab |\n| ✅ **行内编辑** | 双击待办内容进入编辑模式 |\n| ✅ **全量操作** | 全部标记完成、清除已完成 |\n| ✅ **LocalStorage 持久化** | 自动保存/恢复，含示例数据 |\n| ✅ **统计信息** | 头部实时显示全部/进行中/已完成数量 |\n| ✅ **空状态提示** | 不同筛选模式下显示不同文案 |\n| ✅ **过渡动画** | transition-group 实现列表出入动画 |\n| ✅ **深色科技风 UI** | 蓝白主色调，glassmorphism 效果，自定义滚动条 |\n\n**验证结果**：尚未执行构建（需结合 Vue 3 项目环境），但语法完全符合 Vue 3 `<script setup lang=\"ts\">` + `<style scoped>` 规范，无外部依赖。"}],"role":"model"},"partial":false,"finish_reason":"STOP","usage_metadata":{"cached_content_token_count":4608,"candidates_token_count":346,"prompt_token_count":12451,"thoughts_token_count":22,"total_token_count":12797},"invocation_id":"e-bffbeedd-b688-4485-8881-b902dc965b25","author":"my_agent","actions":{"state_delta":{},"artifact_delta":{},"requested_auth_configs":{},"requested_tool_confirmations":{}},"node_info":{"path":"my_agent@1"},"id":"f2bcf9b2-2fdd-4041-93fa-20d3790a9f6e","timestamp":1785487053.8942149}


id: 5be04c5e-d285-4a7e-848c-f32ed9d29b6b
app_name: my_agent
user_id: codebuddy
session_id: mcp_test_small
invocation_id: e-8e4bc195-6560-4231-81d6-a033073f592d
event_data:
  {"content":{"parts":[{"text":"你好，请回复你好"}],"role":"user"},"invocation_id":"e-8e4bc195-6560-4231-81d6-a033073f592d","author":"user","actions":{"state_delta":{},"artifact_delta":{},"requested_auth_configs":{},"requested_tool_confirmations":{}},"node_info":{"path":""},"id":"5be04c5e-d285-4a7e-848c-f32ed9d29b6b","timestamp":1785487157.8292568}


id: ef27e047-7013-4eff-be13-2cb17f9f273f
app_name: my_agent
user_id: codebuddy
session_id: mcp_test_small
invocation_id: e-8e4bc195-6560-4231-81d6-a033073f592d
event_data:
  {"model_version":"deepseek-v4-flash","content":{"parts":[{"text":"你好！👋 我是**全栈开发子 Agent**，很高兴为你服务！\n\n我拥有以下能力，可以帮你完成各种开发任务：\n\n📁 **文件操作**：读写文件、浏览目录结构、搜索文件\n💻 **代码编写**：前端、后端、全栈开发\n🔧 **代码修复**：Bug 修复、样式调整、重构\n⚙️ **命令执行**：编译、构建、测试等\n\n请问你有什么开发任务需要我帮忙的吗？比如：\n- 创建一个新项目或新文件\n- 修改现有代码\n- 排查和修复 Bug\n- 添加新功能\n\n随时告诉我，我来帮你搞定！😊"}],"role":"model"},"partial":false,"finish_reason":"STOP","usage_metadata":{"cached_content_token_count":0,"candidates_token_count":158,"prompt_token_count":4895,"thoughts_token_count":15,"total_token_count":5053},"invocation_id":"e-8e4bc195-6560-4231-81d6-a033073f592d","author":"my_agent","actions":{"state_delta":{},"artifact_delta":{},"requested_auth_configs":{},"requested_tool_confirmations":{}},"node_info":{"path":"my_agent@1"},"id":"ef27e047-7013-4eff-be13-2cb17f9f273f","timestamp":1785487157.8527086}


id: 97867c24-ab21-4430-8924-dedd197ff698
app_name: my_agent
user_id: codebuddy
session_id: mcp_test_big_2
invocation_id: e-d411b7aa-c2b5-41f3-bbcf-58bf3e3d102d
event_data:
  {"content":{"parts":[{"text":"写一个 500 行以上的 Vue 3 + TypeScript TodoList 组件，包含完整功能。直接在回复里输出代码，不要写文件。"}],"role":"user"},"invocation_id":"e-d411b7aa-c2b5-41f3-bbcf-58bf3e3d102d","author":"user","actions":{"state_delta":{},"artifact_delta":{},"requested_auth_configs":{},"requested_tool_confirmations":{}},"node_info":{"path":""},"id":"97867c24-ab21-4430-8924-dedd197ff698","timestamp":1785487191.4499767}


id: 014f6790-1bab-4686-b4b4-a11e072cd75e
app_name: my_agent
user_id: codebuddy
session_id: mcp_test_long_input
invocation_id: e-5b049183-a925-495c-98fc-3733674f0666
event_data:
  {"content":{"parts":[{"text":"请只回复「收到」两个字，不要做任何其他操作。测试长输入。\n规范内容\n规范内容\n规范内容\n规范内容\n规范内容\n规范内容\n规范内容\n规范内容\n规范内容\n规范内容\n规范内容\n规范内容\n规范内容\n规范内容\n规范内容\n规范内容\n规范内容\n规范内容\n规范内容\n规范内容\n规范内容\n规范内容\n规范内容\n规范内容\n规范内容\n规范内容\n规范内容\n规范内容\n规范内容\n规范内容\n规范内容\n规范内容\n规范内容\n规范内容\n规范内容\n规范内容\n规范内容\n规范内容\n规范内容\n规范内容\n规范内容\n规范内容\n规范内容\n规范内容\n规范内容\n规范内容\n规范内容\n规范内容\n规范内容\n规范内容\n规范内容\n规范内容\n规范内容\n规范内容\n规范内容\n规范内容\n规范内容\n规范内容\n规范内容\n规范内容\n规范内容\n规范内容\n规范内容\n规范内容\n规范内容\n规范内容\n规范内容\n规范内容\n规范内容\n规范内容\n规范内容\n规范内容\n规范内容\n规范内容\n规范内容\n规范内容\n规范内容\n规范内容\n规范内容\n规范内容\n规范内容\n规范内容\n规范内容\n规范内容\n规范内容\n规范内容\n规范内容\n规范内容\n规范内容\n规范内容\n规范内容\n规范内容\n规范内容\n规范内容\n规范内容\n规范内容\n规范内容\n规范内容\n规范内容\n规范内容\n规范内容\n规范内容\n规范内容\n规范内容\n规范内容\n规范内容\n规范内容\n规范内容\n规范内容\n规范内容\n规范内容\n规范内容\n规范内容\n规范内容\n规范内容\n规范内容\n规范内容\n规范内容\n规范内容\n规范内容\n规范内容\n规范内容\n规范内容\n规范内容\n规范内容\n规范内容\n规范内容\n规范内容\n规范内容\n规范内容\n规范内容\n规范内容\n规范内容\n规范内容\n规范内容\n规范内容\n规范内容\n规范内容\n规范内容\n规范内容\n规范内容\n规范内容\n规范内容\n规范内容\n规范内容\n规范内容\n规范内容\n规范内容\n规范内容\n规范内容\n规范内容\n规范内容\n规范内容\n规范内容\n规范内容\n规范内容\n规范内容\n规范内容\n规范内容\n规范内容\n规范内容\n规范内容\n规范内容\n规范内容\n规范内容\n规范内容\n规范内容\n规范内容\n规范内容\n规范内容\n规范内容\n规范内容\n规范内容\n规范内容\n规范内容\n规范内容\n规范内容\n规范内容\n规范内容\n规范内容\n规范内容\n规范内容\n规范内容\n规范内容\n规范内容\n规范内容\n规范内容\n规范内容\n规范内容\n规范内容\n规范内容\n规范内容\n规范内容\n规范内容\n规范内容\n规范内容\n规范内容\n规范内容\n规范内容\n规范内容\n"}],"role":"user"},"invocation_id":"e-5b049183-a925-495c-98fc-3733674f0666","author":"user","actions":{"state_delta":{},"artifact_delta":{},"requested_auth_configs":{},"requested_tool_confirmations":{}},"node_info":{"path":""},"id":"014f6790-1bab-4686-b4b4-a11e072cd75e","timestamp":1785487649.7749162}


id: 639cf048-ec90-4dad-a0a5-04c0fc89a973
app_name: my_agent
user_id: codebuddy
session_id: mcp_test_long_input
invocation_id: e-5b049183-a925-495c-98fc-3733674f0666
event_data:
  {"model_version":"sensenova-6.7-flash-lite","content":{"parts":[{"text":"用户要求我只回复「收到」两个字，不做任何其他操作。这是一个简单的测试消息。\n","thought":true},{"text":"\n\n收到"}],"role":"model"},"partial":false,"finish_reason":"STOP","usage_metadata":{"cached_content_token_count":0,"candidates_token_count":23,"prompt_token_count":7929,"total_token_count":7952},"invocation_id":"e-5b049183-a925-495c-98fc-3733674f0666","author":"my_agent","actions":{"state_delta":{},"artifact_delta":{},"requested_auth_configs":{},"requested_tool_confirmations":{}},"node_info":{"path":"my_agent@1"},"id":"639cf048-ec90-4dad-a0a5-04c0fc89a973","timestamp":1785487649.794448}


id: 20e0b280-6de9-41bd-ab23-3df6e96c921e
app_name: my_agent
user_id: codebuddy
session_id: ponding_analysis
invocation_id: e-03bac67b-78ea-4545-9262-6686e41c22af
event_data:
  {"content":{"parts":[{"text":"你好！我需要你帮我做一个 Vue 页面的迁移分析工作，先不要写代码，只做分析。\n\n背景：\n- 老项目是 Vue2 + Element UI，路径：D:/nzy/workspace_git/baseplatform-ui\n- 新项目是 Vue3 + TypeScript + Ant Design Vue 4.x，路径：d:/nzy/workspace_git/Baseplatform-Ui-V3\n- 我们要把老项目的页面迁移重构到新项目中\n\n请你做以下分析工作：\n\n1. 找到老项目的道路积水页面（搜文件名含 ponding 的 .vue 文件）\n2. 阅读完整的 .vue 文件（template + script + style）\n3. 输出详细的分析报告，包括：\n   - 页面整体布局结构（用 ASCII 简图或文字描述）\n   - 所有面板/区块的名称和功能\n   - 有哪些交互功能（筛选、搜索、按钮、弹窗等）\n   - 有哪些数据结构（表格列、列表项字段等）\n   - 使用了哪些 ECharts 图表（类型、数据字段）\n   - 有多少个弹窗，分别是什么\n   - 依赖的公共组件有哪些\n   - 预估迁移工作量和难度\n\n注意：\n- 这是分析任务，不要写代码，不要修改文件\n- 报告尽量详细，以便后续迁移时参考\n- 读完文件后直接报告分析结果\n\n请开始。"}],"role":"user"},"invocation_id":"e-03bac67b-78ea-4545-9262-6686e41c22af","author":"user","actions":{"state_delta":{},"artifact_delta":{},"requested_auth_configs":{},"requested_tool_confirmations":{}},"node_info":{"path":""},"id":"20e0b280-6de9-41bd-ab23-3df6e96c921e","timestamp":1785489291.0052586}


id: 23c3cb49-a478-4928-957a-810a37675006
app_name: my_agent
user_id: codebuddy
session_id: ponding_analysis
invocation_id: e-03bac67b-78ea-4545-9262-6686e41c22af
event_data:
  {"model_version":"astron-code-latest","content":{"parts":[{"text":"我来开始分析老项目的道路积水页面。首先搜索相关文件。\n\n"},{"function_call":{"id":"call_f9024e4e033d4148a4559342","args":{"path":"D:/nzy/workspace_git/baseplatform-ui","pattern":"**/*ponding*.vue"},"name":"search_files"}}],"role":"model"},"partial":false,"finish_reason":"STOP","usage_metadata":{"cached_content_token_count":0,"candidates_token_count":64,"prompt_token_count":8146,"total_token_count":8210},"invocation_id":"e-03bac67b-78ea-4545-9262-6686e41c22af","author":"my_agent","actions":{"state_delta":{},"artifact_delta":{},"requested_auth_configs":{},"requested_tool_confirmations":{}},"node_info":{"path":"my_agent@1"},"long_running_tool_ids":[],"id":"23c3cb49-a478-4928-957a-810a37675006","timestamp":1785489291.0263848}


id: f8d8edc4-a8c5-4f6c-88c4-d5e8ca52cc46
app_name: my_agent
user_id: codebuddy
session_id: ponding_analysis
invocation_id: e-03bac67b-78ea-4545-9262-6686e41c22af
event_data:
  {"content":{"parts":[{"function_response":{"id":"call_f9024e4e033d4148a4559342","name":"search_files","response":{"content":[{"type":"text","text":"D:\\nzy\\workspace_git\\baseplatform-ui\\src\\views\\ponding\\pondingData.vue"}],"structuredContent":{"content":"D:\\nzy\\workspace_git\\baseplatform-ui\\src\\views\\ponding\\pondingData.vue"},"isError":false}}}],"role":"user"},"invocation_id":"e-03bac67b-78ea-4545-9262-6686e41c22af","author":"my_agent","actions":{"state_delta":{},"artifact_delta":{},"requested_auth_configs":{},"requested_tool_confirmations":{}},"node_info":{"path":"my_agent@1"},"id":"f8d8edc4-a8c5-4f6c-88c4-d5e8ca52cc46","timestamp":1785489327.7534146}


id: 54fa30f5-1ee0-4a1f-8155-4afa00dcd87a
app_name: my_agent
user_id: codebuddy
session_id: ponding_analysis
invocation_id: e-03bac67b-78ea-4545-9262-6686e41c22af
event_data:
  {"model_version":"glm-5.2","content":{"parts":[{"text":"找到了文件，接下来读取完整内容。"},{"function_call":{"id":"call_37a787beafd94ee79a0aaa10","args":{"path":"D:/nzy/workspace_git/baseplatform-ui/src/views/ponding/pondingData.vue"},"name":"read_text_file"}}],"role":"model"},"partial":false,"finish_reason":"STOP","usage_metadata":{"cached_content_token_count":0,"candidates_token_count":39,"prompt_token_count":7792,"total_token_count":7831},"invocation_id":"e-03bac67b-78ea-4545-9262-6686e41c22af","author":"my_agent","actions":{"state_delta":{},"artifact_delta":{},"requested_auth_configs":{},"requested_tool_confirmations":{}},"node_info":{"path":"my_agent@1"},"long_running_tool_ids":[],"id":"54fa30f5-1ee0-4a1f-8155-4afa00dcd87a","timestamp":1785489327.7681925}


id: 1de6a5ea-81bf-4d79-af44-8bf2fb540efb
app_name: my_agent
user_id: codebuddy
session_id: ponding_analysis
invocation_id: e-03bac67b-78ea-4545-9262-6686e41c22af
event_data:
  {"content":{"parts":[{"function_response":{"id":"call_37a787beafd94ee79a0aaa10","name":"read_text_file","response":{"content":[{"type":"text","text":"<template>\r\n  <div :style=\"{height:height,width:width,transform:data.transform}\" class=\"smallBg\">\r\n    <mapTop :superWidth=\"superWidth\"  ref=\"mapTop\" @getPondingId=\"getSonVal\"></mapTop>\r\n    <alertWindow :nowWidth=\"1920\" @closeTraject=\"closeTraject\" :showTraject=\"showTraject\" :ejectData=\"ejectData\" @getVideoImg=\"getVideoImg\" @uploadAlert=\"uploadAlert\" @functionMap=\"functionMap\" :style=\"{transform:data.transformMap}\" ref=\"alertWindow\"></alertWindow>\r\n    <largeRightNav\r\n      @epidemicMarkers=\"epidemicMarkers\"\r\n      @showPoliceCarLine=\"showPoliceCarLine\"\r\n      @uploadAlert=\"uploadAlert\"\r\n      @trajectortBtn=\"trajectortBtn\"\r\n      @setMapStyle=\"setMapStyle\"\r\n      :preload=\"['ponding']\"\r\n      :showWindow=\"['ponding']\"\r\n      ref=\"largeRightNav\" :resolution=\"1920\" :topNavList=\"'228px'\" :rightNavList=\"indexRightNavRight\" :screenButtonStatus=\"screenButtonStatus\" @resetMap=\"resetMap\" @faceNorth=\"faceNorth()\" @functionMap=\"functionMap\" @showTraffic=\"showTraffic\" @showMarkers=\"showMarkers\" @hideMarkers=\"hideMarkers\" @setPoiShow=\"setPoiShow\"  @flyTo=\"flyTo\"></largeRightNav>\r\n    <div class=\"largeMap\">\r\n      <div :style=\"{height:0,width:0,marginLeft:0,transform:data.transformMap}\">\r\n        <largeMap\r\n          @markerClick=\"markerClick\"\r\n          @closeTrajectMc=\"closeTrajectMc\" ref=\"mapBg\" @getAddress=\"getAddress\" @openBtn=\"getSonVal\" @sureHandler=\"sureHandler\" :marginTop_p=\"0\" :marginLeft_p=\"-40\" @alertWindow=\"alertWindow\"></largeMap>\r\n      </div>\r\n    </div>\r\n    <div class=\"routeNav\"><span style=\"cursor: pointer\" @click=\"stepToIndex\">首页</span>><span class=\"secondNav\">道路积水</span></div>\r\n    <div class=\"window topBg\">\r\n      <div class=\"tapView\">\r\n        <div class=\"mapTab active\" @click=\"changeToNewPage\">道路积水</div>\r\n      </div>\r\n      <div class=\"goBackBtn1920\" @click=\"$goBack\">返回</div>\r\n    </div>\r\n    <div class=\"window leftBg\"></div>\r\n    <div class=\"window rightBg\"></div>\r\n    <div class=\"window bottomBg\"></div>\r\n    <div class=\"pointView\">\r\n      <div class=\"contentTitle\">道路积水点位</div>\r\n      <div class=\"searchView\">\r\n        <el-select v-model=\"searchData.polDept\" placeholder=\"请选择\" @change=\"list\" class=\"selectView\" style=\"width: 48%!important;margin-left: 7px!important;\" size=\"medium\">\r\n          <el-option v-for=\"item in teamList_search\" :key=\"item.id\" :label=\"item.ddflmc\" :value=\"item.ddfl\">\r\n          </el-option>\r\n        </el-select>\r\n        <el-select v-model=\"searchData.inspectionFlag\" placeholder=\"请选择\" @change=\"list\" class=\"selectView\" style=\"width: 48%!important;margin-left: 7px!important;\" size=\"medium\">\r\n          <el-option v-for=\"item in inspectionFlags\" :key=\"item.id\" :label=\"item.ddflmc\" :value=\"item.ddfl\">\r\n          </el-option>\r\n        </el-select>\r\n\r\n      </div>\r\n      <div class=\"searchView\">\r\n        <el-select v-model=\"searchData.floodSituation\" placeholder=\"积水状态\" @change=\"list\" class=\"selectView\" style=\"width: 110px!important;margin-left: 7px!important;\" size=\"medium\">\r\n          <el-option label=\"全部\" value=\"\"></el-option>\r\n          <el-option label=\"正常\" value=\"1\"></el-option>\r\n          <el-option label=\"积水\" value=\"2\"></el-option>\r\n        </el-select>\r\n        <input placeholder=\"输入关键字搜索\" v-model=\"searchData.search\" class=\"inputView\"></input>\r\n        <div class=\"searchIcon\" @click=\"list\" style=\"cursor: pointer\"></div>\r\n        <div class=\"goAdd\" @click=\"goAdd\" v-if=\"mycheckPermi(1)\">新增</div>\r\n        <div class=\"goAddGray\" v-else>新增</div>\r\n      </div>\r\n      <div class=\"pondingContentView\" ref=\"pongdingref\">\r\n        <div class=\"pondingContent\" v-for=\"(item,index) in LeftlistData\"  :class=\"index===selectIndex?'selected':''\" :key=\"index\" :id=\"index===selectIndex?'selected':''\" @click=\"changeSelect(index, item)\">\r\n          <div class=\"titleView\">\r\n            <div class=\"title\">\r\n              <span  class=\"title-con\" :title=\"item.floodLoca\">{{item.floodLoca}}</span>\r\n              <div style=\"position: absolute;right: 0;top: 20px\">\r\n                <div class=\"time\" :class=\"searchHistory&&showHistoryIndex==index?'timeActives':''\" @click.stop.capture=\"showHistory(item,index)\">\r\n                  <div class=\"timeContent\">巡查历史</div>\r\n                </div>\r\n                <div class=\"upload\" :class=\"caseReport&&caseReportData.index==index?'uploadActive':''\" v-if=\"mycheckPermi(3)\" @click.stop.capture=\"uploadAlert(item,index)\">\r\n                  <div class=\"uploadContent\">巡 查</div>\r\n                </div>\r\n              </div>\r\n              <div style=\"position: absolute;right: 0;bottom: 20px\">\r\n                <div class=\"delete\" :class=\"isShowDelete&&deletePondingIndex==index?'deleteActive':''\" @click.stop.capture=\"deletePonding(item,index)\">\r\n                  <div class=\"deleteContent\">删 除</div>\r\n                </div>\r\n                <div class=\"update\" :class=\"isUpdatePonding&&isUpdatePondingIndex==index?'updateActive':''\" @click.stop.capture=\"updatePonding(item,index)\">\r\n                  <div class=\"updateContent\">修改</div>\r\n                </div>\r\n              </div>\r\n            </div>\r\n            <div class=\"level level3\" v-if=\"item.floodLevelName=='三级'\">{{item.floodLevelName}}</div>\r\n            <div class=\"level level2\" v-else-if=\"item.floodLevelName=='二级'\">{{item.floodLevelName}}</div>\r\n            <div class=\"level level1\" v-else>{{item.floodLevelName}}</div>\r\n            <div style=\"width: 60px;height: 20px;border-radius:4px;font-size:14px;background-color: rgba(68,255,253,0.3);position: relative;top: -31px;left: 60px;display: flex;justify-content: center;align-items: center;color: rgba(68,255,253,1)\" v-if=\"item.inspectionFlag>='2'\">已巡查</div>\r\n            <div style=\"width: 60px;height: 20px;border-radius:4px;font-size:14px;background-color: rgba(246,121,91,0.3);position: relative;top: -31px;left: 60px;display: flex;justify-content: center;align-items: center;color: rgba(246,121,91,1)\" v-if=\"item.inspectionFlag=='1'\">未巡查</div>\r\n          </div>\r\n          <div class=\"contentView\">\r\n            <div class=\"textBar\">\r\n              <div class=\"textLeft\" :title=\"item.polDeptName\">管辖大队：{{item.polDeptName}}</div>\r\n              <div class=\"textRight\" :title=\"item.polLeader\">辖区大队领导：{{item.polLeader}}</div>\r\n            </div>\r\n            <div class=\"textBar\">\r\n              <div class=\"textLeft\">排水负责人：{{item.flPrincName}}</div>\r\n              <div class=\"textRight\">积水次数：{{item.floodCount}}</div>\r\n            </div>\r\n            <div class=\"textBar\">\r\n              排水负责人电话：{{item.flPrincTel}}\r\n            </div>\r\n          </div>\r\n        </div>\r\n      </div>\r\n    </div>\r\n    <div class=\"surveyView\" v-show=\"!hideRight\">\r\n      <div class=\"contentTitle\">\r\n        概况\r\n        <div class=\"conBtn\" @click=\"exportData(1)\">导出汇总表</div>\r\n      </div>\r\n      <div class=\"surveyPointView\">\r\n        <div class=\"surveyPoint total\">{{generalReportData.totalNum}}</div>\r\n        <div class=\"des\">点位总数</div>\r\n      </div>\r\n      <div class=\"surveyPointView\">\r\n        <div class=\"surveyPoint now\">{{generalReportData.pondingNum}}</div>\r\n        <div class=\"des\">在淹点位</div>\r\n      </div>\r\n      <div class=\"surveyPointView\">\r\n        <div class=\"surveyPoint check\">{{generalReportData.unInspectionNum}}</div>\r\n        <div class=\"des\">待查点位</div>\r\n      </div>\r\n    </div>\r\n    <div class=\"rankView\" v-show=\"!hideRight\">\r\n      <div class=\"contentTitle\">积水次数排名</div>\r\n      <div class=\"faultTable\">\r\n        <div class=\"thead\">\r\n          <div class=\"th td1\" style=\"width: 15%\">排名</div>\r\n          <div class=\"th td2\" style=\"width: 45%;text-align: left;\">点位名称</div>\r\n          <div class=\"th td3\" style=\"width: 20%\">所属大队</div>\r\n          <div class=\"th td4\" style=\"width: 20%\">积水次数</div>\r\n        </div>\r\n        <div class=\"tbody\" v-if=\"generalReportData.pondingRankList.length>0\" style=\"height: 160px;overflow-y: auto;float: left;width: 100%\">\r\n          <div class=\"tr\" v-for=\"(item, index) in generalReportData.pondingRankList\" :key=\"index\">\r\n            <div class=\"td td1\" style=\"width: 15%\">{{index+1}}</div>\r\n            <div class=\"td td2\" style=\"width: 45%;text-align: left;\">\r\n              <el-popover\r\n                placement=\"top-start\"\r\n                width=\"200\"\r\n                trigger=\"hover\"\r\n                :open-delay=\"300\"\r\n                popper-class=\"popperClassB\"\r\n                :content=\"item.floodLoca\"\r\n              >\r\n                <span slot=\"reference\">{{item.floodLoca}}</span>\r\n              </el-popover>\r\n            </div>\r\n            <div class=\"td td3\" style=\"width: 20%\">{{item.polDeptName}}</div>\r\n            <div class=\"td td4\" style=\"width: 20%\">{{item.pondingNum}}</div>\r\n          </div>\r\n        </div>\r\n        <div class=\"noData\" v-else style=\"color:#fff;height: 190px;text-align: center;line-height: 190px;\">\r\n          暂无数据\r\n        </div>\r\n      </div>\r\n    </div>\r\n    <div class=\"situationView\" v-show=\"!hideRight\">\r\n      <div class=\"contentTitle\">\r\n        各大队积水情况\r\n        <div class=\"conBtn\" @click=\"exportData(2)\">导出</div>\r\n      </div>\r\n      <div class=\"faultTable\">\r\n        <div class=\"thead\">\r\n          <div class=\"th td1\" style=\"width: 25%;height: 32px\">　</div>\r\n          <div class=\"th td2\" style=\"width: 25%;\">点位数量</div>\r\n          <div class=\"th td3\" style=\"width: 25%\">积水点位</div>\r\n          <div class=\"th td4\" style=\"width: 25%\">未查点位</div>\r\n        </div>\r\n        <div class=\"tbody\" v-if=\"generalReportData.polDeptPondingList.length>0\" style=\"height: 256px;overflow-y: auto;float: left;width: 100%\">\r\n          <div class=\"tr\" v-for=\"(item, index) in generalReportData.polDeptPondingList\" :key=\"index\">\r\n            <div class=\"td td1\" style=\"width: 25%\">{{item.polDeptName}}</div>\r\n            <div class=\"td td2\" style=\"width: 25%;\">{{item.totalNum}}</div>\r\n            <div class=\"td td3\" style=\"width: 25%\">{{item.pondingNum}}</div>\r\n            <div class=\"td td4\" style=\"width: 25%\">{{item.unInspectionNum}}</div>\r\n          </div>\r\n        </div>\r\n        <div class=\"noData\" v-else style=\"color:#fff;height: 190px;text-align: center;line-height: 190px;\">\r\n          暂无数据\r\n        </div>\r\n      </div>\r\n    </div>\r\n    <div class=\"AllbottomButtonView\" v-if=\"selectIndex==-1\">\r\n      <div class=\"bottomButtonView bottomButtonViewActive\" style=\"cursor: pointer\" v-if=\"mycheckPermi(2)\" @click=\"releaseViewSend\">发布巡查指令</div>\r\n      <div class=\"bottomButtonView bottomButtonViewGray\" v-else>发布巡查指令</div>\r\n      <div class=\"bottomButtonView1\" v-if=\"showDisabled\" :disabled=\"showDisabled\">发布诱导屏</div>\r\n      <div class=\"bottomButtonView1 buttomClassActive\" v-else @click=\"fubuBtn\" :disabled=\"showDisabled\">发布诱导屏</div>\r\n    </div>\r\n    <div class=\"AllbottomButtonView\" style=\"width: 462px;justify-content: center\" v-else>\r\n      <div class=\"bottomButtonView bottomButtonViewActive\" style=\"cursor: pointer;width: 100px\"  @click=\"uploadAlert(LeftlistData[selectIndex],selectIndex)\">巡查</div>\r\n      <div class=\"bottomButtonView bottomButtonViewActive\" style=\"cursor: pointer;width: 100px\"  @click=\"showHistory(LeftlistData[selectIndex],selectIndex)\">历史</div>\r\n      <div class=\"bottomButtonView bottomButtonViewActive\" style=\"cursor: pointer;width: 100px\"  @click=\"updatePonding(LeftlistData[selectIndex],selectIndex)\">修改</div>\r\n      <div class=\"bottomButtonView bottomButtonViewActive\" style=\"cursor: pointer;width: 100px\"  @click=\"deletePonding(LeftlistData[selectIndex],selectIndex)\">删除</div>\r\n    </div>\r\n    <div class=\"pondingInputView\" v-show=\"createReport\">\r\n      <div class=\"contentTitle\">{{isUpdatePonding?'积水点位信息修改':'积水点位新增'}}</div>\r\n      <div class=\"inputContent\" style=\"margin-top: 30px;float: left;\">\r\n        <div class=\"selectBar\">\r\n          <span class=\"selectName\">级别：</span>\r\n          <el-select v-model=\"formData.floodLevel\" placeholder=\"请选择\" class=\"selectView\" size=\"medium\">\r\n            <el-option v-for=\"item in levelData\" :key=\"item.dictSort\" :value=\"item.dictCode\" :label=\"item.dictLabel\"></el-option>\r\n          </el-select>\r\n        </div>\r\n        <div class=\"selectBar\">\r\n          <span class=\"selectName\">点位坐标：</span>\r\n          <input type=\"text\" class=\"inputView address\" clearable v-model=\"formData.latLng\" @blur=\"drawPondingPoint\" placeholder=\"请输入坐标\" style=\"width:226px\"></input>\r\n          <div class=\"selectPoint\" style=\"cursor: pointer;\" :class=\"isGetMapPoint===true?'isGetMapPoint':''\" @click=\"goSelectMapPoint()\"></div>\r\n        </div>\r\n        <div class=\"selectBar\">\r\n          <span class=\"selectName\">点位名称：</span>\r\n          <input type=\"text\" class=\"inputView\" clearable v-model=\"formData.floodLoca\" placeholder=\"请输入点位名称\"></input>\r\n        </div>\r\n\r\n        <div class=\"selectBar\">\r\n          <span class=\"selectName\">排水部门：</span>\r\n          <input type=\"text\" class=\"inputView\" clearable v-model=\"formData.flDept\" placeholder=\"请输入排水部门\"></input>\r\n        </div>\r\n        <div class=\"selectBar\">\r\n          <span class=\"selectName\">排水负责人：</span>\r\n          <input type=\"text\" class=\"inputView\" clearable v-model=\"formData.flPrincName\" placeholder=\"请输入负责人姓名\"></input>\r\n        </div>\r\n        <div class=\"selectBar\">\r\n          <span class=\"selectName\">排水负责人电话：</span>\r\n          <input type=\"text\" class=\"inputView\" clearable v-model=\"formData.flPrincTel\" placeholder=\"请输入负责人电话\"></input>\r\n        </div>\r\n        <div class=\"selectBar\">\r\n          <span class=\"selectName\">管辖大队：</span>\r\n          <el-select v-model=\"formData.polDept\" placeholder=\"请选择\" class=\"selectView\" size=\"medium\">\r\n            <el-option v-for=\"item in dealTeamList\" :key=\"item.id\" :label=\"item.ddflmc\" :value=\"item.id\"></el-option>\r\n          </el-select>\r\n        </div>\r\n        <div class=\"selectBar\">\r\n          <span class=\"selectName\">辖区大队领导：</span>\r\n          <input type=\"text\" class=\"inputView\" clearable v-model=\"formData.polLeader\" placeholder=\"请输入领导人姓名\"></input>\r\n        </div>\r\n      </div>\r\n      <div class=\"formButtonView\">\r\n        <div @click=\"clearForm\">取消</div>\r\n        <div @click=\"submit\">提交</div>\r\n      </div>\r\n    </div>\r\n\r\n    <div class=\"situationReportViewA\" v-show=\"caseReport\">\r\n      <div class=\"contentTitle\">积水情况巡查 <span class=\"countDown\">{{countDownTime>0?`倒计时：${getFloorNum(countT.hour)}:${getFloorNum(countT.minute)}:${getFloorNum(countT.second)}`: ''}}</span></div>\r\n      <div class=\"situationReportContent\">\r\n        <div class=\"selectBar\">\r\n          <span class=\"selectName\">点位名称：</span>\r\n          {{caseReportData.floodLoca}}\r\n        </div>\r\n        <div class=\"selectBar\">\r\n          <span class=\"selectName\">交通情况：</span>\r\n          <el-radio v-model=\"caseReportData.trafficSituation\" label='1'>正常</el-radio>\r\n          <el-radio v-model=\"caseReportData.trafficSituation\" label='2'>断交</el-radio>\r\n          <el-radio v-model=\"caseReportData.trafficSituation\" label='3'>缓行</el-radio>\r\n        </div>\r\n        <div class=\"selectBar\">\r\n          <span class=\"selectName\">淹水情况：</span>\r\n          <el-radio v-model=\"caseReportData.floodSituation\" label='1'>正常</el-radio>\r\n          <el-radio v-model=\"caseReportData.floodSituation\" label='2'>积水</el-radio>\r\n        </div>\r\n        <div class=\"selectBar\">\r\n          <span class=\"selectName\" style=\"width: 100px\">积水深度(cm)：</span>\r\n          <el-input style=\"width: 160px\" oninput=\"value=value.replace(/[^\\d.]/g,'')\" v-model=\"caseReportData.depth\"></el-input>\r\n        </div>\r\n<!--        hwl-->\r\n        <div class=\"selectBar\">\r\n          <span class=\"selectName\">图片上传：</span>\r\n          <div class=\"situationUpload\" style=\"cursor: pointer\" @click=\"selectFile\"></div>\r\n          <span style=\"color: #29B3FF;cursor: pointer\" @click=\"selectFile\">本地上传<span style=\"color: #4177A1;\">（最多3张）</span></span>\r\n          <input type=\"file\" accept=\"image/*\" id=\"file\" @change=\"getFile\" ref=\"fileSelect\" style=\"filter:alpha(opacity=0);opacity: 0;width: 0;height: 0\"></input>\r\n        </div>\r\n        <div class=\"selectBar\" style=\"overflow: hidden;height: auto;margin-bottom: 20px\">\r\n          <span class=\"selectName\" style=\"display: none\"></span>\r\n          <div class=\"picView\" style=\"position: relative;left: 20px;width: 360px\">\r\n            <div class=\"img\" style=\"width: 109px\" v-for=\"pic in caseReportData.imgList\">\r\n              <el-image style=\"width: 100%;height: 100%;z-index: 999\" :src=\"pic\" :preview-src-list=\"caseReportData.imgList\"></el-image>\r\n            </div>\r\n\r\n          </div>\r\n        </div>\r\n        <div class=\"formButtonView\">\r\n          <div @click=\"clearForm\">取消</div>\r\n          <el-button class=\"sureBTnBg sureBTnBg1\" @click=\"submitCaseReport\" :loading=\"submitLoading\">提交</el-button>\r\n<!--          <div @click=\"submitCaseReport\">提交</div>-->\r\n        </div>\r\n      </div>\r\n    </div>\r\n    <div class=\"situationReportViewA\" style=\"top: 530px;z-index: 10\" v-show=\"caseReport\">\r\n      <div class=\"contentTitle\">积水情况巡查</div>\r\n      <div class=\"situationReportContent\" style=\"padding-top: 0px\">\r\n        <div class=\"addressDes\">{{showHistoryName}}</div>\r\n        <div class=\"faultTable\">\r\n          <div class=\"thead\">\r\n            <div class=\"th td1\" style=\"width: 20%;\">巡查状态</div>\r\n            <div class=\"th td1\" style=\"width: 35%;\">巡查时间</div>\r\n            <div class=\"th td2\" style=\"width: 15%;\">交通情况</div>\r\n            <div class=\"th td3\" style=\"width: 15%\">淹水情况</div>\r\n            <div class=\"th td4\" style=\"width: 15%\">图片</div>\r\n          </div>\r\n          <div class=\"tbody\" v-if=\"caseHistory.length>0\" style=\"overflow-y: auto;float: left;width: 100%;height: 280px\">\r\n            <div class=\"tr\" v-for=\"(item, index) in caseHistory\" :key=\"index\">\r\n              <div class=\"td td1\" style=\"width: 20%\">{{ inspectionMap[item.inspectionFlag] }}</div>\r\n              <div class=\"td td1\" style=\"width: 35%\">{{item.updateTime}}</div>\r\n              <div class=\"td td2\" style=\"width: 15%;\"><span class=\"dot\" :class=\"item.trafficSituation===1?'dot_blue':item.trafficSituation===3?'dot_yellow':'dot_red'\"></span>{{caseReportDataMap.trafficSituation[item.trafficSituation]}}</div>\r\n              <div class=\"td td3\" style=\"width: 15%\"><span class=\"dot\" :class=\"item.floodSituation===1?'dot_blue':'dot_red'\"></span>{{caseReportDataMap.floodSituation[item.floodSituation]}}</div>\r\n              <div class=\"td td4\" style=\"width: 15%\"><div class=\"picButton\" style=\"cursor: pointer\" v-show=\"item.picList.length>0\" @click=\"showImages(item.picList)\"></div></div>\r\n            </div>\r\n          </div>\r\n          <div class=\"noData\" v-else style=\"color:#fff;height: 190px;text-align: center;line-height: 190px;\">\r\n            暂无数据\r\n          </div>\r\n        </div>\r\n      </div>\r\n    </div>\r\n<!--    showImage-->\r\n    <div class=\"picViewerView\" v-show=\"showImage\">\r\n      <div class=\"picViewerTitle\">\r\n        图片预览\r\n        <div class=\"closeButton\" @click=\"closeImage\"></div>\r\n      </div>\r\n      <div class=\"picViewerContent\">\r\n        <div class=\"img\" v-for=\"pic in imageList\">\r\n          <el-image style=\"width: 100%;height: 100%;z-index: 999\" :src=\"pic\" :preview-src-list=\"imageList\"></el-image>\r\n          <!--              <img v-else :src=\"'http://'+pic\" style=\"width: 100%;height: 100%\" alt=\"\">-->\r\n        </div>\r\n      </div>\r\n    </div>\r\n    <div class=\"situationReportView\" v-show=\"searchHistory\">\r\n      <div class=\"contentTitle\">巡查历史 <div class=\"conBtn\" @click=\"exportData(3)\">导出</div></div>\r\n      <div class=\"situationReportContent\" style=\"padding-top: 0px\">\r\n        <div class=\"addressDes\">{{showHistoryName}}</div>\r\n        <div class=\"faultTable\">\r\n          <div class=\"thead\">\r\n            <div class=\"th td1\" style=\"width: 20%;\">巡查状态</div>\r\n            <div class=\"th td1\" style=\"width: 35%;\">巡查时间</div>\r\n            <div class=\"th td2\" style=\"width: 15%;\">交通情况</div>\r\n            <div class=\"th td3\" style=\"width: 15%\">淹水情况</div>\r\n            <div class=\"th td4\" style=\"width: 15%\">图片</div>\r\n          </div>\r\n          <div class=\"tbody\" v-if=\"caseHistory.length>0\" style=\"overflow-y: auto;float: left;width: 100%;height: 672px\">\r\n            <div class=\"tr\" v-for=\"(item, index) in caseHistory\" :key=\"index\">\r\n              <div class=\"td td1\" style=\"width: 20%\">{{ inspectionMap[item.inspectionFlag] }}</div>\r\n              <div class=\"td td1\" style=\"width: 35%\">{{item.updateTime}}</div>\r\n              <div class=\"td td2\" style=\"width: 15%;\"><span class=\"dot\" :class=\"item.trafficSituation===1?'dot_blue':item.trafficSituation===3?'dot_yellow':'dot_red'\"></span>{{caseReportDataMap.trafficSituation[item.trafficSituation]}}</div>\r\n              <div class=\"td td3\" style=\"width: 15%\"><span class=\"dot\" :class=\"item.floodSituation===1?'dot_blue':'dot_red'\"></span>{{caseReportDataMap.floodSituation[item.floodSituation]}}</div>\r\n              <div class=\"td td4\" style=\"width: 15%\"><div class=\"picButton\" v-show=\"item.picList.length>0\" style=\"cursor: pointer\" @click=\"showImages(item.picList)\"></div></div>\r\n            </div>\r\n          </div>\r\n          <div class=\"noData\" v-else style=\"color:#fff;height: 190px;text-align: center;line-height: 190px;\">\r\n            暂无数据\r\n          </div>\r\n        </div>\r\n      </div>\r\n    </div>\r\n    <div class=\"infoSureView\" v-show=\"caseReportRes\">\r\n      <div class=\"picViewerTitle\">情况巡查</div>\r\n      <div class=\"infoSureContent\"><br>{{ showContent}}</div>\r\n      <div class=\"formButtonView\">\r\n        <div @click=\"submit\">确定</div>\r\n      </div>\r\n    </div>\r\n    <div class=\"releaseView\" v-show=\"releaseView\">\r\n      <div class=\"contentTitle\">发布巡查 <span style=\"margin-left: 20px;color: rgb(214, 139, 19);font-size: 14px;\">(上次发布巡查指令时间{{lastestRecordTime}})</span></div>\r\n      <div class=\"releaseBar\" style=\"margin-top: 10px\">\r\n        <div class=\"left\">筛选大队：</div>\r\n        <div class=\"right\">\r\n          <el-checkbox v-model=\"releasedeptAllcheck\" @change=\"releaseAllcheck\">全选</el-checkbox>\r\n          <el-tooltip placement=\"top\" class=\"item\" :visible-arrow=\"true\" popper-class=\"tooltipWork\" content=\"重置时间内，不能给相同大队重复发指令\">\r\n            <i class=\"el-icon-question\" style=\"font-size: 18px;margin-left: 16px;color: #f6a31d\"></i>\r\n          </el-tooltip>\r\n        </div>\r\n      </div>\r\n      <div class=\"releaseBar\">\r\n        <div class=\"left\"></div>\r\n        <div class=\"right\">\r\n          <el-checkbox-group v-model=\"polDepts\">\r\n            <el-checkbox v-for=\"item in teamList\"  :key=\"item.ddfl\" :label=\"item.ddfl\">{{item.ddflmc}}</el-checkbox>\r\n          </el-checkbox-group>\r\n        </div>\r\n      </div>\r\n      <div class=\"releaseBar\" style=\"margin-top: 10px\">\r\n        <div class=\"left\">巡查等级：</div>\r\n        <div class=\"right\">\r\n          <el-radio-group style=\"line-height: 26px\" v-model=\"releaseData.inspectionLevel\">\r\n            <el-radio label=\"1\">A级（暴雨）</el-radio>\r\n            <el-radio label=\"2\">B级（大雨）</el-radio>\r\n            <el-radio label=\"3\">C级（中雨）</el-radio>\r\n          </el-radio-group>\r\n<!--          <el-radio v-model=\"releaseData.inspectionLevel\" label=\"1\">A级（暴雨）</el-radio>-->\r\n<!--          <el-radio v-model=\"releaseData.inspectionLevel\" label=\"2\">B级（大雨）</el-radio>-->\r\n<!--          <el-radio v-model=\"releaseData.inspectionLevel\" label=\"3\">C级（中雨）</el-radio>-->\r\n        </div>\r\n      </div>\r\n      <div class=\"releaseBar\" style=\"margin-bottom: 4px;display: flex\">\r\n        <div class=\"left\" style=\"width: 130px\">预警时间 (min)：</div>\r\n        <div class=\"right releaseBarInput\">\r\n          <el-select v-model=\"releaseData.earlyWarningPeriod\" placeholder=\"请选择\" @change=\"list\" class=\"selectView\" style=\"width: 48%!important;margin-left: 0px!important;\" size=\"medium\">\r\n            <el-option v-for=\"item in earlyTime\" :key=\"item.id\" :label=\"item.name\" :value=\"item.id\">\r\n            </el-option>\r\n          </el-select>\r\n<!--          -->\r\n<!--          <el-input-number-->\r\n<!--            v-model=\"releaseData.earlyWarningPeriod\"-->\r\n<!--            :step='1'-->\r\n<!--            :min=\"1\"-->\r\n<!--            step-strictly-->\r\n<!--            placeholder=\"请选择预警时间\"-->\r\n<!--            style=\"width: 50%\"-->\r\n<!--          >-->\r\n<!--          </el-input-number>-->\r\n        </div>\r\n      </div>\r\n<!--      <div class=\"releaseBar\">-->\r\n<!--        <div class=\"left\" style=\"width: 130px\">积水深度 (cm)：</div>-->\r\n<!--        <div class=\"right releaseBarInput\">-->\r\n<!--          <el-input style=\"width: 50%\" v-model=\"releaseData.depth\"></el-input>-->\r\n<!--        </div>-->\r\n<!--      </div>-->\r\n      <div class=\"releaseBar\" style=\"display:flex;\">\r\n        <div class=\"left\" style=\"width: 130px\">重置时间(小时)：</div>\r\n        <div class=\"right releaseBarInput\">\r\n          <el-select v-model=\"releaseData.deployResetPeriod\" placeholder=\"请选择\" @change=\"list\" class=\"selectView\" style=\"width: 48%!important;margin-left: 0px!important;\" size=\"medium\">\r\n            <el-option v-for=\"item in resetTime\" :key=\"item.id\" :label=\"item.name\" :value=\"item.id\">\r\n            </el-option>\r\n          </el-select>\r\n        </div>\r\n<!--        <div class=\"right releaseBarInput\">-->\r\n<!--          <div style=\"width: 50px\">-->\r\n<!--            {{releaseData.deployResetPeriod}}-->\r\n<!--            <el-tooltip placement=\"top\" class=\"item\" :visible-arrow=\"true\" popper-class=\"tooltipWork\" content=\"24小时后点位状态重置\">-->\r\n<!--              <i class=\"el-icon-question\" style=\"font-size: 18px;margin-left: 23px;position: relative;top: -38px;color: #f6a31d\"></i>-->\r\n<!--            </el-tooltip>-->\r\n<!--          </div>-->\r\n<!--        </div>-->\r\n      </div>\r\n      <div>\r\n\r\n      </div>\r\n      <div style=\"clear: both\"></div>\r\n      <div class=\"formButtonView\" style=\"margin-top: 30px\">\r\n        <div @click=\"clearForm\">取消</div>\r\n        <div class=\"sureBTnBg\" @click=\"submitrelease\">确认</div>\r\n        <div @click=\"resetBtn\">重置</div>\r\n      </div>\r\n    </div>\r\n\r\n    <!--    发布查询成功 -->\r\n    <div v-show=\"fabuShow\" class=\"fbuSucess\" style=\"top: 0;right: 0;bottom: 0;left: 0\">\r\n      <h1>发布巡查</h1>\r\n      <div style=\"    color: #fff;\r\n    text-align: center;\r\n    margin-top: 50px;\">\r\n        {{infoList}}\r\n      </div>\r\n      <div style=\"text-align: center;margin-top: 50px\">\r\n        <span style=\"display: inline-block;width: 120px;\r\n    color: #fff;\r\n    font-size: 14px;\r\n    background: #057bdf;\r\n    height: 30px;\r\n    text-align: center;\r\n    line-height: 30px;\r\n    border-radius: 4px;\" @click=\"fabuShow=false, infoList='巡查指令已下发到所选大队!'\">确定</span></div>\r\n    </div>\r\n\r\n    <!--     发布诱导 -->\r\n    <div v-show=\"showFabu\" style=\"height: 490px;left: 0;right: 0;top: 0; bottom: 0\" class=\"fabuDiv fabuDiv1\">\r\n      <h1>发布诱导</h1>\r\n      <div class=\"fabuDiv_con\">\r\n        <div style=\"width: 100px;\">\r\n          <span>选择点位</span>\r\n        </div>\r\n        <div style=\"width: calc(100% - 100px);\">\r\n          <div>\r\n            <el-checkbox v-model=\"allFabuDataCheck\" @change=\"releaseAllcheckAll\">全选</el-checkbox>\r\n\r\n          </div>\r\n          <el-checkbox-group v-model=\"allFabuDataCheckItem\">\r\n            <el-checkbox v-for=\"(item,index) in allFabuData\"  :key=\"index\" :label=\"item.floodLoca\">{{item.floodLoca}}</el-checkbox>\r\n          </el-checkbox-group>\r\n        </div>\r\n      </div>\r\n      <div class=\"fabuDiv_btn\" style=\"margin-top: 20px\">\r\n        <span @click=\"cancleFabu\">取消</span>\r\n        <span @click=\"sureFabu\">确定</span>\r\n      </div>\r\n    </div>\r\n\r\n    <!--    发布诱导信息-->\r\n    <div class=\"fabuDiv fabuDiv1 fabuDiv2\" v-show=\"showFabuInfo\">\r\n      <h1>发布诱导</h1>\r\n      <div style=\"min-height: 170px;width: 94%;padding-left: 5%\">\r\n<!--        <p style=\"margin-bottom: 10px\">昆明市交警提醒您：</p>-->\r\n        <el-input type=\"textarea\" :rows=\"9\" resize=\"none\" v-model=\"inspecttionContent\" style=\"\"></el-input>\r\n<!--        <p style=\"line-height: 30px\">{{allFabuDataCheckItem.join(',')}}有积水，建议绕行</p>-->\r\n      </div>\r\n      <div class=\"fabuDiv_btn\">\r\n        <span @click=\"showFabu=true,showFabuInfo=false\">返回</span>\r\n        <span @click=\"infoList='已发布诱导',showFabuInfo=false,fabuShow=true\">发布</span>\r\n      </div>\r\n    </div>\r\n  </div>\r\n</template>\r\n<script>\r\nimport mapTop from '../map/mapTop'\r\nimport echarts from 'echarts'\r\nimport largeMap from '@/views/components/largeMap'\r\nimport largeRightNav from '../components/largeRightNav'\r\nimport top_title from \"../components/top_title\";\r\nimport {checkPermi,checkRole} from '../../utils/permission'\r\nimport alertWindow from '@/views/components/alertWindow'\r\nimport { MessageBox } from 'element-ui'\r\nimport  largeRightNavJs from  \"@/views/components/mixin/largeRightNav\"\r\n\r\nimport store from '@/store'\r\nexport default {\r\n    components: {\r\n      mapTop,\r\n      largeMap,\r\n      largeRightNav,\r\n      top_title,\r\n      alertWindow\r\n    },\r\n    mixins:[largeRightNavJs],\r\n    data () {\r\n      return {\r\n        closeTrajectShow:false,\r\n        showTraject: false,\r\n        lastestRecordTime:'',\r\n        resetTime: [\r\n          {name:0.5,id: 30},\r\n          {name:1,id: 60},\r\n          {name:2,id: 120},\r\n          {name:3,id: 180},\r\n          {name:6,id: 360},\r\n          {name:12,id: 720},\r\n        ],\r\n        earlyTime: [\r\n          {name:5,id: 5},\r\n          {name:10,id: 10},\r\n          {name:15,id: 15},\r\n          {name:30,id: 30}\r\n        ],\r\n        pondingId:null,\r\n        testvalue: true,\r\n          ejectData:{}, // 父传子\r\n          countDownTime: '', // 倒计时\r\n          countT:{  // 倒计时\r\n              hour: 0,\r\n              minute:0,\r\n              second: 0\r\n          },\r\n          countDownTimer: null, // 倒计时存储定时器函数\r\n        screenButtonStatus:{\r\n          trafficStatus: {\r\n            isShow:true,\r\n            timer:false\r\n          },\r\n          video: {\r\n            isShow:true,\r\n            timer:false\r\n          },\r\n          policeSituation: {\r\n            isShow:true,\r\n            timer:false\r\n          },\r\n          policeman: {\r\n            isShow:true,\r\n            timer:1000\r\n          },\r\n          policeCar: {\r\n            isShow:true,\r\n            timer:false\r\n          },\r\n          ranger: {\r\n            isShow:true,\r\n            timer:false\r\n          },\r\n          rtRecorder4g: {\r\n            isShow:true,\r\n            timer:false\r\n          },\r\n          work: {\r\n            isShow:true,\r\n            timer:false\r\n          },\r\n          ponding: {\r\n            isShow:true,\r\n            timer:false\r\n          },\r\n          trailer:{\r\n            isShow:true,\r\n            timer:false\r\n          },\r\n          bayonet: {\r\n            isShow:true,\r\n            timer:false\r\n          }, // 卡口\r\n          controlBayonet: {\r\n            isShow:true,\r\n            timer:false\r\n          }, // 卡口\r\n        },\r\n        infoList: '巡查指令已下发到所选大队！', //弹窗---title\r\n\r\n        //发布诱导----\r\n        showFabu: false,  // 弹窗\r\n        showFabuInfo:false,  //提示框\r\n        showDisabled: true, // 发布诱导屏----按钮是否禁止\r\n        fabuShow: false,  // 查询成功弹窗\r\n        allFabuDataCheck: false,  //选择框---全选\r\n        inspecttionContent:'',\r\n        allFabuDataCheckItem: [],  // 选择框\r\n        allFabuData: [], // 选择框--文字\r\n        showContent:'',// 情报巡查\r\n\r\n        releaseData:{ // 发布巡查\r\n          polDepts:[],\r\n          inspectionLevel:null,\r\n          earlyWarningPeriod: 30, // 预警时间\r\n          deployResetPeriod: '', // 重置时间,\r\n          depth: '' // 积水深度\r\n\r\n        },\r\n        polDepts:[],\r\n        releasedeptAllcheck:false,  // 筛选大队\r\n        imageList:[], // 图片预览\r\n        localHost:process.env.VUE_APP_IMG_HOST_SRC,\r\n        caseReportData:{  // 积水巡查\r\n          index:-1, // 道路积水列表---选中\r\n          floodId:'', // 道路积水列表--选中---id号\r\n          trafficSituation:'1',  // 交通情况---默认正常\r\n          floodSituation:'1',  // 淹水情况----默认正常\r\n          picList:[],  // 积水巡查---图片\r\n          imgList:[],\r\n          depth:'', // 深度\r\n        },\r\n        caseReportDataMap:{ // 巡查历史--列表\r\n          trafficSituation:{1:'正常',2:'断交',3:'缓行'},\r\n          floodSituation:{1:'正常',2:'积水'}\r\n        },\r\n        inspectionMap:{1:'未巡查',2:'正常巡查',3:'超时巡查'}, // 巡检状态\r\n        releaseView:false, // 发布巡查---弹出框\r\n        showImage:false, // 积水情况---图片预览\r\n        caseReportRes:false,  // 情况巡查-弹窗\r\n        caseReport:false, // 积水情况巡查--弹框\r\n        searchHistory:false, // 巡查历史--弹框\r\n        hideRight:false,  // 各大队积水情况---弹框\r\n        isShowDelete:false, //是否正在删除\r\n        deletePondingIndex:null, //删除的id\r\n        isUpdatePonding:false, //是否更新淹积水\r\n        createReport:false,  // 道路积水首页\r\n        maxwidth:1920,\r\n        maxheight:960,\r\n        selectIndex:-1, // 道路积水点位列表---选中\r\n        teamList: [], //  发布巡查----大队展示\r\n        teamList_search:[], // 道路积水点位---大队\r\n        searchData: {  // 搜索\r\n          polDept: '',\r\n          search: '',\r\n          inspectionFlag:'',\r\n          floodSituation:'',\r\n          deployResetPeriod:'' //重置时间\r\n        },\r\n        inspectionFlags:[{id:1,ddfl:'',ddflmc:'全部'},{id:2,ddfl:1,ddflmc:'未巡查'},{id:3,ddfl:2,ddflmc:'已巡查'}],\r\n        showHistoryName:'', // 巡查历史----当前选中的道路名\r\n        LeftlistData: [], // 道路积水点位---列表\r\n        generalReportData: { // 概况\r\n          totalNum:'', // 点位总数\r\n          pondingNum:'', //在淹点位\r\n          unInspectionNum: '', // 待查点位\r\n          polDeptPondingList: [],  //各大队积水情况--列表\r\n          pondingRankList: []  // 积水次数排名---列表\r\n        },\r\n        levelData: [], // 级别--下拉框列表\r\n        isUpdatePondingIndex: -1, // 修改淹积水index\r\n        formData: {  // 道路积水首页--\r\n          id:'',\r\n          latLng: '',  //点位坐标\r\n          floodLevel: '',// 级别选中\r\n          floodLoca: '',  // 点位名称\r\n          longitude: '',\r\n          latidude: '',\r\n          flDept: '', // 排水部门\r\n          flPrincName: '',  // 排水负责人\r\n          flPrincTel: '', //排水负责人电话号码\r\n          polDept: '',  // 管辖大队\r\n          polLeader: ''// 管辖大队 领导\r\n        },\r\n        superWidth:1920,\r\n        width: '1920px',\r\n        height: '960px',\r\n        data:{\r\n          transform: 'scale(0.5,0.5)',\r\n          transformMap: 'scale(0.5,0.5)',\r\n          timeShow: '',\r\n        },\r\n        dealTeamList:[], // 管辖大队选择下拉框\r\n        caseHistory:[], // 巡查历史列表\r\n        isIndexScreenView: false,//是否显示警情筛选框\r\n        indexRightNavRight: 470,\r\n          showHistoryIndex:-1,  // 道路积水点位---选中\r\n\r\n        isGetMapPoint:false,  // 点位坐标是否选中\r\n        submitLoading: false\r\n      }\r\n    },\r\n    created() {\r\n      this.pondingId = this.$route.query.id\r\n    },\r\n  // 把父组件传入的arr转化成字符串\r\n    mounted: function () {\r\n      this.convert()\r\n      this.elevent();\r\n      this.dictType();\r\n      this.dealTeamData();\r\n      this.list()\r\n      // this.allFabu()\r\n      this.generalReport();\r\n        this.$refs.largeRightNav.refreshPondIng(true)\r\n      this.$once('hook:beforeDestroy', () => {\r\n        this.$refs.mapBg.removeMap()\r\n      })\r\n    },\r\n\r\n    watch: {\r\n      caseReport:function(){\r\n          clearInterval(this.countDownTimer)\r\n      },\r\n      polDepts:function(){\r\n        this.releasedeptAllcheck = this.teamList.length === this.polDepts.length;\r\n      },\r\n      allFabuDataCheckItem() {\r\n        this.allFabuDataCheck = this.allFabuData.length == this.allFabuDataCheckItem.length\r\n        this.inspecttionContent='昆明市交警提醒您：\\n       '+this.allFabuDataCheckItem.join(',')+'有积水，建议绕行'\r\n      },\r\n    },\r\n    methods: {\r\n      closeTrajectMc() {\r\n        this.$refs.alertWindow.showTrajectBtn()\r\n      },\r\n      closeTraject() {\r\n        this.showTraject = false;\r\n        this.$refs.largeRightNav.trajectorySearch1(false)\r\n      },\r\n      trajectortBtn(val) {\r\n        this.showTraject = val\r\n      },\r\n      //修改地图主题颜色\r\n      setMapStyle(val){\r\n        this.$refs.mapBg.mapSetStyleClick(val)//HWL\r\n        // @setMapStyle=\"setMapStyle\"\r\n      },\r\n      resetBtn() {\r\n        this.$axios.put(`/baseplatform/localFloodInfo/resetManual`).then(res=>{\r\n          if(res.data.code==200) {\r\n            this.getddflList(1)\r\n            this.$message.success('操作成功！')\r\n          }else{\r\n            this.$message.error(res.data.msg)\r\n          }\r\n        })\r\n      },\r\n      // 获取上次发布巡查指令的发布时间\r\n      lastestRecord() {\r\n        this.$axios.get(`/baseplatform/localFloodInfo/deploy/lastestRecord`).then(res=>{\r\n          if(res.data.code==200) {\r\n            this.lastestRecordTime= res.data.data.createTime;\r\n          }\r\n        })\r\n      },\r\n      exportData(val) {\r\n        let url =''\r\n        if(val==1) {\r\n          url='/baseplatform/localFloodInfo/export'\r\n        }else if(val==3) {\r\n          url=`/baseplatform/localFloodInspection/exportByFloodId?floodId=${this.LeftlistData[this.selectIndex].id}`\r\n        }else{\r\n          url='/baseplatform/localFloodInfo/exportReport'\r\n        }\r\n        let config = {'responseType':'blob'};\r\n        this.$axios.get(url,config).then(res=>{\r\n            console.log(\"666\",res)\r\n          let fileDownload = require('js-file-download');\r\n          fileDownload(res.data, decodeURIComponent(res.headers['content-disposition'].split('=')[1]))\r\n        })\r\n      },\r\n      alertWindow:function(ejectData){\r\n        this.ejectData=ejectData\r\n      },\r\n      checkRole,\r\n      checkPermi,\r\n      mycheckPermi(type){  // 健全\r\n        if(type===1){\r\n          return this.checkPermi(['business:localFloodInfo:add','*:*:*'])  // 框架自带写法\r\n        }else if(type===2){\r\n          return this.checkPermi(['business:localFloodInfo:deploy','*:*:*'])\r\n        }else if(type===3){\r\n          return this.checkPermi(['business:localFloodInspection:edit','*:*:*'])\r\n        }\r\n      },\r\n      changeToNewPage() {\r\n        this.$router.go(0)\r\n      },\r\n      faceNorth:function(){\r\n        this.$refs.mapBg.faceNorth()\r\n      },\r\n      functionMap:function(func,args){\r\n        this.$refs.mapBg.functionMap(func,args)\r\n      },\r\n      resetMap:function(){\r\n        this.$refs.mapBg.resetMap()\r\n      },\r\n      showMarkers:function(markers,isBestShow,isMul){\r\n        this.$refs.mapBg.showMarkers(markers,isBestShow,isMul)\r\n      },\r\n      hideMarkers:function(type){\r\n        this.$refs.mapBg.hideMarkers(type)\r\n      },\r\n      showTraffic:function(type){\r\n        this.$refs.mapBg.showTraffic(type, 30)\r\n      },\r\n      setPoiShow:function(){\r\n        this.$refs.mapBg.setPoiShow()\r\n      },\r\n      flyTo:function(lngLat,zoom,picth){\r\n        this.$refs.mapBg.flyTo(lngLat,zoom,picth)\r\n      },\r\n      // 发布诱导---确定\r\n      sureFabu() {\r\n        this.showFabu = false;\r\n        this.showFabuInfo = true;\r\n      },\r\n      // 发布诱导---取消\r\n      cancleFabu() {\r\n        this.allFabuDataCheckItem = [];\r\n        this.allFabuDataCheck= false;\r\n        this.showFabu = false\r\n      },\r\n      // 发布诱导指令\r\n      fubuBtn() {\r\n        this.showFabu = true;\r\n        this.allFabuDataCheckItem = [];\r\n        this.allFabuDataCheck= false;\r\n      },\r\n      // 获取道路积水列表\r\n      allFabu() {\r\n        let _this = this;\r\n        this.$axios.get(`/baseplatform/localFloodInfo/all`).then(function(res) {\r\n          if (res.data.code === 200 && res.status === 200){\r\n            _this.allFabuData = res.data.rows.splice(0, 15)\r\n          }\r\n        })\r\n      },\r\n      // 情况巡查----确定\r\n      submitrelease:function(){\r\n        let _this=this\r\n        _this.showContent='已发送巡查指令！'\r\n        if(!this.releaseData.inspectionLevel) {\r\n         return this.$message('请选择巡查等级')\r\n        }\r\n        if(this.releaseData.earlyWarningPeriod<5||!this.releaseData.earlyWarningPeriod){\r\n          return this.$message('预警时间请大于5分钟')\r\n        }\r\n        if(!this.releaseData.deployResetPeriod){\r\n          return this.$message('重置时间不能为空')\r\n        }\r\n        this.$axios.put('/baseplatform/localFloodInfo/deploy',{\r\n          polDepts: _this.polDepts,\r\n          inspectionLevel: _this.releaseData.inspectionLevel,\r\n          earlyWarningPeriod: _this.releaseData.earlyWarningPeriod,\r\n          // deployResetPeriod: _this.releaseData.deployResetPeriod\r\n          // deployResetPeriod: _this.releaseData.deployResetPeriod*60,\r\n          deployResetPeriod:_this.releaseData.deployResetPeriod\r\n        }).then(res=>{\r\n          if(res.status===200&&res.data.code===200){\r\n            _this.showDisabled = false;\r\n            _this.releaseView = false;\r\n            _this.fabuShow = true;\r\n            if(_this.caseReportData.floodId&&_this.caseReportData.index>=0) {  // 是否有选中道路积水点位，有，则请求接口获取倒计时\r\n                _this.uploadCountDown()\r\n            }\r\n            _this.polDepts=[];\r\n            _this.releasedeptAllcheck = false;\r\n            _this.releaseData.inspectionLevel = '';\r\n            setTimeout(function(){\r\n              _this.fabuShow=false\r\n            }, 1000)\r\n            _this.list()\r\n            _this.clearForm(1)\r\n          }\r\n          this.$refs.mapBg.hideMarkers('pondingData')\r\n          this.$refs.mapBg.stopToMarkLayers()\r\n\r\n        })\r\n      },\r\n      // 发布诱导----全选按钮change事件\r\n      releaseAllcheckAll() {\r\n        let h = []\r\n        if(this.allFabuDataCheck){\r\n          this.allFabuData.forEach(function(val) {\r\n            h.push(val.floodLoca)\r\n          })\r\n\r\n        }else{\r\n          h=[]\r\n        }\r\n        this.allFabuDataCheckItem = h;\r\n      },\r\n      // 筛选大队----全选\r\n      releaseAllcheck:function(){\r\n        let _this=this\r\n        if(this.releasedeptAllcheck){\r\n          this.polDepts=[]\r\n          this.teamList.forEach(function(val) {\r\n            _this.polDepts.push(val.ddfl)\r\n          })\r\n        }else{\r\n          this.polDepts=[]\r\n        }\r\n      },\r\n      // 发布巡查指令----按钮\r\n      releaseViewSend:function(){\r\n        this.lastestRecord()\r\n        this.getddflList()\r\n\r\n      },\r\n      // 图片预览---关闭\r\n      closeImage:function(){\r\n        this.showImage=false\r\n      },\r\n      // 图片预览---打开\r\n      showImages:function(item){\r\n        this.imageList=[]\r\n        let _this=this\r\n        item.forEach(function(val){\r\n          _this.imageList.push(_this.localHost+val.url)\r\n        })\r\n        this.showImage=true\r\n      },\r\n      // 文件上传\r\n      getFile() {\r\n        let files = this.$refs.fileSelect.files[0]\r\n        if(files!=null){\r\n          let param= new FormData();\r\n          param.append('file',files)\r\n          let config={\r\n            headers:{\"Content-Type\":\"multipart/form-data\",\"isToken\":false}\r\n          }\r\n          let _this=this;\r\n          if(this.caseReportData.imgList.length>=3) {\r\n            return  this.$message('最多上传三张')\r\n          }\r\n          this.$axios.post(this.localHost+'/uploadfile/system/files/upload/',param,config).then(res => {\r\n            let data= res.data.data\r\n            _this.caseReportData.picList.unshift({fileId:data.id});\r\n            _this.caseReportData.imgList.unshift(_this.localHost+data.url);\r\n          })\r\n        }\r\n      },\r\n      // 本地上传按钮\r\n      selectFile: function() {\r\n        document.getElementById('file').click()\r\n      },\r\n      // 列表--time事件--打开巡查历史\r\n      showHistory:function(item,index){\r\n        this.showHistoryIndex = index;\r\n        this.showHistoryName=this.LeftlistData[index].floodLoca\r\n        let _this = this\r\n        this.$axios.get(`/baseplatform/localFloodInfo/${item.id}`).then(function(res) {\r\n          let history = res.data.data\r\n          _this.caseHistory=history.inspectionList\r\n        })\r\n        this.showImage=false\r\n        this.caseReportRes=false\r\n        this.caseReport=false\r\n        this.searchHistory=true\r\n        this.hideRight = true;\r\n        this.createReport = false;\r\n        // this.selectIndex=-1\r\n      },\r\n      // 时间保留两位数\r\n        getFloorNum(i) {\r\n          return i<10?`0${i}`: i\r\n        },\r\n        // 倒计时\r\n        uploadCountDown(id) {\r\n          let _this = this;\r\n            clearInterval(this.countDownTimer)\r\n            this.countDownTime = 0;\r\n            if(this.caseReportData.floodId == '') {\r\n                return false;\r\n            }\r\n          this.$axios.get(`/baseplatform/localFloodInfo/inspectionUploadLeftMillisecond/${this.caseReportData.floodId}`).then(res=>{\r\n              if(res.data.data>0) {\r\n                  let times = res.data.data\r\n                  _this.countDownTime =Number(res.data.data);\r\n                  _this.countT.hour = Math.floor(times/3600);\r\n                  _this.countT.minute = Math.floor(times/60%60);\r\n                  _this.countT.second = Math.floor(times%60);\r\n\r\n                  _this.countDownTimer= setInterval(()=>{\r\n                      if (_this.countT.hour === 0) {\r\n                          if (_this.countT.minute !== 0 && _this.countT.second === 0) {\r\n                              _this.countT.second = 59\r\n                              _this.countT.minute -= 1\r\n                          } else if (_this.countT.minute === 0 && _this.countT.second === 0) {\r\n                              _this.countT.second = 0\r\n                              clearInterval(_this.countDownTimer)\r\n                          } else {\r\n                              _this.countT.second -= 1\r\n                          }\r\n                      } else {\r\n                          if (_this.countT.minute !== 0 && _this.countT.second === 0) {\r\n                              _this.countT.second = 59\r\n                              _this.countT.minute -= 1\r\n                          } else if (_this.countT.minute === 0 && _this.countT.second === 0) {\r\n                              _this.countT.hour -= 1\r\n                              _this.countT.minute = 59\r\n                              _this.countT.second = 59\r\n                          } else {\r\n                              _this.countT.second -= 1\r\n                          }\r\n                      }\r\n\r\n                      // _this.countDownTime =  _this.countDownTime -1\r\n                  }, 1000)\r\n              }else{\r\n                  clearInterval(_this.countDownTimer)\r\n                  this.countDownTime = '';\r\n              }\r\n\r\n            })\r\n        },\r\n      getVideoImg(file,imageSrc){\r\n        if(this.caseReport){\r\n          let files=file\r\n          if(files!=null){\r\n            let param= new FormData();\r\n\r\n            param.append('file',files)\r\n            let config={\r\n              headers:{\"Content-Type\":\"multipart/form-data\",\"isToken\":false}\r\n            }\r\n            let _this=this;\r\n            if(this.caseReportData.imgList.length>=3) {\r\n              return  this.$message('最多上传三张')\r\n            }\r\n\r\n            this.$axios.post(this.localHost+'/uploadfile/system/files/upload/',param,config).then(res => {\r\n              let data= res.data.data\r\n              _this.caseReportData.picList.unshift({fileId:data.id});\r\n              _this.caseReportData.imgList.unshift(_this.localHost+data.url);\r\n            })\r\n          }\r\n        }\r\n      },\r\n      // 列表--upload--打开积水情况巡查\r\n      uploadAlert:function(item,index){\r\n          index=this.LeftlistData.findIndex(it=>{return it.id===item.id})\r\n        let selectindex = -1\r\n        this.LeftlistData.forEach((val,index)=>{\r\n          if(val.id==item.id){\r\n            selectindex=index\r\n            return false\r\n          }\r\n        })\r\n        this.showImage=false\r\n        this.caseReportRes=false\r\n        this.caseReport=true\r\n        this.searchHistory=false\r\n        this.hideRight = true;\r\n        this.createReport = false;\r\n        this.caseReportData.index=selectindex\r\n        this.caseReportData.floodId=item.id\r\n        this.caseReportData.floodLoca=item.floodLoca\r\n        this.caseReportData.trafficSituation='1'\r\n        this.caseReportData.floodSituation='1'\r\n        this.caseReportData.imgList=[]\r\n        this.caseReportData.picList=[]\r\n        this.selectIndex=selectindex\r\n        this.uploadCountDown(item.id)\r\n\r\n        let _this=this\r\n        this.$axios.get(`/baseplatform/localFloodInfo/${item.id}`).then(function(res) {\r\n          let history = res.data.data\r\n          _this.caseHistory=history.inspectionList\r\n        })\r\n        this.showHistoryName=this.LeftlistData[index].floodLoca\r\n      },\r\n      getSonVal(val) {\r\n        // if(this.searchData.search!=''||this.searchData.polDept!='') {\r\n        //   this.searchData.search='';\r\n        //   this.searchData.polDept=''\r\n        //   this.list()\r\n        // }else{\r\n        //\r\n        // }\r\n        let index = this.LeftlistData.findIndex(item=>{\r\n          return item.id ==val.id\r\n        })\r\n        this.selectIndex=index;\r\n        setTimeout(()=>{\r\n          // let getselected = document.getElementById('selected')\r\n          //\r\n          document.getElementById('selected').scrollIntoView();\r\n        },100)\r\n        let point=this.LeftlistData[index]\r\n        this.$refs.mapBg.hideMarkers('pondingData')\r\n        this.$refs.mapBg.hideMarkers('ponding')\r\n        this.$refs.mapBg.removeWorkWindow()\r\n        let marker = {\r\n          type: 'pondingData',\r\n          lng: point.longitude,\r\n          lat: point.latidude,//纬度值\r\n          id: point.id,\r\n          floodLevelName: point.floodLevelName,\r\n          floodLoca: point.floodLoca,\r\n          polDeptName: point.polDeptName,\r\n          polLeader: point.polLeader,\r\n          flDept: point.flDept,\r\n          flPrincName: point.flPrincName,\r\n          flPrincTel: point.flPrincTel,\r\n          floodSituation: point.floodSituation,\r\n          lastestDepth: point.lastestDepth\r\n        }\r\n        this.$refs.mapBg.showMarkers([marker],true,false)\r\n        this.$refs.mapBg.addWorkWindow([marker],'ponding')\r\n        // if(index>3) {\r\n\r\n        // }\r\n\r\n      },\r\n      //道路积水点位--选中事件\r\n      changeSelect:function(index, val){\r\n        this.isUpdatePondingIndex=-1\r\n        this.createReport = false\r\n        this.searchHistory = false;\r\n        this.caseReport = false;\r\n        this.hideRight = false;\r\n        if(index===this.selectIndex){\r\n          this.selectIndex=-1\r\n          this.showHistoryIndex = -1;\r\n          this.$refs.mapBg.hideMarkers('pondingData')\r\n          this.$refs.mapBg.hideMarkers('ponding')\r\n          this.showImage=false\r\n          this.caseReportRes=false\r\n          this.caseReport=false\r\n          this.searchHistory=false\r\n          this.hideRight = false;\r\n          this.createReport = false;\r\n            this.$refs.largeRightNav.refreshPondIng(true)\r\n          // this.$refs.largeRightNav.selectScreen(true,9)\r\n          this.$refs.mapBg.resetMap()\r\n          return false\r\n        }\r\n        this.selectIndex=index\r\n        this.$refs.mapBg.hideMarkers('pondingData')\r\n        this.$refs.mapBg.hideMarkers('ponding')\r\n        this.$refs.mapBg.removeWorkWindow()\r\n        // this.$refs.largeRightNav.selectScreen(true,9)\r\n        let point=this.LeftlistData[index]\r\n        let marker = {\r\n          type: 'pondingData',\r\n          lng: point.longitude,\r\n          lat: point.latidude,//纬度值\r\n          id: point.id,\r\n          floodLevelName: point.floodLevelName,\r\n          floodLoca: point.floodLoca,\r\n          polDeptName: point.polDeptName,\r\n          polLeader: point.polLeader,\r\n          flDept: point.flDept,\r\n          flPrincName: point.flPrincName,\r\n          flPrincTel: point.flPrincTel,\r\n          floodSituation: point.floodSituation,\r\n          inspectionFlag:point.inspectionFlag,\r\n          lastestDepth: point.lastestDepth\r\n        }\r\n        this.$refs.mapBg.showMarkers([marker],true,false)\r\n        this.$refs.mapBg.addWorkWindow([marker],'ponding')\r\n      },\r\n      hideIndexScreenView: function() {\r\n        this.isIndexScreenView = false\r\n      },\r\n      // 提交\r\n      submit() {\r\n        if(this.formData.floodLevel=='') {\r\n          return  this.$message('请选择级别')\r\n        }else if(this.formData.latLng=='') {\r\n          return  this.$message('请选择点位坐标')\r\n        }else if(this.formData.latLng.flDept=='') {\r\n          return  this.$message('请输入排水部门')\r\n        }else if(this.formData.latLng.flPrincName=='') {\r\n          return  this.$message('请输入排水负责人')\r\n        }else if(this.formData.latLng.flPrincTel=='') {\r\n          return  this.$message('请输入电话')\r\n        }else if(this.formData.latLng.polDept=='') {\r\n          return  this.$message('请选择管辖大队')\r\n        }else if(this.formData.polDept=='') {\r\n          return  this.$message('请输入管辖大队')\r\n        }\r\n        let _this = this;\r\n        _this.showloading = true\r\n        if(_this.isUpdatePonding){\r\n          this.$axios.put('/baseplatform/localFloodInfo',{\r\n            id: _this.formData.id,\r\n            floodLevel: _this.formData.floodLevel,\r\n            floodLoca: _this.formData.floodLoca,\r\n            longitude: _this.formData.longitude,\r\n            latidude: _this.formData.latidude,\r\n            flDept: _this.formData.flDept,\r\n            flPrincName: _this.formData.flPrincName,\r\n            flPrincTel: _this.formData.flPrincTel,\r\n            polDept: _this.formData.polDept,\r\n            polLeader: _this.formData.polLeader,\r\n\r\n          })\r\n            .then(res=>{\r\n              _this.$refs.mapBg.hideMarkers('pondingData')\r\n              _this.$refs.mapBg.stopToMarkLayers()\r\n              _this.showloading = false\r\n              _this.showloading = false\r\n              if(res.data.code===200&&res.status===200){\r\n                _this.$refs.mapTop.alertMassageStatus =1;\r\n                _this.list()\r\n                let h = setTimeout(function() {\r\n                  _this.$refs.mapTop.closeAlertMassage();\r\n                  clearTimeout(h)\r\n                  _this.createReport=false\r\n                  _this.hideRight=false\r\n                  _this.isUpdatePonding=false\r\n                },1000)\r\n              }\r\n\r\n            })\r\n        }else{\r\n          this.$axios.post('/baseplatform/localFloodInfo',{\r\n            floodLevel: _this.formData.floodLevel,\r\n            floodLoca: _this.formData.floodLoca,\r\n            longitude: _this.formData.longitude,\r\n            latidude: _this.formData.latidude,\r\n            flDept: _this.formData.flDept,\r\n            flPrincName: _this.formData.flPrincName,\r\n            flPrincTel: _this.formData.flPrincTel,\r\n            polDept: _this.formData.polDept,\r\n            polLeader: _this.formData.polLeader,\r\n\r\n          })\r\n            .then(res=>{\r\n              _this.$refs.mapBg.hideMarkers('pondingData')\r\n              _this.$refs.mapBg.stopToMarkLayers()\r\n              _this.showloading = false\r\n              if(res.data.code===200&&res.status===200){\r\n                _this.$refs.mapTop.alertMassageStatus =1;\r\n                _this.list()\r\n                let h = setTimeout(function() {\r\n                  _this.$refs.mapTop.closeAlertMassage();\r\n                  clearTimeout(h)\r\n                  _this.createReport=false\r\n                  _this.hideRight=false\r\n                },1000)\r\n              }\r\n\r\n            })\r\n        }\r\n\r\n      },\r\n      submitCaseReport(){\r\n        let _this=this\r\n        _this.showContent='积水情况已巡查！';\r\n        // if() {\r\n        //\r\n        // }\r\n        if(this.submitLoading) {\r\n          return false;\r\n        }\r\n        if(this.caseReportData.floodSituation==2&&!this.caseReportData.depth){\r\n          return this.$message.error('积水深度不能为空')\r\n        }\r\n        this.submitLoading = true;\r\n        this.$axios.put('/baseplatform/localFloodInspection',{\r\n          floodId: _this.caseReportData.floodId,\r\n          trafficSituation: _this.caseReportData.trafficSituation,\r\n          floodSituation: _this.caseReportData.floodSituation,\r\n          picList: _this.caseReportData.picList,\r\n          depth: _this.caseReportData.depth\r\n        }).then(res=>{\r\n          this.submitLoading = false;\r\n          if(res.status===200&&res.data.code===200){\r\n            _this.LeftlistData[_this.selectIndex].inspectionFlag='2'\r\n            _this.generalReport()\r\n            _this.list()\r\n            if(_this.selectIndex>-1){\r\n              _this.$refs.mapBg.hideMarkers('pondingData')\r\n              _this.$refs.mapBg.hideMarkers('ponding')\r\n              _this.$refs.mapBg.removeWorkWindow()\r\n              // this.$refs.largeRightNav.selectScreen(true,9)\r\n              let point=_this.LeftlistData[_this.selectIndex]\r\n              let marker = {\r\n                type: 'pondingData',\r\n                lng: point.longitude,\r\n                lat: point.latidude,//纬度值\r\n                id: point.id,\r\n                floodLevelName: point.floodLevelName,\r\n                floodLoca: point.floodLoca,\r\n                polDeptName: point.polDeptName,\r\n                polLeader: point.polLeader,\r\n                flDept: point.flDept,\r\n                flPrincName: point.flPrincName,\r\n                flPrincTel: point.flPrincTel,\r\n                floodSituation: _this.caseReportData.floodSituation,\r\n                inspectionFlag:point.inspectionFlag,\r\n                lastestDepth: point.lastestDepth\r\n              }\r\n              _this.$refs.mapBg.showMarkers([marker],true,false)\r\n              _this.$refs.mapBg.addWorkWindow([marker],'ponding')\r\n              _this.$refs.largeRightNav.refreshPondIng(true)\r\n            }\r\n            else {\r\n              _this.$refs.largeRightNav.refreshPondIng(true)\r\n            }\r\n            _this.caseReportRes=true\r\n            // _this.LeftlistData[_this.caseReportData.index].inspectionFlag=2\r\n            if(_this.caseReportData.floodSituation==='2'||_this.caseReportData.floodSituation===2){\r\n              _this.LeftlistData[_this.caseReportData.index].floodCount+=1\r\n            }\r\n            setTimeout(function(){\r\n              _this.caseReportRes=false\r\n              _this.clearForm()\r\n            },100)\r\n          }\r\n\r\n        })\r\n      },\r\n      clearForm(i) {\r\n        this.lastestRecordTime = ''\r\n        this.releaseData.deployResetPeriod = ''\r\n        this.caseReportData.depth = '';\r\n        this.isUpdatePonding=false\r\n        this.releaseView=false\r\n        this.caseReportRes=false\r\n        this.showImage=false\r\n        this.$refs.mapBg.hideMarkers('pondingData')\r\n        this.$refs.mapBg.stopToMarkLayers()\r\n          if(i!=1) {\r\n              this.caseReport=false\r\n            this.hideRight = false;\r\n          }\r\n\r\n        this.searchHistory=false\r\n\r\n        this.createReport = false;\r\n        this.releaseData.earlyWarningPeriod =30;\r\n        this.releaseData.deployResetPeriod = 12;\r\n        this.caseReportData.floodId = '';\r\n\r\n        for(let item in this.formData){\r\n          this.formData[item] ='';\r\n        }\r\n\r\n      },\r\n      sureHandler(lng,lat,address){\r\n        this.formData.latLng=(lng+','+lat)\r\n        this.formData.floodLoca=address\r\n        this.isGetMapPoint=false\r\n        this.formData.longitude=lng\r\n        this.formData.latidude = lat\r\n\r\n      },\r\n      drawPondingPoint(){\r\n        let points=[]\r\n        try {\r\n          points=this.formData.latLng.split(',')\r\n          this.formData.longitude=points[0]\r\n          this.formData.latidude = points[1]\r\n          this.goSelectMapPoint()\r\n          let marker = {\r\n            type: 'ponding',\r\n            lng: points[0],\r\n            lat: points[1],//纬度值\r\n          }\r\n          this.$refs.mapBg.showMarkers([marker],15,false)\r\n          this.$refs.mapBg.sureAddress(this.formData.latLng)\r\n        }catch (e) {\r\n          console.log(e)\r\n        }\r\n\r\n      },\r\n      getAddress(val){\r\n        this.formData.floodLoca=val\r\n      },\r\n      // 焦点获取\r\n      goSelectMapPoint() {\r\n        this.isGetMapPoint=true\r\n        this.$refs.mapBg.hideMarkers('pondingData')\r\n        this.$refs.mapBg.hideMarkers('ponding')\r\n        this.$refs.mapBg.removeWorkWindow()\r\n        this.selectIndex=-1\r\n        this.$refs.mapBg.startToMark('ponding')\r\n      },\r\n      // 淹积水\r\n      getddflList(index) {\r\n        let _this = this\r\n        this.$axios.get('/baseplatform/localFloodInfo/ddflList').then(function(res) {\r\n          _this.teamList = res.data.rows;\r\n          if(index!=1) {\r\n            _this.releaseView=!_this.releaseView\r\n          }\r\n\r\n        })\r\n      },\r\n      // 大队获取\r\n      elevent() {\r\n        let _this = this;\r\n        this.$axios.get('/baseplatform/kmdnLocalDdfl/elevent').then(function(res) {\r\n          _this.teamList_search=JSON.parse(JSON.stringify(res.data.rows))\r\n          if(_this.teamList_search.length>1){\r\n            _this.teamList_search.unshift({ddfl: '',\r\n              ddflmc: \"全部\",\r\n              id: 100})\r\n          }else if(_this.teamList_search.length==1){\r\n            _this.searchData.polDept=_this.teamList_search[0].ddfl\r\n          }\r\n\r\n        })\r\n      },\r\n      // 管辖大队领导 dealTeamList\r\n      dealTeamData() {\r\n        this.$getUrl('','/kmdnLocalDdfl/freshElevent').then(res=>{\r\n          this.dealTeamList = res.rows;\r\n        })\r\n      },\r\n      // 概况\r\n      generalReport() {\r\n        let _this = this\r\n        this.$axios.get('/baseplatform/localFloodInfo/generalReport').then(function(res) {\r\n          _this.generalReportData = res.data.data\r\n        })\r\n      },\r\n      // 获取道路积水列表\r\n      list() {\r\n        let _this = this;\r\n        let val = `floodSituation=${this.searchData.floodSituation}&polDepts=${this.searchData.polDept}&search=${this.searchData.search}&inspectionFlag=${this.searchData.inspectionFlag}`\r\n        this.$axios.get(`/baseplatform/localFloodInfo/list?${val}`).then(function(res) {\r\n          if (res.data.code === 200 && res.status === 200){\r\n            _this.LeftlistData = res.data.rows\r\n            if(_this.pondingId){\r\n              setTimeout(function(){\r\n                _this.getSonVal({id:_this.pondingId})\r\n              },500)\r\n            }\r\n          }\r\n        })\r\n      },\r\n      // 获取级别\r\n      dictType() {\r\n        this.$getUrl('','/system/dict/data/type/kmdn_local_flood_level').then(res=>{\r\n          this.levelData = res.data;\r\n        })\r\n      },\r\n      convert: function() {\r\n        let scaleX = window.innerWidth / 1920\r\n        let scaleY = window.innerHeight / 960\r\n        this.data.transform = 'scale(' + scaleX + ',' + scaleY + ')'\r\n        this.data.transformMap = 'scale(' + 1/scaleX + ',' + 1/scaleY + ')'\r\n        this.$forceUpdate()\r\n      },\r\n      deletePonding(item,index){//删除淹积水\r\n        if(!this.checkPermi(['business:localFloodInfo:remove','*:*:*'])){\r\n          this.$message({ showClose: true, message: '对不起，您没有操作权限', type: \"error\" });\r\n          return false\r\n        }\r\n        let _this=this\r\n        this.isShowDelete=true\r\n        this.deletePondingIndex=index\r\n        MessageBox.confirm('是否确定删除？', '系统提示', {\r\n            confirmButtonText: '确定',\r\n            cancelButtonText: '取消',\r\n            type: 'warning'\r\n          }\r\n        ).then(() => {\r\n          _this.$axios.delete(`/baseplatform/localFloodInfo/${item.id}`)\r\n            .then(res=>{\r\n              if(res.data.code===200&&res.status===200){\r\n                _this.isShowDelete=false\r\n                _this.LeftlistData.splice(index,1)\r\n              }\r\n            })\r\n        })\r\n        .catch(() => {\r\n          _this.isShowDelete=false\r\n        })\r\n      },\r\n      updatePonding(item,index){//修改淹积水\r\n        if(!this.checkPermi(['business:localFloodInfo:edit','*:*:*'])){\r\n          this.$message({ showClose: true, message: '对不起，您没有操作权限', type: \"error\" });\r\n          return false\r\n        }\r\n        this.isUpdatePondingIndex=index\r\n        this.formData={  // 道路积水首页--\r\n            id:item.id,\r\n            latLng: item.longitude+','+item.latidude,  //点位坐标\r\n            floodLevel: item.floodLevel,// 级别选中\r\n            floodLoca: item.floodLoca,  // 点位名称\r\n            longitude: item.longitude,\r\n            latidude: item.latidude,\r\n            flDept: item.flDept, // 排水部门\r\n            flPrincName: item.flPrincName,  // 排水负责人\r\n            flPrincTel:  item.flPrincTel, //排水负责人电话号码\r\n            polDept:item.polDept,  // 管辖大队\r\n            polLeader:item.polLeader// 管辖大队 领导\r\n        },\r\n        this.isUpdatePonding = true\r\n        this.hideRight = true\r\n        this.createReport = true\r\n        this.caseReportRes=false\r\n        this.showImage=false\r\n        this.caseReport=false\r\n        this.searchHistory=false\r\n      },\r\n      goAdd:function(){ // 新增按钮\r\n        this.isUpdatePonding=false\r\n        this.formData={  // 道路积水首页--\r\n          latLng: '',  //点位坐标\r\n          floodLevel: '',// 级别选中\r\n          floodLoca: '',  // 点位名称\r\n          longitude: '',\r\n          latidude: '',\r\n          flDept: '', // 排水部门\r\n          flPrincName: '',  // 排水负责人\r\n          flPrincTel: '', //排水负责人电话号码\r\n          polDept:'',  // 管辖大队\r\n          polLeader:''// 管辖大队 领导\r\n        },\r\n        this.hideRight = true\r\n        this.createReport = true\r\n        this.caseReportRes=false\r\n        this.showImage=false\r\n        this.caseReport=false\r\n        this.searchHistory=false\r\n      },\r\n      stepToIndex:function(){\r\n        this.$router.push('/frontend/mapIndex')\r\n      },\r\n\r\n      // 筛选条件全选\r\n      getAllSelect() {\r\n        this.checkList = true\r\n      },\r\n    },\r\n\r\n  }\r\n</script>\r\n<style scoped lang=\"less\">\r\n   /*@import \"../../assets/styles/map.scss\";*/\r\n   .releaseBarInput{\r\n    ::v-deep .el-input--medium .el-input__inner{\r\n       text-align: left !important;\r\n     }\r\n     ::v-deep .el-input-number--medium .el-input-number__increase,::v-deep .el-input-number--medium .el-input-number__decrease{\r\n       display: none !important;\r\n     }\r\n   }\r\n  .fbuSucess{\r\n    height: 220px;\r\n  }\r\n  .fbuSucess,.fabuDiv{\r\n    position: fixed;\r\n    width: 540px;\r\n\r\n    //top: 0;\r\n    //right: 0;\r\n    //left: 0;\r\n    //bottom: 0;\r\n    margin: auto;\r\n    background: #0a1a4e;\r\n    h1{\r\n      background: #057bdf;\r\n      margin: 0;\r\n      color: #fff;\r\n      height: 38px;\r\n      line-height: 38px;\r\n      text-align: center;\r\n      font-size: 14px;\r\n    }\r\n  }\r\n  .fbuSucess{\r\n    background-image: url(\"../../assets/map_image/alertMessageBg.png\");\r\n    background-size: 100% 100%;\r\n    h1{\r\n      background: rgba(0,0,0,0);\r\n      height: 33px;\r\n      line-height: 33px;\r\n      font-size: 18px;\r\n    }\r\n  }\r\n  .fabuDiv{\r\n    color: #fff;\r\n    //min-height: 490px;\r\n    .fabuDiv_con{\r\n      display: flex;\r\n      height: 360px;\r\n      overflow-y: scroll;\r\n      overflow-x: hidden;\r\n      box-sizing: border-box;\r\n      padding:20px;\r\n      border-bottom: 1px dashed #057bdf;\r\n\r\n    }\r\n    .el-checkbox{\r\n      margin-bottom: 10px !important;\r\n      width: 100% !important;\r\n    }\r\n    .el-checkbox-group{\r\n      width: 100%;\r\n      height: auto;\r\n      line-height:normal;\r\n    }\r\n    .fabuDiv_btn{\r\n      display: flex;\r\n      margin-top: 35px;\r\n      justify-content:center;\r\n      span:first-of-type{\r\n        background-image: url(\"../../assets/bottomMenu/16102@2x.png\");\r\n      }\r\n      span{\r\n        display: inline-block;\r\n        color: #fff;\r\n        width: 85px;\r\n        height: 32px;\r\n        line-height: 32px;\r\n        background-size: 100% 100%;\r\n        text-align: center;\r\n      }\r\n      span:last-of-type{\r\n        margin-left: 14px;\r\n        background-image: url(\"../../assets/bottomMenu/16101@2x.png\");\r\n      }\r\n    }\r\n  }\r\n  .fabuDiv1{\r\n    background-image: url(\"../../assets/map_image/ponding/releaseBg.png\");\r\n    background-size: 100% 100%;\r\n    h1{\r\n      background: rgba(0,0,0,0);\r\n      height: 52px;\r\n      line-height: 52px;\r\n      font-size: 18px;\r\n    }\r\n  }\r\n  .fabuDiv2{\r\n    left: 50%;\r\n    top: 50%;\r\n    transform: translate(-50%, -50%);\r\n    padding-bottom: 30px\r\n  }\r\n  .buttomClassActive{\r\n    background-image:url('../../assets/map_image/ponding/bottomButton.png')!important;\r\n    background-color: rgba(0,0,0, 0)!important;\r\n  }\r\n  .pointView{\r\n    position: fixed;\r\n    z-index: 20;\r\n    width: 426px;\r\n    height: 774px;\r\n    left: 40px;\r\n    top: 128px;\r\n    background-image: url(\"../../assets/map_image/ponding/pointBg.png\");\r\n  }\r\n  .searchView{\r\n    margin-top: 15px;\r\n    float: left;\r\n    overflow: hidden;\r\n  }\r\n  .searchView .inputView{\r\n    width: 178px;\r\n    border: 1px solid #29B3FF;\r\n    font-size: 14px;\r\n    float: left;\r\n    margin-left: 10px;\r\n    border-right: 0px;\r\n  }\r\n  .searchIcon{\r\n    background-image: url(\"../../assets/image/组 16037@2x.png\");\r\n    background-size: 20px;\r\n    background-repeat: no-repeat;\r\n    background-position: center;\r\n    width: 34px;\r\n    height: 33px;\r\n    background-color: #29B3FF;\r\n    float: left;\r\n    border-radius: 0px 3px 3px 0px;\r\n    margin-left: -1px;\r\n  }\r\n  .searchView .selectView{\r\n    width: 90px !important;\r\n    height: 32px;\r\n    border-radius: 3px;\r\n    margin-top: 1px;\r\n    margin-left: 10px;\r\n  }\r\n  .goAdd{\r\n    width: 67px;\r\n    height: 32px ;\r\n    background-image: url(\"../../assets/map_image/ponding/addBg.png\");\r\n    background-size: 100%;\r\n    -webkit-box-sizing: border-box;\r\n    -moz-box-sizing: border-box;\r\n    box-sizing: border-box;\r\n    float: left;\r\n    text-align: center;\r\n    color: white;\r\n    line-height: 32px;\r\n    font-size: 14px;\r\n    margin-top: 0px ;\r\n    margin-left: 10px;\r\n    cursor: pointer;\r\n    background-repeat: no-repeat;\r\n    background-size: 100% 100%;\r\n  }\r\n  .goAddGray{\r\n     cursor: not-allowed;\r\n     width: 67px;\r\n     height: 32px ;\r\n     background-color: #cccccc;\r\n     color: #fff;\r\n     -webkit-box-sizing: border-box;\r\n     -moz-box-sizing: border-box;\r\n     box-sizing: border-box;\r\n     float: left;\r\n     text-align: center;\r\n     /*color: white;*/\r\n     line-height: 32px;\r\n     font-size: 14px;\r\n     margin-top: 0px ;\r\n     margin-left: 10px;\r\n     background-repeat: no-repeat;\r\n     background-size: 100% 100%;\r\n   }\r\n  .pondingContentView{\r\n    width: 406px;\r\n    float: left;\r\n    //height: 670px;\r\n    height: 626px;\r\n    overflow-y: auto;\r\n    margin-left: 10px;\r\n    margin-top: 10px;\r\n    overflow-x: hidden;\r\n  }\r\n  .pondingContent:last-child{\r\n    margin-bottom: 0px;\r\n  }\r\n  .pondingContent{\r\n    width: 406px;\r\n    height: 168px;\r\n    float: left;\r\n    background-color: rgba(41, 179, 255, 0.21);\r\n    margin-bottom: 8px;\r\n    -webkit-box-sizing: border-box;\r\n    -moz-box-sizing: border-box;\r\n    box-sizing: border-box;\r\n    padding-left: 8px;\r\n    position: relative;\r\n  }\r\n  .pondingContent div{\r\n    overflow: hidden;\r\n    text-overflow: ellipsis;\r\n    white-space: nowrap;\r\n  }\r\n  .pondingContent .titleView{\r\n    width: 100%;\r\n    height: 60px;\r\n    background-repeat: no-repeat;\r\n    background-position: left top;\r\n    background-image: url(\"../../assets/map_image/ponding/pondingIcon.png\");\r\n    float: left;\r\n    margin-top: 20px;\r\n    -webkit-box-sizing: border-box;\r\n    -moz-box-sizing: border-box;\r\n    box-sizing: border-box;\r\n    padding-left: 58px;\r\n  }\r\n  .pondingContent .titleView .title{\r\n    width: 100%;\r\n    font-size: 17px;\r\n    font-weight: bold;\r\n    line-height: 20px;\r\n    color: #29B3FF;\r\n  }\r\n   .pondingContent .titleView .title  .title-con{\r\n     display: inline-block;\r\n     width: 71%;\r\n     overflow: hidden;\r\n     white-space: nowrap;\r\n     text-overflow: ellipsis;\r\n  }\r\n  .pondingContent .titleView .level{\r\n    width: 100%;\r\n    font-size: 14px;\r\n    color: white;\r\n    height: 36px;\r\n    background-repeat: no-repeat;\r\n    background-position: center left;\r\n    line-height: 30px;\r\n    padding-left: 18px;\r\n  }\r\n  .pondingContent .titleView .level.level1{\r\n    background-image: url(\"../../assets/map_image/ponding/level1.png\");\r\n  }\r\n  .pondingContent .titleView .level.level2{\r\n    background-image: url(\"../../assets/map_image/ponding/level2.png\");\r\n  }\r\n  .pondingContent .titleView .level.level3{\r\n    background-image: url(\"../../assets/map_image/ponding/level3.png\");\r\n  }\r\n  .pondingContent .contentView{\r\n    width: 100%;\r\n    float: left;\r\n    overflow: hidden;\r\n  }\r\n  .pondingContent .contentView .textBar{\r\n    width: 100%;\r\n    float: left;\r\n    margin-bottom: 14px;\r\n    font-size: 14px;\r\n    color: rgba(255, 255, 255, 0.71);\r\n  }\r\n  .pondingContent .contentView .textBar div{\r\n    float: left;\r\n    width: 180px;\r\n    text-align: left;\r\n  }\r\n  .surveyView{\r\n    position: absolute;\r\n    z-index: 999;\r\n    width: 426px;\r\n    height: 180px;\r\n    right: 36px;\r\n    top: 128px;\r\n    background-image: url(\"../../assets/map_image/ponding/surveyBg.png\");\r\n  }\r\n  .surveyPointView{\r\n    width: 142px;\r\n    float: left;\r\n    overflow: hidden;\r\n    margin-top: 25px;\r\n    font-size: 14px;\r\n  }\r\n  .surveyPointView .des{\r\n    color: white;\r\n    text-align: center;\r\n    width: 100%;\r\n    margin-top: 5px;\r\n    float: left;\r\n  }\r\n  .surveyPoint{\r\n    width: 100%;\r\n    height: 78px;\r\n    float: left;\r\n    background-position: center top;\r\n    background-repeat: no-repeat;\r\n    text-align: center;\r\n    font-size: 28px;\r\n    line-height: 50px;\r\n    font-weight: bold;\r\n  }\r\n  .surveyPoint.total{\r\n    background-image: url(\"../../assets/map_image/ponding/total.png\");\r\n    color: #29B3FF;\r\n  }\r\n  .surveyPoint.now{\r\n    background-image: url(\"../../assets/map_image/ponding/now.png\");\r\n    color: #44FFFD;\r\n  }\r\n  .surveyPoint.check{\r\n    background-image: url(\"../../assets/map_image/ponding/check.png\");\r\n    color: #FFE478;\r\n  }\r\n  .rankView{\r\n    position: absolute;\r\n    z-index: 999;\r\n    width: 426px;\r\n    height: 248px;\r\n    right: 36px;\r\n    top: 318px;\r\n    background-image: url(\"../../assets/map_image/ponding/rankBg.png\");\r\n  }\r\n  .rankView .faultTable {\r\n    width: 407px;\r\n    height: 192px;\r\n    margin-left: 10px;\r\n    margin-top: 10px;\r\n  }\r\n  .situationView{\r\n    position: fixed;\r\n    z-index: 999;\r\n    width: 426px;\r\n    height: 347px;\r\n    right: 36px;\r\n    top: 576px;\r\n    background-image: url(\"../../assets/map_image/ponding/situationBg.png\");\r\n  }\r\n  .situationView .faultTable {\r\n    width: 407px;\r\n    height: 288px;\r\n    margin-left: 10px;\r\n    margin-top: 10px;\r\n  }\r\n  .AllbottomButtonView{\r\n    width:300px;\r\n    position: fixed;\r\n    z-index: 999;\r\n    right: 0px;\r\n    left: 0;\r\n    margin: 0 auto;\r\n    bottom: 63px;\r\n    display: flex;\r\n    .bottomButtonView{\r\n      margin-right: 20px;\r\n      /*background-image: url(\"../../assets/map_image/ponding/bottomButton.png\");*/\r\n    }\r\n    .bottomButtonViewActive{\r\n      margin-right: 20px;\r\n      background-image: url(\"../../assets/map_image/ponding/bottomButton.png\");\r\n    }\r\n    .bottomButtonViewGray{\r\n      margin-right: 20px;\r\n      background-color: #cccccc;\r\n      color: #fff;\r\n    }\r\n    .bottomButtonView1, .bottomButtonView{\r\n      width: 140px;\r\n      height: 40px;\r\n      //cursor: pointer;\r\n      background-size: 100% 100%;\r\n      text-align: center;\r\n      font-size: 14px;\r\n      color: white;\r\n      line-height: 40px;\r\n\r\n    }\r\n    .bottomButtonView1{\r\n      background-color: #cccccc;\r\n      color: #fff;\r\n      border-radius: 4px;\r\n    }\r\n  }\r\n  /*.bottomButtonView{*/\r\n  /*  position: fixed;*/\r\n  /*  z-index: 999;*/\r\n  /*  width: 130px;*/\r\n  /*  height: 40px;*/\r\n  /*  right: 895px;*/\r\n  /*  bottom: 63px;*/\r\n  /*  text-align: center;*/\r\n  /*  font-size: 14px;*/\r\n  /*  color: white;*/\r\n  /*  line-height: 40px;*/\r\n  /*  background-image: url(\"../../assets/map_image/ponding/bottomButton.png\");*/\r\n  /*}*/\r\n  .pondingInputView{\r\n    position: absolute;\r\n    z-index: 999;\r\n    width: 426px;\r\n    height: 774px;\r\n    right: 36px;\r\n    top: 128px;\r\n    background-image: url(\"../../assets/map_image/ponding/smallInputBg.png\");\r\n  }\r\n  .pondingInputView .selectBar{\r\n    margin-left: 0px;\r\n    margin-right: 0px;\r\n    margin-bottom: 20px;\r\n  }\r\n  .pondingInputView .selectName{\r\n    width: 130px;\r\n  }\r\n  .pondingInputView .selectView{\r\n    width: 262px !important;\r\n    margin-left: 0px;\r\n  }\r\n  .pondingInputView .inputView{\r\n    width: 262px;\r\n  }\r\n  .selectPoint{\r\n    width: 28px;\r\n    height: 32px;\r\n    float: left;\r\n    margin-left: 8px;\r\n    background-image: url(\"../../assets/map_image/ponding/selectPoint.png\");\r\n  }\r\n  .address{\r\n    background-position: 5px center;\r\n    background-image: url(\"../../assets/map_image/ponding/address.png\");\r\n    background-repeat: no-repeat;\r\n    padding-left: 25px;\r\n  }\r\n  .formButtonView{\r\n    width: 100%;\r\n    display: flex;\r\n    justify-content: center;\r\n    margin-top: 60px;\r\n    div{\r\n      width: 85px;\r\n      height: 32px;\r\n      line-height: 32px;\r\n      text-align: center;\r\n      font-size: 14px;\r\n      color: #fff;\r\n      cursor: pointer;\r\n      background-repeat: no-repeat;\r\n      background-size: 100% 100%;\r\n    }\r\n\r\n    div:first-of-type{\r\n      background-image: url(\"../../assets/bottomMenu/16102@2x.png\");\r\n      margin-right: 10px;\r\n    }\r\n    div:last-of-type{\r\n      background-image: url(\"../../assets/bottomMenu/16101@2x.png\");\r\n    }\r\n    .sureBTnBg1{\r\n      width: 85px;\r\n      //height: 32px;\r\n      //line-height: 32px;\r\n      border: 0!important;\r\n      text-align: center;\r\n      font-size: 14px;\r\n      color: #fff;\r\n      cursor: pointer;\r\n      background-repeat: no-repeat;\r\n      background-size: 100% 100%;\r\n      background-color: transparent!important;\r\n      background-image: url(\"../../assets/bottomMenu/16101@2x.png\")!important;\r\n    }\r\n    .sureBTnBg{\r\n      background-image: url(\"../../assets/bottomMenu/16101@2x.png\");\r\n      margin-right: 10px;\r\n    }\r\n  }\r\n  .largeMap{\r\n    /*width: 1830px;*/\r\n    /*height: 780px;*/\r\n    /*position: absolute;*/\r\n    /*top: 130px;*/\r\n    /*left: 40px;*/\r\n    /*overflow: hidden;*/\r\n    position: absolute;\r\n    width: 100%;\r\n    height: 100%;\r\n    z-index: -1;\r\n  }\r\n  .pondingContent:hover{\r\n    background-color: rgba(41,179,255,0.7);\r\n  }\r\n  .selected{\r\n    background-color: rgba(41,179,255,0.7);\r\n  }\r\n  .isGetMapPoint{\r\n    background-color: #056279\r\n  }\r\n  .time{\r\n    float: right;\r\n    width: 20px;\r\n    height: 20px;\r\n    cursor: pointer;\r\n    background-image: url(\"../../assets/map_image/ponding/time.png\");\r\n    margin-right: 20px;\r\n    margin-left: 10px;\r\n  }\r\n  .timeActives{\r\n    background-image: url(\"../../assets/map_image/ponding/timeA.png\");\r\n  }\r\n  .upload{\r\n    float: right;\r\n    width: 20px;\r\n    height: 20px;\r\n    cursor: pointer;\r\n    background-image: url(\"../../assets/map_image/ponding/upload.png\");\r\n  }\r\n  .uploadActive{\r\n    background-image: url(\"../../assets/map_image/ponding/uploadA.png\");\r\n  }\r\n   .update{\r\n     float: right;\r\n     width: 20px;\r\n     height: 20px;\r\n     cursor: pointer;\r\n     background-image: url(\"../../assets/map_image/ponding/update.png\");\r\n   }\r\n   .updateActive{\r\n     background-image: url(\"../../assets/map_image/ponding/updateA.png\");\r\n   }\r\n   .delete{\r\n     float: right;\r\n     width: 20px;\r\n     height: 20px;\r\n     cursor: pointer;\r\n     background-image: url(\"../../assets/map_image/ponding/delete.png\");\r\n     margin-right: 20px;\r\n     margin-left: 10px;\r\n   }\r\n   .deleteActive{\r\n     background-image: url(\"../../assets/map_image/ponding/deleteA.png\");\r\n   }\r\n  .situationReportView{\r\n    position: fixed;\r\n    z-index: 999;\r\n    width: 426px;\r\n    height: 783px;\r\n    right: 36px;\r\n    top: 128px;\r\n    background-image: url(\"../../assets/map_image/ponding/situationReportBg.png\");\r\n    background-size: 100% 100%;\r\n  }\r\n   .situationReportViewA{\r\n     position: fixed;\r\n     z-index: 999;\r\n     width: 426px;\r\n     height: 390px;\r\n     right: 36px;\r\n     top: 128px;\r\n     background-image: url(\"../../assets/map_image/ponding/bj.png\");\r\n     background-size: 100% 100%;\r\n   }\r\n  .countDown{\r\n    font-size: 14px;\r\n    margin-left: 68px;\r\n    position: absolute;\r\n    right: 10px;\r\n  }\r\n  .situationReportContent{\r\n    width: 100%;\r\n    height: 400px;\r\n    -webkit-box-sizing: border-box;\r\n    -moz-box-sizing: border-box;\r\n    box-sizing: border-box;\r\n    padding-top: 20px;\r\n    float: left;\r\n  }\r\n  .situationReportContent .selectBar{\r\n    width: 415px;\r\n    margin-bottom: 5px;\r\n    margin-left: 20px;\r\n  }\r\n  .situationReportContent .selectBar .selectName{\r\n    width: 70px;\r\n    font-size: 14px;\r\n  }\r\n  .situationReportContent .selectBar .el-radio{\r\n    margin-right: 60px;\r\n  }\r\n  .situationReportContent .selectBar .el-radio:last-child{\r\n    margin-right: 0px;\r\n  }\r\n  .situationUpload{\r\n    width: 32px;\r\n    height: 32px;\r\n    float: left;\r\n    background-repeat: no-repeat;\r\n    background-position: center;\r\n    background-image: url(\"../../assets/map_image/ponding/situationUpload.png\");\r\n  }\r\n  .picView{\r\n    width: 335px;\r\n    height: auto;\r\n    overflow: hidden;\r\n  }\r\n  .picView .img{\r\n    width: 158px;\r\n    height: 79px;\r\n    background-color: #3DBAFF;\r\n    text-align: center;\r\n    line-height: 79px;\r\n    color: white;\r\n    margin-right: 9px;\r\n    float: left;\r\n    margin-bottom: 15px;\r\n  }\r\n  .picViewerView{\r\n    position: fixed;\r\n    z-index: 999;\r\n    width: 886px;\r\n    height: 212px;\r\n    left: 476px;\r\n    bottom: 58px;\r\n    background-image: url(\"../../assets/map_image/ponding/picViewerBg.png\");\r\n  }\r\n  .picViewerTitle{\r\n    float: left;\r\n    width: 100%;\r\n    height: 40px;\r\n    line-height: 40px;\r\n    font-size: 16px;\r\n    color: #29B3FF;\r\n    text-align: left;\r\n    -webkit-box-sizing: border-box;\r\n    -moz-box-sizing: border-box;\r\n    box-sizing: border-box;\r\n    padding-left: 30px;\r\n  }\r\n  .closeButton{\r\n    width: 18px;\r\n    height: 18px;\r\n    position: absolute;\r\n    background-image: url(\"../../assets/map_image/judge/closeButton.png\");\r\n    margin-top: -29px;\r\n    margin-left: 830px;\r\n  }\r\n  .picViewerContent{\r\n    width: 100%;\r\n    float: left;\r\n    margin-top: 12px;\r\n    padding-left: 38px;\r\n    -webkit-box-sizing: border-box;\r\n    -moz-box-sizing: border-box;\r\n    box-sizing: border-box;\r\n    overflow: hidden;\r\n    height: 130px;\r\n  }\r\n  .picViewerContent .img{\r\n    width: 261px;\r\n    height: 130px;\r\n    float: left;\r\n    margin-right: 14px;\r\n    line-height: 130px;\r\n    background-color: #3DBAFF;\r\n    text-align: center;\r\n    color: white;\r\n  }\r\n  .addressDes{\r\n    height: 40px;\r\n    line-height: 40px;\r\n    width: 100%;\r\n    font-size: 14px;\r\n    -webkit-box-sizing: border-box;\r\n    -moz-box-sizing: border-box;\r\n    box-sizing: border-box;\r\n    padding-left: 32px;\r\n    background-repeat: no-repeat;\r\n    background-position: 10px center;\r\n    background-image: url(\"../../assets/map_image/ponding/pondingCar.png\");\r\n    color: white;\r\n  }\r\n  .situationReportView .faultTable {\r\n    width: 407px;\r\n    height: 704px;\r\n    margin-left: 10px;\r\n  }\r\n   .situationReportViewA .faultTable {\r\n     width: 407px;\r\n     height: 350px;\r\n     margin-left: 10px;\r\n     overflow: hidden;\r\n   }\r\n  .dot{\r\n    margin-right: 5px;\r\n    width: 7px;\r\n    height: 7px;\r\n    border-radius: 50%;\r\n    display: inline-block;\r\n    position: relative;\r\n    top: -1px;\r\n  }\r\n  .dot_blue{\r\n    background: #29B3FF;\r\n  }\r\n  .dot_yellow{\r\n    background: #FFE478;\r\n  }\r\n  .dot_red{\r\n    background: #F6795B;\r\n  }\r\n  .picButton{\r\n    width: 20px;\r\n    height: 16px;\r\n    background-image: url(\"../../assets/map_image/ponding/picButton.png\");\r\n    margin: 0 auto;\r\n    margin-top: 8px;\r\n  }\r\n  .infoSureView{\r\n    width: 555px;\r\n    height: 294px;\r\n    position: fixed;\r\n    z-index: 9999;\r\n    top: 50%;\r\n    left: 50%;\r\n    background-image: url(\"../../assets/map_image/ponding/infoSure.png\");\r\n    margin-left: -277.5px;\r\n    margin-top: -147px;\r\n  }\r\n  .infoSureContent{\r\n    width: 100%;\r\n    padding-top: 115px;\r\n    background-image: url(\"../../assets/map_image/ponding/surePic.png\");\r\n    background-repeat: no-repeat;\r\n    background-position: center 15px;\r\n    float: left;\r\n    text-align: center;\r\n    font-size: 16px;\r\n    line-height: 30px;\r\n    color: white;\r\n    margin-bottom: 10px;\r\n  }\r\n  .releaseView{\r\n    width: 551px;\r\n    height: 440px;\r\n    position: fixed;\r\n    z-index: 9999;\r\n    top: 291px;\r\n    left: 685px;\r\n    background-image: url(\"../../assets/map_image/ponding/releaseBg.png\");\r\n    background-size: 100% 100%;\r\n    background-repeat: no-repeat;\r\n  }\r\n  .releaseView .contentTitle{\r\n    text-align: left;\r\n    line-height: 40px;\r\n    height: 40px;\r\n    padding-left: 30px;\r\n  }\r\n   .contentTitle{\r\n     position: relative;\r\n     .conBtn{\r\n       background-image: url(\"../../assets/map_image/ponding/bottomButton.png\");\r\n       background-size: 100% 100%;\r\n       position: absolute;\r\n       right: 6px;\r\n       top: 3px;\r\n       color: #fff;\r\n       height: 28px;\r\n       line-height: 28px;\r\n       font-size: 14px;\r\n       padding: 0 10px;\r\n       cursor: pointer;\r\n     }\r\n   }\r\n  .releaseBar{\r\n    width: 100%;\r\n    overflow: hidden;\r\n    -webkit-box-sizing: border-box;\r\n    -moz-box-sizing: border-box;\r\n    box-sizing: border-box;\r\n    padding-left: 24px;\r\n    color: white;\r\n    font-size: 14px;\r\n    line-height: 40px;\r\n    float: left;\r\n    display: flex;\r\n  }\r\n  .releaseBar .left{\r\n    width: 90px;\r\n    height: 100%;\r\n    min-height: 40px;\r\n    float: left;\r\n  }\r\n  .releaseBar .right{\r\n    //width: 450px;\r\n    flex: 1;\r\n    font-size: 14px;\r\n    color: white;\r\n    float: left;\r\n    overflow: hidden;\r\n  }\r\n  .releaseBar .right .el-checkbox-group{\r\n    height: auto;\r\n    //line-height: 40px;\r\n    line-height: 22px;\r\n    width: 100%;\r\n    overflow: hidden;\r\n  }\r\n  .releaseBar .right .el-checkbox-group .el-checkbox{\r\n    width: 100px;\r\n    margin-right: 10px;\r\n  }\r\n  .releaseBar .right .el-radio{\r\n    margin-right: 45px;\r\n  }\r\n  /deep/ .el-textarea__inner{\r\n    line-height: 30px;\r\n    background-color: black;\r\n    color: rgb(8,179,9);\r\n    font-weight: 700;\r\n    font-size: 20px;\r\n  }\r\n  .time:hover .timeContent{\r\n      display: block;\r\n  }\r\n  .timeContent{\r\n    background: #1666c7;\r\n    width: 60px;\r\n    height: 20px;\r\n    text-align: center;\r\n    position: relative;\r\n    margin-right: 2px;\r\n    top: -20px;\r\n    left: -20px;\r\n    font-size: 8px;\r\n    color: rgba(255,255,255,0.7);\r\n    font-weight: unset;\r\n    border-radius: 5px;\r\n    display: none;\r\n  }\r\n   .upload:hover .uploadContent{\r\n     display: block;\r\n   }\r\n   .uploadContent{\r\n     background: #1666c7;\r\n     width: 60px;\r\n     height: 20px;\r\n     text-align: center;\r\n     position: relative;\r\n     margin-right: 2px;\r\n     top: -20px;\r\n     left: -20px;\r\n     font-size: 8px;\r\n     color: rgba(255,255,255,0.7);\r\n     font-weight: unset;\r\n     border-radius: 5px;\r\n     display: none;\r\n   }\r\n   .update:hover .updateContent{\r\n     display: block;\r\n   }\r\n   .updateContent{\r\n     background: #1666c7;\r\n     width: 60px;\r\n     height: 20px;\r\n     text-align: center;\r\n     position: relative;\r\n     margin-right: 2px;\r\n     top: -20px;\r\n     left: -20px;\r\n     font-size: 8px;\r\n     color: rgba(255,255,255,0.7);\r\n     font-weight: unset;\r\n     border-radius: 5px;\r\n     display: none;\r\n   }\r\n   .delete:hover .deleteContent{\r\n     display: block;\r\n   }\r\n   .deleteContent{\r\n     background: #1666c7;\r\n     width: 60px;\r\n     height: 20px;\r\n     text-align: center;\r\n     position: relative;\r\n     margin-right: 2px;\r\n     top: -20px;\r\n     left: -20px;\r\n     font-size: 8px;\r\n     color: rgba(255,255,255,0.7);\r\n     font-weight: unset;\r\n     border-radius: 5px;\r\n     display: none;\r\n   }\r\n</style>\r\n\r\n"}],"structuredContent":{"content":"<template>\r\n  <div :style=\"{height:height,width:width,transform:data.transform}\" class=\"smallBg\">\r\n    <mapTop :superWidth=\"superWidth\"  ref=\"mapTop\" @getPondingId=\"getSonVal\"></mapTop>\r\n    <alertWindow :nowWidth=\"1920\" @closeTraject=\"closeTraject\" :showTraject=\"showTraject\" :ejectData=\"ejectData\" @getVideoImg=\"getVideoImg\" @uploadAlert=\"uploadAlert\" @functionMap=\"functionMap\" :style=\"{transform:data.transformMap}\" ref=\"alertWindow\"></alertWindow>\r\n    <largeRightNav\r\n      @epidemicMarkers=\"epidemicMarkers\"\r\n      @showPoliceCarLine=\"showPoliceCarLine\"\r\n      @uploadAlert=\"uploadAlert\"\r\n      @trajectortBtn=\"trajectortBtn\"\r\n      @setMapStyle=\"setMapStyle\"\r\n      :preload=\"['ponding']\"\r\n      :showWindow=\"['ponding']\"\r\n      ref=\"largeRightNav\" :resolution=\"1920\" :topNavList=\"'228px'\" :rightNavList=\"indexRightNavRight\" :screenButtonStatus=\"screenButtonStatus\" @resetMap=\"resetMap\" @faceNorth=\"faceNorth()\" @functionMap=\"functionMap\" @showTraffic=\"showTraffic\" @showMarkers=\"showMarkers\" @hideMarkers=\"hideMarkers\" @setPoiShow=\"setPoiShow\"  @flyTo=\"flyTo\"></largeRightNav>\r\n    <div class=\"largeMap\">\r\n      <div :style=\"{height:0,width:0,marginLeft:0,transform:data.transformMap}\">\r\n        <largeMap\r\n          @markerClick=\"markerClick\"\r\n          @closeTrajectMc=\"closeTrajectMc\" ref=\"mapBg\" @getAddress=\"getAddress\" @openBtn=\"getSonVal\" @sureHandler=\"sureHandler\" :marginTop_p=\"0\" :marginLeft_p=\"-40\" @alertWindow=\"alertWindow\"></largeMap>\r\n      </div>\r\n    </div>\r\n    <div class=\"routeNav\"><span style=\"cursor: pointer\" @click=\"stepToIndex\">首页</span>><span class=\"secondNav\">道路积水</span></div>\r\n    <div class=\"window topBg\">\r\n      <div class=\"tapView\">\r\n        <div class=\"mapTab active\" @click=\"changeToNewPage\">道路积水</div>\r\n      </div>\r\n      <div class=\"goBackBtn1920\" @click=\"$goBack\">返回</div>\r\n    </div>\r\n    <div class=\"window leftBg\"></div>\r\n    <div class=\"window rightBg\"></div>\r\n    <div class=\"window bottomBg\"></div>\r\n    <div class=\"pointView\">\r\n      <div class=\"contentTitle\">道路积水点位</div>\r\n      <div class=\"searchView\">\r\n        <el-select v-model=\"searchData.polDept\" placeholder=\"请选择\" @change=\"list\" class=\"selectView\" style=\"width: 48%!important;margin-left: 7px!important;\" size=\"medium\">\r\n          <el-option v-for=\"item in teamList_search\" :key=\"item.id\" :label=\"item.ddflmc\" :value=\"item.ddfl\">\r\n          </el-option>\r\n        </el-select>\r\n        <el-select v-model=\"searchData.inspectionFlag\" placeholder=\"请选择\" @change=\"list\" class=\"selectView\" style=\"width: 48%!important;margin-left: 7px!important;\" size=\"medium\">\r\n          <el-option v-for=\"item in inspectionFlags\" :key=\"item.id\" :label=\"item.ddflmc\" :value=\"item.ddfl\">\r\n          </el-option>\r\n        </el-select>\r\n\r\n      </div>\r\n      <div class=\"searchView\">\r\n        <el-select v-model=\"searchData.floodSituation\" placeholder=\"积水状态\" @change=\"list\" class=\"selectView\" style=\"width: 110px!important;margin-left: 7px!important;\" size=\"medium\">\r\n          <el-option label=\"全部\" value=\"\"></el-option>\r\n          <el-option label=\"正常\" value=\"1\"></el-option>\r\n          <el-option label=\"积水\" value=\"2\"></el-option>\r\n        </el-select>\r\n        <input placeholder=\"输入关键字搜索\" v-model=\"searchData.search\" class=\"inputView\"></input>\r\n        <div class=\"searchIcon\" @click=\"list\" style=\"cursor: pointer\"></div>\r\n        <div class=\"goAdd\" @click=\"goAdd\" v-if=\"mycheckPermi(1)\">新增</div>\r\n        <div class=\"goAddGray\" v-else>新增</div>\r\n      </div>\r\n      <div class=\"pondingContentView\" ref=\"pongdingref\">\r\n        <div class=\"pondingContent\" v-for=\"(item,index) in LeftlistData\"  :class=\"index===selectIndex?'selected':''\" :key=\"index\" :id=\"index===selectIndex?'selected':''\" @click=\"changeSelect(index, item)\">\r\n          <div class=\"titleView\">\r\n            <div class=\"title\">\r\n              <span  class=\"title-con\" :title=\"item.floodLoca\">{{item.floodLoca}}</span>\r\n              <div style=\"position: absolute;right: 0;top: 20px\">\r\n                <div class=\"time\" :class=\"searchHistory&&showHistoryIndex==index?'timeActives':''\" @click.stop.capture=\"showHistory(item,index)\">\r\n                  <div class=\"timeContent\">巡查历史</div>\r\n                </div>\r\n                <div class=\"upload\" :class=\"caseReport&&caseReportData.index==index?'uploadActive':''\" v-if=\"mycheckPermi(3)\" @click.stop.capture=\"uploadAlert(item,index)\">\r\n                  <div class=\"uploadContent\">巡 查</div>\r\n                </div>\r\n              </div>\r\n              <div style=\"position: absolute;right: 0;bottom: 20px\">\r\n                <div class=\"delete\" :class=\"isShowDelete&&deletePondingIndex==index?'deleteActive':''\" @click.stop.capture=\"deletePonding(item,index)\">\r\n                  <div class=\"deleteContent\">删 除</div>\r\n                </div>\r\n                <div class=\"update\" :class=\"isUpdatePonding&&isUpdatePondingIndex==index?'updateActive':''\" @click.stop.capture=\"updatePonding(item,index)\">\r\n                  <div class=\"updateContent\">修改</div>\r\n                </div>\r\n              </div>\r\n            </div>\r\n            <div class=\"level level3\" v-if=\"item.floodLevelName=='三级'\">{{item.floodLevelName}}</div>\r\n            <div class=\"level level2\" v-else-if=\"item.floodLevelName=='二级'\">{{item.floodLevelName}}</div>\r\n            <div class=\"level level1\" v-else>{{item.floodLevelName}}</div>\r\n            <div style=\"width: 60px;height: 20px;border-radius:4px;font-size:14px;background-color: rgba(68,255,253,0.3);position: relative;top: -31px;left: 60px;display: flex;justify-content: center;align-items: center;color: rgba(68,255,253,1)\" v-if=\"item.inspectionFlag>='2'\">已巡查</div>\r\n            <div style=\"width: 60px;height: 20px;border-radius:4px;font-size:14px;background-color: rgba(246,121,91,0.3);position: relative;top: -31px;left: 60px;display: flex;justify-content: center;align-items: center;color: rgba(246,121,91,1)\" v-if=\"item.inspectionFlag=='1'\">未巡查</div>\r\n          </div>\r\n          <div class=\"contentView\">\r\n            <div class=\"textBar\">\r\n              <div class=\"textLeft\" :title=\"item.polDeptName\">管辖大队：{{item.polDeptName}}</div>\r\n              <div class=\"textRight\" :title=\"item.polLeader\">辖区大队领导：{{item.polLeader}}</div>\r\n            </div>\r\n            <div class=\"textBar\">\r\n              <div class=\"textLeft\">排水负责人：{{item.flPrincName}}</div>\r\n              <div class=\"textRight\">积水次数：{{item.floodCount}}</div>\r\n            </div>\r\n            <div class=\"textBar\">\r\n              排水负责人电话：{{item.flPrincTel}}\r\n            </div>\r\n          </div>\r\n        </div>\r\n      </div>\r\n    </div>\r\n    <div class=\"surveyView\" v-show=\"!hideRight\">\r\n      <div class=\"contentTitle\">\r\n        概况\r\n        <div class=\"conBtn\" @click=\"exportData(1)\">导出汇总表</div>\r\n      </div>\r\n      <div class=\"surveyPointView\">\r\n        <div class=\"surveyPoint total\">{{generalReportData.totalNum}}</div>\r\n        <div class=\"des\">点位总数</div>\r\n      </div>\r\n      <div class=\"surveyPointView\">\r\n        <div class=\"surveyPoint now\">{{generalReportData.pondingNum}}</div>\r\n        <div class=\"des\">在淹点位</div>\r\n      </div>\r\n      <div class=\"surveyPointView\">\r\n        <div class=\"surveyPoint check\">{{generalReportData.unInspectionNum}}</div>\r\n        <div class=\"des\">待查点位</div>\r\n      </div>\r\n    </div>\r\n    <div class=\"rankView\" v-show=\"!hideRight\">\r\n      <div class=\"contentTitle\">积水次数排名</div>\r\n      <div class=\"faultTable\">\r\n        <div class=\"thead\">\r\n          <div class=\"th td1\" style=\"width: 15%\">排名</div>\r\n          <div class=\"th td2\" style=\"width: 45%;text-align: left;\">点位名称</div>\r\n          <div class=\"th td3\" style=\"width: 20%\">所属大队</div>\r\n          <div class=\"th td4\" style=\"width: 20%\">积水次数</div>\r\n        </div>\r\n        <div class=\"tbody\" v-if=\"generalReportData.pondingRankList.length>0\" style=\"height: 160px;overflow-y: auto;float: left;width: 100%\">\r\n          <div class=\"tr\" v-for=\"(item, index) in generalReportData.pondingRankList\" :key=\"index\">\r\n            <div class=\"td td1\" style=\"width: 15%\">{{index+1}}</div>\r\n            <div class=\"td td2\" style=\"width: 45%;text-align: left;\">\r\n              <el-popover\r\n                placement=\"top-start\"\r\n                width=\"200\"\r\n                trigger=\"hover\"\r\n                :open-delay=\"300\"\r\n                popper-class=\"popperClassB\"\r\n                :content=\"item.floodLoca\"\r\n              >\r\n                <span slot=\"reference\">{{item.floodLoca}}</span>\r\n              </el-popover>\r\n            </div>\r\n            <div class=\"td td3\" style=\"width: 20%\">{{item.polDeptName}}</div>\r\n            <div class=\"td td4\" style=\"width: 20%\">{{item.pondingNum}}</div>\r\n          </div>\r\n        </div>\r\n        <div class=\"noData\" v-else style=\"color:#fff;height: 190px;text-align: center;line-height: 190px;\">\r\n          暂无数据\r\n        </div>\r\n      </div>\r\n    </div>\r\n    <div class=\"situationView\" v-show=\"!hideRight\">\r\n      <div class=\"contentTitle\">\r\n        各大队积水情况\r\n        <div class=\"conBtn\" @click=\"exportData(2)\">导出</div>\r\n      </div>\r\n      <div class=\"faultTable\">\r\n        <div class=\"thead\">\r\n          <div class=\"th td1\" style=\"width: 25%;height: 32px\">　</div>\r\n          <div class=\"th td2\" style=\"width: 25%;\">点位数量</div>\r\n          <div class=\"th td3\" style=\"width: 25%\">积水点位</div>\r\n          <div class=\"th td4\" style=\"width: 25%\">未查点位</div>\r\n        </div>\r\n        <div class=\"tbody\" v-if=\"generalReportData.polDeptPondingList.length>0\" style=\"height: 256px;overflow-y: auto;float: left;width: 100%\">\r\n          <div class=\"tr\" v-for=\"(item, index) in generalReportData.polDeptPondingList\" :key=\"index\">\r\n            <div class=\"td td1\" style=\"width: 25%\">{{item.polDeptName}}</div>\r\n            <div class=\"td td2\" style=\"width: 25%;\">{{item.totalNum}}</div>\r\n            <div class=\"td td3\" style=\"width: 25%\">{{item.pondingNum}}</div>\r\n            <div class=\"td td4\" style=\"width: 25%\">{{item.unInspectionNum}}</div>\r\n          </div>\r\n        </div>\r\n        <div class=\"noData\" v-else style=\"color:#fff;height: 190px;text-align: center;line-height: 190px;\">\r\n          暂无数据\r\n        </div>\r\n      </div>\r\n    </div>\r\n    <div class=\"AllbottomButtonView\" v-if=\"selectIndex==-1\">\r\n      <div class=\"bottomButtonView bottomButtonViewActive\" style=\"cursor: pointer\" v-if=\"mycheckPermi(2)\" @click=\"releaseViewSend\">发布巡查指令</div>\r\n      <div class=\"bottomButtonView bottomButtonViewGray\" v-else>发布巡查指令</div>\r\n      <div class=\"bottomButtonView1\" v-if=\"showDisabled\" :disabled=\"showDisabled\">发布诱导屏</div>\r\n      <div class=\"bottomButtonView1 buttomClassActive\" v-else @click=\"fubuBtn\" :disabled=\"showDisabled\">发布诱导屏</div>\r\n    </div>\r\n    <div class=\"AllbottomButtonView\" style=\"width: 462px;justify-content: center\" v-else>\r\n      <div class=\"bottomButtonView bottomButtonViewActive\" style=\"cursor: pointer;width: 100px\"  @click=\"uploadAlert(LeftlistData[selectIndex],selectIndex)\">巡查</div>\r\n      <div class=\"bottomButtonView bottomButtonViewActive\" style=\"cursor: pointer;width: 100px\"  @click=\"showHistory(LeftlistData[selectIndex],selectIndex)\">历史</div>\r\n      <div class=\"bottomButtonView bottomButtonViewActive\" style=\"cursor: pointer;width: 100px\"  @click=\"updatePonding(LeftlistData[selectIndex],selectIndex)\">修改</div>\r\n      <div class=\"bottomButtonView bottomButtonViewActive\" style=\"cursor: pointer;width: 100px\"  @click=\"deletePonding(LeftlistData[selectIndex],selectIndex)\">删除</div>\r\n    </div>\r\n    <div class=\"pondingInputView\" v-show=\"createReport\">\r\n      <div class=\"contentTitle\">{{isUpdatePonding?'积水点位信息修改':'积水点位新增'}}</div>\r\n      <div class=\"inputContent\" style=\"margin-top: 30px;float: left;\">\r\n        <div class=\"selectBar\">\r\n          <span class=\"selectName\">级别：</span>\r\n          <el-select v-model=\"formData.floodLevel\" placeholder=\"请选择\" class=\"selectView\" size=\"medium\">\r\n            <el-option v-for=\"item in levelData\" :key=\"item.dictSort\" :value=\"item.dictCode\" :label=\"item.dictLabel\"></el-option>\r\n          </el-select>\r\n        </div>\r\n        <div class=\"selectBar\">\r\n          <span class=\"selectName\">点位坐标：</span>\r\n          <input type=\"text\" class=\"inputView address\" clearable v-model=\"formData.latLng\" @blur=\"drawPondingPoint\" placeholder=\"请输入坐标\" style=\"width:226px\"></input>\r\n          <div class=\"selectPoint\" style=\"cursor: pointer;\" :class=\"isGetMapPoint===true?'isGetMapPoint':''\" @click=\"goSelectMapPoint()\"></div>\r\n        </div>\r\n        <div class=\"selectBar\">\r\n          <span class=\"selectName\">点位名称：</span>\r\n          <input type=\"text\" class=\"inputView\" clearable v-model=\"formData.floodLoca\" placeholder=\"请输入点位名称\"></input>\r\n        </div>\r\n\r\n        <div class=\"selectBar\">\r\n          <span class=\"selectName\">排水部门：</span>\r\n          <input type=\"text\" class=\"inputView\" clearable v-model=\"formData.flDept\" placeholder=\"请输入排水部门\"></input>\r\n        </div>\r\n        <div class=\"selectBar\">\r\n          <span class=\"selectName\">排水负责人：</span>\r\n          <input type=\"text\" class=\"inputView\" clearable v-model=\"formData.flPrincName\" placeholder=\"请输入负责人姓名\"></input>\r\n        </div>\r\n        <div class=\"selectBar\">\r\n          <span class=\"selectName\">排水负责人电话：</span>\r\n          <input type=\"text\" class=\"inputView\" clearable v-model=\"formData.flPrincTel\" placeholder=\"请输入负责人电话\"></input>\r\n        </div>\r\n        <div class=\"selectBar\">\r\n          <span class=\"selectName\">管辖大队：</span>\r\n          <el-select v-model=\"formData.polDept\" placeholder=\"请选择\" class=\"selectView\" size=\"medium\">\r\n            <el-option v-for=\"item in dealTeamList\" :key=\"item.id\" :label=\"item.ddflmc\" :value=\"item.id\"></el-option>\r\n          </el-select>\r\n        </div>\r\n        <div class=\"selectBar\">\r\n          <span class=\"selectName\">辖区大队领导：</span>\r\n          <input type=\"text\" class=\"inputView\" clearable v-model=\"formData.polLeader\" placeholder=\"请输入领导人姓名\"></input>\r\n        </div>\r\n      </div>\r\n      <div class=\"formButtonView\">\r\n        <div @click=\"clearForm\">取消</div>\r\n        <div @click=\"submit\">提交</div>\r\n      </div>\r\n    </div>\r\n\r\n    <div class=\"situationReportViewA\" v-show=\"caseReport\">\r\n      <div class=\"contentTitle\">积水情况巡查 <span class=\"countDown\">{{countDownTime>0?`倒计时：${getFloorNum(countT.hour)}:${getFloorNum(countT.minute)}:${getFloorNum(countT.second)}`: ''}}</span></div>\r\n      <div class=\"situationReportContent\">\r\n        <div class=\"selectBar\">\r\n          <span class=\"selectName\">点位名称：</span>\r\n          {{caseReportData.floodLoca}}\r\n        </div>\r\n        <div class=\"selectBar\">\r\n          <span class=\"selectName\">交通情况：</span>\r\n          <el-radio v-model=\"caseReportData.trafficSituation\" label='1'>正常</el-radio>\r\n          <el-radio v-model=\"caseReportData.trafficSituation\" label='2'>断交</el-radio>\r\n          <el-radio v-model=\"caseReportData.trafficSituation\" label='3'>缓行</el-radio>\r\n        </div>\r\n        <div class=\"selectBar\">\r\n          <span class=\"selectName\">淹水情况：</span>\r\n          <el-radio v-model=\"caseReportData.floodSituation\" label='1'>正常</el-radio>\r\n          <el-radio v-model=\"caseReportData.floodSituation\" label='2'>积水</el-radio>\r\n        </div>\r\n        <div class=\"selectBar\">\r\n          <span class=\"selectName\" style=\"width: 100px\">积水深度(cm)：</span>\r\n          <el-input style=\"width: 160px\" oninput=\"value=value.replace(/[^\\d.]/g,'')\" v-model=\"caseReportData.depth\"></el-input>\r\n        </div>\r\n<!--        hwl-->\r\n        <div class=\"selectBar\">\r\n          <span class=\"selectName\">图片上传：</span>\r\n          <div class=\"situationUpload\" style=\"cursor: pointer\" @click=\"selectFile\"></div>\r\n          <span style=\"color: #29B3FF;cursor: pointer\" @click=\"selectFile\">本地上传<span style=\"color: #4177A1;\">（最多3张）</span></span>\r\n          <input type=\"file\" accept=\"image/*\" id=\"file\" @change=\"getFile\" ref=\"fileSelect\" style=\"filter:alpha(opacity=0);opacity: 0;width: 0;height: 0\"></input>\r\n        </div>\r\n        <div class=\"selectBar\" style=\"overflow: hidden;height: auto;margin-bottom: 20px\">\r\n          <span class=\"selectName\" style=\"display: none\"></span>\r\n          <div class=\"picView\" style=\"position: relative;left: 20px;width: 360px\">\r\n            <div class=\"img\" style=\"width: 109px\" v-for=\"pic in caseReportData.imgList\">\r\n              <el-image style=\"width: 100%;height: 100%;z-index: 999\" :src=\"pic\" :preview-src-list=\"caseReportData.imgList\"></el-image>\r\n            </div>\r\n\r\n          </div>\r\n        </div>\r\n        <div class=\"formButtonView\">\r\n          <div @click=\"clearForm\">取消</div>\r\n          <el-button class=\"sureBTnBg sureBTnBg1\" @click=\"submitCaseReport\" :loading=\"submitLoading\">提交</el-button>\r\n<!--          <div @click=\"submitCaseReport\">提交</div>-->\r\n        </div>\r\n      </div>\r\n    </div>\r\n    <div class=\"situationReportViewA\" style=\"top: 530px;z-index: 10\" v-show=\"caseReport\">\r\n      <div class=\"contentTitle\">积水情况巡查</div>\r\n      <div class=\"situationReportContent\" style=\"padding-top: 0px\">\r\n        <div class=\"addressDes\">{{showHistoryName}}</div>\r\n        <div class=\"faultTable\">\r\n          <div class=\"thead\">\r\n            <div class=\"th td1\" style=\"width: 20%;\">巡查状态</div>\r\n            <div class=\"th td1\" style=\"width: 35%;\">巡查时间</div>\r\n            <div class=\"th td2\" style=\"width: 15%;\">交通情况</div>\r\n            <div class=\"th td3\" style=\"width: 15%\">淹水情况</div>\r\n            <div class=\"th td4\" style=\"width: 15%\">图片</div>\r\n          </div>\r\n          <div class=\"tbody\" v-if=\"caseHistory.length>0\" style=\"overflow-y: auto;float: left;width: 100%;height: 280px\">\r\n            <div class=\"tr\" v-for=\"(item, index) in caseHistory\" :key=\"index\">\r\n              <div class=\"td td1\" style=\"width: 20%\">{{ inspectionMap[item.inspectionFlag] }}</div>\r\n              <div class=\"td td1\" style=\"width: 35%\">{{item.updateTime}}</div>\r\n              <div class=\"td td2\" style=\"width: 15%;\"><span class=\"dot\" :class=\"item.trafficSituation===1?'dot_blue':item.trafficSituation===3?'dot_yellow':'dot_red'\"></span>{{caseReportDataMap.trafficSituation[item.trafficSituation]}}</div>\r\n              <div class=\"td td3\" style=\"width: 15%\"><span class=\"dot\" :class=\"item.floodSituation===1?'dot_blue':'dot_red'\"></span>{{caseReportDataMap.floodSituation[item.floodSituation]}}</div>\r\n              <div class=\"td td4\" style=\"width: 15%\"><div class=\"picButton\" style=\"cursor: pointer\" v-show=\"item.picList.length>0\" @click=\"showImages(item.picList)\"></div></div>\r\n            </div>\r\n          </div>\r\n          <div class=\"noData\" v-else style=\"color:#fff;height: 190px;text-align: center;line-height: 190px;\">\r\n            暂无数据\r\n          </div>\r\n        </div>\r\n      </div>\r\n    </div>\r\n<!--    showImage-->\r\n    <div class=\"picViewerView\" v-show=\"showImage\">\r\n      <div class=\"picViewerTitle\">\r\n        图片预览\r\n        <div class=\"closeButton\" @click=\"closeImage\"></div>\r\n      </div>\r\n      <div class=\"picViewerContent\">\r\n        <div class=\"img\" v-for=\"pic in imageList\">\r\n          <el-image style=\"width: 100%;height: 100%;z-index: 999\" :src=\"pic\" :preview-src-list=\"imageList\"></el-image>\r\n          <!--              <img v-else :src=\"'http://'+pic\" style=\"width: 100%;height: 100%\" alt=\"\">-->\r\n        </div>\r\n      </div>\r\n    </div>\r\n    <div class=\"situationReportView\" v-show=\"searchHistory\">\r\n      <div class=\"contentTitle\">巡查历史 <div class=\"conBtn\" @click=\"exportData(3)\">导出</div></div>\r\n      <div class=\"situationReportContent\" style=\"padding-top: 0px\">\r\n        <div class=\"addressDes\">{{showHistoryName}}</div>\r\n        <div class=\"faultTable\">\r\n          <div class=\"thead\">\r\n            <div class=\"th td1\" style=\"width: 20%;\">巡查状态</div>\r\n            <div class=\"th td1\" style=\"width: 35%;\">巡查时间</div>\r\n            <div class=\"th td2\" style=\"width: 15%;\">交通情况</div>\r\n            <div class=\"th td3\" style=\"width: 15%\">淹水情况</div>\r\n            <div class=\"th td4\" style=\"width: 15%\">图片</div>\r\n          </div>\r\n          <div class=\"tbody\" v-if=\"caseHistory.length>0\" style=\"overflow-y: auto;float: left;width: 100%;height: 672px\">\r\n            <div class=\"tr\" v-for=\"(item, index) in caseHistory\" :key=\"index\">\r\n              <div class=\"td td1\" style=\"width: 20%\">{{ inspectionMap[item.inspectionFlag] }}</div>\r\n              <div class=\"td td1\" style=\"width: 35%\">{{item.updateTime}}</div>\r\n              <div class=\"td td2\" style=\"width: 15%;\"><span class=\"dot\" :class=\"item.trafficSituation===1?'dot_blue':item.trafficSituation===3?'dot_yellow':'dot_red'\"></span>{{caseReportDataMap.trafficSituation[item.trafficSituation]}}</div>\r\n              <div class=\"td td3\" style=\"width: 15%\"><span class=\"dot\" :class=\"item.floodSituation===1?'dot_blue':'dot_red'\"></span>{{caseReportDataMap.floodSituation[item.floodSituation]}}</div>\r\n              <div class=\"td td4\" style=\"width: 15%\"><div class=\"picButton\" v-show=\"item.picList.length>0\" style=\"cursor: pointer\" @click=\"showImages(item.picList)\"></div></div>\r\n            </div>\r\n          </div>\r\n          <div class=\"noData\" v-else style=\"color:#fff;height: 190px;text-align: center;line-height: 190px;\">\r\n            暂无数据\r\n          </div>\r\n        </div>\r\n      </div>\r\n    </div>\r\n    <div class=\"infoSureView\" v-show=\"caseReportRes\">\r\n      <div class=\"picViewerTitle\">情况巡查</div>\r\n      <div class=\"infoSureContent\"><br>{{ showContent}}</div>\r\n      <div class=\"formButtonView\">\r\n        <div @click=\"submit\">确定</div>\r\n      </div>\r\n    </div>\r\n    <div class=\"releaseView\" v-show=\"releaseView\">\r\n      <div class=\"contentTitle\">发布巡查 <span style=\"margin-left: 20px;color: rgb(214, 139, 19);font-size: 14px;\">(上次发布巡查指令时间{{lastestRecordTime}})</span></div>\r\n      <div class=\"releaseBar\" style=\"margin-top: 10px\">\r\n        <div class=\"left\">筛选大队：</div>\r\n        <div class=\"right\">\r\n          <el-checkbox v-model=\"releasedeptAllcheck\" @change=\"releaseAllcheck\">全选</el-checkbox>\r\n          <el-tooltip placement=\"top\" class=\"item\" :visible-arrow=\"true\" popper-class=\"tooltipWork\" content=\"重置时间内，不能给相同大队重复发指令\">\r\n            <i class=\"el-icon-question\" style=\"font-size: 18px;margin-left: 16px;color: #f6a31d\"></i>\r\n          </el-tooltip>\r\n        </div>\r\n      </div>\r\n      <div class=\"releaseBar\">\r\n        <div class=\"left\"></div>\r\n        <div class=\"right\">\r\n          <el-checkbox-group v-model=\"polDepts\">\r\n            <el-checkbox v-for=\"item in teamList\"  :key=\"item.ddfl\" :label=\"item.ddfl\">{{item.ddflmc}}</el-checkbox>\r\n          </el-checkbox-group>\r\n        </div>\r\n      </div>\r\n      <div class=\"releaseBar\" style=\"margin-top: 10px\">\r\n        <div class=\"left\">巡查等级：</div>\r\n        <div class=\"right\">\r\n          <el-radio-group style=\"line-height: 26px\" v-model=\"releaseData.inspectionLevel\">\r\n            <el-radio label=\"1\">A级（暴雨）</el-radio>\r\n            <el-radio label=\"2\">B级（大雨）</el-radio>\r\n            <el-radio label=\"3\">C级（中雨）</el-radio>\r\n          </el-radio-group>\r\n<!--          <el-radio v-model=\"releaseData.inspectionLevel\" label=\"1\">A级（暴雨）</el-radio>-->\r\n<!--          <el-radio v-model=\"releaseData.inspectionLevel\" label=\"2\">B级（大雨）</el-radio>-->\r\n<!--          <el-radio v-model=\"releaseData.inspectionLevel\" label=\"3\">C级（中雨）</el-radio>-->\r\n        </div>\r\n      </div>\r\n      <div class=\"releaseBar\" style=\"margin-bottom: 4px;display: flex\">\r\n        <div class=\"left\" style=\"width: 130px\">预警时间 (min)：</div>\r\n        <div class=\"right releaseBarInput\">\r\n          <el-select v-model=\"releaseData.earlyWarningPeriod\" placeholder=\"请选择\" @change=\"list\" class=\"selectView\" style=\"width: 48%!important;margin-left: 0px!important;\" size=\"medium\">\r\n            <el-option v-for=\"item in earlyTime\" :key=\"item.id\" :label=\"item.name\" :value=\"item.id\">\r\n            </el-option>\r\n          </el-select>\r\n<!--          -->\r\n<!--          <el-input-number-->\r\n<!--            v-model=\"releaseData.earlyWarningPeriod\"-->\r\n<!--            :step='1'-->\r\n<!--            :min=\"1\"-->\r\n<!--            step-strictly-->\r\n<!--            placeholder=\"请选择预警时间\"-->\r\n<!--            style=\"width: 50%\"-->\r\n<!--          >-->\r\n<!--          </el-input-number>-->\r\n        </div>\r\n      </div>\r\n<!--      <div class=\"releaseBar\">-->\r\n<!--        <div class=\"left\" style=\"width: 130px\">积水深度 (cm)：</div>-->\r\n<!--        <div class=\"right releaseBarInput\">-->\r\n<!--          <el-input style=\"width: 50%\" v-model=\"releaseData.depth\"></el-input>-->\r\n<!--        </div>-->\r\n<!--      </div>-->\r\n      <div class=\"releaseBar\" style=\"display:flex;\">\r\n        <div class=\"left\" style=\"width: 130px\">重置时间(小时)：</div>\r\n        <div class=\"right releaseBarInput\">\r\n          <el-select v-model=\"releaseData.deployResetPeriod\" placeholder=\"请选择\" @change=\"list\" class=\"selectView\" style=\"width: 48%!important;margin-left: 0px!important;\" size=\"medium\">\r\n            <el-option v-for=\"item in resetTime\" :key=\"item.id\" :label=\"item.name\" :value=\"item.id\">\r\n            </el-option>\r\n          </el-select>\r\n        </div>\r\n<!--        <div class=\"right releaseBarInput\">-->\r\n<!--          <div style=\"width: 50px\">-->\r\n<!--            {{releaseData.deployResetPeriod}}-->\r\n<!--            <el-tooltip placement=\"top\" class=\"item\" :visible-arrow=\"true\" popper-class=\"tooltipWork\" content=\"24小时后点位状态重置\">-->\r\n<!--              <i class=\"el-icon-question\" style=\"font-size: 18px;margin-left: 23px;position: relative;top: -38px;color: #f6a31d\"></i>-->\r\n<!--            </el-tooltip>-->\r\n<!--          </div>-->\r\n<!--        </div>-->\r\n      </div>\r\n      <div>\r\n\r\n      </div>\r\n      <div style=\"clear: both\"></div>\r\n      <div class=\"formButtonView\" style=\"margin-top: 30px\">\r\n        <div @click=\"clearForm\">取消</div>\r\n        <div class=\"sureBTnBg\" @click=\"submitrelease\">确认</div>\r\n        <div @click=\"resetBtn\">重置</div>\r\n      </div>\r\n    </div>\r\n\r\n    <!--    发布查询成功 -->\r\n    <div v-show=\"fabuShow\" class=\"fbuSucess\" style=\"top: 0;right: 0;bottom: 0;left: 0\">\r\n      <h1>发布巡查</h1>\r\n      <div style=\"    color: #fff;\r\n    text-align: center;\r\n    margin-top: 50px;\">\r\n        {{infoList}}\r\n      </div>\r\n      <div style=\"text-align: center;margin-top: 50px\">\r\n        <span style=\"display: inline-block;width: 120px;\r\n    color: #fff;\r\n    font-size: 14px;\r\n    background: #057bdf;\r\n    height: 30px;\r\n    text-align: center;\r\n    line-height: 30px;\r\n    border-radius: 4px;\" @click=\"fabuShow=false, infoList='巡查指令已下发到所选大队!'\">确定</span></div>\r\n    </div>\r\n\r\n    <!--     发布诱导 -->\r\n    <div v-show=\"showFabu\" style=\"height: 490px;left: 0;right: 0;top: 0; bottom: 0\" class=\"fabuDiv fabuDiv1\">\r\n      <h1>发布诱导</h1>\r\n      <div class=\"fabuDiv_con\">\r\n        <div style=\"width: 100px;\">\r\n          <span>选择点位</span>\r\n        </div>\r\n        <div style=\"width: calc(100% - 100px);\">\r\n          <div>\r\n            <el-checkbox v-model=\"allFabuDataCheck\" @change=\"releaseAllcheckAll\">全选</el-checkbox>\r\n\r\n          </div>\r\n          <el-checkbox-group v-model=\"allFabuDataCheckItem\">\r\n            <el-checkbox v-for=\"(item,index) in allFabuData\"  :key=\"index\" :label=\"item.floodLoca\">{{item.floodLoca}}</el-checkbox>\r\n          </el-checkbox-group>\r\n        </div>\r\n      </div>\r\n      <div class=\"fabuDiv_btn\" style=\"margin-top: 20px\">\r\n        <span @click=\"cancleFabu\">取消</span>\r\n        <span @click=\"sureFabu\">确定</span>\r\n      </div>\r\n    </div>\r\n\r\n    <!--    发布诱导信息-->\r\n    <div class=\"fabuDiv fabuDiv1 fabuDiv2\" v-show=\"showFabuInfo\">\r\n      <h1>发布诱导</h1>\r\n      <div style=\"min-height: 170px;width: 94%;padding-left: 5%\">\r\n<!--        <p style=\"margin-bottom: 10px\">昆明市交警提醒您：</p>-->\r\n        <el-input type=\"textarea\" :rows=\"9\" resize=\"none\" v-model=\"inspecttionContent\" style=\"\"></el-input>\r\n<!--        <p style=\"line-height: 30px\">{{allFabuDataCheckItem.join(',')}}有积水，建议绕行</p>-->\r\n      </div>\r\n      <div class=\"fabuDiv_btn\">\r\n        <span @click=\"showFabu=true,showFabuInfo=false\">返回</span>\r\n        <span @click=\"infoList='已发布诱导',showFabuInfo=false,fabuShow=true\">发布</span>\r\n      </div>\r\n    </div>\r\n  </div>\r\n</template>\r\n<script>\r\nimport mapTop from '../map/mapTop'\r\nimport echarts from 'echarts'\r\nimport largeMap from '@/views/components/largeMap'\r\nimport largeRightNav from '../components/largeRightNav'\r\nimport top_title from \"../components/top_title\";\r\nimport {checkPermi,checkRole} from '../../utils/permission'\r\nimport alertWindow from '@/views/components/alertWindow'\r\nimport { MessageBox } from 'element-ui'\r\nimport  largeRightNavJs from  \"@/views/components/mixin/largeRightNav\"\r\n\r\nimport store from '@/store'\r\nexport default {\r\n    components: {\r\n      mapTop,\r\n      largeMap,\r\n      largeRightNav,\r\n      top_title,\r\n      alertWindow\r\n    },\r\n    mixins:[largeRightNavJs],\r\n    data () {\r\n      return {\r\n        closeTrajectShow:false,\r\n        showTraject: false,\r\n        lastestRecordTime:'',\r\n        resetTime: [\r\n          {name:0.5,id: 30},\r\n          {name:1,id: 60},\r\n          {name:2,id: 120},\r\n          {name:3,id: 180},\r\n          {name:6,id: 360},\r\n          {name:12,id: 720},\r\n        ],\r\n        earlyTime: [\r\n          {name:5,id: 5},\r\n          {name:10,id: 10},\r\n          {name:15,id: 15},\r\n          {name:30,id: 30}\r\n        ],\r\n        pondingId:null,\r\n        testvalue: true,\r\n          ejectData:{}, // 父传子\r\n          countDownTime: '', // 倒计时\r\n          countT:{  // 倒计时\r\n              hour: 0,\r\n              minute:0,\r\n              second: 0\r\n          },\r\n          countDownTimer: null, // 倒计时存储定时器函数\r\n        screenButtonStatus:{\r\n          trafficStatus: {\r\n            isShow:true,\r\n            timer:false\r\n          },\r\n          video: {\r\n            isShow:true,\r\n            timer:false\r\n          },\r\n          policeSituation: {\r\n            isShow:true,\r\n            timer:false\r\n          },\r\n          policeman: {\r\n            isShow:true,\r\n            timer:1000\r\n          },\r\n          policeCar: {\r\n            isShow:true,\r\n            timer:false\r\n          },\r\n          ranger: {\r\n            isShow:true,\r\n            timer:false\r\n          },\r\n          rtRecorder4g: {\r\n            isShow:true,\r\n            timer:false\r\n          },\r\n          work: {\r\n            isShow:true,\r\n            timer:false\r\n          },\r\n          ponding: {\r\n            isShow:true,\r\n            timer:false\r\n          },\r\n          trailer:{\r\n            isShow:true,\r\n            timer:false\r\n          },\r\n          bayonet: {\r\n            isShow:true,\r\n            timer:false\r\n          }, // 卡口\r\n          controlBayonet: {\r\n            isShow:true,\r\n            timer:false\r\n          }, // 卡口\r\n        },\r\n        infoList: '巡查指令已下发到所选大队！', //弹窗---title\r\n\r\n        //发布诱导----\r\n        showFabu: false,  // 弹窗\r\n        showFabuInfo:false,  //提示框\r\n        showDisabled: true, // 发布诱导屏----按钮是否禁止\r\n        fabuShow: false,  // 查询成功弹窗\r\n        allFabuDataCheck: false,  //选择框---全选\r\n        inspecttionContent:'',\r\n        allFabuDataCheckItem: [],  // 选择框\r\n        allFabuData: [], // 选择框--文字\r\n        showContent:'',// 情报巡查\r\n\r\n        releaseData:{ // 发布巡查\r\n          polDepts:[],\r\n          inspectionLevel:null,\r\n          earlyWarningPeriod: 30, // 预警时间\r\n          deployResetPeriod: '', // 重置时间,\r\n          depth: '' // 积水深度\r\n\r\n        },\r\n        polDepts:[],\r\n        releasedeptAllcheck:false,  // 筛选大队\r\n        imageList:[], // 图片预览\r\n        localHost:process.env.VUE_APP_IMG_HOST_SRC,\r\n        caseReportData:{  // 积水巡查\r\n          index:-1, // 道路积水列表---选中\r\n          floodId:'', // 道路积水列表--选中---id号\r\n          trafficSituation:'1',  // 交通情况---默认正常\r\n          floodSituation:'1',  // 淹水情况----默认正常\r\n          picList:[],  // 积水巡查---图片\r\n          imgList:[],\r\n          depth:'', // 深度\r\n        },\r\n        caseReportDataMap:{ // 巡查历史--列表\r\n          trafficSituation:{1:'正常',2:'断交',3:'缓行'},\r\n          floodSituation:{1:'正常',2:'积水'}\r\n        },\r\n        inspectionMap:{1:'未巡查',2:'正常巡查',3:'超时巡查'}, // 巡检状态\r\n        releaseView:false, // 发布巡查---弹出框\r\n        showImage:false, // 积水情况---图片预览\r\n        caseReportRes:false,  // 情况巡查-弹窗\r\n        caseReport:false, // 积水情况巡查--弹框\r\n        searchHistory:false, // 巡查历史--弹框\r\n        hideRight:false,  // 各大队积水情况---弹框\r\n        isShowDelete:false, //是否正在删除\r\n        deletePondingIndex:null, //删除的id\r\n        isUpdatePonding:false, //是否更新淹积水\r\n        createReport:false,  // 道路积水首页\r\n        maxwidth:1920,\r\n        maxheight:960,\r\n        selectIndex:-1, // 道路积水点位列表---选中\r\n        teamList: [], //  发布巡查----大队展示\r\n        teamList_search:[], // 道路积水点位---大队\r\n        searchData: {  // 搜索\r\n          polDept: '',\r\n          search: '',\r\n          inspectionFlag:'',\r\n          floodSituation:'',\r\n          deployResetPeriod:'' //重置时间\r\n        },\r\n        inspectionFlags:[{id:1,ddfl:'',ddflmc:'全部'},{id:2,ddfl:1,ddflmc:'未巡查'},{id:3,ddfl:2,ddflmc:'已巡查'}],\r\n        showHistoryName:'', // 巡查历史----当前选中的道路名\r\n        LeftlistData: [], // 道路积水点位---列表\r\n        generalReportData: { // 概况\r\n          totalNum:'', // 点位总数\r\n          pondingNum:'', //在淹点位\r\n          unInspectionNum: '', // 待查点位\r\n          polDeptPondingList: [],  //各大队积水情况--列表\r\n          pondingRankList: []  // 积水次数排名---列表\r\n        },\r\n        levelData: [], // 级别--下拉框列表\r\n        isUpdatePondingIndex: -1, // 修改淹积水index\r\n        formData: {  // 道路积水首页--\r\n          id:'',\r\n          latLng: '',  //点位坐标\r\n          floodLevel: '',// 级别选中\r\n          floodLoca: '',  // 点位名称\r\n          longitude: '',\r\n          latidude: '',\r\n          flDept: '', // 排水部门\r\n          flPrincName: '',  // 排水负责人\r\n          flPrincTel: '', //排水负责人电话号码\r\n          polDept: '',  // 管辖大队\r\n          polLeader: ''// 管辖大队 领导\r\n        },\r\n        superWidth:1920,\r\n        width: '1920px',\r\n        height: '960px',\r\n        data:{\r\n          transform: 'scale(0.5,0.5)',\r\n          transformMap: 'scale(0.5,0.5)',\r\n          timeShow: '',\r\n        },\r\n        dealTeamList:[], // 管辖大队选择下拉框\r\n        caseHistory:[], // 巡查历史列表\r\n        isIndexScreenView: false,//是否显示警情筛选框\r\n        indexRightNavRight: 470,\r\n          showHistoryIndex:-1,  // 道路积水点位---选中\r\n\r\n        isGetMapPoint:false,  // 点位坐标是否选中\r\n        submitLoading: false\r\n      }\r\n    },\r\n    created() {\r\n      this.pondingId = this.$route.query.id\r\n    },\r\n  // 把父组件传入的arr转化成字符串\r\n    mounted: function () {\r\n      this.convert()\r\n      this.elevent();\r\n      this.dictType();\r\n      this.dealTeamData();\r\n      this.list()\r\n      // this.allFabu()\r\n      this.generalReport();\r\n        this.$refs.largeRightNav.refreshPondIng(true)\r\n      this.$once('hook:beforeDestroy', () => {\r\n        this.$refs.mapBg.removeMap()\r\n      })\r\n    },\r\n\r\n    watch: {\r\n      caseReport:function(){\r\n          clearInterval(this.countDownTimer)\r\n      },\r\n      polDepts:function(){\r\n        this.releasedeptAllcheck = this.teamList.length === this.polDepts.length;\r\n      },\r\n      allFabuDataCheckItem() {\r\n        this.allFabuDataCheck = this.allFabuData.length == this.allFabuDataCheckItem.length\r\n        this.inspecttionContent='昆明市交警提醒您：\\n       '+this.allFabuDataCheckItem.join(',')+'有积水，建议绕行'\r\n      },\r\n    },\r\n    methods: {\r\n      closeTrajectMc() {\r\n        this.$refs.alertWindow.showTrajectBtn()\r\n      },\r\n      closeTraject() {\r\n        this.showTraject = false;\r\n        this.$refs.largeRightNav.trajectorySearch1(false)\r\n      },\r\n      trajectortBtn(val) {\r\n        this.showTraject = val\r\n      },\r\n      //修改地图主题颜色\r\n      setMapStyle(val){\r\n        this.$refs.mapBg.mapSetStyleClick(val)//HWL\r\n        // @setMapStyle=\"setMapStyle\"\r\n      },\r\n      resetBtn() {\r\n        this.$axios.put(`/baseplatform/localFloodInfo/resetManual`).then(res=>{\r\n          if(res.data.code==200) {\r\n            this.getddflList(1)\r\n            this.$message.success('操作成功！')\r\n          }else{\r\n            this.$message.error(res.data.msg)\r\n          }\r\n        })\r\n      },\r\n      // 获取上次发布巡查指令的发布时间\r\n      lastestRecord() {\r\n        this.$axios.get(`/baseplatform/localFloodInfo/deploy/lastestRecord`).then(res=>{\r\n          if(res.data.code==200) {\r\n            this.lastestRecordTime= res.data.data.createTime;\r\n          }\r\n        })\r\n      },\r\n      exportData(val) {\r\n        let url =''\r\n        if(val==1) {\r\n          url='/baseplatform/localFloodInfo/export'\r\n        }else if(val==3) {\r\n          url=`/baseplatform/localFloodInspection/exportByFloodId?floodId=${this.LeftlistData[this.selectIndex].id}`\r\n        }else{\r\n          url='/baseplatform/localFloodInfo/exportReport'\r\n        }\r\n        let config = {'responseType':'blob'};\r\n        this.$axios.get(url,config).then(res=>{\r\n            console.log(\"666\",res)\r\n          let fileDownload = require('js-file-download');\r\n          fileDownload(res.data, decodeURIComponent(res.headers['content-disposition'].split('=')[1]))\r\n        })\r\n      },\r\n      alertWindow:function(ejectData){\r\n        this.ejectData=ejectData\r\n      },\r\n      checkRole,\r\n      checkPermi,\r\n      mycheckPermi(type){  // 健全\r\n        if(type===1){\r\n          return this.checkPermi(['business:localFloodInfo:add','*:*:*'])  // 框架自带写法\r\n        }else if(type===2){\r\n          return this.checkPermi(['business:localFloodInfo:deploy','*:*:*'])\r\n        }else if(type===3){\r\n          return this.checkPermi(['business:localFloodInspection:edit','*:*:*'])\r\n        }\r\n      },\r\n      changeToNewPage() {\r\n        this.$router.go(0)\r\n      },\r\n      faceNorth:function(){\r\n        this.$refs.mapBg.faceNorth()\r\n      },\r\n      functionMap:function(func,args){\r\n        this.$refs.mapBg.functionMap(func,args)\r\n      },\r\n      resetMap:function(){\r\n        this.$refs.mapBg.resetMap()\r\n      },\r\n      showMarkers:function(markers,isBestShow,isMul){\r\n        this.$refs.mapBg.showMarkers(markers,isBestShow,isMul)\r\n      },\r\n      hideMarkers:function(type){\r\n        this.$refs.mapBg.hideMarkers(type)\r\n      },\r\n      showTraffic:function(type){\r\n        this.$refs.mapBg.showTraffic(type, 30)\r\n      },\r\n      setPoiShow:function(){\r\n        this.$refs.mapBg.setPoiShow()\r\n      },\r\n      flyTo:function(lngLat,zoom,picth){\r\n        this.$refs.mapBg.flyTo(lngLat,zoom,picth)\r\n      },\r\n      // 发布诱导---确定\r\n      sureFabu() {\r\n        this.showFabu = false;\r\n        this.showFabuInfo = true;\r\n      },\r\n      // 发布诱导---取消\r\n      cancleFabu() {\r\n        this.allFabuDataCheckItem = [];\r\n        this.allFabuDataCheck= false;\r\n        this.showFabu = false\r\n      },\r\n      // 发布诱导指令\r\n      fubuBtn() {\r\n        this.showFabu = true;\r\n        this.allFabuDataCheckItem = [];\r\n        this.allFabuDataCheck= false;\r\n      },\r\n      // 获取道路积水列表\r\n      allFabu() {\r\n        let _this = this;\r\n        this.$axios.get(`/baseplatform/localFloodInfo/all`).then(function(res) {\r\n          if (res.data.code === 200 && res.status === 200){\r\n            _this.allFabuData = res.data.rows.splice(0, 15)\r\n          }\r\n        })\r\n      },\r\n      // 情况巡查----确定\r\n      submitrelease:function(){\r\n        let _this=this\r\n        _this.showContent='已发送巡查指令！'\r\n        if(!this.releaseData.inspectionLevel) {\r\n         return this.$message('请选择巡查等级')\r\n        }\r\n        if(this.releaseData.earlyWarningPeriod<5||!this.releaseData.earlyWarningPeriod){\r\n          return this.$message('预警时间请大于5分钟')\r\n        }\r\n        if(!this.releaseData.deployResetPeriod){\r\n          return this.$message('重置时间不能为空')\r\n        }\r\n        this.$axios.put('/baseplatform/localFloodInfo/deploy',{\r\n          polDepts: _this.polDepts,\r\n          inspectionLevel: _this.releaseData.inspectionLevel,\r\n          earlyWarningPeriod: _this.releaseData.earlyWarningPeriod,\r\n          // deployResetPeriod: _this.releaseData.deployResetPeriod\r\n          // deployResetPeriod: _this.releaseData.deployResetPeriod*60,\r\n          deployResetPeriod:_this.releaseData.deployResetPeriod\r\n        }).then(res=>{\r\n          if(res.status===200&&res.data.code===200){\r\n            _this.showDisabled = false;\r\n            _this.releaseView = false;\r\n            _this.fabuShow = true;\r\n            if(_this.caseReportData.floodId&&_this.caseReportData.index>=0) {  // 是否有选中道路积水点位，有，则请求接口获取倒计时\r\n                _this.uploadCountDown()\r\n            }\r\n            _this.polDepts=[];\r\n            _this.releasedeptAllcheck = false;\r\n            _this.releaseData.inspectionLevel = '';\r\n            setTimeout(function(){\r\n              _this.fabuShow=false\r\n            }, 1000)\r\n            _this.list()\r\n            _this.clearForm(1)\r\n          }\r\n          this.$refs.mapBg.hideMarkers('pondingData')\r\n          this.$refs.mapBg.stopToMarkLayers()\r\n\r\n        })\r\n      },\r\n      // 发布诱导----全选按钮change事件\r\n      releaseAllcheckAll() {\r\n        let h = []\r\n        if(this.allFabuDataCheck){\r\n          this.allFabuData.forEach(function(val) {\r\n            h.push(val.floodLoca)\r\n          })\r\n\r\n        }else{\r\n          h=[]\r\n        }\r\n        this.allFabuDataCheckItem = h;\r\n      },\r\n      // 筛选大队----全选\r\n      releaseAllcheck:function(){\r\n        let _this=this\r\n        if(this.releasedeptAllcheck){\r\n          this.polDepts=[]\r\n          this.teamList.forEach(function(val) {\r\n            _this.polDepts.push(val.ddfl)\r\n          })\r\n        }else{\r\n          this.polDepts=[]\r\n        }\r\n      },\r\n      // 发布巡查指令----按钮\r\n      releaseViewSend:function(){\r\n        this.lastestRecord()\r\n        this.getddflList()\r\n\r\n      },\r\n      // 图片预览---关闭\r\n      closeImage:function(){\r\n        this.showImage=false\r\n      },\r\n      // 图片预览---打开\r\n      showImages:function(item){\r\n        this.imageList=[]\r\n        let _this=this\r\n        item.forEach(function(val){\r\n          _this.imageList.push(_this.localHost+val.url)\r\n        })\r\n        this.showImage=true\r\n      },\r\n      // 文件上传\r\n      getFile() {\r\n        let files = this.$refs.fileSelect.files[0]\r\n        if(files!=null){\r\n          let param= new FormData();\r\n          param.append('file',files)\r\n          let config={\r\n            headers:{\"Content-Type\":\"multipart/form-data\",\"isToken\":false}\r\n          }\r\n          let _this=this;\r\n          if(this.caseReportData.imgList.length>=3) {\r\n            return  this.$message('最多上传三张')\r\n          }\r\n          this.$axios.post(this.localHost+'/uploadfile/system/files/upload/',param,config).then(res => {\r\n            let data= res.data.data\r\n            _this.caseReportData.picList.unshift({fileId:data.id});\r\n            _this.caseReportData.imgList.unshift(_this.localHost+data.url);\r\n          })\r\n        }\r\n      },\r\n      // 本地上传按钮\r\n      selectFile: function() {\r\n        document.getElementById('file').click()\r\n      },\r\n      // 列表--time事件--打开巡查历史\r\n      showHistory:function(item,index){\r\n        this.showHistoryIndex = index;\r\n        this.showHistoryName=this.LeftlistData[index].floodLoca\r\n        let _this = this\r\n        this.$axios.get(`/baseplatform/localFloodInfo/${item.id}`).then(function(res) {\r\n          let history = res.data.data\r\n          _this.caseHistory=history.inspectionList\r\n        })\r\n        this.showImage=false\r\n        this.caseReportRes=false\r\n        this.caseReport=false\r\n        this.searchHistory=true\r\n        this.hideRight = true;\r\n        this.createReport = false;\r\n        // this.selectIndex=-1\r\n      },\r\n      // 时间保留两位数\r\n        getFloorNum(i) {\r\n          return i<10?`0${i}`: i\r\n        },\r\n        // 倒计时\r\n        uploadCountDown(id) {\r\n          let _this = this;\r\n            clearInterval(this.countDownTimer)\r\n            this.countDownTime = 0;\r\n            if(this.caseReportData.floodId == '') {\r\n                return false;\r\n            }\r\n          this.$axios.get(`/baseplatform/localFloodInfo/inspectionUploadLeftMillisecond/${this.caseReportData.floodId}`).then(res=>{\r\n              if(res.data.data>0) {\r\n                  let times = res.data.data\r\n                  _this.countDownTime =Number(res.data.data);\r\n                  _this.countT.hour = Math.floor(times/3600);\r\n                  _this.countT.minute = Math.floor(times/60%60);\r\n                  _this.countT.second = Math.floor(times%60);\r\n\r\n                  _this.countDownTimer= setInterval(()=>{\r\n                      if (_this.countT.hour === 0) {\r\n                          if (_this.countT.minute !== 0 && _this.countT.second === 0) {\r\n                              _this.countT.second = 59\r\n                              _this.countT.minute -= 1\r\n                          } else if (_this.countT.minute === 0 && _this.countT.second === 0) {\r\n                              _this.countT.second = 0\r\n                              clearInterval(_this.countDownTimer)\r\n                          } else {\r\n                              _this.countT.second -= 1\r\n                          }\r\n                      } else {\r\n                          if (_this.countT.minute !== 0 && _this.countT.second === 0) {\r\n                              _this.countT.second = 59\r\n                              _this.countT.minute -= 1\r\n                          } else if (_this.countT.minute === 0 && _this.countT.second === 0) {\r\n                              _this.countT.hour -= 1\r\n                              _this.countT.minute = 59\r\n                              _this.countT.second = 59\r\n                          } else {\r\n                              _this.countT.second -= 1\r\n                          }\r\n                      }\r\n\r\n                      // _this.countDownTime =  _this.countDownTime -1\r\n                  }, 1000)\r\n              }else{\r\n                  clearInterval(_this.countDownTimer)\r\n                  this.countDownTime = '';\r\n              }\r\n\r\n            })\r\n        },\r\n      getVideoImg(file,imageSrc){\r\n        if(this.caseReport){\r\n          let files=file\r\n          if(files!=null){\r\n            let param= new FormData();\r\n\r\n            param.append('file',files)\r\n            let config={\r\n              headers:{\"Content-Type\":\"multipart/form-data\",\"isToken\":false}\r\n            }\r\n            let _this=this;\r\n            if(this.caseReportData.imgList.length>=3) {\r\n              return  this.$message('最多上传三张')\r\n            }\r\n\r\n            this.$axios.post(this.localHost+'/uploadfile/system/files/upload/',param,config).then(res => {\r\n              let data= res.data.data\r\n              _this.caseReportData.picList.unshift({fileId:data.id});\r\n              _this.caseReportData.imgList.unshift(_this.localHost+data.url);\r\n            })\r\n          }\r\n        }\r\n      },\r\n      // 列表--upload--打开积水情况巡查\r\n      uploadAlert:function(item,index){\r\n          index=this.LeftlistData.findIndex(it=>{return it.id===item.id})\r\n        let selectindex = -1\r\n        this.LeftlistData.forEach((val,index)=>{\r\n          if(val.id==item.id){\r\n            selectindex=index\r\n            return false\r\n          }\r\n        })\r\n        this.showImage=false\r\n        this.caseReportRes=false\r\n        this.caseReport=true\r\n        this.searchHistory=false\r\n        this.hideRight = true;\r\n        this.createReport = false;\r\n        this.caseReportData.index=selectindex\r\n        this.caseReportData.floodId=item.id\r\n        this.caseReportData.floodLoca=item.floodLoca\r\n        this.caseReportData.trafficSituation='1'\r\n        this.caseReportData.floodSituation='1'\r\n        this.caseReportData.imgList=[]\r\n        this.caseReportData.picList=[]\r\n        this.selectIndex=selectindex\r\n        this.uploadCountDown(item.id)\r\n\r\n        let _this=this\r\n        this.$axios.get(`/baseplatform/localFloodInfo/${item.id}`).then(function(res) {\r\n          let history = res.data.data\r\n          _this.caseHistory=history.inspectionList\r\n        })\r\n        this.showHistoryName=this.LeftlistData[index].floodLoca\r\n      },\r\n      getSonVal(val) {\r\n        // if(this.searchData.search!=''||this.searchData.polDept!='') {\r\n        //   this.searchData.search='';\r\n        //   this.searchData.polDept=''\r\n        //   this.list()\r\n        // }else{\r\n        //\r\n        // }\r\n        let index = this.LeftlistData.findIndex(item=>{\r\n          return item.id ==val.id\r\n        })\r\n        this.selectIndex=index;\r\n        setTimeout(()=>{\r\n          // let getselected = document.getElementById('selected')\r\n          //\r\n          document.getElementById('selected').scrollIntoView();\r\n        },100)\r\n        let point=this.LeftlistData[index]\r\n        this.$refs.mapBg.hideMarkers('pondingData')\r\n        this.$refs.mapBg.hideMarkers('ponding')\r\n        this.$refs.mapBg.removeWorkWindow()\r\n        let marker = {\r\n          type: 'pondingData',\r\n          lng: point.longitude,\r\n          lat: point.latidude,//纬度值\r\n          id: point.id,\r\n          floodLevelName: point.floodLevelName,\r\n          floodLoca: point.floodLoca,\r\n          polDeptName: point.polDeptName,\r\n          polLeader: point.polLeader,\r\n          flDept: point.flDept,\r\n          flPrincName: point.flPrincName,\r\n          flPrincTel: point.flPrincTel,\r\n          floodSituation: point.floodSituation,\r\n          lastestDepth: point.lastestDepth\r\n        }\r\n        this.$refs.mapBg.showMarkers([marker],true,false)\r\n        this.$refs.mapBg.addWorkWindow([marker],'ponding')\r\n        // if(index>3) {\r\n\r\n        // }\r\n\r\n      },\r\n      //道路积水点位--选中事件\r\n      changeSelect:function(index, val){\r\n        this.isUpdatePondingIndex=-1\r\n        this.createReport = false\r\n        this.searchHistory = false;\r\n        this.caseReport = false;\r\n        this.hideRight = false;\r\n        if(index===this.selectIndex){\r\n          this.selectIndex=-1\r\n          this.showHistoryIndex = -1;\r\n          this.$refs.mapBg.hideMarkers('pondingData')\r\n          this.$refs.mapBg.hideMarkers('ponding')\r\n          this.showImage=false\r\n          this.caseReportRes=false\r\n          this.caseReport=false\r\n          this.searchHistory=false\r\n          this.hideRight = false;\r\n          this.createReport = false;\r\n            this.$refs.largeRightNav.refreshPondIng(true)\r\n          // this.$refs.largeRightNav.selectScreen(true,9)\r\n          this.$refs.mapBg.resetMap()\r\n          return false\r\n        }\r\n        this.selectIndex=index\r\n        this.$refs.mapBg.hideMarkers('pondingData')\r\n        this.$refs.mapBg.hideMarkers('ponding')\r\n        this.$refs.mapBg.removeWorkWindow()\r\n        // this.$refs.largeRightNav.selectScreen(true,9)\r\n        let point=this.LeftlistData[index]\r\n        let marker = {\r\n          type: 'pondingData',\r\n          lng: point.longitude,\r\n          lat: point.latidude,//纬度值\r\n          id: point.id,\r\n          floodLevelName: point.floodLevelName,\r\n          floodLoca: point.floodLoca,\r\n          polDeptName: point.polDeptName,\r\n          polLeader: point.polLeader,\r\n          flDept: point.flDept,\r\n          flPrincName: point.flPrincName,\r\n          flPrincTel: point.flPrincTel,\r\n          floodSituation: point.floodSituation,\r\n          inspectionFlag:point.inspectionFlag,\r\n          lastestDepth: point.lastestDepth\r\n        }\r\n        this.$refs.mapBg.showMarkers([marker],true,false)\r\n        this.$refs.mapBg.addWorkWindow([marker],'ponding')\r\n      },\r\n      hideIndexScreenView: function() {\r\n        this.isIndexScreenView = false\r\n      },\r\n      // 提交\r\n      submit() {\r\n        if(this.formData.floodLevel=='') {\r\n          return  this.$message('请选择级别')\r\n        }else if(this.formData.latLng=='') {\r\n          return  this.$message('请选择点位坐标')\r\n        }else if(this.formData.latLng.flDept=='') {\r\n          return  this.$message('请输入排水部门')\r\n        }else if(this.formData.latLng.flPrincName=='') {\r\n          return  this.$message('请输入排水负责人')\r\n        }else if(this.formData.latLng.flPrincTel=='') {\r\n          return  this.$message('请输入电话')\r\n        }else if(this.formData.latLng.polDept=='') {\r\n          return  this.$message('请选择管辖大队')\r\n        }else if(this.formData.polDept=='') {\r\n          return  this.$message('请输入管辖大队')\r\n        }\r\n        let _this = this;\r\n        _this.showloading = true\r\n        if(_this.isUpdatePonding){\r\n          this.$axios.put('/baseplatform/localFloodInfo',{\r\n            id: _this.formData.id,\r\n            floodLevel: _this.formData.floodLevel,\r\n            floodLoca: _this.formData.floodLoca,\r\n            longitude: _this.formData.longitude,\r\n            latidude: _this.formData.latidude,\r\n            flDept: _this.formData.flDept,\r\n            flPrincName: _this.formData.flPrincName,\r\n            flPrincTel: _this.formData.flPrincTel,\r\n            polDept: _this.formData.polDept,\r\n            polLeader: _this.formData.polLeader,\r\n\r\n          })\r\n            .then(res=>{\r\n              _this.$refs.mapBg.hideMarkers('pondingData')\r\n              _this.$refs.mapBg.stopToMarkLayers()\r\n              _this.showloading = false\r\n              _this.showloading = false\r\n              if(res.data.code===200&&res.status===200){\r\n                _this.$refs.mapTop.alertMassageStatus =1;\r\n                _this.list()\r\n                let h = setTimeout(function() {\r\n                  _this.$refs.mapTop.closeAlertMassage();\r\n                  clearTimeout(h)\r\n                  _this.createReport=false\r\n                  _this.hideRight=false\r\n                  _this.isUpdatePonding=false\r\n                },1000)\r\n              }\r\n\r\n            })\r\n        }else{\r\n          this.$axios.post('/baseplatform/localFloodInfo',{\r\n            floodLevel: _this.formData.floodLevel,\r\n            floodLoca: _this.formData.floodLoca,\r\n            longitude: _this.formData.longitude,\r\n            latidude: _this.formData.latidude,\r\n            flDept: _this.formData.flDept,\r\n            flPrincName: _this.formData.flPrincName,\r\n            flPrincTel: _this.formData.flPrincTel,\r\n            polDept: _this.formData.polDept,\r\n            polLeader: _this.formData.polLeader,\r\n\r\n          })\r\n            .then(res=>{\r\n              _this.$refs.mapBg.hideMarkers('pondingData')\r\n              _this.$refs.mapBg.stopToMarkLayers()\r\n              _this.showloading = false\r\n              if(res.data.code===200&&res.status===200){\r\n                _this.$refs.mapTop.alertMassageStatus =1;\r\n                _this.list()\r\n                let h = setTimeout(function() {\r\n                  _this.$refs.mapTop.closeAlertMassage();\r\n                  clearTimeout(h)\r\n                  _this.createReport=false\r\n                  _this.hideRight=false\r\n                },1000)\r\n              }\r\n\r\n            })\r\n        }\r\n\r\n      },\r\n      submitCaseReport(){\r\n        let _this=this\r\n        _this.showContent='积水情况已巡查！';\r\n        // if() {\r\n        //\r\n        // }\r\n        if(this.submitLoading) {\r\n          return false;\r\n        }\r\n        if(this.caseReportData.floodSituation==2&&!this.caseReportData.depth){\r\n          return this.$message.error('积水深度不能为空')\r\n        }\r\n        this.submitLoading = true;\r\n        this.$axios.put('/baseplatform/localFloodInspection',{\r\n          floodId: _this.caseReportData.floodId,\r\n          trafficSituation: _this.caseReportData.trafficSituation,\r\n          floodSituation: _this.caseReportData.floodSituation,\r\n          picList: _this.caseReportData.picList,\r\n          depth: _this.caseReportData.depth\r\n        }).then(res=>{\r\n          this.submitLoading = false;\r\n          if(res.status===200&&res.data.code===200){\r\n            _this.LeftlistData[_this.selectIndex].inspectionFlag='2'\r\n            _this.generalReport()\r\n            _this.list()\r\n            if(_this.selectIndex>-1){\r\n              _this.$refs.mapBg.hideMarkers('pondingData')\r\n              _this.$refs.mapBg.hideMarkers('ponding')\r\n              _this.$refs.mapBg.removeWorkWindow()\r\n              // this.$refs.largeRightNav.selectScreen(true,9)\r\n              let point=_this.LeftlistData[_this.selectIndex]\r\n              let marker = {\r\n                type: 'pondingData',\r\n                lng: point.longitude,\r\n                lat: point.latidude,//纬度值\r\n                id: point.id,\r\n                floodLevelName: point.floodLevelName,\r\n                floodLoca: point.floodLoca,\r\n                polDeptName: point.polDeptName,\r\n                polLeader: point.polLeader,\r\n                flDept: point.flDept,\r\n                flPrincName: point.flPrincName,\r\n                flPrincTel: point.flPrincTel,\r\n                floodSituation: _this.caseReportData.floodSituation,\r\n                inspectionFlag:point.inspectionFlag,\r\n                lastestDepth: point.lastestDepth\r\n              }\r\n              _this.$refs.mapBg.showMarkers([marker],true,false)\r\n              _this.$refs.mapBg.addWorkWindow([marker],'ponding')\r\n              _this.$refs.largeRightNav.refreshPondIng(true)\r\n            }\r\n            else {\r\n              _this.$refs.largeRightNav.refreshPondIng(true)\r\n            }\r\n            _this.caseReportRes=true\r\n            // _this.LeftlistData[_this.caseReportData.index].inspectionFlag=2\r\n            if(_this.caseReportData.floodSituation==='2'||_this.caseReportData.floodSituation===2){\r\n              _this.LeftlistData[_this.caseReportData.index].floodCount+=1\r\n            }\r\n            setTimeout(function(){\r\n              _this.caseReportRes=false\r\n              _this.clearForm()\r\n            },100)\r\n          }\r\n\r\n        })\r\n      },\r\n      clearForm(i) {\r\n        this.lastestRecordTime = ''\r\n        this.releaseData.deployResetPeriod = ''\r\n        this.caseReportData.depth = '';\r\n        this.isUpdatePonding=false\r\n        this.releaseView=false\r\n        this.caseReportRes=false\r\n        this.showImage=false\r\n        this.$refs.mapBg.hideMarkers('pondingData')\r\n        this.$refs.mapBg.stopToMarkLayers()\r\n          if(i!=1) {\r\n              this.caseReport=false\r\n            this.hideRight = false;\r\n          }\r\n\r\n        this.searchHistory=false\r\n\r\n        this.createReport = false;\r\n        this.releaseData.earlyWarningPeriod =30;\r\n        this.releaseData.deployResetPeriod = 12;\r\n        this.caseReportData.floodId = '';\r\n\r\n        for(let item in this.formData){\r\n          this.formData[item] ='';\r\n        }\r\n\r\n      },\r\n      sureHandler(lng,lat,address){\r\n        this.formData.latLng=(lng+','+lat)\r\n        this.formData.floodLoca=address\r\n        this.isGetMapPoint=false\r\n        this.formData.longitude=lng\r\n        this.formData.latidude = lat\r\n\r\n      },\r\n      drawPondingPoint(){\r\n        let points=[]\r\n        try {\r\n          points=this.formData.latLng.split(',')\r\n          this.formData.longitude=points[0]\r\n          this.formData.latidude = points[1]\r\n          this.goSelectMapPoint()\r\n          let marker = {\r\n            type: 'ponding',\r\n            lng: points[0],\r\n            lat: points[1],//纬度值\r\n          }\r\n          this.$refs.mapBg.showMarkers([marker],15,false)\r\n          this.$refs.mapBg.sureAddress(this.formData.latLng)\r\n        }catch (e) {\r\n          console.log(e)\r\n        }\r\n\r\n      },\r\n      getAddress(val){\r\n        this.formData.floodLoca=val\r\n      },\r\n      // 焦点获取\r\n      goSelectMapPoint() {\r\n        this.isGetMapPoint=true\r\n        this.$refs.mapBg.hideMarkers('pondingData')\r\n        this.$refs.mapBg.hideMarkers('ponding')\r\n        this.$refs.mapBg.removeWorkWindow()\r\n        this.selectIndex=-1\r\n        this.$refs.mapBg.startToMark('ponding')\r\n      },\r\n      // 淹积水\r\n      getddflList(index) {\r\n        let _this = this\r\n        this.$axios.get('/baseplatform/localFloodInfo/ddflList').then(function(res) {\r\n          _this.teamList = res.data.rows;\r\n          if(index!=1) {\r\n            _this.releaseView=!_this.releaseView\r\n          }\r\n\r\n        })\r\n      },\r\n      // 大队获取\r\n      elevent() {\r\n        let _this = this;\r\n        this.$axios.get('/baseplatform/kmdnLocalDdfl/elevent').then(function(res) {\r\n          _this.teamList_search=JSON.parse(JSON.stringify(res.data.rows))\r\n          if(_this.teamList_search.length>1){\r\n            _this.teamList_search.unshift({ddfl: '',\r\n              ddflmc: \"全部\",\r\n              id: 100})\r\n          }else if(_this.teamList_search.length==1){\r\n            _this.searchData.polDept=_this.teamList_search[0].ddfl\r\n          }\r\n\r\n        })\r\n      },\r\n      // 管辖大队领导 dealTeamList\r\n      dealTeamData() {\r\n        this.$getUrl('','/kmdnLocalDdfl/freshElevent').then(res=>{\r\n          this.dealTeamList = res.rows;\r\n        })\r\n      },\r\n      // 概况\r\n      generalReport() {\r\n        let _this = this\r\n        this.$axios.get('/baseplatform/localFloodInfo/generalReport').then(function(res) {\r\n          _this.generalReportData = res.data.data\r\n        })\r\n      },\r\n      // 获取道路积水列表\r\n      list() {\r\n        let _this = this;\r\n        let val = `floodSituation=${this.searchData.floodSituation}&polDepts=${this.searchData.polDept}&search=${this.searchData.search}&inspectionFlag=${this.searchData.inspectionFlag}`\r\n        this.$axios.get(`/baseplatform/localFloodInfo/list?${val}`).then(function(res) {\r\n          if (res.data.code === 200 && res.status === 200){\r\n            _this.LeftlistData = res.data.rows\r\n            if(_this.pondingId){\r\n              setTimeout(function(){\r\n                _this.getSonVal({id:_this.pondingId})\r\n              },500)\r\n            }\r\n          }\r\n        })\r\n      },\r\n      // 获取级别\r\n      dictType() {\r\n        this.$getUrl('','/system/dict/data/type/kmdn_local_flood_level').then(res=>{\r\n          this.levelData = res.data;\r\n        })\r\n      },\r\n      convert: function() {\r\n        let scaleX = window.innerWidth / 1920\r\n        let scaleY = window.innerHeight / 960\r\n        this.data.transform = 'scale(' + scaleX + ',' + scaleY + ')'\r\n        this.data.transformMap = 'scale(' + 1/scaleX + ',' + 1/scaleY + ')'\r\n        this.$forceUpdate()\r\n      },\r\n      deletePonding(item,index){//删除淹积水\r\n        if(!this.checkPermi(['business:localFloodInfo:remove','*:*:*'])){\r\n          this.$message({ showClose: true, message: '对不起，您没有操作权限', type: \"error\" });\r\n          return false\r\n        }\r\n        let _this=this\r\n        this.isShowDelete=true\r\n        this.deletePondingIndex=index\r\n        MessageBox.confirm('是否确定删除？', '系统提示', {\r\n            confirmButtonText: '确定',\r\n            cancelButtonText: '取消',\r\n            type: 'warning'\r\n          }\r\n        ).then(() => {\r\n          _this.$axios.delete(`/baseplatform/localFloodInfo/${item.id}`)\r\n            .then(res=>{\r\n              if(res.data.code===200&&res.status===200){\r\n                _this.isShowDelete=false\r\n                _this.LeftlistData.splice(index,1)\r\n              }\r\n            })\r\n        })\r\n        .catch(() => {\r\n          _this.isShowDelete=false\r\n        })\r\n      },\r\n      updatePonding(item,index){//修改淹积水\r\n        if(!this.checkPermi(['business:localFloodInfo:edit','*:*:*'])){\r\n          this.$message({ showClose: true, message: '对不起，您没有操作权限', type: \"error\" });\r\n          return false\r\n        }\r\n        this.isUpdatePondingIndex=index\r\n        this.formData={  // 道路积水首页--\r\n            id:item.id,\r\n            latLng: item.longitude+','+item.latidude,  //点位坐标\r\n            floodLevel: item.floodLevel,// 级别选中\r\n            floodLoca: item.floodLoca,  // 点位名称\r\n            longitude: item.longitude,\r\n            latidude: item.latidude,\r\n            flDept: item.flDept, // 排水部门\r\n            flPrincName: item.flPrincName,  // 排水负责人\r\n            flPrincTel:  item.flPrincTel, //排水负责人电话号码\r\n            polDept:item.polDept,  // 管辖大队\r\n            polLeader:item.polLeader// 管辖大队 领导\r\n        },\r\n        this.isUpdatePonding = true\r\n        this.hideRight = true\r\n        this.createReport = true\r\n        this.caseReportRes=false\r\n        this.showImage=false\r\n        this.caseReport=false\r\n        this.searchHistory=false\r\n      },\r\n      goAdd:function(){ // 新增按钮\r\n        this.isUpdatePonding=false\r\n        this.formData={  // 道路积水首页--\r\n          latLng: '',  //点位坐标\r\n          floodLevel: '',// 级别选中\r\n          floodLoca: '',  // 点位名称\r\n          longitude: '',\r\n          latidude: '',\r\n          flDept: '', // 排水部门\r\n          flPrincName: '',  // 排水负责人\r\n          flPrincTel: '', //排水负责人电话号码\r\n          polDept:'',  // 管辖大队\r\n          polLeader:''// 管辖大队 领导\r\n        },\r\n        this.hideRight = true\r\n        this.createReport = true\r\n        this.caseReportRes=false\r\n        this.showImage=false\r\n        this.caseReport=false\r\n        this.searchHistory=false\r\n      },\r\n      stepToIndex:function(){\r\n        this.$router.push('/frontend/mapIndex')\r\n      },\r\n\r\n      // 筛选条件全选\r\n      getAllSelect() {\r\n        this.checkList = true\r\n      },\r\n    },\r\n\r\n  }\r\n</script>\r\n<style scoped lang=\"less\">\r\n   /*@import \"../../assets/styles/map.scss\";*/\r\n   .releaseBarInput{\r\n    ::v-deep .el-input--medium .el-input__inner{\r\n       text-align: left !important;\r\n     }\r\n     ::v-deep .el-input-number--medium .el-input-number__increase,::v-deep .el-input-number--medium .el-input-number__decrease{\r\n       display: none !important;\r\n     }\r\n   }\r\n  .fbuSucess{\r\n    height: 220px;\r\n  }\r\n  .fbuSucess,.fabuDiv{\r\n    position: fixed;\r\n    width: 540px;\r\n\r\n    //top: 0;\r\n    //right: 0;\r\n    //left: 0;\r\n    //bottom: 0;\r\n    margin: auto;\r\n    background: #0a1a4e;\r\n    h1{\r\n      background: #057bdf;\r\n      margin: 0;\r\n      color: #fff;\r\n      height: 38px;\r\n      line-height: 38px;\r\n      text-align: center;\r\n      font-size: 14px;\r\n    }\r\n  }\r\n  .fbuSucess{\r\n    background-image: url(\"../../assets/map_image/alertMessageBg.png\");\r\n    background-size: 100% 100%;\r\n    h1{\r\n      background: rgba(0,0,0,0);\r\n      height: 33px;\r\n      line-height: 33px;\r\n      font-size: 18px;\r\n    }\r\n  }\r\n  .fabuDiv{\r\n    color: #fff;\r\n    //min-height: 490px;\r\n    .fabuDiv_con{\r\n      display: flex;\r\n      height: 360px;\r\n      overflow-y: scroll;\r\n      overflow-x: hidden;\r\n      box-sizing: border-box;\r\n      padding:20px;\r\n      border-bottom: 1px dashed #057bdf;\r\n\r\n    }\r\n    .el-checkbox{\r\n      margin-bottom: 10px !important;\r\n      width: 100% !important;\r\n    }\r\n    .el-checkbox-group{\r\n      width: 100%;\r\n      height: auto;\r\n      line-height:normal;\r\n    }\r\n    .fabuDiv_btn{\r\n      display: flex;\r\n      margin-top: 35px;\r\n      justify-content:center;\r\n      span:first-of-type{\r\n        background-image: url(\"../../assets/bottomMenu/16102@2x.png\");\r\n      }\r\n      span{\r\n        display: inline-block;\r\n        color: #fff;\r\n        width: 85px;\r\n        height: 32px;\r\n        line-height: 32px;\r\n        background-size: 100% 100%;\r\n        text-align: center;\r\n      }\r\n      span:last-of-type{\r\n        margin-left: 14px;\r\n        background-image: url(\"../../assets/bottomMenu/16101@2x.png\");\r\n      }\r\n    }\r\n  }\r\n  .fabuDiv1{\r\n    background-image: url(\"../../assets/map_image/ponding/releaseBg.png\");\r\n    background-size: 100% 100%;\r\n    h1{\r\n      background: rgba(0,0,0,0);\r\n      height: 52px;\r\n      line-height: 52px;\r\n      font-size: 18px;\r\n    }\r\n  }\r\n  .fabuDiv2{\r\n    left: 50%;\r\n    top: 50%;\r\n    transform: translate(-50%, -50%);\r\n    padding-bottom: 30px\r\n  }\r\n  .buttomClassActive{\r\n    background-image:url('../../assets/map_image/ponding/bottomButton.png')!important;\r\n    background-color: rgba(0,0,0, 0)!important;\r\n  }\r\n  .pointView{\r\n    position: fixed;\r\n    z-index: 20;\r\n    width: 426px;\r\n    height: 774px;\r\n    left: 40px;\r\n    top: 128px;\r\n    background-image: url(\"../../assets/map_image/ponding/pointBg.png\");\r\n  }\r\n  .searchView{\r\n    margin-top: 15px;\r\n    float: left;\r\n    overflow: hidden;\r\n  }\r\n  .searchView .inputView{\r\n    width: 178px;\r\n    border: 1px solid #29B3FF;\r\n    font-size: 14px;\r\n    float: left;\r\n    margin-left: 10px;\r\n    border-right: 0px;\r\n  }\r\n  .searchIcon{\r\n    background-image: url(\"../../assets/image/组 16037@2x.png\");\r\n    background-size: 20px;\r\n    background-repeat: no-repeat;\r\n    background-position: center;\r\n    width: 34px;\r\n    height: 33px;\r\n    background-color: #29B3FF;\r\n    float: left;\r\n    border-radius: 0px 3px 3px 0px;\r\n    margin-left: -1px;\r\n  }\r\n  .searchView .selectView{\r\n    width: 90px !important;\r\n    height: 32px;\r\n    border-radius: 3px;\r\n    margin-top: 1px;\r\n    margin-left: 10px;\r\n  }\r\n  .goAdd{\r\n    width: 67px;\r\n    height: 32px ;\r\n    background-image: url(\"../../assets/map_image/ponding/addBg.png\");\r\n    background-size: 100%;\r\n    -webkit-box-sizing: border-box;\r\n    -moz-box-sizing: border-box;\r\n    box-sizing: border-box;\r\n    float: left;\r\n    text-align: center;\r\n    color: white;\r\n    line-height: 32px;\r\n    font-size: 14px;\r\n    margin-top: 0px ;\r\n    margin-left: 10px;\r\n    cursor: pointer;\r\n    background-repeat: no-repeat;\r\n    background-size: 100% 100%;\r\n  }\r\n  .goAddGray{\r\n     cursor: not-allowed;\r\n     width: 67px;\r\n     height: 32px ;\r\n     background-color: #cccccc;\r\n     color: #fff;\r\n     -webkit-box-sizing: border-box;\r\n     -moz-box-sizing: border-box;\r\n     box-sizing: border-box;\r\n     float: left;\r\n     text-align: center;\r\n     /*color: white;*/\r\n     line-height: 32px;\r\n     font-size: 14px;\r\n     margin-top: 0px ;\r\n     margin-left: 10px;\r\n     background-repeat: no-repeat;\r\n     background-size: 100% 100%;\r\n   }\r\n  .pondingContentView{\r\n    width: 406px;\r\n    float: left;\r\n    //height: 670px;\r\n    height: 626px;\r\n    overflow-y: auto;\r\n    margin-left: 10px;\r\n    margin-top: 10px;\r\n    overflow-x: hidden;\r\n  }\r\n  .pondingContent:last-child{\r\n    margin-bottom: 0px;\r\n  }\r\n  .pondingContent{\r\n    width: 406px;\r\n    height: 168px;\r\n    float: left;\r\n    background-color: rgba(41, 179, 255, 0.21);\r\n    margin-bottom: 8px;\r\n    -webkit-box-sizing: border-box;\r\n    -moz-box-sizing: border-box;\r\n    box-sizing: border-box;\r\n    padding-left: 8px;\r\n    position: relative;\r\n  }\r\n  .pondingContent div{\r\n    overflow: hidden;\r\n    text-overflow: ellipsis;\r\n    white-space: nowrap;\r\n  }\r\n  .pondingContent .titleView{\r\n    width: 100%;\r\n    height: 60px;\r\n    background-repeat: no-repeat;\r\n    background-position: left top;\r\n    background-image: url(\"../../assets/map_image/ponding/pondingIcon.png\");\r\n    float: left;\r\n    margin-top: 20px;\r\n    -webkit-box-sizing: border-box;\r\n    -moz-box-sizing: border-box;\r\n    box-sizing: border-box;\r\n    padding-left: 58px;\r\n  }\r\n  .pondingContent .titleView .title{\r\n    width: 100%;\r\n    font-size: 17px;\r\n    font-weight: bold;\r\n    line-height: 20px;\r\n    color: #29B3FF;\r\n  }\r\n   .pondingContent .titleView .title  .title-con{\r\n     display: inline-block;\r\n     width: 71%;\r\n     overflow: hidden;\r\n     white-space: nowrap;\r\n     text-overflow: ellipsis;\r\n  }\r\n  .pondingContent .titleView .level{\r\n    width: 100%;\r\n    font-size: 14px;\r\n    color: white;\r\n    height: 36px;\r\n    background-repeat: no-repeat;\r\n    background-position: center left;\r\n    line-height: 30px;\r\n    padding-left: 18px;\r\n  }\r\n  .pondingContent .titleView .level.level1{\r\n    background-image: url(\"../../assets/map_image/ponding/level1.png\");\r\n  }\r\n  .pondingContent .titleView .level.level2{\r\n    background-image: url(\"../../assets/map_image/ponding/level2.png\");\r\n  }\r\n  .pondingContent .titleView .level.level3{\r\n    background-image: url(\"../../assets/map_image/ponding/level3.png\");\r\n  }\r\n  .pondingContent .contentView{\r\n    width: 100%;\r\n    float: left;\r\n    overflow: hidden;\r\n  }\r\n  .pondingContent .contentView .textBar{\r\n    width: 100%;\r\n    float: left;\r\n    margin-bottom: 14px;\r\n    font-size: 14px;\r\n    color: rgba(255, 255, 255, 0.71);\r\n  }\r\n  .pondingContent .contentView .textBar div{\r\n    float: left;\r\n    width: 180px;\r\n    text-align: left;\r\n  }\r\n  .surveyView{\r\n    position: absolute;\r\n    z-index: 999;\r\n    width: 426px;\r\n    height: 180px;\r\n    right: 36px;\r\n    top: 128px;\r\n    background-image: url(\"../../assets/map_image/ponding/surveyBg.png\");\r\n  }\r\n  .surveyPointView{\r\n    width: 142px;\r\n    float: left;\r\n    overflow: hidden;\r\n    margin-top: 25px;\r\n    font-size: 14px;\r\n  }\r\n  .surveyPointView .des{\r\n    color: white;\r\n    text-align: center;\r\n    width: 100%;\r\n    margin-top: 5px;\r\n    float: left;\r\n  }\r\n  .surveyPoint{\r\n    width: 100%;\r\n    height: 78px;\r\n    float: left;\r\n    background-position: center top;\r\n    background-repeat: no-repeat;\r\n    text-align: center;\r\n    font-size: 28px;\r\n    line-height: 50px;\r\n    font-weight: bold;\r\n  }\r\n  .surveyPoint.total{\r\n    background-image: url(\"../../assets/map_image/ponding/total.png\");\r\n    color: #29B3FF;\r\n  }\r\n  .surveyPoint.now{\r\n    background-image: url(\"../../assets/map_image/ponding/now.png\");\r\n    color: #44FFFD;\r\n  }\r\n  .surveyPoint.check{\r\n    background-image: url(\"../../assets/map_image/ponding/check.png\");\r\n    color: #FFE478;\r\n  }\r\n  .rankView{\r\n    position: absolute;\r\n    z-index: 999;\r\n    width: 426px;\r\n    height: 248px;\r\n    right: 36px;\r\n    top: 318px;\r\n    background-image: url(\"../../assets/map_image/ponding/rankBg.png\");\r\n  }\r\n  .rankView .faultTable {\r\n    width: 407px;\r\n    height: 192px;\r\n    margin-left: 10px;\r\n    margin-top: 10px;\r\n  }\r\n  .situationView{\r\n    position: fixed;\r\n    z-index: 999;\r\n    width: 426px;\r\n    height: 347px;\r\n    right: 36px;\r\n    top: 576px;\r\n    background-image: url(\"../../assets/map_image/ponding/situationBg.png\");\r\n  }\r\n  .situationView .faultTable {\r\n    width: 407px;\r\n    height: 288px;\r\n    margin-left: 10px;\r\n    margin-top: 10px;\r\n  }\r\n  .AllbottomButtonView{\r\n    width:300px;\r\n    position: fixed;\r\n    z-index: 999;\r\n    right: 0px;\r\n    left: 0;\r\n    margin: 0 auto;\r\n    bottom: 63px;\r\n    display: flex;\r\n    .bottomButtonView{\r\n      margin-right: 20px;\r\n      /*background-image: url(\"../../assets/map_image/ponding/bottomButton.png\");*/\r\n    }\r\n    .bottomButtonViewActive{\r\n      margin-right: 20px;\r\n      background-image: url(\"../../assets/map_image/ponding/bottomButton.png\");\r\n    }\r\n    .bottomButtonViewGray{\r\n      margin-right: 20px;\r\n      background-color: #cccccc;\r\n      color: #fff;\r\n    }\r\n    .bottomButtonView1, .bottomButtonView{\r\n      width: 140px;\r\n      height: 40px;\r\n      //cursor: pointer;\r\n      background-size: 100% 100%;\r\n      text-align: center;\r\n      font-size: 14px;\r\n      color: white;\r\n      line-height: 40px;\r\n\r\n    }\r\n    .bottomButtonView1{\r\n      background-color: #cccccc;\r\n      color: #fff;\r\n      border-radius: 4px;\r\n    }\r\n  }\r\n  /*.bottomButtonView{*/\r\n  /*  position: fixed;*/\r\n  /*  z-index: 999;*/\r\n  /*  width: 130px;*/\r\n  /*  height: 40px;*/\r\n  /*  right: 895px;*/\r\n  /*  bottom: 63px;*/\r\n  /*  text-align: center;*/\r\n  /*  font-size: 14px;*/\r\n  /*  color: white;*/\r\n  /*  line-height: 40px;*/\r\n  /*  background-image: url(\"../../assets/map_image/ponding/bottomButton.png\");*/\r\n  /*}*/\r\n  .pondingInputView{\r\n    position: absolute;\r\n    z-index: 999;\r\n    width: 426px;\r\n    height: 774px;\r\n    right: 36px;\r\n    top: 128px;\r\n    background-image: url(\"../../assets/map_image/ponding/smallInputBg.png\");\r\n  }\r\n  .pondingInputView .selectBar{\r\n    margin-left: 0px;\r\n    margin-right: 0px;\r\n    margin-bottom: 20px;\r\n  }\r\n  .pondingInputView .selectName{\r\n    width: 130px;\r\n  }\r\n  .pondingInputView .selectView{\r\n    width: 262px !important;\r\n    margin-left: 0px;\r\n  }\r\n  .pondingInputView .inputView{\r\n    width: 262px;\r\n  }\r\n  .selectPoint{\r\n    width: 28px;\r\n    height: 32px;\r\n    float: left;\r\n    margin-left: 8px;\r\n    background-image: url(\"../../assets/map_image/ponding/selectPoint.png\");\r\n  }\r\n  .address{\r\n    background-position: 5px center;\r\n    background-image: url(\"../../assets/map_image/ponding/address.png\");\r\n    background-repeat: no-repeat;\r\n    padding-left: 25px;\r\n  }\r\n  .formButtonView{\r\n    width: 100%;\r\n    display: flex;\r\n    justify-content: center;\r\n    margin-top: 60px;\r\n    div{\r\n      width: 85px;\r\n      height: 32px;\r\n      line-height: 32px;\r\n      text-align: center;\r\n      font-size: 14px;\r\n      color: #fff;\r\n      cursor: pointer;\r\n      background-repeat: no-repeat;\r\n      background-size: 100% 100%;\r\n    }\r\n\r\n    div:first-of-type{\r\n      background-image: url(\"../../assets/bottomMenu/16102@2x.png\");\r\n      margin-right: 10px;\r\n    }\r\n    div:last-of-type{\r\n      background-image: url(\"../../assets/bottomMenu/16101@2x.png\");\r\n    }\r\n    .sureBTnBg1{\r\n      width: 85px;\r\n      //height: 32px;\r\n      //line-height: 32px;\r\n      border: 0!important;\r\n      text-align: center;\r\n      font-size: 14px;\r\n      color: #fff;\r\n      cursor: pointer;\r\n      background-repeat: no-repeat;\r\n      background-size: 100% 100%;\r\n      background-color: transparent!important;\r\n      background-image: url(\"../../assets/bottomMenu/16101@2x.png\")!important;\r\n    }\r\n    .sureBTnBg{\r\n      background-image: url(\"../../assets/bottomMenu/16101@2x.png\");\r\n      margin-right: 10px;\r\n    }\r\n  }\r\n  .largeMap{\r\n    /*width: 1830px;*/\r\n    /*height: 780px;*/\r\n    /*position: absolute;*/\r\n    /*top: 130px;*/\r\n    /*left: 40px;*/\r\n    /*overflow: hidden;*/\r\n    position: absolute;\r\n    width: 100%;\r\n    height: 100%;\r\n    z-index: -1;\r\n  }\r\n  .pondingContent:hover{\r\n    background-color: rgba(41,179,255,0.7);\r\n  }\r\n  .selected{\r\n    background-color: rgba(41,179,255,0.7);\r\n  }\r\n  .isGetMapPoint{\r\n    background-color: #056279\r\n  }\r\n  .time{\r\n    float: right;\r\n    width: 20px;\r\n    height: 20px;\r\n    cursor: pointer;\r\n    background-image: url(\"../../assets/map_image/ponding/time.png\");\r\n    margin-right: 20px;\r\n    margin-left: 10px;\r\n  }\r\n  .timeActives{\r\n    background-image: url(\"../../assets/map_image/ponding/timeA.png\");\r\n  }\r\n  .upload{\r\n    float: right;\r\n    width: 20px;\r\n    height: 20px;\r\n    cursor: pointer;\r\n    background-image: url(\"../../assets/map_image/ponding/upload.png\");\r\n  }\r\n  .uploadActive{\r\n    background-image: url(\"../../assets/map_image/ponding/uploadA.png\");\r\n  }\r\n   .update{\r\n     float: right;\r\n     width: 20px;\r\n     height: 20px;\r\n     cursor: pointer;\r\n     background-image: url(\"../../assets/map_image/ponding/update.png\");\r\n   }\r\n   .updateActive{\r\n     background-image: url(\"../../assets/map_image/ponding/updateA.png\");\r\n   }\r\n   .delete{\r\n     float: right;\r\n     width: 20px;\r\n     height: 20px;\r\n     cursor: pointer;\r\n     background-image: url(\"../../assets/map_image/ponding/delete.png\");\r\n     margin-right: 20px;\r\n     margin-left: 10px;\r\n   }\r\n   .deleteActive{\r\n     background-image: url(\"../../assets/map_image/ponding/deleteA.png\");\r\n   }\r\n  .situationReportView{\r\n    position: fixed;\r\n    z-index: 999;\r\n    width: 426px;\r\n    height: 783px;\r\n    right: 36px;\r\n    top: 128px;\r\n    background-image: url(\"../../assets/map_image/ponding/situationReportBg.png\");\r\n    background-size: 100% 100%;\r\n  }\r\n   .situationReportViewA{\r\n     position: fixed;\r\n     z-index: 999;\r\n     width: 426px;\r\n     height: 390px;\r\n     right: 36px;\r\n     top: 128px;\r\n     background-image: url(\"../../assets/map_image/ponding/bj.png\");\r\n     background-size: 100% 100%;\r\n   }\r\n  .countDown{\r\n    font-size: 14px;\r\n    margin-left: 68px;\r\n    position: absolute;\r\n    right: 10px;\r\n  }\r\n  .situationReportContent{\r\n    width: 100%;\r\n    height: 400px;\r\n    -webkit-box-sizing: border-box;\r\n    -moz-box-sizing: border-box;\r\n    box-sizing: border-box;\r\n    padding-top: 20px;\r\n    float: left;\r\n  }\r\n  .situationReportContent .selectBar{\r\n    width: 415px;\r\n    margin-bottom: 5px;\r\n    margin-left: 20px;\r\n  }\r\n  .situationReportContent .selectBar .selectName{\r\n    width: 70px;\r\n    font-size: 14px;\r\n  }\r\n  .situationReportContent .selectBar .el-radio{\r\n    margin-right: 60px;\r\n  }\r\n  .situationReportContent .selectBar .el-radio:last-child{\r\n    margin-right: 0px;\r\n  }\r\n  .situationUpload{\r\n    width: 32px;\r\n    height: 32px;\r\n    float: left;\r\n    background-repeat: no-repeat;\r\n    background-position: center;\r\n    background-image: url(\"../../assets/map_image/ponding/situationUpload.png\");\r\n  }\r\n  .picView{\r\n    width: 335px;\r\n    height: auto;\r\n    overflow: hidden;\r\n  }\r\n  .picView .img{\r\n    width: 158px;\r\n    height: 79px;\r\n    background-color: #3DBAFF;\r\n    text-align: center;\r\n    line-height: 79px;\r\n    color: white;\r\n    margin-right: 9px;\r\n    float: left;\r\n    margin-bottom: 15px;\r\n  }\r\n  .picViewerView{\r\n    position: fixed;\r\n    z-index: 999;\r\n    width: 886px;\r\n    height: 212px;\r\n    left: 476px;\r\n    bottom: 58px;\r\n    background-image: url(\"../../assets/map_image/ponding/picViewerBg.png\");\r\n  }\r\n  .picViewerTitle{\r\n    float: left;\r\n    width: 100%;\r\n    height: 40px;\r\n    line-height: 40px;\r\n    font-size: 16px;\r\n    color: #29B3FF;\r\n    text-align: left;\r\n    -webkit-box-sizing: border-box;\r\n    -moz-box-sizing: border-box;\r\n    box-sizing: border-box;\r\n    padding-left: 30px;\r\n  }\r\n  .closeButton{\r\n    width: 18px;\r\n    height: 18px;\r\n    position: absolute;\r\n    background-image: url(\"../../assets/map_image/judge/closeButton.png\");\r\n    margin-top: -29px;\r\n    margin-left: 830px;\r\n  }\r\n  .picViewerContent{\r\n    width: 100%;\r\n    float: left;\r\n    margin-top: 12px;\r\n    padding-left: 38px;\r\n    -webkit-box-sizing: border-box;\r\n    -moz-box-sizing: border-box;\r\n    box-sizing: border-box;\r\n    overflow: hidden;\r\n    height: 130px;\r\n  }\r\n  .picViewerContent .img{\r\n    width: 261px;\r\n    height: 130px;\r\n    float: left;\r\n    margin-right: 14px;\r\n    line-height: 130px;\r\n    background-color: #3DBAFF;\r\n    text-align: center;\r\n    color: white;\r\n  }\r\n  .addressDes{\r\n    height: 40px;\r\n    line-height: 40px;\r\n    width: 100%;\r\n    font-size: 14px;\r\n    -webkit-box-sizing: border-box;\r\n    -moz-box-sizing: border-box;\r\n    box-sizing: border-box;\r\n    padding-left: 32px;\r\n    background-repeat: no-repeat;\r\n    background-position: 10px center;\r\n    background-image: url(\"../../assets/map_image/ponding/pondingCar.png\");\r\n    color: white;\r\n  }\r\n  .situationReportView .faultTable {\r\n    width: 407px;\r\n    height: 704px;\r\n    margin-left: 10px;\r\n  }\r\n   .situationReportViewA .faultTable {\r\n     width: 407px;\r\n     height: 350px;\r\n     margin-left: 10px;\r\n     overflow: hidden;\r\n   }\r\n  .dot{\r\n    margin-right: 5px;\r\n    width: 7px;\r\n    height: 7px;\r\n    border-radius: 50%;\r\n    display: inline-block;\r\n    position: relative;\r\n    top: -1px;\r\n  }\r\n  .dot_blue{\r\n    background: #29B3FF;\r\n  }\r\n  .dot_yellow{\r\n    background: #FFE478;\r\n  }\r\n  .dot_red{\r\n    background: #F6795B;\r\n  }\r\n  .picButton{\r\n    width: 20px;\r\n    height: 16px;\r\n    background-image: url(\"../../assets/map_image/ponding/picButton.png\");\r\n    margin: 0 auto;\r\n    margin-top: 8px;\r\n  }\r\n  .infoSureView{\r\n    width: 555px;\r\n    height: 294px;\r\n    position: fixed;\r\n    z-index: 9999;\r\n    top: 50%;\r\n    left: 50%;\r\n    background-image: url(\"../../assets/map_image/ponding/infoSure.png\");\r\n    margin-left: -277.5px;\r\n    margin-top: -147px;\r\n  }\r\n  .infoSureContent{\r\n    width: 100%;\r\n    padding-top: 115px;\r\n    background-image: url(\"../../assets/map_image/ponding/surePic.png\");\r\n    background-repeat: no-repeat;\r\n    background-position: center 15px;\r\n    float: left;\r\n    text-align: center;\r\n    font-size: 16px;\r\n    line-height: 30px;\r\n    color: white;\r\n    margin-bottom: 10px;\r\n  }\r\n  .releaseView{\r\n    width: 551px;\r\n    height: 440px;\r\n    position: fixed;\r\n    z-index: 9999;\r\n    top: 291px;\r\n    left: 685px;\r\n    background-image: url(\"../../assets/map_image/ponding/releaseBg.png\");\r\n    background-size: 100% 100%;\r\n    background-repeat: no-repeat;\r\n  }\r\n  .releaseView .contentTitle{\r\n    text-align: left;\r\n    line-height: 40px;\r\n    height: 40px;\r\n    padding-left: 30px;\r\n  }\r\n   .contentTitle{\r\n     position: relative;\r\n     .conBtn{\r\n       background-image: url(\"../../assets/map_image/ponding/bottomButton.png\");\r\n       background-size: 100% 100%;\r\n       position: absolute;\r\n       right: 6px;\r\n       top: 3px;\r\n       color: #fff;\r\n       height: 28px;\r\n       line-height: 28px;\r\n       font-size: 14px;\r\n       padding: 0 10px;\r\n       cursor: pointer;\r\n     }\r\n   }\r\n  .releaseBar{\r\n    width: 100%;\r\n    overflow: hidden;\r\n    -webkit-box-sizing: border-box;\r\n    -moz-box-sizing: border-box;\r\n    box-sizing: border-box;\r\n    padding-left: 24px;\r\n    color: white;\r\n    font-size: 14px;\r\n    line-height: 40px;\r\n    float: left;\r\n    display: flex;\r\n  }\r\n  .releaseBar .left{\r\n    width: 90px;\r\n    height: 100%;\r\n    min-height: 40px;\r\n    float: left;\r\n  }\r\n  .releaseBar .right{\r\n    //width: 450px;\r\n    flex: 1;\r\n    font-size: 14px;\r\n    color: white;\r\n    float: left;\r\n    overflow: hidden;\r\n  }\r\n  .releaseBar .right .el-checkbox-group{\r\n    height: auto;\r\n    //line-height: 40px;\r\n    line-height: 22px;\r\n    width: 100%;\r\n    overflow: hidden;\r\n  }\r\n  .releaseBar .right .el-checkbox-group .el-checkbox{\r\n    width: 100px;\r\n    margin-right: 10px;\r\n  }\r\n  .releaseBar .right .el-radio{\r\n    margin-right: 45px;\r\n  }\r\n  /deep/ .el-textarea__inner{\r\n    line-height: 30px;\r\n    background-color: black;\r\n    color: rgb(8,179,9);\r\n    font-weight: 700;\r\n    font-size: 20px;\r\n  }\r\n  .time:hover .timeContent{\r\n      display: block;\r\n  }\r\n  .timeContent{\r\n    background: #1666c7;\r\n    width: 60px;\r\n    height: 20px;\r\n    text-align: center;\r\n    position: relative;\r\n    margin-right: 2px;\r\n    top: -20px;\r\n    left: -20px;\r\n    font-size: 8px;\r\n    color: rgba(255,255,255,0.7);\r\n    font-weight: unset;\r\n    border-radius: 5px;\r\n    display: none;\r\n  }\r\n   .upload:hover .uploadContent{\r\n     display: block;\r\n   }\r\n   .uploadContent{\r\n     background: #1666c7;\r\n     width: 60px;\r\n     height: 20px;\r\n     text-align: center;\r\n     position: relative;\r\n     margin-right: 2px;\r\n     top: -20px;\r\n     left: -20px;\r\n     font-size: 8px;\r\n     color: rgba(255,255,255,0.7);\r\n     font-weight: unset;\r\n     border-radius: 5px;\r\n     display: none;\r\n   }\r\n   .update:hover .updateContent{\r\n     display: block;\r\n   }\r\n   .updateContent{\r\n     background: #1666c7;\r\n     width: 60px;\r\n     height: 20px;\r\n     text-align: center;\r\n     position: relative;\r\n     margin-right: 2px;\r\n     top: -20px;\r\n     left: -20px;\r\n     font-size: 8px;\r\n     color: rgba(255,255,255,0.7);\r\n     font-weight: unset;\r\n     border-radius: 5px;\r\n     display: none;\r\n   }\r\n   .delete:hover .deleteContent{\r\n     display: block;\r\n   }\r\n   .deleteContent{\r\n     background: #1666c7;\r\n     width: 60px;\r\n     height: 20px;\r\n     text-align: center;\r\n     position: relative;\r\n     margin-right: 2px;\r\n     top: -20px;\r\n     left: -20px;\r\n     font-size: 8px;\r\n     color: rgba(255,255,255,0.7);\r\n     font-weight: unset;\r\n     border-radius: 5px;\r\n     display: none;\r\n   }\r\n</style>\r\n\r\n"},"isError":false}}}],"role":"user"},"invocation_id":"e-03bac67b-78ea-4545-9262-6686e41c22af","author":"my_agent","actions":{"state_delta":{},"artifact_delta":{},"requested_auth_configs":{},"requested_tool_confirmations":{}},"node_info":{"path":"my_agent@1"},"id":"1de6a5ea-81bf-4d79-af44-8bf2fb540efb","timestamp":1785489330.0043178}


id: af63aeef-be39-480c-9665-f3727e6f854b
app_name: my_agent
user_id: codebuddy
session_id: ponding_analysis
invocation_id: e-03bac67b-78ea-4545-9262-6686e41c22af
event_data:
  {"model_version":"deepseek-v4-flash","content":{"parts":[{"text":"文件已完整读取，让我再检查一下新项目中有没有对应的目录结构，以及几个关键依赖组件的情况"},{"function_call":{"id":"call_c35c423ac1f54472b4287acc","args":{"pattern":"**/*ponding*","path":"d:/nzy/workspace_git/Baseplatform-Ui-V3"},"name":"search_files"}},{"function_call":{"id":"call_11ded56dd750401c92527386","args":{"pattern":"**/mapTop*","path":"D:/nzy/workspace_git/baseplatform-ui/src/views"},"name":"search_files"}},{"function_call":{"id":"call_79f4c0ed690940949792a06a","args":{"pattern":"**/largeMap*","path":"D:/nzy/workspace_git/baseplatform-ui/src/views"},"name":"search_files"}},{"function_call":{"id":"call_fe669682e17f4d0282d58f0c","args":{"pattern":"**/largeRightNav*","path":"D:/nzy/workspace_git/baseplatform-ui/src/views"},"name":"search_files"}}],"role":"model"},"partial":false,"finish_reason":"STOP","usage_metadata":{"cached_content_token_count":0,"candidates_token_count":349,"prompt_token_count":67054,"thoughts_token_count":53,"total_token_count":67403},"invocation_id":"e-03bac67b-78ea-4545-9262-6686e41c22af","author":"my_agent","actions":{"state_delta":{},"artifact_delta":{},"requested_auth_configs":{},"requested_tool_confirmations":{}},"node_info":{"path":"my_agent@1"},"long_running_tool_ids":[],"id":"af63aeef-be39-480c-9665-f3727e6f854b","timestamp":1785489330.0253906}


id: b1a8b5cd-aad3-4a7c-9a0a-273162b53a2f
app_name: my_agent
user_id: codebuddy
session_id: ponding_analysis
invocation_id: e-03bac67b-78ea-4545-9262-6686e41c22af
event_data:
  {"content":{"parts":[{"function_response":{"id":"call_c35c423ac1f54472b4287acc","name":"search_files","response":{"content":[{"type":"text","text":"D:\\nzy\\workspace_git\\Baseplatform-Ui-V3\\dist\\assets\\pondingData-C7yQPmDV.css\nD:\\nzy\\workspace_git\\Baseplatform-Ui-V3\\dist\\js\\pondingData-CY8jQVmw.js\nD:\\nzy\\workspace_git\\Baseplatform-Ui-V3\\src\\assets\\map_image\\mapIcon\\ponding.png\nD:\\nzy\\workspace_git\\Baseplatform-Ui-V3\\src\\assets\\map_image\\mapIcon\\ponding.svg\nD:\\nzy\\workspace_git\\Baseplatform-Ui-V3\\src\\assets\\map_image\\mapIcon\\ponding1.png\nD:\\nzy\\workspace_git\\Baseplatform-Ui-V3\\src\\assets\\map_image\\mapIcon\\pondingB.png\nD:\\nzy\\workspace_git\\Baseplatform-Ui-V3\\src\\assets\\map_image\\mapIcon\\pondingB1.png\nD:\\nzy\\workspace_git\\Baseplatform-Ui-V3\\src\\assets\\map_image\\mapIcon\\pondinghalf.png\nD:\\nzy\\workspace_git\\Baseplatform-Ui-V3\\src\\assets\\map_image\\mapIcon\\ponding_half.png\nD:\\nzy\\workspace_git\\Baseplatform-Ui-V3\\src\\assets\\map_image\\ponding\nD:\\nzy\\workspace_git\\Baseplatform-Ui-V3\\src\\assets\\map_image\\ponding\\pondingCar.png\nD:\\nzy\\workspace_git\\Baseplatform-Ui-V3\\src\\assets\\map_image\\ponding\\pondingIcon.png\nD:\\nzy\\workspace_git\\Baseplatform-Ui-V3\\src\\assets\\map_image\\ponding.png\nD:\\nzy\\workspace_git\\Baseplatform-Ui-V3\\src\\assets\\map_image\\pondingA.png\nD:\\nzy\\workspace_git\\Baseplatform-Ui-V3\\src\\assets\\map_image\\pondingEjectWindow.png\nD:\\nzy\\workspace_git\\Baseplatform-Ui-V3\\src\\views\\serviceManage\\pondingData.vue"}],"structuredContent":{"content":"D:\\nzy\\workspace_git\\Baseplatform-Ui-V3\\dist\\assets\\pondingData-C7yQPmDV.css\nD:\\nzy\\workspace_git\\Baseplatform-Ui-V3\\dist\\js\\pondingData-CY8jQVmw.js\nD:\\nzy\\workspace_git\\Baseplatform-Ui-V3\\src\\assets\\map_image\\mapIcon\\ponding.png\nD:\\nzy\\workspace_git\\Baseplatform-Ui-V3\\src\\assets\\map_image\\mapIcon\\ponding.svg\nD:\\nzy\\workspace_git\\Baseplatform-Ui-V3\\src\\assets\\map_image\\mapIcon\\ponding1.png\nD:\\nzy\\workspace_git\\Baseplatform-Ui-V3\\src\\assets\\map_image\\mapIcon\\pondingB.png\nD:\\nzy\\workspace_git\\Baseplatform-Ui-V3\\src\\assets\\map_image\\mapIcon\\pondingB1.png\nD:\\nzy\\workspace_git\\Baseplatform-Ui-V3\\src\\assets\\map_image\\mapIcon\\pondinghalf.png\nD:\\nzy\\workspace_git\\Baseplatform-Ui-V3\\src\\assets\\map_image\\mapIcon\\ponding_half.png\nD:\\nzy\\workspace_git\\Baseplatform-Ui-V3\\src\\assets\\map_image\\ponding\nD:\\nzy\\workspace_git\\Baseplatform-Ui-V3\\src\\assets\\map_image\\ponding\\pondingCar.png\nD:\\nzy\\workspace_git\\Baseplatform-Ui-V3\\src\\assets\\map_image\\ponding\\pondingIcon.png\nD:\\nzy\\workspace_git\\Baseplatform-Ui-V3\\src\\assets\\map_image\\ponding.png\nD:\\nzy\\workspace_git\\Baseplatform-Ui-V3\\src\\assets\\map_image\\pondingA.png\nD:\\nzy\\workspace_git\\Baseplatform-Ui-V3\\src\\assets\\map_image\\pondingEjectWindow.png\nD:\\nzy\\workspace_git\\Baseplatform-Ui-V3\\src\\views\\serviceManage\\pondingData.vue"},"isError":false}}},{"function_response":{"id":"call_11ded56dd750401c92527386","name":"search_files","response":{"content":[{"type":"text","text":"D:\\nzy\\workspace_git\\baseplatform-ui\\src\\views\\map\\mapTop.vue"}],"structuredContent":{"content":"D:\\nzy\\workspace_git\\baseplatform-ui\\src\\views\\map\\mapTop.vue"},"isError":false}}},{"function_response":{"id":"call_79f4c0ed690940949792a06a","name":"search_files","response":{"content":[{"type":"text","text":"D:\\nzy\\workspace_git\\baseplatform-ui\\src\\views\\components\\largeMap.vue"}],"structuredContent":{"content":"D:\\nzy\\workspace_git\\baseplatform-ui\\src\\views\\components\\largeMap.vue"},"isError":false}}},{"function_response":{"id":"call_fe669682e17f4d0282d58f0c","name":"search_files","response":{"content":[{"type":"text","text":"D:\\nzy\\workspace_git\\baseplatform-ui\\src\\views\\components\\largeRightNav.vue\nD:\\nzy\\workspace_git\\baseplatform-ui\\src\\views\\components\\largeRightNavCopy.vue\nD:\\nzy\\workspace_git\\baseplatform-ui\\src\\views\\components\\mixin\\largeRightNav.js"}],"structuredContent":{"content":"D:\\nzy\\workspace_git\\baseplatform-ui\\src\\views\\components\\largeRightNav.vue\nD:\\nzy\\workspace_git\\baseplatform-ui\\src\\views\\components\\largeRightNavCopy.vue\nD:\\nzy\\workspace_git\\baseplatform-ui\\src\\views\\components\\mixin\\largeRightNav.js"},"isError":false}}}],"role":"user"},"invocation_id":"e-03bac67b-78ea-4545-9262-6686e41c22af","author":"my_agent","actions":{"state_delta":{},"artifact_delta":{},"requested_auth_configs":{},"requested_tool_confirmations":{}},"node_info":{"path":"my_agent@1"},"id":"b1a8b5cd-aad3-4a7c-9a0a-273162b53a2f","timestamp":1785489380.3445628}


id: b9e0ced2-85e8-4773-bf87-6785a44097a2
app_name: my_agent
user_id: codebuddy
session_id: ponding_analysis
invocation_id: e-03bac67b-78ea-4545-9262-6686e41c22af
event_data:
  {"model_version":"step-3.7-flash","content":{"parts":[{"text":"很好，新项目中已经有一个 `src/views/serviceManage/pondingData.vue` 文件，让我先看看这个文件是什么情况，同时看一下相关的依赖组件。","thought":true},{"function_call":{"id":"chatcmpl-tool-80d6f2f4e562b59d","args":{"path":"d:/nzy/workspace_git/Baseplatform-Ui-V3/src/views/serviceManage/pondingData.vue","head":80},"name":"read_text_file"}},{"function_call":{"id":"chatcmpl-tool-8f8c9700ec1a9496","args":{"pattern":"**/*alertWindow*","path":"d:/nzy/workspace_git/Baseplatform-Ui-V3"},"name":"search_files"}},{"function_call":{"id":"chatcmpl-tool-96e2f3b37297b56d","args":{"pattern":"**/*mapTop*","path":"d:/nzy/workspace_git/Baseplatform-Ui-V3"},"name":"search_files"}},{"function_call":{"id":"chatcmpl-tool-bfbd64a9de62ad38","args":{"pattern":"**/*largeMap*","path":"d:/nzy/workspace_git/Baseplatform-Ui-V3"},"name":"search_files"}}],"role":"model"},"partial":false,"finish_reason":"STOP","usage_metadata":{"cached_content_token_count":66368,"candidates_token_count":247,"prompt_token_count":68452,"total_token_count":68699},"invocation_id":"e-03bac67b-78ea-4545-9262-6686e41c22af","author":"my_agent","actions":{"state_delta":{},"artifact_delta":{},"requested_auth_configs":{},"requested_tool_confirmations":{}},"node_info":{"path":"my_agent@1"},"long_running_tool_ids":[],"id":"b9e0ced2-85e8-4773-bf87-6785a44097a2","timestamp":1785489380.360487}


id: 9f2cd55c-0fed-4665-916f-94e62d79285a
app_name: my_agent
user_id: codebuddy
session_id: ponding_analysis
invocation_id: e-03bac67b-78ea-4545-9262-6686e41c22af
event_data:
  {"content":{"parts":[{"function_response":{"id":"chatcmpl-tool-80d6f2f4e562b59d","name":"read_text_file","response":{"content":[{"type":"text","text":"<template>\r\n  <bg-and-info title-menu=\"勤务管理\" title-name=\"道路积水\" step-url=\"/frontend/pondingData\">\r\n    <div class=\"placeholder-page\">\r\n      <h2>道路积水</h2>\r\n      <p>页面开发中...</p>\r\n    </div>\r\n  </bg-and-info>\r\n</template>\r\n\r\n<script setup lang=\"ts\">\r\nimport BgAndInfo from '/@/components/Common/bgAndInfo.vue';\r\n</script>\r\n\r\n<style lang=\"less\" scoped>\r\n.placeholder-page {\r\n  display: flex;\r\n  flex-direction: column;\r\n  align-items: center;\r\n  justify-content: center;\r\n  min-height: 400px;\r\n  color: #fff;\r\n  h2 { font-size: 28px; margin-bottom: 16px; }\r\n  p { font-size: 16px; opacity: 0.6; }\r\n}\r\n</style>\r"}],"structuredContent":{"content":"<template>\r\n  <bg-and-info title-menu=\"勤务管理\" title-name=\"道路积水\" step-url=\"/frontend/pondingData\">\r\n    <div class=\"placeholder-page\">\r\n      <h2>道路积水</h2>\r\n      <p>页面开发中...</p>\r\n    </div>\r\n  </bg-and-info>\r\n</template>\r\n\r\n<script setup lang=\"ts\">\r\nimport BgAndInfo from '/@/components/Common/bgAndInfo.vue';\r\n</script>\r\n\r\n<style lang=\"less\" scoped>\r\n.placeholder-page {\r\n  display: flex;\r\n  flex-direction: column;\r\n  align-items: center;\r\n  justify-content: center;\r\n  min-height: 400px;\r\n  color: #fff;\r\n  h2 { font-size: 28px; margin-bottom: 16px; }\r\n  p { font-size: 16px; opacity: 0.6; }\r\n}\r\n</style>\r"},"isError":false}}},{"function_response":{"id":"chatcmpl-tool-8f8c9700ec1a9496","name":"search_files","response":{"content":[{"type":"text","text":"No matches found"}],"structuredContent":{"content":"No matches found"},"isError":false}}},{"function_response":{"id":"chatcmpl-tool-96e2f3b37297b56d","name":"search_files","response":{"content":[{"type":"text","text":"D:\\nzy\\workspace_git\\Baseplatform-Ui-V3\\src\\assets\\map_image\\mapTopDdflBg.png"}],"structuredContent":{"content":"D:\\nzy\\workspace_git\\Baseplatform-Ui-V3\\src\\assets\\map_image\\mapTopDdflBg.png"},"isError":false}}},{"function_response":{"id":"chatcmpl-tool-bfbd64a9de62ad38","name":"search_files","response":{"content":[{"type":"text","text":"No matches found"}],"structuredContent":{"content":"No matches found"},"isError":false}}}],"role":"user"},"invocation_id":"e-03bac67b-78ea-4545-9262-6686e41c22af","author":"my_agent","actions":{"state_delta":{},"artifact_delta":{},"requested_auth_configs":{},"requested_tool_confirmations":{}},"node_info":{"path":"my_agent@1"},"id":"9f2cd55c-0fed-4665-916f-94e62d79285a","timestamp":1785489456.9023044}


id: f6c44068-2f04-4d42-a2bb-3e3427220c78
app_name: my_agent
user_id: codebuddy
session_id: ponding_analysis
invocation_id: e-03bac67b-78ea-4545-9262-6686e41c22af
event_data:
  {"model_version":"sensenova-6.7-flash-lite","content":{"parts":[{"text":"Good, now let me also check what common components exist in the new project.\n","thought":true},{"text":"\n\n让我看看新项目已有的公共组件资源，以及老项目的图片资源情况。\n\n"},{"function_call":{"id":"call_d479a6d8622e468bb29141e5","args":{"path":"d:/nzy/workspace_git/Baseplatform-Ui-V3/src/assets/map_image/ponding"},"name":"list_directory"}},{"function_call":{"id":"call_723aaa406d53430f9dd82963","args":{"path":"d:/nzy/workspace_git/Baseplatform-Ui-V3/src/views/serviceManage"},"name":"list_directory"}},{"function_call":{"id":"call_03a5929f4bdb48938714e3a0","args":{"path":"D:/nzy/workspace_git/baseplatform-ui","pattern":"**/*alertWindow*"},"name":"search_files"}}],"role":"model"},"partial":false,"finish_reason":"STOP","usage_metadata":{"cached_content_token_count":0,"candidates_token_count":167,"prompt_token_count":68887,"total_token_count":69054},"invocation_id":"e-03bac67b-78ea-4545-9262-6686e41c22af","author":"my_agent","actions":{"state_delta":{},"artifact_delta":{},"requested_auth_configs":{},"requested_tool_confirmations":{}},"node_info":{"path":"my_agent@1"},"long_running_tool_ids":[],"id":"f6c44068-2f04-4d42-a2bb-3e3427220c78","timestamp":1785489499.1746163}


id: 7952e287-dc86-413a-bd3c-e44e81fb77b6
app_name: my_agent
user_id: codebuddy
session_id: ponding_analysis
invocation_id: e-03bac67b-78ea-4545-9262-6686e41c22af
event_data:
  {"content":{"parts":[{"function_response":{"id":"call_d479a6d8622e468bb29141e5","name":"list_directory","response":{"content":[{"type":"text","text":"[FILE] addBg.png\n[FILE] address.png\n[FILE] bj.png\n[FILE] bottomButton.png\n[FILE] check.png\n[FILE] delete.png\n[FILE] deleteA.png\n[FILE] infoSure.png\n[FILE] inputBg.png\n[FILE] level1.png\n[FILE] level2.png\n[FILE] level3.png\n[FILE] now.png\n[FILE] picButton.png\n[FILE] picViewerBg.png\n[FILE] pointBg.png\n[FILE] pondingCar.png\n[FILE] pondingIcon.png\n[FILE] rankBg.png\n[FILE] releaseBg.png\n[FILE] rightNavSmall.png\n[FILE] selectPoint.png\n[FILE] situationBg.png\n[FILE] situationReportBg.png\n[FILE] situationUpload.png\n[FILE] smallInputBg.png\n[FILE] surePic.png\n[FILE] surveyBg.png\n[FILE] time.png\n[FILE] timeA.png\n[FILE] total.png\n[FILE] update.png\n[FILE] updateA.png\n[FILE] upload.png\n[FILE] uploadA.png\n[FILE] 组 336.png"}],"structuredContent":{"content":"[FILE] addBg.png\n[FILE] address.png\n[FILE] bj.png\n[FILE] bottomButton.png\n[FILE] check.png\n[FILE] delete.png\n[FILE] deleteA.png\n[FILE] infoSure.png\n[FILE] inputBg.png\n[FILE] level1.png\n[FILE] level2.png\n[FILE] level3.png\n[FILE] now.png\n[FILE] picButton.png\n[FILE] picViewerBg.png\n[FILE] pointBg.png\n[FILE] pondingCar.png\n[FILE] pondingIcon.png\n[FILE] rankBg.png\n[FILE] releaseBg.png\n[FILE] rightNavSmall.png\n[FILE] selectPoint.png\n[FILE] situationBg.png\n[FILE] situationReportBg.png\n[FILE] situationUpload.png\n[FILE] smallInputBg.png\n[FILE] surePic.png\n[FILE] surveyBg.png\n[FILE] time.png\n[FILE] timeA.png\n[FILE] total.png\n[FILE] update.png\n[FILE] updateA.png\n[FILE] upload.png\n[FILE] uploadA.png\n[FILE] 组 336.png"},"isError":false}}},{"function_response":{"id":"call_723aaa406d53430f9dd82963","name":"list_directory","response":{"content":[{"type":"text","text":"[FILE] illegalShoot.vue\n[FILE] pondingData.vue\n[FILE] postManager.vue\n[FILE] schedulingStatistical.vue\n[FILE] schedulingView.vue\n[FILE] serviceIndexDd.vue\n[FILE] workData.vue\n[FILE] workForceManage.vue"}],"structuredContent":{"content":"[FILE] illegalShoot.vue\n[FILE] pondingData.vue\n[FILE] postManager.vue\n[FILE] schedulingStatistical.vue\n[FILE] schedulingView.vue\n[FILE] serviceIndexDd.vue\n[FILE] workData.vue\n[FILE] workForceManage.vue"},"isError":false}}},{"function_response":{"id":"call_03a5929f4bdb48938714e3a0","name":"search_files","response":{"content":[{"type":"text","text":"D:\\nzy\\workspace_git\\baseplatform-ui\\src\\views\\components\\alertWindow.vue"}],"structuredContent":{"content":"D:\\nzy\\workspace_git\\baseplatform-ui\\src\\views\\components\\alertWindow.vue"},"isError":false}}}],"role":"user"},"invocation_id":"e-03bac67b-78ea-4545-9262-6686e41c22af","author":"my_agent","actions":{"state_delta":{},"artifact_delta":{},"requested_auth_configs":{},"requested_tool_confirmations":{}},"node_info":{"path":"my_agent@1"},"id":"7952e287-dc86-413a-bd3c-e44e81fb77b6","timestamp":1785489509.7462833}


id: a4e7d193-5425-4956-9ee1-e77fafe5b2a5
app_name: my_agent
user_id: codebuddy
session_id: ponding_analysis
invocation_id: e-03bac67b-78ea-4545-9262-6686e41c22af
event_data:
  {"model_version":"astron-code-latest","content":{"parts":[{"text":"\n"},{"function_call":{"id":"call_369d524cbd4f4f3a896c1bcb","args":{"path":"d:/nzy/workspace_git/Baseplatform-Ui-V3","pattern":"**/MapContainer*"},"name":"search_files"}},{"function_call":{"id":"call_ff6c3bf0ff22410199e0ac13","args":{"path":"d:/nzy/workspace_git/Baseplatform-Ui-V3","pattern":"**/bgAndInfo*"},"name":"search_files"}}],"role":"model"},"partial":false,"finish_reason":"STOP","usage_metadata":{"cached_content_token_count":0,"candidates_token_count":105,"prompt_token_count":69432,"total_token_count":69537},"invocation_id":"e-03bac67b-78ea-4545-9262-6686e41c22af","author":"my_agent","actions":{"state_delta":{},"artifact_delta":{},"requested_auth_configs":{},"requested_tool_confirmations":{}},"node_info":{"path":"my_agent@1"},"long_running_tool_ids":[],"id":"a4e7d193-5425-4956-9ee1-e77fafe5b2a5","timestamp":1785489537.3330653}


id: d18e08b6-27be-4b41-8787-62f9f105bdc8
app_name: my_agent
user_id: codebuddy
session_id: ponding_analysis
invocation_id: e-03bac67b-78ea-4545-9262-6686e41c22af
event_data:
  {"content":{"parts":[{"function_response":{"id":"call_369d524cbd4f4f3a896c1bcb","name":"search_files","response":{"content":[{"type":"text","text":"D:\\nzy\\workspace_git\\Baseplatform-Ui-V3\\dist\\assets\\MapContainer-B31QLfKG.css\nD:\\nzy\\workspace_git\\Baseplatform-Ui-V3\\dist\\js\\MapContainer-DnyGzRaZ.js\nD:\\nzy\\workspace_git\\Baseplatform-Ui-V3\\dist\\js\\MapContainer-DnyGzRaZ.js.gz\nD:\\nzy\\workspace_git\\Baseplatform-Ui-V3\\src\\components\\TumengIndex\\MapContainer.vue"}],"structuredContent":{"content":"D:\\nzy\\workspace_git\\Baseplatform-Ui-V3\\dist\\assets\\MapContainer-B31QLfKG.css\nD:\\nzy\\workspace_git\\Baseplatform-Ui-V3\\dist\\js\\MapContainer-DnyGzRaZ.js\nD:\\nzy\\workspace_git\\Baseplatform-Ui-V3\\dist\\js\\MapContainer-DnyGzRaZ.js.gz\nD:\\nzy\\workspace_git\\Baseplatform-Ui-V3\\src\\components\\TumengIndex\\MapContainer.vue"},"isError":false}}},{"function_response":{"id":"call_ff6c3bf0ff22410199e0ac13","name":"search_files","response":{"content":[{"type":"text","text":"D:\\nzy\\workspace_git\\Baseplatform-Ui-V3\\dist\\assets\\bgAndInfo-uFJLpA6i.css\nD:\\nzy\\workspace_git\\Baseplatform-Ui-V3\\dist\\assets\\bgAndInfo-uFJLpA6i.css.gz\nD:\\nzy\\workspace_git\\Baseplatform-Ui-V3\\dist\\js\\bgAndInfo-87vnHx5p.js\nD:\\nzy\\workspace_git\\Baseplatform-Ui-V3\\src\\components\\Common\\bgAndInfo.vue"}],"structuredContent":{"content":"D:\\nzy\\workspace_git\\Baseplatform-Ui-V3\\dist\\assets\\bgAndInfo-uFJLpA6i.css\nD:\\nzy\\workspace_git\\Baseplatform-Ui-V3\\dist\\assets\\bgAndInfo-uFJLpA6i.css.gz\nD:\\nzy\\workspace_git\\Baseplatform-Ui-V3\\dist\\js\\bgAndInfo-87vnHx5p.js\nD:\\nzy\\workspace_git\\Baseplatform-Ui-V3\\src\\components\\Common\\bgAndInfo.vue"},"isError":false}}}],"role":"user"},"invocation_id":"e-03bac67b-78ea-4545-9262-6686e41c22af","author":"my_agent","actions":{"state_delta":{},"artifact_delta":{},"requested_auth_configs":{},"requested_tool_confirmations":{}},"node_info":{"path":"my_agent@1"},"id":"d18e08b6-27be-4b41-8787-62f9f105bdc8","timestamp":1785489713.489318}


id: 834b82e8-ae6b-44fa-9b6c-4ab5efee02b9
app_name: my_agent
user_id: codebuddy
session_id: ponding_analysis
invocation_id: e-03bac67b-78ea-4545-9262-6686e41c22af
event_data:
  {"model_version":"deepseek-v4-flash","content":{"parts":[{"text":"太好了，我已经收集了所有必要的信息。现在输出完整的分析报告。\n\n---\n\n## 📋 道路积水页面（pondingData.vue）迁移分析报告\n\n---\n\n### 一、文件基本信息\n\n| 项目 | 路径 |\n|------|------|\n| **老项目（Vue2）** | `D:\\nzy\\workspace_git\\baseplatform-ui\\src\\views\\ponding\\pondingData.vue` |\n| **新项目占位文件** | `D:\\nzy\\workspace_git\\Baseplatform-Ui-V3\\src\\views\\serviceManage\\pondingData.vue` |\n| **新项目目标路径** | `src/views/serviceManage/pondingData.vue`（已有占位文件，需替换） |\n| **老项目代码行数** | **约 1260 行**（template 770 行 + script 490 行 + style 大量） |\n| **新项目当前** | 仅 20 行占位页面，内容为\"页面开发中...\" |\n\n---\n\n### 二、页面整体布局结构（ASCII 简图）\n\n```\n┌─────────────────────────────────────────────────────────────────────┐\n│  [mapTop 组件] 顶部导航栏（面包屑+标题栏）                          │  y: 0\n├─────────────────────────────────────────────────────────────────────┤\n│                                                                    │\n│  ┌──────────┐                          ┌────────────────────────┐  │\n│  │ 左侧面板  │                          │  右上：概况面板        │  │  y: 128\n│  │ 426x774   │                          │  426x180               │  │\n│  │ left:40   │                          │  right:36              │  │\n│  │           │                          ├────────────────────────┤  │\n│  │ 道路积水  │                          │  积水次数排名          │  │  y: 318\n│  │ 点位列表  │                          │  426x248               │  │\n│  │           │                          ├────────────────────────┤  │\n│  │ 搜索栏    │                          │  各大队积水情况        │  │  y: 576\n│  │ 2个下拉   │                          │  426x347               │  │\n│  │ 1个搜索框 │                          └────────────────────────┘  │\n│  │ +新增按钮 │                                                      │\n│  │           │                          ┌────────────────────────┐  │\n│  │ 列表卡片  │                          │  [底部按钮栏]          │  │  y: 897\n│  │ 滚动列表  │                          │  发布巡查/发布诱导屏    │  │\n│  └──────────┘                          └────────────────────────┘  │\n│                                                                    │\n│  [largeMap 全屏地图背景 - z-index: -1]                              │\n│  [largeRightNav 右侧导航控制条]                                     │\n│  [alertWindow 告警弹窗组件]                                         │\n└─────────────────────────────────────────────────────────────────────┘\n```\n\n**页面定位：** 地图大屏类页面，设计稿 1920×960，有 transform scale 自适应缩放。\n\n---\n\n### 三、所有面板/区块详解\n\n#### 1️⃣ 左侧面板（`pointView`）— 道路积水点位\n- **位置：** fixed，left: 40px，top: 128px，宽 426px，高 774px\n- **背景图：** `ponding/pointBg.png`\n- **内容：**\n  - 标题：\"道路积水点位\"\n  - **搜索筛选栏（两行）**\n    - 第一行：大队下拉（`el-select`）+ 巡查状态下拉（全部/未巡查/已巡查）\n    - 第二行：积水状态下拉（全部/正常/积水）+ 关键字输入框 + 搜索按钮 + 新增按钮\n  - **点位列表**（可滚动，约 626px 高）\n    - 每项 168px 高卡片，蓝色半透明背景\n    - 包含：点位名称（标题） + 级别标签（一级/二级/三级，带颜色图标）+ 已巡查/未巡查标签\n    - 字段：管辖大队、辖区大队领导、排水负责人、积水次数、排水负责人电话\n    - 右上角操作图标：巡查历史（时钟图标）、巡查（上传图标）\n    - 右下角操作图标：删除、修改\n\n#### 2️⃣ 右上概况面板（`surveyView`）\n- **位置：** right: 36px，top: 128px，426x180\n- **背景图：** `ponding/surveyBg.png`\n- **内容：** 三个统计数字卡片\n  - 点位总数（蓝色 #29B3FF）\n  - 在淹点位（青色 #44FFFD）\n  - 待查点位（黄色 #FFE478）\n  - 右上角\"导出汇总表\"按钮\n\n#### 3️⃣ 积水次数排名表（`rankView`）\n- **位置：** right: 36px，top: 318px，426x248\n- **背景图：** `ponding/rankBg.png`\n- **表格列：** 排名 | 点位名称（带 el-popover 悬停提示） | 所属大队 | 积水次数\n\n#### 4️⃣ 各大队积水情况表（`situationView`）\n- **位置：** right: 36px，top: 576px，426x347\n- **背景图：** `ponding/situationBg.png`\n- **表格列：** 大队名称 | 点位数量 | 积水点位 | 未查点位\n- 右上角\"导出\"按钮\n\n#### 5️⃣ 底部按钮栏（`AllbottomButtonView`）\n- **两种状态：**\n  - 未选中点位：显示\"发布巡查指令\" + \"发布诱导屏\"（两个大按钮）\n  - 选中点位：显示\"巡查\"、\"历史\"、\"修改\"、\"删除\"（四个小按钮）\n- 按钮均有权限控制（`mycheckPermi`）\n\n#### 6️⃣ 全屏地图背景（`largeMap` 组件）\n- 全屏铺底，z-index: -1\n- 交互：点击地图标记、绘制点位、获取坐标等\n\n#### 7️⃣ 右侧导航栏（`largeRightNav` 组件）\n- 右侧浮动控制条，包含地图图层面板控制\n- 预加载 ponding 数据\n\n#### 8️⃣ 顶部导航栏（`mapTop` 组件）\n- 地图顶部工具栏\n\n---\n\n### 四、交互功能清单\n\n| 交互功能 | 触发方式 | 说明 |\n|---------|---------|------|\n| **点位筛选** | 下拉选择 + 输入关键字 | 按大队、巡查状态、积水状态、关键字搜索，触发 `list()` |\n| **点位选中** | 点击卡片 | 高亮选中，地图定位到该点位，显示标记信息窗口 |\n| **点位取消选中** | 再次点击已选中的卡片 | 取消选中，重置地图 |\n| **新增点位** | 点击\"新增\"按钮 | 弹出右侧表单面板 `pondingInputView`，可填 8 个字段 |\n| **修改点位** | 点击\"修改\"图标 | 打开与新增相同的表单，填充现有数据 |\n| **删除点位** | 点击\"删除\"图标 | 弹出 MessageBox 确认框，确认后删除 |\n| **巡查上报** | 点击\"巡查\"图标 | 打开 `caseReport` 弹窗，选择交通情况/淹水情况/积水深度/上传图片 |\n| **巡查历史** | 点击\"巡查历史\"图标 | 打开 `searchHistory` 弹窗，显示历史巡查记录列表 |\n| **图片上传** | 点击\"本地上传\" | 文件选择，最多 3 张，上传到服务器 |\n| **图片预览** | 点击历史记录中的图片按钮 | 打开 `picViewerView` 弹窗，展示大图预览 |\n| **发布巡查指令** | 点击底部\"发布巡查指令\" | 打开 `releaseView` 弹窗，选择大队、等级、预警时间、重置时间 |\n| **发布诱导屏** | 点击底部\"发布诱导屏\" | 两步弹窗：选点位 → 编辑诱导内容 → 发布 |\n| **导出数据** | 各面板右上角\"导出\"按钮 | 导出汇总表 / 各大队情况 / 巡查历史（3种导出） |\n| **地图交互** | 点击地图标记 | 点位选中、定位 |\n| **地图选点** | 新增/修改时点击\"坐标选择\" | 地图进入选点模式，点击地图获取坐标 |\n| **倒计时** | 巡查时 | 显示巡查剩余时间倒计时 |\n\n---\n\n### 五、数据结构\n\n#### 5.1 点位列表数据结构（`LeftlistData`）\n```typescript\ninterface PondingPoint {\n  id: string | number\n  floodLoca: string          // 点位名称\n  floodLevel: string         // 级别（字典值）\n  floodLevelName: string     // 级别名称（一级/二级/三级）\n  floodSituation: string     // 积水状态（1=正常, 2=积水）\n  inspectionFlag: string     // 巡查状态（1=未巡查, 2=已巡查, 3=超时巡查）\n  polDept: string            // 管辖大队id\n  polDeptName: string        // 管辖大队名称\n  polLeader: string          // 辖区大队领导\n  flDept: string             // 排水部门\n  flPrincName: string        // 排水负责人\n  flPrincTel: string         // 排水负责人电话\n  floodCount: number         // 积水次数\n  longitude: string          // 经度\n  latidude: string           // 纬度\n  lastestDepth: string       // 最新积水深度\n}\n```\n\n#### 5.2 概况数据（`generalReportData`）\n```typescript\ninterface GeneralReport {\n  totalNum: number           // 点位总数\n  pondingNum: number         // 在淹点位\n  unInspectionNum: number    // 待查点位\n  polDeptPondingList: DeptPondingItem[]  // 各大队积水情况\n  pondingRankList: RankItem[]            // 积水次数排名\n}\n// 大队积水情况\ninterface DeptPondingItem {\n  polDeptName: string        // 大队名称\n  totalNum: number           // 点位数量\n  pondingNum: number         // 积水点位\n  unInspectionNum: number    // 未查点位\n}\n// 积水排名\ninterface RankItem {\n  floodLoca: string          // 点位名称\n  polDeptName: string        // 所属大队\n  pondingNum: number         // 积水次数\n}\n```\n\n#### 5.3 新增/修改表单数据（`formData`）\n```typescript\ninterface PondingForm {\n  id?: string\n  latLng: string             // 点位坐标（经度,纬度）\n  floodLevel: string         // 级别\n  floodLoca: string          // 点位名称\n  longitude: string\n  latidude: string\n  flDept: string             // 排水部门\n  flPrincName: string        // 排水负责人\n  flPrincTel: string         // 排水负责人电话\n  polDept: string            // 管辖大队\n  polLeader: string          // 辖区大队领导\n}\n```\n\n#### 5.4 巡查上报数据（`caseReportData`）\n```typescript\ninterface CaseReport {\n  index: number              // 列表选中索引\n  floodId: string            // 点位ID\n  floodLoca: string          // 点位名称\n  trafficSituation: string   // 交通情况（1=正常, 2=断交, 3=缓行）\n  floodSituation: string     // 淹水情况（1=正常, 2=积水）\n  depth: string              // 积水深度(cm)\n  picList: Array<{fileId: string}>  // 图片文件ID列表\n  imgList: string[]          // 图片URL列表\n}\n```\n\n#### 5.5 巡查历史记录\n```typescript\ninterface InspectionRecord {\n  inspectionFlag: string     // 巡查状态（1/2/3）\n  updateTime: string         // 巡查时间\n  trafficSituation: number   // 交通情况（1正常/2断交/3缓行）\n  floodSituation: number     // 淹水情况（1正常/2积水）\n  picList: Array<{url: string}>  // 图片列表\n}\n```\n\n#### 5.6 发布巡查数据（`releaseData`）\n```typescript\ninterface ReleaseData {\n  polDepts: string[]         // 选中大队列表\n  inspectionLevel: string    // 巡查等级（1=A级暴雨, 2=B级大雨, 3=C级中雨）\n  earlyWarningPeriod: number // 预警时间(min)，默认30\n  deployResetPeriod: string  // 重置时间(小时)\n  depth: string              // 积水深度（已废弃）\n}\n```\n\n#### 5.7 搜索参数\n```typescript\ninterface SearchData {\n  polDept: string            // 大队筛选\n  search: string             // 关键字搜索\n  inspectionFlag: string     // 巡查状态筛选\n  floodSituation: string     // 积水状态筛选\n  deployResetPeriod: string  // 重置时间\n}\n```\n\n---\n\n### 六、ECharts 图表使用情况\n\n**本页面没有使用 ECharts 图表！** 页面虽然 `import echarts from 'echarts'`，但实际只用于地图标注和交互，没有渲染任何 echarts 图表实例。\n\n> ✅ 迁移时无需图表迁移工作\n> ⚠️ 但脚本中 import 了 echarts，如果地图组件内部依赖，需要确认\n\n---\n\n### 七、弹窗/浮层清单\n\n| 弹窗名称 | 变量控制 | 宽x高 | 触发方式 | 说明 |\n|---------|---------|-------|---------|------|\n| **新增/修改点位表单** | `createReport` | 426x774 | 点击\"新增\"或\"修改\" | 8个字段的表单，含地图选点功能 |\n| **积水巡查上报** | `caseReport` | 426x390 ×2 | 点击\"巡查\"图标 | 两个面板：上为表单，下为历史记录 |\n| **巡查历史** | `searchHistory` | 426x783 | 点击\"巡查历史\"图标 | 完整的巡查历史记录列表 |\n| **图片预览** | `showImage` | 886x212 | 点击历史记录中的图片按钮 | 大图展示 |\n| **发布巡查指令** | `releaseView` | 551x440 | 点击底部\"发布巡查指令\" | 复杂表单：大队选择+等级+预警时间+重置时间 |\n| **发布诱导屏-选点位** | `showFabu` | 540x490 | 点击底部\"发布诱导屏\" | 点位多选 |\n| **发布诱导屏-编辑内容** | `showFabuInfo` | 540x~ | 选点位后确认 | 文本框编辑诱导内容 |\n| **发布成功提示** | `fabuShow` | 540x220 | 发布成功后 | 提示信息 |\n| **巡查成功提示** | `caseReportRes` | 555x294 | 巡查提交成功后 | 居中弹窗，确认后关闭 |\n| **删除确认** | `MessageBox` | Element UI 原生 | 点击\"删除\" | 确认删除对话框 |\n\n---\n\n### 八、依赖的公共组件\n\n| 组件名 | 老项目路径 | 新项目是否存在 | 说明 |\n|-------|-----------|:------------:|------|\n| **mapTop** | `../map/mapTop.vue` | ❌ 不存在 | 地图顶部工具栏，包含搜索、定位等功能 |\n| **largeMap** | `@/views/components/largeMap.vue` | ❌ 不存在 | 地图容器组件，核心功能 |\n| **largeRightNav** | `../components/largeRightNav.vue` | ❌ 不存在 | 右侧导航控制栏 |\n| **alertWindow** | `@/views/components/alertWindow.vue` | ❌ 不存在 | 告警弹窗组件 |\n| **top_title** | `../components/top_title` | ❌ 不存在 | 顶部标题（实际未在 template 中使用） |\n| **MapContainer** | — | ✅ 存在 `src/components/TumengIndex/MapContainer.vue` | 新项目的地图组件，可替代 largeMap |\n| **BgAndInfo** | — | ✅ 存在 `src/components/Common/bgAndInfo.vue` | 新项目的页面框架组件 |\n| **mixin: largeRightNavJs** | `@/views/components/mixin/largeRightNav.js` | ❌ 不存在 | 右侧导航逻辑混入 |\n\n**关键发现：** 老项目的地图体系（mapTop + largeMap + largeRightNav + alertWindow）在新项目中**均不存在**。新项目有 `MapContainer` 组件，但功能体系不同。这意味着迁移时**不能简单复制组件引用**，需要重新设计地图交互逻辑。\n\n---\n\n### 九、API 接口清单\n\n老项目使用 `this.$axios` 和 `this.$getUrl` 调用以下接口：\n\n| 模块 | 接口路径 | 方法 | 说明 |\n|------|---------|:---:|------|\n| 点位列表 | `/baseplatform/localFloodInfo/list` | GET | 获取点位列表，含筛选参数 |\n| 概况 | `/baseplatform/localFloodInfo/generalReport` | GET | 获取概况统计数据 |\n| 点位详情 | `/baseplatform/localFloodInfo/{id}` | GET | 获取单点详情+巡查历史 |\n| 全部点位 | `/baseplatform/localFloodInfo/all` | GET | 用于发布诱导屏选择 |\n| 新增点位 | `/baseplatform/localFloodInfo` | POST | 新增积水点位 |\n| 修改点位 | `/baseplatform/localFloodInfo` | PUT | 修改积水点位 |\n| 删除点位 | `/baseplatform/localFloodInfo/{id}` | DELETE | 删除积水点位 |\n| 发布巡查 | `/baseplatform/localFloodInfo/deploy` | PUT | 发布巡查指令 |\n| 巡查上报 | `/baseplatform/localFloodInspection` | PUT | 提交巡查结果 |\n| 上次记录 | `/baseplatform/localFloodInfo/deploy/lastestRecord` | GET | 获取上次发布巡查时间 |\n| 倒计时 | `/baseplatform/localFloodInfo/inspectionUploadLeftMillisecond/{id}` | GET | 巡查剩余时间 |\n| 大队列表 | `/baseplatform/localFloodInfo/ddflList` | GET | 发布巡查用的大队列表 |\n| 大队筛选 | `/baseplatform/kmdnLocalDdfl/elevent` | GET | 筛选用大队下拉 |\n| 管辖大队 | `/baseplatform/kmdnLocalDdfl/freshElevent` | GET | 管辖大队下拉 |\n| 级别字典 | `/system/dict/data/type/kmdn_local_flood_level` | GET | 积水级别字典 |\n| 重置 | `/baseplatform/localFloodInfo/resetManual` | PUT | 手动重置 |\n| 导出汇总 | `/baseplatform/localFloodInfo/export` | GET | 导出汇总表 |\n| 导出报告 | `/baseplatform/localFloodInfo/exportReport` | GET | 导出各大队情况 |\n| 导出历史 | `/baseplatform/localFloodInspection/exportByFloodId` | GET | 导出巡查历史 |\n| 图片上传 | `/uploadfile/system/files/upload/` | POST | 上传巡查图片 |\n\n---\n\n### 十、需要迁移的图片资源\n\n新项目已存在 `src/assets/map_image/ponding/` 目录，包含 **36 张图片**，基本覆盖了老项目使用的全部图片。迁移时无需额外复制图片。\n\n---\n\n### 十一、权限控制\n\n使用 `checkPermi` 工具函数（来自 `../../utils/permission`），3 个权限点：\n\n| 类型 | 权限标识 | 对应功能 |\n|:---:|---------|---------|\n| 1 | `business:localFloodInfo:add` | 新增点位 |\n| 2 | `business:localFloodInfo:deploy` | 发布巡查指令 |\n| 3 | `business:localFloodInspection:edit` | 巡查上报 |\n\n---\n\n### 十二、迁移工作量和难度评估\n\n#### 难度评级：⭐⭐⭐⭐（高难度 / 复杂）\n\n| 维度 | 评估 | 说明 |\n|------|:---:|------|\n| 页面复杂度 | 极高 | 约 1260 行，包含 10+ 个弹窗/浮层，多种交互逻辑 |\n| 组件依赖 | 高 | 依赖 5 个老项目公共组件，其中 4 个新项目不存在 |\n| 组件迁移 | 需重写 | mapTop、largeMap、largeRightNav、alertWindow 需用 MapContainer 替代 |\n| Element → Ant Design | 中 | 涉及 el-select、el-radio、el-checkbox、el-input、el-popover、el-image 等 |\n| 样式迁移 | 高 | 大量 CSS + 背景图定位，需用 :deep() 覆盖 Ant Design 样式 |\n| 交互逻辑 | 复杂 | 地图选点、标记显示/隐藏、倒计时、多弹窗联动 |\n| 数据 | 需 Mock | 15+ 个 API 接口需 Mock 数据 |\n\n#### 预估工作量\n\n| 阶段 | 预估工时 | 说明 |\n|:---:|:--------:|------|\n| 布局重构 | 1 天 | 搭建页面框架，左侧面板 + 右侧 3 个面板 + 底部按钮 |\n| 组件替换 | 1-2 天 | 用 MapContainer 替代地图体系，el-* 替换为 ant-* |\n| 交互逻辑 | 2 天 | 点位筛选/选中/地图联动、弹窗逻辑、表单验证 |\n| 弹窗迁移 | 1-2 天 | 5 个主要弹窗的迁移与适配 |\n| 样式调整 | 1 天 | 深色科技风样式，背景图定位，滚动条等 |\n| Mock 数据 | 0.5 天 | 构建 15+ 个接口的 Mock 数据 |\n| 自测联调 | 1 天 | 功能验证、边界情况测试 |\n\n**总计预估：约 7-9 天（单人）**\n\n---\n\n### 十三、迁移建议\n\n1. **地图组件策略：** 新项目有 `MapContainer` 组件，建议用其替代 largeMap，但需要确认 MapContainer 是否支持标记绘制、选点等交互功能\n\n2. **分步迁移建议：**\n   - 第一步：搭建页面布局骨架（左侧面板 + 右侧3面板 + 底部按钮）\n   - 第二步：实现点位列表的渲染、筛选、搜索\n   - 第三步：实现右侧概况/排名/各大队情况面板\n   - 第四步：实现各弹窗（新增/修改/巡查/历史/发布巡查/发布诱导）\n   - 第五步：实现地图联动（点位选中→地图定位，地图选点→表单填充）\n\n3. **关键难点：** 地图与列表的联动（`changeSelect`、`getSonVal`、`goSelectMapPoint` 等函数）逻辑复杂，涉及地图标记的增删改查，需要仔细分析\n\n4. **新项目的 MapContainer 能力确认：** 迁移前需先确认 MapContainer 是否暴露了 `showMarkers`、`hideMarkers`、`flyTo`、`startToMark`、`addWorkWindow` 等接口"}],"role":"model"},"partial":false,"finish_reason":"STOP","usage_metadata":{"cached_content_token_count":65024,"candidates_token_count":5503,"prompt_token_count":71537,"thoughts_token_count":236,"total_token_count":77040},"invocation_id":"e-03bac67b-78ea-4545-9262-6686e41c22af","author":"my_agent","actions":{"state_delta":{},"artifact_delta":{},"requested_auth_configs":{},"requested_tool_confirmations":{}},"node_info":{"path":"my_agent@1"},"id":"834b82e8-ae6b-44fa-9b6c-4ab5efee02b9","timestamp":1785489713.5064487}


