specimenCheckingDetail.vue 28 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964
  1. <template>
  2. <view class="specimenCheckingDetail">
  3. <view class="page_header" v-if="options.t && (modifyReason || imgs.length)">
  4. <view class="page_header_item" v-if="modifyReason">
  5. <view class="page_header_title"> 修改原因: </view>
  6. <view class="page_header_content">
  7. {{ modifyReason }}
  8. </view>
  9. </view>
  10. <view class="page_header_item" v-if="imgs.length">
  11. <view class="page_header_title"> 图片列表: </view>
  12. <view class="page_header_content">
  13. <image
  14. v-for="(item, i) in imgs"
  15. :key="i"
  16. :src="item"
  17. @click="previewImage(i)"
  18. mode="widthFix"
  19. @error="close(i)"
  20. ></image>
  21. </view>
  22. </view>
  23. </view>
  24. <view class="page_item_wrap" v-for="item in list" :key="item.id">
  25. <view class="page_item">
  26. <view class="page_item_top">
  27. <view class="page_item_top-inner">
  28. <view class="page_item_top_L">
  29. <view class="L_text">{{ item.patientName }}</view>
  30. </view>
  31. <view class="page_item_top_R">
  32. <view class="L_iocn"
  33. ><button
  34. type="primary"
  35. size="mini"
  36. class="back"
  37. @click="back(item, msg.uuid)" v-if="options.t"
  38. >
  39. 退回
  40. </button></view
  41. >
  42. </view>
  43. </view>
  44. </view>
  45. <view class="page_item_cont">
  46. <view class="page_item_cont_T">
  47. <view class="page_item_cont_title">
  48. <view> 检验项目 </view>
  49. <view class="text_big">{{ item.specimenDesc || "无" }}</view>
  50. </view>
  51. <view class="page_item_cont_title">
  52. <view> 标本编码 </view>
  53. <view class="text_big">{{ item.scode || "无" }}</view>
  54. </view>
  55. <view class="page_item_cont_title">
  56. <view> 标本类型 </view>
  57. <view class="text_big">{{
  58. item.stype ? item.stype.name : "无"
  59. }}</view>
  60. </view>
  61. <view class="page_item_cont_title">
  62. <view> 申请科室 </view>
  63. <view class="text_big">{{
  64. item.sickRoom ? item.sickRoom.dept : "无"
  65. }}</view>
  66. </view>
  67. <view class="page_item_cont_title">
  68. <view> 住院号 </view>
  69. <view class="text_big">{{ item.residenceNo || "无" }}</view>
  70. </view>
  71. </view>
  72. </view>
  73. <view class="L"></view>
  74. <view class="R"></view>
  75. </view>
  76. <view class="L-l"></view>
  77. <view class="R-l"></view>
  78. </view>
  79. <view class="foot_btn2">
  80. <view class="btn2" @click="showChangeSpe()">修改数量</view>
  81. <view class="btn2" @click="goto()">返回</view>
  82. </view>
  83. <!-- 修改标本数量弹窗 -->
  84. <changeSpeNum
  85. v-if="changeSpeModels.disjunctor"
  86. :title="changeSpeModels.title"
  87. :disjunctor="changeSpeModels.disjunctor"
  88. @ok="speOk"
  89. @cancel="speCancel"
  90. :num="speNum"
  91. >
  92. </changeSpeNum>
  93. <!-- 退回弹窗 -->
  94. <backModel
  95. v-if="backModels.disjunctor"
  96. :title="backModels.title"
  97. :disjunctor="backModels.disjunctor"
  98. @ok="backOk"
  99. @cancel="backCancel"
  100. ></backModel>
  101. <!-- 填写交接人账号弹窗 -->
  102. <selectAccount
  103. v-if="hosModels.disjunctor"
  104. :title="hosModels.title"
  105. :disjunctor="hosModels.disjunctor"
  106. @ok="hosOk"
  107. @cancel="hosCancel"
  108. >
  109. </selectAccount>
  110. <!-- 弹窗 -->
  111. <showModel
  112. :title="models.title"
  113. :icon="models.icon"
  114. :disjunctor="models.disjunctor"
  115. :content="models.content"
  116. :operate="models.operate"
  117. @know="know"
  118. ></showModel>
  119. </view>
  120. </template>
  121. <script>
  122. import { get, post, webHandle } from "../../http/http.js";
  123. export default {
  124. data() {
  125. return {
  126. res: {},
  127. backStatus: "",
  128. workOrderId: 0,
  129. backSpecimen: {},
  130. backParams: {},
  131. imgs: [],
  132. // --------------------
  133. speNum: 0,
  134. modifyReason: "",
  135. options: {},
  136. selectDeptId: null,
  137. msg: {}, //传递的信息
  138. list: [],
  139. targetDeptShow: [], //目标科室
  140. // 修改标本数量弹窗model
  141. changeSpeModels: {
  142. disjunctor: false,
  143. },
  144. // 退回弹窗model
  145. backModels: {
  146. disjunctor: false,
  147. },
  148. // 填写交接人账号弹窗model
  149. hosModels: {
  150. disjunctor: false,
  151. },
  152. // 弹窗model
  153. models: {
  154. disjunctor: false,
  155. },
  156. };
  157. },
  158. methods: {
  159. close(i) {
  160. this.imgs.splice(i, 1);
  161. },
  162. know() {
  163. this.models.disjunctor = false;
  164. if (this.models.icon === "success") {
  165. uni.navigateTo({
  166. url: "../receiptpage/receiptpage",
  167. });
  168. }
  169. },
  170. // 退回
  171. back(specimen, workOrderId) {
  172. this.backSpecimen = specimen;
  173. this.backStatus = "back";
  174. this.workOrderId = workOrderId;
  175. this.showBack();
  176. },
  177. // 退回
  178. backHandler(specimen, workorderId, data) {
  179. console.log(specimen);
  180. const { reasonForReturn, remarks } = this.backParams;
  181. uni.showLoading({
  182. title: "加载中",
  183. mask: true,
  184. });
  185. let postData = {
  186. deptId:
  187. this.selectDeptId == "undefined"
  188. ? this.msg.startDept
  189. : this.selectDeptId,
  190. reasonForReturn,
  191. remarks,
  192. scode: specimen.scode,
  193. hosId: uni.getStorageSync("userData").user.currentHospital.id,
  194. speState: specimen.speState ? specimen.speState.id : undefined,
  195. handoverId: data ? data.accountId : undefined,
  196. handoverName: data ? data.accountName : undefined,
  197. gdId: workorderId || undefined,
  198. };
  199. post("/workerOrder/returnSpecimen", postData).then((res) => {
  200. uni.hideLoading();
  201. if (res.state == 200) {
  202. this.models = {
  203. disjunctor: true,
  204. title: "提示",
  205. content: `标本退回成功`,
  206. icon: "success",
  207. };
  208. } else {
  209. this.models = {
  210. disjunctor: true,
  211. title: "提示",
  212. content: `标本退回失败`,
  213. icon: "error",
  214. };
  215. }
  216. });
  217. },
  218. // 填写交接人账号-确认
  219. hosOk(data) {
  220. console.log(data);
  221. const { accountName, account, accountId } = data;
  222. if (!accountName && !account) {
  223. //没有填写交接人
  224. uni.showModal({
  225. title: "提示",
  226. content: "请填写交接人账号!",
  227. showCancel: false,
  228. success: function (res) {
  229. if (res.confirm) {
  230. console.log("用户点击确定");
  231. } else if (res.cancel) {
  232. console.log("用户点击取消");
  233. }
  234. },
  235. });
  236. return;
  237. } else if ((!accountName && account) || (accountName && !account)) {
  238. //没有填写交接人
  239. uni.showModal({
  240. title: "提示",
  241. content: "请填写正确的交接人账号!",
  242. showCancel: false,
  243. success: function (res) {
  244. if (res.confirm) {
  245. console.log("用户点击确定");
  246. } else if (res.cancel) {
  247. console.log("用户点击取消");
  248. }
  249. },
  250. });
  251. return;
  252. }
  253. this.hosModels.disjunctor = false;
  254. uni.showLoading({
  255. title: "加载中",
  256. mask: true,
  257. });
  258. console.log(this.backStatus, "this.backStatus");
  259. if ((this.backStatus = "back")) {
  260. // 退回
  261. this.backHandler(this.backSpecimen, this.msg.uuid, data);
  262. }
  263. },
  264. // 填写交接人账号-取消
  265. hosCancel() {
  266. this.hosModels.disjunctor = false;
  267. },
  268. // 填写交接人账号弹窗
  269. showSelectAccount() {
  270. this.hosModels = {
  271. title: "填写交接人账号",
  272. disjunctor: true,
  273. };
  274. },
  275. // 退回-确认
  276. backOk(data) {
  277. console.log(data);
  278. this.backParams = data;
  279. this.hosModels.disjunctor = false;
  280. let postData = {
  281. idx: 0,
  282. sum: 1,
  283. hospitalConfig: {
  284. hosId: uni.getStorageSync("userData").user.currentHospital.id,
  285. key: "returnSpecimenWhetherHandover",
  286. },
  287. };
  288. uni.showLoading({
  289. title: "加载中",
  290. mask: true,
  291. });
  292. post("/simple/data/fetchDataList/hospitalConfig", postData).then(
  293. (result) => {
  294. uni.hideLoading();
  295. if (result.status == 200) {
  296. if (result.list[0].value == 1) {
  297. this.showSelectAccount();
  298. } else {
  299. this.backHandler(this.backSpecimen, this.workOrderId);
  300. }
  301. } else {
  302. uni.showToast({
  303. icon: "none",
  304. title: "请求失败!",
  305. });
  306. }
  307. }
  308. );
  309. },
  310. // 退回-取消
  311. backCancel() {
  312. this.backModels.disjunctor = false;
  313. },
  314. // 退回弹窗
  315. showBack() {
  316. this.backModels = {
  317. title: "退回",
  318. disjunctor: true,
  319. };
  320. },
  321. previewImage(index) {
  322. //uniapp预览轮播图
  323. uni.previewImage({
  324. current: index, //预览图片的下标
  325. urls: this.imgs, //预览图片的地址,必须要数组形式,如果不是数组形式就转换成数组形式就可以
  326. });
  327. },
  328. // ---------------------------
  329. getInfo() {
  330. uni.showLoading({
  331. mask: true,
  332. title: "加载中",
  333. });
  334. let postData = {
  335. deptId:
  336. this.selectDeptId == "undefined"
  337. ? this.msg.startDept
  338. : this.selectDeptId,
  339. gdId: this.msg.uuid,
  340. };
  341. post(`/api/getStartDeptSpecimensNum`, postData).then((res) => {
  342. uni.hideLoading();
  343. if (res.status == 200) {
  344. this.speNum = res.deptSpecimensNum;
  345. this.modifyReason = res.modifyReason;
  346. get(
  347. `/common/common/listAttachment/specimenPhotos/${res.bindId}`
  348. ).then((result) => {
  349. if (result.status == 200) {
  350. this.imgs = result.data.map((v) => v.previewUrl);
  351. } else {
  352. this.imgs = [];
  353. }
  354. });
  355. } else {
  356. this.speNum = "";
  357. this.modifyReason = "";
  358. }
  359. });
  360. },
  361. getList() {
  362. uni.showLoading({
  363. mask: true,
  364. title: "加载中",
  365. });
  366. let postData = {
  367. checkDept: this.options.endDepts, //终点科室
  368. transDept: Number(this.msg.startDept), //起点科室id
  369. };
  370. if (this.selectDeptId != "undefined") {
  371. if (Number(this.msg.startDept) != Number(this.selectDeptId)) {
  372. postData.checkDept = Number(this.selectDeptId); //签到的科室或者选择的科室
  373. }
  374. }
  375. post(`/api/getTransDeptSpecimens`, postData).then((res) => {
  376. uni.hideLoading();
  377. uni.stopPullDownRefresh();
  378. if (res.status == 200) {
  379. this.list = res.data;
  380. this.getInfo();
  381. } else {
  382. uni.showToast({
  383. icon: "none",
  384. title: "请求失败!",
  385. });
  386. }
  387. });
  388. },
  389. // 返回
  390. goto() {
  391. if (this.options.t == "big") {
  392. uni.navigateBack();
  393. } else if (this.options.t == "small") {
  394. uni.navigateBack();
  395. } else {
  396. uni.navigateTo({
  397. url: `../../pages/specimenChecking/specimenChecking?infoDATA=${encodeURIComponent(
  398. JSON.stringify(this.msg)
  399. )}`,
  400. });
  401. }
  402. },
  403. // 修改标本数量-确认
  404. speOk(data) {
  405. console.log(data);
  406. const pathUrl = uni.getStorageSync("path");
  407. const { speNum, reason, imageValue } = data;
  408. this.changeSpeModels.disjunctor = false;
  409. uni.showLoading({
  410. mask: true,
  411. title: "加载中",
  412. });
  413. let postData = {
  414. checkDept: this.options.endDepts, //终点科室
  415. transDeptId: this.msg.startDept,
  416. gdId: this.msg.uuid,
  417. deptId:
  418. this.selectDeptId == "undefined"
  419. ? this.msg.startDept
  420. : this.selectDeptId,
  421. specimensNum: speNum,
  422. modifyReason: reason,
  423. };
  424. post("/api/updateCheckDeptSpecimensNum", postData).then((res) => {
  425. if (res.status == 200) {
  426. console.log(imageValue);
  427. if (!imageValue.length) {
  428. uni.hideLoading();
  429. uni.showModal({
  430. title: "提示",
  431. content: "修改成功!",
  432. showCancel: false,
  433. success: (result) => {
  434. if (result.confirm) {
  435. console.log("用户点击确定");
  436. if (this.options.t == "big") {
  437. if (this.options.gdState == 4) {
  438. // 待到达
  439. uni.navigateTo({
  440. url: `../../pages/receiptpage/receiptpage`,
  441. });
  442. } else if (this.options.gdState == 5) {
  443. // 待送达
  444. if (res.type1 === "plan-spe-ddd-2") {
  445. } else {
  446. let content = `本工单已签到<strong class="red">${
  447. res.scanSet ? res.scanSet.join("、") : ""
  448. }</strong>,剩余需签到科室<strong class="red">${
  449. res.notScanSet ? res.notScanSet.join("、") : ""
  450. }</strong>,总签收<strong class="red">${
  451. res.totalAcceptance
  452. }</strong>只,剩余<strong class="red">${
  453. res.notAcceptance
  454. }</strong>只未签收,您确定完成工单吗?`;
  455. uni.navigateTo({
  456. url: `../scanning/scanning?type=${res.type}&type1=${
  457. res.type1
  458. }&id=${encodeURIComponent(
  459. JSON.stringify([res.gdid])
  460. )}&content=${content}`,
  461. });
  462. }
  463. }
  464. } else if (this.options.t == "small") {
  465. if (this.selectDeptId == "undefined") {
  466. //快捷建单建单进入
  467. uni.navigateTo({
  468. url: `../../pages/receiptpage/receiptpage`,
  469. });
  470. } else {
  471. if (this.options.gdState == 4) {
  472. // 待到达
  473. uni.navigateTo({
  474. url: `../../pages/receiptpage/receiptpage`,
  475. });
  476. } else if (this.options.gdState == 5) {
  477. // 待送达
  478. if (res.type1 === "plan-spe-ddd-2") {
  479. } else {
  480. let content = `本工单已签到<strong class="red">${
  481. res.scanSet ? res.scanSet.join("、") : ""
  482. }</strong>,剩余需签到科室<strong class="red">${
  483. res.notScanSet ? res.notScanSet.join("、") : ""
  484. }</strong>,总签收<strong class="red">${
  485. res.totalAcceptance
  486. }</strong>只,剩余<strong class="red">${
  487. res.notAcceptance
  488. }</strong>只未签收,您确定完成工单吗?`;
  489. uni.navigateTo({
  490. url: `../scanning/scanning?type=${res.type}&type1=${
  491. res.type1
  492. }&id=${encodeURIComponent(
  493. JSON.stringify([res.gdid])
  494. )}&content=${content}`,
  495. });
  496. }
  497. }
  498. }
  499. } else {
  500. uni.navigateTo({
  501. url: `../../pages/specimenChecking/specimenChecking?infoDATA=${encodeURIComponent(
  502. JSON.stringify(this.msg)
  503. )}`,
  504. });
  505. }
  506. } else if (result.cancel) {
  507. console.log("用户点击取消");
  508. }
  509. },
  510. });
  511. return;
  512. }
  513. let n = 0;
  514. imageValue.forEach((v) => {
  515. // 图片上传 start
  516. console.log("压缩前");
  517. let canvasWidth = v.image.width; //图片原始长宽
  518. let canvasHeight = v.image.height;
  519. let img = new Image();
  520. img.src = v.path;
  521. let canvas = document.createElement("canvas");
  522. let ctx = canvas.getContext("2d");
  523. canvas.width = canvasWidth;
  524. canvas.height = canvasHeight;
  525. ctx.drawImage(img, 0, 0, canvasWidth, canvasHeight);
  526. canvas.toBlob(
  527. (fileSrc) => {
  528. let tp = window.URL.createObjectURL(fileSrc);
  529. console.log("压缩后");
  530. n++;
  531. uni.uploadFile({
  532. url:
  533. pathUrl +
  534. "/common/common/uploadAttachment/specimenPhotos/" +
  535. res.deptSpecimensNumId +
  536. "/666",
  537. filePath: tp,
  538. name: "file",
  539. formData: {
  540. filename: v.cloudPath,
  541. },
  542. success: (uploadFileRes) => {
  543. console.log(uploadFileRes);
  544. if (--n === 0) {
  545. uni.hideLoading();
  546. uni.showModal({
  547. title: "提示",
  548. content: "修改成功!",
  549. showCancel: false,
  550. success: (res) => {
  551. if (res.confirm) {
  552. console.log("用户点击确定", this.options.t);
  553. if (this.options.t == "big") {
  554. if (this.options.gdState == 4) {
  555. // 待到达
  556. uni.navigateTo({
  557. url: `../../pages/receiptpage/receiptpage`,
  558. });
  559. } else if (this.options.gdState == 5) {
  560. // 待送达
  561. uni.navigateTo({
  562. url: `../../pages/receiptpage/receiptpage`,
  563. });
  564. }
  565. } else if (this.options.t == "small") {
  566. if (this.selectDeptId == "undefined") {
  567. //快捷建单建单进入
  568. uni.navigateTo({
  569. url: `../../pages/receiptpage/receiptpage`,
  570. });
  571. } else {
  572. if (this.options.gdState == 4) {
  573. // 待到达
  574. uni.navigateTo({
  575. url: `../../pages/receiptpage/receiptpage`,
  576. });
  577. } else if (this.options.gdState == 5) {
  578. // 待送达
  579. uni.navigateTo({
  580. url: `../../pages/receiptpage/receiptpage`,
  581. });
  582. }
  583. }
  584. } else {
  585. uni.navigateTo({
  586. url: `../../pages/specimenChecking/specimenChecking?infoDATA=${encodeURIComponent(
  587. JSON.stringify(this.msg)
  588. )}`,
  589. });
  590. }
  591. } else if (res.cancel) {
  592. console.log("用户点击取消");
  593. }
  594. },
  595. });
  596. }
  597. },
  598. fail: (err) => {
  599. n--;
  600. console.error(err);
  601. uni.hideLoading();
  602. uni.showToast({
  603. icon: "none",
  604. title: "上传失败",
  605. duration: 2000,
  606. });
  607. },
  608. });
  609. },
  610. "image/jpeg",
  611. 0.3
  612. );
  613. // 图片上传 end
  614. });
  615. } else {
  616. uni.hideLoading();
  617. uni.showToast({
  618. icon: "none",
  619. title: "请求失败!",
  620. });
  621. }
  622. });
  623. },
  624. // 修改标本数量-取消
  625. speCancel() {
  626. this.changeSpeModels.disjunctor = false;
  627. },
  628. // 修改标本数量弹窗
  629. showChangeSpe() {
  630. this.changeSpeModels = {
  631. title: "修改标本数量",
  632. disjunctor: true,
  633. };
  634. },
  635. },
  636. onLoad(options) {
  637. console.log(options, "快捷建单");
  638. this.options = options;
  639. this.msg = JSON.parse(options.infoDATA);
  640. this.selectDeptId = options.id;
  641. // this.msg = JSON.parse(options.infoDATA);
  642. // this.targetDeptShow = this.msg.targetDeptShow.split(",");
  643. this.getList();
  644. // #ifdef APP-PLUS
  645. webHandle("no", "app");
  646. // #endif
  647. // #ifdef H5
  648. webHandle("no", "wx");
  649. // #endif
  650. },
  651. onPullDownRefresh() {
  652. this.getList();
  653. },
  654. };
  655. </script>
  656. <style lang="less" scoped>
  657. .specimenCheckingDetail {
  658. padding-bottom: 100rpx;
  659. .page_header {
  660. margin: 20rpx;
  661. padding: 16rpx;
  662. border: 2rpx solid #e5e9ed;
  663. background: #fff;
  664. border-radius: 8rpx;
  665. .page_header_item {
  666. margin-bottom: 16rpx;
  667. .page_header_title {
  668. margin-bottom: 8rpx;
  669. font-weight: bold;
  670. }
  671. .page_header_content {
  672. display: flex;
  673. image {
  674. height: 100rpx;
  675. width: 30%;
  676. margin: 0 8rpx;
  677. }
  678. }
  679. }
  680. }
  681. .page_item_wrap {
  682. width: 100%;
  683. height: auto;
  684. box-sizing: border-box;
  685. position: relative;
  686. margin-bottom: 16rpx;
  687. .page_item {
  688. margin-top: 16rpx;
  689. margin-bottom: 124rpx;
  690. background: #fff;
  691. border-radius: 8rpx;
  692. margin: 0 20rpx;
  693. border: 2rpx solid #e5e9ed;
  694. position: relative;
  695. overflow: hidden;
  696. padding: 0 16rpx;
  697. .L {
  698. width: 40rpx;
  699. height: 40rpx;
  700. border-radius: 50%;
  701. background: #f9fafb;
  702. position: absolute;
  703. left: -20rpx;
  704. top: 68rpx;
  705. border: 2rpx solid #e5e9ed;
  706. }
  707. .R {
  708. width: 40rpx;
  709. height: 40rpx;
  710. border-radius: 50%;
  711. background: #f9fafb;
  712. position: absolute;
  713. float: right;
  714. right: -20rpx;
  715. top: 68rpx;
  716. border: 2rpx solid #e5e9ed;
  717. }
  718. .starting {
  719. width: 50rpx;
  720. height: 50rpx;
  721. color: #fff;
  722. background: #49b856;
  723. display: inline-block;
  724. border-radius: 50%;
  725. text-align: center;
  726. line-height: 46rpx;
  727. font-size: 32rpx;
  728. margin-right: 6rpx;
  729. }
  730. .End {
  731. width: 50rpx;
  732. height: 50rpx;
  733. color: #fff;
  734. background: #39b199;
  735. display: inline-block;
  736. border-radius: 50%;
  737. text-align: center;
  738. line-height: 46rpx;
  739. font-size: 32rpx;
  740. margin-right: 6rpx;
  741. }
  742. .page_item_top {
  743. height: 88rpx;
  744. border-bottom: 2rpx dashed #e5e9ed;
  745. padding: 0 16rpx;
  746. .page_item_top-inner {
  747. display: flex;
  748. justify-content: space-between;
  749. align-items: center;
  750. height: 100%;
  751. .page_item_top_L {
  752. .emergencys {
  753. background: #ff3b53 !important;
  754. width: 124rpx !important;
  755. }
  756. .emergency {
  757. background: #ff3b53 !important;
  758. }
  759. .emergency1 {
  760. background: #49b856 !important;
  761. }
  762. .page_item_cont_start {
  763. text-align: center;
  764. height: 44rpx;
  765. width: 104rpx;
  766. line-height: 44rpx;
  767. border-radius: 8rpx;
  768. background: #49b856;
  769. color: #fff;
  770. display: inline-block;
  771. }
  772. .L_time {
  773. color: #6cc076;
  774. font-size: 32rpx;
  775. }
  776. .L_text {
  777. font-size: 32rpx;
  778. font-weight: 700;
  779. }
  780. }
  781. .page_item_top_R {
  782. font-size: 32rpx;
  783. .back {
  784. background-color: #49b856;
  785. }
  786. .L_iocn {
  787. color: rgb(7, 134, 60);
  788. font-size: 36rpx;
  789. font-weight: 700;
  790. }
  791. }
  792. }
  793. }
  794. .page_item_cont {
  795. min-height: 90rpx;
  796. padding: 0 16rpx;
  797. text-align: left;
  798. position: relative;
  799. .text_big {
  800. font-size: 32rpx;
  801. font-weight: 700;
  802. margin-top: 10rpx;
  803. p {
  804. font-weight: 700;
  805. line-height: 1.5;
  806. }
  807. }
  808. .page_item_cont_T {
  809. padding-top: 28rpx;
  810. padding-bottom: 28rpx;
  811. font-size: 28rpx;
  812. .page_item_cont_title {
  813. height: 100%;
  814. font-size: 32rpx;
  815. display: flex;
  816. justify-content: space-between;
  817. }
  818. }
  819. .page_item_cont_B {
  820. padding-top: 28rpx;
  821. margin-bottom: 28rpx;
  822. .page_item_cont_title {
  823. font-size: 32rpx;
  824. display: flex;
  825. justify-content: space-between;
  826. }
  827. .page_item_cont_title1 {
  828. height: 60rpx;
  829. line-height: 60rpx;
  830. font-size: 32rpx;
  831. padding-left: 64rpx;
  832. }
  833. }
  834. }
  835. .page_item_foot {
  836. border-top: 2rpx dashed #e5e9ed;
  837. border-bottom: 2rpx dashed #e5e9ed;
  838. padding: 28rpx 16rpx;
  839. text-align: left;
  840. .page_item_foot_text {
  841. font-size: 32rpx;
  842. margin-bottom: 20rpx;
  843. .text1 {
  844. color: rgb(102, 102, 102);
  845. }
  846. .text2 {
  847. float: right;
  848. font-weight: 700;
  849. }
  850. }
  851. }
  852. #infos {
  853. display: none;
  854. }
  855. .page_item_infos {
  856. padding-bottom: 20rpx;
  857. border-bottom: 2rpx dashed #e5e9ed;
  858. .page_item_info2 {
  859. text-align: left;
  860. line-height: 60rpx;
  861. font-size: 32rpx;
  862. padding-left: 16rpx;
  863. .page_item_foot_text {
  864. font-size: 32rpx;
  865. margin-bottom: 20rpx;
  866. .text1 {
  867. color: rgb(102, 102, 102);
  868. }
  869. .text2 {
  870. float: right;
  871. font-weight: 700;
  872. }
  873. }
  874. }
  875. }
  876. }
  877. .L-l {
  878. width: 2rpx;
  879. height: 40rpx;
  880. background: #f9fafb;
  881. position: absolute;
  882. left: 20rpx;
  883. top: 72rpx;
  884. }
  885. .R-l {
  886. width: 2rpx;
  887. height: 40rpx;
  888. background: #f9fafb;
  889. position: absolute;
  890. right: 20rpx;
  891. top: 72rpx;
  892. }
  893. }
  894. .foot_btn2 {
  895. position: fixed;
  896. bottom: 0;
  897. width: 100vw;
  898. padding: 0 20rpx;
  899. box-sizing: border-box;
  900. line-height: 66rpx;
  901. height: 100rpx;
  902. border-top: 2rpx solid #e5e9ed;
  903. background: #f9fafb;
  904. text-align: center;
  905. display: flex;
  906. justify-content: center;
  907. align-items: center;
  908. .btn2 {
  909. height: 66rpx;
  910. flex: 1;
  911. margin: 16rpx 16rpx 0;
  912. background-image: linear-gradient(to right, #72c172, #3bb197);
  913. color: #fff;
  914. border-radius: 8rpx;
  915. font-size: 32rpx;
  916. }
  917. }
  918. }
  919. </style>