index.vue 18 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513
  1. <template>
  2. <view class="container">
  3. <view class="doctor-info">
  4. <image :src="bg" class="bg"></image>
  5. <view class="user">
  6. <view class="info">
  7. <view class="name">{{user.userName}}</view>
  8. <view class="group">{{user.groupName}}</view>
  9. <view class="ocName">{{user.ocName||user.positionName}}</view>
  10. </view>
  11. <template v-if="user.type<4">
  12. <image class="avatar radius" src="/static/index/piont.png"></image>
  13. </template>
  14. <template v-else>
  15. <image :src="user.userAvatar" class="avatar" @error="avatarError" v-if="user.userAvatar"></image>
  16. <image :src="defAvatar" class="avatar" v-else></image>
  17. </template>
  18. </view>
  19. <view class="introduce" v-if="user.userIntro">{{user.userIntro}}</view>
  20. </view>
  21. <view class="notice" v-if="alertnotice">
  22. <view class="notice-name">
  23. <image class="icon" src="/static/index/alert.png" mode="widthFix"></image>
  24. <!-- <text class="text">预警</text> -->
  25. </view>
  26. <view class="notice-cont">
  27. <uni-notice-bar
  28. v-if="alertnotice"
  29. @getmore="getmorealert"
  30. scrollable :text="alertnotice"
  31. background-color="#fff0"
  32. :speed="30"
  33. ref="uni-notice-bar"
  34. show-get-more
  35. color="#333" />
  36. </view>
  37. </view>
  38. <view class="tab-container" v-if="showTab">
  39. <view class="header">待办事项</view>
  40. <view class="tab">
  41. <div class="tab-item" @click="linkTo('task','待办任务')" v-if="todos.checkTaskCount>0">
  42. <view class="tab-name">任务处理</view>
  43. <view class="number task">{{todos.checkTaskCount>99?'99+':taskTotal}}</view>
  44. </div>
  45. <div class="tab-item" @click="linkTo('danger','待处理隐患')" v-if="todos.dangerCount>0">
  46. <view class="tab-name danger">隐患处理</view>
  47. <view class="number">{{todos.dangerCount>99?'99+':todos.dangerCount}}</view>
  48. </div>
  49. <div class="tab-item" @click="linkTo('warn','告警事件')" v-if="todos.warningCount>0">
  50. <view class="tab-name">告警处理 </view>
  51. <view class="number warn">{{todos.warningCount>99?'99+':todos.warningCount}}</view>
  52. </div>
  53. <!-- <div class="tab-item" @click="linkTo('alert','预警事件')" v-if="todos.alertCount>0">
  54. <view class="tab-name">预警处理</view>
  55. <view class="number alert">{{todos.alertCount>99?'99+':todos.alertCount}}</view>
  56. </div> -->
  57. <div class="tab-item" @click="linkTo('snapshot','问题处理')" v-if="todos.snapshotCount>0">
  58. <view class="tab-name">问题处理</view>
  59. <view class="number snapshot">{{todos.snapshotCount>99?'99+':todos.snapshotCount}}</view>
  60. </div>
  61. </view>
  62. </view>
  63. <view class="app-container">
  64. <view class="app-title">常规操作</view>
  65. <view class="app-list">
  66. <view class="app-item" v-for="(item,index) in actionList" :key="index" @click="handle(item)">
  67. <image class="logo" :src="item.miniLogo" ></image>
  68. <view class="app-cont">
  69. <view class="name">{{item.miniTitle}}</view>
  70. <view class="desc" v-if="item.miniDesc">{{item.miniDesc}}</view>
  71. </view>
  72. </view>
  73. </view>
  74. </view>
  75. <uni-popup ref="alertpopup" is-mask-click>
  76. <view class="alert-container">
  77. <uni-list>
  78. <uni-list-item v-for="(item,aIdx) in alertList" :key="aIdx"
  79. :title="item.alertTitle"
  80. :rightText="item.alertTime"
  81. :note="item.alertContent">
  82. </uni-list-item>
  83. </uni-list>
  84. </view>
  85. </uni-popup>
  86. </view>
  87. </template>
  88. <script>
  89. import defAvatar from '@/static/avatar.png'
  90. import {wxLogin} from '@/api/openApi.js'
  91. import {getByQr,getApps} from '@/api/system/scan.js'
  92. import {getQueryParams} from '@/utils/index.js'
  93. export default {
  94. data() {
  95. return {
  96. actionList:[],
  97. defAvatar:defAvatar,
  98. bg:'',
  99. user:{
  100. userAvatar:""
  101. },
  102. alertnotice:undefined,
  103. alertList:[],
  104. todos:{
  105. checkTaskCount: 0,
  106. dangerCount: 0,
  107. snapshotCount: 0,
  108. warningCount: 0
  109. },
  110. miniList:[]
  111. }
  112. },
  113. onLoad(options){
  114. this.init(options)
  115. },
  116. computed:{
  117. showTab(){
  118. return this.todos.checkTaskCount>0||this.todos.dangerCount>0||this.todos.snapshotCount>0||this.todos.warningCount>0
  119. }
  120. },
  121. methods: {
  122. async init(options){
  123. if(options && options.hasOwnProperty('q') ){
  124. let URL = decodeURIComponent(options.q);
  125. options=getQueryParams(URL)
  126. }
  127. this.getData(options)
  128. },
  129. setUnionid(){
  130. return new Promise((resolve,reject)=>{
  131. uni.login({
  132. provider: 'weixin',
  133. success: function (loginRes) {
  134. let code=loginRes.code;
  135. wxLogin(code).then((resp)=>{
  136. const { code, data, msg } = resp
  137. resolve(resp)
  138. }).catch((resp)=>{
  139. reject(resp)
  140. })
  141. },
  142. fail(resp) {
  143. reject(resp)
  144. }
  145. })
  146. })
  147. },
  148. getData({ocId, code}){
  149. if(!ocId){
  150. let qrcode=uni.getStorageSync('qrcode')
  151. if(!qrcode){return}
  152. ocId=qrcode.ocId
  153. code=qrcode.code
  154. }
  155. uni.setStorageSync('qrcode',{ocId,code})
  156. let isLogin=uni.getStorageSync('isLogin')
  157. if(!isLogin){
  158. uni.showToast({
  159. title:"请授权登录登录失效!",
  160. mask: true,
  161. icon: "none",
  162. complete() {
  163. uni.redirectTo({
  164. url: '/pages/authorizedLogin/index'
  165. })
  166. }
  167. })
  168. return
  169. }
  170. getByQr(ocId, code).then((res)=>{
  171. let type=res.data.targetType
  172. uni.setStorageSync('qrcode',{
  173. ...res.data.target,
  174. targetId:res.data.targetId,
  175. targetType:res.data.targetType,
  176. targetTitle:res.data.targetTitle,
  177. ocId,
  178. code
  179. })
  180. let desc="";
  181. if(type===1){desc=res.data.target.riskPointDesc}
  182. if(type===2){desc=res.data.target.gridDesc}
  183. if(type===3){desc=res.data.target.equipDesc;}
  184. if(type===4){desc=res.data.target.doctorDesc}
  185. if(type===5){desc=res.data.target.doctorResume}
  186. let riskPointTypeTitle=res.data.target.riskPointTypeTitle?res.data.target.riskPointTypeTitle:"";
  187. let riskPointCatTitle=res.data.target.riskPointCatTitle?`【${res.data.target.riskPointCatTitle}】`:""
  188. res.data.target.positionName=`${riskPointTypeTitle}${riskPointCatTitle}`
  189. this.user={
  190. type:res.data.targetType,
  191. userName:res.data.targetTitle,
  192. groupName:res.data.targetGroupName,
  193. userAvatar:res.data.target.doctorAvatar,
  194. positionName:res.data.target.positionName,
  195. userIntro:desc,
  196. }
  197. if(type>3){
  198. this.bg='/static/index/bg.png'
  199. }else{
  200. this.bg=type===1?'/static/index/riskBg.png':(type===2?'/static/index/areaBg.png':'/static/index/eqBg.png')
  201. }
  202. getApps(res.data.targetId).then((res)=>{
  203. this.actionList=res.data.miniList
  204. if(res.data.alertList){
  205. this.alertList=res.data.alertList
  206. this.alertnotice=res.data.alertList.reduce((pre,item,index)=>`${pre} ${index+1}、${item.alertContent},${item.alertTime};`,'')
  207. this.$nextTick(()=>{
  208. this.$refs['uni-notice-bar'].initSize()
  209. })
  210. }
  211. if(res.data.todos){
  212. this.todos=res.data.todos
  213. }
  214. if(res.data.wxId)uni.setStorageSync('wxId',res.data.wxId)
  215. uni.setStorageSync('isAccount',res.data.isAccount)
  216. })
  217. })
  218. },
  219. avatarError(){
  220. this.user.userAvatar=defAvatar
  221. },
  222. handle(item){
  223. if(item.miniCode==='danger-submit'){ //隐患登记
  224. uni.navigateTo({url:'/pages/app_views/danger/submit/submit'})
  225. }
  226. if(item.miniCode==='checklist_point'){// 清单
  227. uni.navigateTo({url:'/pages/app_views/checkList/index/index?type=app&id='+item.checklistId})
  228. }
  229. if(item.miniCode==='checklist_score'){// 满意度
  230. uni.navigateTo({url:'/pages/app_views/satisfaction_evaluation/satisfaction_evaluation?type=app&id='+item.checklistId})
  231. }
  232. if(item.miniCode==='checklist_hazard'){// 危险源
  233. uni.navigateTo({url:'/pages/app_views/hazard/index/index?type=app&id='+item.checklistId})
  234. }
  235. if(item.miniCode==='app-snapshot'){ //问题反馈
  236. uni.navigateTo({url:'/pages/app_views/problem_feedback/problem_feedback'})
  237. }
  238. if(item.miniCode==='mini_check_in'){//打卡
  239. uni.navigateTo({url:'/pages/app_views/clockIn/index'})
  240. }
  241. },
  242. isNull(val){
  243. if(val===undefined||val==="undefined"||val===""||val===null){
  244. return true
  245. }
  246. return false
  247. },
  248. linkTo(type,name){
  249. let riskPointId=uni.getStorageSync('qrcode').riskPointId
  250. uni.navigateTo({
  251. url:`/pages/index/detail/detail?type=${type}&name=${name}&rid=${riskPointId}`
  252. })
  253. },
  254. getmorealert(){
  255. this.$refs.alertpopup.open("center")
  256. }
  257. },
  258. onShareAppMessage() {
  259. }
  260. }
  261. </script>
  262. <style lang="scss" scoped>
  263. .container {
  264. min-height: 100vh;
  265. padding: 48rpx 36rpx;
  266. font-size: 14px;
  267. line-height: 24px;
  268. background-color:rgba(245,246,248,1);
  269. box-sizing: border-box;
  270. .doctor-info{
  271. background-image: url('/static/index/bg.png');
  272. background-repeat: no-repeat;
  273. background-size: 100% 100%;
  274. padding: 30rpx 48rpx 48rpx 48rpx;
  275. box-sizing: border-box;
  276. color: #fff;
  277. position: relative;
  278. .bg{
  279. display: block;
  280. width: 100%;
  281. height: 100%;
  282. position: absolute;
  283. left: 0;
  284. top: 0;
  285. z-index: -1;
  286. }
  287. .user{
  288. display: flex;
  289. justify-content: space-between;
  290. align-items: center;
  291. .info{
  292. position: relative;
  293. padding-left: 20rpx;
  294. .name{
  295. font-size: 32rpx;
  296. font-weight: 700;
  297. line-height: 1;
  298. }
  299. .group{
  300. font-size: 24rpx;
  301. font-weight: 400;
  302. line-height: 1;
  303. margin-top: 16rpx;
  304. }
  305. .ocName{
  306. font-size: 24rpx;
  307. font-weight: 400;
  308. line-height: 1;
  309. margin-top: 16rpx;
  310. }
  311. &::after{
  312. width: 1px;
  313. height: 100%;
  314. display: block;
  315. content: "";
  316. position: absolute;
  317. border-radius: 10px;
  318. top: 0;
  319. left: 0;
  320. background-color: #83D047;
  321. }
  322. }
  323. .avatar{
  324. display: block;
  325. width: 140rpx;
  326. height: 140rpx;
  327. border-radius: 50%;
  328. &.radius{
  329. border-radius:34rpx;
  330. }
  331. }
  332. }
  333. .introduce{
  334. padding-top: 30rpx;
  335. max-height: 318rpx;
  336. font-family: SF Pro Text;
  337. font-size: 30rpx;
  338. font-weight: 400;
  339. line-height: 44rpx;
  340. color: #fff;
  341. overflow: hidden;
  342. text-overflow: ellipsis;
  343. display: -webkit-box;
  344. -webkit-line-clamp: 7;
  345. -webkit-box-orient: vertical;
  346. text-align: justify;
  347. word-break: break-all;
  348. }
  349. }
  350. .notice{
  351. height: 84rpx;
  352. background-color:rgba(245, 246, 248, 1);
  353. margin-top: 28rpx;
  354. border-radius: 6rpx;
  355. display: flex;
  356. justify-content: space-between;
  357. align-items: center;
  358. box-shadow: 0px 10px 10px -4px rgba(45, 54, 67, 0.2);
  359. padding-left:28rpx;
  360. .notice-name{
  361. height: 84rpx;
  362. display: flex;
  363. align-items: center;
  364. font-weight: 600;
  365. font-size: 24rpx;
  366. color: rgba(0, 0, 0, 0.9);
  367. .icon{
  368. width: 40rpx;
  369. height: 40rpx;
  370. // padding-right: 8rpx;
  371. // margin-top:8rpx ;
  372. }
  373. .text{
  374. font-size: 28rpx;
  375. line-height: 1;
  376. // margin-top:8rpx ;
  377. }
  378. }
  379. .notice-cont{
  380. width: 600rpx;
  381. height: 80rpx;
  382. flex: 1;
  383. font-size: 28rpx;
  384. color: rgba(0, 0, 0, 0.9);
  385. // background-color: #fff;
  386. }
  387. }
  388. .tab-container{
  389. background-color: #fff;
  390. margin-top: 32rpx;
  391. border-radius: 16rpx;
  392. .header{
  393. width: 216rpx;
  394. height: 64rpx;
  395. text-align: center;
  396. line-height: 64rpx;
  397. background-image: url(data:image/png;base64,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);
  398. background-repeat: no-repeat;
  399. background-size: 100% 100%;
  400. font-size: 32rpx;
  401. color: #fff;
  402. }
  403. .tab{
  404. display: flex;
  405. align-items: center;
  406. padding: 28rpx 0;
  407. .tab-item{
  408. width: 25%;
  409. // height: 150rpx;
  410. display: flex;
  411. justify-content: center;
  412. align-items: center;
  413. flex-direction: column;
  414. .icon{
  415. width: 96rpx;
  416. }
  417. .tab-name{
  418. font-size: 28rpx;
  419. line-height: 1;
  420. color: #222;
  421. padding-top: 12rpx;
  422. }
  423. .number{
  424. color: #000;
  425. font-size: 36rpx;
  426. line-height: 40rpx;
  427. font-weight: 700;
  428. padding-top: 8rpx;
  429. &.task{
  430. color: #4D73FF;
  431. }
  432. &.danger{
  433. color: #FE4644;
  434. }
  435. &.warn{
  436. color: #F4752D;
  437. }
  438. }
  439. }
  440. }
  441. }
  442. .alert-container{
  443. width: 96%;
  444. height: 60vh;
  445. overflow-y: auto;
  446. margin: 0 auto;
  447. }
  448. .app-container{
  449. .app-title{
  450. font-size: 34rpx;
  451. color: #000;
  452. line-height: 1;
  453. padding: 40rpx 0;
  454. font-weight: 600;
  455. }
  456. .app-list{
  457. display: flex;
  458. justify-content: space-between;
  459. flex-wrap: wrap;
  460. .app-item{
  461. display: flex;
  462. align-items: center;
  463. width: 330rpx;
  464. height: 160rpx;
  465. padding: 20rpx;
  466. box-sizing: border-box;
  467. border-left: 0;
  468. background-color: #fff;
  469. margin-bottom: 18rpx;
  470. border-radius: 20rpx;
  471. .logo{
  472. display: block;
  473. width: 66rpx;
  474. height: 66rpx;
  475. border: 1px solid #efe3e3;
  476. border-radius: 50%;
  477. overflow: hidden;
  478. }
  479. .app-cont{
  480. flex: 1;
  481. margin-left: 14rpx;
  482. .name{
  483. width: 100%;
  484. color: #222222;
  485. font-size: 32rpx;
  486. line-height: 1;
  487. margin-bottom: 20rpx;
  488. text-overflow: ellipsis;
  489. word-break: break-all;
  490. overflow: hidden;
  491. white-space: nowrap;
  492. }
  493. .desc{
  494. width: 203rpx;
  495. height: 48rpx;
  496. background: linear-gradient(128.57deg, rgba(253, 198, 48, 0.1), rgba(244, 125, 52, 0.1));
  497. color: #FFAB08;
  498. font-size: 24rpx;
  499. line-height: 48rpx;
  500. padding-left: 16rpx;
  501. box-sizing: border-box;
  502. }
  503. }
  504. }
  505. }
  506. }
  507. }
  508. </style>