fix: bug修复

This commit is contained in:
Mrxtyyp 2024-03-04 10:03:26 +08:00
parent 6c439362b6
commit c6fdaa2d54
11 changed files with 216 additions and 24 deletions

View File

@ -3910,3 +3910,14 @@ scroll-view.cu-steps .cu-item {
.lines-white {
color: #ffffff;
}
.custom-radio .checklist-text {
font-size: 15px!important;
font-weight: 500!important;
}
.uni-date__x-input {
height: 64rpx!important;
line-height: 64rpx!important;
}

View File

@ -1,7 +1,8 @@
import globalData from '@/common/js/globalData.js';
export default {
address: 'https://www.opsoul.com:8881',
// address: 'https://www.opsoul.com:8881',https://gmhl.opsoul.com
address: 'https://gmhl.opsoul.com',
// 异步接口拦截
addInterceptor() {
uni.addInterceptor('request', {
@ -11,7 +12,7 @@ export default {
title: '加载中'
})
// request 触发前拼接 url
args.url = 'https://www.opsoul.com:8881' + args.url;
args.url = 'https://gmhl.opsoul.com' + args.url;
// args.url = 'http://192.168.2.54:80' + args.url;
// args.url = 'http://127.0.0.1:80' + args.url;
if (args.data && Object.prototype && Object.prototype.toString.call(args.data) === '[object Object]') {
@ -707,5 +708,14 @@ export default {
data: params
})
return res[1].data;
},
// 添加急报记录
async addWarnRecord(params = {}) {
let res = await uni.request({
url: '/warn/record/app/add',
method: 'POST',
data: params
})
return res[1].data;
}
}

View File

@ -5,7 +5,7 @@
<view v-if="columnTitleArr.length" class="flex justify-between margin-tb-sm">
<view class="basis-df">{{columnTitleArr[0]}}</view>
<view class="flex justify-end text-center basis-sm">
<view v-for="(title, index) in columnTitleArr" v-if="index >= 1" class="basis-df">{{title}}</view>
<view v-for="(title, index) in columnTitleArr" :key="index" v-if="index >= 1" class="basis-df">{{title}}</view>
</view>
</view>
<view class="certern-height-with-scroll">
@ -17,7 +17,7 @@
</uni-number-box>
</view>
<view v-else-if="item.valColArr && item.valColArr.length > 0" class="flex justify-end basis-sm text-center">
<uni-number-box class="basis-df" v-for="(valCol, index0) in item.valColArr" v-if="valCol.numberBox"
<uni-number-box class="basis-df" v-for="(valCol, index0) in item.valColArr" :key="index0" v-if="valCol.numberBox"
:min="0" :max="valCol.max" :value="valCol.value" @change="changePiecesNum($event, item)">
</uni-number-box>
<view class="basis-df" v-else>{{valCol.value}}</view>
@ -46,11 +46,11 @@
},
pickedList: {
type: Array,
default: []
default: () => []
},
columnTitleArr: {
type: Array,
default: []
default: () => []
},
showToServNum: {
type: Boolean,

View File

@ -0,0 +1,122 @@
<template>
<!-- 报价/客户支付模态框 -->
<view class="cu-modal" :class="show?'show':''">
<view class="cu-dialog">
<view class="cu-bar bg-white justify-end solid-bottom">
<view class="content">催单/发起约单</view>
<view class="action" data-modal="sendUrgentMsgModal" @click="hideModal">
<text class="cuIcon-close text-red"></text>
</view>
</view>
<view class="padding padding-lr-xl bg-white text-left">
<view class="custom-radio" style="margin-bottom: 20rpx;">
<uni-data-checkbox v-model="radio1" selectedColor="#0081ff" :localdata="sex"></uni-data-checkbox>
</view>
<template v-if="radio1 === 2">
<view style="font-size: 32rpx;padding: 20upx 0;border-bottom: 1rpx solid rgba(0, 0, 0, 0.1);">
<text>我想约的时间是</text>
</view>
<view style="display: flex;flex-direction: row;padding-top: 20upx;">
<uni-datetime-picker type="date" :clear-icon="false" v-model="dateStr"/>
<picker class="margin-left-xs" mode="selector" :value="timeRangeIndex" :range="timeRangeList"
@change="timeRangeChange">
<input class="radius-input time-picker" v-model="timeRange" disabled></input>
</picker>
</view>
</template>
<view class="margin-top-sm">
<textarea style="width: 100%;" class="solid radius text-left padding-sm" v-model="detailDesc" maxlength="-1"
placeholder="具体情况(选填)"></textarea>
</view>
</view>
<view class="cu-bar solid-top">
<view class="action margin-0 flex-sub text-black" data-modal="sendUrgeOrderModal" @tap="hideModal">取消</view>
<view class="action margin-0 flex-sub text-main-color solid-left" data-modal="sendUrgeOrderModal" @click="apply">确认</view>
</view>
</view>
</view>
</template>
<script>
export default {
nama: 'urge-order',
emits: ['hideModal', 'confirm'],
props: {
show: {
type: Boolean,
default: false
},
data: {
type: Object,
default: () => {}
}
},
data() {
return {
radio1: 0,
dateStr: '',
detailDesc: '',
sex: [{
text: '【催单】师傅已约单,催促快上门!',
value: 0
}, {
text: '【催单】师傅未约单,催促快预约!',
value: 1
}, {
text: '【约单】分次上门单,本次请约我!',
value: 2
}],
timeRangeIndex: 0,
timeRange: '',
timeRangeList: []
}
},
watch: {
show() {
this.resetData()
if(this.show) {
this.timeRangeList = this.$globalData.timeRangeList;
this.timeRange = this.timeRangeList[0];
}
}
},
methods: {
hideModal(e) {
this.$emit('hideModal', e);
this.resetData()
},
resetData() {
this.radio1 = 0
this.dateStr = ''
this.detailDesc = ''
this.timeRangeIndex = 0
this.timeRange = this.timeRangeList[0]
},
timeRangeChange(e) {
this.timeRangeIndex = e.detail.value;
this.timeRange = this.timeRangeList[this.timeRangeIndex];
},
async apply(e) {
if(this.radio1 == 2) {
if(!this.dateStr) {
uni.showToast({
title: '请选择预约日期',
icon: 'none'
})
return false;
}
}
this.$emit('confirm', {
type: this.radio1,
content: this.radio1 == 2 ? `约单: 时间${this.dateStr} ${this.timeRange}` : '催单',
remark: this.detailDesc
});
}
}
}
</script>
<style>
</style>

View File

@ -21,7 +21,7 @@
<view class="title">地址选择</view>
<picker :mode="'multiSelector'" @change="regionChange" @columnchange="regionColChange" :value="multiIndex" :range-key="'areaName'" :range="areaList">
<view class="picker">
{{formData.area && formData.area.length ? formData.area[0].areaName + '-' + formData.area[1].areaName + '-' + formData.area[2].areaName : '请选择'}}
{{formData.area && formData.area.length ? formData.area[0].areaName + '-' + formData.area[1].areaName + '-' + formData.area[2].areaName + '-' + formData.area[3].areaName : '请选择'}}
</view>
</picker>
</view>
@ -83,9 +83,13 @@
let col2Code = idArr ? idArr[1] : subAreaList[0].areaCode;
let subSubAreaList = await this.$request.areaListByStep({ parentCode: col2Code });
subSubAreaList = subSubAreaList.data;
let col3Code = idArr ? idArr[2] : subSubAreaList[0].areaCode;
let subSub2AreaList = await this.$request.areaListByStep({ parentCode: col3Code });
subSub2AreaList = subSub2AreaList.data;
this.areaList.push(areaList);
this.areaList.push(subAreaList);
this.areaList.push(subSubAreaList);
this.areaList.push(subSub2AreaList);
},
regionChange(e) {
this.multiIndex = e.detail.value;
@ -97,30 +101,45 @@
this.formData.provinceId = chosenArea[0].areaId;
this.formData.cityId = chosenArea[1].areaId;
this.formData.countryId = chosenArea[2].areaId;
this.formData.streetId = chosenArea[3].areaId;
},
async regionColChange(e) {
let colObj = e.detail;
if (colObj.column == 0) {
let subSubAreaList = [];
let subSubAreaList = [], subSub2AreaList = [];
//
let subAreaList = await this.$request.areaListByStep({parentCode: this.areaList[0][colObj.value].areaCode});
subAreaList = subAreaList.data;
if (subAreaList && subAreaList.length) {
subSubAreaList = await this.$request.areaListByStep({parentCode: subAreaList[0].areaCode});
subSubAreaList = subSubAreaList.data;
if(subSubAreaList && subSubAreaList.length) {
subSub2AreaList = await this.$request.areaListByStep({parentCode: subSubAreaList[0].areaCode});
subSub2AreaList = subSub2AreaList.data;
}
}
this.areaList.pop();
this.areaList.pop();
this.areaList.push(subAreaList);
this.areaList.push(subSubAreaList);
this.multiIndex = [colObj.value, 0, 0];
this.areaList[1] = subAreaList
this.areaList[2] = subSubAreaList
this.areaList[3] = subSub2AreaList
this.multiIndex = [colObj.value, 0, 0, 0];
} else if (colObj.column == 1) {
let subSub2AreaList = []
//
let subSubAreaList = await this.$request.areaListByStep({parentCode: this.areaList[1][colObj.value].areaCode});
subSubAreaList = subSubAreaList.data;
this.areaList.pop();
this.areaList.push(subSubAreaList);
this.multiIndex = [this.multiIndex[0], colObj.value, 0];
if (subSubAreaList && subSubAreaList.length) {
subSub2AreaList = await this.$request.areaListByStep({parentCode: subSubAreaList[0].areaCode});
subSub2AreaList = subSub2AreaList.data;
}
this.areaList[2] = subSubAreaList
this.areaList[3] = subSub2AreaList
this.multiIndex = [this.multiIndex[0], colObj.value, 0, 0];
} else if (colObj.column == 2) {
//
let subSubAreaList = await this.$request.areaListByStep({parentCode: this.areaList[2][colObj.value].areaCode});
subSubAreaList = subSubAreaList.data;
this.areaList[3] = subSubAreaList;
this.multiIndex = [this.multiIndex[0], this.multiIndex[1], colObj.value, 0];
}
},
isDefaultChange(e) {

View File

@ -7,13 +7,14 @@
</cu-custom>
<!-- 地址列表 -->
<view class="margin-bottom-with-bar">
<view class="padding margin-lr-sm margin-top-sm bg-white flex justify-between align-center" v-for="(item, index) in myAddressList">
<view class="padding margin-lr-sm margin-top-sm bg-white flex justify-between align-center" v-for="(item, index) in myAddressList" :key="index">
<view @click="chooseAddress(item)">
<view class="flex justify-start align-center">
<view class='cu-tag bg-yellow margin-right-sm' v-if="item.isDefault">默认</view>
<view class="text-gray margin-right-xs">{{item.provinceName}}</view>
<view class="text-gray margin-right-xs">{{item.cityName}}</view>
<view class="text-gray margin-right-xs">{{item.countryName}}</view>
<view class="text-gray margin-right-xs">{{item.streetName || ''}}</view>
</view>
<view class="text-lg margin-tb-sm">{{item.address}}</view>
<view class="text-gray">

View File

@ -8,7 +8,7 @@
<!-- 选购的商品列表 -->
<view class="margin-lr-sm margin-top-sm margin-bottom-with-bar">
<checkbox-group class="block" @change="checked2Buy($event)">
<view class="margin-top-sm bg-white" v-for="(item, index0) in pickedProductList">
<view class="margin-top-sm bg-white" v-for="(item, index0) in pickedProductList" :key="item.id">
<view class="cu-bar solid-bottom">
<view class="action bar-first-action">
<checkbox class='round margin-right main-color' :value="index0" :checked="allChecked">
@ -21,7 +21,8 @@
</view>
</view>
<view class="margin-top-sm padding-lr">
<product-picked v-for="(product, index1) in item.product" :product="product"
<product-picked v-for="(product, index1) in item.product" :product="product"
:key="index1"
:pickedList="product.pickedList" :numberBox="true">
</product-picked>
</view>

View File

@ -16,7 +16,7 @@
</view>
</view>
<uni-collapse ref="collapse">
<uni-collapse-item ref="collapseItem" :showArrow="false" v-for="(billItem, index) in bill" :open="openStatusArr[index] === '0' ? true : false" >
<uni-collapse-item ref="collapseItem" :showArrow="false" v-for="(billItem, index) in bill" :key="index" :open="openStatusArr[index] === '0' ? true : false" >
<template v-slot:title>
<view class="padding bg-white" :data-index="index" @click="showStatement">
<view class="margin-bottom-xs">{{billItem.createTime}}</view>
@ -27,6 +27,7 @@
</template>
<view>
<view v-for="(item, index1) in billItem.statement"
:key="index1"
class="bg-white padding flex justify-between align-center solid-bottom" @click="showDetail(bill[index].statement[index1])">
<view>
<view class="flex">

View File

@ -351,12 +351,16 @@
<view v-if="servDetail.orderStatus >= 2 || servDetail.orderStatus < 5" class="padding solid-bottom" style="z-index: 99;"
@click="applyForRefund">
退单退款
</view>
<view v-if="[0,1,2,3].includes(servDetail.orderStatus) && servDetail.workerPhone" class="padding solid-bottom" style="z-index: 99;" @click="sendUrgeOrderModal = true">
催单约单
</view>
</view>
<view class="fixed-bottom-bar cu-bar bg-white" style="z-index: 98;"></view>
</uni-popup>
<!-- 模态框 -->
<urgent-msg :show="sendUrgentMsgModal" @hideModal="hideModal"></urgent-msg>
<urgent-msg :show="sendUrgentMsgModal" @hideModal="hideModal"></urgent-msg>
<urge-order :show="sendUrgeOrderModal" @hideModal="hideModal" @confirm="urgeOrderOpration"></urge-order>
<confirm-modal ref="confirmModal" :content="'是否确定取消订单?'" @confirm="cancelOrder"></confirm-modal>
<apply-after-service ref="applyAfterService" :data="servDetail"
@confirmFeedback="loadData(servDetail.orderMasterId)" @cancel="blurCurOrder"></apply-after-service>
@ -367,13 +371,15 @@
<script>
import simpleProductPicked from '@/components/goods-card/simple-product-picked.vue';
import urgentMsg from '@/pages/my/components/modal/urgent-msg.vue';
import urgeOrder from '@/pages/my/components/modal/urge_order.vue';
import applyAfterService from '@/pages/my/components/modal/apply-after-service.vue';
export default {
components: {
simpleProductPicked,
urgentMsg,
applyAfterService
applyAfterService,
urgeOrder
},
data() {
return {
@ -388,6 +394,7 @@
process: '',
ifShowPageMeta: false,
sendUrgentMsgModal: false,
sendUrgeOrderModal: false,
curDetailOrder: null
}
},
@ -472,6 +479,22 @@
icon: 'error'
})
}
},
async urgeOrderOpration(params) {
const res = await this.$request.addWarnRecord({
orderId: this.servDetail.orderMasterId,
orderType: '01',
...params
})
if (res.code != 0) return
uni.showToast({
title: params.type == 2 ? '约单成功' : '催单成功',
icon: 'success',
duration: 2000
})
this.sendUrgeOrderModal = false
this.togglePopup('orderManage');
},
async afterServiceFinalCheck(id, agreeStatus) {
let res = await this.$request.editAfterServiceRecord({
@ -595,5 +618,7 @@
background-color: inherit;
overflow: initial;
z-index: 99;
}
}
</style>

View File

@ -71,7 +71,8 @@
</view>
</view>
<view class="margin-top-sm padding-lr">
<product-picked :columnTitleArr="columnTitleArr" v-for="(product, index1) in item.product"
<product-picked :columnTitleArr="columnTitleArr" v-for="(product, index1) in item.product"
:key="product.id"
:product="product" :pickedList="product.pickedList">
</product-picked>
</view>

View File

@ -225,6 +225,7 @@
params.params[condition.code] = condition.value === 1 ? 'desc' : 'asc';
}
})
// params.areaId = null;
if (this.chosenArea[this.chosenArea.length - 1].isAll) {
params.areaId = null;
params.areaIds = this.chosenArea[this.chosenArea.length - 1].areaIds;