Commit 009129b4ac6556ce17d0e708b298a32e44deb079

Authored by lxf
1 parent 12743240

fix: 异常申诉

@@ -152,6 +152,9 @@ module.exports = (vm) => { @@ -152,6 +152,9 @@ module.exports = (vm) => {
152 buildMaQrcode:params => vm.$u.http.get( freightAdmin + '/woss/freightOrder/buildMaQrcode', {params}), 152 buildMaQrcode:params => vm.$u.http.get( freightAdmin + '/woss/freightOrder/buildMaQrcode', {params}),
153 supplementTrailerVehicle: params => vm.$u.http.get( freightAPI + '/freightOrder/supplementTrailerVehicle', params), // 绑定车挂 153 supplementTrailerVehicle: params => vm.$u.http.get( freightAPI + '/freightOrder/supplementTrailerVehicle', params), // 绑定车挂
154 getLatestRemark: params => vm.$u.http.get( freightAPI + '/freightOrder/getLatestRemark', params), // 使用的历史备注 154 getLatestRemark: params => vm.$u.http.get( freightAPI + '/freightOrder/getLatestRemark', params), // 使用的历史备注
  155 + getFreightRisk: params => vm.$u.http.get( freightAPI + '/freightRiskException/page', {params}), // 风控异常
  156 + riskAppeal: params => vm.$u.http.post( freightAPI + '/freightRiskException/complaint', params), // 风控异常-申诉
  157 + maModifyRemark: params => vm.$u.http.post( freightAPI + '/freightOrder/maModifyRemark', params), // 修改备注
155 }, 158 },
156 freightMaRecord: { 159 freightMaRecord: {
157 add: params => vm.$u.http.post( freightAPI + '/freightMaRecord/add', params,{custom: {toast:true}}), // 出发到达记录日志 160 add: params => vm.$u.http.post( freightAPI + '/freightMaRecord/add', params,{custom: {toast:true}}), // 出发到达记录日志
@@ -73,6 +73,18 @@ @@ -73,6 +73,18 @@
73 } 73 }
74 }, 74 },
75 { 75 {
  76 + "path": "pages/order/risk-abnormal",
  77 + "style": {
  78 + "navigationBarTitleText": "风控异常"
  79 + }
  80 + },
  81 + {
  82 + "path": "pages/order/risk-appeal",
  83 + "style": {
  84 + "navigationBarTitleText": "异常申诉"
  85 + }
  86 + },
  87 + {
76 "path": "pages/order/select-remark", 88 "path": "pages/order/select-remark",
77 "style": { 89 "style": {
78 "navigationBarTitleText": "填写备注" 90 "navigationBarTitleText": "填写备注"
pages/global/search-driver.vue
@@ -28,6 +28,9 @@ @@ -28,6 +28,9 @@
28 </List> 28 </List>
29 </template> 29 </template>
30 <template #footer> 30 <template #footer>
  31 + <view style="display: flex; justify-content: center; padding-bottom: 20upx">
  32 + <u-checkbox-group shape="circle" v-model="checkbox"><u-checkbox label="带入司机最近使用[车牌号]" name="have"></u-checkbox></u-checkbox-group>
  33 + </view>
31 <u-button type="primary" @click="onSelect">确定</u-button> 34 <u-button type="primary" @click="onSelect">确定</u-button>
32 </template> 35 </template>
33 </Page> 36 </Page>
@@ -37,22 +40,31 @@ @@ -37,22 +40,31 @@
37 import payee from '../../components/card/payee.vue'; 40 import payee from '../../components/card/payee.vue';
38 import UText from '../../uni_modules/uview-ui/components/u-text/u-text.vue'; 41 import UText from '../../uni_modules/uview-ui/components/u-text/u-text.vue';
39 export default { 42 export default {
40 - name: 'change-payee', 43 + name: 'change-driver',
41 components: { UText, payee }, 44 components: { UText, payee },
42 data() { 45 data() {
43 return { 46 return {
  47 + checkbox: [],
44 choseIndex: '', 48 choseIndex: '',
45 list: [], 49 list: [],
46 query: '', 50 query: '',
47 }; 51 };
48 }, 52 },
  53 + onLoad() {
  54 + let useFlagCache = uni.getStorageSync('FREIGHT_MP_SELECT_DRIVER_USE_FLAG');
  55 + if (useFlagCache) {
  56 + this.checkbox = ['have'];
  57 + }
  58 + },
49 methods: { 59 methods: {
50 searchAPI(params) { 60 searchAPI(params) {
51 return uni.$u.api.filter.freightDriverCommonSelect({ query: this.query, ...params }); 61 return uni.$u.api.filter.freightDriverCommonSelect({ query: this.query, ...params });
52 }, 62 },
53 onSelect() { 63 onSelect() {
  64 + let useFlagCache = this.checkbox.includes('have');
  65 + uni.setStorageSync('FREIGHT_MP_SELECT_DRIVER_USE_FLAG', useFlagCache);
54 let item = this.list[this.choseIndex]; 66 let item = this.list[this.choseIndex];
55 - uni.$emit('select-driver', item); 67 + uni.$emit('select-driver', { ...item, useVehicle: this.checkbox.length > 0 });
56 uni.navigateBack(); 68 uni.navigateBack();
57 }, 69 },
58 }, 70 },
pages/order/add.vue
@@ -364,7 +364,6 @@ export default { @@ -364,7 +364,6 @@ export default {
364 }, 364 },
365 selectRemark() { 365 selectRemark() {
366 uni.$once('select-remark', remark => { 366 uni.$once('select-remark', remark => {
367 - console.info(remark);  
368 this.form.remark = remark || ''; 367 this.form.remark = remark || '';
369 }); 368 });
370 uni.navigateTo({ 369 uni.navigateTo({
@@ -376,9 +375,15 @@ export default { @@ -376,9 +375,15 @@ export default {
376 this.form.driverName = driver.name; 375 this.form.driverName = driver.name;
377 this.form.driverMobile = driver.mobile; 376 this.form.driverMobile = driver.mobile;
378 this.form.mobile = driver.mobile; 377 this.form.mobile = driver.mobile;
  378 +
379 if (driver.mobile) { 379 if (driver.mobile) {
380 this.mobileChange(); 380 this.mobileChange();
381 } 381 }
  382 + if (driver.useVehicle && driver.latestVehicleNo) {
  383 + this.form.licenseNumber = driver.latestVehicleNo;
  384 + this.typeCar = 'licenseNumber';
  385 + this.vehicleChange(driver.latestVehicleNo);
  386 + }
382 }); 387 });
383 uni.navigateTo({ 388 uni.navigateTo({
384 url: `/pages/global/search-driver`, 389 url: `/pages/global/search-driver`,
pages/order/card.vue
@@ -11,7 +11,10 @@ @@ -11,7 +11,10 @@
11 <render-dict v-if="item.status" class="status" :style="{ color: colorMap[item.status] }" dict="FREIGHT_ORDER_STATUS" :value="item.status"></render-dict> 11 <render-dict v-if="item.status" class="status" :style="{ color: colorMap[item.status] }" dict="FREIGHT_ORDER_STATUS" :value="item.status"></render-dict>
12 </view> 12 </view>
13 </view> 13 </view>
14 - <view class="card-order__item"> {{ item.projectName }} | {{ item.loadTime }}装货 </view> 14 + <view class="card-order__item-title">
  15 + <view> {{ item.projectName }} | {{ item.loadTime }}装货 </view>
  16 + <view v-if="item.waitHandleExceptionNumber" class="exception">{{ item.waitHandleExceptionNumber }}个异常待处理</view>
  17 + </view>
15 <view class="card-order__steps"> 18 <view class="card-order__steps">
16 <view class="step"> 19 <view class="step">
17 <view class="step-item"> 20 <view class="step-item">
@@ -52,6 +55,9 @@ @@ -52,6 +55,9 @@
52 <view class="amount"> 55 <view class="amount">
53 运费<text class="red">¥{{ item.freightAmount }}</text> 56 运费<text class="red">¥{{ item.freightAmount }}</text>
54 </view> 57 </view>
  58 + <view class="status" :style="{ color: payStatusColorMap[item.payStatus], background: bgPayStatusColorMap[item.payStatus] }">
  59 + <render-dict dict="ONLINE_FREIGHT_ORDER_PAY_PROCESS" :value="item.payStatus"></render-dict>
  60 + </view>
55 <view class="action"> 61 <view class="action">
56 <zb-tooltip placement="bottom" :visible="visible" @update:visible="e => (visible = e)"> 62 <zb-tooltip placement="bottom" :visible="visible" @update:visible="e => (visible = e)">
57 <template #content> 63 <template #content>
@@ -105,6 +111,16 @@ export default { @@ -105,6 +111,16 @@ export default {
105 COMPLETED: '#00B87A', 111 COMPLETED: '#00B87A',
106 CANCEL: '#999999', 112 CANCEL: '#999999',
107 }, 113 },
  114 + payStatusColorMap: {
  115 + PAY_PART_SUCCESS: '#2673FB',
  116 + PAY_SUCCESS: '#00B87A',
  117 + NOT_PAY: '#999999',
  118 + },
  119 + bgPayStatusColorMap: {
  120 + PAY_PART_SUCCESS: 'rgba(38, 115, 251, 0.1)',
  121 + PAY_SUCCESS: 'rgba(0, 184, 122, 0.1)',
  122 + NOT_PAY: 'rgba(153, 153, 153, 0.1)',
  123 + },
108 }; 124 };
109 }, 125 },
110 methods: { 126 methods: {
@@ -185,6 +201,18 @@ export default { @@ -185,6 +201,18 @@ export default {
185 color: $color-red; 201 color: $color-red;
186 } 202 }
187 } 203 }
  204 + &__item-title {
  205 + margin-top: $padding-xs;
  206 + display: flex;
  207 + font-size: 26upx;
  208 + color: #999999;
  209 + align-items: baseline;
  210 + justify-content: space-between;
  211 + .exception {
  212 + font-size: 24upx;
  213 + color: #ffcc00;
  214 + }
  215 + }
188 &__item { 216 &__item {
189 margin-top: $padding-xs; 217 margin-top: $padding-xs;
190 display: flex; 218 display: flex;
@@ -280,6 +308,12 @@ export default { @@ -280,6 +308,12 @@ export default {
280 color: #ff4f3b; 308 color: #ff4f3b;
281 } 309 }
282 } 310 }
  311 + .status {
  312 + font-size: 24upx;
  313 + padding: 0 $padding-base;
  314 + border-radius: $radius-md;
  315 + margin-left: $padding-base;
  316 + }
283 .action { 317 .action {
284 flex: 1; 318 flex: 1;
285 display: flex; 319 display: flex;
@@ -304,7 +338,7 @@ export default { @@ -304,7 +338,7 @@ export default {
304 display: flex; 338 display: flex;
305 align-items: center; 339 align-items: center;
306 justify-content: center; 340 justify-content: center;
307 - margin-left: $padding-sm; 341 + margin-left: $padding-base;
308 .sx-img { 342 .sx-img {
309 height: 12upx; 343 height: 12upx;
310 width: 14upx; 344 width: 14upx;
pages/order/detail.vue
@@ -86,7 +86,12 @@ @@ -86,7 +86,12 @@
86 </view> 86 </view>
87 <view class="card__item"> 87 <view class="card__item">
88 <view class="card__item_field">订单备注</view> 88 <view class="card__item_field">订单备注</view>
89 - <view class="card__item_content">{{ item.remark ? item.remark : '' }}</view> 89 + <view class="card__item_content">
  90 + <view class="text"> {{ item.remark ? item.remark : '' }} </view>
  91 + <view v-if="$permission('/freightOrder/modifyGoods')" class="action" @tap="modifyRemark">
  92 + <u--text text="修改" suffixIcon="arrow-right"></u--text>
  93 + </view>
  94 + </view>
90 </view> 95 </view>
91 <view class="card__item"> 96 <view class="card__item">
92 <view class="card__item_field">回单照片</view> 97 <view class="card__item_field">回单照片</view>
@@ -180,6 +185,16 @@ @@ -180,6 +185,16 @@
180 </view> 185 </view>
181 </view> 186 </view>
182 </view> 187 </view>
  188 + <view v-if="item.waitHandleExceptionNumber" class="card">
  189 + <view class="card__header" style="margin-bottom: 0; padding-bottom: 0; border-bottom: none">
  190 + <view class="label"> 风控异常 </view>
  191 + <view class="action" @tap="toRisk">
  192 + <view class="color-red">
  193 + <u--text :text="item.waitHandleExceptionNumber + '个待处理异常'" suffixIcon="arrow-right"></u--text>
  194 + </view>
  195 + </view>
  196 + </view>
  197 + </view>
183 <view class="card"> 198 <view class="card">
184 <view class="card__header"> 199 <view class="card__header">
185 <view class="label"> 订单费用 </view> 200 <view class="label"> 订单费用 </view>
@@ -418,6 +433,11 @@ export default { @@ -418,6 +433,11 @@ export default {
418 url: '/pages/global/search-payee', 433 url: '/pages/global/search-payee',
419 }); 434 });
420 }, 435 },
  436 + toRisk() {
  437 + uni.navigateTo({
  438 + url: '/pages/order/risk-abnormal?code=' + this.item.code,
  439 + });
  440 + },
421 modifyCustomerFun() { 441 modifyCustomerFun() {
422 uni.$u.api.freightOrder.modifyCustomerOrderCode({ customerOrderCode: this.customerOrderCode, code: this.item.code }).then(res => { 442 uni.$u.api.freightOrder.modifyCustomerOrderCode({ customerOrderCode: this.customerOrderCode, code: this.item.code }).then(res => {
423 if (res.success) { 443 if (res.success) {
@@ -426,6 +446,24 @@ export default { @@ -426,6 +446,24 @@ export default {
426 } 446 }
427 }); 447 });
428 }, 448 },
  449 + modifyRemark() {
  450 + uni.$once('select-remark', remark => {
  451 + this.modifyRemarkHttp(remark);
  452 + });
  453 + uni.navigateTo({
  454 + url: `/pages/order/select-remark?remark=${this.item.remark}`,
  455 + });
  456 + },
  457 + modifyRemarkHttp(remark) {
  458 + uni.$u.api.freightOrder
  459 + .maModifyRemark({
  460 + code: this.item.code,
  461 + remark: remark,
  462 + })
  463 + .then(r => {
  464 + this.item.remark = remark || '';
  465 + });
  466 + },
429 }, 467 },
430 }; 468 };
431 </script> 469 </script>
@@ -545,6 +583,7 @@ export default { @@ -545,6 +583,7 @@ export default {
545 font-style: normal; 583 font-style: normal;
546 display: flex; 584 display: flex;
547 justify-content: space-between; 585 justify-content: space-between;
  586 + overflow-wrap: anywhere;
548 &_text { 587 &_text {
549 font-weight: 400; 588 font-weight: 400;
550 font-size: 28upx; 589 font-size: 28upx;
pages/order/risk-abnormal.vue 0 → 100644
@@ -0,0 +1,160 @@ @@ -0,0 +1,160 @@
  1 +<template>
  2 + <Page name="risk-abnormal" flank>
  3 + <template #content>
  4 + <List ref="list" v-model="list" :api="searchAPI">
  5 + <template v-for="(item, index) in list">
  6 + <view class="risk-card" :key="index">
  7 + <view class="risk-card__heard">
  8 + <view>异常编号:{{ item.orderCode }}</view>
  9 + <view :style="{ color: statusColorMap[item.status] }"><render-dict dict="ONLINE_FREIGHT_RISK_EXCEPTION_STATUS" :value="item.status"></render-dict></view>
  10 + </view>
  11 + <view class="risk-card__body">
  12 + <view class="item">
  13 + <view class="item_field">异常类型</view>
  14 + <view class="item_content"><render-dict dict="ONLINE_FREIGHT_RISK_EXCEPTION_TYPE" :value="item.exceptionType"></render-dict></view>
  15 + </view>
  16 + <view class="item">
  17 + <view class="item_field">异常描述</view>
  18 + <view class="item_content">{{ item.exceptionDesc }}</view>
  19 + </view>
  20 + <view class="item">
  21 + <view class="item_field">异常时间</view>
  22 + <view class="item_content" style="color: #999">{{ item.riskTime }}</view>
  23 + </view>
  24 + <template v-if="!['WAIT_HANDLE'].includes(item.status)">
  25 + <view class="item item-top-border">
  26 + <view class="item_field">申诉说明</view>
  27 + <view class="item_content">{{ item.complaintDesc }}</view>
  28 + </view>
  29 + <view class="item">
  30 + <view class="item_field">申诉时间</view>
  31 + <view class="item_content" style="color: #999">{{ item.complaintTime }}</view>
  32 + </view>
  33 + <view class="item">
  34 + <view class="item_field">申诉举证</view>
  35 + <view class="item_content">
  36 + <text class="color-primary" @click="previewImage(item.complaintAttachment)">查看图片</text>
  37 + </view>
  38 + </view>
  39 + </template>
  40 + <view v-if="['FAIL'].includes(item.status)" class="err-item">
  41 + <view class="item">
  42 + <view class="item_field">审核说明</view>
  43 + <view class="item_content">{{ item.auditDesc }}</view>
  44 + </view>
  45 + <view class="item">
  46 + <view class="item_field">审核时间</view>
  47 + <view class="item_content">{{ item.auditTime }}</view>
  48 + </view>
  49 + </view>
  50 + </view>
  51 + <view v-if="['WAIT_HANDLE', 'FAIL'].includes(item.status)" class="risk-card__foot">
  52 + <u-button @click="toRisk(item.id)" type="primary">去申诉</u-button>
  53 + </view>
  54 + </view>
  55 + </template>
  56 + </List>
  57 + </template>
  58 + </Page>
  59 +</template>
  60 +
  61 +<script>
  62 +export default {
  63 + name: 'risk-abnormal',
  64 + data() {
  65 + return {
  66 + statusColorMap: {
  67 + WAIT_HANDLE: '#ed6a0c',
  68 + HANDLING: '#1989fa',
  69 + SUCCESS: '#07c160',
  70 + FAIL: '#FDD108',
  71 + },
  72 + code: '',
  73 + list: [],
  74 + };
  75 + },
  76 + onLoad(options) {
  77 + this.code = options.code;
  78 + },
  79 + methods: {
  80 + // 预览图片
  81 + previewImage(value) {
  82 + uni.previewImage({ urls: value.replace(/^(\s|\,)+|(\s|\,)+$/g, '').split(',') });
  83 + },
  84 + searchAPI(params) {
  85 + return uni.$u.api.freightOrder.getFreightRisk({ orderCodes: this.code, ...params });
  86 + },
  87 + toRisk(id) {
  88 + uni.navigateTo({
  89 + url: '/pages/order/risk-appeal?id=' + id,
  90 + events: {
  91 + refreshData: () => {
  92 + this.onSearch();
  93 + },
  94 + },
  95 + });
  96 + },
  97 + },
  98 +};
  99 +</script>
  100 +
  101 +<style lang="scss">
  102 +.page-risk-abnormal {
  103 + &__content {
  104 + .risk-card {
  105 + background: $color-white;
  106 + border-radius: $radius-md;
  107 + box-shadow: $shadow-normal;
  108 + font-size: $font-md;
  109 + margin-bottom: $padding-md;
  110 + &__heard {
  111 + display: flex;
  112 + align-items: center;
  113 + justify-content: space-between;
  114 + border-bottom: 1px solid $color-border;
  115 + padding: $padding-sm;
  116 + }
  117 + &__body {
  118 + padding: 0 $padding-sm 1upx;
  119 + .item {
  120 + display: flex;
  121 + font-size: 26upx;
  122 + color: #999999;
  123 + align-content: baseline;
  124 + margin: $padding-sm 0;
  125 + &_field {
  126 + font-weight: 400;
  127 + font-size: 28upx;
  128 + color: #999999;
  129 + width: 170upx;
  130 + text-align: left;
  131 + }
  132 + &_content {
  133 + flex: 1;
  134 + font-weight: 400;
  135 + font-size: 28upx;
  136 + color: #2b2a27;
  137 + text-align: left;
  138 + font-style: normal;
  139 + display: flex;
  140 + justify-content: space-between;
  141 + overflow-wrap: anywhere;
  142 + }
  143 + }
  144 + .err-item {
  145 + background: $color-border;
  146 + padding: 1upx $padding-sm;
  147 + margin-bottom: $padding-sm;
  148 + }
  149 + .item-top-border {
  150 + border-top: 1px dashed $color-border;
  151 + padding-top: $padding-sm;
  152 + }
  153 + }
  154 + &__foot {
  155 + padding: 0 $padding-sm $padding-sm;
  156 + }
  157 + }
  158 + }
  159 +}
  160 +</style>
pages/order/risk-appeal.vue 0 → 100644
@@ -0,0 +1,90 @@ @@ -0,0 +1,90 @@
  1 +<template>
  2 + <Page name="risk-appeal">
  3 + <template #content>
  4 + <u-form :model="form" ref="uForm" labelWidth="100">
  5 + <view class="card">
  6 + <u-form-item label="申诉说明" required> </u-form-item>
  7 + <u-textarea v-model="form.desc" border="none" placeholder="申诉说明" />
  8 + </view>
  9 + <view class="card">
  10 + <u-form-item label="申诉举证" required> </u-form-item>
  11 + <z-upload v-model="form.attachment" :limit="20"></z-upload>
  12 + </view>
  13 + </u-form>
  14 + </template>
  15 + <template #footer>
  16 + <u-button type="primary" @tap="submit" :loading="loading">申诉</u-button>
  17 + </template>
  18 + </Page>
  19 +</template>
  20 +
  21 +<script>
  22 +import ZUpload from '../../components/zee/z-upload.vue';
  23 +import dayjs from 'dayjs';
  24 +
  25 +export default {
  26 + name: 'risk-appeal',
  27 + components: { ZUpload },
  28 + data() {
  29 + return {
  30 + loading: false,
  31 + form: {
  32 + desc: '',
  33 + attachment: '',
  34 + },
  35 + id: '',
  36 + };
  37 + },
  38 + onLoad(options) {
  39 + this.id = options.id;
  40 + },
  41 + methods: {
  42 + submit() {
  43 + if (!this.form.desc) {
  44 + uni.showToast({ title: '备注不能为空', icon: 'none' });
  45 + return;
  46 + }
  47 + if (!this.form.attachment) {
  48 + uni.showToast({ title: '申诉举证附件不能为空', icon: 'none' });
  49 + return;
  50 + }
  51 + if (this.loading) return;
  52 + this.loading = true;
  53 + uni.$u.api.freightOrder
  54 + .riskAppeal({ ...this.form, idList: [this.id] })
  55 + .then(res => {
  56 + if (res.success) {
  57 + this.getOpenerEventChannel().emit('refreshData');
  58 + setTimeout(() => uni.navigateBack(), 500);
  59 + }
  60 + })
  61 + .catch(e => {
  62 + this.loading = false;
  63 + });
  64 + },
  65 + },
  66 +};
  67 +</script>
  68 +
  69 +<style lang="scss">
  70 +.page-risk-appeal {
  71 + &__content {
  72 + padding-top: 0 !important;
  73 + }
  74 + &__footer {
  75 + background: $color-white;
  76 + }
  77 + .card {
  78 + color: #999999;
  79 + margin: $padding-md;
  80 + padding: $padding-md;
  81 + background-color: $color-white;
  82 + border-radius: $radius-md;
  83 + box-shadow: $shadow-normal;
  84 + //.u-form-item {
  85 + // padding-left: $padding-md !important;
  86 + // padding-right: $padding-sm !important;
  87 + //}
  88 + }
  89 +}
  90 +</style>
pages/order/select-remark.vue
@@ -5,8 +5,8 @@ @@ -5,8 +5,8 @@
5 <view class="his-title">历史备注</view> 5 <view class="his-title">历史备注</view>
6 <view class="his-card"> 6 <view class="his-card">
7 <view @click="clickItem(item)" class="his-item" v-for="(item, index) in hisList" :key="index"> 7 <view @click="clickItem(item)" class="his-item" v-for="(item, index) in hisList" :key="index">
8 - <text>{{ item }}</text>  
9 - </view> 8 + <text>{{ item }}</text>
  9 + </view>
10 </view> 10 </view>
11 </template> 11 </template>
12 <template #footer> 12 <template #footer>
@@ -23,7 +23,8 @@ export default { @@ -23,7 +23,8 @@ export default {
23 hisList: [], 23 hisList: [],
24 }; 24 };
25 }, 25 },
26 - onLoad() { 26 + onLoad(option) {
  27 + this.remark = option.remark || '';
27 this.getHis(); 28 this.getHis();
28 }, 29 },
29 methods: { 30 methods: {
@@ -57,9 +58,9 @@ export default { @@ -57,9 +58,9 @@ export default {
57 padding: $padding-xs 0; 58 padding: $padding-xs 0;
58 color: $color-text-minor; 59 color: $color-text-minor;
59 border-bottom: 1px solid $color-border; 60 border-bottom: 1px solid $color-border;
60 - text {  
61 - overflow-wrap: anywhere;  
62 - } 61 + text {
  62 + overflow-wrap: anywhere;
  63 + }
63 } 64 }
64 .his-item:last-child { 65 .his-item:last-child {
65 border-bottom: none; 66 border-bottom: none;