orderList.vue 24 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743
  1. <template>
  2. <view class="orderList">
  3. <!-- 头部筛选 -->
  4. <view class="orderList_header">
  5. <view class="orderList_header_item" @click="openPicker('gdState')">
  6. <text class="orderList_header_itemText">{{selectedGdState}}</text>
  7. <text class="pda pda-xiala"></text>
  8. </view>
  9. <view class="orderList_header_item" @click="openPicker('associationType')">
  10. <text class="orderList_header_itemText">{{selectedAssociationType}}</text>
  11. <text class="pda pda-xiala"></text>
  12. </view>
  13. </view>
  14. <!-- 列表 -->
  15. <view class="orderList_list">
  16. <view class="orderList_listItem" v-for="newOrder in newOrderList" :key="newOrder.id"
  17. @click="toDetail(newOrder.id)">
  18. <image class="ji" src="../../static/imgs/icon_ji.png" mode="widthFix"
  19. v-if="newOrder.emergencyType && newOrder.emergencyType.value == 2"></image>
  20. <image class="jiaji" src="../../static/imgs/icon_jiaji.png" mode="widthFix"
  21. v-if="newOrder.emergencyType && newOrder.emergencyType.value == 3"></image>
  22. <view class="orderList_listItem_header">
  23. <view class="orderList_listItem_header_title">
  24. <view class="associationType_icon" v-if="newOrder.isHalfInspect === 1"> 半 </view>
  25. <view class="associationType_icon" v-else-if="newOrder.taskType.associationType.value == 'specimen'">标
  26. </view>
  27. <view class="associationType_icon" v-else-if="newOrder.taskType.associationType.value == 'drugsBag'"> 药
  28. </view>
  29. <view class="associationType_icon" v-else-if="newOrder.taskType.associationType.value == 'specimenPlan'"> 巡
  30. </view>
  31. <view class="associationType_icon" v-else-if="newOrder.taskType.associationType.value == 'jPBag'"> 静 </view>
  32. <view class="associationType_icon" v-else-if="newOrder.taskType.associationType.value == 'inspect'"> 病
  33. </view>
  34. <view class="associationType_icon"
  35. v-else-if="newOrder.taskType.associationType.value == 'patientTransport'"> 病
  36. </view>
  37. <view class="associationType_icon" v-else-if="newOrder.taskType.associationType.value == 'other'"> 其
  38. </view>
  39. <view class="taskNameAndWorkerName">
  40. <text class="taskName">{{newOrder.isHalfInspect === 1? "半程陪检": newOrder.taskType.taskName}}</text>
  41. <text class="workerName"
  42. v-if="newOrder.patient &&(newOrder.taskType.associationType.value =='patientTransport' ||newOrder.taskType.associationType.value =='inspect')">-{{newOrder.patient.patientName}}</text>
  43. </view>
  44. </view>
  45. <text class="orderList_listItem_header_more"
  46. :class="newOrder.stateTextClass">{{newOrder.gdState.name }}</text>
  47. </view>
  48. <view class="orderList_listItem_item">
  49. <view class="orderList_listItem_item_content">
  50. <text class="orderList_listItem_item_name"
  51. v-if="newOrder.worker">{{newOrder.worker.name}}{{newOrder.worker.phone? "-" + newOrder.worker.phone: ""}}</text>
  52. <text class="orderList_listItem_item_name" v-else>暂未接单</text>
  53. <text class="orderList_listItem_item_time" v-if="newOrder.showCreateTime">{{newOrder.showCreateTime}}</text>
  54. <text class="orderList_listItem_item_time"
  55. v-else-if="newOrder.yyjdTime && newOrder.gdState.value == GDSTATE['定时预约']">{{newOrder.yyjdTime | formatDate('MM-dd HH:mm')}}</text>
  56. </view>
  57. <view class="orderList_listItem_item_btns" v-if="
  58. newOrder.gdState.value == GDSTATE['待抢单'] ||
  59. newOrder.gdState.value == GDSTATE['待接单'] ||
  60. newOrder.gdState.value == GDSTATE['待到达'] ||
  61. newOrder.gdState.value == GDSTATE['定时预约'] ||
  62. newOrder.gdState.value == GDSTATE['待评价']
  63. ">
  64. <button type="primary" class="btn" v-if="newOrder.gdState.value == GDSTATE['待评价']"
  65. @click="showAppraise(newOrder.id)">评价</button>
  66. <button type="primary" class="btn" v-if="
  67. newOrder.gdState.value == GDSTATE['待抢单'] ||
  68. newOrder.gdState.value == GDSTATE['待接单'] ||
  69. newOrder.gdState.value == GDSTATE['待到达'] ||
  70. newOrder.gdState.value == GDSTATE['定时预约']
  71. " @click="openRecallModal(newOrder.id)">撤销</button>
  72. <button type="primary" class="btn" v-if="newOrder.gdState.value == GDSTATE['定时预约']"
  73. @click="openExecModal(newOrder.id)">立即执行</button>
  74. <button type="primary" class="btn" v-if="
  75. (newOrder.gdState.value == GDSTATE['待抢单'] ||
  76. newOrder.gdState.value == GDSTATE['待到达']) &&
  77. newOrder.taskType.allowUrgent == 1 &&
  78. !newOrder.urgentDetails
  79. " @click="showJiaji(newOrder.id)">加急</button>
  80. </view>
  81. </view>
  82. </view>
  83. </view>
  84. <seiminFooterNav></seiminFooterNav>
  85. <seiminModel ref="seiminModel"></seiminModel>
  86. <seiminPicker ref="sPicker" titleColor="#808080" titleFontSize="28rpx" confirmColor="#333" confirmFontSize="38rpx"
  87. confirmFontWeight="500" itemFontSize="28rpx" @onClose="closePicker" @onConfirm="confirmPicker"
  88. :pickerList="pickerList">
  89. </seiminPicker>
  90. </view>
  91. </template>
  92. <script>
  93. import {
  94. mapState,
  95. mapActions
  96. } from "vuex";
  97. import {
  98. reqFetchDataList,
  99. reqDelWorkOrder,
  100. reqUrge,
  101. reqDirectStartOrder,
  102. reqEvaluate,
  103. } from "../../request/api.js";
  104. import {
  105. GDSTATE
  106. } from "../../utils/enum.gdstate.js";
  107. import {
  108. WORKORDEREVALUATION
  109. } from "../../utils/enum.workorderEvaluation.js";
  110. export default {
  111. name: 'orderList',
  112. data() {
  113. return {
  114. // 工单状态
  115. GDSTATE: GDSTATE,
  116. // 当前筛选的工单状态
  117. selectedGdState: '执行中',
  118. // 当前筛选的关联类型
  119. selectedAssociationType: '全部',
  120. //工单状态筛选列表
  121. gdStates: [{
  122. value: -1,
  123. label: '全部'
  124. },
  125. {
  126. value: 1,
  127. label: '执行中'
  128. },
  129. {
  130. value: 2,
  131. label: '待评价'
  132. },
  133. ],
  134. //关联类型筛选列表
  135. associationTypes: [{
  136. value: -1,
  137. label: '全部'
  138. }, ],
  139. newOrderList: [], //工单列表
  140. totalNum: 0, //工单总数量
  141. idx: 0, //页码
  142. pageNum: 20, //每页的工单数量
  143. pickerList: [], //picker列表
  144. type: '', //打开picker的类型,工单状态||关联类型
  145. checkStatus: {}, //审核状态列表
  146. };
  147. },
  148. computed: {
  149. ...mapState("login", ["loginInfo"]),
  150. },
  151. methods: {
  152. ...mapActions("dictionary", ["vxDictionary"]),
  153. // 前往工单详情
  154. toDetail(id) {
  155. uni.navigateTo({
  156. url: `/pages/orderDetail/orderDetail?id=${id}`
  157. })
  158. },
  159. //评价
  160. showAppraise(id) {
  161. this.$refs.seiminModel.show({
  162. skin: 'evaluate',
  163. content: "工单已完成,请对本次服务做出评价!",
  164. btns: [{
  165. click: () => {
  166. console.log('取消');
  167. this.$refs.seiminModel.close();
  168. }
  169. },
  170. {
  171. click: () => {
  172. console.log('确定');
  173. let serviceEvaluationId;
  174. this.$refs.seiminModel.close();
  175. uni.showLoading({
  176. title: '加载中',
  177. mask: true,
  178. })
  179. //算出评级
  180. switch (this.$refs.seiminModel.stars.indexOf('pda-haoping1')) {
  181. case -1:
  182. //五星
  183. serviceEvaluationId = WORKORDEREVALUATION['非常好评'];
  184. break;
  185. case 1:
  186. //一星
  187. serviceEvaluationId = WORKORDEREVALUATION['极差'];
  188. break;
  189. case 2:
  190. //二星
  191. serviceEvaluationId = WORKORDEREVALUATION['差'];
  192. break;
  193. case 3:
  194. //三星
  195. serviceEvaluationId = WORKORDEREVALUATION['一般'];
  196. break;
  197. case 4:
  198. //四星
  199. serviceEvaluationId = WORKORDEREVALUATION['好评'];
  200. break;
  201. }
  202. let postData = {
  203. serviceEvaluation: {
  204. id: serviceEvaluationId
  205. },
  206. remark: this.$refs.seiminModel.evaluateTextArea,
  207. };
  208. reqEvaluate(id, postData).then(res => {
  209. uni.hideLoading();
  210. if (res.status == 200) {
  211. this.$refs.seiminModel.show({
  212. skin: 'toast',
  213. icon: 'success',
  214. content: '评价成功',
  215. })
  216. this.init();
  217. } else {
  218. this.$refs.seiminModel.show({
  219. skin: 'toast',
  220. icon: 'error',
  221. content: '评价失败',
  222. })
  223. }
  224. })
  225. }
  226. }
  227. ]
  228. });
  229. },
  230. //撤销
  231. openRecallModal(id) {
  232. this.$refs.seiminModel.show({
  233. icon: "warn",
  234. content: "您确认要撤销工单吗?撤销工单我们会通知服务台、支助人员不再执行此工单,请谨慎操作,如确认撤销请点击确认。",
  235. btns: [{
  236. click: () => {
  237. console.log('取消');
  238. this.$refs.seiminModel.close();
  239. }
  240. },
  241. {
  242. click: () => {
  243. console.log('确定');
  244. this.$refs.seiminModel.close();
  245. uni.showLoading({
  246. title: '加载中',
  247. mask: true,
  248. })
  249. reqDelWorkOrder(id).then(res => {
  250. uni.hideLoading();
  251. if (res.status == 200) {
  252. this.$refs.seiminModel.show({
  253. skin: 'toast',
  254. icon: 'success',
  255. content: '撤销成功',
  256. })
  257. this.init();
  258. } else {
  259. this.$refs.seiminModel.show({
  260. skin: 'toast',
  261. icon: 'error',
  262. content: '撤销失败',
  263. })
  264. }
  265. })
  266. }
  267. }
  268. ]
  269. });
  270. },
  271. //立即执行
  272. openExecModal(id) {
  273. this.$refs.seiminModel.show({
  274. icon: 'warn',
  275. content: '您确认要立即执行该工单吗?',
  276. btns: [{
  277. click: () => {
  278. console.log('取消');
  279. this.$refs.seiminModel.close();
  280. }
  281. }, {
  282. click: () => {
  283. console.log('确认');
  284. this.$refs.seiminModel.close();
  285. uni.showLoading({
  286. title: '加载中',
  287. mask: true,
  288. })
  289. reqDirectStartOrder(id).then(res => {
  290. uni.hideLoading();
  291. if (res.status == 200) {
  292. this.$refs.seiminModel.show({
  293. skin: 'toast',
  294. icon: 'success',
  295. content: '您的加急申请已成功,调度人员会紧急处理!',
  296. })
  297. this.init();
  298. } else {
  299. this.$refs.seiminModel.show({
  300. skin: 'toast',
  301. icon: 'error',
  302. content: '加急失败',
  303. })
  304. }
  305. })
  306. }
  307. }, ]
  308. })
  309. },
  310. //加急
  311. showJiaji(id) {
  312. this.$refs.seiminModel.urgentTextArea = '';
  313. this.$refs.seiminModel.show({
  314. title: '',
  315. skin: 'urgent',
  316. content: "请填写加急原因,填写后我们会根据您的诉求优先处理",
  317. btns: [{
  318. click: () => {
  319. console.log('取消');
  320. this.$refs.seiminModel.close();
  321. }
  322. },
  323. {
  324. click: () => {
  325. console.log('确定', this.$refs.seiminModel.urgentTextArea);
  326. const urgentTextArea = this.$refs.seiminModel.urgentTextArea;
  327. if (urgentTextArea.trim() === '') {
  328. uni.showToast({
  329. icon: 'none',
  330. title: '请填写加急原因',
  331. })
  332. return;
  333. }
  334. this.$refs.seiminModel.close();
  335. uni.showLoading({
  336. title: '加载中',
  337. mask: true,
  338. })
  339. let postData = {
  340. urgentDetails: {
  341. workerOrder: id,
  342. checkStatus: {
  343. id: this.checkStatus[1]
  344. },
  345. urgentReason: urgentTextArea,
  346. },
  347. };
  348. reqUrge(postData).then(res => {
  349. uni.hideLoading();
  350. if (res.status == 200) {
  351. this.$refs.seiminModel.show({
  352. skin: 'toast',
  353. icon: 'success',
  354. content: '加急成功',
  355. })
  356. this.init();
  357. } else {
  358. this.$refs.seiminModel.show({
  359. skin: 'toast',
  360. icon: 'error',
  361. content: '加急失败',
  362. })
  363. }
  364. })
  365. }
  366. }
  367. ]
  368. });
  369. },
  370. //关闭
  371. closePicker() {
  372. this.$refs.sPicker._close();
  373. },
  374. //打开
  375. openPicker(type) {
  376. this.type = type;
  377. this.$refs.sPicker._open();
  378. if (type === 'gdState') {
  379. //工单状态
  380. this.pickerList = this.gdStates;
  381. let index = this.pickerList.findIndex(v => v.label === this.selectedGdState);
  382. let obj = this.pickerList.find(v => v.label === this.selectedGdState);
  383. this.$refs.sPicker._changeValue(index);
  384. this.selectedGdState = obj && obj.label;
  385. } else if (type === 'associationType') {
  386. //关联类型
  387. this.pickerList = this.associationTypes;
  388. let index = this.pickerList.findIndex(v => v.label === this.selectedAssociationType);
  389. let obj = this.pickerList.find(v => v.label === this.selectedAssociationType);
  390. this.$refs.sPicker._changeValue(index);
  391. this.selectedAssociationType = obj && obj.label;
  392. }
  393. },
  394. //确定:接收子组件传来的参数
  395. confirmPicker(checkedObj) {
  396. if (this.type === 'gdState') {
  397. //工单状态
  398. this.selectedGdState = checkedObj.label;
  399. } else if (this.type === 'associationType') {
  400. //关联类型
  401. this.selectedAssociationType = checkedObj.label;
  402. }
  403. let index = this.pickerList.findIndex(v => v.label === checkedObj.label);
  404. this.$refs.sPicker._changeValue(index);
  405. this.init();
  406. },
  407. // 获取页面数据
  408. init() {
  409. uni.showLoading({
  410. title: "加载中",
  411. mask: true,
  412. });
  413. Promise.all([
  414. this.queryWorkOrdersRequest(), //查询最新工单列表
  415. this.queryDictionary('association_types'), //获取数据字典-关联类型
  416. this.queryDictionary('check_status'), //获取数据字典-审核状态
  417. ]).then((values) => {
  418. uni.hideLoading();
  419. uni.stopPullDownRefresh();
  420. this.queryWorkOrdersResponse(values[0]);
  421. this.queryDictionaryResponse(values[1], 'association_types');
  422. this.queryDictionaryResponse(values[2], 'check_status');
  423. });
  424. },
  425. // 查询最新工单列表(上拉)
  426. reachBottom() {
  427. //没有更多
  428. if (this.newOrderList.length == this.totalNum) {
  429. uni.showToast({
  430. icon: 'none',
  431. title: '没有更多工单了'
  432. })
  433. return;
  434. }
  435. uni.showLoading({
  436. title: "加载中",
  437. mask: true,
  438. });
  439. Promise.all([
  440. this.queryWorkOrdersRequest(true), //查询最新工单列表
  441. ]).then((values) => {
  442. uni.hideLoading();
  443. this.queryWorkOrdersResponse(values[0], true);
  444. });
  445. },
  446. // 查询最新工单列表
  447. queryWorkOrdersRequest(idxPlus = false) {
  448. console.log(this.selectedGdState, this.selectedAssociationType);
  449. console.log(this.gdStates, this.associationTypes);
  450. if (idxPlus) {
  451. //累加
  452. ++this.idx;
  453. } else {
  454. this.idx = 0;
  455. }
  456. let postData = {
  457. workOrder: {
  458. createDept: this.loginInfo.user.dept.id,
  459. platform: 2,
  460. searchDays: 2,
  461. },
  462. idx: this.idx,
  463. sum: this.pageNum,
  464. };
  465. let selectedGdStateValue = this.gdStates.find(v => v.label == this.selectedGdState).value;
  466. let associationTypesValue = this.associationTypes.find(v => v.label == this.selectedAssociationType).value;
  467. // 工单状态
  468. // 执行中包含状态:待抢单、待接单、待到达、待送达、执行中、定时预约
  469. if (selectedGdStateValue == 1) {
  470. // 执行中
  471. postData.workOrder.nurseState = 1;
  472. } else if (selectedGdStateValue == 2) {
  473. // 待评价
  474. postData.workOrder.gdState = {
  475. id: "73"
  476. };
  477. }
  478. //关联类型
  479. if (associationTypesValue != -1) {
  480. postData.workOrder.taskType = {
  481. associationType: {
  482. id: associationTypesValue,
  483. }
  484. }
  485. }
  486. return reqFetchDataList("nurse", "workOrder", postData);
  487. },
  488. // 查询最新工单列表
  489. queryWorkOrdersResponse(res, idxPlus = false) {
  490. if (res.status == 200) {
  491. res.list = res.list || [];
  492. this.totalNum = res.totalNum || 0;
  493. let newOrderList = res.list.map((v) => {
  494. if (v.gdState) {
  495. if (
  496. v.gdState.value == GDSTATE["待接单"] ||
  497. v.gdState.value == GDSTATE["待抢单"]
  498. ) {
  499. v.stateTextClass = "red";
  500. } else if (
  501. v.gdState.value == GDSTATE["待评价"] ||
  502. v.gdState.value == GDSTATE["已完成"]
  503. ) {
  504. v.stateTextClass = "green";
  505. } else {
  506. v.stateTextClass = "yellow";
  507. }
  508. }
  509. return v;
  510. });
  511. if (idxPlus) {
  512. //累加
  513. this.newOrderList = this.newOrderList.concat(newOrderList);
  514. } else {
  515. this.newOrderList = newOrderList;
  516. }
  517. } else {
  518. this.$refs.seiminModel.show({
  519. skin: "toast",
  520. icon: "error",
  521. content: res.msg || "获取数据失败",
  522. });
  523. throw new Error(res.msg || '获取数据失败');
  524. }
  525. },
  526. // 获取数据字典
  527. queryDictionary(key) {
  528. let postData = {
  529. "type": "list",
  530. key
  531. };
  532. return this.vxDictionary(postData);
  533. },
  534. // 获取数据字典
  535. queryDictionaryResponse(res, type) {
  536. let obj = {};
  537. let arr = [];
  538. switch (type) {
  539. case 'association_types':
  540. arr = res.map(v => ({
  541. value: v.id,
  542. label: v.name
  543. }));
  544. this.associationTypes = [{
  545. label: '全部',
  546. value: -1
  547. }, ...arr];
  548. break;
  549. case 'check_status':
  550. obj = {};
  551. res.forEach(v => {
  552. obj[v.value] = v.id;
  553. })
  554. this.checkStatus = obj;
  555. break;
  556. }
  557. },
  558. },
  559. mounted() {
  560. this.init();
  561. },
  562. onPullDownRefresh() {
  563. this.init();
  564. },
  565. onReachBottom() {
  566. this.reachBottom();
  567. }
  568. }
  569. </script>
  570. <style lang="scss" scoped>
  571. .orderList {
  572. padding-bottom: 108rpx;
  573. // 头部筛选
  574. .orderList_header {
  575. height: 88rpx;
  576. background-color: #fff;
  577. position: fixed;
  578. left: 0;
  579. z-index: 99;
  580. width: 100%;
  581. @include border(bottom);
  582. @include flex(center, center);
  583. .orderList_header_item {
  584. flex: 1;
  585. height: 100%;
  586. padding: 0 50rpx;
  587. @include border(right);
  588. @include flex(space-between, center);
  589. &:last-of-type {
  590. border-right: none;
  591. }
  592. .orderList_header_itemText {
  593. color: #333;
  594. font-size: 38rpx;
  595. }
  596. .pda-xiala {
  597. color: #DDE1E5;
  598. }
  599. }
  600. }
  601. // 列表
  602. .orderList_list {
  603. padding: 88rpx 24rpx 0;
  604. .orderList_listItem {
  605. width: 702rpx;
  606. min-height: 320rpx;
  607. background-color: #fff;
  608. margin-top: 8rpx;
  609. border-radius: 8rpx;
  610. position: relative;
  611. padding: 0 24rpx;
  612. font-size: 32rpx;
  613. @include border;
  614. @include semicircle(#f9fafb, 82rpx);
  615. @include flex(flex-start, stretch, column);
  616. .ji,
  617. .jiaji {
  618. width: 60rpx;
  619. position: absolute;
  620. right: 0;
  621. top: 0;
  622. }
  623. .orderList_listItem_header {
  624. height: 86rpx;
  625. @include border(bottom);
  626. @include flex(space-between, center);
  627. .orderList_listItem_header_title {
  628. color: #333;
  629. flex: 1;
  630. @include flex(flex-start, center);
  631. .associationType_icon {
  632. width: 48rpx;
  633. height: 48rpx;
  634. border-radius: 50%;
  635. background-color: #F0F6ED;
  636. font-size: 24rpx;
  637. color: #39b199;
  638. margin-right: 8rpx;
  639. @include border($color:#39b199);
  640. @include flex(center, center);
  641. }
  642. .taskNameAndWorkerName {
  643. flex: 1;
  644. @include flex;
  645. .taskName {
  646. max-width: 10em;
  647. @include clamp;
  648. }
  649. .workerName {
  650. flex: 1;
  651. @include clamp;
  652. }
  653. }
  654. }
  655. .orderList_listItem_header_more {
  656. color: #666;
  657. }
  658. }
  659. .orderList_listItem_item {
  660. height: 88rpx;
  661. color: #333;
  662. font-size: 30rpx;
  663. flex: 1;
  664. @include border(bottom);
  665. @include flex(flex-start, stretch, column);
  666. &:last-of-type {
  667. border-bottom: none;
  668. }
  669. .orderList_listItem_item_content {
  670. min-height: 143rpx;
  671. flex: 1;
  672. @include flex(space-between, center);
  673. .orderList_listItem_item_name {
  674. font-size: 38rpx;
  675. font-weight: bold;
  676. }
  677. .orderList_listItem_item_time {
  678. color: #666;
  679. font-size: 28rpx;
  680. }
  681. }
  682. .orderList_listItem_item_btns {
  683. position: relative;
  684. left: -24rpx;
  685. width: 698rpx;
  686. height: 88rpx;
  687. @include btn_background;
  688. @include flex;
  689. .btn {
  690. flex: 1;
  691. background-color: transparent;
  692. position: relative;
  693. @include flex(center, center);
  694. &::before {
  695. content: '';
  696. position: absolute;
  697. right: 0;
  698. top: 0;
  699. width: 1px;
  700. height: 100%;
  701. @include border(right, #fff);
  702. }
  703. &:last-of-type::before {
  704. border-right: none;
  705. }
  706. &::after {
  707. border: none;
  708. }
  709. }
  710. }
  711. }
  712. }
  713. }
  714. }
  715. </style>