scanning_all.vue 32 KB

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