zsydgithub 1 年間 前
コミット
ab1f694548

+ 1 - 0
v3-admin/package.json

@@ -12,6 +12,7 @@
     "@element-plus/icons-vue": "^2.3.1",
     "axios": "^1.6.8",
     "element-plus": "^2.6.1",
+    "pinia": "2.0.3",
     "sass": "^1.71.1",
     "vue": "^3.4.21",
     "vue-router": "^4.3.0"

+ 21 - 0
v3-admin/pnpm-lock.yaml

@@ -14,6 +14,9 @@ dependencies:
   element-plus:
     specifier: ^2.6.1
     version: 2.6.1(vue@3.4.21)
+  pinia:
+    specifier: 2.0.3
+    version: 2.0.3(typescript@5.4.2)(vue@3.4.21)
   sass:
     specifier: ^1.71.1
     version: 1.71.1
@@ -889,6 +892,24 @@ packages:
     resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==}
     engines: {node: '>=8.6'}
 
+  /pinia@2.0.3(typescript@5.4.2)(vue@3.4.21):
+    resolution: {integrity: sha512-jNq+eVCAbFQS/uOiqskSRsKsFzLcQpgegcpjI8eAzU3QOwmsdLLHZBE1dvy802jecRC3FPPJSlj1MISF/sRV2w==}
+    peerDependencies:
+      '@vue/composition-api': ^1.3.3
+      typescript: ^4.4.4
+      vue: ^2.6.14 || ^3.2.0
+    peerDependenciesMeta:
+      '@vue/composition-api':
+        optional: true
+      typescript:
+        optional: true
+    dependencies:
+      '@vue/devtools-api': 6.6.1
+      typescript: 5.4.2
+      vue: 3.4.21(typescript@5.4.2)
+      vue-demi: 0.14.7(vue@3.4.21)
+    dev: false
+
   /postcss@8.4.35:
     resolution: {integrity: sha512-u5U8qYpBCpN13BsiEB0CbR1Hhh4Gc0zLFuedrHJKMctHCHAGrMdG0PRM/KErzAL3CU6/eckEtmHNB3x6e3c0vA==}
     engines: {node: ^10 || ^12 || >=14}

+ 10 - 0
v3-admin/src/api/hospital/index.ts

@@ -0,0 +1,10 @@
+import request from '@/utils/request'
+import { HospitalDetail } from "./type"
+
+//通过枚举管理预约模块的接口地址
+enum API {
+  HOSPITALDETAIL_URL = '/hosp/hospital/'
+}
+
+//获取医院的数据
+export const reqHospitalDetail = (hoscode: string) => request.get<any, HospitalDetail>(API.HOSPITALDETAIL_URL + hoscode)

+ 44 - 0
v3-admin/src/api/hospital/type.ts

@@ -0,0 +1,44 @@
+//定义首页模块ts数据类型
+export interface ResponseData {
+  code: number,
+  message: string,
+  ok: boolean
+}
+
+//代表医院详情的数据
+export interface HospDeatil {
+  "bookingRule": {
+    "cycle": number,
+    "releaseTime": string,
+    "stopTime": string,
+    "quitDay": number,
+    "quitTime": string,
+    "rule": string[]
+  },
+  "hospital": {
+    "id": string,
+    "createTime": string,
+    "updateTime": string,
+    "isDeleted": number,
+    "param": {
+      "hostypeString": string,
+      "fullAddress": string
+    },
+    "hoscode": string,
+    "hosname": string,
+    "hostype": string,
+    "provinceCode": string,
+    "cityCode": string,
+    "districtCode": string,
+    "address": string,
+    "logoData": string,
+    "intro": null,
+    "route": string,
+    "status": number,
+    "bookingRule": null
+  }
+}
+//医院详情返回数据的ts
+export interface HospitalDetail extends ResponseData {
+  data: HospDeatil
+}

+ 4 - 0
v3-admin/src/main.ts

@@ -14,6 +14,8 @@ import 'element-plus/dist/index.css'
 //@ts-ignore
 import zhCn from 'element-plus/dist/locale/zh-cn.mjs'
 import App from './App.vue'
+//引入pinia库
+import pinia from "@/store"
 
 
 createApp(App).mount('#app')
@@ -27,5 +29,7 @@ app.use(ElementPlus, {
 })
 //安装vue-router
 app.use(router)
+//安装pinia仓库
+app.use(pinia)
 //挂载
 app.mount('#app')

+ 9 - 0
v3-admin/src/pages/hospital/index.vue

@@ -60,18 +60,27 @@ import {
   Search,
   HomeFilled,
 } from "@element-plus/icons-vue";
+import { onMounted } from "vue";
+import useDetaileStore from "@/store/modules/hospitalDetail";
 import { useRouter, useRoute } from "vue-router";
 let $router = useRouter();
 //获取当前路由信息
 let $route = useRoute();
 console.log($route.path);
 
+//获取仓库对象
+let detailStore = useDetaileStore();
 //左侧菜单点击事件
 const changeActive = (path: string) => {
   $router.push({
     path,
   });
 };
+//组件挂载完: 通知pinia仓库发送请求来获取详情的数据
+onMounted(() => {
+  //获取医院详情数据
+  detailStore.getHospital($route.query.hoscode);
+});
 </script>
 
 <style scoped lang="scss">

+ 3 - 0
v3-admin/src/store/index.ts

@@ -0,0 +1,3 @@
+import { createPinia } from "pinia"
+//对外暴漏仓库
+export default createPinia()

+ 29 - 0
v3-admin/src/store/modules/hospitalDetail.ts

@@ -0,0 +1,29 @@
+import { defineStore } from "pinia"
+import { reqHospitalDetail } from "@/api/hospital/index"
+import type { HospitalDetail } from "@/api/hospital/type"
+
+const useDetaileStore = defineStore('Detail', {
+  state() {
+    return {
+      //医院详情的数据
+      hospitalInfo: {}
+    }
+  },
+  actions: {
+    //获取医院接口的方法
+    async getHospital(hoscode: string) {
+      let result: HospitalDetail = await reqHospitalDetail(hoscode)
+      console.log(result)
+      if (result.code == 200) {
+        this.hospitalInfo = result.data
+      }
+      console.log(this.hospitalInfo)
+    }
+  },
+  getters: {
+
+  }
+})
+
+//获取仓库的方法向外暴露
+export default useDetaileStore