Forráskód Böngészése

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

hmm 6 hónapja
szülő
commit
276f2f1e18

+ 8 - 0
src/api/comprehensiveGuarantee/reliefResourceManagement/reliefTalents.ts

@@ -0,0 +1,8 @@
+import request from '@/utils/request';
+export function getPersonnel(params) {
+  return request({
+    url: '/api/resource_provison/emergency/rescue_personnel/',
+    method: 'get',
+    params: params
+  });
+}

+ 68 - 66
src/views/comprehensiveGuarantee/materialReserves/materialsDistributionView.vue

@@ -1,81 +1,83 @@
 <template>
-  <div class="app-container p-2">
-    <el-row :gutter="20">
-      <el-col :span="20">
-        <h2>详情</h2>
-        <div class="report-info">
-          <p class="report-amount">调度目的:应对高州泰利台风前置</p>
-          <p class="approval-status">审批情况:{{ approvalStatus }}</p>
+  <div class="common-dialog">
+    <div class="common-dialog-content">
+      <div class="common-dialog-title-box">
+        <h3 class="common-dialog-title">查看详情</h3>
+      </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>
+          <el-form-item label="所属区县:" prop="county">
+            <el-input v-model="formData.county" style="width: 468px !important" disabled />
+          </el-form-item>
+          <el-form-item label="专家类型:" prop="expert_type">
+            <el-input v-model="formData.expert_type" style="width: 468px !important" disabled />
+          </el-form-item>
+          <el-form-item label="职位:" prop="position">
+            <el-input v-model="formData.position" style="width: 468px !important" disabled />
+          </el-form-item>
+          <el-form-item label="单位:" prop="unit">
+            <el-input v-model="formData.unit" style="width: 468px !important" disabled />
+          </el-form-item>
+          <el-form-item label="联系电话:" prop="phone">
+            <el-input v-model="formData.phone" style="width: 468px !important" disabled />
+          </el-form-item>
+          <el-form-item label="现在地址:" prop="address">
+            <el-input v-model="formData.address" style="width: 468px !important" disabled />
+          </el-form-item>
+          <el-form-item label="状态:" prop="status">
+            <el-input v-model="formData.status" style="width: 468px !important" disabled />
+          </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>
+          <el-form-item label="救援经历:" prop="rescue_experience">
+            <el-input v-model="formData.rescue_experience" style="width: 468px !important" disabled />
+          </el-form-item>
+          <el-form-item label="出生日期:" prop="birthdate">
+            <el-input v-model="formData.birthdate" style="width: 468px !important" disabled />
+          </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>
+        </el-form>
+        <div class="common-dialog-footer">
+          <el-button type="primary" @click="closeDialog">返回</el-button>
         </div>
-      </el-col>
-      <el-col :lg="24" :xs="24">
-        <el-table :data="tableData" border height="400">
-          <el-table-column label="序号" prop="seqNo" width="80">
-            <template #default="{ $index }">
-              <span>{{ $index + 1 }}</span>
-            </template>
-          </el-table-column>
-          <el-table-column label="物资类型" prop="materialType"></el-table-column>
-          <el-table-column label="物资名称" prop="materialName"></el-table-column>
-          <el-table-column label="物资数量(件)" prop="quantity"></el-table-column>
-          <el-table-column label="物资用途" prop="purpose"></el-table-column>
-        </el-table>
-      </el-col>
-      <div class="common-dialog-footer" style="width: 100%; justify-content: center; display: flex">
-        <el-row :span="24" :gutter="10" class="mb8">
-          <el-col :span="1.5">
-            <el-button type="danger" @click="handleReturn">返回</el-button>
-          </el-col>
-        </el-row>
       </div>
-    </el-row>
+    </div>
   </div>
 </template>
 
 <script setup lang="ts">
-import { ref } from 'vue';
-import { ElTable, ElButton, ElCol, ElRow, ElTableColumn } from 'element-plus';
-import { defineProps, defineEmits } from 'vue';
-
-const props = defineProps({
-  eventId: String
-});
+import { ref, watch } from 'vue';
 
 const emits = defineEmits(['close']);
+const props = defineProps<{
+  eventId: string | number;
+}>();
 
-// 静态数据
-const tableData = ref([
-  { materialType: '三防物资', materialName: '雨衣', quantity: '100', purpose: '高州泰利台风前置' },
-  { materialType: '三防物资', materialName: '水鞋', quantity: '10', purpose: '高州泰利台风前置' },
-  { materialType: '三防物资', materialName: '雨伞', quantity: '50', purpose: '高州泰利台风前置' }
-]);
-
-const approvalStatus = ref('待审批');
+// 模拟的数据
+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'
+});
 
