init
2
.env.development
Normal file
@ -0,0 +1,2 @@
|
||||
# VITE_BASE_URL="http://dev.edu.igandan.com/gdxz-h5/"
|
||||
VITE_BASE_URL="https://h5.ixuanjiao.com/api/"
|
||||
2
.env.production
Normal file
@ -0,0 +1,2 @@
|
||||
# VITE_BASE_URL="http://dev.edu.igandan.com/gdxz-h5/"
|
||||
VITE_BASE_URL="https://h5.ixuanjiao.com/api/"
|
||||
2
.env.test
Normal file
@ -0,0 +1,2 @@
|
||||
# VITE_BASE_URL="https://twx.igandan.org/"
|
||||
VITE_BASE_URL="http://dev.edu.igandan.com/gdxz-h5/"
|
||||
51
.gitignore
vendored
Normal file
@ -0,0 +1,51 @@
|
||||
# See https://help.github.com/articles/ignoring-files/ for more about ignoring files.
|
||||
|
||||
# dependencies
|
||||
/node_modules
|
||||
/.pnp
|
||||
.pnp.js
|
||||
|
||||
# testing
|
||||
/coverage
|
||||
|
||||
# next.js
|
||||
/.next/
|
||||
/out/
|
||||
|
||||
# production
|
||||
/build
|
||||
|
||||
# misc
|
||||
.DS_Store
|
||||
*.pem
|
||||
|
||||
# debug
|
||||
npm-debug.log*
|
||||
yarn-debug.log*
|
||||
yarn-error.log*
|
||||
|
||||
# local env files
|
||||
.env.local
|
||||
.env.development.local
|
||||
.env.test.local
|
||||
.env.production.local
|
||||
|
||||
# vercel
|
||||
.vercel
|
||||
|
||||
# typescript
|
||||
*.tsbuildinfo
|
||||
|
||||
|
||||
# eslint
|
||||
.eslintcache
|
||||
|
||||
# stylelint
|
||||
.stylelintcache
|
||||
|
||||
dist
|
||||
dist-ssr
|
||||
*.local
|
||||
/dist*
|
||||
|
||||
stats.html
|
||||
65
auto-imports.d.ts
vendored
Normal file
@ -0,0 +1,65 @@
|
||||
/* eslint-disable */
|
||||
/* prettier-ignore */
|
||||
// @ts-nocheck
|
||||
// noinspection JSUnusedGlobalSymbols
|
||||
// Generated by unplugin-auto-import
|
||||
export {}
|
||||
declare global {
|
||||
const EffectScope: typeof import('vue')['EffectScope']
|
||||
const computed: typeof import('vue')['computed']
|
||||
const createApp: typeof import('vue')['createApp']
|
||||
const customRef: typeof import('vue')['customRef']
|
||||
const defineAsyncComponent: typeof import('vue')['defineAsyncComponent']
|
||||
const defineComponent: typeof import('vue')['defineComponent']
|
||||
const effectScope: typeof import('vue')['effectScope']
|
||||
const getCurrentInstance: typeof import('vue')['getCurrentInstance']
|
||||
const getCurrentScope: typeof import('vue')['getCurrentScope']
|
||||
const h: typeof import('vue')['h']
|
||||
const inject: typeof import('vue')['inject']
|
||||
const isProxy: typeof import('vue')['isProxy']
|
||||
const isReactive: typeof import('vue')['isReactive']
|
||||
const isReadonly: typeof import('vue')['isReadonly']
|
||||
const isRef: typeof import('vue')['isRef']
|
||||
const markRaw: typeof import('vue')['markRaw']
|
||||
const nextTick: typeof import('vue')['nextTick']
|
||||
const onActivated: typeof import('vue')['onActivated']
|
||||
const onBeforeMount: typeof import('vue')['onBeforeMount']
|
||||
const onBeforeUnmount: typeof import('vue')['onBeforeUnmount']
|
||||
const onBeforeUpdate: typeof import('vue')['onBeforeUpdate']
|
||||
const onDeactivated: typeof import('vue')['onDeactivated']
|
||||
const onErrorCaptured: typeof import('vue')['onErrorCaptured']
|
||||
const onMounted: typeof import('vue')['onMounted']
|
||||
const onRenderTracked: typeof import('vue')['onRenderTracked']
|
||||
const onRenderTriggered: typeof import('vue')['onRenderTriggered']
|
||||
const onScopeDispose: typeof import('vue')['onScopeDispose']
|
||||
const onServerPrefetch: typeof import('vue')['onServerPrefetch']
|
||||
const onUnmounted: typeof import('vue')['onUnmounted']
|
||||
const onUpdated: typeof import('vue')['onUpdated']
|
||||
const provide: typeof import('vue')['provide']
|
||||
const reactive: typeof import('vue')['reactive']
|
||||
const readonly: typeof import('vue')['readonly']
|
||||
const ref: typeof import('vue')['ref']
|
||||
const resolveComponent: typeof import('vue')['resolveComponent']
|
||||
const shallowReactive: typeof import('vue')['shallowReactive']
|
||||
const shallowReadonly: typeof import('vue')['shallowReadonly']
|
||||
const shallowRef: typeof import('vue')['shallowRef']
|
||||
const toRaw: typeof import('vue')['toRaw']
|
||||
const toRef: typeof import('vue')['toRef']
|
||||
const toRefs: typeof import('vue')['toRefs']
|
||||
const toValue: typeof import('vue')['toValue']
|
||||
const triggerRef: typeof import('vue')['triggerRef']
|
||||
const unref: typeof import('vue')['unref']
|
||||
const useAttrs: typeof import('vue')['useAttrs']
|
||||
const useCssModule: typeof import('vue')['useCssModule']
|
||||
const useCssVars: typeof import('vue')['useCssVars']
|
||||
const useSlots: typeof import('vue')['useSlots']
|
||||
const watch: typeof import('vue')['watch']
|
||||
const watchEffect: typeof import('vue')['watchEffect']
|
||||
const watchPostEffect: typeof import('vue')['watchPostEffect']
|
||||
const watchSyncEffect: typeof import('vue')['watchSyncEffect']
|
||||
}
|
||||
// for type re-export
|
||||
declare global {
|
||||
// @ts-ignore
|
||||
export type { Component, ComponentPublicInstance, ComputedRef, InjectionKey, PropType, Ref, VNode } from 'vue'
|
||||
}
|
||||
37
components.d.ts
vendored
Normal file
@ -0,0 +1,37 @@
|
||||
/* eslint-disable */
|
||||
/* prettier-ignore */
|
||||
// @ts-nocheck
|
||||
// Generated by unplugin-vue-components
|
||||
// Read more: https://github.com/vuejs/core/pull/3399
|
||||
export {}
|
||||
|
||||
declare module 'vue' {
|
||||
export interface GlobalComponents {
|
||||
Department: typeof import('./src/views/department.vue')['default']
|
||||
DoctorInfo: typeof import('./src/views/doctor-info.vue')['default']
|
||||
EducationCentre: typeof import('./src/views/education-centre.vue')['default']
|
||||
FeedbackHistory: typeof import('./src/views/feedback-history.vue')['default']
|
||||
HeadBar: typeof import('./src/components/headBar.vue')['default']
|
||||
Information: typeof import('./src/views/information.vue')['default']
|
||||
Interact: typeof import('./src/views/interact.vue')['default']
|
||||
InteractSearch: typeof import('./src/views/interact-search.vue')['default']
|
||||
LeaveMessage: typeof import('./src/views/leave-message.vue')['default']
|
||||
Live: typeof import('./src/views/live.vue')['default']
|
||||
Loading: typeof import('./src/components/loading/loading.vue')['default']
|
||||
My: typeof import('./src/views/my.vue')['default']
|
||||
PaperList: typeof import('./src/components/paperList.vue')['default']
|
||||
PersonalData: typeof import('./src/views/personal-data.vue')['default']
|
||||
PrivateRecords: typeof import('./src/views/private-records.vue')['default']
|
||||
Questionnaire: typeof import('./src/views/questionnaire.vue')['default']
|
||||
RouterLink: typeof import('vue-router')['RouterLink']
|
||||
RouterView: typeof import('vue-router')['RouterView']
|
||||
Search: typeof import('./src/components/search.vue')['default']
|
||||
Searchblue: typeof import('./src/components/searchblue.vue')['default']
|
||||
Searchthings: typeof import('./src/views/searchthings.vue')['default']
|
||||
Searchview: typeof import('./src/views/searchview.vue')['default']
|
||||
TabTools: typeof import('./src/components/tabTools.vue')['default']
|
||||
Video: typeof import('./src/views/video.vue')['default']
|
||||
VisitingInformation: typeof import('./src/views/visiting-information.vue')['default']
|
||||
WebsView: typeof import('./src/views/webs-view.vue')['default']
|
||||
}
|
||||
}
|
||||
13
index.html
Normal file
@ -0,0 +1,13 @@
|
||||
<!doctype html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8" />
|
||||
<link rel="icon" type="image/svg+xml" href="/vite.svg" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no" />
|
||||
<title><%- title %></title>
|
||||
</head>
|
||||
<body>
|
||||
<div id="app"></div>
|
||||
<script type="module" src="/src/main.js"></script>
|
||||
</body>
|
||||
</html>
|
||||
14
jsconfig.json
Normal file
@ -0,0 +1,14 @@
|
||||
{
|
||||
"compilerOptions": {
|
||||
"target": "ES6",
|
||||
"module": "commonjs",
|
||||
"allowSyntheticDefaultImports": true,
|
||||
"baseUrl": "./",
|
||||
"paths": {
|
||||
"@/*": ["src/*"]
|
||||
}
|
||||
},
|
||||
"exclude": [
|
||||
"node_modules"
|
||||
]
|
||||
}
|
||||
4640
package-lock.json
generated
Normal file
40
package.json
Normal file
@ -0,0 +1,40 @@
|
||||
{
|
||||
"name": "wxapp-home",
|
||||
"private": true,
|
||||
"version": "0.0.0",
|
||||
"type": "module",
|
||||
"scripts": {
|
||||
"dev": "vite",
|
||||
"build": "vite build",
|
||||
"test": "vite build --mode=test",
|
||||
"build-prod": "vite build --mode=production",
|
||||
"preview": "vite preview"
|
||||
},
|
||||
"dependencies": {
|
||||
"@nutui/nutui": "^4.1.4",
|
||||
"axios": "^1.5.0",
|
||||
"cheerio": "^1.0.0-rc.12",
|
||||
"reset-css": "^5.0.2",
|
||||
"tdesign-mobile-vue": "^1.0.3",
|
||||
"vconsole": "^3.15.1",
|
||||
"vue": "^3.3.4",
|
||||
"vue-lazyload": "^3.0.0",
|
||||
"vue-router": "^4.2.4",
|
||||
"vue3-seamless-scroll": "^2.0.1",
|
||||
"vxe-table": "^4.5.12",
|
||||
"weixin-js-sdk": "^1.6.0",
|
||||
"xe-utils": "^3.5.13"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@types/node": "^20.4.5",
|
||||
"@vitejs/plugin-vue": "^4.2.3",
|
||||
"rollup-plugin-external-globals": "^0.8.0",
|
||||
"rollup-plugin-visualizer": "^5.9.2",
|
||||
"terser": "^5.19.1",
|
||||
"unplugin-auto-import": "^0.16.6",
|
||||
"unplugin-vue-components": "^0.25.1",
|
||||
"vite": "^4.4.5",
|
||||
"vite-plugin-compression": "^0.5.1",
|
||||
"vite-plugin-html": "^3.2.0"
|
||||
}
|
||||
}
|
||||
1
public/vite.svg
Normal file
@ -0,0 +1 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" class="iconify iconify--logos" width="31.88" height="32" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 257"><defs><linearGradient id="IconifyId1813088fe1fbc01fb466" x1="-.828%" x2="57.636%" y1="7.652%" y2="78.411%"><stop offset="0%" stop-color="#41D1FF"></stop><stop offset="100%" stop-color="#BD34FE"></stop></linearGradient><linearGradient id="IconifyId1813088fe1fbc01fb467" x1="43.376%" x2="50.316%" y1="2.242%" y2="89.03%"><stop offset="0%" stop-color="#FFEA83"></stop><stop offset="8.333%" stop-color="#FFDD35"></stop><stop offset="100%" stop-color="#FFA800"></stop></linearGradient></defs><path fill="url(#IconifyId1813088fe1fbc01fb466)" d="M255.153 37.938L134.897 252.976c-2.483 4.44-8.862 4.466-11.382.048L.875 37.958c-2.746-4.814 1.371-10.646 6.827-9.67l120.385 21.517a6.537 6.537 0 0 0 2.322-.004l117.867-21.483c5.438-.991 9.574 4.796 6.877 9.62Z"></path><path fill="url(#IconifyId1813088fe1fbc01fb467)" d="M185.432.063L96.44 17.501a3.268 3.268 0 0 0-2.634 3.014l-5.474 92.456a3.268 3.268 0 0 0 3.997 3.378l24.777-5.718c2.318-.535 4.413 1.507 3.936 3.838l-7.361 36.047c-.495 2.426 1.782 4.5 4.151 3.78l15.304-4.649c2.372-.72 4.652 1.36 4.15 3.788l-11.698 56.621c-.732 3.542 3.979 5.473 5.943 2.437l1.313-2.028l72.516-144.72c1.215-2.423-.88-5.186-3.54-4.672l-25.505 4.922c-2.396.462-4.435-1.77-3.759-4.114l16.646-57.705c.677-2.35-1.37-4.583-3.769-4.113Z"></path></svg>
|
||||
|
After Width: | Height: | Size: 1.5 KiB |
38
src/App.vue
Normal file
@ -0,0 +1,38 @@
|
||||
<template>
|
||||
<body>
|
||||
<router-view></router-view>
|
||||
</body>
|
||||
|
||||
</template>
|
||||
|
||||
|
||||
<style>
|
||||
body {
|
||||
line-height: normal!important;
|
||||
}
|
||||
:root {
|
||||
--font-size-11: 11px;
|
||||
--font-size-12: 12px;
|
||||
--font-size-13: 13px;
|
||||
--font-size-14: 14px;
|
||||
--font-size-16: 16px;
|
||||
--font-size-18: 18px;
|
||||
--font-size-20: 20px;
|
||||
--font-size-title: 17px;
|
||||
--empty-top: 117px;
|
||||
--text-color-normal:#233C4C;
|
||||
--back-color-01:#FEFFFFFF;
|
||||
--back-color-02:#F6F7FBFF;
|
||||
--back-color-03:#F1FAFFFF;
|
||||
|
||||
}
|
||||
strong{
|
||||
font-weight: bold!important;
|
||||
}
|
||||
sup{
|
||||
vertical-align: super!important;
|
||||
}
|
||||
video{
|
||||
width:100%;height:80px
|
||||
}
|
||||
</style>
|
||||
BIN
src/assets/back.png
Normal file
|
After Width: | Height: | Size: 751 B |
BIN
src/assets/bigcollect.png
Normal file
|
After Width: | Height: | Size: 1.8 KiB |
BIN
src/assets/bigcollect1.png
Normal file
|
After Width: | Height: | Size: 910 B |
BIN
src/assets/change_depart.png
Normal file
|
After Width: | Height: | Size: 401 B |
BIN
src/assets/close.png
Normal file
|
After Width: | Height: | Size: 2.4 KiB |
BIN
src/assets/collect.png
Normal file
|
After Width: | Height: | Size: 1.2 KiB |
BIN
src/assets/collectb.png
Normal file
|
After Width: | Height: | Size: 40 KiB |
BIN
src/assets/collects.png
Normal file
|
After Width: | Height: | Size: 1.1 KiB |
BIN
src/assets/databg.png
Normal file
|
After Width: | Height: | Size: 3.1 KiB |
BIN
src/assets/databgs.png
Normal file
|
After Width: | Height: | Size: 1.1 KiB |
BIN
src/assets/deletes.png
Normal file
|
After Width: | Height: | Size: 723 B |
BIN
src/assets/department.png
Normal file
|
After Width: | Height: | Size: 1.9 KiB |
BIN
src/assets/departmentn.png
Normal file
|
After Width: | Height: | Size: 912 B |
BIN
src/assets/edu.png
Normal file
|
After Width: | Height: | Size: 1.7 KiB |
BIN
src/assets/edubg.png
Normal file
|
After Width: | Height: | Size: 276 KiB |
BIN
src/assets/edubg1.png
Normal file
|
After Width: | Height: | Size: 118 KiB |
BIN
src/assets/edun.png
Normal file
|
After Width: | Height: | Size: 889 B |
BIN
src/assets/first.png
Normal file
|
After Width: | Height: | Size: 29 KiB |
BIN
src/assets/font/Alibaba_PuHuiTi_2.0_115_Black_115_Black.ttf
Normal file
BIN
src/assets/font/Alibaba_PuHuiTi_2.0_55_Regular_55_Regular.ttf
Normal file
BIN
src/assets/font/Alibaba_PuHuiTi_2.0_65_Medium_65_Medium.ttf
Normal file
BIN
src/assets/gotosle.png
Normal file
|
After Width: | Height: | Size: 431 B |
BIN
src/assets/his.png
Normal file
|
After Width: | Height: | Size: 864 B |
BIN
src/assets/history.png
Normal file
|
After Width: | Height: | Size: 890 B |
BIN
src/assets/historyb.png
Normal file
|
After Width: | Height: | Size: 37 KiB |
BIN
src/assets/interact.png
Normal file
|
After Width: | Height: | Size: 2.0 KiB |
BIN
src/assets/interactn.png
Normal file
|
After Width: | Height: | Size: 1.1 KiB |
BIN
src/assets/liviing.png
Normal file
|
After Width: | Height: | Size: 16 KiB |
BIN
src/assets/my.png
Normal file
|
After Width: | Height: | Size: 1.5 KiB |
BIN
src/assets/mybg.png
Normal file
|
After Width: | Height: | Size: 70 KiB |
BIN
src/assets/myn.png
Normal file
|
After Width: | Height: | Size: 677 B |
BIN
src/assets/n_bg.png
Normal file
|
After Width: | Height: | Size: 6.4 KiB |
BIN
src/assets/notcollect.png
Normal file
|
After Width: | Height: | Size: 756 B |
BIN
src/assets/notice.png
Normal file
|
After Width: | Height: | Size: 3.3 KiB |
BIN
src/assets/notice_bg.png
Normal file
|
After Width: | Height: | Size: 30 KiB |
BIN
src/assets/now.gif
Normal file
|
After Width: | Height: | Size: 1.9 KiB |
BIN
src/assets/nowb.gif
Normal file
|
After Width: | Height: | Size: 2.5 KiB |
BIN
src/assets/popbg.png
Normal file
|
After Width: | Height: | Size: 29 KiB |
BIN
src/assets/popbg1.png
Normal file
|
After Width: | Height: | Size: 9.5 KiB |
BIN
src/assets/radio_no.png
Normal file
|
After Width: | Height: | Size: 516 B |
BIN
src/assets/radio_sel.png
Normal file
|
After Width: | Height: | Size: 908 B |
BIN
src/assets/read.png
Normal file
|
After Width: | Height: | Size: 995 B |
BIN
src/assets/readb.png
Normal file
|
After Width: | Height: | Size: 31 KiB |
BIN
src/assets/readed.png
Normal file
|
After Width: | Height: | Size: 675 B |
BIN
src/assets/readedd.png
Normal file
|
After Width: | Height: | Size: 995 B |
BIN
src/assets/rotbot.png
Normal file
|
After Width: | Height: | Size: 1.4 KiB |
BIN
src/assets/search.png
Normal file
|
After Width: | Height: | Size: 2.9 KiB |
BIN
src/assets/searchb.png
Normal file
|
After Width: | Height: | Size: 734 B |
BIN
src/assets/second.png
Normal file
|
After Width: | Height: | Size: 18 KiB |
BIN
src/assets/select_no.png
Normal file
|
After Width: | Height: | Size: 308 B |
BIN
src/assets/select_not.png
Normal file
|
After Width: | Height: | Size: 314 B |
BIN
src/assets/select_yes.png
Normal file
|
After Width: | Height: | Size: 715 B |
BIN
src/assets/sempty.png
Normal file
|
After Width: | Height: | Size: 32 KiB |
BIN
src/assets/third.png
Normal file
|
After Width: | Height: | Size: 16 KiB |
BIN
src/assets/toto.png
Normal file
|
After Width: | Height: | Size: 359 B |
56
src/components/headBar.vue
Normal file
@ -0,0 +1,56 @@
|
||||
<!-- <template>
|
||||
<t-navbar :title=props.title :fixed="false" class="headnav" @left-click="handleClick" :style="{'--td-navbar-bg-color':props.backg}">
|
||||
<template #left>
|
||||
<img src='../assets/back.png' with="22" height="22" alt="back" :style="{ marginLeft: '16px' }">
|
||||
</template>
|
||||
</t-navbar>
|
||||
|
||||
</template> -->
|
||||
<template>
|
||||
<div :style="{height:'5px',background:props.backg}"></div>
|
||||
</template>
|
||||
<script setup>
|
||||
// import { title } from '../utils/const'
|
||||
// import { useRoute,useRouter } from 'vue-router';
|
||||
// const router = useRoute();
|
||||
// const routerr = useRouter();
|
||||
const props = defineProps({
|
||||
title: {
|
||||
type: String,
|
||||
required: true
|
||||
},
|
||||
backg:{
|
||||
type: String,
|
||||
default:'white'
|
||||
}
|
||||
});
|
||||
onMounted(() => {
|
||||
document.title = props.title;
|
||||
});
|
||||
onUpdated(() => {
|
||||
document.title = props.title;
|
||||
});
|
||||
// const handleClick = () => {
|
||||
|
||||
// if(router.query.frommywexin =='wx')
|
||||
// {
|
||||
|
||||
// routerr.push({ path: '/'});
|
||||
// }
|
||||
// else
|
||||
// {
|
||||
// window.history.back();
|
||||
// }
|
||||
|
||||
// };
|
||||
</script>
|
||||
<style scoped>
|
||||
.headnav {
|
||||
--td-navbar-height: 41px;
|
||||
--td-navbar-left-arrow-size: 22px;
|
||||
/* --td-navbar-bg-color: linear-gradient(180deg, #F1FAFF 0%, #FFFFFF 100%); */
|
||||
--td-navbar-title-font-size: var(--font-size-title);
|
||||
|
||||
}
|
||||
|
||||
</style>
|
||||
28
src/components/loading/index.js
Normal file
@ -0,0 +1,28 @@
|
||||
import { createApp } from "vue"
|
||||
|
||||
// 导入写好的Loading.vue文件
|
||||
import Loading from "./loading.vue"
|
||||
|
||||
export default {
|
||||
loading: null,
|
||||
// 每当这个插件被添加到应用程序中时,如果它是一个对象,就会调用 install 方法。如果它是一个 function,则函数本身将被调用。在这两种情况下——它都会收到两个参数:由 Vue 的 createApp 生成的 app 对象和用户传入的选项。
|
||||
install(app) {
|
||||
if (this.loading) {
|
||||
// 防止多次载入
|
||||
app.config.globalProperties.$loading = this.loading
|
||||
return
|
||||
}
|
||||
// 创建Loading实例,用于挂载
|
||||
let instance = createApp(Loading)
|
||||
// 创建div元素装载Loading对象
|
||||
let div = document.createElement("div")
|
||||
div.setAttribute("id","maskbox")
|
||||
let body = document.body
|
||||
// 导入body中
|
||||
body.appendChild(div);
|
||||
|
||||
this.loading = instance.mount(div)
|
||||
// 挂载vue身上
|
||||
app.config.globalProperties.$loading = this.loading;
|
||||
}
|
||||
}
|
||||
194
src/components/loading/loading.vue
Normal file
@ -0,0 +1,194 @@
|
||||
<template>
|
||||
<div class="maskbox" v-if="loading">
|
||||
<div class="mask"></div>
|
||||
<div class="sk-fading-circle">
|
||||
<div class="sk-circle1 sk-circle"></div>
|
||||
<div class="sk-circle2 sk-circle"></div>
|
||||
<div class="sk-circle3 sk-circle"></div>
|
||||
<div class="sk-circle4 sk-circle"></div>
|
||||
<div class="sk-circle5 sk-circle"></div>
|
||||
<div class="sk-circle6 sk-circle"></div>
|
||||
<div class="sk-circle7 sk-circle"></div>
|
||||
<div class="sk-circle8 sk-circle"></div>
|
||||
<div class="sk-circle9 sk-circle"></div>
|
||||
<div class="sk-circle10 sk-circle"></div>
|
||||
<div class="sk-circle11 sk-circle"></div>
|
||||
<div class="sk-circle12 sk-circle"></div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
import { ref } from 'vue'
|
||||
const loading = ref(false)
|
||||
const show = () => {
|
||||
loading.value = true
|
||||
}
|
||||
const hide = () => {
|
||||
loading.value = false
|
||||
}
|
||||
defineExpose({
|
||||
show,
|
||||
hide
|
||||
|
||||
})
|
||||
</script>
|
||||
|
||||
<style lang="scss">
|
||||
.maskbox{
|
||||
top:0;
|
||||
bottom:0;
|
||||
width:100%;
|
||||
height:100%;
|
||||
z-index:999999;
|
||||
position: fixed;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
.mask{
|
||||
top:0;
|
||||
bottom:0;
|
||||
position: absolute;
|
||||
width:100%;
|
||||
height:100%;
|
||||
opacity: 0.4;
|
||||
background-color: #000;
|
||||
}
|
||||
}
|
||||
.sk-fading-circle {
|
||||
margin: 100px auto;
|
||||
width: 40px;
|
||||
height: 40px;
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.sk-fading-circle .sk-circle {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
position: absolute;
|
||||
left: 0;
|
||||
top: 0;
|
||||
}
|
||||
|
||||
.sk-fading-circle .sk-circle:before {
|
||||
content: '';
|
||||
display: block;
|
||||
margin: 0 auto;
|
||||
width: 15%;
|
||||
height: 15%;
|
||||
background-color: #fff;
|
||||
border-radius: 100%;
|
||||
-webkit-animation: sk-circleFadeDelay 1.2s infinite ease-in-out both;
|
||||
animation: sk-circleFadeDelay 1.2s infinite ease-in-out both;
|
||||
}
|
||||
.sk-fading-circle .sk-circle2 {
|
||||
-webkit-transform: rotate(30deg);
|
||||
-ms-transform: rotate(30deg);
|
||||
transform: rotate(30deg);
|
||||
}
|
||||
.sk-fading-circle .sk-circle3 {
|
||||
-webkit-transform: rotate(60deg);
|
||||
-ms-transform: rotate(60deg);
|
||||
transform: rotate(60deg);
|
||||
}
|
||||
.sk-fading-circle .sk-circle4 {
|
||||
-webkit-transform: rotate(90deg);
|
||||
-ms-transform: rotate(90deg);
|
||||
transform: rotate(90deg);
|
||||
}
|
||||
.sk-fading-circle .sk-circle5 {
|
||||
-webkit-transform: rotate(120deg);
|
||||
-ms-transform: rotate(120deg);
|
||||
transform: rotate(120deg);
|
||||
}
|
||||
.sk-fading-circle .sk-circle6 {
|
||||
-webkit-transform: rotate(150deg);
|
||||
-ms-transform: rotate(150deg);
|
||||
transform: rotate(150deg);
|
||||
}
|
||||
.sk-fading-circle .sk-circle7 {
|
||||
-webkit-transform: rotate(180deg);
|
||||
-ms-transform: rotate(180deg);
|
||||
transform: rotate(180deg);
|
||||
}
|
||||
.sk-fading-circle .sk-circle8 {
|
||||
-webkit-transform: rotate(210deg);
|
||||
-ms-transform: rotate(210deg);
|
||||
transform: rotate(210deg);
|
||||
}
|
||||
.sk-fading-circle .sk-circle9 {
|
||||
-webkit-transform: rotate(240deg);
|
||||
-ms-transform: rotate(240deg);
|
||||
transform: rotate(240deg);
|
||||
}
|
||||
.sk-fading-circle .sk-circle10 {
|
||||
-webkit-transform: rotate(270deg);
|
||||
-ms-transform: rotate(270deg);
|
||||
transform: rotate(270deg);
|
||||
}
|
||||
.sk-fading-circle .sk-circle11 {
|
||||
-webkit-transform: rotate(300deg);
|
||||
-ms-transform: rotate(300deg);
|
||||
transform: rotate(300deg);
|
||||
}
|
||||
.sk-fading-circle .sk-circle12 {
|
||||
-webkit-transform: rotate(330deg);
|
||||
-ms-transform: rotate(330deg);
|
||||
transform: rotate(330deg);
|
||||
}
|
||||
.sk-fading-circle .sk-circle2:before {
|
||||
-webkit-animation-delay: -1.1s;
|
||||
animation-delay: -1.1s;
|
||||
}
|
||||
.sk-fading-circle .sk-circle3:before {
|
||||
-webkit-animation-delay: -1s;
|
||||
animation-delay: -1s;
|
||||
}
|
||||
.sk-fading-circle .sk-circle4:before {
|
||||
-webkit-animation-delay: -0.9s;
|
||||
animation-delay: -0.9s;
|
||||
}
|
||||
.sk-fading-circle .sk-circle5:before {
|
||||
-webkit-animation-delay: -0.8s;
|
||||
animation-delay: -0.8s;
|
||||
}
|
||||
.sk-fading-circle .sk-circle6:before {
|
||||
-webkit-animation-delay: -0.7s;
|
||||
animation-delay: -0.7s;
|
||||
}
|
||||
.sk-fading-circle .sk-circle7:before {
|
||||
-webkit-animation-delay: -0.6s;
|
||||
animation-delay: -0.6s;
|
||||
}
|
||||
.sk-fading-circle .sk-circle8:before {
|
||||
-webkit-animation-delay: -0.5s;
|
||||
animation-delay: -0.5s;
|
||||
}
|
||||
.sk-fading-circle .sk-circle9:before {
|
||||
-webkit-animation-delay: -0.4s;
|
||||
animation-delay: -0.4s;
|
||||
}
|
||||
.sk-fading-circle .sk-circle10:before {
|
||||
-webkit-animation-delay: -0.3s;
|
||||
animation-delay: -0.3s;
|
||||
}
|
||||
.sk-fading-circle .sk-circle11:before {
|
||||
-webkit-animation-delay: -0.2s;
|
||||
animation-delay: -0.2s;
|
||||
}
|
||||
.sk-fading-circle .sk-circle12:before {
|
||||
-webkit-animation-delay: -0.1s;
|
||||
animation-delay: -0.1s;
|
||||
}
|
||||
|
||||
@-webkit-keyframes sk-circleFadeDelay {
|
||||
0%, 39%, 100% { opacity: 0; }
|
||||
40% { opacity: 1; }
|
||||
}
|
||||
|
||||
@keyframes sk-circleFadeDelay {
|
||||
0%, 39%, 100% { opacity: 0; }
|
||||
40% { opacity: 1; }
|
||||
}
|
||||
</style>
|
||||
438
src/components/paperList.vue
Normal file
@ -0,0 +1,438 @@
|
||||
<template>
|
||||
<t-pull-down-refresh
|
||||
v-model="refreshing"
|
||||
@refresh="onRefresh"
|
||||
:loading-bar-height="36"
|
||||
:loading-texts="['下拉刷新', '松开刷新', '正在刷新', '刷新完成']"
|
||||
:loading-props="{ theme: 'dots' }"
|
||||
>
|
||||
<div class="listbox" v-if="list.length > 0">
|
||||
<t-list :async-loading="loading" @scroll="onScroll" >
|
||||
<div v-for="(item, $index) in list" >
|
||||
<div
|
||||
:style="{
|
||||
background: `url(${imgurl + item.img})`,
|
||||
height: '136px',
|
||||
marginLeft: '16px',
|
||||
marginRight: '16px',
|
||||
marginTop: '16px',
|
||||
'border-radius': '8px',
|
||||
'background-size': '100% 100%',
|
||||
'background-repeat': 'no-repeat',
|
||||
'justify-content': 'space-between',
|
||||
display: 'flex',
|
||||
}"
|
||||
@click="clickArticles(item)"
|
||||
>
|
||||
<!-- <div class="stickytop" v-if="$index==0&&props.needTop">置顶</div> -->
|
||||
<div class="stickytop" v-if="item.topFlag && props.needTop">置顶</div>
|
||||
<div style="height: 20px" v-else></div>
|
||||
<div class="stickybottom" v-if="item.readFlag == 1">已读</div>
|
||||
</div>
|
||||
<div
|
||||
class="titlebox"
|
||||
style="
|
||||
display: flex;
|
||||
margin-left: 16px;
|
||||
margin-right: 16px;
|
||||
margin-top: 8px;
|
||||
"
|
||||
|
||||
>
|
||||
<div class="type tag" v-if="item.mediaType == 2">音频</div>
|
||||
<div class="type1 tag" v-else-if="item.mediaType == 1">图文</div>
|
||||
<div class="type2 tag" v-else-if="item.mediaType == 3">视频</div>
|
||||
<div class="title">
|
||||
<!-- {{ item.title }} -->
|
||||
<nut-ellipsis
|
||||
:content=item.title
|
||||
rows="2"
|
||||
direction="end"
|
||||
></nut-ellipsis>
|
||||
</div>
|
||||
</div>
|
||||
<div
|
||||
style="
|
||||
display: flex;
|
||||
margin-left: 16px;
|
||||
margin-right: 16px;
|
||||
flex-wrap: wrap;
|
||||
"
|
||||
v-if="props.needlabel"
|
||||
>
|
||||
<div v-for="(itemt, $index) in item.tags">
|
||||
<div class="types" @click="clickTag(itemt)">{{ itemt.tagName }}</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<template #footer>
|
||||
<div class="end" v-if="evisible">— END —</div>
|
||||
</template>
|
||||
</t-list>
|
||||
</div>
|
||||
|
||||
<nut-empty v-else>
|
||||
<template #image>
|
||||
<nut-image :src="props.emptyimg" fit="cover" />
|
||||
</template>
|
||||
<template #description>
|
||||
<div
|
||||
style="
|
||||
font-size: var(--front-size-16);
|
||||
font-family: AlibabaPuHuiTiR;
|
||||
color: rgba(0, 0, 0, 0.65);
|
||||
line-height: 22px;
|
||||
margin-top: 16px;
|
||||
"
|
||||
>
|
||||
<!-- {{ props.emptytxt }} -->
|
||||
</div>
|
||||
</template>
|
||||
</nut-empty>
|
||||
</t-pull-down-refresh>
|
||||
</template>
|
||||
<script setup>
|
||||
import {getCurrentInstance} from 'vue';
|
||||
const { proxy } = getCurrentInstance();
|
||||
import sempty from "../assets/sempty.png";
|
||||
import {
|
||||
imgurl,
|
||||
clickArticle,
|
||||
getArticleList,
|
||||
} from "../utils/api.js";
|
||||
import { useRouter } from "vue-router";
|
||||
const evisible = ref(false);
|
||||
const page = ref(1);
|
||||
const totalPage = ref(1);
|
||||
const router = useRouter();
|
||||
const list = ref([]);
|
||||
const tagId =ref('')
|
||||
const name =ref('')
|
||||
const refreshing=ref(false);
|
||||
const loading = ref('');
|
||||
const props = defineProps({
|
||||
url: {
|
||||
type: String,
|
||||
default: "",
|
||||
},
|
||||
parameter: {
|
||||
type: Array,
|
||||
default: ["", "", ""],
|
||||
},
|
||||
list: {
|
||||
type: Array,
|
||||
},
|
||||
emptyimg: {
|
||||
type: String,
|
||||
default: sempty,
|
||||
},
|
||||
emptytxt: {
|
||||
type: String,
|
||||
default: "暂无数据",
|
||||
},
|
||||
needTop: {
|
||||
type: Boolean,
|
||||
default: true,
|
||||
},
|
||||
needlabel:{
|
||||
type: Boolean,
|
||||
default: true,
|
||||
}
|
||||
});
|
||||
const listtmp = reactive([
|
||||
{
|
||||
pageNum: 1,
|
||||
pageSize: 10,
|
||||
total: 1,
|
||||
pages: 1,
|
||||
list: [
|
||||
{
|
||||
id: 28,
|
||||
ceecId: 4,
|
||||
ceecName: "百问百答",
|
||||
title: "平台发布-健康宣教库-测试订阅6",
|
||||
topFlag: 1,
|
||||
readFlag: 0,
|
||||
originalFlag: 0,
|
||||
editType: 1,
|
||||
img: "public/platform/c2ab5a958cb5405f8df450a36bc61d5b_20231019150207_jpeg",
|
||||
tags: [
|
||||
{
|
||||
tagName: "腹部超声",
|
||||
tagId: 32,
|
||||
},
|
||||
{
|
||||
tagName: "血常规",
|
||||
tagId: 33,
|
||||
},
|
||||
{
|
||||
tagName: "放射治疗",
|
||||
tagId: 30,
|
||||
},
|
||||
],
|
||||
link: null,
|
||||
},
|
||||
],
|
||||
emptyFlag: false,
|
||||
},
|
||||
]);
|
||||
onMounted(() => {
|
||||
if (props.list != null && props.list.length > 0) {
|
||||
list.value.push(...props.list);
|
||||
evisible.value = true;
|
||||
}
|
||||
});
|
||||
watch(
|
||||
() => props.url,
|
||||
(newValue, oldValue) => {
|
||||
console.log("props.url", props.url);
|
||||
if (props.url != "") {
|
||||
onLoad(page.value,tagId.value);
|
||||
}
|
||||
}
|
||||
);
|
||||
|
||||
watch(
|
||||
() => props.parameter[2],
|
||||
(newValue, oldValue) => {
|
||||
console.log("rops.parameter[2]", props.parameter[2]);
|
||||
if (props.url != "") {
|
||||
onRefresh();
|
||||
}
|
||||
}
|
||||
);
|
||||
|
||||
watch(
|
||||
() => props.parameter[1],
|
||||
(newValue, oldValue) => {
|
||||
if (props.url != "") {
|
||||
onRefresh();
|
||||
}
|
||||
}
|
||||
);
|
||||
|
||||
const onLoad = (page,tagId) => {
|
||||
|
||||
if (props.list != null && props.list.length > 0) {
|
||||
refreshing.value=false;
|
||||
return;
|
||||
}
|
||||
|
||||
if (page > totalPage.value) {
|
||||
refreshing.value=false;
|
||||
return;
|
||||
}
|
||||
|
||||
if (page == 1 || !evisible.value) {
|
||||
loading.value = 'loading';
|
||||
proxy.$loading.show();
|
||||
getArticleList(
|
||||
props.url,
|
||||
page,
|
||||
props.parameter[0],
|
||||
props.parameter[1],
|
||||
props.parameter[2],tagId
|
||||
).then((data) => {
|
||||
console.log("getArticleList", data);
|
||||
|
||||
if (page == 1) {
|
||||
list.value = [];
|
||||
list.value.push(...data.data.list);
|
||||
} else {
|
||||
list.value.push(...data.data.list);
|
||||
}
|
||||
|
||||
totalPage.value = data.data.pages;
|
||||
|
||||
if (page >= totalPage.value) {
|
||||
evisible.value = true;
|
||||
}
|
||||
if(name.value!='')
|
||||
{
|
||||
document.title = name.value
|
||||
}
|
||||
refreshing.value=false;
|
||||
loading.value = '';
|
||||
proxy.$loading.hide();
|
||||
});
|
||||
}
|
||||
};
|
||||
const onRefresh = () => {
|
||||
console.log("onRefresh");
|
||||
page.value = 1;
|
||||
totalPage.value = 1;
|
||||
evisible.value = false;
|
||||
|
||||
|
||||
setTimeout(()=>{
|
||||
loading.value = '';
|
||||
refreshing.value = false;
|
||||
})
|
||||
|
||||
onLoad(page.value,tagId.value);
|
||||
|
||||
};
|
||||
const onScroll = (scrollBottom) => {
|
||||
if (scrollBottom < 100) {
|
||||
page.value=page.value+1;
|
||||
onLoad(page.value,tagId.value);
|
||||
}
|
||||
};
|
||||
function clickArticles(item) {
|
||||
console.log("item", item);
|
||||
|
||||
if (item.link == null || item.link == "null" || item.link == "") {
|
||||
router.push({
|
||||
path: "/webs-view",
|
||||
query: {article_id: item.id },
|
||||
});
|
||||
} else {
|
||||
clickArticle(item.id).then((data) => {
|
||||
window.location.href = item.link;
|
||||
});
|
||||
}
|
||||
}
|
||||
const emits = defineEmits(["child-event"]);
|
||||
function clickTag(item) {
|
||||
|
||||
tagId.value=item.tagId
|
||||
name.value=item.tagName
|
||||
onRefresh()
|
||||
emits('child-event', item.tagName); // 触发名为'child-event'的事件,并传递消息给父组件
|
||||
}
|
||||
</script>
|
||||
<style scoped>
|
||||
.titlebox {
|
||||
position: relative;
|
||||
}
|
||||
.tag {
|
||||
top: 0px;
|
||||
width: 38px;
|
||||
position: absolute;
|
||||
transform: skew(-8deg);
|
||||
}
|
||||
.stickytop {
|
||||
width: 50px;
|
||||
height: 30px;
|
||||
background: linear-gradient(32deg, #ffa39e 0%, #fe4e4f 100%);
|
||||
border-radius: 8px 0px 8px 0px;
|
||||
font-size: var(--front-size-12);
|
||||
font-family: AlibabaPuHuiTiR;
|
||||
color: #ffffff;
|
||||
line-height: 30px;
|
||||
text-align: center;
|
||||
}
|
||||
.stickybottom {
|
||||
margin-top: 106px;
|
||||
width: 50px;
|
||||
height: 30px;
|
||||
background: rgba(0, 0, 0, 0.65);
|
||||
border-radius: 8px 0px 8px 0px;
|
||||
font-size: var(--front-size-12);
|
||||
font-family: AlibabaPuHuiTiR;
|
||||
color: #ffffff;
|
||||
line-height: 30px;
|
||||
text-align: center;
|
||||
}
|
||||
.type {
|
||||
/* font-size: var(--font-size-11); */
|
||||
font-size:14px;
|
||||
font-family: DingTalk-JinBuTi, DingTalk;
|
||||
font-weight: normal;
|
||||
color: #ffffff;
|
||||
line-height: 20px;
|
||||
text-align: center;
|
||||
|
||||
text-shadow: 0px 2px 3px #2db27f;
|
||||
width: 38px;
|
||||
height: 19px;
|
||||
background: linear-gradient(33deg, #4ecf9d 0%, #81eec6 100%);
|
||||
border-radius: 2px;
|
||||
}
|
||||
.type1 {
|
||||
/* font-size: var(--font-size-11); */
|
||||
font-family: DingTalk-JinBuTi, DingTalk;
|
||||
font-weight: normal;
|
||||
color: #ffffff;
|
||||
line-height: 20px;
|
||||
text-align: center;
|
||||
font-size:14px;
|
||||
text-shadow: 0px 2px 3px #299bdf;
|
||||
width: 38px;
|
||||
height: 19px;
|
||||
background: linear-gradient(197deg, #a6d9ff 0%, #3bb5fe 100%);
|
||||
border-radius: 2px;
|
||||
}
|
||||
.type2 {
|
||||
font-size:14px;
|
||||
/* font-size: var(--font-size-11); */
|
||||
font-family: DingTalk-JinBuTi, DingTalk;
|
||||
font-weight: normal;
|
||||
color: #ffffff;
|
||||
line-height: 20px;
|
||||
text-align: center;
|
||||
|
||||
text-shadow: 0px 2px 3px #7963f1;
|
||||
width: 38px;
|
||||
height: 19px;
|
||||
background: linear-gradient(196deg, #c4b9ff 0%, #9784ff 100%);
|
||||
border-radius: 2px;
|
||||
}
|
||||
.end {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
margin-top: 21px;
|
||||
font-size: var(--font-size-14);
|
||||
font-family: AlibabaPuHuiTiR;
|
||||
color: rgba(0, 0, 0, 0.24);
|
||||
line-height: 24px;
|
||||
}
|
||||
/* .title:before{
|
||||
content: '图文';
|
||||
font-size:var(--font-size-11);
|
||||
font-family: DingTalk-JinBuTi, DingTalk;
|
||||
font-weight: normal;
|
||||
color: #FFFFFF;
|
||||
line-height: 20px;
|
||||
text-align: center;
|
||||
|
||||
text-shadow: 0px 2px 3px #299BDF;
|
||||
width: 38px;
|
||||
height: 20px;
|
||||
background: linear-gradient(197deg, #A6D9FF 0%, #3BB5FE 100%);
|
||||
border-radius: 2px;
|
||||
} */
|
||||
.title {
|
||||
text-indent: 42px;
|
||||
padding-left: 4px;
|
||||
/* font-size: var(--font-size-14); */
|
||||
font-size:16px;
|
||||
font-family: AlibabaPuHuiTiM;
|
||||
color: #000000d9;
|
||||
line-height: 24px;
|
||||
flex: 1;
|
||||
}
|
||||
.types {
|
||||
margin-top: 6px;
|
||||
margin-right: 6px;
|
||||
font-size: var(--font-size-12);
|
||||
font-family: AlibabaPuHuiTiR;
|
||||
color: #38a7fe;
|
||||
line-height: 16px;
|
||||
background: #ecf6ff;
|
||||
border-radius: 12px;
|
||||
padding: 4px 8px 4px 8px;
|
||||
}
|
||||
.nut-empty {
|
||||
margin-top: var(--empty-top);
|
||||
--nut-empty-padding: 0px;
|
||||
}
|
||||
:deep().nut-empty__box {
|
||||
width: 246px;
|
||||
height: 159px;
|
||||
}
|
||||
.t-pull-down-refresh{
|
||||
height: auto;
|
||||
}
|
||||
</style>
|
||||
102
src/components/search.vue
Normal file
@ -0,0 +1,102 @@
|
||||
<template>
|
||||
<div v-if="props.type=='ss'">
|
||||
<div class="ss" @click="click">
|
||||
<img src='../assets/search.png' with="20" height="20" class="dicon">
|
||||
<!-- <nut-image class="dicon" width="20" height="20" src='@/assets/search.png' alt="图片描述" /> -->
|
||||
{{ props.message }}</div>
|
||||
</div>
|
||||
<div style=" background: linear-gradient(180deg, #F1FAFF 0%, #FFFFFF 100%);" v-else>
|
||||
<div style="height:16px;"></div>
|
||||
<div class="ss1" @click="click">
|
||||
<img src='../assets/search.png' with="20" height="20" class="dicon" >
|
||||
<!-- <nut-image class="dicon" width="20" height="20" src='@/assets/search.png' alt="图片描述" /> -->
|
||||
{{ props.message }}</div>
|
||||
</div>
|
||||
|
||||
|
||||
</template>
|
||||
<script setup>
|
||||
// import search from '../assets/search.png'
|
||||
import { useRouter } from 'vue-router';
|
||||
const props = defineProps({
|
||||
message: {
|
||||
type: String,
|
||||
required: true
|
||||
},
|
||||
searchtype:{
|
||||
type: String,
|
||||
default:'paper'
|
||||
},
|
||||
type:{
|
||||
type: String,
|
||||
default:'ss'
|
||||
} ,
|
||||
ceecId:{
|
||||
type: String,
|
||||
default:''
|
||||
}
|
||||
});
|
||||
const router = useRouter();
|
||||
function click()
|
||||
{
|
||||
if(props.searchtype=='paper')
|
||||
{
|
||||
router.push({ path: '/searchview' ,query:{ceecId:props.ceecId,from:'edu-center'}});
|
||||
// let json={ceecId:props.ceecId,from:'edu-center'}
|
||||
// router.push({ path: '/searchview', state:
|
||||
// {
|
||||
// data:JSON.stringify(json)
|
||||
|
||||
// }
|
||||
// });
|
||||
}
|
||||
else {
|
||||
router.push({ path: '/search-things' });
|
||||
}
|
||||
}
|
||||
</script>
|
||||
<style scoped>
|
||||
.ss{
|
||||
display: flex;
|
||||
/* margin: 16px; */
|
||||
margin-top: 16px;
|
||||
margin-left: 16px;
|
||||
margin-right: 16px;
|
||||
height: 40px;
|
||||
align-items: center;
|
||||
background: #FFFFFF;
|
||||
box-shadow: 0px 2px 4px 0px #E0F2FF;
|
||||
border-radius: 21px;
|
||||
font-size: var(--front-size-14);
|
||||
font-family: PingFangSC-Regular, PingFang SC;
|
||||
font-weight: 400;
|
||||
color: rgba(0,0,0,0.25);
|
||||
line-height: 22px;
|
||||
text-shadow: 0px 2px 4px #E0F2FF;
|
||||
}
|
||||
.ss1{
|
||||
display: flex;
|
||||
margin-left: 16px;
|
||||
margin-right: 16px;
|
||||
margin-bottom: 8px;
|
||||
height: 40px;
|
||||
align-items: center;
|
||||
background: #FFFFFF;
|
||||
box-shadow: 0px 2px 4px 0px #E0F2FF;
|
||||
border-radius: 21px;
|
||||
font-size: var(--front-size-14);
|
||||
font-family: PingFangSC-Regular, PingFang SC;
|
||||
font-weight: 400;
|
||||
color: rgba(0,0,0,0.25);
|
||||
line-height: 22px;
|
||||
text-shadow: 0px 2px 4px #E0F2FF;
|
||||
}
|
||||
.nut-image{
|
||||
margin-left: 16px;
|
||||
margin-right: 6px;
|
||||
}
|
||||
.dicon{
|
||||
margin-left: 16px;
|
||||
margin-right: 6px;
|
||||
}
|
||||
</style>
|
||||
93
src/components/searchblue.vue
Normal file
@ -0,0 +1,93 @@
|
||||
<template >
|
||||
<div class="edu-head1">
|
||||
<div> </div>
|
||||
<div class="ss" @click="click">
|
||||
<!-- <nut-image class="dicon" width="20" height="20" :src=search alt="图片描述" /> -->
|
||||
<img src='../assets/search.png' with="20" height="20" class="dicon" >
|
||||
<!-- <nut-image class="dicon" width="20" height="20" src='src/assets/search.png' alt="图片描述" /> -->
|
||||
{{ props.message}}</div>
|
||||
|
||||
</div>
|
||||
|
||||
</template>
|
||||
<script setup >
|
||||
|
||||
import { useRouter } from 'vue-router';
|
||||
// import search from '../assets/search.png'
|
||||
const props = defineProps({
|
||||
message: {
|
||||
type: String,
|
||||
required: true
|
||||
} ,
|
||||
searchtype:{
|
||||
type: String,
|
||||
default:'paper'
|
||||
} ,
|
||||
ceecId:{
|
||||
type: String,
|
||||
default:''
|
||||
}
|
||||
});
|
||||
const router = useRouter();
|
||||
function click()
|
||||
{
|
||||
if(props.searchtype=='paper')
|
||||
{
|
||||
router.push({ path: '/searchview',query:{ceecId:props.ceecId,from:'department'} });
|
||||
// let json={ceecId:props.ceecId,from:'department'}
|
||||
// router.push({ path: '/searchview', state:
|
||||
// {
|
||||
// data:JSON.stringify(json)
|
||||
|
||||
// }
|
||||
// });
|
||||
}
|
||||
else if(props.searchtype=='xuanjiao')
|
||||
{
|
||||
router.push({ path: '/interact-search' });
|
||||
}
|
||||
else {
|
||||
router.push({ path: '/search-things' });
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
</script>
|
||||
<style scoped>
|
||||
.edu-head1{
|
||||
/* background-image: url(../assets/edubg.png); */
|
||||
/* background-size: cover; */
|
||||
background: linear-gradient(180deg, #F1FAFF 0%, #FFFFFF 100%);
|
||||
|
||||
|
||||
}
|
||||
.ss{
|
||||
display: flex;
|
||||
margin-right: 16px;
|
||||
margin-left: 16px;
|
||||
margin-bottom: 16px;
|
||||
height: 40px;
|
||||
align-items: center;
|
||||
background: #FFFFFF;
|
||||
border-radius: 21px;
|
||||
border: 2px solid #3BB5FE;
|
||||
font-size: var(--front-size-14);
|
||||
font-family: PingFangSC-Regular, PingFang SC;
|
||||
font-weight: 400;
|
||||
color: rgba(0,0,0,0.25);
|
||||
line-height: 22px;
|
||||
text-shadow: 0px 2px 4px #E0F2FF;
|
||||
|
||||
}
|
||||
.nut-image{
|
||||
margin-left: 16px;
|
||||
margin-right: 6px;
|
||||
}
|
||||
.dicon{
|
||||
margin-left: 16px;
|
||||
margin-right: 6px;
|
||||
}
|
||||
</style>
|
||||
|
||||
88
src/components/tabTools.vue
Normal file
@ -0,0 +1,88 @@
|
||||
|
||||
<template>
|
||||
<nut-tabbar class="nuttabbar" @tab-switch="tabSwitch"
|
||||
bottom active-color="#2BB5ECFF" unactive-color="rgba(0,0,0,0.24)" v-model="activee">
|
||||
<nut-tabbar-item
|
||||
v-for="item in list"
|
||||
:tab-title="item.text"
|
||||
:to="item.to"
|
||||
>
|
||||
<template #icon="props">
|
||||
<img :src="props.active ? item.active : item.unactive" alt="" :style="{width:'24px',height:'24px'}"/>
|
||||
</template>
|
||||
</nut-tabbar-item>
|
||||
</nut-tabbar>
|
||||
</template>
|
||||
<script setup>
|
||||
import edu from "../assets/edu.png";
|
||||
import edun from "../assets/edun.png";
|
||||
import My from "../assets/myn.png";
|
||||
import SMy from "../assets/my.png";
|
||||
import department from '@/assets/department.png'
|
||||
import departmentn from '@/assets/departmentn.png'
|
||||
import interact from '@/assets/interact.png'
|
||||
import interactn from '@/assets/interactn.png'
|
||||
import { ref,onMounted } from 'vue';
|
||||
import { useRouter } from 'vue-router'
|
||||
const router = useRouter();
|
||||
const cur_path=ref(router.currentRoute.value.path)
|
||||
// const props = defineProps({
|
||||
// departmentType: {
|
||||
// type: String,
|
||||
// required: false
|
||||
// }
|
||||
// });
|
||||
// const active = (cur_path.value=='/my-tools')?ref(1):ref(0);
|
||||
const activee = active();
|
||||
const list = ref([
|
||||
{ text: '宣教中心', active:edu,unactive:edun,to:'/education-centre',name:'/education-centre'},
|
||||
{ text: '科室服务', active:department,unactive: departmentn,to:'/department',name:'/department'},
|
||||
{ text: '健康互动', active:interact,unactive: interactn,to:'/interact',name:'/interact'},
|
||||
{ text: '我的', active:SMy,unactive: My,to:'/my',name:'/my'},
|
||||
]);
|
||||
const tabSwitch= (item,index)=> {
|
||||
|
||||
// console.log(activee);
|
||||
}
|
||||
function active()
|
||||
{
|
||||
if(cur_path.value=='/education-centre')
|
||||
{
|
||||
return ref(0);
|
||||
}
|
||||
else if(cur_path.value=='/department')
|
||||
{
|
||||
return ref(1);
|
||||
}
|
||||
else if(cur_path.value=='/interact')
|
||||
{
|
||||
return ref(2);
|
||||
}
|
||||
else if(cur_path.value=='/my')
|
||||
{
|
||||
return ref(3);
|
||||
}
|
||||
else
|
||||
{
|
||||
return ref(0);
|
||||
}
|
||||
}
|
||||
onMounted(() => {
|
||||
document.title = list.value[activee.value].text;
|
||||
});
|
||||
</script>
|
||||
<style scoped>
|
||||
.nuttabbar{
|
||||
--nut-tabbar-border-top: #fff;
|
||||
--nut-tabbar-border-bottom: #ffffff;
|
||||
--nut-tabbar-item-text-font-size:12px;
|
||||
--nut-tabbar-box-shadow:0px -4px 16px 0px rgba(0,0,0,0.04);
|
||||
--nut-tabbar-height:73px;
|
||||
|
||||
}
|
||||
/deep/.nut-tabbar.nut-tabbar-bottom{
|
||||
box-shadow: 0px -9px 28px 2px rgba(0,30,69,0.04);
|
||||
border-radius: 24px 24px 0px 0px;
|
||||
}
|
||||
|
||||
</style>
|
||||
30
src/main.js
Normal file
@ -0,0 +1,30 @@
|
||||
import { createApp } from 'vue'
|
||||
import 'reset-css'
|
||||
import './style.css'
|
||||
import App from './App.vue'
|
||||
import router from "@/router/index.js"
|
||||
import NutUI from "@nutui/nutui";
|
||||
import "@nutui/nutui/dist/style.css";
|
||||
import TDesign from 'tdesign-mobile-vue';
|
||||
import 'tdesign-mobile-vue/es/style/index.css';
|
||||
import vue3SeamlessScroll from "vue3-seamless-scroll";
|
||||
import VXETable from 'vxe-table'
|
||||
import 'vxe-table/lib/style.css'
|
||||
import VueLazyload from 'vue-lazyload'
|
||||
import Loading from "@/components/loading/index"
|
||||
//import VConsole from 'vconsole';
|
||||
|
||||
//const vConsole = new VConsole();
|
||||
|
||||
const app = createApp(App);
|
||||
app.use(NutUI);
|
||||
app.use(router);
|
||||
app.use(TDesign);
|
||||
app.use(vue3SeamlessScroll);
|
||||
app.use(VXETable);
|
||||
app.use(Loading);
|
||||
app.use(VueLazyload,{
|
||||
preLoad: 1.3,
|
||||
attempt: 2
|
||||
})
|
||||
app.mount('#app')
|
||||
249
src/router/index.js
Normal file
@ -0,0 +1,249 @@
|
||||
import { createWebHashHistory, createRouter, createWebHistory } from 'vue-router';
|
||||
import { defineAsyncComponent } from 'vue'
|
||||
|
||||
// import educationCentre from "@/views/education-centre.vue"
|
||||
// import department from "@/views/department.vue"
|
||||
// import interact from "@/views/interact.vue"
|
||||
// import interactserach from "@/views/interact-search.vue"
|
||||
// import my from "@/views/my.vue"
|
||||
// import searchthings from "@/views/searchthings.vue"
|
||||
// import live from "@/views/live.vue"
|
||||
// import privateRecords from "@/views/private-records.vue"
|
||||
// import visitingInformation from "@/views/visiting-information.vue"
|
||||
// import doctorInfo from "@/views/doctor-info.vue"
|
||||
// import leaveMessage from "@/views/leave-message.vue"
|
||||
// import fbhistory from "@/views/feedback-history.vue"
|
||||
// import information from "@/views/information.vue";
|
||||
// import personalData from "@/views/personal-data.vue";
|
||||
// import websView from "@/views/webs-view.vue";
|
||||
// import video from "@/views/video.vue";
|
||||
// import searchview from "@/views/searchview.vue";
|
||||
// import questionnaire from "@/views/questionnaire.vue";
|
||||
const routes = [
|
||||
// {
|
||||
// path: '/',
|
||||
// name: 'home',
|
||||
// component: home,
|
||||
// children: [{ path: '', component: educationCentre },{ path: '/education-centre', component: educationCentre },{ path: '/my-drugs', namne:'my-drugs',component: myDrugs}
|
||||
// ]
|
||||
// },
|
||||
{
|
||||
path: '/',
|
||||
redirect: '/education-centre',
|
||||
},
|
||||
{
|
||||
path: '/education-centre',
|
||||
name: 'education-centre',
|
||||
//component: ()=>import('@/views/education-centre.vue')
|
||||
component: defineAsyncComponent(() =>import('@/views/education-centre.vue'))
|
||||
// component: educationCentre,
|
||||
|
||||
},
|
||||
{
|
||||
path: '/department',
|
||||
name: 'department',
|
||||
//component: ()=>import('@/views/department.vue')
|
||||
component:defineAsyncComponent(() =>import('@/views/department.vue'))
|
||||
// component: department,
|
||||
|
||||
},
|
||||
{
|
||||
path: '/interact',
|
||||
name: 'interact',
|
||||
component:defineAsyncComponent(() =>import('@/views/interact.vue'))
|
||||
// component: ()=>import('@/views/interact.vue')
|
||||
// component: resolve=>(require(["/@/views/interact.vue"],resolve))
|
||||
// component: interact,
|
||||
|
||||
},
|
||||
{
|
||||
path: '/my',
|
||||
name: 'my',
|
||||
component:defineAsyncComponent(() =>import('@/views/my.vue'))
|
||||
// component: ()=>import('@/views/my.vue')
|
||||
// component: resolve=>(require(["/@/views/my.vue"],resolve))
|
||||
// component: my,
|
||||
|
||||
},
|
||||
{
|
||||
path: '/search-things',
|
||||
name: 'search-things',
|
||||
component:defineAsyncComponent(() =>import('@/views/searchthings.vue'))
|
||||
// component: ()=>import('@/views/searchthings.vue')
|
||||
// component: resolve=>(require(["/@/views/search-things.vue"],resolve))
|
||||
// component: searchthings,
|
||||
|
||||
},
|
||||
{
|
||||
path: '/live',
|
||||
name: 'live',
|
||||
component:defineAsyncComponent(() =>import('@/views/live.vue'))
|
||||
// component: ()=>import('@/views/live.vue')
|
||||
// component: resolve=>(require(["/@/views/live.vue"],resolve))
|
||||
// component: live,
|
||||
|
||||
},
|
||||
|
||||
{
|
||||
path: '/private-records',
|
||||
name: 'private-records',
|
||||
component:defineAsyncComponent(() =>import('@/views/private-records.vue'))
|
||||
// component: ()=>import('@/views/private-records.vue')
|
||||
// component: resolve=>(require(["/@/views/private-records.vue"],resolve))
|
||||
// component: privateRecords,
|
||||
|
||||
},
|
||||
{
|
||||
path: '/visiting-information',
|
||||
name: 'visiting-information',
|
||||
component:defineAsyncComponent(() =>import('@/views/visiting-information.vue'))
|
||||
// component: ()=>import('@/views/visiting-information.vue')
|
||||
// component: resolve=>(require(["/@/views/visiting-information.vue"],resolve))
|
||||
// component: visitingInformation,
|
||||
|
||||
},
|
||||
{
|
||||
path: '/doctor-info',
|
||||
name: 'doctor-info',
|
||||
component:defineAsyncComponent(() =>import('@/views/doctor-info.vue'))
|
||||
// component: ()=>import('@/views/doctor-info.vue')
|
||||
// component: resolve=>(require(["/@/views/doctor-info.vue"],resolve))
|
||||
// component: doctorInfo,
|
||||
|
||||
},
|
||||
{
|
||||
path: '/leave-message',
|
||||
name: 'leave-message',
|
||||
component:defineAsyncComponent(() =>import('@/views/leave-message.vue'))
|
||||
// component: ()=>import('@/views/leave-message.vue')
|
||||
// component: resolve=>(require(["/@/views/leave-message.vue"],resolve))
|
||||
// component: leaveMessage,
|
||||
|
||||
},
|
||||
{
|
||||
path: '/feedback-history',
|
||||
name: 'feedback-history',
|
||||
component:defineAsyncComponent(() =>import('@/views/feedback-history.vue'))
|
||||
// component: ()=>import('@/views/feedback-history.vue')
|
||||
// component: resolve=>(require(["/@/views/feedback-history.vue"],resolve))
|
||||
// component: fbhistory,
|
||||
|
||||
},
|
||||
{
|
||||
path: '/information',
|
||||
name: 'information',
|
||||
component:defineAsyncComponent(() =>import('@/views/information.vue'))
|
||||
// component: ()=>import('@/views/information.vue')
|
||||
// component: resolve=>(require(["/@/views/information.vue"],resolve))
|
||||
// component: information,
|
||||
|
||||
},
|
||||
{
|
||||
path: '/personal-data',
|
||||
name: 'personal-data',
|
||||
component:defineAsyncComponent(() =>import('@/views/personal-data.vue'))
|
||||
// component: ()=>import('@/views/personal-data.vue')
|
||||
// component: resolve=>(require(["/@/views/personal-data.vue"],resolve))
|
||||
// component: personalData,
|
||||
|
||||
},
|
||||
{
|
||||
path: '/webs-view',
|
||||
name: 'webs-view',
|
||||
component:defineAsyncComponent(() =>import('@/views/webs-view.vue'))
|
||||
// component: ()=>import('@/views/webs-view.vue')
|
||||
// component: resolve=>(require(["/@/views/webs-view.vue"],resolve))
|
||||
// component: websView,
|
||||
|
||||
},
|
||||
{
|
||||
path: '/video',
|
||||
name: 'video',
|
||||
component:defineAsyncComponent(() =>import('@/views/video.vue'))
|
||||
// component: ()=>import('@/views/video.vue')
|
||||
// component: resolve=>(require(["/@/views/video.vue"],resolve))
|
||||
// component: video,
|
||||
|
||||
},
|
||||
{
|
||||
path: '/searchview',
|
||||
name: 'searchview',
|
||||
component:defineAsyncComponent(() =>import('@/views/searchview.vue'))
|
||||
// component: ()=>import('@/views/searchview.vue')
|
||||
// component: resolve=>(require(["/@/views/searchview.vue"],resolve))
|
||||
// component: searchview,
|
||||
|
||||
},
|
||||
{
|
||||
path: '/questionnaire',
|
||||
name: 'questionnaire',
|
||||
component:defineAsyncComponent(() =>import('@/views/questionnaire.vue'))
|
||||
// component: ()=>import('@/views/questionnaire.vue')
|
||||
// component: resolve=>(require(["/@/views/questionnaire.vue"],resolve))
|
||||
// component: questionnaire,
|
||||
|
||||
},
|
||||
{
|
||||
path: '/interact-search',
|
||||
name: 'interactserach',
|
||||
component:defineAsyncComponent(() =>import('@/views/interact-search.vue'))
|
||||
// component: ()=>import('@/views/interact-search.vue')
|
||||
// component: resolve=>(require(["/@/views/interact-search.vue"],resolve))
|
||||
// component: interactserach,
|
||||
|
||||
},
|
||||
];
|
||||
// const routes = [
|
||||
// // {
|
||||
// // path: '/',
|
||||
// // redirect: '/liver-drugs',
|
||||
// // },
|
||||
// {
|
||||
// path: '/',
|
||||
// redirect: '/home',
|
||||
// },
|
||||
// {
|
||||
// path: '/home',
|
||||
// name: 'home',
|
||||
// component: home,
|
||||
// child:[{ path: '', component: liverDrugs },
|
||||
// {
|
||||
// path: '/liver-drugs',
|
||||
// // name: 'liver-drugs',
|
||||
// component: liverDrugs,
|
||||
// },
|
||||
// { path: '/my-drugs',
|
||||
// // name: 'my-drugs',
|
||||
// component: myDrugs} ]
|
||||
|
||||
// },
|
||||
// {
|
||||
// path: '/liver-drugs',
|
||||
// name: 'liver-drugs',
|
||||
// component: liverDrugs,
|
||||
// },
|
||||
// {
|
||||
// path: '/liver-tools',
|
||||
// name: 'liver-tools',
|
||||
// component: liverTools,
|
||||
// },
|
||||
|
||||
// {
|
||||
// path: '/liver-guidelines',
|
||||
// name: 'liver-guidelines',
|
||||
// component: liverGuidelines,
|
||||
// },
|
||||
// {
|
||||
// path: '/my-drugs',
|
||||
// name: 'my-drugs',
|
||||
// component: myDrugs}
|
||||
|
||||
// ];
|
||||
|
||||
const router = createRouter({
|
||||
// createWebHashHistory URL 带井号
|
||||
// createWebHistory URL 去井号
|
||||
history:createWebHashHistory(),
|
||||
routes: routes,
|
||||
});
|
||||
export default router;
|
||||
21
src/style.css
Normal file
@ -0,0 +1,21 @@
|
||||
body{
|
||||
background:#fff;
|
||||
}
|
||||
/* @font-face {
|
||||
font-family: "阿里巴巴普惠体 2.0 65 Medium";font-weight: 500;src: url("//at.alicdn.com/wf/webfont/sgTFboRMJU3n/JxNJC26HiA0D.woff2") format("woff2"),
|
||||
url("//at.alicdn.com/wf/webfont/sgTFboRMJU3n/T8cUklUUIqA1.woff") format("woff");
|
||||
font-display: swap;
|
||||
} */
|
||||
/* 在线链接服务仅供平台体验和调试使用,平台不承诺服务的稳定性,企业客户需下载字体包自行发布使用并做好备份。 */
|
||||
@font-face {
|
||||
font-family:AlibabaPuHuiTiM;;
|
||||
src:url('../src/assets/font/Alibaba_PuHuiTi_2.0_65_Medium_65_Medium.ttf')
|
||||
}
|
||||
@font-face {
|
||||
font-family:AlibabaPuHuiTiR;
|
||||
src:url('../src/assets/font/Alibaba_PuHuiTi_2.0_55_Regular_55_Regular.ttf')
|
||||
}
|
||||
@font-face {
|
||||
font-family:AlibabaPuHuiTiB;
|
||||
src:url('../src/assets/font/Alibaba_PuHuiTi_2.0_115_Black_115_Black.ttf')
|
||||
}
|
||||
285
src/utils/api.js
Normal file
@ -0,0 +1,285 @@
|
||||
import service from './request';
|
||||
|
||||
export function getJsapiSignature(appid,url) {
|
||||
return service({
|
||||
url:'/oauth2/getJsapiSignature/'+appid,
|
||||
method: 'get',
|
||||
params:{
|
||||
url:url,
|
||||
|
||||
}
|
||||
})
|
||||
}
|
||||
export function oauth2greet(appid,officeId,code) {
|
||||
return service({
|
||||
url:'/oauth2/greet/'+appid+'/'+officeId,
|
||||
method: 'get',
|
||||
params:{
|
||||
code:code
|
||||
|
||||
}
|
||||
})
|
||||
}
|
||||
export function getIndex() {
|
||||
return service({
|
||||
url:'/index',
|
||||
method: 'get'
|
||||
})
|
||||
}
|
||||
export function queryDepars() {
|
||||
return service({
|
||||
url:'/officeserve/queryDepars',
|
||||
method: 'get'
|
||||
})
|
||||
}
|
||||
export function queryPage(pageNum,title) {
|
||||
return service({
|
||||
url:'/interact/queryPage',
|
||||
method: 'post',
|
||||
data:{
|
||||
pageNum:pageNum,
|
||||
pageSize :10 ,
|
||||
title:title
|
||||
|
||||
}
|
||||
})
|
||||
}
|
||||
export function queryNoticeList() {
|
||||
return service({
|
||||
url:'/notice/queryNoticeList',
|
||||
method: 'get'
|
||||
})
|
||||
}
|
||||
export function clickArticle(article_id) {
|
||||
return service({
|
||||
url:'/article/clickArticle/'+article_id,
|
||||
method: 'get'
|
||||
})
|
||||
}
|
||||
export function Articleread(article_id) {
|
||||
return service({
|
||||
url:'/article/read/'+article_id,
|
||||
method: 'get'
|
||||
})
|
||||
}
|
||||
export function Articlecollect(article_id,collect_flag) {
|
||||
return service({
|
||||
url:'/article/collect/'+article_id+'/'+collect_flag,
|
||||
method: 'get'
|
||||
})
|
||||
}
|
||||
export function Articledetail(article_id) {
|
||||
return service({
|
||||
url:'/article/detail/'+article_id,
|
||||
method: 'get'
|
||||
})
|
||||
}
|
||||
export function queryClickArticle(pageNum) {
|
||||
return service({
|
||||
url:'/article/queryClickArticle',
|
||||
method: 'post',
|
||||
data:{
|
||||
// ceecId: 0,
|
||||
pageNum:pageNum,
|
||||
pageSize :10 ,
|
||||
// tagId:0,
|
||||
// title:'string'
|
||||
}
|
||||
})
|
||||
}
|
||||
export function queryColectArticle() {
|
||||
return service({
|
||||
url:'/article/queryColectArticle',
|
||||
method: 'post'
|
||||
})
|
||||
}
|
||||
export function queryReadArticle() {
|
||||
return service({
|
||||
url:'/article/queryReadArticle',
|
||||
method: 'post'
|
||||
})
|
||||
}
|
||||
export function getArticleList(url,pageNum,ceecId,title,mediaType,tagId) {
|
||||
return service({
|
||||
url:url,
|
||||
method: 'post',
|
||||
data:{
|
||||
ceecId:ceecId ,
|
||||
pageNum:pageNum,
|
||||
pageSize :10 ,
|
||||
tagId:tagId,
|
||||
title:title,
|
||||
mediaType:mediaType
|
||||
}
|
||||
})
|
||||
}
|
||||
export function getCeecArticleList(pageNum,ceecId,tagId,title) {
|
||||
return service({
|
||||
url:'/ceecArticleList',
|
||||
method: 'post',
|
||||
data:{
|
||||
ceecId:ceecId ,
|
||||
pageNum:pageNum,
|
||||
pageSize :10 ,
|
||||
tagId:tagId,
|
||||
title:title
|
||||
}
|
||||
})
|
||||
}
|
||||
export function advise(content) {
|
||||
return service({
|
||||
url:'/advise/add',
|
||||
method: 'post',
|
||||
data:{
|
||||
content:content ,
|
||||
|
||||
}
|
||||
})
|
||||
}
|
||||
export function advisequeryPage(pageNum) {
|
||||
return service({
|
||||
url:'/advise/queryPage',
|
||||
method: 'post',
|
||||
data:{
|
||||
pageNum:pageNum,
|
||||
pageSize :10 ,
|
||||
|
||||
}
|
||||
})
|
||||
}
|
||||
export function queryAddressTime(week) {
|
||||
return service({
|
||||
url:'/outpatient/queryAddressTime',
|
||||
method: 'post',
|
||||
data:{
|
||||
week:week,
|
||||
|
||||
|
||||
}
|
||||
})
|
||||
}
|
||||
export function getmy() {
|
||||
return service({
|
||||
url:'/user/my',
|
||||
method: 'get'
|
||||
})
|
||||
}
|
||||
export function queryList() {
|
||||
return service({
|
||||
url:'/medicalStaff/queryList',
|
||||
method: 'get'
|
||||
})
|
||||
}
|
||||
export function medicalStaff(id) {
|
||||
return service({
|
||||
url:'/medicalStaff/get/'+id,
|
||||
method: 'get'
|
||||
})
|
||||
}
|
||||
export function userInfo() {
|
||||
return service({
|
||||
url:'/user/info',
|
||||
method: 'get'
|
||||
})
|
||||
}
|
||||
export function diseaseList() {
|
||||
return service({
|
||||
url:'/user/diseaseList',
|
||||
method: 'get'
|
||||
})
|
||||
}
|
||||
export function educationalList() {
|
||||
return service({
|
||||
url:'/user/educationalList',
|
||||
method: 'get'
|
||||
})
|
||||
}
|
||||
export function positionList() {
|
||||
return service({
|
||||
url:'/user/positionList',
|
||||
method: 'get'
|
||||
})
|
||||
}
|
||||
// export function userUpdate(birthday,city,disease,district,educational,height,mobile,name,occupation,province,sex,weight) {
|
||||
// return service({
|
||||
// url:'/user/update',
|
||||
// method: 'post',
|
||||
// data:{
|
||||
// birthday: birthday,
|
||||
// city:city,
|
||||
// disease: disease,
|
||||
// district: district,
|
||||
// educational:educational,
|
||||
// height:height,
|
||||
// mobile: mobile,
|
||||
// name: name,
|
||||
// occupation: occupation,
|
||||
// province: province,
|
||||
// sex:sex,
|
||||
// weight: weight
|
||||
// }
|
||||
// })
|
||||
// }
|
||||
export function userUpdate(formData){
|
||||
return service({
|
||||
url:'/user/update',
|
||||
method: 'post',
|
||||
data:formData
|
||||
})
|
||||
}
|
||||
export function medicalStaffqueryPage(pageNum,name) {
|
||||
return service({
|
||||
url:'/medicalStaff/queryPage',
|
||||
method: 'post',
|
||||
data:{
|
||||
name:name,
|
||||
pageNum:pageNum,
|
||||
pageSize :10 ,
|
||||
|
||||
}
|
||||
})
|
||||
}
|
||||
export function livequeryPage(pageNum) {
|
||||
return service({
|
||||
url:'/live/queryPage',
|
||||
method: 'post',
|
||||
data:{
|
||||
pageNum:pageNum,
|
||||
pageSize :10 ,
|
||||
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
export function questionnaire(pageNum) {
|
||||
return service({
|
||||
url:'/questionnaire/queryPage',
|
||||
method: 'post',
|
||||
data:{
|
||||
pageNum:pageNum,
|
||||
pageSize :10 ,
|
||||
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
// export function addCorrection(id,catalog_id,content) {
|
||||
// return service({
|
||||
// url:'/book/drughand/addCorrection',
|
||||
// method: 'post',
|
||||
// params:{
|
||||
// id:id,
|
||||
// catalog_id:catalog_id,
|
||||
// content:content
|
||||
// }
|
||||
// })
|
||||
// }
|
||||
|
||||
export const imgurl='https://health-edu.oss-cn-beijing.aliyuncs.com/';
|
||||
// export const greet="http://dev.edu.igandan.com/gdxz-h5/oauth2/index/";
|
||||
export const greet="https://h5.ixuanjiao.com/api/oauth2/index/";
|
||||
// export const roootUrl='http://dev.edu.igandan.com/h5/index.html?officeid=';
|
||||
// export const roootUrl='https://xuanjiao.igandan.com/h5/index.html?officeid=';
|
||||
export const roootUrl='https://h5.ixuanjiao.com/index.html?officeid=';
|
||||
export const fromwexin='&frommywexin=wx';
|
||||
export const frommywexin='?frommywexin=wx';
|
||||
24998
src/utils/areaList.js
Normal file
1
src/utils/const.js
Normal file
@ -0,0 +1 @@
|
||||
export const title='健康宣教';
|
||||
56
src/utils/greet.js
Normal file
@ -0,0 +1,56 @@
|
||||
import {oauth2greet,roootUrl} from '../utils/api'
|
||||
export async function goGreet() {
|
||||
//alert(window.location.href);
|
||||
const urlSearchParams = new URLSearchParams(window.location.search)
|
||||
let appid = urlSearchParams.get('appid')
|
||||
let officeid = urlSearchParams.get('officeid')
|
||||
const code = urlSearchParams.get('code')
|
||||
localStorage.setItem("officeid", officeid);
|
||||
const token=localStorage.getItem(officeid + '-token');
|
||||
if(typeof token === "undefined" ||token ==null)
|
||||
{
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
localStorage.removeItem(officeid + '-token');
|
||||
}
|
||||
//alert('第1个:'+code)
|
||||
if (code) {
|
||||
//alert('第二个:'+code)
|
||||
//alert('appid:'+appid);
|
||||
//alert('officeid:'+officeid);
|
||||
let res= await oauth2greet(appid, officeid, code);
|
||||
//alert(JSON.stringify(res));
|
||||
if(res.code==200){
|
||||
localStorage.setItem(officeid + '-token', res.data);
|
||||
window.location.href =roootUrl + officeid + '&appid=' +appid
|
||||
}else if(res.code === 30001){
|
||||
let encodedUrl = encodeURIComponent(window.location.href)
|
||||
window.location.href = roootUrl + appid + "&redirect_uri=" + encodedUrl + "&response_type=code&scope=snsapi_userinfo&state=1&component_appid=wx61944e1d991e380e&connect_redirect=1#wechat_redirect";
|
||||
}else{
|
||||
console.log('接口报错');
|
||||
}
|
||||
|
||||
// .then((res) => {
|
||||
// console.log("oauth2greetapp", res);
|
||||
// // alert("oauth2greetapp")
|
||||
// localStorage.setItem(officeid + '-token', res.data);
|
||||
// // localStorage.setItem('default' + '-token', res.data);
|
||||
// if(res.code === 30001){
|
||||
// let encodedUrl = encodeURIComponent(window.location.href)
|
||||
// window.location.href = roootUrl + appid + "&redirect_uri=" + encodedUrl + "&response_type=code&scope=snsapi_userinfo&state=1&component_appid=wx61944e1d991e380e&connect_redirect=1#wechat_redirect";
|
||||
// return
|
||||
// }
|
||||
// }).then(()=>{
|
||||
// // window.location.reload();
|
||||
// window.location.href =roootUrl + officeid + '&appid=' +appid
|
||||
|
||||
// })
|
||||
} else {
|
||||
// alert("coddafse")
|
||||
let encodedUrl = encodeURIComponent(window.location.href)
|
||||
window.location.href = "https://open.weixin.qq.com/connect/oauth2/authorize?appid=" + appid + "&redirect_uri=" + encodedUrl + "&response_type=code&scope=snsapi_userinfo&state=1&component_appid=wx61944e1d991e380e&connect_redirect=1#wechat_redirect";
|
||||
}
|
||||
}
|
||||
|
||||
179
src/utils/request.js
Normal file
@ -0,0 +1,179 @@
|
||||
import axios from 'axios';
|
||||
import { goGreet } from '../utils/greet.js'
|
||||
let flag=true;
|
||||
// create an axios instance
|
||||
const service = axios.create({
|
||||
baseURL:import.meta.env.VITE_BASE_URL,
|
||||
timeout: 8000,
|
||||
// withCredentials: true,
|
||||
headers:{
|
||||
'Content-Type':'application/json',
|
||||
'Authorization':'',
|
||||
'x-access-token':''
|
||||
//'x-access-token':'eyJhbGciOiJIUzUxMiJ9.eyJpZCI6NjAsIm9mZmljZWlkIjoxNSwiaDVfdXNlciI6IntcImFwcGlkXCI6XCJ3eGFiOGEzMDUwNTNhYTk3MTRcIixcImRlcGFydG1lbnRJZFwiOjM1LFwiaWRcIjo2MCxcIm9mZmljZUlkXCI6MTUsXCJvcGVuaWRcIjpcIm9ycktCNlVBdUt2a0J6czExcFo5dDlfY0R6UHdcIn0iLCJ0eXBlIjo1LCJkZXZpY2UiOjQsInN1cGVyUGFzc3dvcmRGbGFnIjpmYWxzZSwiaWF0IjoxNzA5ODAzODM0LCJleHAiOjE3MTA0MDg2MzR9.sl9UosweMuh39c30dekva68xKsfp0v0n74_Bkn4JGczIIU8eUTdJR6Iud0JuypRymtEl4YzVOny7c7KnMtzrMA'
|
||||
}
|
||||
});
|
||||
|
||||
// request interceptor
|
||||
service.interceptors.request.use(
|
||||
(config) => {
|
||||
// Store 必须在拦截器内部导入,在外部导入会显示 Pinia 未初始化
|
||||
// 设置请求头部 Authorization
|
||||
// console.log("333333");
|
||||
// console.log(config);
|
||||
const officeid = localStorage.getItem("officeid")
|
||||
|
||||
if(typeof officeid === "undefined"||officeid ==null|| officeid == "undefined")
|
||||
{
|
||||
config.headers['x-access-token'] = '';
|
||||
}
|
||||
else
|
||||
{
|
||||
const token=localStorage.getItem(officeid + '-token');
|
||||
|
||||
if(typeof token === "undefined"||token ==null|| token == "undefined"|| token == "")
|
||||
{
|
||||
config.headers['x-access-token'] = '';
|
||||
}
|
||||
else
|
||||
{
|
||||
config.headers['x-access-token'] = token;
|
||||
}
|
||||
}
|
||||
|
||||
return config;
|
||||
},
|
||||
(error) => {
|
||||
console.error(error);
|
||||
return Promise.reject(error);
|
||||
}
|
||||
);
|
||||
|
||||
// response interceptor
|
||||
service.interceptors.response.use(
|
||||
async (response) => {
|
||||
// console.log(response)
|
||||
//var Authorization_token = response.headers.Authorization;
|
||||
// if (Authorization_token) {
|
||||
// sessionStorage.setItem('token', Authorization_token); //当token快过期时,服务器会返回新token,本地刷新
|
||||
// }
|
||||
const { code, message } = response.data;
|
||||
// console.log("code",code);
|
||||
|
||||
if (code == 30007 || code == 40007)
|
||||
{
|
||||
|
||||
const officeid = localStorage.getItem("officeid");
|
||||
if(!officeid){
|
||||
console.log("officeid不存在")
|
||||
};
|
||||
localStorage.clear();
|
||||
// if(flag){
|
||||
// flag=false;
|
||||
// goGreet();
|
||||
// }
|
||||
goGreet();
|
||||
|
||||
}
|
||||
else if(code == 60003)
|
||||
{
|
||||
let back_url = window.location.href;
|
||||
window.location.href="https://wx.igandan.com/hcp/toLogin?back_url="+back_url;
|
||||
// window.location.href="https://twx.igandan.org/hcp/toLogin?back_url="+back_url;
|
||||
}
|
||||
else if (code == 401 || code==403 || code==405 || code==406) {
|
||||
//Message.clear();
|
||||
// Message.error({
|
||||
// content: message,
|
||||
// duration: 3000
|
||||
// });
|
||||
// 重定向路由到登陆页面
|
||||
|
||||
}else if(code === 400){
|
||||
// Message.error({
|
||||
// content: '缺少参数',
|
||||
// duration: 3000
|
||||
// });
|
||||
}else if(code == 402){
|
||||
// Message.error({
|
||||
// content: '请求无权限',
|
||||
// duration: 3000
|
||||
// });
|
||||
}else if(code == 201){
|
||||
// Message.error({
|
||||
// content: '账户状态异常',
|
||||
// duration: 3000
|
||||
// });
|
||||
}else if(code==-1){
|
||||
// Message.error({
|
||||
// content: message,
|
||||
// duration: 3000
|
||||
// });
|
||||
}else{
|
||||
flag=true;
|
||||
}
|
||||
|
||||
return response.data;
|
||||
},
|
||||
(error) => {
|
||||
console.log("------------------");
|
||||
console.log(error);
|
||||
|
||||
const { code, message } = error.response.data;
|
||||
// 如果过期则退出登录
|
||||
if (code == 30007 || code == 40007)
|
||||
{
|
||||
const officeid = localStorage.getItem("officeid");
|
||||
if(!officeid){
|
||||
console.log("officeid不存在")
|
||||
};
|
||||
localStorage.clear();
|
||||
// if(flag){
|
||||
// flag=false;
|
||||
// goGreet();
|
||||
// }
|
||||
goGreet();
|
||||
}
|
||||
else if(code == 60003)
|
||||
{
|
||||
let back_url = window.location.href;
|
||||
window.location.href="https://wx.igandan.com/hcp/toLogin?back_url="+back_url;
|
||||
}
|
||||
else if (code === 401 || code==403 || code==405 || code==406) {
|
||||
// Message.error({
|
||||
// content: message,
|
||||
// duration: 3000
|
||||
// });
|
||||
// // 重定向路由到登陆页面
|
||||
// store.clearInfo();
|
||||
// window.location.href="/login";
|
||||
}else if(code === 400){
|
||||
// Message.error({
|
||||
// content: '缺少参数',
|
||||
// duration: 3000
|
||||
// });
|
||||
}else if(code === 402){
|
||||
// Message.error({
|
||||
// content: '请求无权限',
|
||||
// duration: 3000
|
||||
// });
|
||||
}else if(code === 201){
|
||||
// Message.error({
|
||||
// content: '账户状态异常',
|
||||
// duration: 3000
|
||||
// });
|
||||
}else {
|
||||
flag=true;
|
||||
// Message.error({
|
||||
// content: error.message,
|
||||
// duration: 3000
|
||||
// })
|
||||
}
|
||||
return Promise.reject(message);
|
||||
}
|
||||
);
|
||||
// export const imgurl='http://47.105.52.114:8085/app/';
|
||||
export const fromwexin='&frommywexin=wx';
|
||||
export const frommywexin='?frommywexin=wx';
|
||||
|
||||
export default service;
|
||||
26083
src/utils/video.js
Normal file
103
src/utils/wxshare-1.6.0.js
Normal file
@ -0,0 +1,103 @@
|
||||
import wx from 'weixin-js-sdk'
|
||||
import { getJsapiSignature } from './api'
|
||||
|
||||
let share = {
|
||||
title: "",
|
||||
desc: "",
|
||||
link: "",
|
||||
imgUrl: "",
|
||||
init: function () {
|
||||
var path = location.href.split('#')[0];
|
||||
var url = "";
|
||||
var appid = localStorage.getItem("appid");
|
||||
|
||||
// getJsapiSignature(url, {
|
||||
// params: {
|
||||
// path: encodeURIComponent(window.location.href.split('#')[0]),
|
||||
// appid: appid
|
||||
// }
|
||||
// })
|
||||
getJsapiSignature(appid,encodeURIComponent(window.location.href.split('#')[0]))
|
||||
.then(json => {
|
||||
// console.log('json',json)
|
||||
wx.config({
|
||||
debug: false,
|
||||
appId: appid,
|
||||
timestamp: json.data.timestamp,
|
||||
nonceStr: json.data.nonceStr,
|
||||
signature: json.data.signature,
|
||||
jsApiList: ['updateAppMessageShareData', 'updateTimelineShareData', 'onMenuShareTimeline', 'onMenuShareAppMessage']
|
||||
});
|
||||
}).catch((e) => {
|
||||
console.log('获取数据失败');
|
||||
});
|
||||
wx.checkJsApi({
|
||||
jsApiList: ['updateAppMessageShareData', 'updateTimelineShareData', 'onMenuShareTimeline', 'onMenuShareAppMessage'], // 需要检测的JS接口列表,所有JS接口列表见附录2,
|
||||
success: function (res) {
|
||||
console.log(res)
|
||||
}
|
||||
});
|
||||
wx.ready(function () {
|
||||
wx.updateAppMessageShareData({
|
||||
title: share.title,
|
||||
desc: share.desc,
|
||||
link: share.link,
|
||||
imgUrl: share.imgUrl,
|
||||
success: function () { }
|
||||
})
|
||||
wx.updateTimelineShareData({
|
||||
title: share.title,
|
||||
desc: share.desc,
|
||||
link: share.link,
|
||||
imgUrl: share.imgUrl,
|
||||
success: function () { }
|
||||
})
|
||||
wx.onMenuShareTimeline({
|
||||
title: share.title,
|
||||
desc: share.desc,
|
||||
link: share.link,
|
||||
imgUrl: share.imgUrl,
|
||||
success: function () { }
|
||||
})
|
||||
wx.onMenuShareAppMessage({
|
||||
title: share.title,
|
||||
desc: share.desc,
|
||||
link: share.link,
|
||||
imgUrl: share.imgUrl,
|
||||
success: function () { }
|
||||
})
|
||||
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
function WXSHARE(title, desc, link, imgUrl) {
|
||||
|
||||
share.title = title;
|
||||
// share.desc = desc;
|
||||
share.desc = '欢迎来到'+localStorage.getItem("hospitalName")+localStorage.getItem("officeName")+'智能化移动宣教中心';
|
||||
share.link = link;
|
||||
if (imgUrl == undefined || imgUrl == "") {
|
||||
imgUrl = "https://health-edu.oss-cn-beijing.aliyuncs.com/system/share.png";
|
||||
}
|
||||
share.imgUrl = imgUrl;
|
||||
share.init();
|
||||
};
|
||||
function WXSHAREHOME(title, desc, link, imgUrl) {
|
||||
|
||||
// share.title = title;
|
||||
// share.desc = desc;
|
||||
share.title = '欢迎来到'+localStorage.getItem("hospitalName")+localStorage.getItem("officeName")+'智能化移动宣教中心';
|
||||
share.desc ='点击进入并收藏,把知识带回家';
|
||||
share.link = link;
|
||||
if (imgUrl == undefined || imgUrl == "") {
|
||||
imgUrl = "https://health-edu.oss-cn-beijing.aliyuncs.com/system/share.png";
|
||||
}
|
||||
share.imgUrl = imgUrl;
|
||||
share.init();
|
||||
};
|
||||
|
||||
|
||||
export {
|
||||
WXSHARE,WXSHAREHOME
|
||||
}
|
||||
219
src/views/department.vue
Normal file
@ -0,0 +1,219 @@
|
||||
<template >
|
||||
<div style="background: var(--back-color-02);min-height:100vh;">
|
||||
<div style="height: 12px;"></div>
|
||||
<div class="notice" v-if="horseLamp3.length>0">
|
||||
<img
|
||||
src="../assets/notice.png"
|
||||
style="width: 65px; height: 26px;margin-left: 28px;margin-top: 36px;"
|
||||
/>
|
||||
<div style="height: 16px;border: 1px solid rgba(0,0,0,0.25);margin-top: 40px;margin-left: 12px;"></div>
|
||||
<!-- <div class="scroll1" v-if="horseLamp3.length==1" @click="openNotice(horseLamp3[0])" >
|
||||
|
||||
{{horseLamp3[0].title}}
|
||||
</div> -->
|
||||
|
||||
<vue3-seamless-scroll :list="horseLamp3" class="scroll" direction=left singleLine=true limitScrollNum=1 step="0.5" >
|
||||
<div class="custom-item" v-for="(item, index) in horseLamp3" :key="index" @click="openNotice(item)">
|
||||
<div style="min-width: 200px;">{{item.title+' '}}</div>
|
||||
|
||||
</div>
|
||||
</vue3-seamless-scroll>
|
||||
</div>
|
||||
<nut-overlay v-model:visible="show" :close-on-click-overlay="false">
|
||||
<div class="wrapper">
|
||||
<div class="content">
|
||||
<div style="font-size: var(--font-size-16);font-family: AlibabaPuHuiTiM;color: rgba(0,0,0,0.85);line-height: 24px;text-align: center;margin-top: 24px;
|
||||
margin-left: 16px;margin-right: 16px;">{{ noticeTitle }}</div>
|
||||
<div style="font-size: var(--font-size-14);font-family: AlibabaPuHuiTiR;color: rgba(0,0,0,0.65);line-height: 24px;margin: 16px; overflow: auto;
|
||||
white-space: pre-line;
|
||||
">{{ noticeDetail}}</div>
|
||||
</div>
|
||||
<img
|
||||
src="../assets/close.png"
|
||||
style="width: 32px; height: 32px;margin-top: 32px;" @click="closeNotice"
|
||||
/>
|
||||
|
||||
</div>
|
||||
|
||||
</nut-overlay>
|
||||
<div class="classgrid">
|
||||
<div v-for="(item, index) in departemntlist" v-if="departemntlist.length>0" class="third" @click="gotoNextPage(item)">
|
||||
<!-- <div @click="gotoNextPage(item)"> -->
|
||||
<nut-image :src=imgurl+item.ceecImg width="68" height="60"
|
||||
/>
|
||||
<div class="ftitle">{{ item.ceecName }} </div>
|
||||
<div class="fcontent" v-if="item.ceecArticleNum>0" style="color: rgba(0,0,0,0.45);">{{'共'+item.ceecArticleNum+'篇'}}</div>
|
||||
<div class="fcontent" v-else style="color: white;">共篇</div>
|
||||
|
||||
<!-- </div> -->
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<TabTools></TabTools>
|
||||
</div>
|
||||
</template>
|
||||
<script setup >
|
||||
import { useRouter } from 'vue-router';
|
||||
import { WXSHARE } from '../utils/wxshare-1.6.0';
|
||||
import {queryDepars,queryNoticeList,imgurl} from '../utils/api.js'
|
||||
const router = useRouter();
|
||||
const show = ref(false);
|
||||
const noticeTitle = ref('');
|
||||
const noticeDetail = ref('');
|
||||
const horseLamp3 = reactive([
|
||||
]);
|
||||
const departemntlist=ref([])
|
||||
function initData()
|
||||
{
|
||||
queryDepars().then((data) => {
|
||||
departemntlist.value.push(...data.data)
|
||||
departemntlist.value=departemntlist.value.filter(item => item.ceecName !== '公告板块');
|
||||
|
||||
});
|
||||
queryNoticeList().then((data) => {
|
||||
horseLamp3.push(...data.data)
|
||||
|
||||
});
|
||||
}
|
||||
onMounted(() => {
|
||||
|
||||
initData()
|
||||
WXSHARE("科室服务", '肝胆相照-肝胆病在线公共服务平台', window.location.href,"");
|
||||
})
|
||||
function openNotice(item)
|
||||
{
|
||||
console.log(item.name)
|
||||
show.value=true
|
||||
noticeTitle.value=item.title
|
||||
noticeDetail.value=item.content
|
||||
}
|
||||
function closeNotice()
|
||||
{
|
||||
show.value=false
|
||||
|
||||
}
|
||||
function gotoNextPage(item)
|
||||
{
|
||||
if(item.ceecName=='出诊信息')
|
||||
{
|
||||
router.push({ path: '/visiting-information'});
|
||||
}
|
||||
else if(item.ceecName=='留言反馈')
|
||||
{
|
||||
router.push({ path: '/leave-message'});
|
||||
}
|
||||
else if(item.ceecName=='调查问卷')
|
||||
{
|
||||
router.push({ path: '/questionnaire'});
|
||||
}
|
||||
else
|
||||
// (item.ceecName=='科室介绍'||item.ceecName=='就诊须知'||item.ceecName=='科室动态'||item.ceecName=='调查问卷')
|
||||
{
|
||||
// let json={type:item.ceecName,ceecId:item.ceecId,from:'department'}
|
||||
// router.push({ path: '/information', state:
|
||||
// {
|
||||
// data:JSON.stringify(json)
|
||||
|
||||
// }
|
||||
// });
|
||||
router.push({ path: '/information', query: {type:item.ceecName,ceecId:item.ceecId,from:'department'} });
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
</script>
|
||||
<style scoped>
|
||||
.notice {
|
||||
display: flex;
|
||||
margin-left: 14px;
|
||||
margin-right: 14px;
|
||||
background: url(../assets/notice_bg.png);
|
||||
background-size: contain;
|
||||
height: 80px;
|
||||
background-repeat: no-repeat;
|
||||
}
|
||||
.scroll{
|
||||
margin-top: 40px;
|
||||
margin-left: 12px;
|
||||
margin-right: 28px;
|
||||
overflow: hidden;
|
||||
}
|
||||
.scroll1{
|
||||
margin-top: 40px;
|
||||
font-size: 16px;
|
||||
/* font-size: var( --font-size-14); */
|
||||
font-family: AlibabaPuHuiTiM;
|
||||
color: rgba(0,0,0,0.85);
|
||||
padding-left: 12px;
|
||||
padding-right: 28px;
|
||||
white-space: nowrap;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
}
|
||||
|
||||
.custom-item{
|
||||
font-size: 16px;
|
||||
/* font-size: var( --font-size-14); */
|
||||
font-family: AlibabaPuHuiTiM;
|
||||
color: rgba(0,0,0,0.85);
|
||||
|
||||
}
|
||||
.wrapper {
|
||||
display: flex;
|
||||
height: 100%;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
}
|
||||
.content {
|
||||
|
||||
width: 80%;
|
||||
min-height: 178px;
|
||||
max-width: 420px;
|
||||
background:#F6FBFF ;
|
||||
border-radius: 16px;
|
||||
/* background: url(../assets/n_bg.png);
|
||||
background-size: contain;
|
||||
|
||||
background-repeat:no-repeat; */
|
||||
|
||||
}
|
||||
.classgrid{
|
||||
display: grid;
|
||||
grid-template-columns: repeat(3, 1fr);
|
||||
grid-gap: 10px;
|
||||
margin: 16px;
|
||||
padding-bottom: 60px;
|
||||
|
||||
|
||||
}
|
||||
.third{
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
|
||||
height: 137px;
|
||||
background: linear-gradient(180deg, rgba(255,255,255,0.38) 0%, rgba(255,255,255,0.5) 100%);
|
||||
border-radius: 8px;
|
||||
width: 100%;
|
||||
background: white;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
}
|
||||
.ftitle{
|
||||
margin-top: 5px;
|
||||
/* font-size: var(--font-size-16); */
|
||||
font-size: 18px;
|
||||
font-family: AlibabaPuHuiTiM;
|
||||
color: #233C4C;
|
||||
line-height: 24px;
|
||||
}
|
||||
.fcontent{
|
||||
margin-top: 2px;
|
||||
font-size: 14px;
|
||||
/* font-size: var(--font-size-12); */
|
||||
font-family: AlibabaPuHuiTiR;
|
||||
|
||||
line-height: 17px;
|
||||
}
|
||||
</style>
|
||||
365
src/views/doctor-info.vue
Normal file
@ -0,0 +1,365 @@
|
||||
<template>
|
||||
<nut-sticky>
|
||||
<div style="background: white;" ref="myDiv" id="myDiv">
|
||||
<headBar :title=title ></headBar>
|
||||
<div class="horizontal-list-item" >
|
||||
<div style="margin-left: 16px; display: block;width: 60%;">
|
||||
<div style="font-size: var(--font-size-20);
|
||||
font-family: AlibabaPuHuiTiM;
|
||||
color: rgba(0,0,0,0.85);
|
||||
line-height: 22px;">
|
||||
{{ name }}
|
||||
</div>
|
||||
<div class="personinfo1">
|
||||
{{ duties+'|'}}
|
||||
<!-- <div>
|
||||
<span class="zhu1" style="background: #2BBAF9FF;" v-if="position=='主任医师'">主</span>
|
||||
<span class="zhu1" style="background: #00CA70FF;" v-if="position=='副主任医师'">副</span>
|
||||
</div> -->
|
||||
{{position }}
|
||||
</div>
|
||||
|
||||
<div class="personinfo">
|
||||
{{'专长:'+goodat}}
|
||||
</div>
|
||||
</div>
|
||||
<nut-image :src=imgurl+photo alt="图片描述" fit="cover"
|
||||
width="119px" height='119px' round radius="60"
|
||||
style="margin-right: 16px;margin-left: 16px;"/>
|
||||
</div>
|
||||
<t-tabs :value="currentValue" @change="onChange" >
|
||||
<t-tab-panel value="first">
|
||||
<template #label>
|
||||
<div>个人介绍</div>
|
||||
</template>
|
||||
</t-tab-panel>
|
||||
<t-tab-panel value="second">
|
||||
<template #label>出诊信息</template>
|
||||
</t-tab-panel>
|
||||
<t-tab-panel value="third" v-if="list.length>0">
|
||||
<template #label>科普宣教</template>
|
||||
</t-tab-panel>
|
||||
</t-tabs>
|
||||
</div>
|
||||
</nut-sticky>
|
||||
<div >
|
||||
<div ref="myDiv1">
|
||||
<div class="personin" style="margin-top: 24px;" id="grjs">
|
||||
个人介绍
|
||||
</div>
|
||||
<div class="personinfo2" >
|
||||
{{ introduction }}
|
||||
</div>
|
||||
<div class="personin" id="czxx">
|
||||
出诊信息
|
||||
</div>
|
||||
</div>
|
||||
<div v-for="(item, index) in outpatientList" >
|
||||
<div class="info" >
|
||||
<div class="infog" v-if=" index % 2 == 0"> </div>
|
||||
<div class="infog1" v-else> </div>
|
||||
<div style="margin-left: 16px;">
|
||||
<div style="display: flex;">
|
||||
<div class="personinfo3">出诊类型</div>
|
||||
<div class="personinfo4">{{ item.type }}</div>
|
||||
</div>
|
||||
<div style="display: flex;margin-top: 12px;">
|
||||
<div class="personinfo3">出诊时间</div>
|
||||
<div class="personinfo4">{{item.week+item.timeSlot+'|'+item.address}}</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div style="height: 16px;"></div>
|
||||
<div class="personin" id="xjkp" style="margin: 0px 16px 0px 16px;" v-if="list.length>0">
|
||||
宣教科普
|
||||
</div>
|
||||
<paperList :list="list" :needTop="false" :needlabel="false" v-if="list.length>0"></paperList>
|
||||
</div>
|
||||
</template>
|
||||
<script setup>
|
||||
import {medicalStaff,imgurl,fromwexin} from '../utils/api.js'
|
||||
import { useRoute } from 'vue-router';
|
||||
import { WXSHARE } from '../utils/wxshare-1.6.0';
|
||||
const title=ref('医生信息')
|
||||
const router = useRoute();
|
||||
const currentValue = ref('first');
|
||||
const myDiv = ref(null);
|
||||
const name = ref('');
|
||||
const goodat = ref('');
|
||||
const duties = ref('');
|
||||
const position = ref('');
|
||||
const photo = ref('');
|
||||
const myDiv1 = ref(null);
|
||||
const scrollHeight = ref(0);
|
||||
const introduction= ref('');
|
||||
const outpatientList= ref([]);
|
||||
|
||||
const list = ref(
|
||||
[
|
||||
// {
|
||||
// title:'您了解术后如何过渡到正确饮食吗?妊娠期肝内胆汁瘀积症正确饮食吗',
|
||||
// type:'音频',
|
||||
// types:['乙型肝炎','妊娠期肝内胆汁瘀积症','gsklgjl','发哈客服号看看','ufoirut[quopp]'],
|
||||
// img:"#A6D9FFFF"
|
||||
// },
|
||||
// {
|
||||
// title:'您了解术后如何过渡到正确饮食吗?',
|
||||
// type:'图文',
|
||||
// types:['乙型肝炎','妊娠期肝内胆汁瘀积症'],
|
||||
// img:"#299BDFFF"
|
||||
// },
|
||||
// {
|
||||
// title:'rwr34r您了解术后如何过渡到正确饮食吗?',
|
||||
// type:'视频',
|
||||
// types:['乙型肝炎','妊娠期肝内胆汁瘀积症'],
|
||||
// img:"#299BDFFF"
|
||||
// }
|
||||
]
|
||||
);
|
||||
const getElementTop=(elem)=> {
|
||||
let elemTop = elem.offsetTop; // 获取当前元素顶部距离父元素顶部的距离
|
||||
let parentElem = elem.offsetParent; // 获取当前元素的父元素
|
||||
|
||||
while (parentElem) {
|
||||
elemTop += parentElem.offsetTop;
|
||||
parentElem = parentElem.offsetParent;
|
||||
}
|
||||
|
||||
return elemTop;
|
||||
}
|
||||
const onChange = (label) => {
|
||||
currentValue.value=label;
|
||||
console.log(currentValue.value)
|
||||
let topH=document.querySelector("#myDiv").offsetHeight;
|
||||
if(label=='first'){
|
||||
let ele=document.querySelector("#grjs");
|
||||
let t=getElementTop(ele);
|
||||
window.scrollTo(0,t-topH);
|
||||
}else if(label=='second'){
|
||||
|
||||
let ele=document.querySelector("#czxx");
|
||||
let t=getElementTop(ele);
|
||||
window.scrollTo(0,t-topH);
|
||||
// if (scrollHeight.value>myDiv1.value.clientHeight) {
|
||||
// window.scrollTo(0, myDiv.value.clientHeight);
|
||||
// }else{
|
||||
// window.scrollTo(0, myDiv1.value.clientHeight);
|
||||
// }
|
||||
// window.scrollTo(0, myDiv.value.clientHeight-10);
|
||||
}else{
|
||||
let ele=document.querySelector("#xjkp");
|
||||
let t=getElementTop(ele);
|
||||
window.scrollTo(0,t-topH);
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
|
||||
onMounted(() => {
|
||||
const handleScroll = () => {
|
||||
scrollHeight.value = document.documentElement.scrollTop || document.body.scrollTop;
|
||||
};
|
||||
|
||||
window.addEventListener('scroll', handleScroll);
|
||||
|
||||
onUnmounted(() => {
|
||||
window.removeEventListener('scroll', handleScroll);
|
||||
});
|
||||
initData( router.query.id)
|
||||
|
||||
});
|
||||
|
||||
|
||||
watch(
|
||||
() => scrollHeight.value,
|
||||
(newValue) => {
|
||||
let topH=document.querySelector("#myDiv").offsetHeight;
|
||||
//let ele1=document.querySelector("#grjs");
|
||||
let ele2=document.querySelector("#czxx");
|
||||
let ele3=document.querySelector("#xjkp");
|
||||
//let t1=getElementTop(ele1)-topH;
|
||||
let t2=getElementTop(ele2)-topH;
|
||||
let t3=getElementTop(ele3)-topH;
|
||||
|
||||
let scrollHeight = document.body.scrollHeight;
|
||||
let scrollTop = document.body.scrollTop || document.documentElement.scrollTop
|
||||
let clientHeight = window.innerHeight ;
|
||||
// console.log(newValue.toFixed(0));
|
||||
// console.log(topH)
|
||||
// // console.log("t2:"+t2);
|
||||
// // console.log("t3:"+t3)
|
||||
// console.log('scrollHeight:'+scrollHeight)
|
||||
// console.log('scrollTop:'+scrollTop);
|
||||
// console.log("clientHeight:"+clientHeight)
|
||||
let isBottom=false;
|
||||
console.log('add:'+(scrollTop+clientHeight));
|
||||
console.log('scrollHeight:'+scrollHeight);
|
||||
console.log(Math.abs(scrollTop+clientHeight-scrollHeight)<5)
|
||||
if(Math.abs(scrollTop+clientHeight-scrollHeight)<5){
|
||||
isBottom=true
|
||||
}
|
||||
if(isBottom){
|
||||
currentValue.value='third'
|
||||
} else if(newValue.toFixed(0)<t2){
|
||||
currentValue.value='first';
|
||||
}else if(newValue.toFixed(0)>=t2 &&newValue.toFixed(0)<t3 && !isBottom){
|
||||
currentValue.value='second'
|
||||
}else if(newValue.toFixed(0)>=t3){
|
||||
currentValue.value='third'
|
||||
}
|
||||
// if(newValue <myDiv.value.clientHeight&&newValue <myDiv1.value.clientHeight)
|
||||
// {
|
||||
// currentValue.value='first'
|
||||
// }
|
||||
// else if (newValue>=myDiv1.value.clientHeight&&newValue<=myDiv.value.clientHeight+myDiv1.value.clientHeight) {
|
||||
|
||||
// currentValue.value='second'
|
||||
// }
|
||||
// else
|
||||
// {
|
||||
|
||||
// currentValue.value='third'
|
||||
// }
|
||||
}
|
||||
);
|
||||
function initData(id)
|
||||
{
|
||||
|
||||
medicalStaff(id).then((data) => {
|
||||
console.log("medicalStaff", data);
|
||||
name.value= data.data.name
|
||||
goodat.value=data.data.goodat
|
||||
duties.value=data.data.duties
|
||||
position.value=data.data.position
|
||||
photo.value=data.data.photo
|
||||
introduction.value=data.data.introduction
|
||||
outpatientList.value.push(...data.data.outpatientList)
|
||||
list.value.push(...data.data.articleList)
|
||||
|
||||
WXSHARE(name.value, '肝胆相照-肝胆病在线公共服务平台', window.location.href+fromwexin,"");
|
||||
});
|
||||
}
|
||||
</script>
|
||||
<style scoped>
|
||||
:deep() .t-pull-down-refresh__tips{
|
||||
display: none!important;
|
||||
}
|
||||
.horizontal-list-item {
|
||||
|
||||
display: flex;
|
||||
align-items: center;
|
||||
margin-top: 24px;
|
||||
|
||||
}
|
||||
.personinfo1{
|
||||
font-size:16px;
|
||||
/* font-size: var(--font-size-14); */
|
||||
font-family: AlibabaPuHuiTiR;
|
||||
color: rgba(0,0,0,0.65);
|
||||
display: flex;
|
||||
line-height: 16px;
|
||||
margin-top: 12px;
|
||||
margin-bottom: 13px;
|
||||
}
|
||||
.personinfo{
|
||||
font-size:14px;
|
||||
/* font-size: var(--font-size-12); */
|
||||
font-family: AlibabaPuHuiTiR;
|
||||
color: rgba(0,0,0,0.65);
|
||||
line-height: 22px;
|
||||
}
|
||||
.t-tabs{
|
||||
margin-top: 18px;
|
||||
--td-tab-item-height:38px;
|
||||
/* height: 38px; */
|
||||
/* font-size: var(--font-size-14); */
|
||||
font-size:16px;
|
||||
font-family: AlibabaPuHuiTiR;
|
||||
--td-tab-track-color: #3BB5FEFF;
|
||||
--td-tab-nav-bg-color:transparent;
|
||||
background: #FFFFFF;
|
||||
border-radius: 20px 20px 0px 0px;
|
||||
--td-tab-item-active-color: #3BB5FEFF;
|
||||
--td-tab-item-color:rgba(0,0,0,0.65);
|
||||
--td-tab-border-color:transparent;
|
||||
}
|
||||
.personin{
|
||||
margin-left: 16px;
|
||||
font-size:18px;
|
||||
/* font-size: var(--font-size-16); */
|
||||
font-family: AlibabaPuHuiTiM;
|
||||
color: rgba(0,0,0,0.85);
|
||||
line-height: 24px;
|
||||
}
|
||||
.personinfo2{
|
||||
font-size:16px;
|
||||
/* font-size: var(--font-size-14); */
|
||||
font-family: AlibabaPuHuiTiR;
|
||||
color: rgba(0,0,0,0.65);
|
||||
line-height: 24px;
|
||||
margin-left: 16px;
|
||||
margin-right: 16px;
|
||||
margin-top: 12px;
|
||||
margin-bottom: 32px;
|
||||
white-space: pre-wrap;
|
||||
}
|
||||
.info{
|
||||
position: relative;
|
||||
padding:10px 0;
|
||||
/* height: 88px; */
|
||||
background: #FFFFFF;
|
||||
border-radius: 8px;
|
||||
border: 2px solid rgba(0,0,0,0.08);
|
||||
margin-left: 16px;
|
||||
margin-right: 16px;
|
||||
margin-top: 12px;
|
||||
overflow: hidden;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
}
|
||||
.infog{
|
||||
position: absolute;
|
||||
width: 4px;
|
||||
height: 100%;
|
||||
background: #26D674;
|
||||
}
|
||||
.infog1{
|
||||
position: absolute;
|
||||
width: 4px;
|
||||
height: 100%;
|
||||
background: #FB9798FF;
|
||||
}
|
||||
.personinfo3{
|
||||
white-space: nowrap;
|
||||
font-size:16px;
|
||||
/* font-size: var(--font-size-14); */
|
||||
font-family: AlibabaPuHuiTiR;
|
||||
color: rgba(0,0,0,0.45);
|
||||
line-height: 22px;
|
||||
}
|
||||
.personinfo4{
|
||||
margin-left: 16px;
|
||||
font-size:16px;
|
||||
/* font-size: var(--font-size-14); */
|
||||
font-family: AlibabaPuHuiTiR;
|
||||
color: rgba(0,0,0,0.85);
|
||||
line-height: 22px;
|
||||
}
|
||||
.zhu1{
|
||||
margin-left: 4px;
|
||||
margin-right: 4px;
|
||||
font-size:14px;
|
||||
/* font-size: var(--font-size-12); */
|
||||
font-family: AlibabaPuHuiTiR;
|
||||
color: #FFFFFF;
|
||||
line-height: 16px;
|
||||
padding:0px 2px;
|
||||
border-radius: 2px;
|
||||
word-wrap: break-word;
|
||||
}
|
||||
:deep() .t-list{
|
||||
padding-bottom: 20px;
|
||||
}
|
||||
</style>
|
||||
543
src/views/education-centre.vue
Normal file
@ -0,0 +1,543 @@
|
||||
<template >
|
||||
|
||||
<div class="edu-head">
|
||||
|
||||
<div class="department">
|
||||
<nut-image class="dicon" width="40" height="40" :src=hospitalLogo alt="图片描述" round />
|
||||
<div class="dtitle">
|
||||
<nut-ellipsis
|
||||
:content=hospital
|
||||
rows="1"
|
||||
direction="end"
|
||||
v-if="hospital.length>10"
|
||||
></nut-ellipsis>
|
||||
<nut-ellipsis
|
||||
:content=dtitle
|
||||
v-if="hospital.length>10"
|
||||
rows="1"
|
||||
direction="end"
|
||||
></nut-ellipsis>
|
||||
<div v-if="hospital.length<11">{{ hospital}}</div>
|
||||
<div v-if="hospital.length<11">{{dtitle }}</div>
|
||||
</div>
|
||||
|
||||
<div class="changedepart" @click="changedepart" v-if="hospital.length<11">
|
||||
<img src='../assets/change_depart.png' style=" width: 16px;height: 16px;">
|
||||
切换科室</div>
|
||||
</div>
|
||||
<search :message="searchMessage" />
|
||||
</div>
|
||||
<div style="background: var(--back-color-01);">
|
||||
<nut-overlay v-model:visible="show" :close-on-click-overlay="false">
|
||||
<div class="wrapper">
|
||||
<div class="content" v-if="showPop">
|
||||
<div class="raido_title">切换科室</div>
|
||||
<nut-radio-group v-model="radioVal" @change="handleChange" class="contentchild">
|
||||
<div v-for="(item, index) in departemntlist">
|
||||
<nut-radio :label=index>
|
||||
<template #icon>
|
||||
<!-- <IconFont size="16" name= 'src/assets/radio_no.png' :style="{ 'margin-top': '3px' }" /> -->
|
||||
<IconFont size="16" :name=radio_no :style="{ 'margin-top': '3px' }" />
|
||||
</template>
|
||||
<template #checkedIcon>
|
||||
<!-- <IconFont size="16" name= 'src/assets/radio_sel.png' :style="{ 'margin-top': '3px' }" /> -->
|
||||
<IconFont size="16" :name=radio_sel :style="{ 'margin-top': '3px' }" />
|
||||
</template>
|
||||
{{ item.officeName }}
|
||||
</nut-radio>
|
||||
</div>
|
||||
</nut-radio-group>
|
||||
<div :style="{
|
||||
display: 'flex', background: '#FFFFFF',
|
||||
'border-radius': '0px 0px 12px 12px'
|
||||
}">
|
||||
<div class="bt_no" @click.stop="handleclick(false)">取消</div>
|
||||
<div class="bt_yes" @click.stop="handleclick(true)">确认</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="content1" v-if="showPop1">
|
||||
<div class="raido_title">温馨提示</div>
|
||||
<div class="raido_title1">{{ '您确定要跳转到:' + hospitaltmp + '-' + dtitletmp }}</div>
|
||||
<div class="raido_title2">{{ '您当前浏览的科室为:' + hospital + '-' + dtitle }}</div>
|
||||
<div :style="{ display: 'flex' }">
|
||||
<div class="bt_no" @click.stop="handleclick(false)">取消</div>
|
||||
<div class="bt_yes" @click.stop="handleclick(true, true)">确认</div>
|
||||
</div>
|
||||
|
||||
<div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</nut-overlay>
|
||||
<div class="classgrid">
|
||||
<div v-if="appOfficeCeecList.length > 0" :style="{
|
||||
|
||||
'background-size': '100% 100%', 'height': '188px', 'background-repeat': 'no-repeat', 'border-radius': '8px'
|
||||
}" @click="gotoNextPage(appOfficeCeecList[0])" v-lazy:background-image="imgurl + appOfficeCeecList[0].ceecImg">
|
||||
<div class="ftitle">{{ appOfficeCeecList[0].ceecName }}</div>
|
||||
<div class="fcontent" v-if="appOfficeCeecList[0].ceecArticleNum > 0">{{ '共' + appOfficeCeecList[0].ceecArticleNum
|
||||
+ '篇'
|
||||
}}</div>
|
||||
</div>
|
||||
<div class="classgrid1">
|
||||
<div :style="{
|
||||
'height': '88px',
|
||||
'background-size': '100% 100%', 'background-repeat': 'no-repeat', 'border-radius': '8px'
|
||||
}" @click="gotoNextPage(appOfficeCeecList[1])" v-if="appOfficeCeecList.length > 1" v-lazy:background-image="imgurl + appOfficeCeecList[1].ceecImg">
|
||||
<div class="ftitle">{{ appOfficeCeecList[1].ceecName }}</div>
|
||||
<div class="fcontent" v-if="appOfficeCeecList[1].ceecName=='科普直播'"><img src='../assets/nowb.gif' style=" width: 20px;height: 20px;"></div>
|
||||
<div class="fcontent" v-else-if="appOfficeCeecList[1].ceecArticleNum > 0">{{
|
||||
'共' + appOfficeCeecList[1].ceecArticleNum + '篇' }}</div>
|
||||
</div>
|
||||
<div :style="{
|
||||
'height': '88px',
|
||||
'background-size': '100% 100%', 'background-repeat': 'no-repeat', 'border-radius': '8px'
|
||||
}" @click="gotoNextPage(appOfficeCeecList[2])" v-if="appOfficeCeecList.length > 2" v-lazy:background-image="imgurl + appOfficeCeecList[2].ceecImg">
|
||||
<div class="ftitle">{{ appOfficeCeecList[2].ceecName }}</div>
|
||||
<div class="fcontent" v-if="appOfficeCeecList[2].ceecName=='科普直播'"><img src='../assets/nowb.gif' style=" width: 20px;height: 20px;"></div>
|
||||
<div class="fcontent" v-else-if="appOfficeCeecList[2].ceecArticleNum > 0">{{
|
||||
'共' + appOfficeCeecList[2].ceecArticleNum + '篇' }}</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div v-for="(item, index) in appOfficeCeecList.slice(3)" :style="{
|
||||
'height': '88px',
|
||||
'background-size': '100% 100%', 'background-repeat': 'no-repeat', 'border-radius': '8px'
|
||||
}" @click="gotoNextPage(item)" v-lazy:background-image="imgurl + item.ceecImg">
|
||||
<div class="ftitle">{{ item.ceecName }} </div>
|
||||
<div class="fcontent" v-if="item.ceecName=='科普直播'"><img src='../assets/nowb.gif' style=" width: 20px;height: 20px;"></div>
|
||||
<div class="fcontent" v-else-if="item.ceecArticleNum > 0">{{ '共' + item.ceecArticleNum + '篇' }}</div>
|
||||
|
||||
</div>
|
||||
<!-- <div class="third" @click="gotoLiving">
|
||||
<div class="ftitle">科普直播 </div>
|
||||
<div class="fcontent"><img src='../assets/nowb.gif' style=" width: 20px;height: 20px;"></div>
|
||||
|
||||
|
||||
</div> -->
|
||||
</div>
|
||||
|
||||
<TabTools></TabTools>
|
||||
</div>
|
||||
</template>
|
||||
<script setup >
|
||||
import { showToast } from '@nutui/nutui';
|
||||
// import now from '../assets/nowb.gif'
|
||||
import radio_no from '../assets/radio_no.png'
|
||||
import radio_sel from '../assets/radio_sel.png'
|
||||
import TabTools from '@/components/tabTools.vue';
|
||||
// import change_depart from '../assets/change_depart.png'
|
||||
import { IconFont } from '@nutui/icons-vue';
|
||||
import { useRouter, useRoute } from 'vue-router';
|
||||
import { WXSHAREHOME } from '../utils/wxshare-1.6.0';
|
||||
import search from '../components/search.vue'
|
||||
import { getIndex, imgurl,roootUrl } from '../utils/api.js'
|
||||
// const Logos = ref('https://health-edu.oss-cn-beijing.aliyuncs.com/system/getheadimg.png');
|
||||
const router = useRouter();
|
||||
const routerr = useRoute();
|
||||
const searchMessage = ref('请输入文章标题/疾病/关键词…');
|
||||
const hospital = ref('');
|
||||
const hospitalLogo = ref('https://health-edu.oss-cn-beijing.aliyuncs.com/system/getheadimg.png');
|
||||
const show = ref(false);
|
||||
const dtitle = ref('');
|
||||
const dtitletmp = ref('');
|
||||
const hospitaltmp = ref('');
|
||||
const urltmp = ref('');
|
||||
const radioVal = ref(dtitle.value);
|
||||
const showPop1 = ref(false)
|
||||
const showPop = ref(true)
|
||||
let officeid = ''
|
||||
let appid = ''
|
||||
const urlSearchParams = new URLSearchParams(window.location.search)
|
||||
const departemntlist = reactive([
|
||||
])
|
||||
const appOfficeCeecList = reactive([])
|
||||
const handleChange = (value) => {
|
||||
console.log('handleChange', value);
|
||||
// window.location.href='http://dev.edu.igandan.com/h5/index.html?officeid='+departemntlist[value].offidId+'&appid='+departemntlist[value].appid
|
||||
if (isNaN(value)) {
|
||||
|
||||
} else {
|
||||
dtitletmp.value = departemntlist[value].officeName;
|
||||
hospitaltmp.value = departemntlist[value].hospitalName;
|
||||
officeid=departemntlist[value].officeId
|
||||
urltmp.value = roootUrl+ departemntlist[value].officeId + '&appid=' + departemntlist[value].appid
|
||||
}
|
||||
|
||||
|
||||
};
|
||||
onMounted(() => {
|
||||
|
||||
// appid = urlSearchParams.get('appid')
|
||||
// officeid = urlSearchParams.get('officeid')
|
||||
// alert("appid:"+appid)
|
||||
// alert("officeid:"+officeid)
|
||||
// console.log("appid", appid);
|
||||
// console.log("officeid", officeid);
|
||||
// localStorage.setItem("officeid", officeid);
|
||||
// const token = localStorage.getItem(officeid + '-token');
|
||||
// alert("token:"+token)
|
||||
// console.log(officeid + '-token', token);
|
||||
// if (token) {
|
||||
|
||||
|
||||
const urlSearchParams = new URLSearchParams(window.location.search)
|
||||
let officeid = urlSearchParams.get('officeid')
|
||||
|
||||
if(typeof officeid === "undefined"||officeid ==null|| officeid == "undefined")
|
||||
{
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
localStorage.setItem("officeid", officeid);
|
||||
}
|
||||
appid = urlSearchParams.get('appid')
|
||||
|
||||
if(typeof appid === "undefined"||appid ==null|| appid == "undefined")
|
||||
{
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
localStorage.setItem("appid", appid);
|
||||
}
|
||||
|
||||
initData()
|
||||
|
||||
|
||||
// } else {
|
||||
// goGreet()
|
||||
// }
|
||||
})
|
||||
|
||||
// function goGreet() {
|
||||
// const code = urlSearchParams.get('code')
|
||||
// alert(code)
|
||||
// if (code) {
|
||||
// oauth2greet(appid, officeid, code).then((res) => {
|
||||
// console.log("oauth2greetapp", res);
|
||||
// localStorage.setItem(officeid + '-token', res.data);
|
||||
// localStorage.setItem('default' + '-token', res.data);
|
||||
// if(res.code === 30001){
|
||||
// let encodedUrl = encodeURIComponent(window.location.href)
|
||||
// window.location.href = "https://open.weixin.qq.com/connect/oauth2/authorize?appid=" + appid + "&redirect_uri=" + encodedUrl + "&response_type=code&scope=snsapi_userinfo&state=1&component_appid=wx61944e1d991e380e&connect_redirect=1#wechat_redirect";
|
||||
// return
|
||||
// }
|
||||
// }).then(()=>{
|
||||
// initData()
|
||||
// })
|
||||
// } else {
|
||||
// let encodedUrl = encodeURIComponent(window.location.href)
|
||||
// window.location.href = "https://open.weixin.qq.com/connect/oauth2/authorize?appid=" + appid + "&redirect_uri=" + encodedUrl + "&response_type=code&scope=snsapi_userinfo&state=1&component_appid=wx61944e1d991e380e&connect_redirect=1#wechat_redirect";
|
||||
// }
|
||||
// }
|
||||
|
||||
function initData() {
|
||||
getIndex().then((data) => {
|
||||
|
||||
|
||||
// if (data.code == 30007 || data.code == 40007) {
|
||||
// goGreet()
|
||||
// } else {
|
||||
console.log("getIndex", data);
|
||||
// Logos.value=data.data.hospitalLogo
|
||||
hospital.value = data.data.appOffice.hospitalName
|
||||
dtitle.value = data.data.appOffice.officeName
|
||||
dtitletmp.value = data.data.appOffice.officeName
|
||||
hospitalLogo.value = imgurl + data.data.appOffice.hospitalLogo
|
||||
appOfficeCeecList.push(...data.data.appOfficeCeecList)
|
||||
departemntlist.push(...data.data.appOfficeRecord)
|
||||
localStorage.setItem("hospitalName", hospital.value);
|
||||
localStorage.setItem("officeName", dtitle.value);
|
||||
// }
|
||||
WXSHAREHOME("宣教中心", '肝胆相照-肝胆病在线公共服务平台', window.location.href,"");
|
||||
});
|
||||
|
||||
}
|
||||
function handleclick(choose, close) {
|
||||
if (close) {
|
||||
|
||||
window.location.href = urltmp.value
|
||||
// showPop.value=true;
|
||||
// showPop1.value=false;
|
||||
// show.value=false;
|
||||
// dtitle.value=dtitletmp.value;
|
||||
}
|
||||
else if (choose) {
|
||||
if (dtitle.value == dtitletmp.value) {
|
||||
show.value = false;
|
||||
}
|
||||
else {
|
||||
showPop.value = false;
|
||||
showPop1.value = true;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
else {
|
||||
showPop.value = true;
|
||||
showPop1.value = false;
|
||||
|
||||
radioVal.value = dtitle.value
|
||||
dtitletmp.value = dtitle.value
|
||||
show.value = false;
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
function gotoLiving() {
|
||||
router.push({ path: '/live' });
|
||||
}
|
||||
|
||||
function gotoNextPage(item) {
|
||||
if(item.ceecName=='科普直播')
|
||||
{
|
||||
router.push({ path: '/live' });
|
||||
}
|
||||
else if (item.ceecType == 2) {
|
||||
window.location.href = item.ceecLink;
|
||||
}
|
||||
else {
|
||||
// let json = { type: item.ceecName, ceecId: item.ceecId, from: 'edu-center' }
|
||||
// router.push({
|
||||
// path: '/information', state:
|
||||
// {
|
||||
// data: JSON.stringify(json)
|
||||
|
||||
// }
|
||||
// });
|
||||
router.push({ name: 'information', query:{type:item.ceecName,ceecId:item.ceecId,from:'edu-center'} });
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
function changedepart() {
|
||||
if (departemntlist.length > 0) {
|
||||
show.value = true
|
||||
}
|
||||
else {
|
||||
showToast.text('暂无可切换的科室');
|
||||
}
|
||||
}
|
||||
</script>
|
||||
<style scoped>
|
||||
.edu-head {
|
||||
background-image: url(../assets/edubg1.png);
|
||||
background-size: cover;
|
||||
padding-bottom: 48px;
|
||||
}
|
||||
|
||||
.department {
|
||||
width: 100%;
|
||||
padding-top: 16px;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
z-index: 1;
|
||||
}
|
||||
|
||||
.dicon {
|
||||
margin-left: 16px;
|
||||
|
||||
}
|
||||
|
||||
/* 在线链接服务仅供平台体验和调试使用,平台不承诺服务的稳定性,企业客户需下载字体包自行发布使用并做好备份。 */
|
||||
|
||||
.dtitle {
|
||||
margin-left: 8px;
|
||||
margin-right: 8px;
|
||||
width: 100%;
|
||||
flex: 1;
|
||||
/* font-size: var(--font-size-14); */
|
||||
font-size:18px;
|
||||
font-family: AlibabaPuHuiTiM;
|
||||
;
|
||||
color: var(--text-color-normal);
|
||||
line-height: 24px;
|
||||
|
||||
}
|
||||
|
||||
.changedepart {
|
||||
display: flex;
|
||||
background: rgba(255, 255, 255, 0.65);
|
||||
border-radius: 14px;
|
||||
margin-left: 16px;
|
||||
margin-right: 8px;
|
||||
padding: 3px 10px 3px 8px;
|
||||
/* font-size: var(--font-size-12); */
|
||||
font-size:14px;
|
||||
font-family: AlibabaPuHuiTiR;
|
||||
color: var(--text-color-normal);
|
||||
line-height: 17px;
|
||||
}
|
||||
|
||||
.wrapper {
|
||||
display: flex;
|
||||
height: 100%;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
}
|
||||
|
||||
.content {
|
||||
|
||||
width: 80%;
|
||||
min-height: 256px;
|
||||
/* height: 256px; */
|
||||
background: url(../assets/popbg.png);
|
||||
background-size: contain;
|
||||
|
||||
background-repeat: no-repeat;
|
||||
|
||||
}
|
||||
|
||||
.contentchild {
|
||||
/* height: 300px; */
|
||||
min-height: 100px;
|
||||
max-height: 300px;
|
||||
overflow: scroll
|
||||
}
|
||||
|
||||
.content1 {
|
||||
|
||||
width: 80%;
|
||||
min-height: 256px;
|
||||
/* height: 256px; */
|
||||
background: linear-gradient(184deg, #F1FAFF 0%, #FFFFFF 100%);
|
||||
box-shadow: 0px 9px 28px 8px rgba(0, 0, 0, 0.05);
|
||||
border-radius: 12px;
|
||||
|
||||
}
|
||||
|
||||
.raido_title {
|
||||
margin: 16px;
|
||||
font-size: var(--font-size-18);
|
||||
font-family: AlibabaPuHuiTiM;
|
||||
color: rgba(0, 0, 0, 0.85);
|
||||
line-height: 24px;
|
||||
}
|
||||
|
||||
.raido_title1 {
|
||||
margin: 16px;
|
||||
font-size: var(--font-size-16);
|
||||
font-family: AlibabaPuHuiTiM;
|
||||
color: rgba(0, 0, 0, 0.85);
|
||||
line-height: 24px;
|
||||
text-shadow: 0px 9px 28px rgba(0, 0, 0, 0.05);
|
||||
}
|
||||
|
||||
.raido_title2 {
|
||||
margin: 16px;
|
||||
background: rgba(0, 0, 0, 0.04);
|
||||
box-shadow: 0px 9px 28px 8px rgba(0, 0, 0, 0.05);
|
||||
border-radius: 4px;
|
||||
padding: 8px;
|
||||
font-size: var(--font-size-14);
|
||||
font-family: AlibabaPuHuiTiR;
|
||||
color: rgba(0, 0, 0, 0.65);
|
||||
line-height: 22px;
|
||||
text-shadow: 0px 9px 28px rgba(0, 0, 0, 0.05);
|
||||
}
|
||||
|
||||
.nut-radio-group {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(2, 1fr);
|
||||
background: #FFFFFF;
|
||||
|
||||
}
|
||||
|
||||
.nut-radio {
|
||||
margin: 16px;
|
||||
--nut-radio-label-margin-left: 8px;
|
||||
--nut-radio-label-font-size: var(--font-size-16);
|
||||
align-items: self-start;
|
||||
font-family: AlibabaPuHuiTiR;
|
||||
color: rgba(0, 0, 0, 0.85);
|
||||
/* line-height: 24px; */
|
||||
}
|
||||
|
||||
.bt_no {
|
||||
flex: 1;
|
||||
height: 48px;
|
||||
background: rgba(0, 0, 0, 0.08);
|
||||
border-radius: 8px;
|
||||
margin-left: 16px;
|
||||
margin-top: 16px;
|
||||
font-size: var(--font-size-18);
|
||||
font-family: AlibabaPuHuiTiM;
|
||||
color: rgba(0, 0, 0, 0.45);
|
||||
line-height: 48px;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.bt_yes {
|
||||
flex: 1;
|
||||
height: 48px;
|
||||
background: #3BB5FE;
|
||||
border-radius: 8px;
|
||||
margin: 16px;
|
||||
font-size: var(--font-size-18);
|
||||
font-family: AlibabaPuHuiTiM;
|
||||
color: white;
|
||||
line-height: 48px;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.classgrid {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(2, 1fr);
|
||||
grid-gap: 12px;
|
||||
/* margin: 16px; */
|
||||
margin-top: -24px;
|
||||
margin-left: 16px;
|
||||
margin-right: 16px;
|
||||
margin-bottom: 16px;
|
||||
padding-bottom: 80px;
|
||||
}
|
||||
|
||||
.classgrid1 {
|
||||
display: grid;
|
||||
grid-template-rows: repeat(2, 1fr);
|
||||
grid-gap: 12px;
|
||||
}
|
||||
|
||||
.ftitle {
|
||||
margin-top: 21px;
|
||||
margin-left: 16px;
|
||||
font-size: var(--font-size-18);
|
||||
font-family: AlibabaPuHuiTiM;
|
||||
color: #314E4D;
|
||||
line-height: 24px;
|
||||
}
|
||||
|
||||
.fcontent {
|
||||
margin-top: 4px;
|
||||
margin-left: 16px;
|
||||
/* font-size: var(--font-size-12); */
|
||||
font-size: 14px;
|
||||
font-family: AlibabaPuHuiTiR;
|
||||
color: rgba(0, 0, 0, 0.45);
|
||||
line-height: 17px;
|
||||
}
|
||||
|
||||
.second {
|
||||
height: 88px;
|
||||
background: url(../assets/second.png);
|
||||
background-size: contain;
|
||||
background-repeat: no-repeat;
|
||||
}
|
||||
|
||||
.third {
|
||||
height: 88px;
|
||||
background: url(../assets/liviing.png);
|
||||
background-size: 100% 100%;
|
||||
background-repeat: no-repeat;
|
||||
border-radius: 8px;
|
||||
}
|
||||
</style>
|
||||
137
src/views/feedback-history.vue
Normal file
@ -0,0 +1,137 @@
|
||||
<template>
|
||||
<div class="listcontain" style="background: var(--back-color-02);height:100vh;">
|
||||
<headBar :title=title :backg=titbackge></headBar>
|
||||
<div class="listcon">
|
||||
<t-pull-down-refresh v-model="refreshing" @refresh="onRefresh" :loading-bar-height="36"
|
||||
:loading-texts="['下拉刷新', '松开刷新', '正在刷新', '刷新完成']" :loading-props="{ theme: 'dots' }">
|
||||
<t-list @scroll="onScroll" :async-loading="loading" v-if="list.length>0">
|
||||
<div v-for="(item, $index) in list">
|
||||
<div class="feedbg">
|
||||
<div class="contenttext">{{ item.content }}</div>
|
||||
<div class="datetext">{{ item.createTime.slice(0, 10) }}</div>
|
||||
<nut-divider :style="{ color: '#00000014' }"></nut-divider>
|
||||
<div style="display: flex;">
|
||||
<img :src="rotbot" width="20" height="20">
|
||||
<div class="replytext">{{ item.replyContent }} </div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</t-list>
|
||||
<nut-empty v-else>
|
||||
<template #image>
|
||||
<nut-image :src=sempty fit="cover"/>
|
||||
|
||||
</template>
|
||||
<template #description>
|
||||
<div style="font-size: var(--front-size-16);font-family: AlibabaPuHuiTiR;color: rgba(0,0,0,0.65);line-height: 22px;margin-top: 16px;">暂无反馈记录</div>
|
||||
</template>
|
||||
</nut-empty>
|
||||
</t-pull-down-refresh>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
<script setup>
|
||||
import sempty from '../assets/sempty.png'
|
||||
import rotbot from '../assets/rotbot.png';
|
||||
import {WXSHARE} from '../utils/wxshare-1.6.0';
|
||||
import {advisequeryPage,frommywexin} from '../utils/api.js'
|
||||
const titbackge=ref('#F6F7FBFF')
|
||||
const title=ref('反馈记录')
|
||||
const page = ref(1);
|
||||
const loading = ref('');
|
||||
const refreshing=ref(false);
|
||||
const totalPage = ref(1)
|
||||
const list= reactive(
|
||||
[]
|
||||
);
|
||||
onMounted(()=>{
|
||||
onLoad (page.value)
|
||||
WXSHARE('反馈记录', '肝胆相照-肝胆病在线公共服务平台', window.location.href+frommywexin,"");
|
||||
})
|
||||
const onLoad = (page) => {
|
||||
|
||||
if (page > totalPage.value) {
|
||||
return
|
||||
}
|
||||
loading.value = 'loading';
|
||||
advisequeryPage(page).then((data) => {
|
||||
console.log("advisequeryPage", data);
|
||||
refreshing.value=false;
|
||||
loading.value = '';
|
||||
if (page == 1) {
|
||||
list.length = 0;
|
||||
list.push(...data.data.list)
|
||||
|
||||
}
|
||||
else {
|
||||
list.push(...data.data.list)
|
||||
}
|
||||
|
||||
totalPage.value = data.data.pages ;
|
||||
|
||||
})
|
||||
|
||||
|
||||
|
||||
};
|
||||
const onRefresh = () => {
|
||||
console.log('onRefresh');
|
||||
page.value = 1;
|
||||
refreshing.value = true;
|
||||
onLoad(page.value);
|
||||
};
|
||||
const onScroll = (scrollBottom) => {
|
||||
|
||||
if (scrollBottom < 100) {
|
||||
console.log("scrollBottom");
|
||||
page.value=page.value+1;
|
||||
onLoad(page.value);
|
||||
}}
|
||||
</script>
|
||||
<style scoped>
|
||||
.listcontain{
|
||||
display: flex;
|
||||
height: 100vh;
|
||||
flex-direction: column;
|
||||
}
|
||||
.listcon{
|
||||
flex: 1;
|
||||
overflow-y: scroll;
|
||||
-webkit-overflow-scrolling: touch;
|
||||
}
|
||||
.t-pull-down-refresh {
|
||||
overflow: hidden;
|
||||
height: auto;
|
||||
}
|
||||
.feedbg{
|
||||
margin: 16px;
|
||||
padding: 16px;
|
||||
background: #FFFFFF;
|
||||
box-shadow: 0px 4px 12px 0px rgba(171,209,239,0.1);
|
||||
border-radius: 8px;
|
||||
}
|
||||
.contenttext{
|
||||
/* font-size: var(--font-size-14); */
|
||||
font-size: 16px;
|
||||
font-family: AlibabaPuHuiTiR;
|
||||
color: rgba(0,0,0,0.85);
|
||||
line-height: 22px;
|
||||
}
|
||||
.datetext{
|
||||
font-size: 14px;
|
||||
/* font-size: var(--font-size-12); */
|
||||
font-family: AlibabaPuHuiTiR;
|
||||
color: rgba(0,0,0,0.24);
|
||||
line-height: 16px;
|
||||
margin-top: 11PX;
|
||||
}
|
||||
.replytext{
|
||||
font-size: 16px;
|
||||
/* font-size: var( --font-size-14); */
|
||||
font-family: AlibabaPuHuiTiR;
|
||||
color:rgba(0,0,0,0.85);
|
||||
line-height: 22px;
|
||||
margin-left: 6px;
|
||||
}
|
||||
</style>
|
||||
89
src/views/information.vue
Normal file
@ -0,0 +1,89 @@
|
||||
<template>
|
||||
<div class="contentbox">
|
||||
<div v-if="showsearch" class="topcon">
|
||||
<div class="edu-head" v-if="from =='edu-center'">
|
||||
<headBar :title=title backg="tranparent"></headBar>
|
||||
<search :message="searchMessage" :ceecId=ceecId />
|
||||
</div>
|
||||
<div v-else>
|
||||
<headBar :title=title :backg=titbackge ></headBar>
|
||||
<searchblue :message=searchMessage :ceecId=ceecId ></searchblue>
|
||||
</div>
|
||||
<div style="margin-top: -40px;" v-if="from =='edu-center'"></div>
|
||||
</div>
|
||||
<div v-else class="topcon">
|
||||
<headBar :title=title backg="tranparent"></headBar>
|
||||
</div>
|
||||
<div class="listcon" >
|
||||
<paperList :url=url :parameter=[ceecId,name,name] @child-event="handleChildEvent"></paperList>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
<script setup>
|
||||
import { useRoute } from 'vue-router';
|
||||
import {getCeecArticleList,fromwexin,roootUrl} from '../utils/api.js'
|
||||
import {WXSHAREHOME} from '../utils/wxshare-1.6.0';
|
||||
const title=ref('')
|
||||
const titbackge=ref('#F1FAFFFF')
|
||||
const searchMessage = ref('请输入文章标题/疾病/关键词…');
|
||||
const router = useRoute();
|
||||
const from=ref('')
|
||||
const ceecId=ref(0)
|
||||
const name=ref('')
|
||||
const url=ref('')
|
||||
const showsearch=ref(true)
|
||||
onMounted(() => {
|
||||
// console.log("history.state.data", history.state.data);
|
||||
// title.value =JSON.parse(history.state.data).type;
|
||||
// from.value=JSON.parse(history.state.data).from;
|
||||
// ceecId.value=JSON.parse(history.state.data).ceecId;
|
||||
title.value =router.query.type;
|
||||
from.value=router.query.from;
|
||||
ceecId.value=router.query.ceecId;
|
||||
if(from.value =='edu-center')
|
||||
{
|
||||
url.value='/ceecArticleList';
|
||||
|
||||
}else if(from.value =='department')
|
||||
{
|
||||
url.value='/deparsArticleList';
|
||||
}
|
||||
WXSHAREHOME(title.value, '肝胆相照-肝胆病在线公共服务平台',roootUrl + localStorage.getItem("officeid") + '&appid=' +localStorage.getItem("appid")+fromwexin,"");
|
||||
});
|
||||
const list = reactive(
|
||||
[ ])
|
||||
function initdata()
|
||||
{
|
||||
getCeecArticleList(ceecId.value,0).then((data) => {
|
||||
console.log("getCeecArticleList", data);
|
||||
list.push(...data.data.list)
|
||||
})
|
||||
}
|
||||
function handleChildEvent(eventData) {
|
||||
|
||||
showsearch.value= false
|
||||
// 处理从子组件传递过来的事件数据
|
||||
// console.log(eventData);
|
||||
}
|
||||
// onUpdated(()=>{
|
||||
// document.title="科室介绍"
|
||||
// })
|
||||
</script>
|
||||
<style scoped>
|
||||
.edu-head{
|
||||
background-image: url(../assets/edubg1.png);
|
||||
background-size: cover;
|
||||
padding-bottom: 48px;
|
||||
}
|
||||
.contentbox{
|
||||
height:100vh;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
|
||||
}
|
||||
.listcon{
|
||||
flex:1;
|
||||
overflow-y: scroll;
|
||||
-webkit-overflow-scrolling: touch;
|
||||
}
|
||||
</style>
|
||||
209
src/views/interact-search.vue
Normal file
@ -0,0 +1,209 @@
|
||||
<template >
|
||||
<headBar :title=titlet></headBar>
|
||||
<div class="dsearch">
|
||||
<div class="divsearch">
|
||||
<IconFont size="20" :name=search :style="{ 'padding-top': '12px', 'padding-left': '12px' }"></IconFont>
|
||||
<input placeholder="请输入关键词/字" type="text" v-model="inputValue">
|
||||
<IconFont size="16" :name=deletes :style="{ 'padding-top': '12px', 'padding-left': '12px' }" @click="clearSearch"></IconFont>
|
||||
</div>
|
||||
<div style="font-size: var(--front-size-14);font-family: AlibabaPuHuiTiR;color: rgba(0,0,0,0.65);line-height: 40px;text-align: center;margin-left: 12px;" @click="onRefresh">搜索</div>
|
||||
</div>
|
||||
<div style="height: 12px;background: #F6F7FB;margin-top: 16px;"></div>
|
||||
<div style="height: 16px;background: white"></div>
|
||||
<t-pull-down-refresh v-model="refreshing" @refresh="onRefresh" :loading-bar-height="36"
|
||||
:loading-texts="['下拉刷新', '松开刷新', '正在刷新', '刷新完成']" :loading-props="{ theme: 'dots' }">
|
||||
<t-list @scroll="onScroll" :async-loading="loading" v-if="list.length>0">
|
||||
<div v-for="(item, index) in list">
|
||||
<a :href=item.content>
|
||||
<div class="first" :style="{ background:`url(${imgurl+item.img})`, 'background-size': '100% 100%','background-repeat':'no-repeat','border-radius': '8px'}" >
|
||||
<div class="ftitle">{{ item.title }}</div>
|
||||
</div>
|
||||
</a>
|
||||
</div>
|
||||
<template #footer>
|
||||
<div class="end" v-if="evisible">— END —</div>
|
||||
</template>
|
||||
</t-list>
|
||||
<nut-empty v-else>
|
||||
<template #image>
|
||||
<nut-image :src=sempty fit="cover"/>
|
||||
</template>
|
||||
<template #description>
|
||||
<div style="font-size: var(--front-size-16);font-family: AlibabaPuHuiTiR;color: rgba(0,0,0,0.65);line-height: 22px;margin-top: 16px;">暂无信息</div>
|
||||
</template>
|
||||
</nut-empty>
|
||||
</t-pull-down-refresh>
|
||||
|
||||
</template>
|
||||
<script setup >
|
||||
import sempty from "../assets/sempty.png";
|
||||
import { IconFont } from '@nutui/icons-vue';
|
||||
import search from '../assets/searchb.png'
|
||||
import deletes from '../assets/deletes.png'
|
||||
import { useRouter } from 'vue-router';
|
||||
import {WXSHAREHOME} from '../utils/wxshare-1.6.0';
|
||||
import {queryPage,imgurl,fromwexin,roootUrl} from '../utils/api.js'
|
||||
const searchMessage = ref('请输入关键词/字');
|
||||
const titlet=ref('搜索列表')
|
||||
const inputValue=ref('');
|
||||
const page = ref(1);
|
||||
const totalPage = ref(1)
|
||||
const evisible = ref(false);
|
||||
const refreshing=ref(false);
|
||||
const loading = ref('');
|
||||
const router = useRouter();
|
||||
function clearSearch()
|
||||
{
|
||||
inputValue.value=''
|
||||
}
|
||||
|
||||
onMounted(() => {
|
||||
|
||||
onLoad(page.value);
|
||||
WXSHAREHOME("搜索列表", '肝胆相照-肝胆病在线公共服务平台',roootUrl + localStorage.getItem("officeid") + '&appid=' +localStorage.getItem("appid")+fromwexin,"");
|
||||
})
|
||||
const list=ref([])
|
||||
|
||||
const onLoad = (page) => {
|
||||
|
||||
if (page > totalPage.value) {
|
||||
refreshing.value=false;
|
||||
return
|
||||
}
|
||||
loading.value = 'loading';
|
||||
queryPage(page,inputValue.value).then((data) => {
|
||||
console.log("queryPage", data);
|
||||
refreshing.value=false;
|
||||
loading.value = '';
|
||||
if (page == 1) {
|
||||
list.value= [];
|
||||
list.value.push(...data.data.list)
|
||||
|
||||
}
|
||||
else {
|
||||
list.value.push(...data.data.list)
|
||||
}
|
||||
|
||||
totalPage.value = data.data.pages ;
|
||||
if (page >= totalPage.value) {
|
||||
evisible.value = true;
|
||||
}
|
||||
})
|
||||
|
||||
|
||||
|
||||
};
|
||||
const onRefresh = () => {
|
||||
console.log('onRefresh');
|
||||
page.value = 1;
|
||||
totalPage.value = 1;
|
||||
evisible.value = false;
|
||||
refreshing.value = true;
|
||||
onLoad(page.value);
|
||||
};
|
||||
const onScroll = (scrollBottom) => {
|
||||
|
||||
if (scrollBottom < 100) {
|
||||
console.log("scrollBottom");
|
||||
page.value=page.value+1;
|
||||
onLoad(page.value);
|
||||
}}
|
||||
</script>
|
||||
<style scoped>
|
||||
|
||||
.first{
|
||||
|
||||
height: 96px;
|
||||
|
||||
margin-left: 16px;
|
||||
margin-right: 16px;
|
||||
margin-bottom: 12px;
|
||||
|
||||
}
|
||||
.ftitle{
|
||||
margin-right: 16px;
|
||||
margin-left: 16px;
|
||||
font-size: var(--font-size-18);
|
||||
font-family: AlibabaPuHuiTiM;
|
||||
color: #314E4D;
|
||||
line-height: 96px;
|
||||
white-space: nowrap; /* 防止文字换行 */
|
||||
overflow: hidden; /* 隐藏溢出的文字 */
|
||||
text-overflow: ellipsis; /* 使用省略号表示被省略的文本 */
|
||||
}
|
||||
a:link {
|
||||
text-decoration: none;
|
||||
|
||||
}
|
||||
|
||||
a:visited {
|
||||
text-decoration: none;
|
||||
|
||||
}
|
||||
|
||||
a:hover {
|
||||
text-decoration: none;
|
||||
|
||||
}
|
||||
|
||||
a:active {
|
||||
text-decoration: none;
|
||||
|
||||
}
|
||||
.dsearch{
|
||||
display: flex;
|
||||
height: 40px;
|
||||
margin-top: 16px;
|
||||
margin-left: 16px;
|
||||
margin-right: 16px;
|
||||
justify-content: space-between;
|
||||
}
|
||||
.divsearch {
|
||||
display: flex;
|
||||
height: 40px;
|
||||
flex: 1;
|
||||
background: #FFFFFF;
|
||||
border-radius: 21px;
|
||||
border: 2px solid rgba(0,0,0,0.06);
|
||||
backdrop-filter: blur(25px);
|
||||
|
||||
}
|
||||
.dicon{
|
||||
margin-left: 16px;
|
||||
|
||||
}
|
||||
input {
|
||||
width: 70%;
|
||||
margin-left: 5px;
|
||||
font-size: var(--front-size-14);
|
||||
background: transparent;
|
||||
border: none;
|
||||
-webkit-box-shadow: none;
|
||||
box-shadow: none;
|
||||
outline: none;
|
||||
font-family: AlibabaPuHuiTiM;
|
||||
color: rgba(0,0,0,0.85);
|
||||
/* color: red; */
|
||||
}
|
||||
|
||||
input:focus {
|
||||
font-size: var(--front-size-14);
|
||||
width: 70%;
|
||||
margin-left: 5px;
|
||||
border: none;
|
||||
font-family: AlibabaPuHuiTiM;
|
||||
color: rgba(0,0,0,0.85);
|
||||
box-shadow: none;
|
||||
}
|
||||
.end {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
margin-top: 21px;
|
||||
font-size: var(--font-size-14);
|
||||
font-family: AlibabaPuHuiTiR;
|
||||
color: rgba(0, 0, 0, 0.24);
|
||||
line-height: 24px;
|
||||
}
|
||||
</style>
|
||||
|
||||
140
src/views/interact.vue
Normal file
@ -0,0 +1,140 @@
|
||||
<template >
|
||||
<searchblue :message=searchMessage searchtype="xuanjiao"></searchblue>
|
||||
<t-pull-down-refresh v-model="refreshing" @refresh="onRefresh" :loading-bar-height="36"
|
||||
:loading-texts="['下拉刷新', '松开刷新', '正在刷新', '刷新完成']" :loading-props="{ theme: 'dots' }" >
|
||||
<t-list @scroll="onScroll" :async-loading="loading" v-if="list.length>0">
|
||||
<div v-for="(item, index) in list">
|
||||
<a :href=item.content>
|
||||
<div class="first" :style="{ background:`url(${imgurl+item.img})`, 'background-size': '100% 100%','background-repeat':'no-repeat','border-radius': '8px'}" >
|
||||
<div class="ftitle">{{ item.title }}</div>
|
||||
</div>
|
||||
</a>
|
||||
</div>
|
||||
</t-list>
|
||||
<!-- <nut-empty v-else>
|
||||
<template #image>
|
||||
<nut-image :src=sempty fit="cover"/>
|
||||
</template>
|
||||
<template #description>
|
||||
<div style="font-size: var(--front-size-16);font-family: AlibabaPuHuiTiR;color: rgba(0,0,0,0.65);line-height: 22px;margin-top: 16px;">暂无信息</div>
|
||||
</template>
|
||||
</nut-empty> -->
|
||||
</t-pull-down-refresh>
|
||||
<TabTools></TabTools>
|
||||
</template>
|
||||
<script setup >
|
||||
import searchblue from '../components/searchblue.vue'
|
||||
import { useRouter } from 'vue-router';
|
||||
import {WXSHARE} from '../utils/wxshare-1.6.0';
|
||||
import {queryPage,imgurl} from '../utils/api.js'
|
||||
const searchMessage = ref('请输入关键词/字');
|
||||
const page = ref(1);
|
||||
const totalPage = ref(1)
|
||||
const refreshing=ref(false);
|
||||
const loading = ref('');
|
||||
const router = useRouter();
|
||||
function click()
|
||||
{
|
||||
router.push({ path: '/search-things' });
|
||||
}
|
||||
|
||||
onMounted(() => {
|
||||
|
||||
onLoad(page.value);
|
||||
WXSHARE("健康互助", '肝胆相照-肝胆病在线公共服务平台', window.location.href,"");
|
||||
})
|
||||
const list=reactive([])
|
||||
// function gotoPage(params) {
|
||||
// router.push({ path: '/webs-view',query:{name:params} });
|
||||
// }
|
||||
const onLoad = (page) => {
|
||||
|
||||
if (page > totalPage.value) {
|
||||
refreshing.value=false;
|
||||
return
|
||||
}
|
||||
loading.value = 'loading';
|
||||
queryPage(page).then((data) => {
|
||||
console.log("queryPage", data);
|
||||
refreshing.value=false;
|
||||
loading.value = '';
|
||||
if (page == 1) {
|
||||
list.length = 0;
|
||||
list.push(...data.data.list)
|
||||
|
||||
}
|
||||
else {
|
||||
list.push(...data.data.list)
|
||||
}
|
||||
|
||||
totalPage.value = data.data.pages ;
|
||||
|
||||
})
|
||||
|
||||
|
||||
|
||||
};
|
||||
const onRefresh = () => {
|
||||
console.log('onRefresh');
|
||||
page.value = 1;
|
||||
refreshing.value = true;
|
||||
onLoad(page.value);
|
||||
};
|
||||
const onScroll = (scrollBottom) => {
|
||||
|
||||
if (scrollBottom <100) {
|
||||
console.log("scrollBottom");
|
||||
page.value=page.value+1;
|
||||
onLoad(page.value);
|
||||
}
|
||||
}
|
||||
</script>
|
||||
<style scoped>
|
||||
|
||||
.first{
|
||||
|
||||
height: 96px;
|
||||
|
||||
margin-left: 16px;
|
||||
margin-right: 16px;
|
||||
margin-bottom: 12px;
|
||||
|
||||
}
|
||||
.ftitle{
|
||||
margin-right: 16px;
|
||||
margin-left: 16px;
|
||||
font-size: var(--font-size-18);
|
||||
font-family: AlibabaPuHuiTiM;
|
||||
color: #314E4D;
|
||||
line-height: 96px;
|
||||
white-space: nowrap; /* 防止文字换行 */
|
||||
overflow: hidden; /* 隐藏溢出的文字 */
|
||||
text-overflow: ellipsis; /* 使用省略号表示被省略的文本 */
|
||||
}
|
||||
a:link {
|
||||
text-decoration: none;
|
||||
|
||||
}
|
||||
|
||||
a:visited {
|
||||
text-decoration: none;
|
||||
|
||||
}
|
||||
|
||||
a:hover {
|
||||
text-decoration: none;
|
||||
|
||||
}
|
||||
|
||||
a:active {
|
||||
text-decoration: none;
|
||||
|
||||
}
|
||||
|
||||
.t-list{
|
||||
padding-bottom: 80px;
|
||||
}
|
||||
.t-pull-down-refresh{
|
||||
height:calc(100% - 73px)
|
||||
}
|
||||
</style>
|
||||
91
src/views/leave-message.vue
Normal file
@ -0,0 +1,91 @@
|
||||
<template>
|
||||
<div style="background: var(--back-color-02);width:100vw;min-height:100vh;">
|
||||
<headBar :title=title :backg=titbackge></headBar>
|
||||
<div class="tip">
|
||||
<div style="display: flex;padding-top:10px;margin-left: 16px;align-items: center;">
|
||||
<img :src="rotbot" width="20" height="20">
|
||||
<div style="font-size: var( --font-size-16);font-family: AlibabaPuHuiTiM;color: #3BB5FE;line-height: 22px;margin-left: 8px;">听您意见、为您服务! </div>
|
||||
</div>
|
||||
<div style="font-size: var(--font-size-14);font-family: AlibabaPuHuiTiR;color: rgba(0,0,0,0.65);
|
||||
line-height: 18px; margin-left: 16px;margin-top: 8px;margin-left: 16px;padding-bottom: 10px;">如果您对我们科室有任何的意见和建议,都可以发送给我们知道。希望通过您的意见和建议,进一步提高我们的服务水平。</div>
|
||||
</div>
|
||||
<div style="display: flex;margin-top: 16px;margin-left: 16px; margin-right: 16px;
|
||||
align-items: center;justify-content: space-between;">
|
||||
<div style="font-size: var(--font-size-18);font-family: AlibabaPuHuiTiM;color: rgba(0,0,0,0.85);">反馈描述</div>
|
||||
<div style="display: flex;vertical-align: middle; align-items: center;" @click="gotofeedBack"><img src='../assets/his.png' width="16" height="16">
|
||||
<div style="font-size: var(--font-size-16);font-family: AlibabaPuHuiTiR;color: rgba(0,0,0,0.85);">反馈记录</div>
|
||||
</div>
|
||||
</div>
|
||||
<div style="margin-left: 16px;margin-right: 16px;margin-top: 12px;">
|
||||
<nut-textarea v-model="value" limit-show max-length="500" placeholder="请详细描述问题或意见" />
|
||||
</div>
|
||||
<div class="submit" @click="submit">提交</div>
|
||||
</div>
|
||||
</template>
|
||||
<script setup>
|
||||
import { useRouter } from 'vue-router';
|
||||
import {advise,frommywexin} from '../utils/api.js'
|
||||
import rotbot from '../assets/rotbot.png';
|
||||
import { showToast } from '@nutui/nutui';
|
||||
import {WXSHARE} from '../utils/wxshare-1.6.0';
|
||||
const router = useRouter();
|
||||
const titbackge=ref('#F6F7FBFF')
|
||||
const title=ref('留言反馈')
|
||||
const value = ref('');
|
||||
function gotofeedBack()
|
||||
{
|
||||
router.push({ path: '/feedback-history'});
|
||||
}
|
||||
function submit()
|
||||
{
|
||||
advise(value.value).then((data) => {
|
||||
|
||||
if(data.code==200)
|
||||
{
|
||||
showToast.text('提交成功');
|
||||
value.value=''
|
||||
}
|
||||
else
|
||||
{
|
||||
showToast.text(data.msg);
|
||||
}
|
||||
console.log("advise", data);
|
||||
|
||||
})
|
||||
}
|
||||
onMounted(() => {
|
||||
|
||||
WXSHARE("留言反馈", '肝胆相照-肝胆病在线公共服务平台', window.location.href+frommywexin,"");
|
||||
})
|
||||
</script>
|
||||
<style scoped>
|
||||
.tip{
|
||||
margin: 16px;
|
||||
background: #FFFFFF;
|
||||
border-radius: 8px;
|
||||
}
|
||||
.nut-textarea {
|
||||
--nut-textarea-font:17px;
|
||||
font-family: AlibabaPuHuiTiM;
|
||||
color: rgba(0,0,0,0.85);
|
||||
line-height: 22px;
|
||||
height: 232px;
|
||||
background: #FFFFFF;
|
||||
box-shadow: 0px 4px 12px 0px rgba(171,209,239,0.1);
|
||||
border-radius: 8px;
|
||||
}
|
||||
.submit{
|
||||
|
||||
margin: auto;
|
||||
width: 279px;
|
||||
height: 42px;
|
||||
background: #3BB5FE;
|
||||
border-radius: 22px;
|
||||
font-size: var(--font-size-16);
|
||||
font-family: AlibabaPuHuiTiR;
|
||||
color: #FFFFFF;
|
||||
text-align: center;
|
||||
line-height: 42px;
|
||||
margin-top: 24px;
|
||||
}
|
||||
</style>
|
||||
221
src/views/live.vue
Normal file
@ -0,0 +1,221 @@
|
||||
<template>
|
||||
<div class="listcontain">
|
||||
<headBar :title=title></headBar>
|
||||
<div class="listcon">
|
||||
<t-pull-down-refresh v-model="refreshing" @refresh="onRefresh" :loading-bar-height="36"
|
||||
:loading-texts="['下拉刷新', '松开刷新', '正在刷新', '刷新完成']" :loading-props="{ theme: 'dots' }">
|
||||
|
||||
<t-list @scroll="onScroll" :async-loading="loading" v-if="list.length>0">
|
||||
|
||||
<div class="classgrid">
|
||||
<div v-for="(item, $index) in list" @click="click(item)">
|
||||
<div :style="{background:`url(${imgurl+item.img})`,height:'136px',
|
||||
'border-radius':'8px','background-size':'100% 100%','background-repeat':'no-repeat','border-radius': '8px' }">
|
||||
<div v-if="item.state==2" style="display: flex; position: relative;" >
|
||||
<div class="circle"><img :src=now style=" width: 20px;height: 20px;"></div>
|
||||
<div class="liv">直播中</div>
|
||||
</div>
|
||||
<div style="height: 10px;"></div>
|
||||
<div class="date" v-if="item.state==1&&item.beginDate.slice(0,-9)==item.endDate.slice(0,-9)">
|
||||
{{ item.beginDate.slice(5).slice(0,-3).replace(/-/, "/")+'-'+ item.endDate.slice(11).slice(0,-3) }}</div>
|
||||
|
||||
<div class="date1" v-else-if="item.state==1">
|
||||
|
||||
{{ item.beginDate.slice(5).slice(0,-3).replace(/-/, "/")+'-'+item.endDate.slice(5).slice(0,-3).replace(/-/, "/") }}</div>
|
||||
</div>
|
||||
<div class="title">
|
||||
<!-- {{ item.title }} -->
|
||||
<nut-ellipsis
|
||||
:content=item.title
|
||||
rows="2"
|
||||
direction="end"
|
||||
></nut-ellipsis>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<template #footer>
|
||||
<div class="end" v-if="evisible">— END —</div>
|
||||
</template>
|
||||
</t-list>
|
||||
<nut-empty v-else>
|
||||
<template #image>
|
||||
<nut-image :src=sempty fit="cover"/>
|
||||
|
||||
</template>
|
||||
<template #description>
|
||||
<div style="font-size: var(--front-size-16);font-family: AlibabaPuHuiTiR;color: rgba(0,0,0,0.65);line-height: 22px;margin-top: 16px;">暂无数据</div>
|
||||
</template>
|
||||
</nut-empty>
|
||||
</t-pull-down-refresh>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
<script setup>
|
||||
import sempty from '../assets/sempty.png'
|
||||
import now from '../assets/now.gif'
|
||||
import { useRouter } from 'vue-router';
|
||||
import {livequeryPage,imgurl,frommywexin} from '../utils/api.js'
|
||||
import {WXSHARE} from '../utils/wxshare-1.6.0';
|
||||
const evisible = ref(false);
|
||||
const page = ref(1);
|
||||
const totalPage = ref(1)
|
||||
const router = useRouter();
|
||||
const refreshing=ref(false);
|
||||
const loading = ref('');
|
||||
const title=ref('科普直播')
|
||||
const list = ref([ ])
|
||||
|
||||
function click(item)
|
||||
{
|
||||
window.location.href = item.url;
|
||||
// router.push({ path: '/video', query: { vid:1} });
|
||||
}
|
||||
onMounted(() => {
|
||||
onLoad(page.value);
|
||||
WXSHARE("科普直播", '肝胆相照-肝胆病在线公共服务平台', window.location.href+frommywexin,"");
|
||||
})
|
||||
|
||||
const onLoad = (page) => {
|
||||
|
||||
if (page > totalPage.value) {
|
||||
refreshing.value=false;
|
||||
return
|
||||
}
|
||||
if(page == 1||!evisible.value)
|
||||
{
|
||||
loading.value = 'loading';
|
||||
livequeryPage(page).then((data) => {
|
||||
console.log("livequeryPage", data);
|
||||
refreshing.value=false;
|
||||
loading.value = '';
|
||||
if (page == 1) {
|
||||
list.value = [];
|
||||
list.value.push(...data.data.list)
|
||||
console.log("list", list);
|
||||
}
|
||||
else {
|
||||
list.value.push(...data.data.list)
|
||||
}
|
||||
|
||||
totalPage.value = data.data.pages ;
|
||||
|
||||
if (page >= totalPage.value) {
|
||||
evisible.value=true;
|
||||
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
};
|
||||
const onRefresh = () => {
|
||||
page.value = 1;
|
||||
totalPage.value= 1;
|
||||
evisible.value = false;
|
||||
refreshing.value=true;
|
||||
onLoad(page.value);
|
||||
};
|
||||
const onScroll = (scrollBottom) => {
|
||||
|
||||
if (scrollBottom < 100) {
|
||||
page.value=page.value+1;
|
||||
onLoad(page.value);
|
||||
}
|
||||
};
|
||||
</script>
|
||||
<style scoped>
|
||||
.listcontain{
|
||||
display: flex;
|
||||
height: 100vh;
|
||||
flex-direction: column;
|
||||
}
|
||||
.listcon{
|
||||
flex: 1;
|
||||
overflow-y: scroll;
|
||||
-webkit-overflow-scrolling: touch;
|
||||
}
|
||||
.t-pull-down-refresh {
|
||||
overflow: hidden;
|
||||
height: auto;
|
||||
}
|
||||
.classgrid{
|
||||
display: grid;
|
||||
grid-template-columns: repeat(1, 1fr);
|
||||
/* grid-template-columns: repeat(2, 1fr); */
|
||||
grid-gap: 12px;
|
||||
margin: 16px;
|
||||
|
||||
}
|
||||
.circle {
|
||||
|
||||
width: 30px;
|
||||
height: 30px;
|
||||
background: #3BB5FEFF;
|
||||
border-radius: 100%;
|
||||
margin-left: 8px;
|
||||
margin-top: 8px;
|
||||
z-index: 1;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
}
|
||||
.liv{
|
||||
|
||||
position: absolute;
|
||||
left: 25px;
|
||||
font-size:var(--font-size-11);
|
||||
top: 12px;
|
||||
font-family: AlibabaPuHuiTiR;
|
||||
color: #FFFFFF;
|
||||
line-height: 22px;
|
||||
text-align: right;
|
||||
width: 56px;
|
||||
height: 22px;
|
||||
padding-right: 6px;
|
||||
background: rgba(0,0,0,0.56);
|
||||
border-radius: 8px;
|
||||
}
|
||||
.date{
|
||||
margin-top: 96px;
|
||||
width: 120px;
|
||||
height: 30px;
|
||||
padding-left: 8px;
|
||||
font-size:var(--font-size-13);
|
||||
font-family: HarmonyOS_Sans_Medium;
|
||||
color: #FFFFFF;
|
||||
line-height: 30px;
|
||||
background: linear-gradient(190deg, #A6D9FF 0%, #3BB5FE 100%);
|
||||
border-radius: 0px 15px 15px 8px;
|
||||
}
|
||||
.date1{
|
||||
margin-top: 96px;
|
||||
width: 150px;
|
||||
height: 30px;
|
||||
padding-left: 8px;
|
||||
font-size:var(--font-size-13);
|
||||
font-family: HarmonyOS_Sans_Medium;
|
||||
color: #FFFFFF;
|
||||
line-height: 30px;
|
||||
background: linear-gradient(190deg, #A6D9FF 0%, #3BB5FE 100%);
|
||||
border-radius: 0px 15px 15px 8px;
|
||||
}
|
||||
.title{
|
||||
margin-top: 8px;
|
||||
margin-bottom: 8px;
|
||||
font-size: 16px;
|
||||
/* font-size: var(--font-size-14); */
|
||||
font-family: AlibabaPuHuiTiM;
|
||||
color: rgba(0,0,0,0.85);
|
||||
line-height: 20px
|
||||
}
|
||||
.end {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
margin-top: 21px;
|
||||
font-size: var(--font-size-14);
|
||||
font-family: AlibabaPuHuiTiR;
|
||||
color: rgba(0,0,0,0.24);
|
||||
line-height: 24px;
|
||||
}
|
||||
</style>
|
||||
418
src/views/my.vue
Normal file
@ -0,0 +1,418 @@
|
||||
<template >
|
||||
<div class="edu-head">
|
||||
<div> </div>
|
||||
<!-- <nut-image :src=mybg alt="图片描述" class="mydiv" style="margin: auto;">
|
||||
</nut-image> -->
|
||||
<nut-image :src=photo alt="图片描述" round fit="cover"
|
||||
style="width: 96px;height: 96px;margin: auto;position: relative;z-index: 1 ">
|
||||
</nut-image>
|
||||
<div class="mydiv1">
|
||||
</div>
|
||||
<div class="divname">
|
||||
<!-- <nut-ellipsis
|
||||
:content=name
|
||||
rows="1"
|
||||
direction="end"
|
||||
></nut-ellipsis> -->
|
||||
<div class="ddname">{{name}}</div>
|
||||
</div>
|
||||
<div class="myto" @click="gotoEdit">编辑信息 <img src='../assets/toto.png' alt="图片描述" style="width: 12px;height: 12px;margin-left: 4px;"/> </div>
|
||||
<div class="divdepartment">
|
||||
<div>{{dtitle}}</div>
|
||||
</div>
|
||||
<div class="changedepart" @click="changedepart"><img src='../assets/change_depart.png' alt="图片描述" style="width: 16px;height: 16px;" >
|
||||
切换科室</div>
|
||||
</div>
|
||||
<div style="background: var(--back-color-02);">
|
||||
<div class="containernew">
|
||||
<div class="buttom" @click="clickhere('浏览记录')">
|
||||
<img src='../assets/history.png' alt="图片描述" style="width: 24px;height: 24px;" >
|
||||
|
||||
<p>浏览记录</p>
|
||||
</div>
|
||||
<div class="buttom" @click="clickhere('我的收藏')">
|
||||
<img src='../assets/collect.png' alt="图片描述" style="width: 24px;height: 24px;">
|
||||
|
||||
<p>我的收藏</p>
|
||||
</div>
|
||||
<div class="buttom" @click="clickhere('确认已读')" >
|
||||
<img src='../assets/read.png' alt="图片描述" style="width: 24px;height: 24px;">
|
||||
|
||||
<p>确认已读</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<nut-overlay v-model:visible="show" :close-on-click-overlay="false">
|
||||
<div class="wrapper">
|
||||
<div class="content" v-if="showPop">
|
||||
<div class="raido_title">切换科室</div>
|
||||
<nut-radio-group v-model="radioVal" @change="handleChange" class="contentchild">
|
||||
<div v-for="(item, index) in departemntlist">
|
||||
<nut-radio :label=index>
|
||||
<template #icon> <IconFont size="16" :name=radio_no :style="{ 'margin-top': '3px' }" /></template>
|
||||
<template #checkedIcon> <IconFont size="16" :name=radio_sel :style="{ 'margin-top': '3px' }" /> </template>
|
||||
{{ item.officeName }}
|
||||
</nut-radio>
|
||||
</div>
|
||||
</nut-radio-group>
|
||||
<div :style="{display:'flex',background: '#FFFFFF',
|
||||
'border-radius': '0px 0px 12px 12px'}">
|
||||
<div class="bt_no" @click.stop="handleclick(false)">取消</div>
|
||||
<div class="bt_yes" @click.stop="handleclick(true)">确认</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="content1" v-if="showPop1">
|
||||
<div class="raido_title">温馨提示</div>
|
||||
<div class="raido_title1">{{'您确定要跳转到:'+hospitaltmp+'-'+dtitletmp}}</div>
|
||||
<div class="raido_title2">{{'您当前浏览的科室为:'+hospital+'-'+dtitle}}</div>
|
||||
<div :style="{display:'flex'}">
|
||||
<div class="bt_no" @click.stop="handleclick(false)">取消</div>
|
||||
<div class="bt_yes" @click.stop="handleclick(true,true)">确认</div>
|
||||
</div>
|
||||
|
||||
<div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</nut-overlay>
|
||||
<TabTools></TabTools>
|
||||
</div>
|
||||
</template>
|
||||
<script setup >
|
||||
import {getmy,imgurl,roootUrl} from '../utils/api.js'
|
||||
import { IconFont } from '@nutui/icons-vue';
|
||||
import { useRouter } from 'vue-router';
|
||||
import {WXSHARE} from '../utils/wxshare-1.6.0';
|
||||
// import toto from '../assets/toto.png';
|
||||
// import change_depart from '../assets/change_depart.png'
|
||||
// import history from '../assets/history.png';
|
||||
// import collect from '../assets/collect.png';
|
||||
// import read from '../assets/read.png';
|
||||
import radio_no from '../assets/radio_no.png'
|
||||
import radio_sel from '../assets/radio_sel.png'
|
||||
const show = ref(false);
|
||||
const name= ref('');
|
||||
const photo= ref('');
|
||||
onMounted(() => {
|
||||
initData()
|
||||
WXSHARE("我的", '肝胆相照-肝胆病在线公共服务平台', window.location.href,"");
|
||||
})
|
||||
function initData()
|
||||
{
|
||||
|
||||
getmy().then((data) => {
|
||||
console.log("getmy", data);
|
||||
if(data.data.name==null||data.data.name=='')
|
||||
{
|
||||
name.value=data.data.nickname
|
||||
}
|
||||
else
|
||||
{
|
||||
name.value=data.data.name
|
||||
}
|
||||
|
||||
|
||||
if(data.data.photo==null||data.data.photo=='')
|
||||
{
|
||||
photo.value=data.data.headImgUrl
|
||||
}
|
||||
else
|
||||
{
|
||||
photo.value=imgurl+data.data.photo
|
||||
}
|
||||
hospital.value=data.data.appOffice.hospitalName
|
||||
dtitle.value=data.data.appOffice.officeName
|
||||
dtitletmp.value=data.data.appOffice.officeName
|
||||
departemntlist.push(...data.data.appOfficeRecord)
|
||||
});
|
||||
}
|
||||
const router = useRouter();
|
||||
function click()
|
||||
{
|
||||
router.push({ path: '/education-centre' });
|
||||
}
|
||||
function clickhere(name)
|
||||
{
|
||||
router.push({ path: '/private-records', query: { type:name} });
|
||||
|
||||
}
|
||||
function gotoEdit()
|
||||
{
|
||||
router.push({ path: '/personal-data' });
|
||||
}
|
||||
|
||||
const hospital=ref('');
|
||||
const dtitle = ref('');
|
||||
const dtitletmp=ref('');
|
||||
const hospitaltmp=ref('');
|
||||
const radioVal = ref(dtitle.value);
|
||||
const showPop1=ref(false)
|
||||
const showPop=ref(true)
|
||||
const urltmp=ref('');
|
||||
let officeid = ''
|
||||
const departemntlist=reactive([])
|
||||
const handleChange = (value) => {
|
||||
if (isNaN(value)) {
|
||||
|
||||
} else {
|
||||
dtitletmp.value=departemntlist[value].officeName;
|
||||
hospitaltmp.value=departemntlist[value].hospitalName;
|
||||
officeid=departemntlist[value].officeId
|
||||
urltmp.value=roootUrl+departemntlist[value].officeId+'&appid='+departemntlist[value].appid
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
function handleclick(choose,close)
|
||||
{
|
||||
if(close)
|
||||
{
|
||||
localStorage.setItem("officeid", officeid);
|
||||
window.location.href=urltmp.value
|
||||
// showPop.value=true;
|
||||
// showPop1.value=false;
|
||||
// show.value=false;
|
||||
// dtitle.value=dtitletmp.value;
|
||||
// click()
|
||||
}
|
||||
else if(choose)
|
||||
{
|
||||
if(dtitle.value==dtitletmp.value)
|
||||
{
|
||||
show.value=false;
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
showPop.value=false;
|
||||
showPop1.value=true;
|
||||
}
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
showPop.value=true;
|
||||
showPop1.value=false;
|
||||
show.value=false;
|
||||
radioVal.value=dtitle.value
|
||||
dtitletmp.value=dtitle.value
|
||||
}
|
||||
}
|
||||
function changedepart() {
|
||||
if (departemntlist.length > 0) {
|
||||
show.value = true
|
||||
}
|
||||
else {
|
||||
showToast.text('暂无可切换的科室');
|
||||
}
|
||||
}
|
||||
</script>
|
||||
<style scoped>
|
||||
.edu-head{
|
||||
background-image: url(../assets/edubg.png);
|
||||
background-size: cover;
|
||||
|
||||
}
|
||||
.mydiv1{
|
||||
position: absolute;
|
||||
top: 36px;
|
||||
background-image: url(../assets/mybg.png);
|
||||
height: 224px;
|
||||
width: 100%;
|
||||
background-position:center;
|
||||
background-size: cover;
|
||||
background-repeat: no-repeat;
|
||||
|
||||
}
|
||||
|
||||
.mydiv{
|
||||
position: absolute;
|
||||
top: 34px;
|
||||
height: 224px;
|
||||
pointer-events: none;
|
||||
}
|
||||
.divname{
|
||||
display:flex ;
|
||||
position: absolute;
|
||||
top: 120px;
|
||||
left: 36px;
|
||||
font-size: var(--font-size-20);
|
||||
font-family: AlibabaPuHuiTiM;
|
||||
color: white;
|
||||
line-height: 24px;
|
||||
|
||||
}
|
||||
.myto{
|
||||
position: absolute;
|
||||
font-size:14px;
|
||||
/* font-size: var(--font-size-12); */
|
||||
font-family: AlibabaPuHuiTiM;
|
||||
color: white;
|
||||
align-items: center;
|
||||
display: flex;
|
||||
right: 36px;
|
||||
top: 125px;
|
||||
}
|
||||
.divdepartment{
|
||||
display:flex ;
|
||||
position: absolute;
|
||||
top: 169px;
|
||||
left: 48px;
|
||||
font-size: 16px;
|
||||
/* font-size: var(--font-size-14); */
|
||||
font-family: AlibabaPuHuiTiM;
|
||||
color: #2E2E30;
|
||||
line-height: 24px
|
||||
}
|
||||
.changedepart{
|
||||
align-items: center;
|
||||
display: flex;
|
||||
position: absolute;
|
||||
right: 48px;
|
||||
top: 169px;
|
||||
font-size: 14px;
|
||||
/* font-size: var(--font-size-12); */
|
||||
background: rgba(183,226,252,0.32);
|
||||
border-radius: 14px;
|
||||
line-height: 17px;
|
||||
padding: 3px 10px 3px 8px;
|
||||
}
|
||||
.containernew {
|
||||
position: absolute;
|
||||
top: 230px;
|
||||
display: flex;
|
||||
|
||||
height: 88px;
|
||||
background: #FFFFFF;
|
||||
border-radius: 8px;
|
||||
left: 16px;
|
||||
right: 16px;
|
||||
box-shadow: 2px 2px 5px 5px var(--back-color-02);
|
||||
|
||||
}
|
||||
.buttom{
|
||||
flex: 1;
|
||||
display: flex;
|
||||
flex-direction:column;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
font-size: 16px;
|
||||
/* font-size: var(--font-size-14); */
|
||||
font-family: AlibabaPuHuiTiR;
|
||||
color: rgba(0,0,0,0.65);
|
||||
line-height: 24px;
|
||||
}
|
||||
|
||||
.wrapper {
|
||||
display: flex;
|
||||
height: 100%;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
}
|
||||
.content {
|
||||
|
||||
width: 80%;
|
||||
min-height: 256px;
|
||||
/* height: 256px; */
|
||||
background: url(../assets/popbg.png);
|
||||
background-size: contain;
|
||||
|
||||
background-repeat:no-repeat;
|
||||
|
||||
}
|
||||
.contentchild{
|
||||
/* height: 300px; */
|
||||
min-height: 100px;
|
||||
max-height: 300px;
|
||||
overflow: scroll
|
||||
}
|
||||
.content1 {
|
||||
|
||||
width: 80%;
|
||||
min-height: 256px;
|
||||
/* height: 256px; */
|
||||
background: linear-gradient(184deg, #F1FAFF 0%, #FFFFFF 100%);
|
||||
box-shadow: 0px 9px 28px 8px rgba(0,0,0,0.05);
|
||||
border-radius: 12px;
|
||||
|
||||
}
|
||||
.raido_title{
|
||||
margin: 16px;
|
||||
font-size: var(--font-size-18);
|
||||
font-family: AlibabaPuHuiTiM;
|
||||
color: rgba(0,0,0,0.85);
|
||||
line-height: 24px;
|
||||
}
|
||||
.raido_title1{
|
||||
margin: 16px;
|
||||
font-size: var(--font-size-16);
|
||||
font-family: AlibabaPuHuiTiM;
|
||||
color: rgba(0,0,0,0.85);
|
||||
line-height: 24px;
|
||||
text-shadow: 0px 9px 28px rgba(0,0,0,0.05);
|
||||
}
|
||||
.raido_title2{
|
||||
margin: 16px;
|
||||
background: rgba(0,0,0,0.04);
|
||||
box-shadow: 0px 9px 28px 8px rgba(0,0,0,0.05);
|
||||
border-radius: 4px;
|
||||
padding: 8px;
|
||||
font-size: var(--font-size-14);
|
||||
font-family: AlibabaPuHuiTiR;
|
||||
color: rgba(0,0,0,0.65);
|
||||
line-height: 22px;
|
||||
text-shadow: 0px 9px 28px rgba(0,0,0,0.05);
|
||||
}
|
||||
.nut-radio-group{
|
||||
display: grid;
|
||||
grid-template-columns: repeat(2, 1fr);
|
||||
background: #FFFFFF;
|
||||
|
||||
}
|
||||
.nut-radio{
|
||||
margin: 16px;
|
||||
--nut-radio-label-margin-left:8px;
|
||||
--nut-radio-label-font-size:var(--font-size-16);
|
||||
align-items:self-start;
|
||||
font-family: AlibabaPuHuiTiR;
|
||||
color: rgba(0,0,0,0.85);
|
||||
/* line-height: 24px; */
|
||||
}
|
||||
.bt_no{
|
||||
flex: 1;
|
||||
height: 48px;
|
||||
background: rgba(0,0,0,0.08);
|
||||
border-radius: 8px;
|
||||
margin-left: 16px;
|
||||
margin-top: 16px;
|
||||
font-size: var(--font-size-18);
|
||||
font-family: AlibabaPuHuiTiM;
|
||||
color: rgba(0,0,0,0.45);
|
||||
line-height: 48px;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
text-align: center;
|
||||
}
|
||||
.bt_yes{
|
||||
flex: 1;
|
||||
height: 48px;
|
||||
background: #3BB5FE;
|
||||
border-radius: 8px;
|
||||
margin: 16px;
|
||||
font-size: var(--font-size-18);
|
||||
font-family: AlibabaPuHuiTiM;
|
||||
color: white;
|
||||
line-height: 48px;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
text-align: center;
|
||||
}
|
||||
.ddname{
|
||||
white-space: nowrap; /* 防止自动换行 */
|
||||
overflow: hidden; /* 隐藏溢出内容 */
|
||||
text-overflow: ellipsis; /* 显示省略号 */
|
||||
width: 200px; /* 设置div的宽度 */
|
||||
}
|
||||
</style>
|
||||
782
src/views/personal-data.vue
Normal file
@ -0,0 +1,782 @@
|
||||
<template>
|
||||
<div style="background: var(--back-color-02);min-height: 100vh;">
|
||||
<headBar :title=title :backg=titbackge></headBar>
|
||||
<div class="tip">为方便接收全方位的科普服务,请确认您的真实信息</div>
|
||||
<div class="wdiv">
|
||||
<div class="item">
|
||||
<div class="itm1">姓名</div>
|
||||
<div class="dright"> <input placeholder="暂未填写" type="text" v-model="inputValuename">
|
||||
</div>
|
||||
<div class="dimg"></div>
|
||||
</div>
|
||||
<nut-divider/>
|
||||
<div class="item" >
|
||||
<div class="itm1">性别</div>
|
||||
<div class="dright"> <input placeholder="暂未填写" type="text" v-model="inputValuesex" readonly @click="click('性别',sexs)">
|
||||
|
||||
</div>
|
||||
<img :src=gotosle class="dimg">
|
||||
</div>
|
||||
<nut-divider/>
|
||||
<div class="item" >
|
||||
<div class="itm1">地区</div>
|
||||
<div class="dright"> <input placeholder="暂未填写" type="text" v-model="inputValuearea" readonly @click="click('地区',areaList)">
|
||||
|
||||
</div>
|
||||
<img :src=gotosle class="dimg">
|
||||
</div>
|
||||
<nut-divider/>
|
||||
<div class="item" >
|
||||
<div class="itm1">出生日期</div>
|
||||
<div class="dright"> <input placeholder="暂未填写" type="text" v-model="inputValuedate" readonly @click="click('出生日期')">
|
||||
|
||||
</div>
|
||||
<img :src=gotosle class="dimg">
|
||||
</div>
|
||||
<nut-divider/>
|
||||
<div class="item">
|
||||
<div class="itm1">身高(cm)</div>
|
||||
<div class="dright"> <input placeholder="暂未填写" type="text" v-model="inputValueheight">
|
||||
|
||||
</div>
|
||||
<div class="dimg"></div>
|
||||
</div>
|
||||
<nut-divider/>
|
||||
<div class="item">
|
||||
<div class="itm1">体重(kg)</div>
|
||||
<div class="dright"> <input placeholder="暂未填写" type="text" v-model="inputValueweight">
|
||||
|
||||
</div>
|
||||
<div class="dimg"></div>
|
||||
</div>
|
||||
<nut-divider/>
|
||||
<div class="item" >
|
||||
<div class="itm1">职业</div>
|
||||
<div class="dright"> <input placeholder="暂未填写" type="text" v-model="inputValuecareer" readonly @click="click('职业',career)">
|
||||
|
||||
</div>
|
||||
<img :src=gotosle class="dimg">
|
||||
</div>
|
||||
<nut-divider/>
|
||||
<div class="item" >
|
||||
<div class="itm1">受教育水平</div>
|
||||
<div class="dright"> <input placeholder="暂未填写" type="text" v-model="inputValueeducation" readonly @click="click('受教育水平',education)">
|
||||
|
||||
</div>
|
||||
<img :src=gotosle class="dimg">
|
||||
</div>
|
||||
<nut-divider/>
|
||||
<div class="item">
|
||||
<div class="itm1">手机号</div>
|
||||
<div class="dright"> <input placeholder="暂未填写" type="text" v-model="inputValuephone">
|
||||
|
||||
</div>
|
||||
<div class="dimg"></div>
|
||||
</div>
|
||||
<nut-divider/>
|
||||
<div class="itemn" >
|
||||
<div class="itm1">所患疾病</div>
|
||||
<div class="dright" @click="click('所患疾病')">
|
||||
<input placeholder="暂未填写" type="text" v-model="inputValuedisease" readonly @click="click('所患疾病')">
|
||||
<!-- <div v-if="inputValuedisease==''">
|
||||
暂未填写
|
||||
</div>
|
||||
{{inputValuedisease}} -->
|
||||
|
||||
</div>
|
||||
<img :src=gotosle class="dimg">
|
||||
</div>
|
||||
</div>
|
||||
<div class="subbutton" @click="Update">提交</div>
|
||||
<div style="height: 20px;"></div>
|
||||
</div>
|
||||
<nut-popup position="bottom" v-model:visible="show" round :style="{'--nut-popup-border-radius':'8px'}" :close-on-click-overlay="false">
|
||||
<nut-picker v-model="value" :columns="columns" :title=setitle @confirm="confirm" @cancel="show = false" class="tpicker">
|
||||
</nut-picker>
|
||||
</nut-popup>
|
||||
<nut-popup position="bottom" v-model:visible="showearea" round :style="{'--nut-popup-border-radius':'8px'}" :close-on-click-overlay="false" >
|
||||
<nut-picker v-model="value" :columns="areaList" :field-names="fieldNames" :title=setitle @confirm="confirm" @cancel="showearea = false" class="tpicker" >
|
||||
</nut-picker>
|
||||
</nut-popup>
|
||||
<nut-popup position="bottom" v-model:visible="showcareer" round :style="{'--nut-popup-border-radius':'8px'}" :close-on-click-overlay="false" >
|
||||
<nut-picker v-model="value" :columns="career" :field-names="fieldNamee" :title=setitle @confirm="confirm" @cancel="showcareer = false" class="tpicker" >
|
||||
</nut-picker>
|
||||
</nut-popup>
|
||||
<nut-popup position="bottom" v-model:visible="showe" round :style="{'--nut-popup-border-radius':'8px'}" :close-on-click-overlay="false">
|
||||
<nut-picker v-model="value" :columns="education" :field-names="fieldNamee" :title=setitle @confirm="confirm" @cancel="showe = false" class="tpicker" >
|
||||
</nut-picker>
|
||||
</nut-popup>
|
||||
<nut-popup position="bottom" v-model:visible="showdate" round :style="{'--nut-popup-border-radius':'8px'}" :close-on-click-overlay="false">
|
||||
<nut-date-picker
|
||||
v-model="currentDate"
|
||||
:min-date="minDate"
|
||||
:max-date="maxDate"
|
||||
@confirm="popupConfirm"
|
||||
:is-show-chinese="true"
|
||||
:threeDimensional="false"
|
||||
title="日期选择"
|
||||
class="tpicker"
|
||||
@cancel="showdate = false"
|
||||
>
|
||||
</nut-date-picker>
|
||||
</nut-popup>
|
||||
<nut-popup position="bottom" v-model:visible="showdis" :style="{ height: '70%','--nut-popup-border-radius':'8px', overflow: 'hidden'}" round :close-on-click-overlay="false">
|
||||
<div class="nut-picker__bar">
|
||||
<div class="nut-picker__left1" @click="changeNo">取消</div>
|
||||
<div class="nut-picker__title">所患疾病(最多选3项)</div>
|
||||
<div class="nut-picker__right1" @click="showdis = false">确认</div>
|
||||
</div>
|
||||
<div class="divtlist">
|
||||
<t-list >
|
||||
<div v-for="item in list" >
|
||||
<div @click="changeBox(item)" class="checkbox">
|
||||
{{ item.name }}
|
||||
|
||||
<IconFont size="20" :name=select_yes v-if="item.value == 1"></IconFont>
|
||||
<IconFont size="20" :name=select_no v-else-if="selnum>=3"></IconFont>
|
||||
<IconFont size="20" :name=select_not v-else></IconFont>
|
||||
</div>
|
||||
</div>
|
||||
</t-list>
|
||||
</div>
|
||||
</nut-popup>
|
||||
</template>
|
||||
<script setup>
|
||||
import {userInfo,positionList,userUpdate,diseaseList,educationalList,roootUrl,fromwexin} from '../utils/api.js'
|
||||
import { showToast } from '@nutui/nutui';
|
||||
import {WXSHAREHOME} from '../utils/wxshare-1.6.0';
|
||||
import areaList from '../utils/areaList.js'
|
||||
import { IconFont } from '@nutui/icons-vue';
|
||||
import select_not from "../assets/select_not.png";
|
||||
import select_no from "../assets/select_no.png";
|
||||
import select_yes from "../assets/select_yes.png";
|
||||
import gotosle from '../assets/gotosle.png'
|
||||
const titbackge=ref('#F6F7FBFF')
|
||||
const title=ref('个人信息')
|
||||
const inputValuename=ref('');
|
||||
const inputValuesex=ref('');
|
||||
const sex=ref(1);
|
||||
const inputValuearea=ref('');
|
||||
const inputValuedate=ref('');
|
||||
const inputValueheight=ref('');
|
||||
const inputValuecareer=ref('');
|
||||
const occupation=ref('');
|
||||
const inputValueeducation=ref('');
|
||||
const educational=ref(0);
|
||||
const inputValuephone=ref('');
|
||||
const inputValuedisease=ref('');
|
||||
let inputValuediseaseor='';
|
||||
const inputValueweight=ref('');
|
||||
const show = ref(false);
|
||||
const showearea= ref(false);
|
||||
const showcareer= ref(false);
|
||||
const showdate = ref(false);
|
||||
const showdis = ref(false);
|
||||
const showe = ref(false);
|
||||
const desc = ref();
|
||||
const value = ref();
|
||||
const setitle=ref('')
|
||||
const selnum=ref(0)
|
||||
const province= ref('');
|
||||
const city= ref('');
|
||||
const district= ref('');
|
||||
const provinceName= ref('');
|
||||
const cityName= ref('');
|
||||
const districtName= ref('');
|
||||
const columns = ref([
|
||||
]);
|
||||
const diseasetmp = ref([
|
||||
]);
|
||||
let diseasetor = [];
|
||||
|
||||
const fieldNames = ref({
|
||||
text: 'label',
|
||||
value: 'code',
|
||||
children: 'children'
|
||||
});
|
||||
const fieldNamec = ref({
|
||||
text: 'valueName',
|
||||
value: 'valueName',
|
||||
|
||||
});
|
||||
const fieldNamee = ref({
|
||||
text: 'name',
|
||||
value: 'name',
|
||||
id:'id'
|
||||
|
||||
});
|
||||
const formData = {
|
||||
birthday: undefined,
|
||||
city:undefined,
|
||||
disease: undefined,
|
||||
district: undefined,
|
||||
educational:undefined,
|
||||
height:undefined,
|
||||
mobile: undefined,
|
||||
name: undefined,
|
||||
occupation: undefined,
|
||||
province: undefined,
|
||||
sex:undefined,
|
||||
weight: undefined,
|
||||
provinceName: undefined,
|
||||
cityName:undefined,
|
||||
districtName:undefined
|
||||
}
|
||||
function click(item,list)
|
||||
{
|
||||
if(item=='出生日期')
|
||||
{
|
||||
showdate.value=true
|
||||
}
|
||||
else if(item=='所患疾病')
|
||||
{
|
||||
showdis.value=true
|
||||
}
|
||||
else if(item=='地区')
|
||||
{
|
||||
showearea.value=true
|
||||
setitle.value=item
|
||||
}
|
||||
else if(item=='职业')
|
||||
{
|
||||
showcareer.value=true
|
||||
setitle.value=item
|
||||
|
||||
}
|
||||
else if(item=='受教育水平')
|
||||
{
|
||||
showe.value=true
|
||||
setitle.value=item
|
||||
}
|
||||
else
|
||||
{
|
||||
show.value=true
|
||||
setitle.value=item
|
||||
columns.value= [];
|
||||
columns.value.push(...list)
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
const sexs = ref([
|
||||
{ text: '男', value: 1 },
|
||||
{ text: '女', value: 2 },
|
||||
|
||||
]);
|
||||
|
||||
const career = ref([]);
|
||||
const education = ref([]);
|
||||
|
||||
const confirm = ({ selectedValue, selectedOptions }) => {
|
||||
// console.log('confirm',selectedValue)
|
||||
// console.log('confirm',selectedOptions)
|
||||
console.log('selectedValue',selectedValue)
|
||||
console.log('selectedOptions',selectedOptions)
|
||||
show.value=false
|
||||
showearea.value=false
|
||||
if(setitle.value=='性别')
|
||||
{
|
||||
inputValuesex.value=selectedOptions.map((val) => val.text).join(',')
|
||||
sex.value=inputValuesex.value=='男'?1:2
|
||||
|
||||
}
|
||||
else if(setitle.value=='地区')
|
||||
{
|
||||
inputValuearea.value=selectedOptions.map((val) => val.label).join('/')
|
||||
|
||||
province.value=selectedOptions[0].code
|
||||
city.value=selectedOptions[1].code
|
||||
district.value=selectedOptions[2].code
|
||||
provinceName.value=selectedOptions[0].label
|
||||
cityName.value=selectedOptions[1].label
|
||||
districtName.value=selectedOptions[2].label
|
||||
|
||||
}
|
||||
else if(setitle.value=='职业')
|
||||
{
|
||||
// inputValuecareer.value=selectedOptions.map((val) => val.text).join('/')
|
||||
inputValuecareer.value=selectedOptions[0].name
|
||||
occupation.value=selectedOptions[0].id
|
||||
showcareer.value=false
|
||||
|
||||
}
|
||||
else if(setitle.value=='受教育水平')
|
||||
{
|
||||
inputValueeducation.value=selectedValue[0]
|
||||
showe.value=false
|
||||
educational.value=selectedOptions.map((val) => val.id).join('')
|
||||
}
|
||||
console.log(selectedOptions.map((val) => val.text).join(','));
|
||||
};
|
||||
const minDate = new Date(1900, 0, 1);
|
||||
const maxDate = new Date();
|
||||
const currentDate = new Date();
|
||||
const popupConfirm = ({ selectedValue, selectedOptions }) => {
|
||||
inputValuedate.value = selectedValue[0]+'-'+selectedValue[1]+'-'+selectedValue[2]
|
||||
// inputValuedate.value = selectedOptions.map((val) => val.text).join('');
|
||||
showdate.value = false;
|
||||
};
|
||||
const list = ref([]);
|
||||
let listor = [];
|
||||
function changeBox(itemToChange)
|
||||
{
|
||||
|
||||
// 这是我们的回调函数,它查找等于itemToChange的元素,并将其替换为'new value'
|
||||
list.value.map(item => {
|
||||
if (item.name == itemToChange.name) {
|
||||
if( item.value==1)
|
||||
{
|
||||
if(selnum.value>0)
|
||||
{
|
||||
selnum.value=selnum.value-1
|
||||
}
|
||||
else
|
||||
{
|
||||
selnum.value=0
|
||||
}
|
||||
// selnum>0?selnum--:selnum=0
|
||||
item.value=0
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
if(selnum.value>=3)
|
||||
{
|
||||
showToast.text('最多选择3项', {
|
||||
duration:1000
|
||||
});
|
||||
return
|
||||
}
|
||||
selnum.value= selnum.value+1
|
||||
item.value=1
|
||||
}
|
||||
// ?:;
|
||||
// return
|
||||
}
|
||||
else {
|
||||
// return item;
|
||||
}
|
||||
});
|
||||
let filteredList = list.value.filter(item => item.value > 0);
|
||||
diseasetmp.value=filteredList.map((val) => val.id)
|
||||
inputValuedisease.value=filteredList.map((val) => val.name).join('|')
|
||||
|
||||
console.log("diseasetmp",diseasetmp)
|
||||
}
|
||||
|
||||
function changeNo()
|
||||
{
|
||||
showdis.value=false
|
||||
inputValuedisease.value=inputValuediseaseor
|
||||
diseasetmp.value=[]
|
||||
|
||||
diseasetmp.value=JSON.parse(JSON.stringify(diseasetor))
|
||||
|
||||
|
||||
list.value=[]
|
||||
list.value=JSON.parse(JSON.stringify(listor))
|
||||
|
||||
|
||||
|
||||
|
||||
let filteredList = list.value.filter(item => item.value > 0);
|
||||
selnum.value=filteredList.length
|
||||
console.log("diseasetmp111",listor)
|
||||
}
|
||||
onMounted(() => {
|
||||
initData()
|
||||
WXSHAREHOME("个人信息", '肝胆相照-肝胆病在线公共服务平台',roootUrl + localStorage.getItem("officeid") + '&appid=' +localStorage.getItem("appid")+fromwexin,"");
|
||||
})
|
||||
function initData()
|
||||
{
|
||||
|
||||
userInfo().then((data) => {
|
||||
console.log("userInfo", data);
|
||||
if(data.data.name==null||data.data.name=='')
|
||||
{
|
||||
inputValuename.value=data.data.nickname
|
||||
}
|
||||
else
|
||||
{
|
||||
inputValuename.value=data.data.name
|
||||
}
|
||||
|
||||
if(data.data.sex==1)
|
||||
{
|
||||
inputValuesex.value='男'
|
||||
}
|
||||
else if(data.data.sex==2)
|
||||
{
|
||||
inputValuesex.value='女'
|
||||
}
|
||||
else
|
||||
{
|
||||
inputValuesex.value=''
|
||||
}
|
||||
sex.value=data.data.sex
|
||||
province.value=data.data.province
|
||||
city.value=data.data.city
|
||||
district.value=data.data.district
|
||||
provinceName.value=data.data.provinceName
|
||||
cityName.value=data.data.cityName
|
||||
districtName.value=data.data.districtName
|
||||
if(provinceName.value!=null&&provinceName.value!='')
|
||||
{
|
||||
inputValuearea.value=provinceName.value+'/'+cityName.value+'/'+ districtName.value
|
||||
}
|
||||
inputValuedate.value=data.data.birthday
|
||||
inputValueheight.value=data.data.height
|
||||
inputValueweight.value=data.data.weight
|
||||
inputValuecareer.value=data.data.occupation
|
||||
occupation.value=data.data.occupation
|
||||
inputValueeducation.value=data.data.educational
|
||||
educational.value=data.data.educational
|
||||
inputValuephone.value=data.data.mobile
|
||||
diseasetor=data.data.disease.map((val) => val.id)
|
||||
inputValuediseaseor=data.data.disease.map((val) => val.name).join('|')
|
||||
diseasetmp.value=data.data.disease.map((val) => val.id)
|
||||
inputValuedisease.value=data.data.disease.map((val) => val.name).join('|')
|
||||
diseaseList().then((data) => {
|
||||
list.value.push(...data.data)
|
||||
list.value = list.value.map((item) => {
|
||||
return{
|
||||
...item,
|
||||
value:0,
|
||||
}
|
||||
})
|
||||
list.value.map(item => {
|
||||
|
||||
if (inputValuedisease.value.includes(item.name)) {
|
||||
|
||||
item.value=1
|
||||
}
|
||||
else {
|
||||
item.value=0
|
||||
}
|
||||
});
|
||||
listor.push(...data.data)
|
||||
listor = listor.map((item) => {
|
||||
return{
|
||||
...item,
|
||||
value:0,
|
||||
}
|
||||
})
|
||||
listor.map(item => {
|
||||
|
||||
if (inputValuediseaseor.includes(item.name)) {
|
||||
|
||||
item.value=1
|
||||
}
|
||||
else {
|
||||
item.value=0
|
||||
}
|
||||
});
|
||||
educationalList().then((data) => {
|
||||
console.log("educationalList", data);
|
||||
education.value.push(...data.data)
|
||||
inputValueeducation.value= education.value.filter((val) => val.id==inputValueeducation.value)[0].name
|
||||
})
|
||||
})
|
||||
|
||||
positionList().then((data) => {
|
||||
console.log("positionList", data);
|
||||
career.value.push(...data.data)
|
||||
inputValuecareer.value= career.value.filter((val) => val.id==inputValuecareer.value)[0].name
|
||||
})
|
||||
});
|
||||
|
||||
|
||||
|
||||
}
|
||||
function Update()
|
||||
{
|
||||
if(sex.value == "null" || sex.value == null){
|
||||
delete formData.sex
|
||||
}else{
|
||||
formData.sex = sex.value
|
||||
}
|
||||
if(inputValuedate.value == "null" || inputValuedate.value == null){
|
||||
delete formData.birthday
|
||||
}else{
|
||||
formData.birthday = inputValuedate.value
|
||||
}
|
||||
if(city.value == "null" || city.value == null){
|
||||
delete formData.city
|
||||
delete formData.cityName
|
||||
}else{
|
||||
formData.city = city.value
|
||||
formData.cityName = cityName.value
|
||||
}
|
||||
if(diseasetmp.value == "null" || diseasetmp.value == null|| diseasetmp.value == []|| diseasetmp.value.length <1){
|
||||
delete formData.disease
|
||||
}else{
|
||||
formData.disease = diseasetmp.value
|
||||
// formData.disease = []
|
||||
}
|
||||
if(district.value == "null" || district.value == null){
|
||||
delete formData.district
|
||||
delete formData.districtName
|
||||
}else{
|
||||
formData.district = district.value
|
||||
formData.districtName = districtName.value
|
||||
}
|
||||
if(educational.value == "null" || educational.value == null){
|
||||
delete formData.educational
|
||||
}else{
|
||||
formData.educational = educational.value
|
||||
}
|
||||
if(inputValueheight.value == "null" || inputValueheight.value == null){
|
||||
delete formData.height
|
||||
}else{
|
||||
formData.height = inputValueheight.value
|
||||
}
|
||||
if(inputValuephone.value == "null" || inputValuephone.value == null){
|
||||
delete formData.mobile
|
||||
}else{
|
||||
formData.mobile = inputValuephone.value
|
||||
}
|
||||
if(inputValuename.value == "null" || inputValuename.value == null){
|
||||
delete formData.name
|
||||
}else{
|
||||
formData.name = inputValuename.value
|
||||
}
|
||||
if(inputValuecareer.value == "null" || inputValuecareer.value == null){
|
||||
delete formData.occupation
|
||||
}else{
|
||||
formData.occupation = occupation.value
|
||||
}
|
||||
if(province.value == "null" || province.value == null){
|
||||
delete formData.province
|
||||
delete formData.provinceName
|
||||
}else{
|
||||
formData.province = province.value
|
||||
formData.provinceName = provinceName.value
|
||||
}
|
||||
if(inputValueweight.value == "null" || inputValueweight.value == null){
|
||||
delete formData.weight
|
||||
}else{
|
||||
formData.weight = inputValueweight.value
|
||||
}
|
||||
// userUpdate(inputValuedate.value,city.value,diseasetmp.value,district.value,
|
||||
// educational.value,inputValueheight.value,inputValuephone.value,inputValuename.value,
|
||||
// inputValuecareer.value,province.value,sex.value,inputValueweight.value)
|
||||
userUpdate(formData)
|
||||
.then((data) => {
|
||||
console.log("userUpdate", data);
|
||||
|
||||
if(data.code==200)
|
||||
{
|
||||
showToast.text('提交成功');
|
||||
window.history.back();
|
||||
}
|
||||
else
|
||||
{
|
||||
showToast.text(data.msg);
|
||||
}
|
||||
|
||||
})
|
||||
}
|
||||
</script>
|
||||
<style scoped>
|
||||
.tip{
|
||||
margin-top: 16px;
|
||||
font-size: var(--font-size-12);
|
||||
font-family: AlibabaPuHuiTiR;
|
||||
color: #D48806;
|
||||
line-height: 38px;
|
||||
height: 38px;
|
||||
background: #FFFBE6;
|
||||
text-align: center;
|
||||
}
|
||||
.wdiv{
|
||||
margin-left: 16px;
|
||||
margin-right: 16px;
|
||||
margin-top: 12px;
|
||||
|
||||
background: #FFFFFF;
|
||||
box-shadow: 0px 4px 12px 0px rgba(171,209,239,0.1);
|
||||
border-radius: 8px;
|
||||
}
|
||||
.subbutton
|
||||
{
|
||||
margin: auto;
|
||||
width: 279px;
|
||||
height: 42px;
|
||||
background: #3BB5FE;
|
||||
border-radius: 22px;
|
||||
font-size: var(--font-size-16);
|
||||
font-family: AlibabaPuHuiTiR;
|
||||
color: #FFFFFF;
|
||||
line-height: 42px;
|
||||
margin-top: 42px;
|
||||
text-align: center;
|
||||
|
||||
}
|
||||
.item{
|
||||
display: flex;
|
||||
padding-left: 16px;
|
||||
padding-right: 16px;
|
||||
align-items: center;
|
||||
font-size: var(--font-size-16);
|
||||
font-family: AlibabaPuHuiTiR;
|
||||
color: rgba(0,0,0,0.65);
|
||||
height: 54px;
|
||||
|
||||
}
|
||||
.itemn{
|
||||
display: flex;
|
||||
padding-left: 16px;
|
||||
padding-right: 16px;
|
||||
align-items: center;
|
||||
font-size: var(--font-size-16);
|
||||
font-family: AlibabaPuHuiTiR;
|
||||
color: rgba(0,0,0,0.65);
|
||||
height: 54px;
|
||||
|
||||
/* min-height: 54px; */
|
||||
|
||||
}
|
||||
.itm1{
|
||||
width: 90px;
|
||||
line-height: 54px;
|
||||
|
||||
/* flex-grow: 0; */
|
||||
}
|
||||
.dimg{
|
||||
width: 16px;
|
||||
height: 16px;
|
||||
|
||||
/* flex-grow: 0; */
|
||||
}
|
||||
.dright{
|
||||
|
||||
width: calc(100% - 106px);
|
||||
|
||||
/* align-items: center; */
|
||||
/* display:flex ;
|
||||
align-items: center;
|
||||
justify-content:space-between ; */
|
||||
/* flex-grow: 1 ; */
|
||||
}
|
||||
|
||||
|
||||
.nut-divider{
|
||||
--nut-divider-margin:0px;
|
||||
--nut-divider-text-color:#0000000A;
|
||||
margin-left: 16px;
|
||||
margin-right: 16px;
|
||||
width:calc(100% - 32px) ;
|
||||
}
|
||||
input {
|
||||
/* flex-grow: 1 ; */
|
||||
margin-left: 5px;
|
||||
margin-right: 15px;
|
||||
font-size: var(--front-size-16);
|
||||
background: transparent;
|
||||
border: none;
|
||||
-webkit-box-shadow: none;
|
||||
box-shadow: none;
|
||||
outline: none;
|
||||
height: 46px;
|
||||
width: calc(100% - 16px) ;
|
||||
vertical-align: middle;
|
||||
|
||||
font-family: AlibabaPuHuiTiR;
|
||||
color: rgba(0,0,0,0.65);
|
||||
|
||||
}
|
||||
|
||||
input:focus {
|
||||
font-size: var(--front-size-16);
|
||||
/* flex-grow: 1 ; */
|
||||
margin-left: 5px;
|
||||
margin-right: 15px;
|
||||
border: none;
|
||||
width: 100% ;
|
||||
height: 46px;
|
||||
width: calc(100% - 16px) ;
|
||||
vertical-align: middle;
|
||||
font-family: AlibabaPuHuiTiR;
|
||||
color: rgba(0,0,0,0.65);
|
||||
box-shadow: none;
|
||||
}
|
||||
img{
|
||||
width: 16px;
|
||||
height: 16px;
|
||||
}
|
||||
.tpicker{
|
||||
--nut-picker-ok-color:#3BB5FEFF;
|
||||
--nut-picker-bar-title-font-size: var(--font-size-18);
|
||||
font-family: AlibabaPuHuiTiR;
|
||||
--nut-picker-bar-ok-font-size: var(--font-size-18);
|
||||
--nut-picker-bar-cancel-font-size:var(--font-size-18);
|
||||
--nut-picker-item-text-font-size:var(--font-size-16);
|
||||
/* --nut-popup-border-radius:8px; */
|
||||
}
|
||||
:deep() .nut-popup{
|
||||
--nut-popup-border-radius:8px;
|
||||
|
||||
|
||||
}
|
||||
.nut-picker__bar{
|
||||
display: flex;
|
||||
height: 46px;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
}
|
||||
.nut-picker__left1{
|
||||
padding: var(--nut-picker-bar-button-padding, 0 15px);
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
/* min-width: 50px; */
|
||||
height: 100%;
|
||||
font-size: var(--font-size-18);
|
||||
font-family: AlibabaPuHuiTiR;
|
||||
color: rgba(0,0,0,0.45);
|
||||
|
||||
}
|
||||
.nut-picker__title {
|
||||
flex: 1;
|
||||
width: 100%;
|
||||
text-align: center;
|
||||
font-family: AlibabaPuHuiTiR;
|
||||
color: var(--nut-picker-bar-title-color, var(--nut-title-color, #1a1a1a));
|
||||
font-size: var(--font-size-18);
|
||||
|
||||
}
|
||||
.nut-picker__right1{
|
||||
padding: var(--nut-picker-bar-button-padding, 0 15px);
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
/* min-width: 50px; */
|
||||
height: 100%;
|
||||
font-size: var(--font-size-18);
|
||||
font-family: AlibabaPuHuiTiR;
|
||||
color: #3BB5FEFF;
|
||||
|
||||
}
|
||||
.checkbox{
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
margin: 16px;
|
||||
font-size: var(--font-size-16);
|
||||
font-family: AlibabaPuHuiTiR;
|
||||
color: rgba(0,0,0,0.85);
|
||||
|
||||
}
|
||||
.divtlist{
|
||||
-webkit-overflow-scrolling:touch;
|
||||
|
||||
position: absolute;
|
||||
width: 100%;
|
||||
z-index: 1;
|
||||
height: 100%;
|
||||
overflow-y: scroll;
|
||||
}
|
||||
.t-list{
|
||||
padding-bottom: 40px;
|
||||
}
|
||||
</style>
|
||||
61
src/views/private-records.vue
Normal file
@ -0,0 +1,61 @@
|
||||
<template>
|
||||
<div class="listcontain">
|
||||
<headBar :title=title></headBar>
|
||||
<div class="listcon">
|
||||
<paperList :url=url :emptyimg=emptyimg :emptytxt=emptytxt :needTop="false" parameter=""></paperList>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</template>
|
||||
<script setup>
|
||||
import historyb from '../assets/historyb.png'
|
||||
import readb from '../assets/readb.png'
|
||||
import collectb from '../assets/collectb.png'
|
||||
import { useRoute } from 'vue-router';
|
||||
import {WXSHAREHOME} from '../utils/wxshare-1.6.0';
|
||||
import {fromwexin,roootUrl} from '../utils/api.js'
|
||||
const title = ref('')
|
||||
const emptyimg = ref('')
|
||||
const emptytxt = ref('')
|
||||
const router = useRoute();
|
||||
const url=ref('')
|
||||
onMounted(() => {
|
||||
title.value = router.query.type;
|
||||
if( title.value=='浏览记录')
|
||||
{
|
||||
emptytxt.value='暂无浏览记录'
|
||||
emptyimg.value=historyb
|
||||
url.value='/article/queryClickArticle'
|
||||
}
|
||||
else if( title.value=='我的收藏')
|
||||
{
|
||||
emptytxt.value='您还未添加收藏'
|
||||
emptyimg.value=collectb
|
||||
url.value='/article/queryColectArticle'
|
||||
}
|
||||
else if( title.value=='确认已读')
|
||||
{
|
||||
emptytxt.value='暂无已读'
|
||||
emptyimg.value=readb
|
||||
url.value='/article/queryReadArticle'
|
||||
}
|
||||
});
|
||||
|
||||
WXSHAREHOME( title.value, '肝胆相照-肝胆病在线公共服务平台', roootUrl + localStorage.getItem("officeid") + '&appid=' +localStorage.getItem("appid")+fromwexin,"");
|
||||
</script>
|
||||
<style scoped>
|
||||
.listcontain{
|
||||
display: flex;
|
||||
height: 100vh;
|
||||
flex-direction: column;
|
||||
}
|
||||
.listcon{
|
||||
flex: 1;
|
||||
overflow-y: scroll;
|
||||
-webkit-overflow-scrolling: touch;
|
||||
}
|
||||
.t-pull-down-refresh {
|
||||
overflow: hidden;
|
||||
height: auto;
|
||||
}
|
||||
</style>
|
||||
240
src/views/questionnaire.vue
Normal file
@ -0,0 +1,240 @@
|
||||
<template>
|
||||
<div class="listcontain">
|
||||
|
||||
<headBar :title=title ></headBar>
|
||||
<div class="listcon">
|
||||
<t-pull-down-refresh v-model="refreshing" @refresh="onRefresh" :loading-bar-height="36"
|
||||
:loading-texts="['下拉刷新', '松开刷新', '正在刷新', '刷新完成']" :loading-props="{ theme: 'dots' }">
|
||||
|
||||
<t-list @scroll="onScroll" :async-loading="loading" v-if="list.length>0">
|
||||
<div v-for="(item, $index) in list" @click="clickArticle(item)">
|
||||
|
||||
<div :style="{background:`url(${imgurl+item.img})`,height:'136px',marginLeft:'16px',marginRight:'16px',marginTop:'16px',
|
||||
'border-radius':'8px','background-size':'100% 100%','background-repeat':'no-repeat','justify-content': 'space-between' ,display:'flex' }">
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
<div style="display: flex;margin-left:16px;margin-right:16px;margin-top: 8px;">
|
||||
<div class="title">
|
||||
<nut-ellipsis
|
||||
:content=item.title
|
||||
rows="2"
|
||||
direction="end"
|
||||
></nut-ellipsis>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<template #footer>
|
||||
<div class="end" v-if="evisible">— END —</div>
|
||||
</template>
|
||||
</t-list>
|
||||
<nut-empty v-else>
|
||||
<template #image>
|
||||
<nut-image :src=sempty fit="cover"/>
|
||||
|
||||
</template>
|
||||
<template #description>
|
||||
<div style="font-size: var(--front-size-16);font-family: AlibabaPuHuiTiR;color: rgba(0,0,0,0.65);line-height: 22px;margin-top: 16px;">暂无数据</div>
|
||||
</template>
|
||||
</nut-empty>
|
||||
</t-pull-down-refresh>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
<script setup>
|
||||
import sempty from '../assets/sempty.png'
|
||||
import {imgurl,questionnaire,fromwexin,roootUrl} from '../utils/api.js'
|
||||
import {WXSHAREHOME} from '../utils/wxshare-1.6.0';
|
||||
const evisible = ref(false);
|
||||
const page = ref(1);
|
||||
const totalPage = ref(1)
|
||||
const title=ref('调查问卷')
|
||||
const refreshing=ref(false);
|
||||
const list = ref([ ])
|
||||
const loading = ref('');
|
||||
onMounted(()=>{
|
||||
|
||||
onLoad(page.value);
|
||||
WXSHAREHOME("调查问卷", '肝胆相照-肝胆病在线公共服务平台',roootUrl + localStorage.getItem("officeid") + '&appid=' +localStorage.getItem("appid")+fromwexin,"");
|
||||
})
|
||||
|
||||
const onLoad = (page) => {
|
||||
|
||||
if (page > totalPage.value) {
|
||||
refreshing.value=false;
|
||||
return
|
||||
}
|
||||
if(page == 1||!evisible.value)
|
||||
{
|
||||
loading.value = 'loading';
|
||||
questionnaire(page).then((data) => {
|
||||
console.log("questionnaire", data);
|
||||
refreshing.value=false;
|
||||
loading.value = '';
|
||||
if (page == 1) {
|
||||
list.value = [];
|
||||
list.value.push(...data.data.list)
|
||||
|
||||
}
|
||||
else {
|
||||
list.value.push(...data.data.list)
|
||||
}
|
||||
|
||||
totalPage.value = data.data.pages ;
|
||||
|
||||
if (page >= totalPage.value) {
|
||||
evisible.value=true;
|
||||
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
};
|
||||
const onRefresh = () => {
|
||||
console.log('onRefresh');
|
||||
page.value = 1;
|
||||
totalPage.value= 1;
|
||||
evisible.value = false;
|
||||
refreshing.value=true;
|
||||
onLoad(page.value);
|
||||
};
|
||||
const onScroll = (scrollBottom) => {
|
||||
|
||||
if (scrollBottom < 100) {
|
||||
page.value=page.value+1;
|
||||
onLoad(page.value);
|
||||
}
|
||||
};
|
||||
function clickArticle(item)
|
||||
{
|
||||
console.log("item",item);
|
||||
window.location.href =item.content
|
||||
|
||||
|
||||
}
|
||||
</script>
|
||||
<style scoped>
|
||||
.listcontain{
|
||||
display: flex;
|
||||
height: 100vh;
|
||||
flex-direction: column;
|
||||
}
|
||||
.listcon{
|
||||
flex: 1;
|
||||
overflow-y: scroll;
|
||||
-webkit-overflow-scrolling: touch;
|
||||
}
|
||||
.t-pull-down-refresh {
|
||||
overflow: hidden;
|
||||
height: auto;
|
||||
}
|
||||
.stickytop{
|
||||
width: 50px;
|
||||
height: 30px;
|
||||
background: linear-gradient(32deg, #FFA39E 0%, #FE4E4F 100%);
|
||||
border-radius: 8px 0px 8px 0px;
|
||||
font-size: var(--front-size-12);
|
||||
font-family: AlibabaPuHuiTiR;
|
||||
color: #FFFFFF;
|
||||
line-height: 30px;
|
||||
text-align: center;
|
||||
}
|
||||
.stickybottom{
|
||||
margin-top: 106px;
|
||||
width: 50px;
|
||||
height: 30px;
|
||||
background: rgba(0,0,0,0.65);
|
||||
border-radius: 8px 0px 8px 0px;
|
||||
font-size: var(--front-size-12);
|
||||
font-family: AlibabaPuHuiTiR;
|
||||
color: #FFFFFF;
|
||||
line-height: 30px;
|
||||
text-align: center;
|
||||
|
||||
}
|
||||
.type{
|
||||
font-size:var(--font-size-11);
|
||||
font-family: DingTalk-JinBuTi, DingTalk;
|
||||
font-weight: normal;
|
||||
color: #FFFFFF;
|
||||
line-height: 20px;
|
||||
text-align: center;
|
||||
|
||||
text-shadow: 0px 2px 3px #2DB27F;
|
||||
width: 38px;
|
||||
height: 20px;
|
||||
background: linear-gradient(33deg, #4ECF9D 0%, #81EEC6 100%);
|
||||
border-radius: 2px;
|
||||
}
|
||||
.type1{
|
||||
font-size:var(--font-size-11);
|
||||
font-family: DingTalk-JinBuTi, DingTalk;
|
||||
font-weight: normal;
|
||||
color: #FFFFFF;
|
||||
line-height: 20px;
|
||||
text-align: center;
|
||||
|
||||
text-shadow: 0px 2px 3px #299BDF;
|
||||
width: 38px;
|
||||
height: 20px;
|
||||
background: linear-gradient(197deg, #A6D9FF 0%, #3BB5FE 100%);
|
||||
border-radius: 2px;
|
||||
}
|
||||
.type2{
|
||||
font-size: var(--font-size-11);
|
||||
font-family: DingTalk-JinBuTi, DingTalk;
|
||||
font-weight: normal;
|
||||
color: #FFFFFF;
|
||||
line-height: 20px;
|
||||
text-align: center;
|
||||
|
||||
text-shadow: 0px 2px 3px #7963F1;
|
||||
width: 38px;
|
||||
height: 20px;
|
||||
background: linear-gradient(196deg, #C4B9FF 0%, #9784FF 100%);
|
||||
border-radius: 2px;
|
||||
}
|
||||
.end {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
margin-top: 21px;
|
||||
font-size:16px;
|
||||
/* font-size: var(--font-size-14); */
|
||||
font-family: AlibabaPuHuiTiR;
|
||||
color: rgba(0,0,0,0.24);
|
||||
line-height: 24px;
|
||||
}
|
||||
.title{
|
||||
padding-left: 4px;
|
||||
font-size: 16px;
|
||||
/* font-size: var(--font-size-14); */
|
||||
font-family: AlibabaPuHuiTiM;
|
||||
color: #000000d9;
|
||||
line-height: 24px;
|
||||
flex: 1;
|
||||
}
|
||||
.types{
|
||||
margin-top: 6px;
|
||||
margin-right: 6px;
|
||||
font-size:var(--font-size-12);
|
||||
font-family: AlibabaPuHuiTiR;
|
||||
color: #38A7FE;
|
||||
line-height: 16px;
|
||||
background: #ECF6FF;
|
||||
border-radius: 12px;
|
||||
padding: 4px 8px 4px 8px;
|
||||
}
|
||||
.nut-empty{
|
||||
margin-top: var(--empty-top);
|
||||
--nut-empty-padding:0px;
|
||||
|
||||
}
|
||||
:deep().nut-empty__box {
|
||||
width: 246px;
|
||||
height: 159px;
|
||||
}
|
||||
</style>
|
||||
233
src/views/searchthings.vue
Normal file
@ -0,0 +1,233 @@
|
||||
<template>
|
||||
<headBar :title=titlet></headBar>
|
||||
<div class="dsearch">
|
||||
<div class="divsearch">
|
||||
<IconFont size="20" :name=search :style="{ 'padding-top': '12px', 'padding-left': '12px' }"></IconFont>
|
||||
<input placeholder="输入医生姓名" type="text" v-model="inputValue">
|
||||
<IconFont size="16" :name=deletes :style="{ 'padding-top': '12px', 'padding-left': '12px' }" @click="clearSearch"></IconFont>
|
||||
</div>
|
||||
<div style="font-size: var(--front-size-14);font-family: AlibabaPuHuiTiR;color: rgba(0,0,0,0.65);line-height: 40px;text-align: center;margin-left: 12px;" @click="onRefresh">搜索</div>
|
||||
</div>
|
||||
<div style="height: 12px;background: #F6F7FB;margin-top: 16px;"></div>
|
||||
|
||||
<t-pull-down-refresh v-model="refreshing" @refresh="onRefresh" :loading-bar-height="36"
|
||||
:loading-texts="['下拉刷新', '松开刷新', '正在刷新', '刷新完成']" :loading-props="{ theme: 'dots' }">
|
||||
<t-list @scroll="onScroll" :async-loading="loading" v-if="list.length>0">
|
||||
|
||||
<div v-for="(item, $index) in list">
|
||||
<div class="listbox" @click="gotoDoctor(item)">
|
||||
<nut-image :src=imgurl+item.photo alt="图片描述" fit="cover"
|
||||
width="90" height='90' round radius="50"
|
||||
style="margin-left: 16px;"/>
|
||||
<div style="width: 241px;margin-left: 12px; display: block;">
|
||||
<div style="font-size: var(--font-size-16);
|
||||
font-family: AlibabaPuHuiTiM;
|
||||
color: rgba(0,0,0,0.85);
|
||||
line-height: 22px;">
|
||||
{{ item.name }}
|
||||
</div>
|
||||
<div class="personinfo">
|
||||
{{ '职务: '+item.duties }}
|
||||
</div>
|
||||
<div class="personinfo">
|
||||
{{ '职称: '+item.position }}
|
||||
</div>
|
||||
<div class="personinfo">
|
||||
<nut-ellipsis
|
||||
:content=zhuanchang+item.goodat
|
||||
direction="end"
|
||||
rows="2"
|
||||
></nut-ellipsis>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<template #footer>
|
||||
<div class="end" v-if="evisible">— END —</div>
|
||||
</template>
|
||||
</t-list>
|
||||
<nut-empty v-else>
|
||||
<template #image>
|
||||
<nut-image :src=sempty fit="cover"/>
|
||||
</template>
|
||||
<template #description>
|
||||
<div style="font-size: var(--front-size-16);font-family: AlibabaPuHuiTiR;color: rgba(0,0,0,0.65);line-height: 22px;margin-top: 16px;">暂无数据</div>
|
||||
</template>
|
||||
</nut-empty>
|
||||
</t-pull-down-refresh>
|
||||
</template>
|
||||
<script setup>
|
||||
import {medicalStaffqueryPage,imgurl,fromwexin,roootUrl} from '../utils/api.js'
|
||||
import sempty from '../assets/sempty.png'
|
||||
import { IconFont } from '@nutui/icons-vue';
|
||||
import search from '../assets/searchb.png'
|
||||
import deletes from '../assets/deletes.png'
|
||||
import { useRouter } from 'vue-router';
|
||||
import {WXSHAREHOME} from '../utils/wxshare-1.6.0';
|
||||
const titlet=ref('搜索列表')
|
||||
const inputValue=ref('');
|
||||
const router = useRouter();
|
||||
const evisible = ref(false);
|
||||
const loading = ref('');
|
||||
const page = ref(1);
|
||||
const totalPage = ref(1)
|
||||
const refreshing=ref(false);
|
||||
const zhuanchang=ref('专长: ')
|
||||
onMounted(() => {
|
||||
onLoad(page.value);
|
||||
WXSHAREHOME("搜索列表", '肝胆相照-肝胆病在线公共服务平台',roootUrl + localStorage.getItem("officeid") + '&appid=' +localStorage.getItem("appid")+fromwexin,"");
|
||||
});
|
||||
function clearSearch()
|
||||
{
|
||||
inputValue.value=''
|
||||
}
|
||||
|
||||
const list = ref([]);
|
||||
const onLoad = (page) => {
|
||||
|
||||
if (page > totalPage.value) {
|
||||
refreshing.value=false;
|
||||
return
|
||||
}
|
||||
if(page == 1||!evisible.value)
|
||||
{
|
||||
loading.value = 'loading';
|
||||
medicalStaffqueryPage(page, inputValue.value).then((data) => {
|
||||
console.log("medicalStaffqueryPage", data);
|
||||
refreshing.value=false;
|
||||
loading.value = '';
|
||||
if (page == 1) {
|
||||
list.value = [];
|
||||
list.value.push(...data.data.list)
|
||||
|
||||
}
|
||||
else {
|
||||
list.value.push(...data.data.list)
|
||||
}
|
||||
|
||||
totalPage.value = data.data.pages ;
|
||||
|
||||
if (page >= totalPage.value) {
|
||||
evisible.value=true;
|
||||
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
};
|
||||
const onRefresh = () => {
|
||||
evisible.value = false;
|
||||
page.value = 1;
|
||||
totalPage.value= 1;
|
||||
refreshing.value=true;
|
||||
onLoad(page.value);
|
||||
};
|
||||
const onScroll = (scrollBottom) => {
|
||||
|
||||
if (scrollBottom < 100) {
|
||||
page.value=page.value+1;
|
||||
onLoad(page.value);
|
||||
}
|
||||
};
|
||||
function gotoDoctor(item)
|
||||
{
|
||||
router.push({ path: '/doctor-info',query:{id:item.id}});
|
||||
}
|
||||
</script>
|
||||
<style scoped>
|
||||
.headnav {
|
||||
--td-navbar-height: 41px;
|
||||
--td-navbar-left-arrow-size: 22px;
|
||||
--nut-navbar-background: transparent;
|
||||
--td-navbar-title-font-size:var(--font-size-title);
|
||||
|
||||
}
|
||||
.dsearch{
|
||||
display: flex;
|
||||
height: 40px;
|
||||
margin-top: 16px;
|
||||
margin-left: 16px;
|
||||
margin-right: 16px;
|
||||
justify-content: space-between;
|
||||
}
|
||||
.divsearch {
|
||||
display: flex;
|
||||
height: 40px;
|
||||
flex: 1;
|
||||
background: #FFFFFF;
|
||||
border-radius: 21px;
|
||||
border: 2px solid rgba(0,0,0,0.06);
|
||||
backdrop-filter: blur(25px);
|
||||
|
||||
}
|
||||
.ss{
|
||||
display: flex;
|
||||
margin-right: 16px;
|
||||
margin-left: 16px;
|
||||
margin-bottom: 16px;
|
||||
height: 40px;
|
||||
align-items: center;
|
||||
background: #FFFFFF;
|
||||
border-radius: 21px;
|
||||
border: 2px solid rgba(0,0,0,0.06);
|
||||
font-size: var(--front-size-14);
|
||||
font-family: PingFangSC-Regular, PingFang SC;
|
||||
font-weight: 400;
|
||||
font-family: AlibabaPuHuiTiM;
|
||||
color: rgba(0,0,0,0.85);
|
||||
line-height: 22px;
|
||||
text-shadow: 0px 2px 4px #E0F2FF;
|
||||
|
||||
}
|
||||
.dicon{
|
||||
margin-left: 16px;
|
||||
|
||||
}
|
||||
input {
|
||||
width: 70%;
|
||||
margin-left: 5px;
|
||||
font-size: var(--front-size-14);
|
||||
background: transparent;
|
||||
border: none;
|
||||
-webkit-box-shadow: none;
|
||||
box-shadow: none;
|
||||
outline: none;
|
||||
font-family: AlibabaPuHuiTiM;
|
||||
color: rgba(0,0,0,0.85);
|
||||
/* color: red; */
|
||||
}
|
||||
|
||||
input:focus {
|
||||
font-size: var(--front-size-14);
|
||||
width: 70%;
|
||||
margin-left: 5px;
|
||||
border: none;
|
||||
font-family: AlibabaPuHuiTiM;
|
||||
color: rgba(0,0,0,0.85);
|
||||
box-shadow: none;
|
||||
}
|
||||
.personinfo{
|
||||
font-size: var(--font-size-12);
|
||||
font-family: AlibabaPuHuiTiR;
|
||||
color: rgba(0,0,0,0.65);
|
||||
line-height: 20px;
|
||||
}
|
||||
.listbox{
|
||||
|
||||
display: flex;
|
||||
padding-top: 16px;
|
||||
|
||||
|
||||
}
|
||||
.end {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
margin-top: 21px;
|
||||
font-size: var(--font-size-14);
|
||||
font-family: AlibabaPuHuiTiR;
|
||||
color: rgba(0,0,0,0.24);
|
||||
line-height: 24px;
|
||||
}
|
||||
</style>
|
||||
188
src/views/searchview.vue
Normal file
@ -0,0 +1,188 @@
|
||||
<template>
|
||||
<div class="contentbox">
|
||||
<headBar :title=title></headBar>
|
||||
<div class="dsearch">
|
||||
<div class="divsearch">
|
||||
<IconFont size="20" :name=search :style="{ 'padding-top': '12px', 'padding-left': '12px' }"></IconFont>
|
||||
<input placeholder="请输入文章标题/疾病/关键词…" type="text" v-model="inputValue">
|
||||
<IconFont size="16" :name=deletes :style="{ 'padding-top': '12px', 'padding-left': '12px' }" @click="clearSearch"></IconFont>
|
||||
</div>
|
||||
<div style="font-size: var(--front-size-14);font-family: AlibabaPuHuiTiR;color: rgba(0,0,0,0.65);line-height: 40px;text-align: center;margin-left: 12px;" @click="gotosearch">搜索</div>
|
||||
</div>
|
||||
<t-tabs :value="currentValue" @change="onChange" >
|
||||
<t-tab-panel value="first">
|
||||
<template #label>
|
||||
<div>图文</div>
|
||||
</template>
|
||||
</t-tab-panel>
|
||||
<t-tab-panel value="second">
|
||||
<template #label>音频</template>
|
||||
</t-tab-panel>
|
||||
<t-tab-panel value="third">
|
||||
<template #label>视频</template>
|
||||
</t-tab-panel>
|
||||
</t-tabs>
|
||||
<div style="background: var(--back-color-02);width:100vw;" class="listcon">
|
||||
<paperList :url=url :parameter=[ceecId,input,mediaType]></paperList>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
<script setup>
|
||||
import {fromwexin,roootUrl} from '../utils/api.js'
|
||||
import {WXSHAREHOME} from '../utils/wxshare-1.6.0';
|
||||
import { IconFont } from '@nutui/icons-vue';
|
||||
import paperList from '../components/paperList.vue'
|
||||
import search from '../assets/searchb.png'
|
||||
import deletes from '../assets/deletes.png'
|
||||
import { useRoute } from 'vue-router';
|
||||
const title=ref('搜索列表')
|
||||
const inputValue=ref('');
|
||||
const input=ref('');
|
||||
const currentValue = ref('first');
|
||||
const router = useRoute();
|
||||
const from=ref('')
|
||||
const ceecId=ref(0)
|
||||
const url=ref('')
|
||||
const mediaType=ref(1)
|
||||
|
||||
onMounted(() => {
|
||||
from.value=router.query.from;
|
||||
ceecId.value==router.query.ceecId;
|
||||
// from.value=JSON.parse(history.state.data).from;
|
||||
// ceecId.value=JSON.parse(history.state.data).ceecId;
|
||||
|
||||
if(from.value =='edu-center')
|
||||
{
|
||||
url.value='/ceecArticleList';
|
||||
|
||||
}else if(from.value =='department')
|
||||
{
|
||||
url.value='/deparsArticleList';
|
||||
}
|
||||
WXSHAREHOME("搜索列表", '肝胆相照-肝胆病在线公共服务平台',roootUrl + localStorage.getItem("officeid") + '&appid=' +localStorage.getItem("appid")+fromwexin,"");
|
||||
});
|
||||
function clearSearch()
|
||||
{
|
||||
inputValue.value=''
|
||||
}
|
||||
|
||||
const onChange = (label) => {
|
||||
currentValue.value=label
|
||||
if(label=='first')
|
||||
{
|
||||
mediaType.value=1
|
||||
}
|
||||
else if(label=='second')
|
||||
{
|
||||
mediaType.value=2
|
||||
}
|
||||
else
|
||||
{
|
||||
mediaType.value=3
|
||||
}
|
||||
|
||||
};
|
||||
function gotosearch()
|
||||
{
|
||||
input.value=inputValue.value
|
||||
}
|
||||
|
||||
</script>
|
||||
<style scoped>
|
||||
.listcon{
|
||||
flex: 1;
|
||||
overflow-y: scroll;
|
||||
-webkit-overflow-scrolling: touch;
|
||||
}
|
||||
.contentbox{
|
||||
height:100vh;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
}
|
||||
.headnav {
|
||||
--td-navbar-height: 41px;
|
||||
--td-navbar-left-arrow-size: 22px;
|
||||
--nut-navbar-background: transparent;
|
||||
--td-navbar-title-font-size:var(--font-size-title);
|
||||
|
||||
}
|
||||
.dsearch{
|
||||
display: flex;
|
||||
height: 40px;
|
||||
margin-top: 16px;
|
||||
margin-left: 16px;
|
||||
margin-right: 16px;
|
||||
justify-content: space-between;
|
||||
}
|
||||
.divsearch {
|
||||
display: flex;
|
||||
height: 40px;
|
||||
flex: 1;
|
||||
background: #FFFFFF;
|
||||
border-radius: 21px;
|
||||
border: 2px solid rgba(0,0,0,0.06);
|
||||
backdrop-filter: blur(25px);
|
||||
|
||||
}
|
||||
.ss{
|
||||
display: flex;
|
||||
margin-right: 16px;
|
||||
margin-left: 16px;
|
||||
margin-bottom: 16px;
|
||||
height: 40px;
|
||||
align-items: center;
|
||||
background: #FFFFFF;
|
||||
border-radius: 21px;
|
||||
border: 2px solid rgba(0,0,0,0.06);
|
||||
font-size: var(--front-size-14);
|
||||
font-family: PingFangSC-Regular, PingFang SC;
|
||||
font-weight: 400;
|
||||
font-family: AlibabaPuHuiTiM;
|
||||
color: rgba(0,0,0,0.85);
|
||||
line-height: 22px;
|
||||
text-shadow: 0px 2px 4px #E0F2FF;
|
||||
|
||||
}
|
||||
.dicon{
|
||||
margin-left: 16px;
|
||||
|
||||
}
|
||||
input {
|
||||
width: 70%;
|
||||
margin-left: 5px;
|
||||
font-size: var(--front-size-14);
|
||||
background: transparent;
|
||||
border: none;
|
||||
-webkit-box-shadow: none;
|
||||
box-shadow: none;
|
||||
outline: none;
|
||||
font-family: AlibabaPuHuiTiM;
|
||||
color: rgba(0,0,0,0.85);
|
||||
/* color: red; */
|
||||
}
|
||||
|
||||
input:focus {
|
||||
font-size: var(--front-size-14);
|
||||
width: 70%;
|
||||
margin-left: 5px;
|
||||
border: none;
|
||||
font-family: AlibabaPuHuiTiM;
|
||||
color: rgba(0,0,0,0.85);
|
||||
box-shadow: none;
|
||||
}
|
||||
.t-tabs{
|
||||
margin-top: 12px;
|
||||
font-size: var(--font-size-14);
|
||||
font-family: AlibabaPuHuiTiR;
|
||||
--td-tab-track-color: #3BB5FEFF;
|
||||
--td-tab-nav-bg-color:transparent;
|
||||
background: #FFFFFF;
|
||||
--td-tab-item-active-color: #3BB5FEFF;
|
||||
--td-tab-item-color:rgba(0,0,0,0.65);
|
||||
--td-tab-border-color:transparent;
|
||||
--td-tab-item-height:38px;
|
||||
}
|
||||
:deep().t-tabs__nav{
|
||||
width: 188px;
|
||||
}
|
||||
</style>
|
||||