Selaa lähdekoodia

三防责任人-首页和详情的接口联调

hmm 5 kuukautta sitten
vanhempi
commit
8115ee7882

+ 47 - 0
src/api/PreventionResponsible/index.ts

@@ -0,0 +1,47 @@
+import { AxiosPromise } from 'axios';
+import { UserInfoVO } from '@/api/system/user/types';
+import request from '@/utils/request';
+import { parseStrEmpty } from '@/utils/ruoyi';
+
+// 首页列表查询
+export function getTableList(params) {
+  return request({
+    url: '/api/ThreeProofingResponsible/person/list',
+    method: 'get',
+    params: params
+  });
+}
+
+// 查询详情页面
+export function responsibleDetail(id) {
+  return request({
+    url: `/api/ThreeProofingResponsible/person/info/${id}`,
+    method: 'get'
+  });
+}
+
+// 新建联系人
+export function crateData(data) {
+  return request({
+    url: '/api/ThreeProofingResponsible/person/create',
+    method: 'post',
+    data: data
+  });
+}
+
+// 修改
+export function updateData(data) {
+  return request({
+    url: '/api/ThreeProofingResponsible/person/update',
+    method: 'put',
+    data: data
+  });
+}
+
+// 删除
+export function deleteData(id) {
+  return request({
+    url: `/api/ThreeProofingResponsible/person/delete/${id}`,
+    method: 'delete'
+  });
+}

+ 17 - 17
src/views/dataFilling/dossierDetail.vue

@@ -35,15 +35,15 @@
 import { ref, onMounted } from 'vue';
 import { ElTable, ElButton, ElCol, ElRow, ElTableColumn } from 'element-plus';
 import * as XLSX from 'xlsx';
-import { fillDetail,collectList } from "@/api/dataFilling/fileManagement";
+import { fillDetail, collectList } from '@/api/dataFilling/fileManagement';
 
 const emits = defineEmits(['close']);
 const props = defineProps({
-  eventId: String | Number,
+  eventId: String | Number
   // table_name: string
 });
 //初始化表头和表格数据
