inspectList.vue 30 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992
  1. <template>
  2. <view class="inspectList">
  3. <view class="page_tab">
  4. <view class="page_tab_bar active">
  5. <view class="tab_dept">
  6. <text @click="changeDept">{{ currenDept.dept}}</text>
  7. <text class="newicon newicon-weibiaoti2010104" @click="changeDept"></text>
  8. </view>
  9. <text class="moreFilter newicon newicon-shaixuan" @click="moreFilter"></text>
  10. </view>
  11. </view>
  12. <view v-if="zxzData.length == 0" class="zwsj">
  13. <image class="zwsj-img" mode="widthFix" src="../../static/img/zanwushuju.png"></image>
  14. <view class="zwsj-txt">暂无数据</view>
  15. </view>
  16. <view v-if="zxzData.length" class="page_items">
  17. <scroll-view class="page_items_scroll" scroll-y :refresher-enabled="scroll_refresher_enabled"
  18. :refresher-triggered="triggered" @refresherrefresh="refresherrefresh" @refresherrestore="refresherrestore"
  19. @scrolltolower="scrolltolower" :scroll-top="scroll_top" @refresherabort="refresherabort" @scroll="scroll"
  20. refresher-background="transport">
  21. <view class="page_item_wrap" v-for="(item, index) of zxzData" :key="index">
  22. <view class="page_item">
  23. <view class="page_item_top">
  24. <view class="page_item_top_L">
  25. <view class="L_time" @click="toPatientDetail(item)">
  26. <template v-if="!item.execDept">
  27. <!-- 没有标记陪检方式 -->
  28. <view class="circle"></view>
  29. <view class="circle"></view>
  30. <view class="circle"></view>
  31. </template>
  32. <template v-else-if="!item.yyTime">
  33. <!-- 没有预约时间 -->
  34. <view class="circle"></view>
  35. <view class="circle"></view>
  36. </template>
  37. <template v-else-if="!(item.patientDTO && item.patientDTO.tripTypeDTO)">
  38. <!-- 没有检查科室 -->
  39. <view class="circle"></view>
  40. </template>
  41. {{ item.patientName }}({{ item.bedNum }})
  42. </view>
  43. </view>
  44. <view class="page_item_top_R">
  45. <text>{{item.inspectState?item.inspectState.name:''}}</text>
  46. <button @click="build(item)" v-if="!item.gdId&&(item.inspectState.value==1||item.inspectState.value==30)&&item.execDept">建单</button>
  47. <button @click="viewWorkOrder(item)" v-if="item.gdId">查看工单</button>
  48. </view>
  49. </view>
  50. <view class="page_item_cont">
  51. <view class="page_item_conts">
  52. <view class="page_item_conts_item">
  53. <view class="column">
  54. <text class="p_title">住院号:</text>
  55. <text class="p_info">{{ item.residenceNo }}</text>
  56. </view>
  57. <view class="column">
  58. <text class="p_title">陪检方式:</text>
  59. <text class="p_info">{{ (item.patientDTO && item.patientDTO.tripTypeDTO) ? item.patientDTO.tripTypeDTO.inspectMode : '' }}</text>
  60. </view>
  61. </view>
  62. <view class="page_item_conts_item">
  63. <text class="p_title">检查科室:</text>
  64. <text class="p_info">{{ item.execDept ? item.execDept.dept : "" }}<text class="newicon newicon-weibiaoti2010104 fz28" @click="changeExecDept(item)" v-if="item.inspectState.value == 1 || item.inspectState.value == 30"></text></text>
  65. </view>
  66. <view class="page_item_conts_item">
  67. <text class="p_title">检查项目:</text>
  68. <text class="p_info">{{ item.inspectName }}-{{ item.inspectCode }}</text>
  69. </view>
  70. <view class="page_item_conts_item btn">
  71. <text class="p_title">预约时间:</text>
  72. <text class="p_info">{{ item.yyEndTime }}<text class="newicon newicon-weibiaoti2010104 fz28" @click="changeYyTime(item)" v-if="item.inspectState.value == 1 || item.inspectState.value == 30"></text></text>
  73. </view>
  74. <view class="page_item_conts_item">
  75. <view class="column">
  76. <text class="p_title">预约叫号:</text>
  77. <text class="p_info">{{ item.reservationNumber }}</text>
  78. </view>
  79. <view class="column">
  80. <text class="p_title">是否紧急:</text>
  81. <text class="p_info" :class="{red:item.priority==='1'||item.priority===1}">{{(item.priority==='1'||item.priority===1)?'是':'否'}}</text>
  82. </view>
  83. </view>
  84. <view class="page_item_conts_item">
  85. <view class="column">
  86. <text class="p_title">护理等级:</text>
  87. <text class="p_info" :class="{red:item.careLevel&&(item.careLevel.value==0||item.careLevel.value==1)}">{{item.careLevel?item.careLevel.name:''}}</text>
  88. </view>
  89. <view class="column">
  90. <text class="p_title">病情级别:</text>
  91. <text class="p_info"
  92. :class="{red:item.illnessState&&(item.illnessState.value==2||item.illnessState.value==3)}">{{item.illnessState?item.illnessState.name:''}}</text>
  93. </view>
  94. </view>
  95. <view class="page_item_conts_item">
  96. <text class="p_title">注意事项:</text>
  97. <text class="p_info">{{ item.patientDTO ? item.patientDTO.remark : '' }}</text>
  98. </view>
  99. <view class="page_item_conts_item">
  100. <text class="p_title">医生备注:</text>
  101. <text class="p_info">{{ item.remark }}</text>
  102. </view>
  103. </view>
  104. </view>
  105. </view>
  106. </view>
  107. </scroll-view>
  108. </view>
  109. <!-- 底部扫一扫 -->
  110. <bigScreen></bigScreen>
  111. <!-- 筛选 -->
  112. <fjj-condition @touchmove.stop :list="list" :visibleDrawer="visibleDrawer" @result="resultConditon"
  113. :keyWordGvie="searchlist.keyWord" :keyWordOld="keyWordOld" :bedNumSortGvie="searchlist.bedNumSort" :noneEndDeptGvie="searchlist.noneEndDept" :noneYytimeGvie="searchlist.noneYytime" :inspectStateList="inspectStateList" />
  114. <!-- 弹窗 -->
  115. <showModel :title="models.title" :icon="models.icon" :disjunctor="models.disjunctor" :content="models.content"
  116. @ok="ok" @cancel="cancel" @know="know" :operate="models.operate"></showModel>
  117. <!-- 弹窗 -->
  118. <inspectRemoveModel v-if="configObj" :title="models1.title" :icon="models1.icon" :disjunctor="models1.disjunctor" :content="models1.content" @know="know1" :operate="models1.operate" @ok="ok1" @cancel="cancel1" :yy="currentInspect.yyTime" :currentInspect="currentInspect" :yytimeGapMinute="configObj.yytimeGapMinute"></inspectRemoveModel>
  119. <!-- 弹窗 -->
  120. <inspectExecDeptModel :title="models2.title" :icon="models2.icon" :disjunctor="models2.disjunctor" :content="models2.content" @know="know2" :operate="models2.operate" @ok="ok2" @cancel="cancel2" :execDeptList="currentInspect.inspectCheckType && currentInspect.inspectCheckType.deptList" :execDeptId="currentInspect.execDeptId"></inspectExecDeptModel>
  121. </view>
  122. </template>
  123. <script>
  124. import bigScreen from "../../components/bigScreen/bigScreen.vue";
  125. import {
  126. get,
  127. post,
  128. deleteIt,
  129. webHandle
  130. } from "../../http/http.js";
  131. import dayjs from 'dayjs';
  132. // https://ext.dcloud.net.cn/plugin?id=2849
  133. import fjjCondition from "@/components/fjj-condition/fjj-condition.vue";
  134. import showModel from "../../components/showModel/showModel.vue";
  135. export default {
  136. data() {
  137. return {
  138. keyWordOld: '',
  139. currentInspect: {},
  140. // 弹窗model1
  141. models1: {
  142. disjunctor: false,
  143. },
  144. // 弹窗model1
  145. models2: {
  146. disjunctor: false,
  147. },
  148. // 记录当前滚动条的位置
  149. scrollYY: 0,
  150. // 建单的对象
  151. jdItem: {},
  152. // 弹窗model
  153. models: {
  154. disjunctor: false,
  155. },
  156. // 面板是否显示
  157. visibleDrawer: false,
  158. // 面板数据
  159. list: [{
  160. title: "时间",
  161. type: "single", //single不带时分秒
  162. key: "yyTime",
  163. },
  164. {
  165. title: "关键词",
  166. type: "keyWord", //keyWord是input
  167. key: "keyWord",
  168. },
  169. {
  170. title: "排序",
  171. type: "bedNumSort", //床号排序
  172. key: "bedNumSort",
  173. },
  174. {
  175. title: "检查信息状态",
  176. type: "inspectState", //检查信息状态
  177. key: "inspectState",
  178. },
  179. {
  180. title: "异常数据筛选",
  181. type: "abnormal", //异常数据筛选
  182. key: "abnormal",
  183. },
  184. ],
  185. // 面板搜索数据
  186. searchlist: {
  187. yyTime: new Date().Format("yyyy/MM/dd"),
  188. keyWord: "",
  189. bedNumSort: false,
  190. inspectState: "1,30",
  191. noneEndDept: false,
  192. noneYytime: false,
  193. },
  194. // 检查信息状态列表
  195. inspectStateList: [],
  196. //当前登录人所属科室
  197. currenDept: {},
  198. // 抢单的id
  199. qdId: "",
  200. //列表数据
  201. zxzData: [],
  202. //分页页码
  203. idx: 0,
  204. // 列表项总数
  205. totalNum: -1,
  206. triggered: false, //下拉刷新状态
  207. freshing: false, //上拉加载开关
  208. scroll_top: 0, //距离顶部的距离
  209. scroll_refresher_enabled: true, //是否开启自定义下拉刷新
  210. configObj: null,
  211. hosId: uni.getStorageSync("userData").user.currentHospital.id,
  212. };
  213. },
  214. components: {
  215. bigScreen,
  216. fjjCondition,
  217. },
  218. methods: {
  219. toPatientDetail(data){
  220. uni.navigateTo({
  221. url: `/pages/patientInformationInfo/patientInformationInfo?patientCode=${data.patientCode}`,
  222. });
  223. },
  224. // 修改预约时间->返回
  225. know1() {
  226. this.models1.disjunctor = false;
  227. },
  228. // 修改预约时间->确定
  229. ok1(data) {
  230. console.log(data);
  231. const { yyTime, yyEndTime} = data;
  232. if (!yyTime) {
  233. //没有填写预约时间
  234. uni.showModal({
  235. title: "提示",
  236. content: "请填写预约时间!",
  237. showCancel: false,
  238. success: function(res) {
  239. if (res.confirm) {
  240. console.log("用户点击确定");
  241. } else if (res.cancel) {
  242. console.log("用户点击取消");
  243. }
  244. },
  245. });
  246. return;
  247. }
  248. this.models1.disjunctor = false;
  249. let postData = {
  250. inspectCode: this.currentInspect.inspectCode,
  251. yyTime,
  252. yyEndTime
  253. };
  254. uni.showLoading({
  255. title: '加载中',
  256. mask: true,
  257. })
  258. post('/workerOrder/updateInspectYytime', postData).then(res => {
  259. uni.hideLoading();
  260. if (res.status == 200) {
  261. this.idx = 0;
  262. this.totalNum = -1;
  263. this.waitingOrders(0);
  264. } else {
  265. uni.showToast({
  266. icon: "none",
  267. title: "修改失败",
  268. });
  269. }
  270. })
  271. },
  272. // 修改预约时间->取消
  273. cancel1() {
  274. this.models1.disjunctor = false;
  275. },
  276. // 修改预约时间
  277. changeYyTime(item) {
  278. this.currentInspect = item;
  279. this.models1 = {
  280. disjunctor: true,
  281. content: `您要修改[${item.inspectName||''}]的预约时间`,
  282. icon: "warn",
  283. operate: {
  284. ok: "确定",
  285. cancel: "取消",
  286. },
  287. };
  288. },
  289. // 修改检查科室
  290. changeExecDept(item) {
  291. this.currentInspect = item;
  292. if(this.currentInspect.inspectCheckType){
  293. this.currentInspect.inspectCheckType.deptList = this.currentInspect.inspectCheckType.deptList || [];
  294. }
  295. this.models2 = {
  296. disjunctor: true,
  297. content: `请选择[${item.patientName||''}]检查项目的检查科室`,
  298. icon: "warn",
  299. operate: {
  300. ok: "确定",
  301. cancel: "取消",
  302. },
  303. };
  304. },
  305. // 修改检查科室->返回
  306. know2() {
  307. this.models2.disjunctor = false;
  308. },
  309. // 修改检查科室->确定
  310. ok2(data) {
  311. console.log(data);
  312. const { execDeptId } = data;
  313. this.models2.disjunctor = false;
  314. let postData = {
  315. "id": this.currentInspect.id,
  316. "execDeptId": execDeptId
  317. };
  318. uni.showLoading({
  319. title: '加载中',
  320. mask: true,
  321. })
  322. post('/simple/data/updData/inspect', postData).then(res => {
  323. uni.hideLoading();
  324. if (res.status == 200) {
  325. this.idx = 0;
  326. this.totalNum = -1;
  327. this.waitingOrders(0);
  328. } else {
  329. uni.showToast({
  330. icon: "none",
  331. title: "修改失败",
  332. });
  333. }
  334. })
  335. },
  336. // 修改检查科室->取消
  337. cancel2() {
  338. this.models2.disjunctor = false;
  339. },
  340. // 更多筛选
  341. moreFilter() {
  342. uni.showLoading({
  343. title: "加载中",
  344. mask: true,
  345. });
  346. let postData = {
  347. "type": "list",
  348. "key": "inspect_state"
  349. };
  350. post("/common/common/getDictionary", postData).then((result) => {
  351. this.inspectStateList = result.map(item => {
  352. return {
  353. label: item.name,
  354. value: item.value
  355. }
  356. });
  357. this.inspectStateList.unshift({
  358. label: '全部',
  359. value: '0'
  360. });
  361. uni.hideLoading();
  362. this.visibleDrawer = true;
  363. })
  364. },
  365. // 查看工单
  366. viewWorkOrder(data) {
  367. console.log(data)
  368. uni.navigateTo({
  369. url: `../receipt_infopage/receipt_infopage?id=${data.gdId}`,
  370. });
  371. },
  372. // 建单
  373. build(data) {
  374. console.log(data);
  375. this.jdItem = data;
  376. this.models = {
  377. disjunctor: true,
  378. title: "提示",
  379. content: `您即将创建【${data.patientName || ""}】患者前往【${
  380. data.execDept ? data.execDept.dept : ""
  381. }】进行【${data.inspectName || ""}】检查,您确认吗?`,
  382. icon: "warn",
  383. operate: {
  384. ok: "确定",
  385. cancel: "取消",
  386. },
  387. };
  388. },
  389. //建单后返回
  390. know() {
  391. this.models.disjunctor = false;
  392. this.idx = 0;
  393. this.totalNum = -1;
  394. this.waitingOrders(0);
  395. // this.scroll_top = Math.random(); //回到顶部
  396. this.scroll_top = this.scrollYY; //回到当前位置
  397. },
  398. //建单确定
  399. ok() {
  400. this.models.disjunctor = false;
  401. let postData = {
  402. deptId: this.currenDept.id
  403. };
  404. let taskId;
  405. uni.showLoading({
  406. title: "加载中",
  407. mask: true,
  408. });
  409. post("/nurse/getDeptTaskType", postData).then((result) => {
  410. if (result.status == 200) {
  411. let obj = result.data.allTaskTypes.filter(
  412. (item) => item.associationType.value == "inspect"
  413. );
  414. if (obj.length) {
  415. taskId = obj[0].id;
  416. let postData = {
  417. workOrder: {
  418. sourceId: 4,
  419. taskType: {
  420. id: taskId,
  421. isHalfInspect: obj[0].isHalfInspect === 1 ? 1 : 0
  422. },
  423. createDept: this.currenDept.id,
  424. startDept: {
  425. id: this.currenDept.id
  426. },
  427. patient: {
  428. patientCode: this.jdItem.patientCode
  429. },
  430. checkList: [{
  431. id: this.jdItem.id
  432. }],
  433. goods: "",
  434. worker: {
  435. id: uni.getStorageSync("userData").user.id
  436. },
  437. workerStartOrderFlag: 1,
  438. },
  439. };
  440. //根据检查的紧急度加急
  441. if (this.jdItem.priority === 1 || this.jdItem.priority === '1') {
  442. postData.workOrder["urgentDetails"] = {
  443. checkStatus: {
  444. id: 329
  445. },
  446. urgentReason: '系统根据检查信息,自动进行加急',
  447. };
  448. }
  449. post("/api/startOrder", postData).then((res) => {
  450. uni.hideLoading();
  451. let msg = res.msg;
  452. let icon = "error";
  453. if (res.status == 200) {
  454. msg = "建单成功";
  455. icon = "success";
  456. }
  457. this.models = {
  458. disjunctor: true,
  459. content: msg,
  460. icon: icon,
  461. operate: {
  462. know: "返回",
  463. },
  464. };
  465. });
  466. } else {
  467. uni.hideLoading();
  468. this.models = {
  469. disjunctor: true,
  470. content: "建单失败,科室未开通!",
  471. icon: "error",
  472. operate: {
  473. know: "返回",
  474. },
  475. };
  476. }
  477. } else {
  478. uni.hideLoading();
  479. uni.showToast({
  480. icon: "none",
  481. title: result.msg || "接口获取数据失败!",
  482. });
  483. }
  484. });
  485. },
  486. //建单取消
  487. cancel() {
  488. this.models.disjunctor = false;
  489. },
  490. //点击确定后返回参数
  491. resultConditon(obj) {
  492. console.log(obj);
  493. this.visibleDrawer = obj.visibleDrawer;
  494. if (obj.str_result) {
  495. this.searchlist = {
  496. yyTime: obj.str_result.yyTime,
  497. keyWord: obj.str_result.keyWord,
  498. bedNumSort: obj.str_result.bedNumSort,
  499. noneEndDept: obj.str_result.noneEndDept,
  500. noneYytime: obj.str_result.noneYytime,
  501. inspectState: obj.str_result.inspectState,
  502. };
  503. this.idx = 0;
  504. this.totalNum = -1;
  505. this.waitingOrders(0);
  506. }
  507. },
  508. // 切换科室
  509. changeDept() {
  510. uni.navigateTo({
  511. url: `../search/search?type=inspectList`,
  512. });
  513. },
  514. // 获取系统配置预约时间间隔
  515. getInspectConfig(idx) {
  516. const postData = {
  517. "idx": 0,
  518. "sum": 1,
  519. "taskTypeConfig": {
  520. "taskTypeDTO": {
  521. "hosId": {
  522. "id": this.hosId
  523. },
  524. "associationType": {
  525. "key": "association_types",
  526. "value": "inspect",
  527. },
  528. },
  529. },
  530. };
  531. uni.showLoading({
  532. mask: true,
  533. title: '加载中'
  534. })
  535. post("/simple/data/fetchDataList/taskTypeConfig", postData).then((res) => {
  536. if (res.status == 200) {
  537. this.configObj = res.list[0];
  538. this.waitingOrders(idx);
  539. }
  540. })
  541. },
  542. //检查列表数据获取
  543. waitingOrders(idx) {
  544. if (this.zxzData.length == this.totalNum) {
  545. uni.showToast({
  546. icon: "none",
  547. title: "没有更多数据了!",
  548. });
  549. this.freshing = true;
  550. return;
  551. }
  552. console.log(this.searchlist, 222222)
  553. let postData = {
  554. idx,
  555. sum: 99999,
  556. inspect: {
  557. queryInspect: 1,
  558. hosId: uni.getStorageSync("userData").user.currentHospital.id,
  559. platForm: 2,
  560. searchDays: 10000,
  561. applyDept: {
  562. id: this.currenDept.id,
  563. },
  564. clickSort: this.searchlist.bedNumSort,
  565. noneEndDept: this.searchlist.noneEndDept ? 1 : undefined,
  566. noneYytime: this.searchlist.noneYytime ? 1 : undefined,
  567. yyTime: this.searchlist.yyTime.split("/").join("-") + " 00:00:00",
  568. },
  569. };
  570. if (this.searchlist.inspectState) {
  571. let arr = this.searchlist.inspectState.split(',');
  572. let flag = arr.includes('0');
  573. postData.inspect.inspectState = {
  574. "value": flag ? '0' : arr.join(',')
  575. };
  576. }
  577. // url传递过来的住院号
  578. if (this.currenDept.patientCode) {
  579. this.searchlist.keyWord = this.currenDept.patientCode;
  580. this.currenDept.patientCode = "";
  581. }
  582. if (this.searchlist.keyWord) {
  583. postData.inspect.keyWord = this.searchlist.keyWord;
  584. }
  585. uni.showLoading({
  586. title: "加载中",
  587. mask: true,
  588. });
  589. console.log(44444,postData)
  590. // 请求列表数据
  591. post("/nurse/fetchDataList/inspect", postData).then((res) => {
  592. uni.hideLoading();
  593. if (res.status == 200) {
  594. this.triggered = false;
  595. this.freshing = true;
  596. this.totalNum = res.totalNum;
  597. res.list.forEach(v => {
  598. if(v.yyTime){
  599. v.newTime = dayjs(new Date(v.yyTime)).format('MM-DD HH:mm')
  600. if(v.endCheckTime){
  601. v.newTime2 = dayjs(new Date(v.endCheckTime)).format('HH:mm')
  602. }else{
  603. let date = dayjs(new Date(v.yyTime));
  604. let newDate = date.add(this.configObj.yytimeGapMinute, 'minute');
  605. v.newTime2 = newDate.format('HH:mm');
  606. }
  607. v.yyEndTime = v.newTime +'--'+ v.newTime2
  608. // let [date, time] = v.yyTime.split(" ");
  609. // v.yyTime = new Date(date).Format('yyyy-MM-dd') + " " + time.slice(0, -3);
  610. }
  611. // return v;
  612. })
  613. if (idx === 0) {
  614. this.zxzData = res.list;
  615. } else {
  616. this.zxzData.push(...res.list);
  617. }
  618. } else {
  619. uni.showToast({
  620. icon: "none",
  621. title: res.msg || "接口获取数据失败!",
  622. });
  623. }
  624. });
  625. },
  626. //刷新
  627. refresherrefresh() {
  628. if (this.triggered) {
  629. return;
  630. }
  631. console.log("下拉刷新");
  632. this.triggered = true;
  633. this.idx = 0;
  634. this.totalNum = -1;
  635. this.waitingOrders(0);
  636. },
  637. // 下拉刷新复位
  638. refresherrestore() {
  639. this.triggered = false;
  640. console.log("下拉刷新复位");
  641. },
  642. //下拉刷新中止
  643. refresherabort() {
  644. this.triggered = false;
  645. console.log("下拉刷新中止");
  646. },
  647. //分页,上拉加载
  648. scrolltolower() {
  649. if (this.freshing) {
  650. console.log("上拉加载");
  651. this.freshing = false;
  652. this.waitingOrders(++this.idx);
  653. }
  654. },
  655. // 滚动
  656. scroll(e) {
  657. this.scrollYY = e.detail.scrollTop;
  658. if (e.detail.scrollTop < 20) {
  659. this.scroll_refresher_enabled = true;
  660. } else {
  661. this.scroll_refresher_enabled = false;
  662. }
  663. },
  664. // 阻止浏览器滑动
  665. stop(e) {
  666. e.preventDefault();
  667. },
  668. },
  669. onLoad(options) {
  670. console.log(options, 'options');
  671. let patientCurrentDept = uni.getStorageSync("patientCurrentDept");
  672. if (Object.keys(options).length) {
  673. let {
  674. id,
  675. dept,
  676. patientCode
  677. } = options;
  678. this.currenDept.id = id;
  679. this.currenDept.dept = dept;
  680. this.currenDept.patientCode = patientCode;
  681. this.keyWordOld = patientCode;
  682. } else if (patientCurrentDept) {
  683. this.currenDept.id = patientCurrentDept.id;
  684. this.currenDept.dept = patientCurrentDept.dept;
  685. } else {
  686. this.currenDept = uni.getStorageSync("userData").user.dept;
  687. }
  688. this.getInspectConfig(0)
  689. // #ifdef APP-PLUS
  690. webHandle("no", "app");
  691. // #endif
  692. // #ifdef H5
  693. webHandle("no", "wx");
  694. // #endif
  695. },
  696. onShow() {
  697. // #ifdef H5
  698. document.body.addEventListener("touchmove", this.stop, {
  699. passive: false,
  700. });
  701. // #endif
  702. },
  703. onHide() {
  704. // #ifdef H5
  705. document.body.removeEventListener("touchmove", this.stop, {
  706. passive: false,
  707. });
  708. // #endif
  709. },
  710. };
  711. </script>
  712. <style lang="less" scoped>
  713. .toolbar {
  714. position: fixed;
  715. left: 0;
  716. bottom: var(--window-bottom);
  717. z-index: 99;
  718. width: 100%;
  719. display: flex;
  720. justify-content: center;
  721. align-items: center;
  722. box-sizing: border-box;
  723. border-radius: 4rpx;
  724. background-color: #E5E8ED;
  725. .toolbar-icon {
  726. font-size: 52rpx;
  727. margin-right: 16rpx;
  728. color: #49B856;
  729. }
  730. .toolbar-sao {
  731. font-size: 36rpx;
  732. color: #333;
  733. }
  734. }
  735. .newicon-weibiaoti2010104 {
  736. font-size: 32rpx;
  737. padding-left: 5rpx;
  738. color: #8A8A8A;
  739. &.fz28{
  740. font-size: 28rpx;
  741. }
  742. }
  743. button {
  744. font-size: 24rpx;
  745. color: #49b856;
  746. height: 48rpx;
  747. margin: 0;
  748. display: flex;
  749. align-items: center;
  750. justify-content: center;
  751. }
  752. .inspectList {
  753. width: 100%;
  754. height: 100%;
  755. position: relative;
  756. .page_tab {
  757. width: 100%;
  758. height: 90rpx;
  759. display: flex;
  760. position: fixed;
  761. left: 0;
  762. top: 0;
  763. z-index: 999;
  764. .page_tab_bar {
  765. flex: 1;
  766. font-size: 30rpx;
  767. background: #fff;
  768. display: flex;
  769. justify-content: center;
  770. align-items: center;
  771. position: relative;
  772. border-bottom: 8rpx solid #49B856;
  773. .tab_dept {
  774. position: relative;
  775. }
  776. .moreFilter {
  777. width: 48rpx;
  778. position: absolute;
  779. right: 16rpx;
  780. top: 50%;
  781. transform: translateY(-50%);
  782. color: #8A8A8A;
  783. }
  784. &.active {
  785. color: #49b856;
  786. &:after {
  787. background-color: #49b856;
  788. }
  789. }
  790. }
  791. }
  792. .zwsj {
  793. position: absolute;
  794. left: 50%;
  795. top: 180rpx;
  796. transform: translateX(-50%);
  797. .zwsj-img {
  798. width: 560rpx;
  799. }
  800. .zwsj-txt {
  801. font-size: 36rpx;
  802. font-weight: 700;
  803. margin-top: 20rpx;
  804. text-align: center;
  805. }
  806. }
  807. .page_items {
  808. height: calc(100vh - 164rpx);
  809. padding-top: 90rpx;
  810. .page_items_scroll {
  811. height: 100%;
  812. .page_item_wrap {
  813. position: relative;
  814. margin-top: 8rpx;
  815. &:last-of-type{
  816. padding-bottom: 24rpx;
  817. }
  818. .page_item {
  819. background: #fff;
  820. border-radius: 8rpx;
  821. overflow: hidden;
  822. border: 2rpx solid #e5e9ed;
  823. display: flex;
  824. flex-direction: column;
  825. justify-content: space-between;
  826. .L {
  827. width: 40rpx;
  828. height: 40rpx;
  829. border-radius: 50%;
  830. background: #f9fafb;
  831. position: absolute;
  832. left: -24rpx;
  833. top: 68rpx;
  834. border: 2rpx solid #e5e9ed;
  835. }
  836. .R {
  837. width: 40rpx;
  838. height: 40rpx;
  839. border-radius: 50%;
  840. background: #f9fafb;
  841. position: absolute;
  842. float: right;
  843. right: -24rpx;
  844. top: 68rpx;
  845. border: 2rpx solid #e5e9ed;
  846. }
  847. .page_item_top {
  848. height: 86rpx;
  849. border-bottom: 2rpx dashed #e5e9ed;
  850. padding: 0 16rpx;
  851. display: flex;
  852. align-items: center;
  853. justify-content: space-between;
  854. .page_item_top_L {
  855. height: 100%;
  856. float: left;
  857. display: flex;
  858. align-items: center;
  859. text-overflow: ellipsis;
  860. overflow: hidden;
  861. white-space: nowrap;
  862. .L_time {
  863. font-size: 30rpx;
  864. font-weight: bold;
  865. position: relative;
  866. display: flex;
  867. align-items: center;
  868. &:after{
  869. content: '';
  870. position: absolute;
  871. left: 0;
  872. bottom: 0;
  873. height: 1px;
  874. width: 100%;
  875. background: #000;
  876. }
  877. .circle{
  878. display: inline-block;
  879. width: 12rpx;
  880. height: 12rpx;
  881. background-color: red;
  882. border-radius: 50%;
  883. margin-right: 8rpx;
  884. }
  885. }
  886. }
  887. .page_item_top_R {
  888. float: right;
  889. display: flex;
  890. align-items: center;
  891. justify-content: space-between;
  892. text {
  893. font-size: 30rpx;
  894. color: #49b856;
  895. margin-right: 16rpx;
  896. }
  897. }
  898. }
  899. .page_item_cont {
  900. padding: 0 32rpx;
  901. text-align: left;
  902. position: relative;
  903. .page_item_conts {
  904. color: rgb(102, 102, 102);
  905. font-size: 26rpx;
  906. .page_item_conts_item {
  907. margin-bottom: 16rpx;
  908. display: flex;
  909. justify-content: space-between;
  910. &:first-of-type{
  911. margin-top: 16rpx;
  912. }
  913. }
  914. .p_info {
  915. flex: 1;
  916. &.red {
  917. color: red;
  918. }
  919. }
  920. .num {
  921. float: right;
  922. }
  923. }
  924. }
  925. .page_item_btn {
  926. height: 88rpx;
  927. background-image: linear-gradient(to right, #72c172, #3bb197);
  928. border-radius: 8rpx;
  929. line-height: 88rpx;
  930. color: #fff;
  931. font-size: 36rpx;
  932. font-weight: 700;
  933. text-align: center;
  934. }
  935. }
  936. .L-l {
  937. width: 2rpx;
  938. height: 40rpx;
  939. background: #f9fafb;
  940. position: absolute;
  941. left: 20rpx;
  942. top: 72rpx;
  943. display: none;
  944. }
  945. .R-l {
  946. width: 2rpx;
  947. height: 40rpx;
  948. background: #f9fafb;
  949. position: absolute;
  950. right: 20rpx;
  951. top: 72rpx;
  952. display: none;
  953. }
  954. }
  955. }
  956. }
  957. }
  958. </style>