scanning_djInfo.vue 21 KB

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