Переглянути джерело

feat: 驿站站点与驿站人员详情页面

zhangying 1 рік тому
батько
коміт
2c1270f0cc

+ 2 - 0
vue/src/router/asyncModules/basesettings.ts

@@ -5,7 +5,9 @@ export default {
   'baseSettings/site/index': () => import('@/views/baseSettings/siteInfo/index.vue'),
   'baseSettings/site/add': () => import('@/views/baseSettings/siteInfo/edit.vue'),
   'baseSettings/site/edit': () => import('@/views/baseSettings/siteInfo/edit.vue'),
+  'baseSettings/site/detail': () => import('@/views/baseSettings/siteInfo/detail.vue'),
   'baseSettings/user/index': () => import('@/views/baseSettings/siteUser/index.vue'),
   'baseSettings/user/add': () => import('@/views/baseSettings/siteUser/edit.vue'),
   'baseSettings/user/edit': () => import('@/views/baseSettings/siteUser/edit.vue'),
+  'baseSettings/user/detail': () => import('@/views/baseSettings/siteUser/detail.vue'),
 };

+ 60 - 0
vue/src/views/baseSettings/siteInfo/detail.vue

@@ -0,0 +1,60 @@
+<template>
+  <div class="card-edit">
+    <a-divider orientation="left">驿站站点基本信息</a-divider>
+    <a-descriptions bordered>
+      <a-descriptions-item label="驿站编号">{{ siteInfo.siteCode }}</a-descriptions-item>
+      <a-descriptions-item label="站点名称">{{ siteInfo.siteName }}</a-descriptions-item>
+      <a-descriptions-item label="所属机构">{{ siteInfo.institutionName }}</a-descriptions-item>
+      <a-descriptions-item label="所属县区">{{ siteInfo.regionName }}</a-descriptions-item>
+      <a-descriptions-item label="所属街道">{{ siteInfo.streetName }}</a-descriptions-item>
+      <a-descriptions-item label="详细地址">{{ siteInfo.detailAddress }}</a-descriptions-item>
+      <a-descriptions-item label="站点负责人">{{ siteInfo.fzrName }}</a-descriptions-item>
+      <a-descriptions-item label="联系电话">{{ siteInfo.fzrMobile }}</a-descriptions-item>
+      <a-descriptions-item label="经度">{{ siteInfo.siteLongitude }}</a-descriptions-item>
+      <a-descriptions-item label="纬度">{{ siteInfo.siteLatitude }}</a-descriptions-item>
+    </a-descriptions>
+    <a-divider orientation="left">其他信息</a-divider>
+    <a-descriptions bordered>
+      <a-descriptions-item label="备注">{{ siteInfo.remark }}</a-descriptions-item>
+    </a-descriptions>
+  </div>
+</template>
+
+<script setup lang="ts">
+import {onMounted, reactive} from "vue";
+import {getSiteByID} from "@/api/baseSettings/siteInfo";
+
+// 站点信息
+const siteInfo = reactive({
+  siteCode: "",
+  siteName: "",
+  institutionName: "",
+  regionName: "",
+  streetName: "",
+  detailAddress: "",
+  fzrName: "",
+  fzrMobile: "",
+  siteLongitude: "",
+  siteLatitude: "",
+  remark: "",
+})
+
+// 站点数据加载
+function loadData(siteID: any) {
+  getSiteByID(siteID).then((result: any) => {
+    Object.keys(siteInfo).forEach(key => {
+      siteInfo[key] = result[key];
+    })
+  });
+}
+
+// 页面初始化
+onMounted(() => {
+  const id = history.state.params?.id;
+  loadData(id);
+})
+</script>
+
+<style scoped>
+
+</style>

+ 13 - 6
vue/src/views/baseSettings/siteInfo/index.vue

@@ -94,6 +94,8 @@
         <template #bodyCell="{ column, text, record }">
           <template v-if="column.key === 'operation'">
             <div class="table-operation">
+              <a-button type="link" size="small" functioncode="T01010205" @click='onDetail(record.siteID)'>查看
+              </a-button>
               <a-button type="link" size="small"  functioncode="T01010203" @click='onEdit(record.siteID)' >编辑</a-button>
               <a-button type="link" size="small"  functioncode="T01010204" @click="onDel(record)" >删除</a-button>
             </div>
@@ -105,15 +107,15 @@
 </template>
 
 <script lang="ts">
-import {reactive, ref, computed, defineComponent, createVNode} from 'vue';
+import {computed, createVNode, defineComponent, reactive, ref} from 'vue';
 import {useTabsViewStore} from "@/store/modules/tabsView";
 import {DownOutlined, ExclamationCircleOutlined, UpOutlined} from '@ant-design/icons-vue';
-import type {FormInstance,TableColumnsType, TableProps} from 'ant-design-vue';
-import {getSiteList,delSite} from '@/api/baseSettings/siteInfo';
+import type {FormInstance, TableColumnsType, TableProps} from 'ant-design-vue';
+import {message, Modal, SelectProps} from "ant-design-vue";
+import {delSite, getSiteList} from '@/api/baseSettings/siteInfo';
 import {getRegionCodeList, getStreetCodeList} from "@/api/system/area/index";
 import BExportExcel from "@/components/basic/excel/exportExcel/exportExcel.vue";
 import {getPaginationTotalTitle} from "@/utils/common";