-const handleReturn = () => {
+const closeDialog = () => {
   emits('close');
 };
 </script>
 
-<style scoped>
-.app-container {
-  font-family: Avenir, Helvetica, Arial, sans-serif;
-  -webkit-font-smoothing: antialiased;
-  -moz-osx-font-smoothing: grayscale;
-  text-align: center;
-  color: #2c3e50;
-}
-
-.report-info {
-  display: flex;
-  justify-content: space-between;
-  align-items: center;
-  margin-top: 10px;
-}
-
-.report-amount,
-.approval-status {
-  font-size: 14px;
-  color: #606266;
-}
-</style>
+<style scoped></style>

+ 144 - 0
src/views/comprehensiveGuarantee/reliefResourceManagement/reliefTalents.vue

@@ -0,0 +1,144 @@
+<template>
+  <div class="app-container">
+    <div v-show="!reliefTalentsAddState.show && !reliefTalentsEditState.show && !reliefTalentsViewState.show">
+      <h1>物资储备管理</h1>
+      <el-row :gutter="10" class="mb8">
+        <el-col :span="1.5">
+          <el-button type="primary" icon="Plus" @click="handleAdd">录入</el-button>
+        </el-col>
+        <el-col :span="1.5">
+          <el-button type="primary" icon="Plus" @click="handleAdds">批量导入</el-button>
+        </el-col>
+      </el-row>
+      <!-- 表格组件 -->
+      <el-table ref="multipleTable" v-loading="loading" :data="tableData" style="width: 100%" :max-height="400">
+        <el-table-column label="序号" align="center" width="55" fixed="left">
+          <template #default="scope">
+            {{ (queryParams.page - 1) * queryParams.pageSize + scope.$index + 1 }}
+          </template>
+        </el-table-column>
+        <el-table-column label="姓名" align="center" prop="name" />
+        <el-table-column label="联系电话" align="center" prop="contact_number" />
+        <el-table-column label="性别" align="center" prop="gender" />
+        <el-table-column label="现在地址" align="center" prop="current_address" />
+        <el-table-column label="职务" align="center" prop="position" />
+        <el-table-column label="所属救援人员单位" align="center" prop="unit_id" />
+        <el-table-column label="操作" align="center" class-name="small-padding fixed-width" fixed="right" width="200">
+          <template #default="scope">
+            <el-text class="common-btn-text-primary" @click="handleView(scope.row)">查看</el-text>
+            <el-text class="common-btn-text-primary" @click="handleUpdate(scope.row)">修改</el-text>
+          </template>
+        </el-table-column>
+      </el-table>
+      <pagination
+        v-show="total > 0"
+        v-model:page="queryParams.page"
+        v-model:limit="queryParams.pageSize"
+        :total="total"
+        @pagination="fetchWorkrData"
+      />
+    </div>
+    <ReliefTalentsAdd v-if="reliefTalentsAddState.show" @close="handleCancel" />
+    <ReliefTalentsEdit v-if="reliefTalentsEditState.show" :event-id="reliefTalentsEditState.eventId" @close="handleCancel" />
+    <ReliefTalentsView v-if="reliefTalentsViewState.show" :event-id="reliefTalentsViewState.eventId" @close="handleCancel" />
+  </div>
+</template>
+
+<script setup lang="ts">
+import { onMounted, reactive, ref, toRefs } from 'vue';
+import { ElTable, ElTableColumn, ElButton, ElText } from 'element-plus';
+import { ComponentInternalInstance, getCurrentInstance } from 'vue';
+import { getPersonnel } from '@/api/comprehensiveGuarantee/reliefResourceManagement/reliefTalents';
+import Pagination from '@/components/Pagination/index.vue';
+import ReliefTalentsAdd from './reliefTalentsAdd.vue';
+import ReliefTalentsEdit from './reliefTalentsEdit.vue';
+import ReliefTalentsView from './reliefTalentsView.vue';
+const loading = ref(true);
+const showSearch = ref(true);
+const multiple = ref(true);
+const ids = ref<Array<number | string>>([]);
+const single = ref(true);
+const total = ref(0);
+const tableData = ref<any[]>([]);
+const selectedRow = ref<any | null>(null);
+
+const { proxy } = getCurrentInstance() as ComponentInternalInstance;
+
+const initFormData = reactive({
+  name: '',
+  contact_number: '',
+  gender: '',
+  current_address: '',
+  position: '',
+  unit_id: ''
+});
+
+const data = reactive({
+  form: { ...initFormData },
+  queryParams: {
+    page: 1,
+    pageSize: 10
+  }
+});
+
+const { queryParams, form } = toRefs(data);
+
+const fetchWorkrData = async () => {
+  try {
+    loading.value = true;
+    const response = await getPersonnel(queryParams.value);
+    if (response.code === 200) {
+      tableData.value = response.data;
+      total.value = response.data.length;
+    } else {
+      console.error('获取数据失败:', response.msg);
+    }
+  } catch (error) {
+    console.error('请求数据时发生错误:', error);
+  } finally {
+    loading.value = false;
+  }
+};
+
+let reliefTalentsViewState = reactive({
+  show: false,
+  eventId: ''
+});
+
+let reliefTalentsEditState = reactive({
+  show: false,
+  eventId: ''
+});
+let reliefTalentsAddState = reactive({
+  show: false
+});
+const handleAdd = () => {
+  reliefTalentsAddState.show = true;
+};
+
+const handleView = (row: any) => {
+  reliefTalentsViewState.eventId = row.id;
+  reliefTalentsViewState.show = true;
+};
+
+const handleUpdate = (row: any) => {
+  reliefTalentsEditState.eventId = row.id;
+  reliefTalentsEditState.show = true;
+};
+
+const handleCancel = () => {
+  reliefTalentsViewState.show = false;
+  reliefTalentsEditState.show = false;
+  reliefTalentsAddState.show = false;
+};
+
+onMounted(() => {
+  fetchWorkrData();
+});
+</script>
+
+<style scoped>
+.app-container {
+  overflow-x: auto; /* 当内容溢出时允许水平滚动 */
+}
+</style>

+ 11 - 0
src/views/comprehensiveGuarantee/reliefResourceManagement/reliefTalentsAdd.vue

@@ -0,0 +1,11 @@
+<script setup lang="ts">
+
+</script>
+
+<template>
+
+</template>
+
+<style scoped lang="scss">
+
+</style>

+ 11 - 0
src/views/comprehensiveGuarantee/reliefResourceManagement/reliefTalentsEdit.vue

@@ -0,0 +1,11 @@
+<script setup lang="ts">
+
+</script>
+
+<template>
+
+</template>
+
+<style scoped lang="scss">
+
+</style>

+ 68 - 0
src/views/comprehensiveGuarantee/reliefResourceManagement/reliefTalentsView.vue

@@ -0,0 +1,68 @@
+<template>
+  <div class="app-container p-2">
+    <el-row :gutter="20">
+      <el-col :span="20">
+        <h2>详情</h2>
+      </el-col>
+      <el-col :lg="24" :xs="24">
+        <el-table :data="tableData" border height="400">
+          <el-table-column label="序号" prop="seqNo" width="80">
+            <template #default="{ $index }">
+              <span>{{ $index + 1 }}</span>
+            </template>
+          </el-table-column>
+          <el-table-column label="物资类型" prop="materialType"></el-table-column>
+          <el-table-column label="物资名称" prop="materialName"></el-table-column>
+          <el-table-column label="物资数量(件)" prop="quantity"></el-table-column>
+          <el-table-column label="物资用途" prop="purpose"></el-table-column>
+        </el-table>
+      </el-col>
+      <div class="common-dialog-footer" style="width: 100%; justify-content: center; display: flex">
+        <el-row :span="24" :gutter="10" class="mb8">
+          <el-col :span="1.5">
+            <el-button type="danger" @click="handleReturn">返回</el-button>
+          </el-col>
+        </el-row>
+      </div>
+    </el-row>
+  </div>
+</template>
+
+<script setup lang="ts">
+import { ref } from 'vue';
+import { ElTable, ElButton, ElCol, ElRow, ElTableColumn } from 'element-plus';
+import { defineProps, defineEmits } from 'vue';
+
+const props = defineProps({
+  eventId: String
+});
+
+const emits = defineEmits(['close']);
+
+const handleReturn = () => {
+  emits('close');
+};
+</script>
+
+<style scoped>
+.app-container {
+  font-family: Avenir, Helvetica, Arial, sans-serif;
+  -webkit-font-smoothing: antialiased;
+  -moz-osx-font-smoothing: grayscale;
+  text-align: center;
+  color: #2c3e50;
+}
+
+.report-info {
+  display: flex;
+  justify-content: space-between;
+  align-items: center;
+  margin-top: 10px;
+}
+
+.report-amount,
+.approval-status {
+  font-size: 14px;
+  color: #606266;
+}
+</style>