Bläddra i källkod

Merge remote-tracking branch 'origin/dev' into dev

zhangyihao 6 månader sedan
förälder
incheckning
38635bf20b

+ 20 - 0
src/api/globalMap/gridPointRainfall.ts

@@ -0,0 +1,20 @@
+import request from '@/utils/request';
+
+export const getRainfallCode = (data) => {
+  return request({
+    url: '/api/gateway/v2/get_rainfall_code',
+    method: 'post',
+    data: {
+      query: {
+        ...data
+      }
+    }
+  });
+};
+
+export const getRainfallInfo = (code) => {
+  return request({
+    url: '/api/rainfall/gdyl/info/' + code,
+    method: 'get'
+  });
+};

BIN
src/assets/images/electronicDisasterMapManage/active.png


BIN
src/assets/images/electronicDisasterMapManage/box1.png


BIN
src/assets/images/electronicDisasterMapManage/box2.png


BIN
src/assets/images/electronicDisasterMapManage/checked1.png


BIN
src/assets/images/electronicDisasterMapManage/checked2.png


BIN
src/assets/images/electronicDisasterMapManage/decoration1.png


BIN
src/assets/images/electronicDisasterMapManage/decoration2.png


BIN
src/assets/images/electronicDisasterMapManage/icon1.png


+ 1 - 1
src/hooks/AMap/useAMap.ts

