index.vue 24 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779
  1. <template>
  2. <view class="index">
  3. <view class="arc_edge"></view>
  4. <view class="index_container">
  5. <!-- 头部搜索 -->
  6. <view class="search">
  7. <view class="search_wrap">
  8. <input focus placeholder="请输入标本编码/检查单号/请…" :placeholder-style="placeholderStyle" confirm-type="search" />
  9. <view class="searchBtn"> 搜索 </view>
  10. </view>
  11. <view class="icon-saoma">
  12. <text class="pda pda-saoma"></text>
  13. </view>
  14. </view>
  15. <!-- 通告栏 -->
  16. <uni-notice-bar :speed="20" scrollable single showIcon :text="updateTipsForNurses" background-color="#fff"
  17. color="#666">
  18. </uni-notice-bar>
  19. <!-- 一键收标本 -->
  20. <view class="collect_specimens">
  21. <view class="collect_icon"> 标 </view>
  22. <view class="collect_specimensNum">
  23. <view class="urgent collect_row">
  24. 急标数量<text class="collect_num">{{
  25. urgentNum | specimenNum
  26. }}</text>
  27. </view>
  28. <view class="ordinary collect_row">
  29. 普标数量<text class="collect_num">{{
  30. ordinaryNum | specimenNum
  31. }}</text>
  32. </view>
  33. </view>
  34. <button class="collect_btn" type="default" @click="collectSpecimens">
  35. {{ specimenButton }}
  36. </button>
  37. </view>
  38. <!-- 最新工单 -->
  39. <view class="newOrders">
  40. <view class="newOrders_header">
  41. <text class="newOrders_header_title">最新工单</text>
  42. <text class="newOrders_header_more" @click="goToMore">更多&gt;&gt;</text>
  43. </view>
  44. <view class="newOrders_item" v-for="newOrder in newOrderList" :key="newOrder.id">
  45. <image class="ji" src="../../static/imgs/icon_ji.png" mode="widthFix"
  46. v-if="newOrder.emergencyType && newOrder.emergencyType.value == 2"></image>
  47. <image class="jiaji" src="../../static/imgs/icon_jiaji.png" mode="widthFix"
  48. v-if="newOrder.emergencyType && newOrder.emergencyType.value == 3"></image>
  49. <view class="newOrders_item_time" v-if="newOrder.showCreateTime">{{ newOrder.showCreateTime }}</view>
  50. <view class="newOrders_item_time" v-else-if="newOrder.yyjdTime && newOrder.gdState.value == 11">
  51. {{newOrder.yyjdTime | formatDate('MM-dd HH:mm')}}
  52. </view>
  53. <text class="newOrders_item_taskType">{{
  54. newOrder.isHalfInspect === 1
  55. ? "半程陪检"
  56. : newOrder.taskType && newOrder.taskType.taskName
  57. }}</text>
  58. <text class="newOrders_item_patientName">{{
  59. newOrder.patient && newOrder.patient.patientName
  60. }}</text>
  61. <text class="newOrders_item_status"
  62. :class="newOrder.stateTextClass">{{ newOrder.gdState && newOrder.gdState.name }}</text>
  63. </view>
  64. </view>
  65. <!-- 快捷工单 -->
  66. <view class="quick_other">
  67. <view class="quick_other_header">
  68. <text class="quick_other_header_title">快捷工单</text>
  69. </view>
  70. <view class="quick_other_container">
  71. <view class="quick_other_container_item" v-for="quickOther in quickOtherList" :key="quickOther.id">
  72. <view class="quick_other_container_item_text" @click="quickOrderOther(quickOther)">
  73. {{ quickOther.taskName }}
  74. </view>
  75. </view>
  76. </view>
  77. </view>
  78. </view>
  79. <seiminFooterNav></seiminFooterNav>
  80. <seiminModel ref="seiminModel"></seiminModel>
  81. <seiminPicker ref="sPicker" :title="pickerTitle" titleColor="#808080" titleFontSize="28rpx" confirmColor="#333"
  82. confirmFontSize="38rpx" confirmFontWeight="500" itemFontSize="28rpx" @onClose="closePicker"
  83. @onConfirm="confirmPicker" :pickerList="hospitalList">
  84. </seiminPicker>
  85. </view>
  86. </template>
  87. <script>
  88. import {
  89. mapState,
  90. mapMutations,
  91. mapActions
  92. } from "vuex";
  93. import {
  94. reqSpecimenWorkOrderMsg,
  95. reqDeptTaskType,
  96. reqFetchDataList,
  97. } from "../../request/api.js";
  98. import {
  99. GDSTATE
  100. } from "../../utils/enum.gdstate.js";
  101. import {
  102. ASSOCIATION_TYPES
  103. } from "../../utils/enum.association_types.js";
  104. export default {
  105. data() {
  106. return {
  107. placeholderStyle: "color:#999;font-size:30rpx;",
  108. urgentNum: 0, //急标数量
  109. ordinaryNum: 0, //普标数量
  110. newOrderList: [], //最新工单列表
  111. quickOtherList: [], //快捷工单列表
  112. hospitalList: [], //当前用户权限中的院区列表
  113. pickerTitle: "", //选择院区picker的title
  114. specimenTaskTypeId: undefined, //标本任务类型id
  115. };
  116. },
  117. computed: {
  118. ...mapState("login", ["loginInfo"]),
  119. ...mapState('other', [
  120. "isShowSeiminModel",
  121. "deptDisplay",
  122. "specimenButton",
  123. "updateTipsForNurses",
  124. ]),
  125. },
  126. methods: {
  127. ...mapMutations('other', [
  128. "changeSeiminModel",
  129. "changeQucikCreateOrderType",
  130. "changeDeptDisplay",
  131. "changeUpdateTipsForNurses",
  132. "changeSpecimenButton",
  133. "changeNurseDeptSwitchTip",
  134. "changeSearchDeptParams",
  135. ]),
  136. ...mapActions('system', ["vxSystem"]),
  137. // 跳转到工单列表页面
  138. goToMore() {
  139. uni.navigateTo({
  140. url: '/pages/orderList/orderList'
  141. })
  142. },
  143. // 获取页面数据
  144. init() {
  145. uni.showLoading({
  146. title: "加载中",
  147. mask: true,
  148. });
  149. Promise.all([
  150. this.querySpecimenNumRequest(), //查询急标和普标数量
  151. this.queryWorkOrdersRequest(), //查询最新工单列表
  152. this.queryDeptTaskTypeRequest(), //查询快捷工单(其他临床服务任务类型)
  153. this.queryDeptDisplayRequest(), //护士端科室显示选择(名称还是别名)
  154. this.queryUpdateTipsForNursesRequest(), //护士端更新提示
  155. this.querySpecimenButtonRequest(), //标本按钮文字
  156. this.queryNurseDeptSwitchTipRequest(), //护士科室切换提示自动关闭设置
  157. ]).then((values) => {
  158. uni.hideLoading();
  159. uni.stopPullDownRefresh();
  160. this.querySpecimenNumResponse(values[0]);
  161. this.queryWorkOrdersResponse(values[1]);
  162. this.queryDeptTaskTypeResponse(values[2]);
  163. this.queryDeptDisplayResponse(values[3]);
  164. this.queryUpdateTipsForNursesResponse(values[4]);
  165. this.querySpecimenButtonResponse(values[5]);
  166. this.queryNurseDeptSwitchTipResponse(values[6]);
  167. if (this.isShowSeiminModel) {
  168. this.showDeptModel();
  169. this.changeSeiminModel(false);
  170. }
  171. });
  172. },
  173. // 查询急标和普标数量
  174. querySpecimenNumRequest() {
  175. return reqSpecimenWorkOrderMsg({
  176. deptId: this.loginInfo.user.dept.id,
  177. });
  178. },
  179. // 查询急标和普标数量
  180. querySpecimenNumResponse(res) {
  181. if (res.status == 200) {
  182. if (res.specimenCount) {
  183. this.urgentNum = res.specimenCount.urgent;
  184. }
  185. if (res.specimenCount) {
  186. this.ordinaryNum = res.specimenCount.noUrgent;
  187. }
  188. } else {
  189. this.$refs.seiminModel.show({
  190. skin: "toast",
  191. icon: "error",
  192. content: res.msg || "获取数据失败",
  193. });
  194. throw new Error(res.msg || '获取数据失败');
  195. }
  196. },
  197. // 查询最新工单列表
  198. queryWorkOrdersRequest() {
  199. return reqFetchDataList("nurse", "workOrder", {
  200. workOrder: {
  201. createDept: this.loginInfo.user.dept.id,
  202. platform: 2,
  203. searchDays: 2,
  204. },
  205. idx: 0,
  206. sum: 5,
  207. });
  208. },
  209. // 查询最新工单列表
  210. queryWorkOrdersResponse(res) {
  211. if (res.status == 200) {
  212. res.list = res.list || [];
  213. this.newOrderList = res.list.map((v) => {
  214. if (v.gdState) {
  215. if (
  216. v.gdState.value == GDSTATE["待接单"] ||
  217. v.gdState.value == GDSTATE["待抢单"]
  218. ) {
  219. v.stateTextClass = "red";
  220. } else if (
  221. v.gdState.value == GDSTATE["待评价"] ||
  222. v.gdState.value == GDSTATE["已完成"]
  223. ) {
  224. v.stateTextClass = "green";
  225. } else {
  226. v.stateTextClass = "yellow";
  227. }
  228. }
  229. return v;
  230. });
  231. } else {
  232. this.$refs.seiminModel.show({
  233. skin: "toast",
  234. icon: "error",
  235. content: res.msg || "获取数据失败",
  236. });
  237. throw new Error(res.msg || '获取数据失败');
  238. }
  239. },
  240. // 查询快捷工单(其他临床服务任务类型)
  241. queryDeptTaskTypeRequest() {
  242. return reqDeptTaskType({
  243. deptId: this.loginInfo.user.dept.id,
  244. });
  245. },
  246. // 查询快捷工单(其他临床服务,标本)
  247. queryDeptTaskTypeResponse(res) {
  248. if (res.status == 200) {
  249. res.data = res.data || {};
  250. res.data.allTaskTypes = res.data.allTaskTypes || [];
  251. this.quickOtherList = res.data.allTaskTypes.filter(
  252. (v) => v.associationType ? v.associationType.value == ASSOCIATION_TYPES["其他临床服务"] : false
  253. );
  254. let specimenTaskType = res.data.allTaskTypes.find(
  255. (v) => v.associationType ? v.associationType.value == ASSOCIATION_TYPES["临时标本业务"] : false
  256. );
  257. this.specimenTaskTypeId = specimenTaskType && specimenTaskType.id;
  258. } else {
  259. this.$refs.seiminModel.show({
  260. skin: "toast",
  261. icon: "error",
  262. content: res.msg || "获取数据失败",
  263. });
  264. throw new Error(res.msg || '获取数据失败');
  265. }
  266. },
  267. // 护士端科室显示选择(名称还是别名)
  268. queryDeptDisplayRequest() {
  269. return this.vxSystem({
  270. idx: 0,
  271. sum: 1,
  272. systemConfiguration: {
  273. keyconfig: "deptDisplay",
  274. },
  275. });
  276. },
  277. // 护士端科室显示选择(名称还是别名)
  278. queryDeptDisplayResponse(res) {
  279. if (res.status == 200) {
  280. res.list = res.list || [];
  281. res.list[0] = res.list[0] || {};
  282. if (!res.list[0].id) {
  283. this.$refs.seiminModel.show({
  284. skin: "toast",
  285. icon: "error",
  286. content: "无法获取到【护士端科室显示选择】配置,请前往配置",
  287. });
  288. throw new Error('无法获取到【护士端科室显示选择】配置,请前往配置');
  289. }
  290. this.changeDeptDisplay(res.list[0].valueconfig);
  291. } else {
  292. this.$refs.seiminModel.show({
  293. skin: "toast",
  294. icon: "error",
  295. content: res.msg || "无法获取到【护士端科室显示选择】配置,请前往配置",
  296. });
  297. throw new Error(res.msg || '无法获取到【护士端科室显示选择】配置,请前往配置');
  298. }
  299. },
  300. // 护士端更新提示
  301. queryUpdateTipsForNursesRequest() {
  302. return this.vxSystem({
  303. idx: 0,
  304. sum: 1,
  305. systemConfiguration: {
  306. keyconfig: "updateTipsForNurses",
  307. },
  308. });
  309. },
  310. // 护士端更新提示
  311. queryUpdateTipsForNursesResponse(res) {
  312. if (res.status == 200) {
  313. res.list = res.list || [];
  314. res.list[0] = res.list[0] || {};
  315. if (!res.list[0].id) {
  316. this.$refs.seiminModel.show({
  317. skin: "toast",
  318. icon: "error",
  319. content: "无法获取到【护士端更新提示】配置,请前往配置",
  320. });
  321. throw new Error('无法获取到【护士端更新提示】配置,请前往配置');
  322. }
  323. this.changeUpdateTipsForNurses(res.list[0].valueconfig);
  324. } else {
  325. this.$refs.seiminModel.show({
  326. skin: "toast",
  327. icon: "error",
  328. content: res.msg || "无法获取到【护士端更新提示】配置,请前往配置",
  329. });
  330. throw new Error(res.msg || '无法获取到【护士端更新提示】配置,请前往配置');
  331. }
  332. },
  333. // 标本按钮文字
  334. querySpecimenButtonRequest() {
  335. return this.vxSystem({
  336. idx: 0,
  337. sum: 1,
  338. systemConfiguration: {
  339. keyconfig: "specimenButton",
  340. },
  341. });
  342. },
  343. // 标本按钮文字
  344. querySpecimenButtonResponse(res) {
  345. if (res.status == 200) {
  346. res.list = res.list || [];
  347. res.list[0] = res.list[0] || {};
  348. if (!res.list[0].id) {
  349. this.$refs.seiminModel.show({
  350. skin: "toast",
  351. icon: "error",
  352. content: "无法获取到【标本按钮文字】配置,请前往配置",
  353. });
  354. throw new Error('无法获取到【标本按钮文字】配置,请前往配置');
  355. }
  356. this.changeSpecimenButton(res.list[0].valueconfig);
  357. } else {
  358. this.$refs.seiminModel.show({
  359. skin: "toast",
  360. icon: "error",
  361. content: res.msg || "无法获取到【标本按钮文字】配置,请前往配置",
  362. });
  363. throw new Error(res.msg || '无法获取到【标本按钮文字】配置,请前往配置');
  364. }
  365. },
  366. // 护士科室切换提示自动关闭设置
  367. queryNurseDeptSwitchTipRequest() {
  368. return this.vxSystem({
  369. idx: 0,
  370. sum: 1,
  371. systemConfiguration: {
  372. keyconfig: "nurseDeptSwitchTip",
  373. },
  374. });
  375. },
  376. // 护士科室切换提示自动关闭设置
  377. queryNurseDeptSwitchTipResponse(res) {
  378. if (res.status == 200) {
  379. res.list = res.list || [];
  380. res.list[0] = res.list[0] || {};
  381. if (!res.list[0].id) {
  382. this.$refs.seiminModel.show({
  383. skin: "toast",
  384. icon: "error",
  385. content: "无法获取到【护士科室切换提示自动关闭设置】配置,请前往配置",
  386. });
  387. throw new Error('无法获取到【护士科室切换提示自动关闭设置】配置,请前往配置');
  388. }
  389. this.changeNurseDeptSwitchTip(res.list[0].valueconfig);
  390. } else {
  391. this.$refs.seiminModel.show({
  392. skin: "toast",
  393. icon: "error",
  394. content: res.msg || "无法获取到【护士科室切换提示自动关闭设置】配置,请前往配置",
  395. });
  396. throw new Error(res.msg || '无法获取到【护士科室切换提示自动关闭设置】配置,请前往配置');
  397. }
  398. },
  399. // 一键收取标本
  400. collectSpecimens() {
  401. if (!this.specimenTaskTypeId) {
  402. this.$refs.seiminModel.show({
  403. skin: "toast",
  404. icon: "error",
  405. content: "无法获取到临时标本业务",
  406. });
  407. throw new Error('无法获取到标本任务类型id');
  408. }
  409. uni.navigateTo({
  410. url: "/pages/quickCreateOrder/quickCreateOrder",
  411. });
  412. this.changeQucikCreateOrderType({
  413. type: "specimen",
  414. taskTypeId: this.specimenTaskTypeId,
  415. });
  416. },
  417. //其他临床服务快捷建单
  418. quickOrderOther(quickOther) {
  419. uni.navigateTo({
  420. url: "/pages/quickCreateOrder/quickCreateOrder",
  421. });
  422. this.changeQucikCreateOrderType({
  423. type: "other",
  424. taskTypeId: quickOther.id,
  425. });
  426. },
  427. // 切换科室弹窗
  428. showDeptModel() {
  429. const {
  430. user, //当前登录用户
  431. } = this.loginInfo;
  432. const userDept =
  433. user && user.dept ?
  434. this.deptDisplay == 1 ?
  435. user.dept.dept :
  436. user.dept.deptalias :
  437. "";
  438. this.$refs.seiminModel.showChangeDept({
  439. content: `您当前所属科室为<text class="green">${userDept}</text>,如与您实际科室不符点击<text class="red">切换科室</text>。`,
  440. btns: [{
  441. name: "知道了",
  442. textColor: "#49B856",
  443. flex: 2,
  444. },
  445. {
  446. name: "前往切换科室",
  447. textColor: "#666",
  448. flex: 3,
  449. click: (e) => {
  450. this.$refs.seiminModel.close();
  451. this.openPicker();
  452. },
  453. },
  454. ],
  455. });
  456. },
  457. //关闭
  458. closePicker() {
  459. this.$refs.sPicker._close();
  460. },
  461. //打开
  462. openPicker() {
  463. this.$refs.sPicker._open();
  464. let index = this.hospitalList.findIndex(v => v.value == this.loginInfo.user.currentHospital.id);
  465. this.$refs.sPicker._changeValue(index);
  466. },
  467. //确定:接收子组件传来的参数
  468. confirmPicker(checkedObj) {
  469. this.changeSearchDeptParams({
  470. backUrl: "/pages/index/index", //返回的url
  471. type: "changeDept_index", //首页切换科室
  472. hospital: checkedObj, //先选择院区
  473. });
  474. uni.navigateTo({
  475. url: "/pages/searchDept/searchDept",
  476. });
  477. },
  478. },
  479. mounted() {
  480. //选择院区picker的title
  481. this.pickerTitle = `您当前所属科室为<b class="green">${this.loginInfo.user.dept.dept}</b>,请您先选择院区`;
  482. //权限中的院区修改数据结构
  483. this.hospitalList = this.loginInfo.infoPermission.hospitals.map((v) => ({
  484. value: v.id,
  485. label: v.hosName,
  486. }));
  487. this.init();
  488. },
  489. onPullDownRefresh() {
  490. this.init();
  491. },
  492. };
  493. </script>
  494. <style lang="scss" scoped>
  495. .index {
  496. padding-bottom: 108rpx;
  497. // 弧形背景
  498. .arc_edge {
  499. @include arc_edge;
  500. }
  501. .index_container {
  502. padding: 0 24rpx;
  503. position: relative;
  504. z-index: 2;
  505. // 搜素框
  506. .search {
  507. height: 66rpx;
  508. margin-top: -200rpx;
  509. @include flex(space-between, center);
  510. .search_wrap {
  511. width: 600rpx;
  512. height: 100%;
  513. border-radius: 33rpx;
  514. background-color: #fff;
  515. position: relative;
  516. input {
  517. height: 100%;
  518. padding-left: 33rpx;
  519. padding-right: 147rpx;
  520. }
  521. .searchBtn {
  522. position: absolute;
  523. right: 0;
  524. top: 50%;
  525. transform: translateY(-50%);
  526. line-height: 1em;
  527. color: #666;
  528. font-size: 32rpx;
  529. width: 110rpx;
  530. text-align: center;
  531. padding: 6rpx 0;
  532. @include border(left);
  533. }
  534. }
  535. .icon-saoma {
  536. width: 66rpx;
  537. height: 66rpx;
  538. background-color: #bee1a7;
  539. border-radius: 50%;
  540. color: $defaultColor;
  541. @include flex(center, center);
  542. }
  543. }
  544. // 通告栏
  545. .uni-noticebar {
  546. height: 88rpx;
  547. margin-top: 24rpx;
  548. margin-bottom: 0;
  549. @include border;
  550. }
  551. // 一键收标本
  552. .collect_specimens {
  553. width: 702rpx;
  554. height: 176rpx;
  555. background-color: #fff;
  556. margin-top: 8rpx;
  557. border-radius: 8rpx;
  558. // box-shadow: 0 0 7rpx 0 rgba(73, 184, 86, 0.09);
  559. position: relative;
  560. @include border;
  561. @include flex(center, center);
  562. @include semicircle(#f9fafb);
  563. .collect_icon {
  564. width: 48rpx;
  565. height: 48rpx;
  566. border-radius: 50%;
  567. background-color: rgba(57, 177, 153, 0.3);
  568. font-size: 24rpx;
  569. color: #39b199;
  570. @include border($color:#39b199);
  571. @include flex(center, center);
  572. }
  573. .collect_specimensNum {
  574. margin: 0 35rpx;
  575. width: 277rpx;
  576. font-size: 34rpx;
  577. color: #666;
  578. .collect_num {
  579. font-size: 46rpx;
  580. font-weight: 600;
  581. color: #333;
  582. margin-left: 16rpx;
  583. }
  584. .collect_row {
  585. height: 88rpx;
  586. @include border($directive:bottom,$style:dashed);
  587. @include flex(flex-start, center);
  588. &:last-of-type {
  589. border-bottom: none;
  590. }
  591. }
  592. }
  593. .collect_btn {
  594. margin: 0;
  595. width: 224rpx;
  596. height: 88rpx;
  597. background: linear-gradient(90deg, #74c271 0%, #39b199 100%);
  598. border-radius: 56rpx;
  599. color: #fff;
  600. font-size: 32rpx;
  601. line-height: 88rpx;
  602. &::after {
  603. border: none;
  604. }
  605. }
  606. }
  607. // 最新工单
  608. .newOrders {
  609. width: 702rpx;
  610. min-height: 530rpx;
  611. background-color: #fff;
  612. margin-top: 8rpx;
  613. border-radius: 8rpx;
  614. // box-shadow: 0 0 7rpx 0 rgba(73, 184, 86, 0.09);
  615. position: relative;
  616. padding: 0 15rpx;
  617. font-size: 32rpx;
  618. @include border;
  619. @include semicircle(#f9fafb, 70rpx);
  620. .newOrders_header {
  621. height: 87rpx;
  622. padding: 0 27rpx;
  623. @include border($directive:bottom, $style:dashed);
  624. @include flex(space-between, center);
  625. .newOrders_header_title {
  626. color: #333;
  627. }
  628. .newOrders_header_more {
  629. color: #666;
  630. }
  631. }
  632. .newOrders_item {
  633. height: 88rpx;
  634. padding: 0 27rpx;
  635. color: #333;
  636. font-size: 30rpx;
  637. position: relative;
  638. @include border(bottom);
  639. @include flex(center, center);
  640. .ji,
  641. .jiaji {
  642. width: 60rpx;
  643. position: absolute;
  644. right: 0;
  645. top: 0;
  646. }
  647. &:last-of-type {
  648. border-bottom: none;
  649. }
  650. .newOrders_item_time {
  651. width: 88rpx;
  652. text-align: center;
  653. }
  654. .newOrders_item_taskType {
  655. flex: 1;
  656. margin-left: 16rpx;
  657. @include clamp(1);
  658. }
  659. .newOrders_item_patientName {
  660. margin-left: 16rpx;
  661. margin-right: 16rpx;
  662. width: 148rpx;
  663. @include clamp(1);
  664. }
  665. .newOrders_item_status {}
  666. }
  667. }
  668. // 快捷工单
  669. .quick_other {
  670. width: 702rpx;
  671. background-color: #fff;
  672. margin-top: 8rpx;
  673. border-radius: 8rpx;
  674. // box-shadow: 0 0 7rpx 0 rgba(73, 184, 86, 0.09);
  675. position: relative;
  676. padding: 0 15rpx;
  677. font-size: 32rpx;
  678. @include border;
  679. @include semicircle(#f9fafb, 70rpx);
  680. .quick_other_header {
  681. height: 87rpx;
  682. padding: 0 27rpx;
  683. @include border($directive:bottom,$style:dashed);
  684. @include flex(space-between, center);
  685. .quick_other_header_title {
  686. color: #333;
  687. }
  688. }
  689. .quick_other_container {
  690. min-height: 288rpx;
  691. @include flex(flex-start, center);
  692. flex-wrap: wrap;
  693. font-size: 28rpx;
  694. .quick_other_container_item {
  695. width: 96rpx;
  696. height: 96rpx;
  697. border-radius: 8rpx;
  698. margin: 16rpx 35rpx;
  699. color: #fff;
  700. text-align: center;
  701. @include flex(center, center);
  702. .quick_other_container_item_text {
  703. @include clamp(2);
  704. }
  705. &:nth-of-type(8n + 1) {
  706. background-color: #a4c4c1;
  707. }
  708. &:nth-of-type(8n + 2) {
  709. background-color: #56bab6;
  710. }
  711. &:nth-of-type(8n + 3) {
  712. background-color: #39b199;
  713. }
  714. &:nth-of-type(8n + 4) {
  715. background-color: #48717f;
  716. }
  717. &:nth-of-type(8n + 5) {
  718. background-color: #56bab6;
  719. }
  720. &:nth-of-type(8n + 6) {
  721. background-color: #a4c4c1;
  722. }
  723. &:nth-of-type(8n + 7) {
  724. background-color: #48717f;
  725. }
  726. &:nth-of-type(8n + 8) {
  727. background-color: #8e9d9e;
  728. }
  729. }
  730. }
  731. }
  732. }
  733. }
  734. </style>