inspectList.vue 29 KB

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