-const editableHeaders = ref([])
+const editableHeaders = ref([]);
 const tableData = ref([]);
 const detailData = ref({
   title: '',
@@ -57,14 +57,13 @@ onMounted(() => {
 
 const fetchFillDetail = async () => {
   try {
-
     const res = await fillDetail({ report_id: props.eventId });
     // 动态设置表头
     editableHeaders.value = res.columns;
     // 转换表格数据格式以匹配表头
-    tableData.value = res.rows.map(row => {
+    tableData.value = res.rows.map((row) => {
       const formattedRow = {};
-      editableHeaders.value.forEach(header => {
+      editableHeaders.value.forEach((header) => {
         formattedRow[header.prop] = row[header.prop];
       });
       return formattedRow;
@@ -80,25 +79,26 @@ const fetchFillDetail = async () => {
 const handleWrite = () => {
   if (props.eventId && props.eventId !== '') {
     const data = {
-      report_id:  props.eventId,
+      report_id: props.eventId,
       creator_id: 3,
       new_status: 2
     };
-    collectList(data).then(response => {
-      if (response.code === 200) {
-        console.log(response.msg);
-      } else {
-        console.error('更新失败', response.msg);
-      }
-    }).catch(error => {
-      console.error('请求失败', error);
-    });
+    collectList(data)
+      .then((response) => {
+        if (response.code === 200) {
+          console.log(response.msg);
+        } else {
+          console.error('更新失败', response.msg);
+        }
+      })
+      .catch((error) => {
+        console.error('请求失败', error);
+      });
   }
 };
 const handleReturn = () => {
   emits('close');
 };
-
 </script>
 
 <style scoped>

+ 147 - 0
src/views/setting/PreventionResponsible/add.vue

@@ -0,0 +1,147 @@
+<template>
+  <div class="common-dialog">
+    <div class="common-dialog-content">
+      <div class="common-dialog-title-box">
+        <i class="common-dialog-title-icon" />
+        <div>{{ props.id ? '修改三防责任人信息' : '新建三防责任人信息' }}</div>
+      </div>
+      <div class="common-dialog-box">
+        <el-form ref="formRef" :model="form" :rules="rules" label-width="160px">
+          <el-form-item label="姓名:" prop="name">
+            <el-input v-model="form.name" placeholder="请输入姓名" />
+          </el-form-item>
+          <el-form-item label="电话号码:" prop="phone">
+            <el-input v-model="form.phone" placeholder="请输入电话号码" />
+          </el-form-item>
+          <el-form-item label="所属单位:" prop="unit_name">
+            <el-input v-model="form.unit_name" placeholder="例如:XX市XX县人民政府" />
+            <span style="color: #999; font-size: 12px; margin-left: 5px;">请使用单位全称</span>
+          </el-form-item>
+          <el-form-item label="职务:" prop="position">
+            <el-input v-model="form.position" placeholder="例如:县长/办公室主任/办事员等" />
+          </el-form-item>
+          <el-form-item label="行政区划" prop="area_code">
+            <template>
+              <el-cascader :props="props" />
+            </template>
+          </el-form-item>
+          <el-form-item label="排位顺序:" prop="order_num">
+            <el-input v-model="form.order_num" placeholder="例如:请输入排位序号1-999" />
+            <span style="color: #999; font-size: 12px; margin-left: 5px;">序号数值越小越靠前</span>
+          </el-form-item>
+          <el-form-item label="选择类别:" prop="category">
+            <el-checkbox-group v-model="checkboxGroup2">
+              <el-checkbox-button v-for="city in cities" :key="city" :value="city">
+                {{ city }}
+              </el-checkbox-button>
+            </el-checkbox-group>
+          </el-form-item>
+          <el-card style="max-width: 480px">
+            <template #header>
+              <div class="card-header">
+                <span>Card name</span>
+              </div>
+            </template>
+            <p v-for="o in 4" :key="o" class="text item">{{ 'List item ' + o }}</p>
+            <template #footer>Footer content</template>
+          </el-card>
+        </el-form>
+        <div class="common-dialog-footer">
+          <el-button @click="closeDialog">取消</el-button>
+          <el-button :loading="buttonLoading" type="primary" @click="submitForm(formRef)">确定</el-button>
+        </div>
+      </div>
+    </div>
+  </div>
+</template>
+
+<script setup lang="ts">
+import { ref, toRefs } from 'vue';
+import { deptList } from '@/api/inspectionWork/inspector';
+import {
+  createMaterialWarehouse,
+  getMaterialWarehouseInfo,
+  updateMaterialWarehouse
+} from '@/api/comprehensiveGuarantee/materialReserveManagement/godownManagement';
+
+import { crateData } from '@/api/PreventionResponsible';
+const cities = ['党委政府', '三防指挥部', '应急部门', '成员单位', '重点部门', '行政村', '水利工程', '受威胁转移', '抢险队伍', '地质灾害', '其他']
+const { proxy } = getCurrentInstance() as ComponentInternalInstance;
+const props = defineProps({
+  id: String
+});
+const buttonLoading = ref(false);
+const { form, rules } = toRefs(data);
+// 表单数据
+const data = reactive({
+  form: {
+    unit_name: '',
+    name: '',
+    area_code: '',
+    position: '',
+    phone: '',
+    order_num: '',
+    type_list: []
+  },
+  rules: {
+    warehouse_name: [{ required: true, message: '仓库名称不能为空', trigger: 'blur' }],
+    area_name: [{ required: true, message: '所属区县不能为空', trigger: 'change' }],
+    status: [{ required: true, message: '状态不能为空', trigger: 'change' }],
+    contact_person: [{ required: true, message: '联系人不能为空', trigger: 'blur' }],
+    contact_phone: [
+      { required: true, message: '联系电话不能为空', trigger: 'blur' },
+      { validator: validatePhone, message: '请输入正确格式的联系电话', trigger: 'blur' }
+    ],
+    address: [{ required: true, message: '联系地址不能为空', trigger: 'blur' }],
+    longitude: [{ required: true, message: '经度不能为空', trigger: 'blur' }],
+    latitude: [{ required: true, message: '纬度不能为空', trigger: 'blur' }],
+    type: [{ required: true, message: '类型不能为空', trigger: 'change' }],
+    level: [{ required: true, message: '等级不能为空', trigger: 'change' }],
+    storage_dept_id: [{ required: true, message: '物资保管部门名称不能为空', trigger: 'change' }],
+    area: [{ required: true, message: '占地面积不能为空', trigger: 'blur' }]
+  }
+});
+const emits = defineEmits(['close']);
+const closeDialog = () => {
+  emits('close');
+};
+const submitForm = async (formEl) => {
+  if (!formEl) return;
+  await formEl.validate((valid, fields) => {
+    if (valid) {
+      if (props.id) {
+        updateData(form.value).then(() => {
+          proxy.$modal.msgSuccess('修改成功');
+          emits('close', true);
+        });
+      } else {
+        crateData(form.value).then(() => {
+          proxy.$modal.msgSuccess('新增成功');
+          emits('close', true);
+        });
+      }
+    } else {
+      nextTick(() => {
+        let isError = document.getElementsByClassName('is-error');
+        isError[0].scrollIntoView({
+          // 滚动到指定节点
+          // 值有start,center,end,nearest,当前显示在视图区域中间
+          block: 'center',
+          // 值有auto、instant,smooth,缓动动画(当前是慢速的)
+          behavior: 'smooth'
+        });
+      });
+      proxy.$modal.msgError('表单校验失败');
+      return false;
+    }
+  });
+};
+
+onMounted(() => {
+  getMaterialWarehouseInfo(props.id).then((res) => {
+    form.value = res.data;
+  });
+});
+</script>
+
+<style scoped lang="scss"></style>

+ 33 - 25
src/views/setting/PreventionResponsible/detail.vue

@@ -18,13 +18,14 @@
       <div class="common-info-content">
         <div class="common-info-item">姓名:{{ formData.name }}</div>
         <div class="common-info-item">电话号码:{{ formData.phone }}</div>
-        <div class="common-info-item">所属单位:{{ formData.unit }}</div>
-        <div class="common-info-item">职务:{{ formData.job }}</div>
-        <div class="common-info-item">行政区划:{{ formData.division }}</div>
-        <div class="common-info-item">办公电话:{{ formData.OfficePhone }}</div>
-        <div class="common-info-item">排位顺序:{{ formData.rank }}</div>
-        <div class="common-info-item">录入人员:{{ formData.EntryPerson }}</div>
-        <div class="common-info-item">录入时间:{{ formData.EntryTime }}</div>
+        <div class="common-info-item">所属单位:{{ formData.unit_name }}</div>
+        <div class="common-info-item">职务:{{ formData.position }}</div>
+
+        <div class="common-info-item">行政区划:{{ formData.area_code }}</div>
+        <!--        <div class="common-info-item">办公电话:{{ formData.OfficePhone }}</div>-->
+        <div class="common-info-item">排位顺序:{{ formData.order_num }}</div>
+        <!--        <div class="common-info-item">录入人员:{{ formData.EntryPerson }}</div>-->
+        <div class="common-info-item">录入时间:{{ formData.create_time }}</div>
       </div>
     </div>
     <div class="common-info-box">
@@ -32,9 +33,11 @@
         <i class="line-icon" />
         <div class="common-info-title">责任类别</div>
       </div>
-      <div style="padding: 10px">
-        <div class="common-info-item">责任类型:{{ formData.department }}</div>
-        <div class="common-info-item">责任类别:{{ formData.ResponsibilityCategory }}</div>
+      <div class="common-info-content">
+        <div v-for="(item, index) in formData.type_list" :key="index" class="common-info-item">
+          <div>{{ item.type_parent }}</div>
+          <div style="margin-left: 10px;">责任类别:{{ item.type_name }}</div>
+        </div>
       </div>
     </div>
   </div>
@@ -44,41 +47,46 @@
 import { ref, onMounted } from 'vue';
 import { ElMessage } from 'element-plus';
 import { getPersonnel2 } from '@/api/comprehensiveGuarantee/reliefResourceManagement/reliefTalents';
+import { responsibleDetail } from '@/api/PreventionResponsible';
 
 const emits = defineEmits(['close']);
 const props = defineProps<{
-  eventId: string | number;
+  id: string | number;
 }>();
 
 const formData = ref({
-  id: '',
+  unit_id: '',
+  unit_name: '',
   name: '',
+  area_code: '',
+  position: '',
   phone: '',
-  unit: '',
-  job: '',
-  division: '',
-  OfficePhone: '',
-  rank: '',
-  EntryPerson: '',
-  EntryTime: '',
-  department: '',
-  ResponsibilityCategory: ''
+  order_num: '',
+  create_time: '',
+  type_list: []
 });
 
 const closeDialog = () => {
   emits('close');
 };
 
-const fetchPersonnelData = async () => {
-  const response = await getPersonnel2(props.eventId);
+// 返回上一级
+const goBack = () => {
+  // router.go(-1);
+  emits('close');
+};
+
+const fetchData = async () => {
+  const response = await responsibleDetail(props.id);
   if (response.code === 200) {
-    formData.value = response.personnel;
+    formData.value = response.data;
   } else {
     ElMessage.error('未找到相关数据');
   }
 };
+
 onMounted(() => {
-  fetchPersonnelData();
+  fetchData();
 });
 </script>
 

+ 165 - 223
src/views/setting/PreventionResponsible/index.vue

@@ -1,84 +1,111 @@
 <template>
-  <div class="app-container">
-    <el-row :gutter="20">
-      <el-col :lg="4" :xs="24" style="">
-        <el-input v-model="deptName" placeholder="请输入部门名称" prefix-icon="Search" clearable />
-        <el-tree
-          ref="deptTreeRef"
-          class="mt-2"
-          node-key="id"
-          :data="deptOptions"
-          :props="{ label: 'label', children: 'children' }"
-          :expand-on-click-node="false"
-          :filter-node-method="filterNode"
-          highlight-current
-          default-expand-all
-          @node-click="handleNodeClick"
-        />
-      </el-col>
-      <el-col :lg="20" :xs="24">
-        <transition :enter-active-class="proxy?.animate.searchAnimate.enter" :leave-active-class="proxy?.animate.searchAnimate.leave">
-          <div v-show="showSearch" class="mb-[10px]">
-            <h1>茂名市责任人列表</h1>
-            <el-form ref="queryFormRef" :model="queryParams" :inline="true">
-              <el-form-item>
-                <el-button type="primary">批量导出</el-button>
-                <el-button type="primary" @click="handleUpload">批量导入</el-button>
-                <el-button type="primary">新增责任人</el-button>
-                <el-button type="primary" @click="handleShowUploadDetails">查看导入情况</el-button>
-              </el-form-item>
-              <el-form-item label="姓名:" prop="userName" label-width="auto">
-                <el-input v-model="queryParams.userName" placeholder="请输入联系人" clearable @keyup.enter="handleQuery" />
-              </el-form-item>
-              <el-form-item>
-                <el-button type="primary" icon="Search" @click="handleQuery">搜索</el-button>
-                <el-button icon="Refresh" @click="resetQuery">重置</el-button>
-              </el-form-item>
-            </el-form>
-          </div>
-        </transition>
-
-        <el-table v-loading="loading" :data="userList" @selection-change="handleSelectionChange">
-          <el-table-column type="selection" width="50" align="center" />
-          <el-table-column v-if="columns[0].visible" key="userId" label="用户编号" align="center" prop="userId" />
-          <el-table-column
-            v-if="columns[1].visible"
-            key="userName"
-            label="姓名"
-            align="center"
-            prop="userName"
-            :show-overflow-tooltip="true"
-            width="120"
-          />
-          <el-table-column v-if="columns[2].visible" key="nickName" label="行政区划" align="center" prop="deptName" :show-overflow-tooltip="true" />
-          <el-table-column v-if="columns[3].visible" key="deptName" label="所属单位" align="center" prop="deptName" :show-overflow-tooltip="true" />
-          <el-table-column v-if="columns[4].visible" key="phonenumber" label="职务" align="center" prop="phonenumber" width="120" />
-          <el-table-column v-if="columns[5].visible" key="status" label="电话号码" align="center" prop="phonenumber" width="120" />
-          <el-table-column v-if="columns[6].visible" label="责任类型" align="center" prop="createTime" width="160">
-            <template #default="scope">
-              <span>{{ scope.row.createTime }}</span>
-            </template>
-          </el-table-column>
-          <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
-            <template #default="scope">
-              <el-text v-hasPermi="['system:menu:resetPwd']" class="common-btn-text-primary" @click="handleResetPwd(scope.row)">查看详情</el-text>
-              <el-text v-hasPermi="['system:menu:edit']" class="common-btn-text-primary" @click="handleUpdate(scope.row)">修改</el-text>
-              <el-text v-hasPermi="['system:menu:remove']" class="common-btn-text-danger" @click="handleDelete(scope.row)">删除</el-text>
-            </template>
-          </el-table-column>
-        </el-table>
-
-        <pagination v-show="total > 0" v-model:page="queryParams.pageNum" v-model:limit="queryParams.pageSize" :total="total" @pagination="getList" />
-      </el-col>
-    </el-row>
-    <DataImport v-model="uploadShow" url="" file-name="责任人信息批量导入模板" stepsText="责任人信息" />
-    <DataImportDetail v-model="showUploadDetails" />
+  <div>
+    <div class="app-container">
+      <div v-show="!dialog.visible && !detailState.show && !addState.show">
+        <el-row :gutter="20">
+          <el-col :lg="4" :xs="24" style="">
+            <el-input v-model="deptName" placeholder="请输入部门名称" prefix-icon="Search" clearable />
+            <el-tree
+              ref="deptTreeRef"
+              class="mt-2"
+              node-key="id"
+              :data="deptOptions"
+              :props="{ label: 'label', children: 'children' }"
+              :expand-on-click-node="false"
+              :filter-node-method="filterNode"
+              highlight-current
+              default-expand-all
+              @node-click="handleNodeClick"
+            />
+          </el-col>
+          <el-col :lg="20" :xs="24">
+            <transition :enter-active-class="proxy?.animate.searchAnimate.enter" :leave-active-class="proxy?.animate.searchAnimate.leave">
+              <div v-show="showSearch" class="mb-[10px]">
+                <h1>茂名市责任人列表</h1>
+                <el-form ref="queryFormRef" :model="queryParams" :inline="true">
+                  <el-form-item>
+                    <el-button type="primary">批量导出</el-button>
+                    <el-button type="primary" @click="handleUpload">批量导入</el-button>
+                    <el-button type="primary" @click="handleAdd">新建责任人</el-button>
+                    <el-button type="primary" @click="handleShowUploadDetails">查看导入情况</el-button>
+                  </el-form-item>
+                  <el-form-item label="姓名:" prop="Name" label-width="auto">
+                    <el-input v-model="queryParams.Name" placeholder="请输入联系人" clearable @keyup.enter="handleQuery" />
+                  </el-form-item>
+                  <el-form-item>
+                    <el-button type="primary" icon="Search" @click="handleQuery">搜索</el-button>
+                    <el-button icon="Refresh" @click="resetQuery">重置</el-button>
+                  </el-form-item>
+                </el-form>
+              </div>
+            </transition>
+            <el-table v-loading="loading" :data="userList" @selection-change="handleSelectionChange">
+              <el-table-column type="selection" width="50" align="center" />
+              <el-table-column v-if="columns[0].visible" key="userId" label="用户编号" align="center" prop="userId" />
+              <el-table-column
+                v-if="columns[1].visible"
+                key="name"
+                label="姓名"
+                align="center"
+                prop="name"
+                :show-overflow-tooltip="true"
+                width="120"
+              />
+              <el-table-column
+                v-if="columns[2].visible"
+                key="area_code"
+                label="行政区划"
+                align="center"
+                prop="area_code"
+                :show-overflow-tooltip="true"
+              />
+              <el-table-column
+                v-if="columns[3].visible"
+                key="unit_name"
+                label="所属单位"
+                align="center"
+                prop="unit_name"
+                :show-overflow-tooltip="true"
+              />
+              <el-table-column v-if="columns[4].visible" key="position" label="职务" align="center" prop="position" width="120" />
+              <el-table-column v-if="columns[5].visible" key="phone" label="电话号码" align="center" prop="phone" width="120" />
+              <el-table-column v-if="columns[6].visible" label="责任类型" align="center" prop="type_parent_list" width="160">
+                <template #default="scope">
+                  <span v-for="(typeParent, index) in scope.row.type_parent_list" :key="index">
+                    {{ typeParent.type_parent }}
+                  </span>
+                </template>
+              </el-table-column>
+              <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
+                <template #default="scope">
+                  <el-text v-hasPermi="['system:menu:resetPwd']" class="common-btn-text-primary" @click="handleView(scope.row)">查看详情</el-text>
+                  <el-text v-hasPermi="['system:menu:edit']" class="common-btn-text-primary" @click="handleUpdate(scope.row)">修改</el-text>
+                  <el-text v-hasPermi="['system:menu:remove']" class="common-btn-text-danger" @click="handleDelete(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="getList"
+            />
+          </el-col>
+        </el-row>
+      </div>
+      <DataImport v-model="uploadShow" url="" file-name="责任人信息批量导入模板" steps-text="责任人信息" />
+      <DataImportDetail v-model="showUploadDetails" />
+      <detail v-if="detailState.show" :id="detailState.id" @close="handledetailClose"></detail>
+      <add v-if="addState.show" :id="addState.id" @close="handleAddClose"></add>
+    </div>
   </div>
 </template>
 
 <script setup lang="ts">
 import api from '@/api/system/user';
 import { UserForm, UserQuery, UserVO } from '@/api/system/user/types';
+import { deleteData, getTableList } from '@/api/PreventionResponsible/index';
 import { DeptVO } from '@/api/system/dept/types';
 import { RoleVO } from '@/api/system/role/types';
 import { PostQuery, PostVO } from '@/api/system/post/types';
@@ -86,6 +113,9 @@ import { treeselect } from '@/api/system/dept';
 import { globalHeaders } from '@/utils/request';
 import { to } from 'await-to-js';
 import { optionselect } from '@/api/system/post';
+import detail from '@/views/setting/PreventionResponsible/detail.vue';
+import { reactive, ref } from 'vue';
+import { deleteMaterialRoot } from '@/api/comprehensiveGuarantee/materialReserveManagement/warehouseManagement';
 
 const router = useRouter();
 const { proxy } = getCurrentInstance() as ComponentInternalInstance;
@@ -102,37 +132,20 @@ const deptOptions = ref<DeptVO[]>([]);
 const initPassword = ref<string>('');
 const postOptions = ref<PostVO[]>([]);
 const roleOptions = ref<RoleVO[]>([]);
-/*** 用户导入参数 */
-const upload = reactive<ImportOption>({
-  // 是否显示弹出层(用户导入)
-  open: false,
-  // 弹出层标题(用户导入)
-  title: '',
-  // 是否禁用上传
-  isUploading: false,
-  // 是否更新已经存在的用户数据
-  updateSupport: 0,
-  // 设置上传的请求头部
-  headers: globalHeaders(),
-  // 上传的地址
-  url: import.meta.env.VITE_APP_BASE_API + '/system/user/importData'
-});
 // 列显隐信息
 const columns = ref<FieldOption[]>([
   { key: 0, label: `用户编号`, visible: false, children: [] },
-  { key: 1, label: `用户名称`, visible: true, children: [] },
-  { key: 2, label: `用户昵称`, visible: true, children: [] },
-  { key: 3, label: `部门`, visible: true, children: [] },
-  { key: 4, label: `手机号码`, visible: true, children: [] },
-  { key: 5, label: `状态`, visible: true, children: [] },
-  { key: 6, label: `创建时间`, visible: true, children: [] }
+  { key: 1, label: `姓名`, visible: true, children: [] },
+  { key: 2, label: `行政区划`, visible: true, children: [] },
+  { key: 3, label: `所属单位`, visible: true, children: [] },
+  { key: 4, label: `职务`, visible: true, children: [] },
+  { key: 5, label: `电话号码`, visible: true, children: [] },
+  { key: 6, label: `责任类型`, visible: true, children: [] }
 ]);
 
 const deptTreeRef = ref<ElTreeInstance>();
 const queryFormRef = ref<ElFormInstance>();
 const userFormRef = ref<ElFormInstance>();
-const uploadRef = ref<ElUploadInstance>();
-const formDialogRef = ref<ElDialogInstance>();
 
 const dialog = reactive<DialogOption>({
   visible: false,
@@ -140,30 +153,21 @@ const dialog = reactive<DialogOption>({
 });
 
 const initFormData: UserForm = {
-  userId: undefined,
-  deptId: undefined,
-  userName: '',
-  nickName: undefined,
-  password: '',
-  phonenumber: undefined,
-  email: undefined,
-  sex: undefined,
-  status: '0',
-  remark: '',
-  postIds: [],
-  roleIds: []
+  id: undefined,
+  name: '',
+  area_code: '',
+  unit_name: '',
+  position: '',
+  phone: '',
+  type_parent_list: []
 };
 
 const initData: PageData<UserForm, UserQuery> = {
   form: { ...initFormData },
   queryParams: {
-    pageNum: 1,
+    page: 1,
     pageSize: 10,
-    userName: '',
-    phonenumber: '',
-    status: '',
-    deptId: '',
-    roleId: ''
+    Name: ''
   },
   rules: {
     userName: [
@@ -231,10 +235,14 @@ const getTreeSelect = async () => {
 /** 查询用户列表 */
 const getList = async () => {
   loading.value = true;
-  const res = await api.listUser(proxy?.addDateRange(queryParams.value, dateRange.value));
-  loading.value = false;
-  userList.value = res.rows;
-  total.value = res.total;
+  getTableList(queryParams.value)
+    .then((res) => {
+      userList.value = res.data;
+      total.value = res.total;
+    })
+    .finally(() => {
+      loading.value = false;
+    });
 };
 
 /** 节点单击事件 */
@@ -248,64 +256,48 @@ const handleQuery = () => {
   queryParams.value.pageNum = 1;
   getList();
 };
+
 /** 重置按钮操作 */
 const resetQuery = () => {
-  dateRange.value = ['', ''];
   queryFormRef.value?.resetFields();
   queryParams.value.pageNum = 1;
-  queryParams.value.deptId = undefined;
   deptTreeRef.value?.setCurrentKey(undefined);
   handleQuery();
 };
 
 /** 删除按钮操作 */
-const handleDelete = async (row?: UserVO) => {
-  const userIds = row?.userId || ids.value;
-  const [err] = await to(proxy?.$modal.confirm('是否确认删除用户编号为"' + userIds + '"的数据项?') as any);
-  if (!err) {
-    await api.delUser(userIds);
-    await getList();
+const handleDelete = (row?: UserVO) => {
+  const userIds = row?.id || ids.value;
+  proxy?.$modal.confirm('是否确认删除用户编号为"' + userIds + '"的数据项?').then(() => {
+    deleteData(userIds);
+    getList();
     proxy?.$modal.msgSuccess('删除成功');
-  }
+  });
 };
 
-/** 用户状态修改  */
-const handleStatusChange = async (row: UserVO) => {
-  let text = row.status === '0' ? '启用' : '停用';
-  try {
-    await proxy?.$modal.confirm('确认要"' + text + '""' + row.userName + '"用户吗?');
-    await api.changeUserStatus(row.userId, row.status);
-    proxy?.$modal.msgSuccess(text + '成功');
-  } catch (err) {
-    row.status = row.status === '0' ? '1' : '0';
-  }
+let detailState = reactive({
+  show: false,
+  id: ''
+});
+/** 查看详情按钮操作 */
+const handleView = async (row: UserVO) => {
+  detailState.show = true;
+  detailState.id = row.id;
 };
-/** 跳转角色分配 */
-const handleAuthRole = (row: UserVO) => {
-  const userId = row.userId;
-  router.push('/system/user-auth/role/' + userId);
+const handledetailClose = () => {
+  detailState.show = false;
 };
-
-/** 重置密码按钮操作 */
-const handleResetPwd = async (row: UserVO) => {
-  const [err, res] = await to(
-    ElMessageBox.prompt('请输入"' + row.userName + '"的新密码', '提示', {
-      confirmButtonText: '确定',
-      cancelButtonText: '取消',
-      closeOnClickModal: false,
-      inputPattern: /^.{5,20}$/,
-      inputErrorMessage: '用户密码长度必须介于 5 和 20 之间',
-      inputValidator: (value) => {
-        if (/<|>|"|'|\||\\/.test(value)) {
-          return '不能包含非法字符:< > " \' \\\ |';
-        }
-      }
-    })
-  );
-  if (!err && res) {
-    await api.resetUserPwd(row.userId, res.value);
-    proxy?.$modal.msgSuccess('修改成功,新密码是:' + res.value);
-  }
+let addState = reactive({
+  show: false,
+  id: ''
+});
+// 新建责任人按钮操作
+const handleAddClose = () => {
+  addState.show = false;
+};
+const handleAdd = () => {
+  addState.show = true;
+  addState.id = row.id;
 };
 
 /** 选择条数  */
@@ -315,11 +307,6 @@ const handleSelectionChange = (selection: UserVO[]) => {
   multiple.value = !selection.length;
 };
 
-/** 导入按钮操作 */
-const handleImport = () => {
-  upload.title = '用户导入';
-  upload.open = true;
-};
 /** 导出按钮操作 */
 const handleExport = () => {
   proxy?.download(
@@ -330,30 +317,6 @@ const handleExport = () => {
     `user_${new Date().getTime()}.xlsx`
   );
 };
-/** 下载模板操作 */
-const importTemplate = () => {
-  proxy?.download('system/user/importTemplate', {}, `user_template_${new Date().getTime()}.xlsx`);
-};
-
-/**文件上传中处理 */
-const handleFileUploadProgress = () => {
-  upload.isUploading = true;
-};
-/** 文件上传成功处理 */
-const handleFileSuccess = (response: any, file: UploadFile) => {
-  upload.open = false;
-  upload.isUploading = false;
-  uploadRef.value?.handleRemove(file);
-  ElMessageBox.alert("<div style='overflow: auto;overflow-x: hidden;max-height: 70vh;padding: 10px 20px 0;'>" + response.msg + '</div>', '导入结果', {
-    dangerouslyUseHTMLString: true
-  });
-  getList();
-};
-
-/** 提交上传文件 */
-function submitFileForm() {
-  uploadRef.value?.submit();
-}
 
 /** 初始化部门数据 */
 const initTreeData = async () => {
@@ -376,16 +339,16 @@ const cancel = () => {
 };
 
 /** 新增按钮操作 */
-const handleAdd = async () => {
-  reset();
-  const { data } = await api.getUser();
-  dialog.visible = true;
-  dialog.title = '新增用户';
-  await initTreeData();
-  postOptions.value = data.posts;
-  roleOptions.value = data.roles;
-  form.value.password = initPassword.value.toString();
-};
+// const handleAdd = async () => {
+//   reset();
+//   const { data } = await api.getUser();
+//   dialog.visible = true;
+//   dialog.title = '新增用户';
+//   await initTreeData();
+//   postOptions.value = data.posts;
+//   roleOptions.value = data.roles;
+//   // form.value.password = initPassword.value.toString();
+// };
 
 /** 修改按钮操作 */
 const handleUpdate = async (row?: UserForm) => {
@@ -402,27 +365,6 @@ const handleUpdate = async (row?: UserForm) => {
   form.value.roleIds = data.roleIds;
   form.value.password = '';
 };
-
-/** 提交按钮 */
-const submitForm = () => {
-  userFormRef.value?.validate(async (valid: boolean) => {
-    if (valid) {
-      form.value.userId ? await api.updateUser(form.value) : await api.addUser(form.value);
-      proxy?.$modal.msgSuccess('操作成功');
-      dialog.visible = false;
-      await getList();
-    }
-  });
-};
-
-/**
- * 关闭用户弹窗
- */
-const closeDialog = () => {
-  dialog.visible = false;
-  resetForm();
-};
-
 /**
  * 重置表单
  */