-import {message, Modal, SelectProps} from "ant-design-vue";
 import {getInstitutionDataList} from "@/api/baseSettings/institution";
 
 export default defineComponent({
@@ -148,7 +150,7 @@ export default defineComponent({
       {title: '详细地址', dataIndex: 'detailAddress', key: 'detailAddress', align: "center"},
       {title: '所属机构', dataIndex: 'institutionName', key: 'institutionName', align: "center"},
       {title: '驿站人员',  dataIndex: 'siteUsers',key: 'siteUsers', fixed: 'right',width:170, align: "center"},
-      {title: '操作', key: 'operation', fixed: 'right',width:100, align: "center"},
+      {title: '操作', key: 'operation', fixed: 'right', width: 150, align: "center"},
     ];
     const pagination = computed(() => ({
       total: formState.total,
@@ -235,6 +237,10 @@ export default defineComponent({
       tabsViewStore.addTabByPath('/baseSettings/site/edit', {id:id});
     };
 
+    const onDetail = (id: string) => {
+      tabsViewStore.addTabByPath('/baseSettings/site/detail', {id: id});
+    };
+
     const loadData = async function () {
       formState.loading = true;
       await getAllInstitutions();
@@ -263,7 +269,8 @@ export default defineComponent({
       onEdit,
       onDel,
       loadData,
-      changeRegion
+      changeRegion,
+      onDetail
     };
   },
   created() {

+ 49 - 0
vue/src/views/baseSettings/siteUser/detail.vue

@@ -0,0 +1,49 @@
+<template>
+  <div class="card-edit">
+    <a-divider orientation="left">站点人员基本信息</a-divider>
+    <a-descriptions bordered>
+      <a-descriptions-item label="姓名">{{ siteUserInfo.siteUserName }}</a-descriptions-item>
+      <a-descriptions-item label="性别">{{ siteUserInfo.genderName }}</a-descriptions-item>
+      <a-descriptions-item label="联系电话">{{ siteUserInfo.mobile }}</a-descriptions-item>
+      <a-descriptions-item label="工号">{{ siteUserInfo.userNo }}</a-descriptions-item>
+      <a-descriptions-item label="身份证">{{ siteUserInfo.idCard }}</a-descriptions-item>
+      <a-descriptions-item label="用户类型">{{ siteUserInfo.roleName }}</a-descriptions-item>
+      <a-descriptions-item label="所属驿站">{{ siteUserInfo.siteName }}</a-descriptions-item>
+    </a-descriptions>
+  </div>
+</template>
+
+<script setup lang="ts">
+import {onMounted, reactive} from "vue";
+import {getSiteUserByID} from "@/api/baseSettings/userInfo";
+
+// 站点人员信息
+const siteUserInfo = reactive({
+  siteUserName: "",
+  genderName: "",
+  mobile: "",
+  userNo: "",
+  idCard: "",
+  roleName: "",
+  siteName: "",
+})
+
+// 站点人员数据加载
+function loadData(siteUserID: string) {
+  getSiteUserByID(siteUserID).then((result: any) => {
+    Object.keys(siteUserInfo).forEach(key => {
+      siteUserInfo[key] = result[key];
+    })
+  });
+}
+
+// 页面初始化
+onMounted(() => {
+  const id = history.state.params?.id;
+  loadData(id);
+})
+</script>
+
+<style scoped>
+
+</style>

+ 9 - 2
vue/src/views/baseSettings/siteUser/index.vue

@@ -55,6 +55,8 @@
         <template #bodyCell="{ column, text, record }">
           <template v-if="column.key === 'operation'">
             <div class="table-operation">
+              <a-button type="link" size="small" functioncode="T01010305" @click='onDetail(record.siteUserID)'>查看
+              </a-button>
               <a-button type="link" size="small"  functioncode="T01010303"  @click='onEdit(record.siteUserID)' >编辑</a-button>
               <a-button type="link" size="small"  functioncode="T01010304"  @click="onDel(record)" >删除</a-button>
             </div>
@@ -104,7 +106,7 @@ export default defineComponent({
       {title: '联系电话', dataIndex: 'mobile', key: 'mobile', align: "center"},
       {title: '身份证号', dataIndex: 'idCard', key: 'idCard', align: "center"},
       {title: '所属驿站', dataIndex: 'siteName', key: 'siteName', align: "center"},
-      {title: '操作', key: 'operation', fixed: 'right',width:100, align: "center"},
+      {title: '操作', key: 'operation', fixed: 'right', width: 150, align: "center"},
     ];
     const pagination = computed(() => ({
       total: formState.total,
@@ -183,6 +185,10 @@ export default defineComponent({
       tabsViewStore.addTabByPath('/baseSettings/user/edit', {id:id,op:2});
     };
 
+    const onDetail = (id: string) => {
+      tabsViewStore.addTabByPath('/baseSettings/user/detail', {id: id, op: 2});
+    };
+
     return {
       formRef,
       allSites,
@@ -197,7 +203,8 @@ export default defineComponent({
       onAdd,
       onEdit,
       onDel,
-      loadData
+      loadData,
+      onDetail
     };
   },
   created() {