scanning_Result.vue 43 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202
  1. <template>
  2. <view class="Scanning_Result">
  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="red fweight speNum"> {{ speNum }} </view>
  7. </view>
  8. <text v-else class="cubeic-ok newicon newicon-duigou"></text>
  9. </view>
  10. <view class="Scanning_top_text">
  11. <view class="text1"> 操作成功 </view>
  12. <view class="success_tips" v-if="type == 'inspect' || type == 'patientTransport'">
  13. (请您评估患者的意识状况、生命体征、配合程度,如有异常请及时联系护士!)
  14. </view>
  15. </view>
  16. </view>
  17. <view class="Scanning_top" v-if="res.status == 11111">
  18. <view class="Scanning_top_icon">
  19. <text class="cubeic-close newicon newicon-shibai"></text>
  20. </view>
  21. <view class="Scanning_top_text">
  22. <view class="text1" style="color: red;">操作失败</view>
  23. </view>
  24. </view>
  25. <view class="Scanning_top" v-if="(res.status != 200 && res.status != 11111)">
  26. <view class="Scanning_top_icon">
  27. <text class="cubeic-close newicon newicon-shibai"></text>
  28. </view>
  29. <view class="Scanning_top_text">
  30. <view class="text1"> 操作失败 </view>
  31. <view class="text1 f30" v-if="queryObj.qrcode !== undefined"> 扫描内容:{{queryObj.qrcode}} </view>
  32. </view>
  33. </view>
  34. <view class="Scanning_cont" v-if="
  35. (res.status == 200 && type == 'specimenPlan') ||
  36. (res.status == 200 && type == 'specimen')
  37. ">
  38. <view>{{ infoDATA.stype.name }}{{infoDATA.scode}}</view>
  39. <view>检验项目 : {{ infoDATA.specimenDesc || "-" }}</view>
  40. <view>
  41. {{ infoDATA.sickRoom ? infoDATA.sickRoom.dept : "" }}
  42. <text style="width: 4em;text-align: center;margin-left: 1em;margin-right: 1em;" class="newicon newicon-arrow-right-full"></text>
  43. <text :class="{ red: isEndDeptRedShow }">{{ infoDATA.checkDept ? infoDATA.checkDept.dept : "" }}</text>
  44. </view>
  45. <view>患者姓名 : {{ infoDATA.patientName}}{{infoDATA.bedNum}}</view>
  46. <view>住院号 : {{ infoDATA.residenceNo || '-' }}</view>
  47. </view>
  48. <view class="Scanning_cont" v-if="
  49. (res.status == 11111 && type == 'specimenPlan') ||
  50. (res.status == 11111 && type == 'specimen')
  51. ">
  52. <view>{{ infoDATA.stype.name }}{{infoDATA.scode}}</view>
  53. <view>检验项目 : {{ infoDATA.specimenDesc || "-" }}</view>
  54. <view>标本状态 : <text style="color: red">{{ infoDATA.speState ? infoDATA.speState.name : '' }}</text></view>
  55. <view>
  56. {{ infoDATA.sickRoom ? infoDATA.sickRoom.dept : "" }}
  57. <text style="width: 4em;text-align: center;margin-left: 1em;margin-right: 1em;" class="newicon newicon-arrow-right-full"></text>
  58. <text :class="{ red: isEndDeptRedShow }">{{ infoDATA.checkDept ? infoDATA.checkDept.dept : "" }}</text>
  59. </view>
  60. <view>患者姓名 : {{ infoDATA.patientName}}{{infoDATA.bedNum}}</view>
  61. <view>住院号 : {{ infoDATA.residenceNo || '-' }}</view>
  62. </view>
  63. <view class="Scanning_cont" v-if="
  64. (res.status == 200 && type == 'inspect') || type == 'patientTransport'
  65. ">
  66. <view v-if="res.patient"> 患者姓名 : {{ res.patient || "-" }} </view>
  67. <view v-if="res.residenceNo">
  68. 住院号 : {{ res.residenceNo || "-" }}
  69. </view>
  70. <view v-if="res.deptName">
  71. 住院科室 : {{ res.deptName !== "undefined" ? res.deptName : "-" }}
  72. </view>
  73. <view v-if="res.bedNum">
  74. 床号 : {{ res.bedNum !== "undefined" ? res.bedNum : "-" }}
  75. </view>
  76. <view v-if="res.data">
  77. 检查项目 :
  78. <text v-for="(data, i) in res.data" :key="i">{{
  79. data.inspectName
  80. }}</text>
  81. </view>
  82. <view v-if="
  83. res.status == 200 &&
  84. infoType != 'ins-zxz-1' &&
  85. infoType != 'ins-dsd-1' &&
  86. infoType != 'ins-ddd-1' &&
  87. infoType != 'trans-ddd-1' &&
  88. infoType != 'trans-dsd-1'
  89. ">
  90. {{ res.msg || "" }}
  91. </view>
  92. <view v-if="infoType == 'trans-dsd-1' && res.status == 200">
  93. 工单已完成
  94. </view>
  95. <view v-if="infoType == 'ins-dsd-1' && res.status == 200">
  96. 工单已完成。
  97. </view>
  98. <!-- 半程陪检 -->
  99. <view v-if="infoDATA.type == 'ins-half-ok' && res.status == 200">
  100. 已到达检查科室,工单已完成。
  101. </view>
  102. </view>
  103. <view class="Scanning_cont" v-if="res.status == 200 && (type == 'drugsBag' || type == 'jPBag')">
  104. <view> 药包类型 : {{(infoDATA.packType && infoDATA.packType !== 0) ? DRUGSBAG_TYPE[infoDATA.packType] : "-"}} </view>
  105. <view v-if="type == 'drugsBag'"> 药包编码 : #{{ infoDATA.packid }} </view>
  106. <view
  107. v-if="type == 'drugsBag' && accountObj && (queryObj.type1 === 'drug-ddd-2' || queryObj.type1 === 'drug-dsd-2')">
  108. 交接人工号 : {{ accountObj.account }} </view>
  109. <view
  110. v-if="type == 'drugsBag' && accountObj && (queryObj.type1 === 'drug-ddd-2' || queryObj.type1 === 'drug-dsd-2')">
  111. 交接人姓名 : {{ accountObj.accountName }} </view>
  112. <view v-if="type == 'jPBag'">
  113. 静配药包编码 : #{{ infoDATA.packid }}
  114. </view>
  115. <view> 所属科室 : {{ infoDATA.target.dept || "-" }} </view>
  116. <view v-if="infoType === 'drug-dsd-2' || infoType === 'jp-dsd-2'">
  117. 工单已完成。
  118. </view>
  119. <view class="red"> 如果您当前科室还有药包需要扫描,请点击“继续扫描”! </view>
  120. </view>
  121. <view class="Scanning_cont" v-if="res.status != 200">
  122. <view class="Scanning_cont_center" v-if="res.status != 11111">
  123. {{ res.msg === "undefined" || !res.msg ? "" : res.msg }}
  124. </view>
  125. </view>
  126. <view class="foot_btn_spe" v-if="
  127. (type == 'specimen' && isKs != '1') ||
  128. (type == 'specimenPlan' && isKs != '1')
  129. ">
  130. <view class="btn1" @click="Scanning_again()"> 继续扫描 </view>
  131. <view class="btn3" @click="hand_again()">手动录入</view>
  132. <view class="btn3" @click="getNoScanSpecimen(false)">未扫描标本</view>
  133. <view class="btn3" @click="getNoScanSpecimen(true)">已扫描标本</view>
  134. <view class="btn2" @click="Scanning_complete(dataId)"> 完成扫描 </view>
  135. </view>
  136. <view class="foot_btn" v-if="
  137. (type != 'specimenPlan' &&
  138. type != 'specimen' &&
  139. type != 'drugsBag' &&
  140. type != 'jPBag' &&
  141. (type != 'inspect') & (type != 'patientTransport')) ||
  142. (queryObj.status == 200 &&
  143. type == 'drugsBag' &&
  144. infoType == 'drug-ddd-2') ||
  145. (queryObj.status == 200 &&
  146. type == 'drugsBag' &&
  147. infoType == 'drug-dsd-2') ||
  148. (queryObj.status == 200 && type == 'jPBag' && infoType == 'jp-ddd-2') ||
  149. (queryObj.status == 200 && type == 'jPBag' && infoType == 'jp-dsd-2') ||
  150. (queryObj.status == 200 && type == 'inspect') ||
  151. (queryObj.status == 200 && type == 'patientTransport')
  152. ">
  153. <view class="btn3" @click="Scanning_again()" v-if="type == 'drugsBag'||type == 'jPBag'"> 继续扫描 </view>
  154. <view class="btn3" @click="showAlert(dataId)"> 知道了 </view>
  155. </view>
  156. <view class="foot_btn" v-if="
  157. (isKs != '1' &&
  158. queryObj.status != 200 &&
  159. type == 'drugsBag' &&
  160. infoType == 'drug-ddd-2') ||
  161. (isKs != '1' &&
  162. queryObj.status != 200 &&
  163. type == 'drugsBag' &&
  164. infoType == 'drug-dsd-2') ||
  165. (isKs != '1' &&
  166. queryObj.status != 200 &&
  167. type == 'jPBag' &&
  168. infoType == 'jp-ddd-2') ||
  169. (isKs != '1' &&
  170. queryObj.status != 200 &&
  171. type == 'jPBag' &&
  172. infoType == 'jp-dsd-2') ||
  173. (isKs != '1' && queryObj.status != 200 && type == 'inspect') ||
  174. (isKs != '1' && queryObj.status != 200 && type == 'patientTransport')
  175. ">
  176. <view class="btn3" @click="Scanning_again()"> 继续扫描 </view>
  177. <view class="btn3" @click="showAlert()" v-if="type == 'drugsBag'"> 知道了 </view>
  178. <view class="btn3" @click="photograph(queryObj, { DEPTCode, DEPT, infoType })" v-if="
  179. (isKs != '1' && queryObj.status != 200 && type == 'inspect') ||
  180. (isKs != '1' && queryObj.status != 200 && type == 'patientTransport')
  181. ">
  182. 拍照
  183. </view>
  184. </view>
  185. <view class="foot_btn" v-if="
  186. infoType == 'spe-ddd-1' ||
  187. (isKs == '1' && queryObj.status != 200 && infoType == 'spe-dsd-2') ||
  188. (isKs == '1' && queryObj.status != 200 && infoType == 'spe-dsd-1') ||
  189. (isKs == '1' && queryObj.status != 200 && infoType == 'spe-ddd-2') ||
  190. (isKs == '1' && queryObj.status != 200 && infoType == 'spe-dsd-3') ||
  191. (isKs == '1' &&
  192. queryObj.status != 200 &&
  193. infoType == 'plan-spe-ddd-1') ||
  194. (isKs == '1' &&
  195. queryObj.status != 200 &&
  196. infoType == 'plan-spe-ddd-2') ||
  197. (isKs == '1' &&
  198. queryObj.status != 200 &&
  199. infoType == 'plan-spe-dsd-1') ||
  200. (isKs == '1' &&
  201. queryObj.status != 200 &&
  202. infoType == 'plan-spe-dsd-2') ||
  203. (isKs == '1' && queryObj.status != 200 && infoType == 'drug-ddd-2') ||
  204. (isKs == '1' && queryObj.status != 200 && infoType == 'drug-dsd-2') ||
  205. (isKs == '1' && queryObj.status != 200 && infoType == 'jp-ddd-2') ||
  206. (isKs == '1' && queryObj.status != 200 && infoType == 'jp-dsd-2') ||
  207. (isKs == '1' && queryObj.status != 200 && infoType == 'drug-ddd-1') ||
  208. (isKs == '1' && queryObj.status != 200 && infoType == 'drug-dsd-1') ||
  209. (isKs == '1' && queryObj.status != 200 && infoType == 'jp-ddd-1') ||
  210. (isKs == '1' && queryObj.status != 200 && infoType == 'jp-dsd-1') ||
  211. (isKs == '1' &&
  212. queryObj.status != 200 &&
  213. infoType == 'plan-spe-dsd-3') ||
  214. (isKs == '1' &&
  215. queryObj.status != 200 &&
  216. type == 'inspect' &&
  217. queryObj.type1 === 'undefined') ||
  218. (isKs == '1' &&
  219. queryObj.status != 200 &&
  220. type == 'patientTransport' &&
  221. queryObj.type1 === 'undefined')
  222. ">
  223. <view class="btn3" @click="showAlert(dataId)"> 知道了 </view>
  224. </view>
  225. <view class="foot_btn" v-if="
  226. (isKs == '1' &&
  227. queryObj.status != 200 &&
  228. type == 'inspect' &&
  229. queryObj.type1 === 'ins-zxz-1') ||
  230. (isKs == '1' &&
  231. queryObj.status != 200 &&
  232. type == 'inspect' &&
  233. queryObj.type1 === 'ins-dsd-1') ||
  234. (isKs == '1' &&
  235. queryObj.status != 200 &&
  236. type == 'patientTransport' &&
  237. queryObj.type1 === 'trans-dsd-1')
  238. ">
  239. <view class="btn1" @click="showAlert(dataId)"> 知道了 </view>
  240. <view class="btn2" @click="goToRight(dataId)"> 继续执行工单 </view>
  241. </view>
  242. <!-- 弹窗 -->
  243. <showModel :title="models.title" :icon="models.icon" :disjunctor="models.disjunctor" :content="models.content"
  244. @ok="ok" @cancel="cancel" :operate="models.operate"></showModel>
  245. <!-- 弹窗 -->
  246. <showModel :title="models1.title" :icon="models1.icon" :disjunctor="models1.disjunctor"
  247. :radioItem="models1.radioItem" @ok="ok1" @radioChange="radioChange1" @cancel="cancel1" :operate="models1.operate">
  248. </showModel>
  249. <!-- 弹窗 -->
  250. <showModel :title="models2.title" :icon="models2.icon" :disjunctor="models2.disjunctor" :content="models2.content"
  251. @ok="ok2" @know="know2" @cancel="cancel2" :operate="models2.operate">
  252. </showModel>
  253. <!-- 手动查询标本弹窗 -->
  254. <handViewSpecimen v-if="speModels.disjunctor" :title="speModels.title" :disjunctor="speModels.disjunctor"
  255. @ok="speOk" @cancel="speCancel">
  256. </handViewSpecimen>
  257. <!-- 调查问卷二维码 -->
  258. <questionCode v-if="isQuestionModel" :orderId="dataId" @know="isQuestionModel = false"></questionCode>
  259. </view>
  260. </template>
  261. <script>
  262. import showModel from "../../components/showModel/showModel.vue";
  263. import questionCode from "../../components/questionCode/questionCode.vue";
  264. import {
  265. get,
  266. post,
  267. SM,
  268. webHandle
  269. } from "../../http/http.js";
  270. import {
  271. photographTool
  272. } from "../../tools/photograph.js";
  273. import {
  274. DRUGSBAG_TYPE
  275. } from '../../tools/enum.drugsbagType.js';
  276. export default {
  277. components:{
  278. questionCode
  279. },
  280. data() {
  281. return {
  282. // 终点科室标红
  283. isEndDeptRedShow: false,
  284. isEndDeptRed: false,
  285. // 调研二维码
  286. isQuestionModel:false,
  287. DRUGSBAG_TYPE,
  288. currentCode: '', //当前小扫描的科室二维码
  289. // 手动查询标本弹窗model
  290. speModels: {
  291. disjunctor: false,
  292. },
  293. deptId: undefined,
  294. handover: undefined,
  295. SMFlag: true,
  296. // 交接人信息
  297. accountObj: undefined,
  298. // 完成扫描的id
  299. wcId: "",
  300. wcFlag: false,
  301. // 弹窗model
  302. models: {
  303. disjunctor: false,
  304. },
  305. // 单选框弹窗model1
  306. models1: {
  307. disjunctor: false,
  308. },
  309. // 完成扫描弹窗model1
  310. models2: {
  311. disjunctor: false,
  312. },
  313. isKs: "", //是否科室签到 1
  314. infoDATA: {},
  315. res: {},
  316. infoType: "",
  317. DEPTCode: "",
  318. RESData: {},
  319. DEPT: "",
  320. dataId: "",
  321. type: "",
  322. model: {},
  323. speNum: 0,
  324. queryObj: {}, //路由传递过来的数据
  325. selectRadio: [], //单选框选中的数据,第一项是qrcode,第二项是名称
  326. gotoFlag: true,
  327. content: "",
  328. taskTypeId:"",
  329. };
  330. },
  331. methods: {
  332. // 手动查询标本-确认
  333. speOk(data) {
  334. console.log(data);
  335. if (!data.id) {
  336. //没有查询到标本
  337. uni.showModal({
  338. title: '提示',
  339. content: "没有查询到标本!",
  340. showCancel: false,
  341. success: function(res) {
  342. if (res.confirm) {
  343. console.log('用户点击确定');
  344. } else if (res.cancel) {
  345. console.log('用户点击取消');
  346. }
  347. }
  348. });
  349. return;
  350. }
  351. this.speModels.disjunctor = false;
  352. this.hand_scanning_common(data.scode, 'hand');
  353. },
  354. // 手动查询标本-取消
  355. speCancel() {
  356. this.speModels.disjunctor = false;
  357. },
  358. // 手动查询标本弹窗
  359. showHandViewSpecimen() {
  360. this.speModels = {
  361. title: '填写标本编码',
  362. disjunctor: true,
  363. }
  364. },
  365. // 手动录入标本
  366. hand_again() {
  367. this.showHandViewSpecimen();
  368. },
  369. // 手动输入标本和扫码公共方法
  370. hand_scanning_common(ress1, type) {
  371. // ----------------
  372. uni.showLoading({
  373. title: "加载中",
  374. mask: true,
  375. });
  376. //检验二维码的有效性
  377. post("/dept/scanning", {
  378. content: ress1,
  379. }).then((result) => {
  380. this.SMFlag = true;
  381. this.currentCode = result.code;
  382. if (result.state == 200 || result.state == 201) {
  383. let codes = result.code;
  384. if (codes) {
  385. let speCode = codes;
  386. let data = {
  387. code: speCode,
  388. type: this.queryObj.type1,
  389. deptCode: this.DEPTCode,
  390. ids: [],
  391. };
  392. data.ids.push(this.dataId);
  393. let postType = "";
  394. if (this.type == "jPBag" || this.type == "drugsBag") {
  395. postType = "handleDrugsAndJp";
  396. if(this.type == "drugsBag"){
  397. delete data.ids;
  398. }
  399. data.deptId = this.deptId;
  400. data.handover = this.handover;
  401. }
  402. if (this.type == "specimen") {
  403. data["speCode"] = data.code;
  404. delete data.code;
  405. postType = "handleSpes";
  406. }
  407. if (this.type == "specimenPlan") {
  408. data["speCode"] = data.code;
  409. delete data.code;
  410. postType = "handlePlanSpes";
  411. }
  412. if (this.type == "inspect") {
  413. postType = "handleIns";
  414. }
  415. if (this.type == "patientTransport") {
  416. postType = "handleTrans";
  417. }
  418. post("/workerOrder/" + postType, data).then((ress) => {
  419. uni.hideLoading();
  420. if (ress.status == 200 || ress.status == 11111) {
  421. //标本和标本轮巡工单,扫描标本后会自动调用摄像头,继续扫描,直到status不是200
  422. if ((this.type == "specimenPlan" || this.type == "specimen") && ress.status != 11111) {
  423. this.getPageConfigSpecimen((flag, type, ress) => {
  424. if(flag){
  425. setTimeout(()=>{
  426. if (type === 'scan') {
  427. this.Scanning_again();
  428. }
  429. },500)
  430. }
  431. if(ress){
  432. this.infoDATA = ress.data;
  433. this.speNum = ress.specimenCount;
  434. uni.redirectTo({
  435. url: `../scanning_Result/scanning_Result?type=${
  436. this.queryObj.type
  437. }&type1=${
  438. this.queryObj.type1
  439. }&infoData=${encodeURIComponent(
  440. JSON.stringify(ress.data)
  441. )}&status=${ress.status}&msg=${ress.msg}&deptCode=${
  442. this.queryObj.deptCode
  443. }&dept=${this.queryObj.dept}&id=${this.dataId}&model=${encodeURIComponent(JSON.stringify(ress))}&speNum=${this.speNum}&scanOrHand=${type}&isEndDeptRed=${this.isEndDeptRed}`,
  444. });
  445. }
  446. }, type, ress.data, ress);
  447. return;
  448. }
  449. if (this.type == "specimenPlan" || this.type == "specimen") {
  450. this.infoDATA = ress.data;
  451. this.speNum = ress.specimenCount;
  452. uni.redirectTo({
  453. url: `../scanning_Result/scanning_Result?type=${
  454. this.queryObj.type
  455. }&type1=${
  456. this.queryObj.type1
  457. }&infoData=${encodeURIComponent(
  458. JSON.stringify(ress.data)
  459. )}&status=${ress.status}&msg=${ress.msg}&deptCode=${
  460. this.queryObj.deptCode
  461. }&dept=${this.queryObj.dept}&id=${this.dataId}&model=${encodeURIComponent(JSON.stringify(ress))}&speNum=${this.speNum}&scanOrHand=${type}`,
  462. });
  463. } else if (
  464. this.type == "inspect" ||
  465. this.type == "patientTransport"
  466. ) {
  467. if(this.type == "patientTransport" && this.queryObj.type1 == 'trans-ddd-1'){
  468. // 门诊服务点,有orderList
  469. if(ress.orderList){
  470. uni.navigateTo({
  471. url: `/pages/outpatient/outpatientStartSignIn/outpatientStartSignIn?model=${encodeURIComponent(JSON.stringify(ress))}`,
  472. });
  473. }else{
  474. uni.redirectTo({
  475. url: `../scanning_Result/scanning_Result?type=${
  476. this.queryObj.type
  477. }&type1=${
  478. this.queryObj.type1
  479. }&infoData=${encodeURIComponent(
  480. JSON.stringify(ress.data)
  481. )}&status=${ress.status}&msg=${ress.msg}&deptCode=${
  482. this.queryObj.deptCode
  483. }&dept=${this.queryObj.dept}&id=${this.dataId}&model=${encodeURIComponent(
  484. JSON.stringify(ress)
  485. )}&patient=${ress.patient}&patientCode=${
  486. ress.patientCode
  487. }&deptName=${ress.deptName}&bedNum=${ress.bedNum}`,
  488. });
  489. }
  490. }else if(this.type == "patientTransport" && this.queryObj.type1 == 'trans-dsd-1'){
  491. // 门诊服务点,有orderList
  492. if(ress.orderList){
  493. uni.navigateTo({
  494. url: `/pages/outpatient/outpatientEndSignIn/outpatientEndSignIn?model=${encodeURIComponent(JSON.stringify(ress))}`,
  495. });
  496. }else{
  497. uni.redirectTo({
  498. url: `../scanning_Result/scanning_Result?type=${
  499. this.queryObj.type
  500. }&type1=${
  501. this.queryObj.type1
  502. }&infoData=${encodeURIComponent(
  503. JSON.stringify(ress.data)
  504. )}&status=${ress.status}&msg=${ress.msg}&deptCode=${
  505. this.queryObj.deptCode
  506. }&dept=${this.queryObj.dept}&id=${this.dataId}&model=${encodeURIComponent(
  507. JSON.stringify(ress)
  508. )}&patient=${ress.patient}&patientCode=${
  509. ress.patientCode
  510. }&deptName=${ress.deptName}&bedNum=${ress.bedNum}`,
  511. });
  512. }
  513. }else{
  514. uni.redirectTo({
  515. url: `../scanning_Result/scanning_Result?type=${
  516. this.queryObj.type
  517. }&type1=${
  518. this.queryObj.type1
  519. }&infoData=${encodeURIComponent(
  520. JSON.stringify(ress.data)
  521. )}&status=${ress.status}&msg=${ress.msg}&deptCode=${
  522. this.queryObj.deptCode
  523. }&dept=${this.queryObj.dept}&id=${this.dataId}&model=${encodeURIComponent(
  524. JSON.stringify(ress)
  525. )}&patient=${ress.patient}&patientCode=${
  526. ress.patientCode
  527. }&deptName=${ress.deptName}&bedNum=${ress.bedNum}`,
  528. });
  529. }
  530. } else {
  531. uni.redirectTo({
  532. url: `../scanning_Result/scanning_Result?type=${
  533. this.queryObj.type
  534. }&type1=${
  535. this.queryObj.type1
  536. }&infoData=${encodeURIComponent(
  537. JSON.stringify(ress.data)
  538. )}&status=${ress.status}&msg=${ress.msg}&deptCode=${
  539. this.queryObj.deptCode
  540. }&dept=${this.queryObj.dept}&id=${this.dataId}&model=${encodeURIComponent(JSON.stringify(ress))}&accountObj=${encodeURIComponent(JSON.stringify(this.accountObj))}&deptId=${this.deptId}&handover=${this.handover}`,
  541. });
  542. }
  543. } else {
  544. uni.redirectTo({
  545. url: `../scanning_Result/scanning_Result?type=${
  546. this.queryObj.type
  547. }&type1=${this.queryObj.type1}&status=${ress.status}&msg=${
  548. ress.msg
  549. }&deptCode=${this.queryObj.deptCode}&dept=${
  550. this.queryObj.dept
  551. }&id=${this.dataId}&model=${encodeURIComponent(
  552. JSON.stringify(this.infoDATA)
  553. )}&accountObj=${encodeURIComponent(JSON.stringify(this.accountObj))}&deptId=${this.deptId}&handover=${this.handover}&scanOrHand=${type}&qrcode=${this.currentCode}`,
  554. });
  555. }
  556. });
  557. } else {
  558. uni.hideLoading();
  559. }
  560. } else {
  561. uni.hideLoading();
  562. uni.showToast({
  563. icon: "none",
  564. title: result.info || "接口获取数据失败!",
  565. });
  566. }
  567. });
  568. // ------------------------------
  569. },
  570. // 查看未扫描标本
  571. // isScan true已扫描标本,false未扫描标本
  572. getNoScanSpecimen(isScan) {
  573. if (!this.gotoFlag) {
  574. return;
  575. }
  576. this.gotoFlag = false;
  577. if(isScan){
  578. uni.navigateTo({
  579. url: `../noScanSpecimen/noScanSpecimen?deptName=${this.queryObj.dept}&workOrderId=${encodeURIComponent(JSON.stringify([this.queryObj.id]))}&deptCode=${this.queryObj.deptCode}&isScan=1`,
  580. });
  581. }else{
  582. uni.navigateTo({
  583. url: `../noScanSpecimen/noScanSpecimen?deptName=${this.queryObj.dept}&workOrderId=${encodeURIComponent(JSON.stringify([this.queryObj.id]))}&deptCode=${this.queryObj.deptCode}`,
  584. });
  585. }
  586. },
  587. // 拍照
  588. photograph(data, obj) {
  589. photographTool(data, obj);
  590. },
  591. // 继续扫描
  592. Scanning_again() {
  593. if (!this.SMFlag) {
  594. return;
  595. }
  596. this.SMFlag = false;
  597. SM().then((ress1) => {
  598. this.hand_scanning_common(ress1, 'scan');
  599. }).catch(err => {
  600. this.SMFlag = true;
  601. });
  602. },
  603. // 正常完成扫描
  604. overFinish() {
  605. let data = {
  606. type: this.queryObj.type1,
  607. ids: [this.wcId],
  608. };
  609. //只要是标本轮巡1对多或者多对多
  610. // plan-spe-dsd-2 1对多
  611. // plan-spe-dsd-3 多对多
  612. if (
  613. this.queryObj.type1 === "plan-spe-ddd-2" ||
  614. this.queryObj.type1 === "plan-spe-dsd-2" ||
  615. this.queryObj.type1 === "plan-spe-dsd-3"
  616. ) {
  617. post("/workerOrder/finishPlanSpes", data).then((res) => {
  618. // uni.hideLoading()
  619. if (res.status == 200) {
  620. this.models2 = {
  621. disjunctor: true,
  622. title: "提示",
  623. content: `完成扫描成功`,
  624. icon: "success",
  625. operate: {
  626. know: "知道了",
  627. },
  628. };
  629. } else {
  630. uni.showToast({
  631. icon: "none",
  632. title: res.msg || "接口获取数据失败!",
  633. });
  634. }
  635. });
  636. } else {
  637. post("/workerOrder/finishSpes", data).then((res) => {
  638. // uni.hideLoading()
  639. if (res.status == 200) {
  640. uni.navigateTo({
  641. url: "../receiptpage/receiptpage",
  642. });
  643. } else {
  644. uni.showToast({
  645. icon: "none",
  646. title: res.msg || "接口获取数据失败!",
  647. });
  648. }
  649. });
  650. }
  651. },
  652. // 确定
  653. ok() {
  654. this.models.disjunctor = false;
  655. let postData = {
  656. ids: [this.queryObj.id],
  657. sign: true,
  658. deptQrCode: this.queryObj.deptCode
  659. };
  660. uni.showLoading({
  661. title: '加载中',
  662. mask: true
  663. });
  664. post("/workerOrder/expectedAndActual", postData).then((ress) => {
  665. uni.hideLoading();
  666. if (ress.status == 200) {
  667. if (this.wcFlag) {
  668. //正常完成扫描
  669. this.overFinish()
  670. } else {
  671. this.gotoOver();
  672. }
  673. } else if (ress.status == 1000035) {
  674. let content = '';
  675. if (this.queryObj.type1 === 'spe-ddd-2' || this.queryObj.type1 === 'plan-spe-ddd-2') {
  676. //待到达
  677. content =
  678. `系统内预计标本<strong class="red">${ress.expectReceiveNum}</strong>只,您扫描收取标本<strong class="red">${ress.actualReceiveNum}</strong>只,其中<strong class="red">${ress.notReceiveNum}</strong>只未扫描;`;
  679. } else {
  680. //待送达
  681. this.content =
  682. `本工单已签到<strong class="red">${ress.scanSet?ress.scanSet.join('、'):''}</strong>,剩余需签到科室<strong class="red">${ress.notScanSet?ress.notScanSet.join('、'):''}</strong>,总签收<strong class="red">${ress.totalAcceptance}</strong>只,剩余<strong class="red">${ress.notAcceptance}</strong>只未签收,您确定完成工单吗?`;
  683. content =
  684. `您在<strong class="red">${ress.deptName}</strong>检验科扫描了<strong class="red">${ress.deptScanNum}</strong>个标本,还需扫描<strong class="red">${ress.deptNotScanNum}</strong>标本。`;
  685. }
  686. // 取消弹窗 2022年10月10日
  687. this.ok2();
  688. // this.models2 = {
  689. // disjunctor: true,
  690. // title: "提示",
  691. // content,
  692. // icon: "warn",
  693. // operate: {
  694. // ok: "确定",
  695. // cancel: "取消",
  696. // },
  697. // };
  698. } else {
  699. uni.showToast({
  700. icon: "none",
  701. title: ress.msg || "接口获取数据失败!",
  702. });
  703. }
  704. })
  705. },
  706. // 取消
  707. cancel() {
  708. this.models.disjunctor = false;
  709. },
  710. // 确定
  711. ok2() {
  712. this.models2.disjunctor = false;
  713. let postData = {
  714. ids: [this.queryObj.id],
  715. deptQrCode: this.queryObj.deptCode
  716. };
  717. uni.showLoading({
  718. title: '加载中',
  719. mask: true
  720. });
  721. post("/workerOrder/expectedAndActual", postData).then((ress) => {
  722. uni.hideLoading();
  723. if (ress.status == 200) {
  724. if (this.wcFlag) {
  725. this.overFinish()
  726. } else {
  727. this.gotoOver();
  728. }
  729. } else {
  730. uni.showToast({
  731. icon: "none",
  732. title: ress.msg || "接口获取数据失败!",
  733. });
  734. }
  735. })
  736. },
  737. // 取消
  738. cancel2() {
  739. this.models2.disjunctor = false;
  740. },
  741. know2() {
  742. this.models2.disjunctor = false;
  743. uni.navigateTo({
  744. url: "../receiptpage/receiptpage",
  745. });
  746. },
  747. // 完成扫描
  748. Scanning_complete(id) {
  749. // 如果是标本配送和标本轮巡,则进入标本核对页面
  750. if((this.type === 'specimen' || this.type === 'specimenPlan') && this.queryObj.type1.includes('ddd')){
  751. uni.navigateTo({
  752. 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}`,
  753. });
  754. return;
  755. }
  756. this.wcId = id;
  757. if (
  758. this.queryObj.type1 == "plan-spe-ddd-2" ||
  759. this.queryObj.type1 == "spe-ddd-2"
  760. ) {
  761. this.wcFlag = true;
  762. this.models = {
  763. disjunctor: true,
  764. title: "提示",
  765. content: "是否确定标本已扫描完成?",
  766. icon: "warn",
  767. operate: {
  768. ok: "确定",
  769. cancel: "取消",
  770. },
  771. };
  772. } else if (
  773. this.queryObj.type1 == "plan-spe-dsd-2" ||
  774. this.queryObj.type1 == "plan-spe-dsd-3" ||
  775. this.queryObj.type1 == "spe-dsd-2" ||
  776. this.queryObj.type1 == "spe-dsd-3"
  777. ) {
  778. this.wcFlag = false;
  779. this.models = {
  780. disjunctor: true,
  781. title: "提示",
  782. content: "是否确定标本已扫描完成?",
  783. icon: "warn",
  784. operate: {
  785. ok: "确定",
  786. cancel: "取消",
  787. },
  788. };
  789. } else {
  790. this.gotoOver();
  791. }
  792. },
  793. // 跳转完成工单页面
  794. gotoOver() {
  795. if(this.queryObj.type === 'specimenPlan'){
  796. uni.navigateTo({
  797. url: `../specimenCheckingEnd/specimenCheckingEnd?type=${this.queryObj.type}&type1=${
  798. this.queryObj.type1
  799. }&id=${encodeURIComponent(JSON.stringify([this.wcId]))}&deptCode=${
  800. this.queryObj.deptCode
  801. }&dept=${this.queryObj.dept}&speNum=${this.speNum}&content=${this.content}`,
  802. });
  803. }else{
  804. uni.navigateTo({
  805. url: `../scanning/scanning?type=${this.queryObj.type}&type1=${
  806. this.queryObj.type1
  807. }&id=${encodeURIComponent(JSON.stringify([this.wcId]))}&deptCode=${
  808. this.queryObj.deptCode
  809. }&dept=${this.queryObj.dept}&speNum=${this.speNum}&content=${this.content}`,
  810. });
  811. }
  812. },
  813. // 继续执行工单,当扫错科室码的时候,直接跳过,默默执行正确的科室码
  814. goToRight(id) {
  815. // flag 为1时查检查科室,flag为2时查终点科室
  816. let flag;
  817. // 患者转科,患者陪检
  818. if (
  819. this.queryObj.type1 == "trans-dsd-1" ||
  820. this.queryObj.type1 == "ins-dsd-1"
  821. ) {
  822. flag = 2;
  823. }
  824. if (this.queryObj.type1 == "ins-zxz-1") {
  825. flag = 1;
  826. }
  827. let postData = {
  828. workOrderId: id,
  829. flag: flag,
  830. };
  831. uni.showLoading({
  832. title: "加载中",
  833. mask: true,
  834. });
  835. post("/workerOrder/continueWorkOrder", postData).then((res) => {
  836. uni.hideLoading();
  837. console.log(res);
  838. if (res.state == 200) {
  839. let radioItem = [];
  840. res.data.forEach((item) => {
  841. let flag = radioItem.every(
  842. (item1) => item1.qrcode !== item.qrcode + "__" + item.deptName
  843. ); //如果radioItem里的所有项都与之不重复
  844. if (flag) {
  845. radioItem.push({
  846. qrcode: item.qrcode + "__" + item.deptName,
  847. deptName: item.deptName,
  848. });
  849. }
  850. });
  851. this.models1 = {
  852. disjunctor: true,
  853. title: "请选择正确的科室",
  854. radioItem,
  855. icon: "",
  856. operate: {
  857. ok: "确定",
  858. cancel: "取消",
  859. },
  860. };
  861. } else {
  862. uni.showToast({
  863. icon: "none",
  864. title: res.msg || "接口获取数据失败!",
  865. });
  866. }
  867. });
  868. },
  869. // 选中单选框
  870. radioChange1(item) {
  871. console.log(item);
  872. this.selectRadio = item.split("__");
  873. },
  874. // 确定
  875. ok1() {
  876. this.models1.disjunctor = false;
  877. if (!this.selectRadio.length) {
  878. //默认选中第一项,选中则是选中项
  879. this.selectRadio = [
  880. this.models1.radioItem[0].qrcode.split("__")[0],
  881. this.models1.radioItem[0].deptName,
  882. ];
  883. }
  884. uni.navigateTo({
  885. url: `../scanning_code/scanning_code?type=${this.queryObj.type}&type1=${this.queryObj.type1}&id=${this.queryObj.id}&deptCode=${this.selectRadio[0]}&dept=${this.selectRadio[1]}`,
  886. });
  887. },
  888. // 取消
  889. cancel1() {
  890. this.models1.disjunctor = false;
  891. },
  892. // 知道了
  893. showAlert(id) {
  894. uni.navigateTo({
  895. url: "../receiptpage/receiptpage"
  896. });
  897. },
  898. // 获取问卷配置
  899. getQuestionnaireSet(){
  900. uni.showLoading({
  901. title: "加载中",
  902. mask: true,
  903. });
  904. const userData = uni.getStorageSync("userData");
  905. post("/simple/data/fetchDataList/questionnaireConfig",{
  906. questionnaireConfig:{
  907. hosId:userData.user.currentHospital.id
  908. },
  909. idx:0,
  910. sum:10
  911. }).then((res) => {
  912. uni.hideLoading();
  913. if (res.status == 200) {
  914. let data = res.list[0];
  915. if(data.taskTypeDTOS.length>0 && data.questionnaireDTOS.length>0){
  916. let isQuestion = data.taskTypeDTOS.find(i=> i.id == this.taskTypeId)
  917. if(isQuestion){
  918. this.isQuestionModel = true
  919. }
  920. }
  921. } else {
  922. uni.showToast({
  923. icon: "none",
  924. title: res.msg || "接口获取数据失败!",
  925. });
  926. }
  927. });
  928. },
  929. // 页面控制-标本
  930. getPageConfigSpecimen(fn, type, specimenDTO, ress){
  931. const userData = uni.getStorageSync("userData");
  932. console.log('userData', userData);
  933. console.log('specimenDTO', specimenDTO);
  934. uni.showLoading({
  935. title: "加载中",
  936. mask: true,
  937. });
  938. // 查询标本配送业务
  939. post("/simple/data/fetchDataList/taskType",{
  940. "idx": 0,
  941. "sum": 10,
  942. "taskType": {
  943. "simpleQuery": true,
  944. "hosId": {
  945. "id": userData.user.currentHospital.id
  946. },
  947. "associationType": {
  948. "key": "association_types",
  949. "value": "specimen"
  950. }
  951. }
  952. }).then((res) => {
  953. if (res.status == 200) {
  954. let taskTypeDTO = res.list[0];
  955. if(taskTypeDTO){
  956. // 查询业务页面控制-标本
  957. post("/simple/data/fetchDataList/taskTypeConfig",{
  958. "idx": 0,
  959. "sum": 10,
  960. "taskTypeConfig": {
  961. taskTypeDTO,
  962. }
  963. }).then((res) => {
  964. uni.hideLoading();
  965. if (res.status == 200) {
  966. let data = res.list[0];
  967. if(data){
  968. let deptNotAlertList = data.deptNotAlertList || [];
  969. deptNotAlertList = deptNotAlertList.map(v => v.id);
  970. if(deptNotAlertList.includes(specimenDTO.checkDept.id)){
  971. this.isEndDeptRed = true;
  972. console.log('红色')
  973. fn(false, type, ress);
  974. }else{
  975. this.isEndDeptRed = false;
  976. fn(true, type, ress);
  977. }
  978. console.log('this.isEndDeptRed', this.isEndDeptRed);
  979. }else{
  980. this.isEndDeptRed = false;
  981. fn(true, type, ress);
  982. }
  983. } else {
  984. uni.showToast({
  985. icon: "none",
  986. title: res.msg || "接口获取数据失败!",
  987. });
  988. }
  989. });
  990. }else{
  991. uni.hideLoading();
  992. uni.showToast({
  993. icon: "none",
  994. title: "未查询到标本配送业务!",
  995. });
  996. }
  997. } else {
  998. uni.hideLoading();
  999. uni.showToast({
  1000. icon: "none",
  1001. title: res.msg || "接口获取数据失败!",
  1002. });
  1003. }
  1004. });
  1005. },
  1006. },
  1007. onShow() {
  1008. this.SMFlag = true;
  1009. this.gotoFlag = true;
  1010. },
  1011. onLoad(options) {
  1012. this.isEndDeptRedShow = options.isEndDeptRed === 'true';
  1013. if (options.status == 200&&options.scanOrHand === 'hand'&&(options.type === "specimen"||options.type === "specimenPlan")) {
  1014. this.getPageConfigSpecimen((flag) => {
  1015. if(flag){
  1016. this.hand_again();
  1017. }
  1018. });
  1019. }
  1020. console.log(options , "options");
  1021. this.queryObj = options;
  1022. this.isKs = this.queryObj.isKs;
  1023. if (options.infoData && options.infoData != "undefined") {
  1024. this.infoDATA = JSON.parse(options.infoData);
  1025. } else if (options.model) {
  1026. this.infoDATA = JSON.parse(options.model);
  1027. }
  1028. console.log(this.infoDATA , "infoDATA");
  1029. if (options.accountObj && options.accountObj != "undefined") {
  1030. this.accountObj = JSON.parse(options.accountObj);
  1031. }
  1032. if (options.deptId && options.deptId != "undefined") {
  1033. this.deptId = options.deptId;
  1034. }
  1035. if (options.handover && options.handover != "undefined") {
  1036. this.handover = options.handover;
  1037. }
  1038. this.dataId = options.id;
  1039. if(options.taskTypeId){
  1040. this.taskTypeId = options.taskTypeId
  1041. }else if(this.infoDATA.workOrderList && this.infoDATA.workOrderList.length>0){
  1042. this.taskTypeId = this.infoDATA.workOrderList[0].taskType.id
  1043. }
  1044. this.RESData = options.resData;
  1045. this.res["status"] = options.status;
  1046. this.res["msg"] = options.msg;
  1047. console.log(options.patient);
  1048. this.res["patient"] = options.patient;
  1049. this.res["patientCode"] = options.patientCode;
  1050. this.res["deptName"] = options.deptName;
  1051. this.res["bedNum"] = options.bedNum;
  1052. this.infoType = options.type1;
  1053. if((this.infoType == 'trans-dsd-1' || this.infoType == 'ins-dsd-1'
  1054. || this.infoType == 'ins-half-ok' || this.infoDATA.type == 'ins-half-ok')
  1055. && this.res.status == 200){
  1056. this.getQuestionnaireSet()
  1057. }
  1058. if(
  1059. this.res.status == 200 &&
  1060. this.infoType != 'ins-zxz-1' &&
  1061. this.infoType != 'ins-dsd-1' &&
  1062. this.infoType != 'ins-ddd-1' &&
  1063. this.infoType != 'trans-ddd-1' &&
  1064. this.infoType != 'trans-dsd-1'){
  1065. this.getQuestionnaireSet()
  1066. }
  1067. if (options.dept) {
  1068. this.DEPT = options.dept;
  1069. }
  1070. if (options.speNum) {
  1071. this.speNum = options.speNum;
  1072. }
  1073. this.DEPTCode = options.deptCode;
  1074. this.type = options.type;
  1075. // #ifdef APP-PLUS
  1076. webHandle("no", "app");
  1077. // #endif
  1078. // #ifdef H5
  1079. webHandle("no", "wx");
  1080. // #endif
  1081. },
  1082. };
  1083. </script>
  1084. <style lang="less">
  1085. .Scanning_Result {
  1086. padding: 0 20rpx;
  1087. .Scanning_top {
  1088. .Scanning_top_icon {
  1089. width: 140rpx;
  1090. height: 140rpx;
  1091. margin: 0 auto;
  1092. margin-top: 116rpx;
  1093. border-radius: 50%;
  1094. line-height: 140rpx;
  1095. .speNum{
  1096. text-align: center;
  1097. font-size: 140rpx;
  1098. }
  1099. .cubeic-ok {
  1100. font-size: 140rpx;
  1101. color: #35b34a;
  1102. }
  1103. .cubeic-close {
  1104. font-size: 140rpx;
  1105. color: #ff3b53;
  1106. }
  1107. }
  1108. .Scanning_top_text {
  1109. .text1 {
  1110. font-size: 48rpx;
  1111. text-align: center;
  1112. }
  1113. .success_tips {
  1114. color: red;
  1115. font-size: 30rpx;
  1116. }
  1117. }
  1118. }
  1119. .Scanning_cont {
  1120. font-size: 32rpx;
  1121. text-align: center;
  1122. view {
  1123. margin-bottom: 16rpx;
  1124. }
  1125. .Scanning_cont_center {
  1126. text-align: center;
  1127. }
  1128. .text {
  1129. margin-top: 24rpx;
  1130. color: #35b34a;
  1131. }
  1132. .text1 {
  1133. margin-top: 24rpx;
  1134. color: #ff3b53;
  1135. }
  1136. }
  1137. .foot_btn {
  1138. line-height: 88rpx;
  1139. height: 100rpx;
  1140. margin-top: 40rpx;
  1141. display: flex;
  1142. justify-content: center;
  1143. .btn1,
  1144. .btn2,
  1145. .btn3 {
  1146. height: 88rpx;
  1147. flex: 1;
  1148. margin: 0 1%;
  1149. background-image: linear-gradient(to right, #72c172, #3bb197);
  1150. color: #fff;
  1151. border-radius: 8rpx;
  1152. font-size: 32rpx;
  1153. margin-top: 16rpx;
  1154. text-align: center;
  1155. }
  1156. }
  1157. .foot_btn_spe {
  1158. line-height: 88rpx;
  1159. height: 100rpx;
  1160. margin-top: 40rpx;
  1161. text-align: center;
  1162. display: flex;
  1163. justify-content: space-between;
  1164. flex-wrap: wrap;
  1165. &::after {
  1166. content: '';
  1167. flex: 1;
  1168. }
  1169. view {
  1170. height: 88rpx;
  1171. width: 48%;
  1172. margin: 0 1%;
  1173. background-image: linear-gradient(to right, #72c172, #3bb197);
  1174. color: #fff;
  1175. border-radius: 8rpx;
  1176. font-size: 32rpx;
  1177. margin-top: 16rpx;
  1178. }
  1179. }
  1180. }
  1181. </style>