scanning_ins.vue 33 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077
  1. <template>
  2. <view class="Scanning_ins">
  3. <view class="Scanning">
  4. <view class="Scanning_top" id="Scanning_tops" :animation="animationData">
  5. <view class="Scanning_top_icon">
  6. <text class="cubeic-ok icon_transport transport-duigou"></text>
  7. </view>
  8. <view class="Scanning_top_text">
  9. <view class="text1">扫描成功</view>
  10. <view class="success_tips">
  11. (请您评估患者的意识状况、生命体征、配合程度,如有异常请及时联系护士!)
  12. </view>
  13. </view>
  14. <view class="Scanning_cont">
  15. <view>
  16. <text>患者姓名 : {{ infoDATA.patientName || "-" }}({{
  17. infoDATA.bedNum || "-"
  18. }})</text>
  19. <button @click="getInspectList()">查看检查</button>
  20. </view>
  21. <view>患者编号 : {{ infoDATA.patientCode || "-" }}</view>
  22. <view>住院科室 :
  23. {{ infoDATA.department ? infoDATA.department.dept : "-" }}</view>
  24. </view>
  25. </view>
  26. <!-- ------------------未完成工单 start----------------- -->
  27. <view class="page_items" v-if="
  28. workData.length === 0 && patientOrders && patientOrders.length > 0
  29. ">
  30. <view class="page_item" v-for="(infoDATA, i) of patientOrders" :key="i">
  31. <view class="page_item_top">
  32. <view class="page_item_top_L">
  33. <text class="L_text">单号:{{ infoDATA.gdcode }}</text>
  34. </view>
  35. <view class="page_item_top_R">
  36. <button class="L_iocn" @click="notice(infoDATA)">通知</button>
  37. </view>
  38. <view class="L"></view>
  39. <view class="R"></view>
  40. </view>
  41. <view class="page_item_cont">
  42. <view class="page_item_cont_T">
  43. <view class="page_item_cont_title">
  44. <text> <text class="starting">起</text> 点科室 </text>
  45. <text class="text_big">{{ infoDATA.startDept.dept }}</text>
  46. </view>
  47. </view>
  48. <view class="line"></view>
  49. <view class="page_item_cont_B">
  50. <template v-if="infoDATA.taskType.associationType.value == 'inspect'">
  51. <view class="page_item_cont_title" v-for="(dept, i) of infoDATA.middleDept" :key="i">
  52. <text> <text class="End">检</text> 查科室 </text>
  53. <text class="text_big">{{ dept.dept }}</text>
  54. <view></view>
  55. </view>
  56. </template>
  57. <template v-if="infoDATA.taskType.associationType.value != 'inspect'">
  58. <view class="page_item_cont_title" v-for="(dept, i) of infoDATA.endDepts" :key="i">
  59. <text> <text class="End">终</text> 点科室 </text>
  60. <text class="text_big">{{ dept.dept }}</text>
  61. </view>
  62. </template>
  63. </view>
  64. </view>
  65. <view class="page_item_foot">
  66. <view class="page_item_foot_text">
  67. <text class="text1">状态</text>
  68. <text class="text2" v-if="
  69. !(
  70. infoDATA.gdState.value == '5' &&
  71. infoDATA.taskType.associationType.value == 'inspect'
  72. )
  73. ">{{ infoDATA.gdState.name }}</text>
  74. <text class="text2" v-if="
  75. infoDATA.gdState.value == '5' &&
  76. infoDATA.taskType.associationType.value == 'inspect'
  77. ">待送回</text>
  78. </view>
  79. <view class="page_item_foot_text" v-if="infoDATA.taskType.associationType.value == 'inspect'">
  80. <text class="text1">预约时间</text>
  81. <text class="text2">{{
  82. infoDATA.checkList &&
  83. infoDATA.checkList[0] &&
  84. infoDATA.checkList[0].yyTime
  85. ? infoDATA.checkList[0].yyTime
  86. : "-"
  87. }}</text>
  88. </view>
  89. </view>
  90. </view>
  91. </view>
  92. <!-- ------------------未完成工单 end----------------- -->
  93. <view class="title" v-if="workData && workData.length > 0">
  94. <text class="span1">工单信息</text>
  95. </view>
  96. <view class="page_items" v-if="!workData" style="font-size: 18px; margin-top: 15%">
  97. <view class="zwsj">
  98. <image class="zwsj_img" mode="widthFix" src="../../static/img/zanwushuju.png"></image>
  99. <view class="zwsj_txt">暂无工单</view>
  100. </view>
  101. </view>
  102. <view class="page_items" v-if="workData && workData.length > 0">
  103. <view class="page_item" v-for="(infoDATA, i) of workData" :key="i">
  104. <view class="page_item_top">
  105. <view class="page_item_top_L" @click="ac1(infoDATA, i, acType)">
  106. <text class="ac">
  107. <text :class="{ acSpan: idTYPE == infoDATA.id }"></text>
  108. </text>
  109. <text class="L_text">单号:{{ infoDATA.gdcode }}</text>
  110. <!-- emergencyType.value 1是正常,2是急,3是加急 -->
  111. <view class="page_item_cont_start emergency1" v-if="infoDATA.emergencyType.value == 1">
  112. <text>
  113. <text class="cubeic-star icon_transport transport-shiwujiaoxing"></text>
  114. {{ infoDATA.emergencyType.name }}
  115. </text>
  116. </view>
  117. <view class="page_item_cont_start emergency" v-if="infoDATA.emergencyType.value == 2">
  118. <text>
  119. <text class="cubeic-star icon_transport transport-shiwujiaoxing"></text>
  120. {{ infoDATA.emergencyType.name }}
  121. </text>
  122. </view>
  123. <view class="page_item_cont_start emergencys" v-if="infoDATA.emergencyType.value == 3">
  124. <text>
  125. <text class="cubeic-star icon_transport transport-shiwujiaoxing"></text>
  126. {{ infoDATA.emergencyType.name }}
  127. </text>
  128. </view>
  129. </view>
  130. <view class="page_item_top_R">
  131. <text class="L_iocn" v-if="infoDATA.taskType.associationType.value == 'inspect'">患者陪检</text>
  132. <text class="L_iocn" v-if="
  133. infoDATA.taskType.associationType.value == 'patientTransport'
  134. ">患者转运</text>
  135. </view>
  136. <view class="L"></view>
  137. <view class="R"></view>
  138. </view>
  139. <view class="page_item_cont">
  140. <view class="page_item_cont_T">
  141. <view class="page_item_cont_title">
  142. <text> <text class="starting">起</text> 点科室 </text>
  143. <text class="text_big">{{ infoDATA.startDept.dept }}</text>
  144. </view>
  145. </view>
  146. <view class="line"></view>
  147. <view class="page_item_cont_B">
  148. <template v-if="infoDATA.taskType.associationType.value == 'inspect'">
  149. <view class="page_item_cont_title" v-for="(dept, i) of infoDATA.middleDept" :key="i">
  150. <text> <text class="End">检</text> 查科室 </text>
  151. <text class="text_big">{{ dept.dept }}</text>
  152. <view></view>
  153. </view>
  154. </template>
  155. <template v-if="infoDATA.taskType.associationType.value != 'inspect'">
  156. <view class="page_item_cont_title" v-for="(dept, i) of infoDATA.endDepts" :key="i">
  157. <text> <text class="End">终</text> 点科室 </text>
  158. <text class="text_big">{{ dept.dept }}</text>
  159. </view>
  160. </template>
  161. </view>
  162. </view>
  163. <view class="page_item_foot">
  164. <view class="page_item_foot_text">
  165. <text class="text1">状态</text>
  166. <text class="text2" v-if="
  167. !(
  168. infoDATA.gdState.value == '5' &&
  169. infoDATA.taskType.associationType.value == 'inspect'
  170. )
  171. ">{{ infoDATA.gdState.name }}</text>
  172. <text class="text2" v-if="
  173. infoDATA.gdState.value == '5' &&
  174. infoDATA.taskType.associationType.value == 'inspect'
  175. ">待送回</text>
  176. </view>
  177. <view class="page_item_foot_text" v-if="infoDATA.gdState.value == '2'">
  178. <text class="text1">预计响应时间</text>
  179. <text class="text2">{{ infoDATA.estimeResponseTime || 0 }}</text>
  180. </view>
  181. <view class="page_item_foot_text" v-if="infoDATA.gdState.value == '5'">
  182. <text class="text1" v-if="!(infoDATA.taskType.associationType.value == 'inspect')">预计送达时间</text>
  183. <text class="text1" v-if="infoDATA.taskType.associationType.value == 'inspect'">预计送回时间</text>
  184. <text class="text2">{{ infoDATA.estimeCompleteTime || 0 }}</text>
  185. </view>
  186. <view class="page_item_foot_text" v-if="infoDATA.gdState.value == '4'">
  187. <text class="text1">预计到达时间</text>
  188. <text class="text2">{{ infoDATA.estimateArriveTime || 0 }}</text>
  189. </view>
  190. <view class="page_item_foot_text">
  191. <text class="text1">创建时间</text>
  192. <text class="text2">{{ infoDATA.startTime }}</text>
  193. </view>
  194. </view>
  195. </view>
  196. </view>
  197. <view class="foot_btn2" v-if="workData && workData.length > 0 && isShow">
  198. <view class="btn1" @click="allStart(typeData)">一键操作</view>
  199. <view class="btn1" @click="sendBack()">送回病房</view>
  200. <view class="btn2" @click="showAlert">知道了</view>
  201. </view>
  202. <view class="foot_btn2" v-if="
  203. workData && workData.length === 0 && isShow && wechatFocusSwitch == 1
  204. ">
  205. <view class="btn1" @click="help">{{
  206. infoDATA.focusPatient == 1 ? "无需帮助" : "需要帮助"
  207. }}</view>
  208. <view class="btn1" @click="sendBack()">送回病房</view>
  209. <view class="btn2" @click="showAlert">知道了</view>
  210. </view>
  211. <view class="foot_btn2" v-if="!isShow">
  212. <view class="btn1" @click="sendBack()">送回病房</view>
  213. <view class="btn2" @click="showAlert">知道了</view>
  214. </view>
  215. </view>
  216. <!-- 弹窗 -->
  217. <showModel :title="models.title" :icon="models.icon" :disjunctor="models.disjunctor" :content="models.content"
  218. @know="know" :operate="models.operate" @ok="ok" @cancel="cancel"></showModel>
  219. <!-- 送回病房弹窗 -->
  220. <showModel :title="models1.title" :icon="models1.icon" :disjunctor="models1.disjunctor" :content="models1.content"
  221. :operate="models1.operate" @ok="ok1" @cancel="cancel1"></showModel>
  222. <!-- 送回病房建单弹窗 -->
  223. <showModel :title="models2.title" :icon="models2.icon" :disjunctor="models2.disjunctor" :content="models2.content"
  224. :operate="models2.operate" @ok="ok2" @cancel="cancel2"></showModel>
  225. </view>
  226. </template>
  227. <script>
  228. import showModel from "../../components/showModel/showModel.vue";
  229. import {
  230. get,
  231. post,
  232. SM,
  233. webHandle
  234. } from "../../http/http.js";
  235. export default {
  236. data() {
  237. return {
  238. options: {},
  239. wechatFocusSwitch: 0,
  240. hosId: "",
  241. // 弹窗model
  242. models: {
  243. disjunctor: false,
  244. },
  245. // 送回病房弹窗model
  246. models1: {
  247. disjunctor: false,
  248. },
  249. // 送回病房建单弹窗model
  250. models2: {
  251. disjunctor: false,
  252. },
  253. infoDATA: {},
  254. workData: [],
  255. patientOrders: [],
  256. acType: Number,
  257. tabType: 1,
  258. idTYPE: "",
  259. userId: {
  260. ids: [],
  261. },
  262. typeData: null,
  263. types: false,
  264. code: "",
  265. animationData: {}, //动画
  266. isShow: true, //是否显示“一键操作”
  267. };
  268. },
  269. methods: {
  270. ok2() {
  271. this.models2.disjunctor = false;
  272. uni.showLoading({
  273. mask: true,
  274. title: '加载中'
  275. })
  276. let userId = uni.getStorageSync("userData").user.id;
  277. let postData = {
  278. "workOrder": {
  279. "startDept": {
  280. "id": this.options.id
  281. },
  282. "createDept": this.options.id,
  283. "patient": {
  284. "patientCode": this.options.code
  285. },
  286. "worker": {
  287. "id": userId
  288. }
  289. }
  290. };
  291. post("/workerOrder/returnSickRoom", postData).then((res) => {
  292. console.log(res)
  293. uni.hideLoading();
  294. if (res.status == 200) {
  295. uni.showToast({
  296. icon: 'success',
  297. title: '建单成功',
  298. });
  299. } else {
  300. uni.showToast({
  301. icon: "none",
  302. title: "请求失败!",
  303. });
  304. }
  305. })
  306. },
  307. cancel2() {
  308. this.models2.disjunctor = false;
  309. },
  310. // 送回病房-建单
  311. sendBuild() {
  312. let infoDATA = JSON.parse(this.options.infoDATA);
  313. this.models2 = {
  314. disjunctor: true,
  315. title: "提示",
  316. content: `您选择的起点科室为【${this.options.dept}】,您将从【${this.options.dept}】把【${infoDATA.patientName}】送回【${infoDATA.department.dept}】,如您确认请点击“确认建单”。`,
  317. icon: "warn",
  318. operate: {
  319. ok: "确认建单",
  320. cancel: "取消",
  321. },
  322. };
  323. },
  324. // 送回病房-选择起点科室
  325. sendBack() {
  326. let infoDATA = JSON.parse(this.options.infoDATA);
  327. this.models1 = {
  328. disjunctor: true,
  329. title: "提示",
  330. content: `您好,您是要将【${infoDATA.patientName}】送回病房吗?如确认请您点击“选择起点科室”建立工单。`,
  331. icon: "warn",
  332. operate: {
  333. ok: "选择起点科室",
  334. cancel: "取消",
  335. },
  336. };
  337. },
  338. ok1() {
  339. this.models1.disjunctor = false;
  340. uni.navigateTo({
  341. url: `../search/search?type=sendBack&code=${this.options.code}&infoDATA=${this.options.infoDATA}&patientOrders=${this.options.patientOrders}&workData=${this.options.workData}`,
  342. });
  343. },
  344. cancel1() {
  345. this.models1.disjunctor = false;
  346. },
  347. // 查看检查
  348. getInspectList() {
  349. uni.navigateTo({
  350. url: `../inspectList/inspectList?id=${this.infoDATA.department.id}&dept=${this.infoDATA.department.dept}&residenceNo=${this.infoDATA.residenceNo}`,
  351. });
  352. },
  353. // 通知
  354. notice(info) {
  355. let postData = {
  356. userIds: info.worker.id + "",
  357. content: `您负责护送的患者${info.patient.patientName}(${info.patient.bedNum})已经检查完毕,请尽快执行工单的下一步。`,
  358. };
  359. post("/wechat/sendCustomMessage", postData).then((res) => {
  360. if (res.status == 200) {
  361. uni.showToast({
  362. title: "通知成功",
  363. duration: 2000,
  364. });
  365. } else {
  366. uni.showToast({
  367. icon: "none",
  368. title: "请求失败!",
  369. });
  370. }
  371. });
  372. },
  373. //需要帮助、无需帮助
  374. help() {
  375. this.models = {
  376. disjunctor: true,
  377. title: "提示",
  378. content: this.infoDATA.focusPatient == 1 ?
  379. "如设置为“无需帮助”则后期此患者检查将不会自动进行建单,可通过“需要帮助”设置自动建单" : "如设置为“需要帮助”则后期此患者检查会自动进行建单,可通过“无需帮助”取消设置",
  380. icon: "warn",
  381. operate: {
  382. ok: "确定",
  383. cancel: "取消",
  384. },
  385. };
  386. },
  387. //需要帮助,无需帮助确定
  388. ok() {
  389. this.models.disjunctor = false;
  390. post("/nurse/updData/patient", {
  391. patient: {
  392. id: this.infoDATA.id,
  393. focusPatient: this.infoDATA.focusPatient == 1 ? 0 : 1,
  394. },
  395. }).then((res) => {
  396. let msg = "设置失败";
  397. let icon = "error";
  398. if (res.status == 200) {
  399. msg = "设置成功";
  400. icon = "success";
  401. this.infoDATA.focusPatient = res.data.focusPatient;
  402. }
  403. this.models = {
  404. disjunctor: true,
  405. content: msg,
  406. icon: icon,
  407. operate: {
  408. know: "知道了",
  409. },
  410. };
  411. });
  412. },
  413. //需要帮助,无需帮助取消
  414. cancel() {
  415. this.models.disjunctor = false;
  416. },
  417. //知道了
  418. know() {
  419. this.models.disjunctor = false;
  420. },
  421. // 知道了
  422. showAlert() {
  423. uni.navigateTo({
  424. url: "../receiptpage/receiptpage",
  425. });
  426. },
  427. //一键操作
  428. allStart(data) {
  429. let list = {};
  430. if (data) {
  431. let type = "";
  432. if (data.gdState.value == "8") {
  433. SM().then((ress1) => {
  434. // ----------------
  435. uni.showLoading({
  436. title: "加载中",
  437. mask: true,
  438. });
  439. //检验二维码的有效性
  440. post("/dept/scanning", {
  441. content: ress1,
  442. }).then((result) => {
  443. if (result.state == 200 || result.state == 201) {
  444. let ress = result.code;
  445. if (ress) {
  446. var ids = [];
  447. ids.push(data.id);
  448. type = "orderSign/" + ress;
  449. list = ids;
  450. // 科室签到
  451. post("/workerOrder/" + type, list).then((res) => {
  452. uni.hideLoading();
  453. if (res.status == 200) {
  454. // model: JSON.stringify(res), //签到返回的信息
  455. // type: data.taskType.associationType.value, //关联类型
  456. // code: ress, //二维码code
  457. // ids //科室ID数组
  458. uni.navigateTo({
  459. url: `../scanning_djEnd/scanning_djEnd?type=${
  460. data.taskType.associationType.value
  461. }&code=${ress}&ids=${ids}&model=${encodeURIComponent(
  462. JSON.stringify(res)
  463. )}`,
  464. });
  465. } else {
  466. uni.navigateTo({
  467. url: `../scanning_djEnd/scanning_djEnd?model=${encodeURIComponent(
  468. JSON.stringify(res)
  469. )}`,
  470. });
  471. }
  472. });
  473. }
  474. } else {
  475. uni.hideLoading();
  476. uni.showToast({
  477. icon: "none",
  478. title: "请求失败!",
  479. });
  480. }
  481. });
  482. // ------------------------------
  483. });
  484. } else {
  485. if (data.taskType.associationType.value == "patientTransport") {
  486. type = "handleTrans";
  487. let data = {
  488. ids: this.userId.ids,
  489. // "11789558|51131895|7|黄石城乡|陈琛|女|19981003|20180803081051|Z消化内科Ⅰ"
  490. code: this.code,
  491. };
  492. list = data;
  493. }
  494. if (data.taskType.associationType.value == "inspect") {
  495. type = "handleIns";
  496. let data = {
  497. ids: this.userId.ids,
  498. // "11789558|51131895|7|黄石城乡|陈琛|女|19981003|20180803081051|Z消化内科Ⅰ"
  499. code: this.code,
  500. };
  501. list = data;
  502. }
  503. uni.showLoading({
  504. title: "加载中",
  505. mask: true,
  506. });
  507. post("/workerOrder/" + type, list).then((res) => {
  508. uni.hideLoading();
  509. if (res.status == 200) {
  510. uni.navigateTo({
  511. url: `../scanning_insEnd/scanning_insEnd?type=${
  512. data.taskType.associationType.value
  513. }&model=${encodeURIComponent(JSON.stringify(res))}`,
  514. });
  515. } else {
  516. uni.navigateTo({
  517. url: `../scanning_insEnd/scanning_insEnd?model=${encodeURIComponent(
  518. JSON.stringify(res)
  519. )}`,
  520. });
  521. }
  522. });
  523. }
  524. } else {
  525. this.models = {
  526. disjunctor: true,
  527. content: "请选择工单",
  528. icon: "warn",
  529. operate: {
  530. know: "知道了",
  531. },
  532. };
  533. }
  534. },
  535. //选中
  536. ac(data, i, type) {
  537. this.idTYPE = "";
  538. },
  539. //未选中
  540. ac1(data, i, type) {
  541. if (this.idTYPE == data.id) {
  542. //显示
  543. this.isShow = true;
  544. this.idTYPE = "";
  545. this.userId.ids = [];
  546. this.typeData = null;
  547. } else {
  548. if (data.gdState.value >= 5) {
  549. //隐藏
  550. this.isShow = false;
  551. } else {
  552. //显示
  553. this.isShow = true;
  554. }
  555. this.idTYPE = data.id;
  556. this.typeData = data;
  557. this.userId.ids[0] = this.idTYPE;
  558. }
  559. },
  560. texiao() {
  561. if (this.workData && this.workData.length > 0) {
  562. setTimeout(() => {
  563. this.animation.height(0).opacity(0).step();
  564. this.animationData = this.animation.export();
  565. }, 15000);
  566. }
  567. },
  568. // 获取需要帮助权限
  569. getWechatFocusSwitch() {
  570. let postData = {
  571. idx: 0,
  572. sum: 1,
  573. taskType: {
  574. hosIds: this.hosId,
  575. associationType: {
  576. id: 260,
  577. },
  578. },
  579. };
  580. post("/configuration/fetchDataList/taskType", postData).then((res) => {
  581. if (res.status == 200) {
  582. this.wechatFocusSwitch = res.list[0].wechatFocusSwitch || 0;
  583. } else {
  584. uni.showToast({
  585. icon: "none",
  586. title: "请求失败!",
  587. });
  588. }
  589. });
  590. },
  591. },
  592. onLoad(options) {
  593. console.log(options);
  594. this.options = options;
  595. // 送回病房建单 start
  596. if (options.id && options.dept) {
  597. this.sendBuild();
  598. }
  599. // 送回病房建单 end
  600. this.hosId = uni.getStorageSync("userData").infoPermission.hospitals[0].id;
  601. this.getWechatFocusSwitch();
  602. this.infoDATA = JSON.parse(options.infoDATA);
  603. console.log(this.infoDATA);
  604. this.workData = JSON.parse(options.workData);
  605. if (options.patientOrders != 'undefined') {
  606. this.patientOrders = JSON.parse(options.patientOrders);
  607. }
  608. this.code = options.code;
  609. // #ifdef APP-PLUS
  610. webHandle("no", "app");
  611. // #endif
  612. // #ifdef H5
  613. webHandle("no", "wx");
  614. // #endif
  615. },
  616. onShow() {
  617. // 创建动画
  618. this.animation = uni.createAnimation({
  619. duration: 500,
  620. timingFunction: "ease",
  621. delay: 2000,
  622. });
  623. setTimeout(() => {
  624. this.texiao();
  625. }, 500);
  626. },
  627. onHide() {
  628. this.animationData = {};
  629. },
  630. onUnload() {
  631. // 页面关闭后清空数据
  632. this.animationData = {};
  633. },
  634. };
  635. </script>
  636. <style lang="less">
  637. ::-webkit-scrollbar {
  638. width: 0px;
  639. }
  640. ::-webkit-scrollbar-track {
  641. background-color: none;
  642. }
  643. ::-webkit-scrollbar-thumb {
  644. background-color: none;
  645. }
  646. ::-webkit-scrollbar-thumb:hover {
  647. background-color: none;
  648. }
  649. ::-webkit-scrollbar-thumb:active {
  650. background-color: none;
  651. }
  652. .Scanning_ins {
  653. .title {
  654. font-size: 36rpx;
  655. margin-top: 20rpx;
  656. margin-bottom: 20rpx;
  657. font-weight: 700;
  658. position: relative;
  659. height: 40rpx;
  660. .span1 {
  661. position: absolute;
  662. left: 0;
  663. font-weight: 700;
  664. }
  665. .span2 {
  666. position: absolute;
  667. right: 20%;
  668. color: rgb(73, 184, 86);
  669. }
  670. .span3 {
  671. position: absolute;
  672. right: 0;
  673. color: rgb(73, 184, 86);
  674. }
  675. }
  676. .Scanning {
  677. padding: 0 20rpx;
  678. .Scanning_top {
  679. height: 400rpx;
  680. .Scanning_top_icon {
  681. width: 140rpx;
  682. height: 140rpx;
  683. margin: 0 auto;
  684. margin-top: 36rpx;
  685. border-radius: 50%;
  686. line-height: 140rpx;
  687. .cubeic-ok {
  688. font-size: 140rpx;
  689. color: #35b34a;
  690. }
  691. }
  692. .Scanning_top_text {
  693. .text1 {
  694. margin-top: 30rpx;
  695. font-size: 48rpx;
  696. text-align: center;
  697. }
  698. .success_tips{
  699. color: red;
  700. font-size: 30rpx;
  701. }
  702. }
  703. .Scanning_cont {
  704. font-size: 32rpx;
  705. margin-top: 16rpx;
  706. view {
  707. margin-bottom: 8rpx;
  708. display: flex;
  709. justify-content: center;
  710. align-items: center;
  711. button {
  712. font-size: 32rpx;
  713. height: 52rpx;
  714. line-height: 52rpx;
  715. margin: 0;
  716. color: rgb(7, 134, 60);
  717. font-weight: 700;
  718. }
  719. }
  720. .text {
  721. margin-top: 24rpx;
  722. color: #35b34a;
  723. }
  724. .text1 {
  725. margin-top: 24rpx;
  726. color: #ff3b53;
  727. }
  728. }
  729. }
  730. .page_items {
  731. margin-bottom: 110rpx;
  732. .zwsj {
  733. margin-top: 180rpx;
  734. display: flex;
  735. flex-direction: column;
  736. align-items: center;
  737. .zwsj_txt {
  738. font-size: 36rpx;
  739. font-weight: 700;
  740. margin-top: 20rpx;
  741. }
  742. .zwsj_img {
  743. width: 582rpx;
  744. }
  745. }
  746. .page_item {
  747. margin-top: 16rpx;
  748. min-height: 310rpx;
  749. background: #fff;
  750. border-radius: 8rpx;
  751. overflow: hidden;
  752. padding: 0 16rpx;
  753. border: 2rpx solid #e5e9ed;
  754. .L {
  755. width: 40rpx;
  756. height: 40rpx;
  757. border-radius: 50%;
  758. background: #f9fafb;
  759. position: relative;
  760. left: -50rpx;
  761. top: 66rpx;
  762. }
  763. .R {
  764. width: 40rpx;
  765. height: 40rpx;
  766. border-radius: 50%;
  767. background: #f9fafb;
  768. position: relative;
  769. float: right;
  770. right: -50rpx;
  771. top: 26rpx;
  772. }
  773. .starting {
  774. width: 50rpx;
  775. height: 50rpx;
  776. color: #fff;
  777. background: #49b856;
  778. display: inline-block;
  779. border-radius: 50%;
  780. text-align: center;
  781. line-height: 46rpx;
  782. font-size: 32rpx;
  783. margin-right: 6rpx;
  784. }
  785. .End {
  786. width: 50rpx;
  787. height: 50rpx;
  788. color: #fff;
  789. background: #39b199;
  790. display: inline-block;
  791. border-radius: 50%;
  792. text-align: center;
  793. line-height: 46rpx;
  794. font-size: 32rpx;
  795. margin-right: 6rpx;
  796. }
  797. .page_item_top {
  798. height: 86rpx;
  799. border-bottom: 2rpx dashed #e5e9ed;
  800. padding: 0 16rpx;
  801. .page_item_top_L {
  802. height: 100%;
  803. float: left;
  804. line-height: 88rpx;
  805. display: flex;
  806. align-items: center;
  807. .ac {
  808. width: 32rpx;
  809. height: 32rpx;
  810. border: 2rpx solid #ccc;
  811. display: flex;
  812. justify-content: center;
  813. align-items: center;
  814. position: relative;
  815. .acSpan {
  816. width: 24rpx;
  817. height: 24rpx;
  818. background: #39b199;
  819. display: block;
  820. }
  821. }
  822. .ac1 {
  823. width: 32rpx;
  824. height: 32rpx;
  825. border: 2rpx solid #ccc;
  826. display: inline-block;
  827. position: relative;
  828. }
  829. .emergencys {
  830. background: #ff3b53 !important;
  831. width: 124rpx !important;
  832. }
  833. .emergency {
  834. background: #ff3b53 !important;
  835. }
  836. .emergency1 {
  837. background: #49b856 !important;
  838. }
  839. .page_item_cont_start {
  840. text-align: center;
  841. height: 44rpx;
  842. width: 104rpx;
  843. line-height: 44rpx;
  844. border-radius: 8rpx;
  845. background: #49b856;
  846. color: #fff;
  847. display: inline-block;
  848. font-size: 28rpx;
  849. }
  850. .L_time {
  851. color: #6cc076;
  852. font-size: 32rpx;
  853. }
  854. .L_text {
  855. font-size: 32rpx;
  856. display: inline-block;
  857. font-weight: 700;
  858. }
  859. }
  860. .page_item_top_R {
  861. height: 60rpx;
  862. float: right;
  863. padding-top: 20rpx;
  864. font-size: 32rpx;
  865. position: absolute;
  866. right: 50rpx;
  867. .L_iocn {
  868. display: inline-block;
  869. height: 52rpx;
  870. line-height: 48rpx;
  871. color: rgb(7, 134, 60);
  872. font-size: 36rpx;
  873. font-weight: 700;
  874. }
  875. }
  876. }
  877. .page_item_cont {
  878. min-height: 180rpx;
  879. max-height: 424rpx;
  880. padding: 0 16rpx;
  881. text-align: left;
  882. position: relative;
  883. .text_big {
  884. font-size: 32rpx;
  885. position: absolute;
  886. right: 16rpx;
  887. font-weight: 700;
  888. margin-top: 10rpx;
  889. }
  890. .text_big2 {
  891. font-size: 32rpx;
  892. position: absolute;
  893. right: 16rpx;
  894. font-weight: 700;
  895. }
  896. .line {
  897. height: 20rpx;
  898. width: 2rpx;
  899. border-left: 2rpx solid #e5e9ed;
  900. position: absolute;
  901. top: 82rpx;
  902. left: 40rpx;
  903. }
  904. .lines {
  905. height: 40%;
  906. width: 2rpx;
  907. border-left: 2rpx solid #e5e9ed;
  908. position: absolute;
  909. top: 23%;
  910. left: 36rpx;
  911. }
  912. .page_item_cont_T {
  913. padding-top: 28rpx;
  914. font-size: 28rpx;
  915. .page_item_cont_title {
  916. height: 100%;
  917. font-size: 32rpx;
  918. }
  919. }
  920. .page_item_cont_B {
  921. padding-top: 28rpx;
  922. margin-bottom: 28rpx;
  923. .page_item_cont_title {
  924. height: 60rpx;
  925. font-size: 32rpx;
  926. }
  927. .page_item_cont_title1 {
  928. height: 60rpx;
  929. line-height: 60rpx;
  930. font-size: 32rpx;
  931. padding-left: 64rpx;
  932. }
  933. }
  934. }
  935. .page_item_foot {
  936. border-top: 2rpx dashed #e5e9ed;
  937. border-bottom: 2rpx dashed #e5e9ed;
  938. padding: 28rpx 16rpx;
  939. text-align: left;
  940. .page_item_foot_text {
  941. height: 48rpx;
  942. font-size: 32rpx;
  943. line-height: 48rpx;
  944. margin-bottom: 20rpx;
  945. .text1 {
  946. color: rgb(102, 102, 102);
  947. }
  948. .text2 {
  949. float: right;
  950. font-weight: 700;
  951. }
  952. }
  953. }
  954. #infos {
  955. display: none;
  956. }
  957. .page_item_infos {
  958. padding-bottom: 20rpx;
  959. border-bottom: 2rpx dashed #e5e9ed;
  960. .page_item_info2 {
  961. text-align: left;
  962. line-height: 60rpx;
  963. font-size: 32rpx;
  964. padding-left: 16rpx;
  965. .page_item_foot_text {
  966. height: 48rpx;
  967. font-size: 32rpx;
  968. line-height: 48rpx;
  969. margin-bottom: 20rpx;
  970. .text1 {
  971. color: rgb(102, 102, 102);
  972. }
  973. .text2 {
  974. float: right;
  975. font-weight: 700;
  976. }
  977. }
  978. }
  979. }
  980. }
  981. }
  982. .foot_btn2 {
  983. position: fixed;
  984. bottom: 0;
  985. right: 20rpx;
  986. left: 20rpx;
  987. line-height: 66rpx;
  988. height: 100rpx;
  989. border-top: 2rpx solid #e5e9ed;
  990. background: #f9fafb;
  991. display: flex;
  992. justify-content: space-between;
  993. .btn1,
  994. .btn2,
  995. .btn3 {
  996. height: 66rpx;
  997. width: 32%;
  998. background-image: linear-gradient(to right, #72c172, #3bb197);
  999. color: #fff;
  1000. border-radius: 8rpx;
  1001. font-size: 32rpx;
  1002. margin-top: 16rpx;
  1003. text-align: center;
  1004. }
  1005. .btn3 {
  1006. width: 100%;
  1007. }
  1008. }
  1009. }
  1010. }
  1011. </style>