CaseHandling.vue 34 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252
  1. <template>
  2. <!-- 个案处置 -->
  3. <div class="risk_profile_container">
  4. <!-- 1.==================== -->
  5. <HeaderBoxContent :typeList="typeList" :headerObj="headerObj"></HeaderBoxContent>
  6. <!-- 2.============================== -->
  7. <div class="risk_profile_info">
  8. <div class="risk_profile_info_top">
  9. <div v-for="item in infoList" :key="item.lable" class="risk_profile_info_top_item">
  10. <div class="risk_profile_info_top_name">
  11. <div class="risk_profile_info_top_name_lable">
  12. <img :src="getImgSrc(item.icon)" alt="" />
  13. <span>{{ item.lable }}</span>
  14. </div>
  15. <div class="risk_profile_info_top_name_value">{{ item.value }}</div>
  16. </div>
  17. <div class="line" v-if="item.icon !== '4'"></div>
  18. </div>
  19. </div>
  20. <div class="risk_profile_info_bottom">
  21. <div class="risk_profile_info_bottom_name">
  22. <img src="@/assets/img/risk_info_icon-5.png" alt="" />
  23. <span class="text">处置单位</span>
  24. </div>
  25. <div class="risk_profile_info_bottom-content">
  26. <div class="text">
  27. 牵头单位
  28. <span class="text1">上海市疾控中心</span>
  29. </div>
  30. <div class="text">
  31. 配合单位
  32. <span class="text1">长宁区疾控中心、静安区疾控中心</span>
  33. </div>
  34. </div>
  35. </div>
  36. </div>
  37. <!-- 3.风险概括====================== -->
  38. <div class="risk_summary">
  39. <TowLevelTitle :title="'风险概括'"></TowLevelTitle>
  40. <div class="risk_summary_content">
  41. <div class="risk_bg risk_bg_color">
  42. <div class="risk_bg_info">
  43. <div class="risk_bg_info_item">
  44. <img src="@/assets/img/risk_info_icon-6.png" alt="" />
  45. <span>病种/信息</span>
  46. <div>不明原因肺炎</div>
  47. </div>
  48. <div class="risk_bg_info_item">
  49. <img src="@/assets/img/risk_info_icon-7.png" alt="" />
  50. <span>发生地区</span>
  51. <div>长宁区</div>
  52. </div>
  53. </div>
  54. <div class="risk_bg_info">
  55. <div class="risk_bg_info_item">
  56. <img src="@/assets/img/risk_info_icon-8.png" alt="" />
  57. <span>街道</span>
  58. <div>华阳路街道</div>
  59. </div>
  60. <div class="risk_bg_info_item">
  61. <img src="@/assets/img/risk_info_icon-9.png" alt="" />
  62. <span>地址</span>
  63. <div>武夷路528号</div>
  64. </div>
  65. </div>
  66. </div>
  67. <div class="risk_bg2 risk_bg_color">
  68. <div v-for="item in infoList2" :key="item.lable" class="risk_bg2_item">
  69. <div class="risk_bg2_name">
  70. <div class="risk_bg2_label">
  71. <img :src="getImgSrc(item.icon)" alt="" />
  72. <span>{{ item.lable }}</span>
  73. </div>
  74. <div class="risk_bg2_name_value">{{ item.value }}</div>
  75. </div>
  76. <div class="line" v-if="item.icon !== '12'"></div>
  77. </div>
  78. </div>
  79. </div>
  80. </div>
  81. <!-- 4.个案基本情况 -->
  82. <div class="basic_information">
  83. <div class="basic_information_header">
  84. <TowLevelTitle :title="'个案基本情况'" :buttons="timeButtons"></TowLevelTitle>
  85. <div class="basic_information_code">
  86. 个案编号
  87. <span>05-2024-1210-01-不明原因肺炎-01</span>
  88. </div>
  89. </div>
  90. <div class="basic_information_info">
  91. <div calss="basic_information_info_name">
  92. <div>
  93. <span>姓名</span>
  94. <div>张嘉佳</div>
  95. </div>
  96. <div>
  97. <span>性别</span>
  98. <div>男</div>
  99. </div>
  100. <div>
  101. <span>年龄</span>
  102. <div>16</div>
  103. </div>
  104. <div>
  105. <span>国籍</span>
  106. <div>中国</div>
  107. </div>
  108. <div>
  109. <span>职业</span>
  110. <div>学生</div>
  111. </div>
  112. </div>
  113. <div calss="basic_information_info_unit">
  114. <div>
  115. <span>现住地</span>
  116. <div>华阳街道</div>
  117. </div>
  118. <div>
  119. <span>单位</span>
  120. <div>上海开元学校</div>
  121. </div>
  122. </div>
  123. </div>
  124. </div>
  125. <!-- 发病就诊 -->
  126. <div class="y_box">
  127. <div class="fbjz_box">
  128. <div class="fbjz_box_header">
  129. <TowLevelTitle :title="'发病就诊'"></TowLevelTitle>
  130. <div class="fbjz_box_code">
  131. 发病日期
  132. <span>2024-10-08</span>
  133. </div>
  134. </div>
  135. <div class="risk_bg_color fbjz_box_body">
  136. <div v-for="item in fbjzData" class="fbjz_item">
  137. <img :src="getFbjzImgSrc(item.icon)" alt="" />
  138. <div>
  139. <span>{{ item.lable }}</span>
  140. <div>{{ item.name }}</div>
  141. </div>
  142. </div>
  143. </div>
  144. </div>
  145. <div class="hz_box">
  146. <TowLevelTitle :title="'会诊'"></TowLevelTitle>
  147. <div class="risk_bg_color hz_box_body">
  148. <div v-for="item in hzData" class="hz_item">
  149. <img :src="getHzImgSrc(item.icon)" alt="" />
  150. <div>
  151. <span>{{ item.lable }}</span>
  152. <div>{{ item.name }}</div>
  153. </div>
  154. </div>
  155. </div>
  156. </div>
  157. </div>
  158. <!-- 5.核心流调 -->
  159. <div class="core_flow_adjustment">
  160. <div class="core_flow_adjustment_header">
  161. <TowLevelTitle :title="'核心流调'"></TowLevelTitle>
  162. <div class="core_flow_adjustment_tag">
  163. <div class="tag investigated">
  164. 已流调:
  165. <span>2</span>
  166. </div>
  167. <!-- <div class="tag pending">
  168. 待流调:
  169. <span>2</span>
  170. </div> -->
  171. <div class="tag suspicious">
  172. 可疑感染来源:
  173. <span>2</span>
  174. </div>
  175. <div class="tag local">
  176. 本地感染:
  177. <span>2</span>
  178. </div>
  179. </div>
  180. </div>
  181. <div class="risk_bg_color core_flow_adjustment_body">
  182. <div v-for="(item, index) in flowData" :key="item.lable" class="risk_profile_info_top_item">
  183. <div class="risk_profile_info_top_name">
  184. <div class="risk_profile_info_top_name_lable">
  185. <span>{{ item.lable }}</span>
  186. </div>
  187. <div class="risk_profile_info_top_name_list">
  188. <div class="risk_profile_info_top_name_value" v-for="v in item.list">{{ v.value }}</div>
  189. </div>
  190. </div>
  191. <div class="line" v-if="index !== 2"></div>
  192. </div>
  193. </div>
  194. </div>
  195. <!-- 6.风险人员 风险场所 -->
  196. <div class="risk_box">
  197. <div class="risk_personnel">
  198. <fxryTowLevelTitle
  199. :title="'风险人员'"
  200. class="risk_personnel_bg"
  201. :openDialog="true"
  202. :buttons="riskPersonnelButtons"
  203. @twoBtnClick="fxryTwoBtnClick"
  204. @openDialog="openDialogHandle"
  205. ></fxryTowLevelTitle>
  206. <div class="risk_bg_color risk_personnel_body">
  207. <div v-for="(item, index) in riskPersonnelData" :key="item.lable" class="risk_personnel_item">
  208. <div class="risk_profile_info_top_name">
  209. <span>{{ item.lable }}</span>
  210. <div>{{ item.value }}</div>
  211. </div>
  212. </div>
  213. </div>
  214. </div>
  215. <div class="risk_location">
  216. <div class="risk_personnel_header">
  217. <TowLevelTitle :title="'风险场所'" :openDialog="true" @openDialog="openLocationDialogHandle"></TowLevelTitle>
  218. <div class="risk_personnel_tag">
  219. <span>4</span>
  220. </div>
  221. </div>
  222. <div class="risk_bg_color risk_location_body">
  223. <div>
  224. <span>上海市开元学校</span>
  225. <div>长宁区</div>
  226. </div>
  227. <!-- <div v-for="(item, index) in riskLocationData" :key="item.lable" class="risk_location_item">
  228. <div class="risk_location_name">
  229. <span>{{ item.lable }}</span>
  230. <div>{{ item.value }}</div>
  231. </div>
  232. <div class="risk_location_line" v-if="index !== 1"></div>
  233. </div> -->
  234. </div>
  235. </div>
  236. <div class="activity_trajectory">
  237. <div class="activity_trajectory_header">
  238. <TowLevelTitle :title="'活动轨迹'" :openDialog="true" @openDialog="openActivityDialogHandle"></TowLevelTitle>
  239. <div class="activity_trajectory_tag">
  240. <span>13</span>
  241. </div>
  242. </div>
  243. <div class="risk_bg_color activity_trajectory_body">
  244. <div>
  245. <span>2024-10-01 12:00</span>
  246. <div>长宁区武夷路528号</div>
  247. </div>
  248. </div>
  249. </div>
  250. </div>
  251. <!-- 7.检测情况 -->
  252. <div class="test_situation">
  253. <TowLevelTitle :title="'检测情况'" :buttons="testBottons" :openDialog="true" @openDialog="openTestResDialogHandle"></TowLevelTitle>
  254. <div class="risk_bg_color test_situation_body">
  255. <div v-for="(item, index) in testData" :key="item.lable" class="test_situation_item">
  256. <div class="test_situation_name">
  257. <span>{{ item.lable }}</span>
  258. <div>{{ item.value }}</div>
  259. </div>
  260. <div class="test_situation_line" v-if="index !== 4"></div>
  261. </div>
  262. </div>
  263. </div>
  264. <!-- 风险人员 弹窗 -->
  265. <RiskPersonnelDialog v-if="dialogStore.riskPersonnelDialogOpen"></RiskPersonnelDialog>
  266. <!-- 风险场所 弹窗 -->
  267. <RiskLocationDialog v-if="dialogStore.riskLocationDialogOpen"></RiskLocationDialog>
  268. <!-- 活动轨迹 弹窗 -->
  269. <ActivityTrajectoryDialog v-if="dialogStore.riskActivityDialogOpen"></ActivityTrajectoryDialog>
  270. <!-- 检测结果 弹窗 -->
  271. <DetectionResultDialog v-if="dialogStore.riskTestResDialogOpen"></DetectionResultDialog>
  272. </div>
  273. </template>
  274. <script setup>
  275. import RiskPersonnelDialog from './dialog/RiskPersonnelDialog'
  276. import RiskLocationDialog from './dialog/RiskLocationDialog'
  277. import ActivityTrajectoryDialog from './dialog/ActivityTrajectoryDialog'
  278. import DetectionResultDialog from './dialog/DetectionResultDialog'
  279. import HeaderBoxContent from './common/HeaderBoxContent'
  280. import * as echarts from 'echarts'
  281. import { ref, watch, computed, reactive, toRefs, onBeforeMount, onMounted } from 'vue'
  282. import TowLevelTitle from '@/components/TowLevelTitle/index.vue'
  283. import fxryTowLevelTitle from '@/components/TowLevelTitle/fxryTowLevelTitle'
  284. import { useDialogStore } from '@/store/dialog'
  285. let dialogStore = useDialogStore()
  286. import { useRightPanelStore } from "@/store/rightPanel";
  287. const rightPanelStore = useRightPanelStore();
  288. console.log(dialogStore, 'dialogStore')
  289. const headerObj = ref({
  290. tabTitle: '个案处置',
  291. level: 'B',
  292. title: '05-2024-1210-01-不明原因肺炎',
  293. typeList: ['风险个案', '突发公共卫生事件(II级)']
  294. })
  295. const typeList = ref(['风险个案', '突发公共卫生事件(II级)'])
  296. const infoList = ref([
  297. { lable: '报告时间', value: '2024-10-01 12:12', icon: '1' },
  298. { lable: '报告单位', value: '长宁区疾控中心', icon: '2' },
  299. { lable: '信息来源', value: '上海市瑞金医院', icon: '3' },
  300. { lable: '状态', value: '处置中', icon: '4' }
  301. ])
  302. function getImgSrc(picName) {
  303. return new URL(`../../../../assets/img/risk_info_icon-${picName}.png`, import.meta.url).href
  304. }
  305. const infoList2 = ref([
  306. { lable: '病例数', value: 3, icon: '10' },
  307. { lable: '重症数', value: 0, icon: '11' },
  308. { lable: '死亡数', value: 0, icon: '12' }
  309. ])
  310. const timeButtons = ref([{ id: 1, name: '流调报告', active: false }])
  311. //4.发病就诊
  312. const fbjzData = ref([
  313. { lable: '当前就诊医院', name: '上海市瑞金医院', icon: 'fbjz_1' },
  314. { lable: '主要临床症状', name: '发热;咳嗽', icon: 'fbjz_2' },
  315. { lable: '医院检测结果', name: '新冠阴性;甲流阴性', icon: 'fbjz_3' },
  316. { lable: '当前临床诊断', name: '社区获得性肺炎', icon: 'fbjz_4' }
  317. ])
  318. const hzData = ref([
  319. { lable: '院内会诊', name: '不明原因肺炎', icon: 'hz_1' },
  320. { lable: '区级会诊', name: '待会诊', icon: 'hz_2' },
  321. { lable: '市级会诊', name: '待会诊', icon: 'hz_3' }
  322. ])
  323. function getFbjzImgSrc(picName) {
  324. return new URL(`../../../../assets/img/${picName}.png`, import.meta.url).href
  325. }
  326. function getHzImgSrc(picName) {
  327. return new URL(`../../../../assets/img/${picName}.png`, import.meta.url).href
  328. }
  329. // 5.核心流调
  330. const flowData = ref([
  331. { lable: '外出外来史', list: [{ value: '(2024-07-12接触病例张三)' }] },
  332. { lable: '疑似病例接触史', value: 0, list: [{ value: '(2024-07-12从美国回来)' }] },
  333. { lable: '可疑动物接触史', value: 0, list: [{ value: '(2024-07-12接触家禽)' }] }
  334. ])
  335. // 风险人员
  336. const riskPersonnelButtons = ref([
  337. { id: 1, name: '密接', active: false },
  338. { id: 2, name: '共同暴露者', active: false },
  339. { id: 3, name: '其他', active: false }
  340. ])
  341. const open = ref(false)
  342. function fxryTwoBtnClick(item) {
  343. console.log(item, 'item')
  344. }
  345. function openDialogHandle () {
  346. rightPanelStore.handleCloseAllVisible()
  347. dialogStore.closeAllDialog()
  348. dialogStore.setRiskPersonnelDialogOpen(true)
  349. }
  350. function openLocationDialogHandle() {
  351. dialogStore.closeAllDialog()
  352. dialogStore.setRiskLocationDialogOpen(true)
  353. }
  354. function openActivityDialogHandle () {
  355. rightPanelStore.handleCloseAllVisible()
  356. dialogStore.closeAllDialog()
  357. dialogStore.setRiskActivityDialogOpen(true)
  358. }
  359. function openTestResDialogHandle () {
  360. rightPanelStore.handleCloseAllVisible()
  361. dialogStore.closeAllDialog()
  362. dialogStore.setRiskTestResDialogOpen(true)
  363. }
  364. const riskPersonnelData = ref([
  365. { lable: '判定数', value: 10 },
  366. { lable: '管理中', value: 5 },
  367. { lable: '待管理', value: 4 },
  368. { lable: '已解除', value: 1 }
  369. ])
  370. const riskLocationData = ref([
  371. { lable: '场所数', value: 2 },
  372. { lable: '已完成消杀', value: 2 }
  373. ])
  374. // 检测情况
  375. const testBottons = ref([
  376. { id: 1, name: '全部', active: true },
  377. { id: 2, name: '病例', active: false },
  378. { id: 2, name: '密接', active: false },
  379. { id: 2, name: '共同暴露者', active: false },
  380. { id: 2, name: '其他风险人员', active: false },
  381. { id: 2, name: '其他', active: false }
  382. ])
  383. const testData = ref([
  384. { lable: '采样数', value: 7 },
  385. { lable: '检测数', value: 7 },
  386. { lable: '阳性数', value: 2 },
  387. { lable: '阴性数', value: 5 },
  388. { lable: '检测中', value: 0 }
  389. ])
  390. // 在组件挂载后初始化 ECharts
  391. onMounted(() => {})
  392. </script>
  393. <style lang="scss" scoped>
  394. * {
  395. box-sizing: border-box;
  396. }
  397. .risk_profile_container {
  398. position: absolute;
  399. top: 42px;
  400. left: 0px;
  401. width: 700px;
  402. height: 892px;
  403. padding: 10px 12px;
  404. box-sizing: border-box;
  405. background: linear-gradient(180deg, #244d86 2%, #0a121e 100%);
  406. box-shadow: 0px 4px 6px 0px rgba(0, 0, 0, 0.5);
  407. border: 1px solid;
  408. border-image: linear-gradient(180deg, rgba(0, 150, 255, 1), rgba(7, 108, 208, 1)) 1 1;
  409. .risk_profile_header {
  410. width: 100%;
  411. height: 50px;
  412. display: flex;
  413. align-items: center;
  414. justify-content: space-between;
  415. margin-bottom: 10px;
  416. .risk_profile_title {
  417. display: flex;
  418. align-items: center;
  419. gap: 20px;
  420. > img {
  421. width: 40px;
  422. height: 37px;
  423. }
  424. .risk_profile_name {
  425. // width: 352px;
  426. font-family: Alibaba PuHuiTi 3, Alibaba PuHuiTi 30;
  427. font-weight: normal;
  428. font-size: 24px;
  429. color: #e2ffff;
  430. line-height: 24px;
  431. text-shadow: 0px 4px 4px rgba(0, 0, 0, 0.25);
  432. text-align: left;
  433. font-style: normal;
  434. text-transform: none;
  435. /* 金属光泽渐变效果 */
  436. background: linear-gradient(to top, #49ffff 4%, #ffffff 100%);
  437. -webkit-background-clip: text;
  438. /* 文字应用渐变 */
  439. background-clip: text;
  440. /* 使文字透明,背景渐变会应用到文字 */
  441. color: transparent;
  442. /* 光泽效果:文本阴影 */
  443. text-shadow: 2px 2px 5px rgba(255, 255, 255, 0.4), -2px -2px 5px rgba(0, 0, 0, 0.4);
  444. /* 给文字加一些柔和的过渡效果 */
  445. transition: all 0.3s ease;
  446. font-style: italic;
  447. transform: skewX(-5deg);
  448. }
  449. .risk_profile_type_box {
  450. display: flex;
  451. flex-direction: column;
  452. gap: 6px;
  453. .risk_profile_type {
  454. height: 24px;
  455. width: 158px;
  456. background: url(待核实.png) no-repeat;
  457. background-size: 100% 100%;
  458. font-family: Alibaba PuHuiTi 3, Alibaba PuHuiTi 30;
  459. font-weight: normal;
  460. font-size: 14px;
  461. color: #ffd15c;
  462. line-height: 24px;
  463. text-shadow: 0px 4px 4px rgba(0, 0, 0, 0.25);
  464. text-align: center;
  465. font-style: normal;
  466. text-transform: none;
  467. }
  468. }
  469. }
  470. .risk_profile_change_btn {
  471. width: 64px;
  472. height: 50px;
  473. background: url(../../../../assets/img/changeRisk.png) no-repeat;
  474. background-size: 100% 100%;
  475. }
  476. }
  477. .risk_profile_info {
  478. width: 100%;
  479. display: flex;
  480. flex-direction: column;
  481. .risk_profile_info_top {
  482. width: 100%;
  483. height: 40px;
  484. display: flex;
  485. .risk_profile_info_top_item {
  486. display: flex;
  487. align-items: center;
  488. .risk_profile_info_top_name {
  489. font-family: Alibaba PuHuiTi 3, Alibaba PuHuiTi 30;
  490. font-weight: normal;
  491. font-size: 16px;
  492. color: rgba(255, 255, 255, 0.7);
  493. text-align: left;
  494. font-style: normal;
  495. text-transform: none;
  496. .risk_profile_info_top_name_lable {
  497. display: flex;
  498. align-items: center;
  499. > img {
  500. width: 18px;
  501. height: 18px;
  502. margin-right: 4px;
  503. }
  504. }
  505. .risk_profile_info_top_name_value {
  506. font-family: Alibaba PuHuiTi 3, Alibaba PuHuiTi 30;
  507. font-weight: normal;
  508. font-size: 16px;
  509. color: #04fafe;
  510. text-shadow: 0px 4px 4px rgba(0, 0, 0, 0.25);
  511. font-style: normal;
  512. text-transform: none;
  513. }
  514. }
  515. .line {
  516. height: 24px;
  517. width: 2px;
  518. background: #88eaff;
  519. background: linear-gradient(0deg, rgba(34, 73, 127, 0) 0%, rgba(136, 234, 255, 0.6) 50%, rgba(34, 73, 127, 0) 100%);
  520. margin: 0 16px;
  521. }
  522. }
  523. }
  524. .risk_profile_info_bottom {
  525. margin: 8px 0;
  526. .risk_profile_info_bottom_name {
  527. display: flex;
  528. align-items: center;
  529. margin-bottom: 3px;
  530. > img {
  531. width: 18px;
  532. height: 18px;
  533. margin-right: 4px;
  534. }
  535. }
  536. .risk_profile_info_bottom-content {
  537. display: flex;
  538. align-items: center;
  539. justify-content: space-between;
  540. }
  541. }
  542. }
  543. .risk_summary {
  544. width: 100%;
  545. height: 100px;
  546. margin-bottom: 12px;
  547. .risk_summary_content {
  548. display: flex;
  549. // flex-direction: column;
  550. justify-content: space-between;
  551. gap: 10px;
  552. height: 64px;
  553. margin-top: 6px;
  554. .risk_bg {
  555. padding: 8px;
  556. box-sizing: border-box;
  557. width: 360px;
  558. display: flex;
  559. flex-direction: column;
  560. justify-content: space-between;
  561. .risk_bg_info {
  562. box-sizing: border-box;
  563. display: flex;
  564. align-items: center;
  565. justify-content: space-between;
  566. font-family: Alibaba PuHuiTi 3, Alibaba PuHuiTi 30;
  567. font-weight: normal;
  568. font-size: 16px;
  569. color: #ffffff;
  570. font-style: normal;
  571. text-transform: none;
  572. .risk_bg_info_item {
  573. display: flex;
  574. align-items: center;
  575. > img {
  576. width: 18px;
  577. height: 18px;
  578. }
  579. > span {
  580. // margin: 0 4px 0 8px;
  581. margin: 0 4px;
  582. box-sizing: border-box;
  583. font-family: Alibaba PuHuiTi 3, Alibaba PuHuiTi 30;
  584. font-weight: normal;
  585. font-size: 16px;
  586. color: rgba(255, 255, 255, 0.7);
  587. text-align: left;
  588. font-style: normal;
  589. text-transform: none;
  590. }
  591. }
  592. }
  593. }
  594. .risk_bg_color {
  595. background: rgba(0, 170, 255, 0.08);
  596. border-radius: 0px 0px 0px 0px;
  597. }
  598. .risk_bg2 {
  599. padding: 8px;
  600. box-sizing: border-box;
  601. // width: 263px;
  602. flex: 1;
  603. height: 64px;
  604. display: flex;
  605. align-items: center;
  606. .risk_bg2_item {
  607. display: flex;
  608. align-items: center;
  609. .risk_bg2_name {
  610. display: flex;
  611. flex-direction: column;
  612. align-items: center;
  613. font-family: Alibaba PuHuiTi 3, Alibaba PuHuiTi 30;
  614. font-weight: normal;
  615. font-size: 16px;
  616. color: rgba(255, 255, 255, 0.7);
  617. text-align: left;
  618. font-style: normal;
  619. text-transform: none;
  620. > img {
  621. width: 18px;
  622. height: 18px;
  623. }
  624. .risk_bg2_label {
  625. display: flex;
  626. align-items: center;
  627. }
  628. }
  629. .risk_bg2_name_value {
  630. font-family: Alibaba PuHuiTi 3, Alibaba PuHuiTi 30;
  631. font-weight: normal;
  632. font-size: 16px;
  633. color: #04fafe;
  634. text-shadow: 0px 4px 4px rgba(0, 0, 0, 0.25);
  635. font-style: normal;
  636. text-transform: none;
  637. }
  638. }
  639. }
  640. }
  641. }
  642. .core_flow_adjustment {
  643. box-sizing: border-box;
  644. margin-top: 12px;
  645. .core_flow_adjustment_header {
  646. position: relative;
  647. .core_flow_adjustment_tag {
  648. display: flex;
  649. align-items: center;
  650. position: absolute;
  651. right: 0px;
  652. top: 0px;
  653. // color: #fff;
  654. }
  655. }
  656. .core_flow_adjustment_body {
  657. // width: 645px;
  658. width: 100%;
  659. height: 60px;
  660. display: flex;
  661. align-items: center;
  662. margin-top: 6px;
  663. .risk_profile_info_top_item {
  664. display: flex;
  665. align-items: center;
  666. .risk_profile_info_top_name {
  667. padding-top: 8px;
  668. box-sizing: border-box;
  669. display: flex;
  670. flex-direction: column;
  671. align-items: center;
  672. font-family: Alibaba PuHuiTi 3, Alibaba PuHuiTi 30;
  673. font-weight: normal;
  674. font-size: 13px;
  675. color: #697c91;
  676. text-align: center;
  677. font-style: normal;
  678. text-transform: none;
  679. .risk_profile_info_top_name_lable {
  680. width: 203px;
  681. height: 18px;
  682. font-family: Alibaba PuHuiTi 3, Alibaba PuHuiTi 30;
  683. font-weight: normal;
  684. font-size: 16px;
  685. text-align: center;
  686. font-style: normal;
  687. text-transform: none;
  688. background: linear-gradient(to top, #43bcdb 0%, #ffffff 100%);
  689. /* 金属光泽渐变效果 */
  690. // background: linear-gradient(to top, #49ffff 4%, #e2ffff 100%);
  691. -webkit-background-clip: text;
  692. /* 文字应用渐变 */
  693. background-clip: text;
  694. /* 使文字透明,背景渐变会应用到文字 */
  695. // color: transparent;
  696. /* 光泽效果:文本阴影 */
  697. // text-shadow: 2px 2px 5px rgba(255, 255, 255, 0.4), -2px -2px 5px rgba(0, 0, 0, 0.4);
  698. /* 给文字加一些柔和的过渡效果 */
  699. transition: all 0.3s ease;
  700. }
  701. .risk_profile_info_top_name_list {
  702. height: 36px;
  703. width: 100%;
  704. .risk_profile_info_top_name_value {
  705. margin: 5px 0px;
  706. }
  707. }
  708. }
  709. }
  710. }
  711. }
  712. .risk_box {
  713. display: flex;
  714. justify-content: space-between;
  715. // gap: 12px;
  716. width: 100%;
  717. height: 100px;
  718. // margin: 10px 0;
  719. margin-top: 10px;
  720. margin-bottom: 10px;
  721. .risk_personnel {
  722. width: 315px;
  723. height: 100%;
  724. .risk_personnel_body {
  725. width: 315px;
  726. height: 63px;
  727. display: flex;
  728. align-items: center;
  729. margin: 6px auto 0px;
  730. .risk_personnel_item {
  731. display: flex;
  732. align-items: center;
  733. margin: 0 auto;
  734. .risk_profile_info_top_name {
  735. display: flex;
  736. flex-direction: column;
  737. align-items: center;
  738. gap: 10px;
  739. font-family: Alibaba PuHuiTi 3, Alibaba PuHuiTi 30;
  740. font-weight: normal;
  741. font-size: 14px;
  742. color: rgba(255, 255, 255, 0.8);
  743. line-height: 16px;
  744. font-style: normal;
  745. text-transform: none;
  746. > div {
  747. font-family: Roboto;
  748. font-weight: bold;
  749. font-size: 20px;
  750. color: #04fafe;
  751. }
  752. }
  753. .risk_personnel_line {
  754. height: 24px;
  755. width: 2px;
  756. background: #88eaff;
  757. background: linear-gradient(0deg, rgba(34, 73, 127, 0) 0%, rgba(136, 234, 255, 0.6) 50%, rgba(34, 73, 127, 0) 100%);
  758. // margin:0 10px;
  759. margin-left: 18px;
  760. }
  761. }
  762. }
  763. }
  764. .risk_location {
  765. width: 162px;
  766. height: 100%;
  767. .risk_personnel_header {
  768. position: relative;
  769. position: relative;
  770. .risk_personnel_tag {
  771. position: absolute;
  772. top: 3px;
  773. left: 96px;
  774. color: #04fafe;
  775. }
  776. }
  777. .risk_location_body {
  778. width: 162px;
  779. height: 63px;
  780. margin: 6px auto 0px;
  781. display: flex;
  782. align-items: center;
  783. font-family: Alibaba PuHuiTi 3, Alibaba PuHuiTi 30;
  784. font-weight: normal;
  785. font-size: 16px;
  786. color: #ffffff;
  787. text-align: left;
  788. font-style: normal;
  789. text-transform: none;
  790. }
  791. }
  792. .activity_trajectory {
  793. width: 162px;
  794. // // height: 100%;
  795. // height: 100px;
  796. .activity_trajectory_header {
  797. position: relative;
  798. .activity_trajectory_tag {
  799. position: absolute;
  800. top: 3px;
  801. left: 96px;
  802. color: #04fafe;
  803. }
  804. }
  805. .activity_trajectory_body {
  806. width: 100%;
  807. height: 63px;
  808. margin: 6px auto 0px;
  809. display: flex;
  810. align-items: center;
  811. font-family: Alibaba PuHuiTi 3, Alibaba PuHuiTi 30;
  812. font-weight: normal;
  813. font-size: 16px;
  814. color: #ffffff;
  815. text-align: left;
  816. font-style: normal;
  817. text-transform: none;
  818. }
  819. }
  820. }
  821. .test_situation {
  822. width: 100%;
  823. height: 100px;
  824. .test_situation_body {
  825. height: 63px;
  826. display: flex;
  827. align-items: center;
  828. margin: 6px auto 0px;
  829. .test_situation_item {
  830. display: flex;
  831. align-items: center;
  832. margin: 0 auto;
  833. .test_situation_name {
  834. display: flex;
  835. flex-direction: column;
  836. align-items: center;
  837. gap: 10px;
  838. font-family: Alibaba PuHuiTi 3, Alibaba PuHuiTi 30;
  839. font-weight: normal;
  840. font-size: 14px;
  841. color: rgba(255, 255, 255, 0.8);
  842. line-height: 16px;
  843. text-align: left;
  844. font-style: normal;
  845. text-transform: none;
  846. > div {
  847. font-family: Roboto;
  848. font-weight: bold;
  849. font-size: 20px;
  850. color: #04fafe;
  851. }
  852. }
  853. .test_situation_line {
  854. height: 24px;
  855. width: 2px;
  856. background: #88eaff;
  857. background: linear-gradient(0deg, rgba(34, 73, 127, 0) 0%, rgba(136, 234, 255, 0.6) 50%, rgba(34, 73, 127, 0) 100%);
  858. margin-left: 43px;
  859. }
  860. }
  861. }
  862. }
  863. }
  864. .risk_profile_container::after {
  865. position: absolute;
  866. content: '';
  867. left: 0%;
  868. right: 0%;
  869. bottom: 0;
  870. height: 3px;
  871. background-image: url('@/assets/img/image-bottom.png');
  872. background-size: 100% 50%;
  873. }
  874. .tag {
  875. font-size: 16px;
  876. padding: 0px 12px;
  877. box-sizing: border-box;
  878. // border-radius: 6px;
  879. font-weight: bold;
  880. width: fit-content;
  881. height: 24px;
  882. line-height: 24px;
  883. text-align: center;
  884. // p
  885. }
  886. /* 已流调 */
  887. .investigated {
  888. color: #50e0ff;
  889. background: linear-gradient(270deg, rgba(62, 174, 255, 0.1) 0%, rgba(27, 129, 203, 0.3) 51%, rgba(27, 129, 203, 0.1) 100%);
  890. }
  891. /* 待流调 */
  892. .pending {
  893. color: #ff9950;
  894. background: linear-gradient(270deg, rgba(255, 153, 80, 0.1) 0%, rgba(255, 153, 80, 0.3) 51%, rgba(255, 153, 80, 0.1) 100%);
  895. }
  896. /* 可疑感染来源 */
  897. .suspicious {
  898. color: #ffd43c;
  899. background: linear-gradient(270deg, rgba(62, 174, 255, 0.1) 0%, rgba(255, 218, 123, 0.3) 51%, rgba(255, 218, 123, 0.1) 100%);
  900. }
  901. /* 本地感染 */
  902. .local {
  903. color: #ffffff;
  904. }
  905. .text {
  906. font-family: Alibaba PuHuiTi 3, Alibaba PuHuiTi 30;
  907. font-weight: normal;
  908. font-size: 16px;
  909. color: rgba(255, 255, 255, 0.7);
  910. text-align: left;
  911. text-transform: none;
  912. }
  913. .text1 {
  914. font-family: Alibaba PuHuiTi 3, Alibaba PuHuiTi 30;
  915. font-weight: normal;
  916. font-size: 16px;
  917. color: #04fafe;
  918. text-shadow: 0px 4px 4px rgba(0, 0, 0, 0.25);
  919. font-style: normal;
  920. text-transform: none;
  921. }
  922. .risk_bg_color {
  923. background: rgba(0, 170, 255, 0.08);
  924. border-radius: 0px 0px 0px 0px;
  925. }
  926. .line {
  927. height: 24px;
  928. width: 2px;
  929. background: #88eaff;
  930. background: linear-gradient(0deg, rgba(34, 73, 127, 0) 0%, rgba(136, 234, 255, 0.6) 50%, rgba(34, 73, 127, 0) 100%);
  931. margin: 0 10px;
  932. }
  933. .basic_information {
  934. height: 102px;
  935. width: 100%;
  936. margin-bottom: 12px;
  937. .basic_information_header {
  938. width: 100%;
  939. height: 24px;
  940. position: relative;
  941. margin-bottom: 10px;
  942. .basic_information_code {
  943. position: absolute;
  944. top: 3px;
  945. right: 80px;
  946. font-family: Alibaba PuHuiTi 3, Alibaba PuHuiTi 30;
  947. font-weight: normal;
  948. font-size: 16px;
  949. color: #ffffff;
  950. text-shadow: 0px 4px 4px rgba(0, 0, 0, 0.25);
  951. text-align: left;
  952. font-style: normal;
  953. text-transform: none;
  954. > span {
  955. font-size: 16px;
  956. color: #04fafe;
  957. }
  958. }
  959. }
  960. .basic_information_info {
  961. width: 100%;
  962. height: 66px;
  963. background: rgba(0, 170, 255, 0.08);
  964. border-radius: 0px 0px 0px 0px;
  965. padding: 11px 0 11px 8px;
  966. box-sizing: border-box;
  967. display: flex;
  968. flex-direction: column;
  969. justify-content: space-between;
  970. > div {
  971. display: flex;
  972. align-items: center;
  973. gap: 60px;
  974. > div {
  975. display: flex;
  976. align-items: center;
  977. font-family: Alibaba PuHuiTi 3, Alibaba PuHuiTi 30;
  978. font-weight: normal;
  979. font-size: 16px;
  980. color: #ffffff;
  981. line-height: 18px;
  982. text-shadow: 0px 4px 4px rgba(0, 0, 0, 0.25);
  983. text-align: left;
  984. font-style: normal;
  985. text-transform: none;
  986. > span {
  987. margin-right: 16px;
  988. font-size: 16px;
  989. color: #b3becb;
  990. }
  991. }
  992. }
  993. // display: flex;
  994. // align-items: center;
  995. }
  996. }
  997. .y_box {
  998. width: 100%;
  999. height: 155px;
  1000. display: flex;
  1001. gap: 10px;
  1002. .fbjz_box {
  1003. width: 400px;
  1004. height: 100%;
  1005. .fbjz_box_header {
  1006. position: relative;
  1007. .fbjz_box_code {
  1008. position: absolute;
  1009. top: 3px;
  1010. right: 0px;
  1011. font-family: Alibaba PuHuiTi 3, Alibaba PuHuiTi 30;
  1012. font-weight: normal;
  1013. font-size: 16px;
  1014. color: #919cab;
  1015. line-height: 18px;
  1016. text-shadow: 0px 4px 4px rgba(0, 0, 0, 0.25);
  1017. text-align: left;
  1018. font-style: normal;
  1019. text-transform: none;
  1020. > span {
  1021. font-size: 16px;
  1022. color: #ffffff;
  1023. }
  1024. }
  1025. }
  1026. .fbjz_box_body {
  1027. display: flex;
  1028. flex-wrap: wrap;
  1029. width: 399px;
  1030. height: 120px;
  1031. padding: 7px 8px;
  1032. box-sizing: border-box;
  1033. margin-top: 6px;
  1034. .fbjz_item {
  1035. width: 50%;
  1036. display: flex;
  1037. font-family: Alibaba PuHuiTi 3, Alibaba PuHuiTi 30;
  1038. font-weight: normal;
  1039. font-size: 16px;
  1040. color: #ffffff;
  1041. text-shadow: 0px 4px 4px rgba(0, 0, 0, 0.25);
  1042. text-align: left;
  1043. font-style: normal;
  1044. text-transform: none;
  1045. > img {
  1046. width: 18px;
  1047. height: 18px;
  1048. margin-right: 4px;
  1049. }
  1050. > div {
  1051. > span {
  1052. color: #6c8097;
  1053. }
  1054. > div {
  1055. margin-top: 4px;
  1056. }
  1057. }
  1058. }
  1059. .fbjz_item:nth-child(1) {
  1060. border-right: 1px dashed #888888;
  1061. margin-bottom: 8px;
  1062. }
  1063. .fbjz_item:nth-child(2) {
  1064. padding-left: 17px;
  1065. box-sizing: border-box;
  1066. margin-bottom: 8px;
  1067. }
  1068. .fbjz_item:nth-child(3) {
  1069. border-right: 1px dashed #888888;
  1070. }
  1071. .fbjz_item:nth-child(4) {
  1072. padding-left: 17px;
  1073. box-sizing: border-box;
  1074. }
  1075. }
  1076. }
  1077. .hz_box {
  1078. flex: 1;
  1079. height: 120px;
  1080. // height: 100%;
  1081. .hz_box_body {
  1082. margin-top: 6px;
  1083. padding: 8px 8px;
  1084. box-sizing: border-box;
  1085. width: 100%;
  1086. height: 120px;
  1087. display: flex;
  1088. flex-direction: column;
  1089. justify-content: space-between;
  1090. .hz_item {
  1091. flex: 1;
  1092. display: flex;
  1093. align-items: center;
  1094. font-family: Alibaba PuHuiTi 3, Alibaba PuHuiTi 30;
  1095. font-weight: normal;
  1096. font-size: 16px;
  1097. color: #ffffff;
  1098. text-shadow: 0px 4px 4px rgba(0, 0, 0, 0.25);
  1099. font-style: normal;
  1100. text-transform: none;
  1101. > img {
  1102. width: 18px;
  1103. height: 18px;
  1104. margin-right: 4px;
  1105. }
  1106. > div {
  1107. height: 100%;
  1108. display: flex;
  1109. align-items: center;
  1110. > span {
  1111. color: #6c8097;
  1112. margin-right: 12px;
  1113. }
  1114. }
  1115. }
  1116. .hz_item:nth-child(1) {
  1117. border-bottom: 1px dashed #888888;
  1118. }
  1119. .hz_item:nth-child(2) {
  1120. border-bottom: 1px dashed #888888;
  1121. }
  1122. }
  1123. }
  1124. }
  1125. </style>