@@ -16,7 +16,7 @@ export function useAMap(options) {
       version: !!options.version ? options.version : '2.0', // 指定要加载的 JSAPI 的版本,缺省时默认为 1.4.15
       plugins: options.plugins
         ? options.plugins
-        : ['AMap.Scale', 'AMap.RangingTool', 'AMap.MouseTool', 'AMap.PolygonEditor', 'AMap.MarkerCluster', 'AMap.DistrictSearch', 'AMap.MoveAnimation']
+        : ['AMap.Scale', 'AMap.RangingTool', 'AMap.MouseTool', 'AMap.PolygonEditor', 'AMap.MarkerCluster', 'AMap.DistrictSearch', 'AMap.MoveAnimation', 'AMap.Driving', 'AMap.Geocoder']
     }).then((res) => {
       AMap = res;
       map = new AMap.Map(options.el ? options.el : 'aMap', {

+ 11 - 0
src/types/components.d.ts

@@ -39,6 +39,7 @@ declare module 'vue' {
     ElForm: typeof import('element-plus/es')['ElForm']
     ElFormItem: typeof import('element-plus/es')['ElFormItem']
     ElIcon: typeof import('element-plus/es')['ElIcon']
+    ElImage: typeof import('element-plus/es')['ElImage']
     ElInput: typeof import('element-plus/es')['ElInput']
     ElInputNumber: typeof import('element-plus/es')['ElInputNumber']
     ElMenu: typeof import('element-plus/es')['ElMenu']
@@ -46,16 +47,24 @@ declare module 'vue' {
     ElOption: typeof import('element-plus/es')['ElOption']
     ElPagination: typeof import('element-plus/es')['ElPagination']
     ElPopover: typeof import('element-plus/es')['ElPopover']
+    ElRadio: typeof import('element-plus/es')['ElRadio']
+    ElRadioGroup: typeof import('element-plus/es')['ElRadioGroup']
     ElRow: typeof import('element-plus/es')['ElRow']
     ElScrollbar: typeof import('element-plus/es')['ElScrollbar']
     ElSelect: typeof import('element-plus/es')['ElSelect']
+    ElSlider: typeof import('element-plus/es')['ElSlider']
     ElSubMenu: typeof import('element-plus/es')['ElSubMenu']
     ElSwitch: typeof import('element-plus/es')['ElSwitch']
     ElTable: typeof import('element-plus/es')['ElTable']
     ElTableColumn: typeof import('element-plus/es')['ElTableColumn']
     ElTag: typeof import('element-plus/es')['ElTag']
     ElText: typeof import('element-plus/es')['ElText']
+    ElTimeline: typeof import('element-plus/es')['ElTimeline']
+    ElTimelineItem: typeof import('element-plus/es')['ElTimelineItem']
     ElTooltip: typeof import('element-plus/es')['ElTooltip']
+    ElTree: typeof import('element-plus/es')['ElTree']
+    ElTreeSelect: typeof import('element-plus/es')['ElTreeSelect']
+    ElUpload: typeof import('element-plus/es')['ElUpload']
     ExcelEditor: typeof import('./../components/ExcelEditor/index.vue')['default']
     FileUpload: typeof import('./../components/FileUpload/index.vue')['default']
     FooterSection: typeof import('./../components/FooterSection/index.vue')['default']
@@ -66,6 +75,8 @@ declare module 'vue' {
     HikvisionPlayer: typeof import('./../components/HKVideo/hikvision-player.vue')['default']
     HKVideo: typeof import('./../components/HKVideo/index.vue')['default']
     IconSelect: typeof import('./../components/IconSelect/index.vue')['default']
+    IEpCaretBottom: typeof import('~icons/ep/caret-bottom')['default']
+    IEpCaretTop: typeof import('~icons/ep/caret-top')['default']
     IFrame: typeof import('./../components/iFrame/index.vue')['default']
     ImagePreview: typeof import('./../components/ImagePreview/index.vue')['default']
     ImageUpload: typeof import('./../components/ImageUpload/index.vue')['default']

+ 172 - 97
src/views/comprehensiveGuarantee/MaterialReserveManagement/OutboundManagement.vue

@@ -10,28 +10,138 @@
             </el-col>
           </el-row>
         </transition>
-        <el-table ref="multipleTable" v-loading="loading" :data="tableData" border :max-height="maxHeight" style="width: 96%">
-          <el-table-column label="出库单号" align="center" prop="table_id" width="150" fixed show-overflow-tooltip/>
-          <el-table-column label="仓库名称" align="center" prop="table_name" width="80" show-overflow-tooltip/>
-          <el-table-column label="出库单商品总体积(cm³)" align="center" prop="run_time" width="80" show-overflow-tooltip/>
-          <el-table-column label="出库单商品总重量(kg)" align="center" prop="filling_time" width="80" show-overflow-tooltip/>
-          <el-table-column label="出库单发货总体积(cm³)" align="center" prop="status" width="120" show-overflow-tooltip/>
-          <el-table-column label="出库单发货总重量(kg)" align="center" prop="status" width="120" show-overflow-tooltip/>
-          <el-table-column label="出库单商品总数量" align="center" prop="status" width="120" show-overflow-tooltip/>
-          <el-table-column label="出库单发货时间" align="center" prop="status" width="120" show-overflow-tooltip/>
-          <el-table-column label="灾种名称" align="center" prop="status" width="120" show-overflow-tooltip/>
-          <el-table-column label="调运机构名称" align="center" prop="status" width="120" show-overflow-tooltip/>
-          <el-table-column label="发货人姓名" align="center" prop="status" width="120" show-overflow-tooltip/>
-          <el-table-column label="发货人手机" align="center" prop="status" width="120" show-overflow-tooltip/>
-          <el-table-column label="发货人地址" align="center" prop="status" width="120" show-overflow-tooltip/>
-          <el-table-column label="发货方备注" align="center" prop="status" width="120" show-overflow-tooltip/>
-          <el-table-column label="收货人姓名" align="center" prop="status" width="120" show-overflow-tooltip/>
-          <el-table-column label="收货人手机" align="center" prop="status" width="120" show-overflow-tooltip/>
-          <el-table-column label="收货人地址" align="center" prop="status" width="120" show-overflow-tooltip/>
+        <el-table
+          ref="multipleTable"
+          v-loading="loading"
+          :data="tableData"
+          border
+          :max-height="maxHeight"
+          style="width: 96%"
+        >
+          <el-table-column
+            label="出库单号"
+            align="center"
+            prop="outboundOrderId"
+          width="150"
+          fixed
+          show-overflow-tooltip
+          />
+          <el-table-column
+            label="仓库名称"
+            align="center"
+            prop="warehouseName"
+          width="120"
+          show-overflow-tooltip
+          />
+          <el-table-column
+            label="出库单商品总体积(cm³)"
+            align="center"
+            prop="totalVolume"
+          width="120"
+          show-overflow-tooltip
+          />
+          <el-table-column
+            label="出库单商品总重量(kg)"
+            align="center"
+            prop="totalWeight"
+          width="120"
+          show-overflow-tooltip
+          />
+          <el-table-column
+            label="出库单发货总体积(cm³)"
+            align="center"
+            prop="shippedTotalVolume"
+          width="150"
+          show-overflow-tooltip
+          />
+          <el-table-column
+            label="出库单发货总重量(kg)"
+            align="center"
+            prop="shippedTotalWeight"
+          width="150"
+          show-overflow-tooltip
+          />
+          <el-table-column
+            label="出库单商品总数量"
+            align="center"
+            prop="totalQuantity"
+          width="120"
+          show-overflow-tooltip
+          />
+          <el-table-column
+            label="出库单发货时间"
+            align="center"
+            prop="shippedTime"
+          width="180"
+          show-overflow-tooltip
+          />
+          <el-table-column
+            label="灾种名称"
+            align="center"
+            prop="disasterType"
+          width="120"
+          show-overflow-tooltip
+          />
+          <el-table-column
+            label="调运机构名称"
+            align="center"
+            prop="transportationOrgName"
+          width="150"
+          show-overflow-tooltip
+          />
+          <el-table-column
+            label="发货人姓名"
+            align="center"
+            prop="shipperName"
+          width="120"
+          show-overflow-tooltip
+          />
+          <el-table-column
+            label="发货人手机"
+            align="center"
+            prop="shipperPhone"
+          width="120"
+          show-overflow-tooltip
+          />
+          <el-table-column
+            label="发货人地址"
+            align="center"
+            prop="shipperAddress"
+          width="200"
+          show-overflow-tooltip
+          />
+          <el-table-column
+            label="发货方备注"
+            align="center"
+            prop="shipperRemarks"
+          width="180"
+          show-overflow-tooltip
+          />
+          <el-table-column
+            label="收货人姓名"
+            align="center"
+            prop="recipientName"
+          width="120"
+          show-overflow-tooltip
+          />
+          <el-table-column
+            label="收货人手机"
+            align="center"
+            prop="recipientPhone"
+          width="120"
+          show-overflow-tooltip
+          />
+          <el-table-column
+            label="收货人地址"
+            align="center"
+            prop="recipientAddress"
+          width="200"
+          show-overflow-tooltip
+          />
           <el-table-column label="操作" align="center" fixed="right" width="88" class-name="small-padding fixed-width">
             <template #default="scope">
-              <el-button type="text" class="common-btn-text-primary" @click="handleWrite">查看</el-button>
-              <el-button type="text" class="common-btn-text-primary" @click="handleView">明细</el-button>
+              <el-button type="text" class="common-btn-text-primary" @click="handleWrite(scope.row)">查看</el-button>
+              <el-button type="text" class="common-btn-text-primary" @click="handleView(scope.row)">明细</el-button>
             </template>
           </el-table-column>
         </el-table>
@@ -44,8 +154,8 @@
         />
       </div>
     </div>
-    <addOutbound v-if="addOutboundState.show" @close="handleCancel" />
-    <outboundDetails v-if="outboundDetailsState.show" @close="handleCancel" />
+    <addOutbound v-if="addOutboundState.show" :event-id="addOutboundState.eventId" @close="handleCancel" />
+    <outboundDetails v-if="outboundDetailsState.show" :event-id="outboundDetailsState.eventId" @close="handleCancel" />
   </div>
 </template>
 <script setup lang="ts">
@@ -67,89 +177,53 @@ const queryParams = reactive({
 
 const tableData = [
   {
-    table_id: 1,
-    table_name: '测试表单',
-    run_time: '2024-10-15',
-    filling_time: '2024-10-15 18:00:00',
-    status: '待填报'
+    outboundOrderId: 'ORD001',
+    warehouseName: '仓库A',
+    totalVolume: '12345',
+    totalWeight: '50.0',
+    shippedTotalVolume: '11000',
+    shippedTotalWeight: '48.5',
+    totalQuantity: '100',
+    shippedTime: '2023-10-01 10:00:00',
+    disasterType: '洪水',
+    transportationOrgName: '物流公司X',
+    shipperName: '张三',
+    shipperPhone: '13800000001',
+    shipperAddress: '北京市海淀区某街道123号',
+    shipperRemarks: '请小心搬运',
+    recipientName: '李四',
+    recipientPhone: '13800000002',
+    recipientAddress: '上海市黄浦区某小区456号'
   },
   {
-    table_id: 2,
-    table_name: '应急工单数据表',
-    run_time: '2024-06-24',
-    filling_time: '2025-06-24 18:00:00',
-    status: '待填报'
+    outboundOrderId: 'ORD002',
+    warehouseName: '仓库B',
+    totalVolume: '23456',
+    totalWeight: '75.0',
+    shippedTotalVolume: '22000',
+    shippedTotalWeight: '73.0',
+    totalQuantity: '150',
+    shippedTime: '2023-10-02 14:30:00',
+    disasterType: '地震',
+    transportationOrgName: '物流公司Y',
+    shipperName: '王五',
+    shipperPhone: '13800000003',
+    shipperAddress: '广州市天河区某路789号',
+    shipperRemarks: '无特殊要求',
+    recipientName: '赵六',
+    recipientPhone: '13800000004',
+    recipientAddress: '成都市武侯区某小区101号'
   },
-  {
-    table_id: 3,
-    table_name: '安全风险通告数据表',
-    run_time: '2024-06-24',
-    filling_time: '2025-06-24 18:00:00',
-    status: '已上报'
-  },
-  {
-    table_id: 4,
-    table_name: '安全风险通告数据表',
-    run_time: '2024-06-24',
-    filling_time: '2025-06-24 18:00:00',
-    status: '已上报'
-  },
-  {
-    table_id: 5,
-    table_name: '安全风险通告数据表',
-    run_time: '2024-06-24',
-    filling_time: '2025-06-24 18:00:00',
-    status: '已上报'
-  },
-  {
-    table_id: 6,
-    table_name: '安全风险通告数据表',
-    run_time: '2024-06-24',
-    filling_time: '2025-06-24 18:00:00',
-    status: '已上报'
-  },
-  {
-    table_id: 7,
-    table_name: '安全风险通告数据表',
-    run_time: '2024-06-24',
-    filling_time: '2025-06-24 18:00:00',
-    status: '已上报'
-  },
-  {
-    table_id: 8,
-    table_name: '安全风险通告数据表',
-    run_time: '2024-06-24',
-    filling_time: '2025-06-24 18:00:00',
-    status: '已上报'
-  },
-  {
-    table_id: 9,
-    table_name: '安全风险通告数据表',
-    run_time: '2024-06-24',
-    filling_time: '2025-06-24 18:00:00',
-    status: '已上报'
-  },
-  {
-    table_id: 10,
-    table_name: '安全风险通告数据表',
-    run_time: '2024-06-24',
-    filling_time: '2025-06-24 18:00:00',
-    status: '已上报'
-  },
-  {
-    table_id: 11,
-    table_name: '安全风险通告数据表',
-    run_time: '2024-06-24',
-    filling_time: '2025-06-24 18:00:00',
-    status: '已上报'
-  }
+  // 可以根据需要添加更多数据
 ];
 
-const addOutboundState = reactive({
+let addOutboundState = reactive({
   show: false, // 初始化show为false
+  eventId: ''
 });
 const outboundDetailsState = reactive({
   show: false, // 初始化show为false
+  eventId: ''
 });
 
 const handleAdd = () => {
@@ -165,7 +239,8 @@ const handleCancel = () => {
   addOutboundState.show = false;
 };
 
-const handleWrite = () => {
+const handleWrite = (row) => {
+  outboundDetailsState.eventId = row.outboundOrderId + "";
   outboundDetailsState.show=true;
 };
 

+ 144 - 2
src/views/comprehensiveGuarantee/MaterialReserveManagement/WarehouseManagement.vue

@@ -1,6 +1,148 @@
+<!--库房管理-->
 <template>
-  <!--库房管理-->
+  <div>
+    <div v-show="!addWarehouseState.show && !outboundDetailsState.show" class="app-container">
+      <div>
+        <transition name="fade">
+          <el-row :gutter="30" style="height: 50px">
+            <el-col :span="10">
+              <el-button type="primary" @click="handleAdd">新增</el-button>
+              <el-button type="primary" @click="handleAdd">数据导入</el-button>
+            </el-col>
+          </el-row>
+        </transition>
+        <el-table ref="multipleTable" v-loading="loading" :data="tableData" border :max-height="maxHeight" style="width: 96%">
+          <el-table-column label="库房名称" align="center" prop="warehouse_name" width="120" show-overflow-tooltip/>
+          <el-table-column label="所在仓库" align="center" prop="warehouse_location" width="120" show-overflow-tooltip/>
+          <el-table-column label="库房面积(平方米)" align="center" prop="warehouse_area_square_meters" width="120" show-overflow-tooltip/>
+          <el-table-column label="可用仓储面积(平方米)" align="center" prop="available_warehouse_area_square_meters" width="120" show-overflow-tooltip/>
+          <el-table-column label="高度(米)" align="center" prop="height_meters" width="120" show-overflow-tooltip/>
+          <el-table-column label="库房容积(立方米)" align="center" prop="warehouse_volume_cubic_meters" width="120" show-overflow-tooltip/>
+          <el-table-column label="可用库房容积(立方米)" align="center" prop="available_warehouse_volume_cubic_meters" width="120" show-overflow-tooltip/>
+          <el-table-column label="保管类型" align="center" prop="storage_type" width="120" show-overflow-tooltip/>
+          <el-table-column label="等级" align="center" prop="grade" width="120" show-overflow-tooltip/>
+          <el-table-column label="存放类型" align="center" prop="storage_placement_type" width="120" show-overflow-tooltip/>
+          <el-table-column label="库存确认最新时间" align="center" prop="inventory_confirmation_latest_time" width="120" show-overflow-tooltip/>
+          <el-table-column label="操作" align="center" fixed="right" width="88" class-name="small-padding fixed-width">
+            <template #default="scope">
+              <el-button type="text" class="common-btn-text-primary" @click="handleWrite">查看</el-button>
+              <el-button type="text" class="common-btn-text-primary" @click="handleView">明细</el-button>
+            </template>
+          </el-table-column>
+        </el-table>
+        <pagination
+          v-show="total > 0"
+          v-model:page="queryParams.page"
+          v-model:limit="queryParams.pageSize"
+          :total="total"
+          @change-page="handlePaginationChange"
+        />
+      </div>
+    </div>
+    <addWarehouse v-if="addWarehouseState.show" @close="handleCancel" />
+    <outboundDetails v-if="outboundDetailsState.show" @close="handleCancel" />
+  </div>
 </template>
-<script lang="ts">
+<script setup lang="ts">
+import addWarehouse from "./addWarehouse.vue";
+import outboundDetails from "./outboundDetails.vue";
+import { ref,reactive, onMounted, onBeforeUnmount } from "vue";
+// 定义响应式变量
+const loading = ref(false);
+const maxHeight = ref(window.innerHeight * 0.8);
+const total = ref();
+// 处理窗口大小变化
+const handleResize = () => {
+  maxHeight.value = window.innerHeight * 0.8;
+};
+const queryParams = reactive({
+  page: '1',
+  pageSize: '10',
+});
+
+const tableData = [
+  {
+    warehouse_name: "一号库房",
+    warehouse_location: "北京市海淀区",
+    warehouse_area_square_meters: 5000,
+    available_warehouse_area_square_meters: 4000,
+    height_meters: 10,
+    warehouse_volume_cubic_meters: 50000,
+    available_warehouse_volume_cubic_meters: 40000,
+    storage_type: "常温保管",
+    grade: "A级",
+    storage_placement_type: "地面堆放",
+    inventory_confirmation_latest_time: "2023-10-01 14:30:00"
+  },
+  {
+    warehouse_name: "二号库房",
+    warehouse_location: "上海市浦东新区",
+    warehouse_area_square_meters: 3000,
+    available_warehouse_area_square_meters: 2500,
+    height_meters: 8,
+    warehouse_volume_cubic_meters: 24000,
+    available_warehouse_volume_cubic_meters: 20000,
+    storage_type: "冷藏保管",
+    grade: "B级",
+    storage_placement_type: "货架存放",
+    inventory_confirmation_latest_time: "2023-09-25 10:15:00"
+  },
+  {
+    warehouse_name: "三号库房",
+    warehouse_location: "广州市天河区",
+    warehouse_area_square_meters: 2000,
+    available_warehouse_area_square_meters: 1800,
+    height_meters: 6,
+    warehouse_volume_cubic_meters: 12000,
+    available_warehouse_volume_cubic_meters: 10800,
+    storage_type: "特殊保管",
+    grade: "C级",
+    storage_placement_type: "托盘存放",
+    inventory_confirmation_latest_time: "2023-09-20 08:45:00"
+  },
+  // 可以继续添加更多测试数据...
+];
+
+const addWarehouseState = reactive({
+  show: false, // 初始化show为false
+});
+const outboundDetailsState = reactive({
+  show: false, // 初始化show为false
+});
+
+const handleAdd = () => {
+  addWarehouseState.show = true;
+};
+
+const upload = () => {
+  // 这里可能需要实现上传逻辑,暂时只是显示WriteForm作为示例
+  addGodownState.show = true;
+};
+
+const handleCancel = () => {
+  addWarehouseState.show = false;
+};
+
+const handleWrite = () => {
+  outboundDetailsState.show=true;
+};
+
+const handleView = () => {
+  outboundDetailsState.show=true;
+};
+
+const handlePaginationChange = (page: number) => {
+  queryParams.page = page;
+  // fetchTableData(); //
+};
+
+onMounted(() => {
+  window.addEventListener('resize', handleResize);
+});
+
+// 在组件卸载前移除窗口大小变化监听器
+onBeforeUnmount(() => {
+  window.removeEventListener('resize', handleResize);
+});
 </script>
 <style lang="scss" scoped></style>

+ 3 - 3
src/views/comprehensiveGuarantee/MaterialReserveManagement/addOutbound.vue

@@ -7,15 +7,15 @@
       </div>
       <div class="common-dialog-box">
         <el-form ref="eventFormRef" :model="form" :rules="rules" label-width="80px">
-          <el-form-item label="出库单号:" prop="event_title">
+          <el-form-item label="出库单号:" prop="table_id">
             <el-input v-model="form.event_title" placeholder="请输入出库单号" style="width: 468px !important" />
           </el-form-item>
 
-          <el-form-item label="仓库名称:" prop="event_source">
+          <el-form-item label="仓库名称:" prop="table_name">
             <el-input v-model="form.event_source" placeholder="请输入仓库名称" style="width: 468px !important" />
           </el-form-item>
 
-          <el-form-item label="出库单商品总体积(cm³):" prop="event_source">
+          <el-form-item label="出库单商品总体积(cm³):" prop="run_time">
             <el-input v-model="form.event_source" placeholder="请输入出库单商品总体积" style="width: 468px !important" />
           </el-form-item>
 

+ 121 - 0
src/views/comprehensiveGuarantee/MaterialReserveManagement/addWarehouse.vue

@@ -0,0 +1,121 @@
+<template>
+  <div class="common-dialog">
+    <div class="common-dialog-content">
+      <div class="common-dialog-title-box">
+        <i class="common-dialog-title-icon" />
+        <div>新增出库单</div>
+      </div>
+      <div class="common-dialog-box">
+        <el-form ref="eventFormRef" :model="form" :rules="rules" label-width="120px">
+          <el-form-item label="库房名称:" prop="warehouse_name">
+            <el-input v-model="form.warehouse_name" placeholder="请输入库房名称" style="width: 468px !important" />
+          </el-form-item>
+
+          <el-form-item label="所在仓库:" prop="warehouse_location">
+            <el-input v-model="form.warehouse_location" placeholder="请输入所在仓库" style="width: 468px !important" />
+          </el-form-item>
+
+          <el-form-item label="库房面积(平方米):" prop="warehouse_area_square_meters">
+            <el-input v-model="form.warehouse_area_square_meters" type="number" placeholder="请输入库房面积(平方米)" style="width: 468px !important" />
+          </el-form-item>
+
+          <el-form-item label="可用仓储面积(平方米):" prop="available_warehouse_area_square_meters">
+            <el-input v-model="form.available_warehouse_area_square_meters" type="number" placeholder="请输入可用仓储面积(平方米)" style="width: 468px !important" />
+          </el-form-item>
+
+          <el-form-item label="高度(米):" prop="height_meters">
+            <el-input v-model="form.height_meters" type="number" placeholder="请输入高度(米)" style="width: 468px !important" />
+          </el-form-item>
+
+          <el-form-item label="库房容积(立方米):" prop="warehouse_volume_cubic_meters">
+            <el-input v-model="form.warehouse_volume_cubic_meters" type="number" placeholder="请输入库房容积(立方米)" style="width: 468px !important" />
+          </el-form-item>
+
+          <el-form-item label="可用库房容积(立方米):" prop="available_warehouse_volume_cubic_meters">
+            <el-input v-model="form.available_warehouse_volume_cubic_meters" type="number" placeholder="请输入可用库房容积(立方米)" style="width: 468px !important" />
+          </el-form-item>
+
+          <el-form-item label="保管类型:" prop="storage_type">
+            <el-input v-model="form.storage_type" placeholder="请输入保管类型" style="width: 468px !important" />
+            <!-- 注意:如果保管类型是固定选项,则可以使用el-select -->
+          </el-form-item>
+
+          <el-form-item label="等级:" prop="grade">
+            <el-input v-model="form.grade" placeholder="请输入等级" style="width: 468px !important" />
+            <!-- 注意:如果等级是固定选项(如A/B/C),则可以使用el-select -->
+          </el-form-item>
+
+          <el-form-item label="存放类型:" prop="storage_placement_type">
+            <el-input v-model="form.storage_placement_type" placeholder="请输入存放类型" style="width: 468px !important" />
+          </el-form-item>
+
+          <el-form-item label="库存确认最新时间:" prop="inventory_confirmation_latest_time">
+            <el-date-picker
+              v-model="form.inventory_confirmation_latest_time"
+              type="datetime"
+              placeholder="请选择库存确认最新时间"
+              style="width: 468px !important"
+            />
+          </el-form-item>
+        </el-form>
+        <div class="common-dialog-footer">
+          <el-button @click="closeDialog">取消</el-button>
+          <el-button :loading="buttonLoading" type="primary" @click="submitForm">确定</el-button>
+        </div>
+      </div>
+    </div>
+  </div>
+</template>
+<script setup lang="ts">
+import { ref, reactive, toRefs } from 'vue';
+const emits = defineEmits(['close']);
+const buttonLoading = ref(false);
+// 表单初始数据
+const initFormData = {
+    warehouse_name: '',
+    warehouse_location: '',
+    warehouse_area_square_meters: '',
+    available_warehouse_area_square_meters: '',
+    height_meters: '',
+    warehouse_volume_cubic_meters: '',
+    available_warehouse_volume_cubic_meters: '',
+    storage_type: '',
+    grade: '',
+    storage_placement_type: '',
+    inventory_confirmation_latest_time: ''
+  };
+
+// 表单数据
+const data = reactive({
+  form: { ...initFormData },
+  rules: {
+    event_title: [{ required: true, message: '事件标题不能为空', trigger: 'blur' }],
+    event_type: [{ required: true, message: '事件类型不能为空', trigger: 'blur' }],
+    event_level: [{ required: true, message: '事件等级不能为空', trigger: 'blur' }],
+    event_status: [{ required: true, message: '事件状态不能为空', trigger: 'blur' }],
+    address: [{ required: true, message: '事件地点不能为空', trigger: 'blur' }],
+    event_time: [{ required: true, message: '事发时间不能为空', trigger: 'blur' }],
+    report_time: [{ required: true, message: '上报时间不能为空', trigger: 'blur' }],
+    event_source: [{ required: true, message: '事件来源不能为空', trigger: 'blur' }],
+    event_description: [{ required: true, message: '事件描述不能为空', trigger: 'blur' }],
+    contact: [{ required: true, message: '联系方式不能为空', trigger: 'blur' }]
+  }
+});
+
+const { form, rules } = toRefs(data);
+
+const closeDialog = () => {
+  emits('close');
+};
+const submitForm = () => {
+}
+</script>
+
+<style lang="scss" scoped>
+.flex {
+  display: flex;
+  span {
+    white-space: nowrap;
+  }
+}
+</style>

+ 59 - 50
src/views/comprehensiveGuarantee/MaterialReserveManagement/outboundDetails.vue

@@ -6,56 +6,56 @@
       </div>
       <div class="common-dialog-box">
         <el-form ref="form" :model="formData" :rules="rules" label-width="120px">
-          <el-form-item label="出库单号:" prop="name">
-            <el-input v-model="formData.name" style="width: 468px !important" disabled />
+          <el-form-item label="出库单号:" prop="outStockNumber">
+            <el-input v-model="formData.outStockNumber" style="width: 468px" />
           </el-form-item>
-          <el-form-item label="仓库名称:" prop="county">
-            <el-input v-model="formData.county" style="width: 468px !important" disabled />
+          <el-form-item label="仓库名称:" prop="warehouseName">
+            <el-input v-model="formData.warehouseName" style="width: 468px" />
           </el-form-item>
-          <el-form-item label="出库单商品总体积(cm³):" prop="expert_type">
-            <el-input v-model="formData.expert_type" style="width: 468px !important" disabled />
+          <el-form-item label="出库单商品总体积(cm³):" prop="totalVolume">
+            <el-input v-model="formData.totalVolume" style="width: 468px" />
           </el-form-item>
-          <el-form-item label="出库单商品总重量(kg):" prop="position">
-            <el-input v-model="formData.position" style="width: 468px !important" disabled />
+          <el-form-item label="出库单商品总重量(kg):" prop="totalWeight">
+            <el-input v-model="formData.totalWeight" style="width: 468px" />
           </el-form-item>
-          <el-form-item label="出库单发货总体积(cm³):" prop="unit">
-            <el-input v-model="formData.unit" style="width: 468px !important" disabled />
+          <el-form-item label="出库单发货总体积(cm³):" prop="shipmentTotalVolume">
+            <el-input v-model="formData.shipmentTotalVolume" style="width: 468px" />
           </el-form-item>
-          <el-form-item label="出库单发货总重量(kg):" prop="phone">
-            <el-input v-model="formData.phone" style="width: 468px !important" disabled />
+          <el-form-item label="出库单发货总重量(kg):" prop="shipmentTotalWeight">
+            <el-input v-model="formData.shipmentTotalWeight" style="width: 468px" />
           </el-form-item>
-          <el-form-item label="出库单商品总数量:" prop="address">
-            <el-input v-model="formData.address" style="width: 468px !important" disabled />
+          <el-form-item label="出库单商品总数量:" prop="totalQuantity">
+            <el-input v-model="formData.totalQuantity" style="width: 468px" />
           </el-form-item>
-          <el-form-item label="出库单发货时间:" prop="status">
-            <el-input v-model="formData.status" style="width: 468px !important" disabled />
+          <el-form-item label="出库单发货时间:" prop="shipmentDate">
+            <el-input v-model="formData.shipmentDate" style="width: 468px" />
           </el-form-item>
-          <el-form-item label="灾种名称:" prop="accident_type">
-            <el-input v-model="formData.accident_type" style="width: 468px !important" disabled />
+          <el-form-item label="灾种名称:" prop="disasterType">
+            <el-input v-model="formData.disasterType" style="width: 468px" />
           </el-form-item>
-          <el-form-item label="调运机构名称:" prop="rescue_experience">
-            <el-input v-model="formData.rescue_experience" style="width: 468px !important" disabled />
+          <el-form-item label="调运机构名称:" prop="transportationOrgName">
+            <el-input v-model="formData.transportationOrgName" style="width: 468px" />
           </el-form-item>
-          <el-form-item label="发货人姓名:" prop="birthdate">
-            <el-input v-model="formData.birthdate" style="width: 468px !important" disabled />
+          <el-form-item label="发货人姓名:" prop="shipperName">
+            <el-input v-model="formData.shipperName" style="width: 468px" />
           </el-form-item>
-          <el-form-item label="发货人手机:" prop="work_date">
-            <el-input v-model="formData.work_date" style="width: 468px !important" disabled />
+          <el-form-item label="发货人手机:" prop="shipperPhone">
+            <el-input v-model="formData.shipperPhone" style="width: 468px" />
           </el-form-item>
-          <el-form-item label="发货人地址:" prop="work_date">
-            <el-input v-model="formData.work_date" style="width: 468px !important" disabled />
+          <el-form-item label="发货人地址:" prop="shipperAddress">
+            <el-input v-model="formData.shipperAddress" style="width: 468px" />
           </el-form-item>
-          <el-form-item label="发货方备注:" prop="work_date">
-            <el-input v-model="formData.work_date" style="width: 468px !important" disabled />
+          <el-form-item label="发货方备注:" prop="shipperRemark">
+            <el-input v-model="formData.shipperRemark" style="width: 468px" />
           </el-form-item>
-          <el-form-item label="收货人姓名:" prop="work_date">
-            <el-input v-model="formData.work_date" style="width: 468px !important" disabled />
+          <el-form-item label="收货人姓名:" prop="receiverName">
+            <el-input v-model="formData.receiverName" style="width: 468px" />
           </el-form-item>
-          <el-form-item label="收货人手机:" prop="work_date">
-            <el-input v-model="formData.work_date" style="width: 468px !important" disabled />
+          <el-form-item label="收货人手机:" prop="receiverPhone">
+            <el-input v-model="formData.receiverPhone" style="width: 468px" />
           </el-form-item>
-          <el-form-item label="收货人地址:" prop="work_date">
-            <el-input v-model="formData.work_date" style="width: 468px !important" disabled />
+          <el-form-item label="收货人地址:" prop="receiverAddress">
+            <el-input v-model="formData.receiverAddress" style="width: 468px" />
           </el-form-item>
         </el-form>
         <div class="common-dialog-footer">
@@ -68,31 +68,40 @@
 
 <script setup lang="ts">
 import { ref, watch } from 'vue';
+import {updatetask} from "@/api/inspectionWork/inspector";
+import {ElMessage} from "element-plus";
 
 const emits = defineEmits(['close']);
+const closeDialog = () => {
+  emits('close');
+};
 const props = defineProps<{
   eventId: string | number;
 }>();
 
+
 // 模拟的数据
-const formData = ref({
-  name: '张三',
-  county: '朝阳区',
-  expert_type: '安全工程',
-  position: '高级工程师',
-  unit: '北京市应急管理局',
-  phone: '13800138000',
-  address: '北京市朝阳区XX路XX号',
-  status: '在职',
-  accident_type: '火灾、爆炸',
-  rescue_experience: '参与过多次重大事故救援,经验丰富。',
-  birthdate: '1975-05-20',
-  work_date: '2000-01-01'
+let formData = ref({
+  outStockNumber: '',
+  warehouseName: '',
+  totalVolume: '',
+  totalWeight: '',
+  shipmentTotalVolume: '',
+  shipmentTotalWeight: '',
+  totalQuantity: '',
+  shipmentDate: '',
+  disasterType: '',
+  transportationOrgName: '',
+  shipperName: '',
+  shipperPhone: '',
+  shipperAddress: '',
+  shipperRemark: '',
+  receiverName: '',
+  receiverPhone: '',
+  receiverAddress: '',
 });
 
-const closeDialog = () => {
-  emits('close');
-};
+
 </script>
 
 <style scoped></style>

+ 6 - 2
src/views/comprehensiveGuarantee/electronicDisasterMapManage/index.vue

@@ -58,7 +58,6 @@
               <div class="text2">{{ item.address }}</div>
               <div class="text3" @click="handleRoutes(item)">路线</div>
             </div>
-
           </div>
         </div>
       </div>
@@ -194,7 +193,7 @@ let checked1 = ref(false);
 let distance = ref('');
 let queryParams = reactive({
   keyword: '',
-  dataType: ''
+  dataType: '2'
 });
 let total = ref(0);
 let dataList = ref([]);
@@ -563,6 +562,7 @@ const initData = () => {
   getEventActiveList().then((res) => {
     eventList.value = res.data;
   });
+  getList();
 };
 onMounted(() => {
   initData();
@@ -656,6 +656,10 @@ onUnmounted(() => {
     left: 10px;
     width: 240px;
     background-color: #213567;
+    //&::after {
+    //  content: '';
+    //  display: inline-block;
+    //}
     .list-header {
       display: flex;
       align-items: center;

+ 41 - 0
src/views/globalMap/RightMenu/FixedPointAnalysis.vue

@@ -0,0 +1,41 @@
+<template>
+  <Dialog custom-show title="定点分析" :height="'1000px'" hide-footer @close="handleClose"></Dialog>
+</template>
+
+<script lang="ts" setup name="Fireproofing">
+
+import AMapLoader from '@amap/amap-jsapi-loader';
+import { getRainfallCode, getRainfallInfo } from '@/api/globalMap/gridPointRainfall';
+
+interface Props {
+  modelValue: boolean;
+  location?: string | number[];
+}
+const props = withDefaults(defineProps<Props>(), {});
+const emits = defineEmits(['update:modelValue']);
+let address = ref('');
+const handleClose = () => {
+  emits('update:modelValue', false);
+};
+let AMap, geocoder;
+onMounted(() => {
+  AMapLoader.load({
+    key: '30d3d8448efd68cb0b284549fd41adcf', // 申请好的Web端开发者Key,首次调用 load 时必填
+    version: '2.0', // 指定要加载的 JSAPI 的版本,缺省时默认为 1.4.15
+    plugins: ['AMap.PlaceSearch', 'AMap.ContextMenu', 'AMap.PolygonEditor', 'AMap.Geocoder'] // 插件列表
+  }).then((res) => {
+    AMap = res;
+    geocoder = new AMap.Geocoder({
+      // city 指定进行编码查询的城市,支持传入城市名、adcode 和 citycode
+      city: '010'
+    });
+    geocoder.getAddress(props.location, (status, result) => {
+      if (status === 'complete' && result.info === 'OK') {
+        address.value = result.regeocode.formattedAddress;
+      }
+    });
+  });
+});
+</script>
+
+<style lang="scss" scoped></style>

+ 20 - 2
src/views/globalMap/RightMenu/GridPointRainfall.vue

@@ -8,6 +8,7 @@
 <script lang="ts" setup name="GridPointRainfall">
 import { option9 } from '@/views/globalMap/RightMenu/echartOptions';
 import AMapLoader from '@amap/amap-jsapi-loader';
+import { getRainfallCode, getRainfallInfo } from '@/api/globalMap/gridPointRainfall';
 
 interface Props {
   modelValue: boolean;
@@ -38,8 +39,25 @@ onMounted(() => {
       }
     });
   });
-  chartOption.value.series[0].data = [820, 932, 901, 934, 1290, 1330];
-  chartOption.value.series[1].data = ['', '', '', '', '', 1330, 901, 934, 1290, 1330, 1320];
+  getRainfallCode({
+    longitude: props.location[0],
+    latitude: props.location[1]
+  }).then((res) => {
+    getRainfallInfo(res.rows[0].code).then((res2) => {
+      const data = res2.data.rainfallHistory;
+      const data2 = res2.data.rainfallFuture;
+      const data3 = [];
+      data.forEach(() => {
+        data3.push('');
+      });
+      data3[data3.length - 1] = data[data2.length - 1].value;
+      data2.forEach((item) => {
+        data3.push(item.hour);
+      });
+      chartOption.value.series[0].data = res2.data.rainfallHistory;
+      chartOption.value.series[1].data = data3;
+    });
+  });
 });
 </script>
 

+ 12 - 2
src/views/globalMap/RightMenu/index.vue

@@ -42,6 +42,8 @@
         <UAV v-if="menuState.showMenu && menuState.menuData[menuState.activeIndex]?.name === '无人机'" @handle-menu="handleMenu" />
         <!--实时标绘-->
         <OnlinePlotting v-if="menuState.showMenu && menuState.menuData[menuState.activeIndex]?.name === '实时标绘'" />
+        <!--定点分析-->
+        <FixedPointAnalysis v-if="menuState.showMenu && menuState.menuData[menuState.activeIndex]?.name === '定点分析'" :location="location2" />
         <!--雨情监测-->
         <RainMonitor v-if="menuState.showMenu && menuState.menuData[menuState.activeIndex]?.name === '雨情监测'" />
         <!--铁塔运行监测-->
@@ -92,6 +94,7 @@ import Reservoir from './Reservoir.vue';
 import SpatialAnalysis from './SpatialAnalysis.vue';
 import LayerAnalysis from './LayerAnalysis.vue';
 import OnlinePlotting from './OnlinePlotting/index.vue';
+import FixedPointAnalysis from './FixedPointAnalysis.vue';
 import UAV from './UAV.vue';
 import WarningInfo from './WarningInfo.vue';
 import { PointType } from '@/api/globalMap/type';
@@ -157,6 +160,7 @@ const clickMenu = (index) => {
   menuState.activeIndex = index;
 };
 let location = ref([]);
+let location2 = ref([]);
 // 显示菜单
 const handleMenu = (name, data) => {
   let index = menuState.menuData.findIndex((item) => {
@@ -172,9 +176,8 @@ const handleMenu = (name, data) => {
     clickMenu(index);
   }
 };
-
 // 新增菜单 type 1 新增 2 删除
-const updateMenu = (type, menu) => {
+const updateMenu = (type, menu, location?: any) => {
   if (type === '1') {
     if (menu.name === '图层分析') {
       let index = menuState.menuData.findIndex((item) => {
@@ -193,6 +196,13 @@ const updateMenu = (type, menu) => {
       menuState.menuData.splice(index, 1);
       menuState.activeIndex = 0;
     }
+  } else if (type === '4') {
+    let index = menuState.menuData.findIndex((item) => item.name === menu.name);
+    if (index > -1) {
+      menuState.menuData.splice(index, 1);
+      menuState.activeIndex = 0;
+    }
+    location2.value = location;
   }
 };
 const getMenuState = () => {

+ 9 - 1
src/views/globalMap/index.vue

@@ -59,7 +59,10 @@ let leftMenuRef = ref(null);
 //  vectorgraph satellite imageMap 废弃:logical satellite2 satellite3
 let activeMap = ref('satellite');
 // 附近视频菜单数据
-let tempMenu = ref({});
+let tempMenu = ref({
+  name: '',
+  checked: false
+});
 const communicationSupport = reactive({
   show: false,
   data: {}
@@ -275,6 +278,11 @@ const handleClickMap = (e) => {
     showNearbyVideos.value = true;
   } else if (!!tempMenu.value && tempMenu.value.name === '格点雨量') {
     showRainfall.value = true;
+  } else if (!!tempMenu.value && tempMenu.value.name === '定点分析') {
+    const item = deepClone(tempMenu.value);
+    tempMenu.value = {};
+    map.off('click', handleClickMap);
+    rightMenuRef.value.updateMenu(item.checked ? '1' : '2', item, location.value);
   }
 };
 let showWarehouse = ref(false);