scanning_all.vue 34 KB

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