scanning_djInfo.vue 28 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822
  1. <template>
  2. <view class="Scanning_djInfo">
  3. <view class="Scanning_top" v-if="res.status == 200">
  4. <view class="Scanning_top_icon">
  5. <view v-if="type == 'specimenPlan' || type == 'specimen'">
  6. <view class="fweight speNum" style="color: red;"> {{ speNum }} </view>
  7. </view>
  8. <text v-else class="cubeic-ok icon_transport transport-duigou"></text>
  9. </view>
  10. <view class="Scanning_top_text">
  11. <view class="text1">操作成功</view>
  12. </view>
  13. </view>
  14. <view class="Scanning_top" v-if="
  15. res.status == 10005 ||
  16. res.status == 100018 ||
  17. res.status == 500 ||
  18. res.status == 10004 ||
  19. res.status == 100021 ||
  20. res.status == 100020 ||
  21. res.status == 100019 ||
  22. res.status == 100031
  23. ">
  24. <view class="Scanning_top_icon">
  25. <text class="cubeic-close icon_transport transport-shibai"></text>
  26. </view>
  27. <view class="Scanning_top_text">
  28. <view class="text1">操作失败</view>
  29. <view class="text1 f30" v-if="queryObj.qrcode !== undefined">扫描内容:{{queryObj.qrcode}}</view>
  30. </view>
  31. </view>
  32. <view class="Scanning_cont" v-if="res.status != 200 || res.msg != '成功!'">
  33. <view>{{ res.msg }}</view>
  34. </view>
  35. <view class="Scanning_cont" v-if="
  36. (res.status == 200 && type == 'specimenPlan') ||
  37. (res.status == 200 && type == 'specimen')
  38. ">
  39. <view>{{ infoDATA.data.stype.name }}{{infoDATA.data.scode}}</view>
  40. <view>检验项目 : {{ infoDATA.data.specimenDesc || "-" }}</view>
  41. <view>
  42. {{ infoDATA.data.sickRoom ? infoDATA.data.sickRoom.dept : "" }}
  43. <text style="width: 4em;text-align: center;margin-left: 1em;margin-right: 1em;" class="icon_transport transport-arrow-right-full"></text>
  44. {{ infoDATA.data.checkDept ? infoDATA.data.checkDept.dept : "" }}
  45. </view>
  46. <view>患者姓名 : {{ infoDATA.data.patientName}}{{infoDATA.data.bedNum}}</view>
  47. <view>住院号 : {{ infoDATA.data.residenceNo || '-' }}</view>
  48. <!-- <view>标本类型 : {{ infoDATA.data.stype.name || "-" }}</view>
  49. <view>标本编号 : {{ infoDATA.data.scode || "-" }}</view>
  50. <view>检验科室 : {{ infoDATA.data.checkDept ? infoDATA.data.checkDept.dept : "-" }}</view>
  51. <view>检验项目 : {{ infoDATA.data.specimenDesc || "-" }}</view>
  52. <view>患者姓名 : {{ infoDATA.data.patientName}}<text v-if="infoDATA.data.bedNum">({{infoDATA.data.bedNum}})</text></view>
  53. <view>住院号 : {{ infoDATA.data.residenceNo || "-" }}</view>
  54. <view v-if="
  55. accountObj && infoType !== 'spe-ddd-1' && infoType !== 'spe-dsd-1'&& infoType !== 'plan-spe-ddd-1' && infoType !== 'plan-spe-dsd-1'
  56. ">
  57. 交接人账号 : {{ accountObj.account }}
  58. </view>
  59. <view v-if="
  60. accountObj && infoType !== 'spe-ddd-1' && infoType !== 'spe-dsd-1'&& infoType !== 'plan-spe-ddd-1' && infoType !== 'plan-spe-dsd-1'
  61. ">
  62. 交接人姓名 : {{ accountObj.accountName }}
  63. </view>
  64. <view>已扫描 : {{ speNum }}</view> -->
  65. </view>
  66. <view class="Scanning_cont" v-if="
  67. (res.status == 200 && type == 'inspect') || type == 'patientTransport'
  68. ">
  69. <view v-if="infoDATA.patient">患者姓名 : {{ infoDATA.patient || "-" }}</view>
  70. <view v-if="infoDATA.patient">患者编号 : {{ infoDATA.patientCode || "-" }}</view>
  71. <view v-if="infoDATA.patient">住院科室 : {{ infoDATA.deptName || "-" }}</view>
  72. <view v-if="infoDATA.patient">床号 : {{ infoDATA.bedNum || "-" }}</view>
  73. <view v-if="infoDATA.data">
  74. 检查项目 :
  75. <text v-for="(data, i) in infoDATA.data" :key="i">{{ data.inspectName }},</text>
  76. </view>
  77. <view v-if="
  78. infoType == 'ins-dsd-1' ||
  79. infoType == 'trans-dsd-1' ||
  80. infoDATA.type == 'trans-dsd-1'
  81. ">工单已完成</view>
  82. <view v-if="infoDATA.type == 'ins-half-ok'">已到达检查科室,工单已完成。</view>
  83. </view>
  84. <view class="Scanning_cont" v-if="
  85. (res.status == 200 && type == 'drugsBag') ||
  86. (res.status == 200 && type == 'jPBag')
  87. ">
  88. <view> 药包类型 : {{infoDATA.data.packType ? DRUGSBAG_TYPE[infoDATA.data.packType] : "-"}} </view>
  89. <view v-if="type == 'drugsBag'">药包编码 : #{{ infoDATA.data.packid }}</view>
  90. <view v-if="type == 'jPBag'">静配编码 : #{{ infoDATA.data.packid }}</view>
  91. <view>所属科室 : {{ infoDATA.data.target.dept }}</view>
  92. <view v-if="
  93. accountObj && (infoType === 'drug-ddd-2' || infoType === 'drug-dsd-2')
  94. ">
  95. 交接人账号 : {{ accountObj.account }}
  96. </view>
  97. <view v-if="
  98. accountObj && (infoType === 'drug-ddd-2' || infoType === 'drug-dsd-2')
  99. ">
  100. 交接人姓名 : {{ accountObj.accountName }}
  101. </view>
  102. <text v-if="infoType == 'drug-dsd-2' || infoType == 'jp-dsd-2'">工单已完成。</text>
  103. <view class="red"> 如果您当前科室还有药包需要扫描,请点击“继续扫描”! </view>
  104. </view>
  105. <!-- <view class="foot_btn" v-if="idsType==1&&res.status==200">
  106. <view class="btn1" @click="Scanning_again()">继续扫描</view>
  107. <view class="btn2" @click="showAlert()">知道了</view>
  108. </view> -->
  109. <view class="foot_btn_spe" v-if="
  110. res.status == 100018 || type == 'specimen' || type == 'specimenPlan'
  111. ">
  112. <view class="btn1" @click="Scanning_again()">继续扫描</view>
  113. <view class="btn3" @click="hand_again()" v-if="type == 'specimen' || type == 'specimenPlan'">手动录入</view>
  114. <view class="btn3" @click="getNoScanSpecimen(false)" v-if="type == 'specimen' || type == 'specimenPlan'">未扫描标本</view>
  115. <view class="btn3" @click="getNoScanSpecimen(true)" v-if="type == 'specimen' || type == 'specimenPlan'">已扫描标本</view>
  116. <view class="btn2" @click="Scanning_complete(ids)">完成扫描</view>
  117. </view>
  118. <view class="foot_btn" v-if="
  119. type != 'specimen' &&
  120. res.status != 200 &&
  121. type != 'specimenPlan' &&
  122. type !== 'drugsBag' &&
  123. type !== 'jPBag' &&
  124. type !== 'patientTransport'
  125. ">
  126. <view class="btn3" @click="showAlert()">知道了</view>
  127. </view>
  128. <view class="foot_btn" v-if="
  129. (res.status != 200 && type == 'drugsBag') ||
  130. (res.status != 200 && type == 'jPBag') ||
  131. (res.status != 200 && type == 'patientTransport')
  132. ">
  133. <view class="btn3" @click="Scanning_again()">继续扫描</view>
  134. <view class="btn3" @click="showAlert()" v-if="type == 'drugsBag'">知道了</view>
  135. </view>
  136. <view class="foot_btn" v-if="
  137. res.status == 200 &&
  138. type != 'specimen' &&
  139. type != 'specimenPlan'
  140. ">
  141. <view class="btn3" @click="Scanning_again()" v-if="
  142. (res.status == 200 && type == 'drugsBag') ||
  143. (res.status == 200 && type == 'jPBag')
  144. ">继续扫描</view>
  145. <view class="btn3" @click="showAlert()">知道了</view>
  146. </view>
  147. <!-- 弹窗 -->
  148. <showModel :title="models.title" :icon="models.icon" :disjunctor="models.disjunctor" :content="models.content"
  149. @ok="ok" @cancel="cancel" :operate="models.operate"></showModel>
  150. <!-- 弹窗 -->
  151. <showModel :title="models2.title" :icon="models2.icon" :disjunctor="models2.disjunctor" :content="models2.content"
  152. @ok="ok2" @know="know2" @cancel="cancel2" :operate="models2.operate">
  153. </showModel>
  154. <!-- 手动查询标本弹窗 -->
  155. <handViewSpecimen v-if="speModels.disjunctor" :title="speModels.title" :disjunctor="speModels.disjunctor"
  156. @ok="speOk" @cancel="speCancel">
  157. </handViewSpecimen>
  158. </view>
  159. </template>
  160. <script>
  161. import showModel from "../../components/showModel/showModel.vue";
  162. import {
  163. get,
  164. post,
  165. SM,
  166. webHandle
  167. } from "../../http/http.js";
  168. import {
  169. DRUGSBAG_TYPE
  170. } from '../../tools/enum.drugsbagType.js';
  171. export default {
  172. data() {
  173. return {
  174. DRUGSBAG_TYPE,
  175. currentCode: '', //当前小扫描的科室二维码
  176. // 手动查询标本弹窗model
  177. speModels: {
  178. disjunctor: false,
  179. },
  180. // 交接人信息
  181. accountObj: undefined,
  182. //传给后端查询是否继续扫描
  183. deptId: undefined,
  184. SMFlag: true,
  185. // 弹窗model
  186. models: {
  187. disjunctor: false,
  188. },
  189. // 完成扫描弹窗model1
  190. models2: {
  191. disjunctor: false,
  192. },
  193. wcId: "", //工单完成ID
  194. wcFlag: false,
  195. infoDATA: [],
  196. res: {
  197. status: "",
  198. msg: "",
  199. },
  200. infoType: "",
  201. DEPTCode: "",
  202. RESData: {},
  203. DEPT: "",
  204. dataId: "",
  205. type: "",
  206. model: {},
  207. idsType: 1,
  208. packid: "",
  209. speNum: 0,
  210. queryObj: {}, //路由传递过来的参数
  211. gotoFlag: true,
  212. content: "",
  213. };
  214. },
  215. methods: {
  216. // 手动查询标本-确认
  217. speOk(data) {
  218. console.log(data);
  219. if (!data.id) {
  220. //没有查询到标本
  221. uni.showModal({
  222. title: '提示',
  223. content: "没有查询到标本!",
  224. showCancel: false,
  225. success: function(res) {
  226. if (res.confirm) {
  227. console.log('用户点击确定');
  228. } else if (res.cancel) {
  229. console.log('用户点击取消');
  230. }
  231. }
  232. });
  233. return;
  234. }
  235. this.speModels.disjunctor = false;
  236. this.hand_scanning_common(data.scode, 'hand');
  237. },
  238. // 手动查询标本-取消
  239. speCancel() {
  240. this.speModels.disjunctor = false;
  241. },
  242. // 手动查询标本弹窗
  243. showHandViewSpecimen() {
  244. this.speModels = {
  245. title: '填写标本编码',
  246. disjunctor: true,
  247. }
  248. },
  249. // 手动录入标本
  250. hand_again() {
  251. this.showHandViewSpecimen();
  252. },
  253. // 手动输入标本和扫码公共方法
  254. hand_scanning_common(ress1, type) {
  255. let list = [];
  256. let postType = "";
  257. let ids = [];
  258. if (this.ids && this.ids[0]) {
  259. ids = this.ids;
  260. } else if (this.dataId) {
  261. ids = [];
  262. ids.push(this.dataId);
  263. }
  264. let data = {
  265. ids: ids,
  266. deptCode: this.DEPTCode,
  267. code: "", // 2
  268. };
  269. // ----------------
  270. uni.showLoading({
  271. title: "加载中",
  272. mask: true,
  273. });
  274. //检验二维码的有效性
  275. post("/dept/scanning", {
  276. content: ress1,
  277. }).then((result) => {
  278. this.SMFlag = true;
  279. this.currentCode = result.code;
  280. if (result.state == 200 || result.state == 201) {
  281. let ress = result.code;
  282. if (ress) {
  283. data.code = ress;
  284. if (this.type == "inspect") {
  285. postType = "handleIns";
  286. list = data;
  287. }
  288. if (this.type == "jPBag" || this.type == "drugsBag") {
  289. postType = "handleDrugsAndJp";
  290. data["type"] = this.infoType;
  291. list = data;
  292. if (this.accountObj) {
  293. list.handover = this.accountObj.accountId;
  294. }
  295. list.deptId = this.deptId;
  296. delete list.ids;
  297. }
  298. if (this.type == "specimen") {
  299. postType = "handleSpes";
  300. data["speCode"] = data.code;
  301. delete data.code;
  302. data["type"] = this.infoType;
  303. list = data;
  304. if (this.accountObj) {
  305. list.handover = this.accountObj.accountId;
  306. }
  307. }
  308. if (this.type == "specimenPlan") {
  309. postType = "handlePlanSpes";
  310. data["speCode"] = data.code;
  311. delete data.code;
  312. data["type"] = this.infoType;
  313. list = data;
  314. if (this.accountObj) {
  315. list.handover = this.accountObj.accountId;
  316. }
  317. }
  318. if (this.type == "patientTransport") {
  319. postType = "handleTrans";
  320. list = data;
  321. }
  322. post("/workerOrder/" + postType, list).then((res) => {
  323. uni.hideLoading();
  324. if (res.status == 200) {
  325. //标本和标本轮巡工单,扫描标本后会自动调用摄像头,继续扫描,直到status不是200
  326. if (this.type == "specimenPlan" || this.type == "specimen") {
  327. if (type === 'scan') {
  328. setTimeout(()=>{
  329. this.Scanning_again();
  330. },500)
  331. } else if (type === 'hand') {
  332. this.hand_again();
  333. }
  334. }
  335. if (
  336. this.type == "inspect" ||
  337. this.type == "patientTransport"
  338. ) {
  339. if (res.ids) {
  340. for (var i = 0; i < this.ids.length; i++) {
  341. if (this.ids[i] == res.ids[0]) {
  342. this.ids.splice(i, 1);
  343. }
  344. }
  345. if (this.ids.length > 1) {
  346. this.idsType = 1;
  347. } else {
  348. this.idsType = 2;
  349. }
  350. }
  351. this.infoDATA = res;
  352. this.type = this.type;
  353. this.DEPTCode = this.DEPTCode;
  354. } else if (this.type == "drugsBag") {
  355. // this.infoDATA.data.packid = res.data.packid;
  356. this.infoDATA = res;
  357. this.res["status"] = res.status;
  358. this.res["msg"] = res.msg;
  359. } else if (
  360. this.type == "specimenPlan" ||
  361. this.type == "specimen"
  362. ) {
  363. this.infoDATA = res;
  364. this.speNum = res.specimenCount;
  365. // --------------------------
  366. this.res["status"] = res.status;
  367. this.res["msg"] = res.msg;
  368. // --------------------------
  369. } else if (this.type == "jPBag") {
  370. // this.infoDATA.data.packid = res.data.packid;
  371. this.infoDATA = res;
  372. this.res["status"] = res.status;
  373. this.res["msg"] = res.msg;
  374. } else {
  375. uni.navigateTo({
  376. url: `../scanning_djEnd/scanning_djEnd?type=${
  377. this.queryObj.type
  378. }&type1=${this.queryObj.type1}&code=${
  379. this.queryObj.deptCode
  380. }&dept=${this.queryObj.dept}&ids=${encodeURIComponent(
  381. JSON.stringify(this.ids)
  382. )}&model=${encodeURIComponent(
  383. JSON.stringify(res)
  384. )}&accountObj=${encodeURIComponent(
  385. JSON.stringify(this.accountObj)
  386. )}&deptId=${this.deptId}`,
  387. });
  388. }
  389. } else {
  390. uni.navigateTo({
  391. url: `../scanning_djEnd/scanning_djEnd?type=${
  392. this.queryObj.type
  393. }&type1=${this.queryObj.type1}&code=${
  394. this.queryObj.deptCode
  395. }&dept=${this.queryObj.dept}&ids=${encodeURIComponent(
  396. JSON.stringify(this.ids)
  397. )}&model=${encodeURIComponent(
  398. JSON.stringify(res)
  399. )}&speNum=${this.speNum}&accountObj=${encodeURIComponent(
  400. JSON.stringify(this.accountObj)
  401. )}&deptId=${this.deptId}&scanOrHand=${type}&qrcode=${this.currentCode}`,
  402. });
  403. }
  404. });
  405. }
  406. } else {
  407. uni.hideLoading();
  408. uni.showToast({
  409. icon: "none",
  410. title: "请求失败!",
  411. });
  412. }
  413. });
  414. // ------------------------------
  415. },
  416. // 查看未扫描标本
  417. // isScan true已扫描标本,false未扫描标本
  418. getNoScanSpecimen(isScan) {
  419. if (!this.gotoFlag) {
  420. return;
  421. }
  422. this.gotoFlag = false;
  423. if(isScan){
  424. uni.navigateTo({
  425. url: `../noScanSpecimen/noScanSpecimen?deptName=${this.queryObj.dept}workOrderId=${encodeURIComponent(JSON.stringify(this.queryObj.ids))}&deptCode=${this.queryObj.deptCode}&isScan=1`,
  426. });
  427. }else{
  428. uni.navigateTo({
  429. url: `../noScanSpecimen/noScanSpecimen?deptName=${this.queryObj.dept}workOrderId=${encodeURIComponent(JSON.stringify(this.queryObj.ids))}&deptCode=${this.queryObj.deptCode}`,
  430. });
  431. }
  432. },
  433. overFinish() {
  434. let postType = "";
  435. if (
  436. this.queryObj.type1 === "plan-spe-ddd-2" ||
  437. this.queryObj.type1 === "plan-spe-dsd-2" ||
  438. this.queryObj.type1 === "plan-spe-dsd-3"
  439. ) {
  440. postType = "finishPlanSpes";
  441. } else if (this.queryObj.type1 == "spe-ddd-2") {
  442. postType = "finishSpes";
  443. }
  444. let data = {
  445. type: this.queryObj.type1,
  446. ids: this.wcId,
  447. };
  448. post("/workerOrder/" + postType, data).then((res) => {
  449. if (res.status == 200) {
  450. this.models2 = {
  451. disjunctor: true,
  452. title: "提示",
  453. content: `完成扫描成功`,
  454. icon: "success",
  455. operate: {
  456. know: "知道了",
  457. },
  458. };
  459. } else {
  460. uni.showToast({
  461. icon: "none",
  462. title: "请求失败!",
  463. });
  464. }
  465. });
  466. },
  467. // 确定
  468. ok() {
  469. this.models.disjunctor = false;
  470. let postData = {
  471. ids: this.queryObj.ids,
  472. sign: true,
  473. deptQrCode: this.queryObj.deptCode,
  474. };
  475. uni.showLoading({
  476. title: "加载中",
  477. mask: true,
  478. });
  479. post("/workerOrder/expectedAndActual", postData).then((ress) => {
  480. uni.hideLoading();
  481. if (ress.status == 200) {
  482. if (this.wcFlag) {
  483. //正常完成扫描
  484. this.overFinish();
  485. } else {
  486. this.gotoOver();
  487. }
  488. } else if (ress.status == 1000035) {
  489. let content = "";
  490. if (
  491. this.queryObj.type1 === "spe-ddd-2" ||
  492. this.queryObj.type1 === "plan-spe-ddd-2"
  493. ) {
  494. //待到达
  495. content =
  496. `系统内预计标本<strong class="red">${ress.expectReceiveNum}</strong>只,您扫描收取标本<strong class="red">${ress.actualReceiveNum}</strong>只,其中<strong class="red">${ress.notReceiveNum}</strong>只未扫描;`;
  497. } else {
  498. //待送达
  499. this.content = `本工单已签到<strong class="red">${
  500. ress.scanSet ? ress.scanSet.join("、") : ""
  501. }</strong>,剩余需签到科室<strong class="red">${
  502. ress.notScanSet ? ress.notScanSet.join("、") : ""
  503. }</strong>,总签收<strong class="red">${
  504. ress.totalAcceptance
  505. }</strong>只,剩余<strong class="red">${
  506. ress.notAcceptance
  507. }</strong>只未签收,您确定完成工单吗?`;
  508. content =
  509. `您在<strong class="red">${ress.deptName}</strong>检验科扫描了<strong class="red">${ress.deptScanNum}</strong>个标本,还需扫描<strong class="red">${ress.deptNotScanNum}</strong>标本。`;
  510. }
  511. // 取消弹窗 2022年10月10日
  512. this.ok2();
  513. // this.models2 = {
  514. // disjunctor: true,
  515. // title: "提示",
  516. // content,
  517. // icon: "warn",
  518. // operate: {
  519. // ok: "确定",
  520. // cancel: "取消",
  521. // },
  522. // };
  523. } else {
  524. uni.showToast({
  525. icon: "none",
  526. title: "请求失败!",
  527. });
  528. }
  529. });
  530. },
  531. // 取消
  532. cancel() {
  533. this.models.disjunctor = false;
  534. },
  535. // 确定
  536. ok2() {
  537. this.models2.disjunctor = false;
  538. let postData = {
  539. ids: this.queryObj.ids,
  540. deptQrCode: this.queryObj.deptCode,
  541. };
  542. uni.showLoading({
  543. title: "加载中",
  544. mask: true,
  545. });
  546. post("/workerOrder/expectedAndActual", postData).then((ress) => {
  547. uni.hideLoading();
  548. if (ress.status == 200) {
  549. if (this.wcFlag) {
  550. this.overFinish();
  551. } else {
  552. this.gotoOver();
  553. }
  554. } else {
  555. uni.showToast({
  556. icon: "none",
  557. title: "请求失败!",
  558. });
  559. }
  560. });
  561. },
  562. // 取消
  563. cancel2() {
  564. this.models2.disjunctor = false;
  565. },
  566. know2() {
  567. this.models2.disjunctor = false;
  568. uni.navigateTo({
  569. url: "../receiptpage/receiptpage",
  570. });
  571. },
  572. //完成扫描
  573. Scanning_complete(id) {
  574. // 如果是标本配送和标本轮巡,则进入标本核对页面
  575. if((this.type === 'specimen' || this.type === 'specimenPlan') && this.queryObj.type1.includes('ddd')){
  576. uni.navigateTo({
  577. url: `../checkAfterScanning/checkAfterScanning?id=${id}&type=${this.queryObj.type}&type1=${this.queryObj.type1}&dept=${this.queryObj.dept}&deptId=${this.queryObj.deptId}&deptCode=${this.queryObj.deptCode}&speNum=${this.speNum}&content=${this.content}`,
  578. });
  579. return;
  580. }
  581. this.wcId = id;
  582. if (
  583. this.queryObj.type1 == "plan-spe-ddd-2" ||
  584. this.queryObj.type1 == "spe-ddd-2"
  585. ) {
  586. this.wcFlag = true;
  587. this.models = {
  588. disjunctor: true,
  589. title: "提示",
  590. content: "是否确定标本已扫描完成?",
  591. icon: "warn",
  592. operate: {
  593. ok: "确定",
  594. cancel: "取消",
  595. },
  596. };
  597. } else if (
  598. this.queryObj.type1 == "plan-spe-dsd-2" ||
  599. this.queryObj.type1 == "plan-spe-dsd-3" ||
  600. this.queryObj.type1 == "spe-dsd-2" ||
  601. this.queryObj.type1 == "spe-dsd-3"
  602. ) {
  603. this.wcFlag = false;
  604. this.models = {
  605. disjunctor: true,
  606. title: "提示",
  607. content: "是否确定标本已扫描完成?",
  608. icon: "warn",
  609. operate: {
  610. ok: "确定",
  611. cancel: "取消",
  612. },
  613. };
  614. } else {
  615. this.gotoOver();
  616. }
  617. },
  618. // 跳转完成工单页面
  619. gotoOver() {
  620. // uni.navigateTo({
  621. // url: `../scanning/scanning?type=${this.queryObj.type}&type1=${
  622. // this.queryObj.type1
  623. // }&id=${encodeURIComponent(JSON.stringify(this.wcId))}&deptCode=${
  624. // this.queryObj.deptCode
  625. // }&dept=${this.queryObj.dept}&content=${this.content}`,
  626. // });
  627. uni.navigateTo({
  628. url: `../specimenCheckingEnd/specimenCheckingEnd?type=${this.queryObj.type}&type1=${
  629. this.queryObj.type1
  630. }&id=${encodeURIComponent(JSON.stringify(this.wcId))}&deptCode=${
  631. this.queryObj.deptCode
  632. }&dept=${this.queryObj.dept}&content=${this.content}`,
  633. });
  634. },
  635. // 继续扫描
  636. Scanning_again() {
  637. if (!this.SMFlag) {
  638. return;
  639. }
  640. this.SMFlag = false;
  641. SM()
  642. .then((ress1) => {
  643. this.hand_scanning_common(ress1, 'scan');
  644. })
  645. .catch((err) => {
  646. this.SMFlag = true;
  647. });
  648. },
  649. // 知道了
  650. showAlert() {
  651. uni.navigateTo({
  652. url: "../receiptpage/receiptpage",
  653. });
  654. },
  655. },
  656. onShow() {
  657. this.SMFlag = true;
  658. this.gotoFlag = true;
  659. },
  660. onLoad(options) {
  661. if (options.status == 200&&options.scanOrHand === 'hand'&&(options.type === "specimen"||options.type === "specimenPlan")) {
  662. this.hand_again();
  663. }
  664. console.log(options, "options");
  665. if (options.speNum) {
  666. this.speNum = options.speNum;
  667. }
  668. if (options.accountObj && options.accountObj != "undefined") {
  669. this.accountObj = JSON.parse(options.accountObj);
  670. }
  671. if (options.deptId && options.deptId != "undefined") {
  672. this.deptId = options.deptId;
  673. }
  674. this.queryObj = options;
  675. if (this.queryObj.model) {
  676. let list = JSON.parse(this.queryObj.model);
  677. this.infoDATA = list;
  678. } else {
  679. this.infoDATA = this.queryObj.infoData;
  680. }
  681. this.RESData = this.queryObj.resData;
  682. this.res["status"] = this.queryObj.status;
  683. this.res["msg"] = this.queryObj.msg;
  684. this.res["patient"] = this.queryObj.patient;
  685. this.infoType = this.queryObj.type1;
  686. if (this.queryObj.dept) {
  687. this.DEPT = this.queryObj.dept;
  688. }
  689. this.queryObj.ids = JSON.parse(this.queryObj.ids);
  690. if (this.queryObj.ids) {
  691. this.ids = this.queryObj.ids;
  692. if (this.ids.length > 1) {
  693. this.idsType = 1;
  694. } else {
  695. this.idsType = 2;
  696. }
  697. }
  698. this.DEPTCode = this.queryObj.deptCode;
  699. this.type = this.queryObj.type;
  700. // #ifdef APP-PLUS
  701. webHandle("no", "app");
  702. // #endif
  703. // #ifdef H5
  704. webHandle("no", "wx");
  705. // #endif
  706. },
  707. };
  708. </script>
  709. <style lang="less">
  710. .Scanning_djInfo {
  711. padding: 0 20rpx;
  712. .Scanning_top {
  713. min-height: 270rpx;
  714. .red {
  715. background-color: #ff3b53 !important;
  716. }
  717. .Scanning_top_icon {
  718. width: 140rpx;
  719. height: 140rpx;
  720. margin: 0 auto;
  721. margin-top: 116rpx;
  722. border-radius: 50%;
  723. line-height: 140rpx;
  724. .speNum{
  725. text-align: center;
  726. font-size: 140rpx;
  727. }
  728. .cubeic-ok {
  729. font-size: 140rpx;
  730. color: #35b34a;
  731. }
  732. .cubeic-close {
  733. font-size: 140rpx;
  734. color: #ff3b53;
  735. }
  736. }
  737. .Scanning_top_text {
  738. .text1 {
  739. margin-top: 40rpx;
  740. font-size: 48rpx;
  741. text-align: center;
  742. }
  743. }
  744. }
  745. .Scanning_cont {
  746. font-size: 32rpx;
  747. text-align: center;
  748. view {
  749. margin-bottom: 16rpx;
  750. }
  751. .text {
  752. margin-top: 24rpx;
  753. color: #35b34a;
  754. }
  755. .text1 {
  756. margin-top: 24rpx;
  757. color: #ff3b53;
  758. }
  759. }
  760. .foot_btn {
  761. line-height: 88rpx;
  762. height: 100rpx;
  763. margin-top: 40rpx;
  764. text-align: center;
  765. display: flex;
  766. .btn1,
  767. .btn2,
  768. .btn3 {
  769. height: 88rpx;
  770. margin: 0 1%;
  771. flex: 1;
  772. background-image: linear-gradient(to right, #72c172, #3bb197);
  773. color: #fff;
  774. border-radius: 8rpx;
  775. font-size: 32rpx;
  776. margin-top: 16rpx;
  777. }
  778. }
  779. .foot_btn_spe {
  780. line-height: 88rpx;
  781. height: 100rpx;
  782. margin-top: 40rpx;
  783. text-align: center;
  784. display: flex;
  785. justify-content: space-between;
  786. flex-wrap: wrap;
  787. &::after {
  788. content: '';
  789. flex: 1;
  790. }
  791. view {
  792. height: 88rpx;
  793. width: 48%;
  794. margin: 0 1%;
  795. background-image: linear-gradient(to right, #72c172, #3bb197);
  796. color: #fff;
  797. border-radius: 8rpx;
  798. font-size: 32rpx;
  799. margin-top: 16rpx;
  800. }
  801. }
  802. }
  803. </style>