This commit is contained in:
xyc 2025-04-23 17:34:22 +08:00
parent d109d458d4
commit 36522646e8
5 changed files with 317 additions and 66 deletions

View File

@ -652,11 +652,9 @@
})
},
async getgoodes() {
if (this.carNum == '' || this.customerSource == "" || this.skuId == '' || this.leadManId ==
undefined || this.carRegisterDate == '' || this.meetManId == undefined || this.meetManId ==
undefined) {
if (this.carNum == '' || this.customerSource == "" || this.skuId == '' || this.carRegisterDate == '') {
uni.showToast({
title: '车牌号 客户来源 商品 引车员 车辆注册日期 接车人 必填!',
title: '车牌号 客户来源 商品 车辆注册日期 必填!',
icon: 'none'
})
return

View File

@ -29,6 +29,17 @@
<!-- 名称 -->
<view class="box-list">
<view class="list-box">
<view class="l-left">接车类型</view>
<view class="l-right">
<u-radio-group v-model="radiovalue1" iconPlacement="left" name="name" placement="row"
@change="groupChange">
<u-radio :customStyle="{marginBottom: '8px'}" v-for="(item, index) in radiolist1"
:key="index" :label="item.name" :name="item.label">
</u-radio>
</u-radio-group>
</view>
</view>
<view class="list-box">
<view class="l-left">客户姓名</view>
<view class="l-right">
@ -86,6 +97,18 @@
<input type="text" v-model="buyPhone" placeholder="请输入联系方式">
</view>
</view>
<view class="list-box" style="display: block;">
<view class="" style="margin-bottom: 20rpx;">备注</view>
<view class="">
<u--textarea v-model="content" placeholder="请输入联系方式"></u--textarea>
</view>
</view>
<view class="list-box" style="display: block;">
<view class="" style="">接车图片</view>
<u-upload :fileList="fileList1" @afterRead="afterRead" @delete="deletePic" name="1" multiple
:maxCount="10"></u-upload>
</view>
</view>
<view class="dlanniu" @click="getgoodes()">
<text>接车</text>
@ -107,7 +130,7 @@
<u-picker :show="showLeadMan" :columns="leadManList" :defaultIndex="defaultIndex"
@confirm="confirmLeadMan" @cancel="cancelLeadMan" keyName="nickname"></u-picker>
<u-picker :show="showMeetMan" :columns="meetManList" :defaultIndex="defaultIndex"
@confirm="confirmMeetMan" @cancel="showMeetMan = false" keyName="nickname"></u-picker>
@confirm="confirmMeetMan" @cancel="showMeetMan = false" keyName=" "></u-picker>
<u-datetime-picker :minDate="946656000000" :maxDate="new Date().getTime()" :show="showRegisterDate"
v-model="carRegisterDate" mode="date" @cancel="showRegisterDate = false"
@confirm="confirmRegisterDate"></u-datetime-picker>
@ -141,10 +164,12 @@
fileList: [],
title: '新增接车',
customerSource: '',
fileList1: [],
buyName: '',
nickname: '',
buyPhone: '',
userAddress: '',
content: '',
carNum: '',
baseImageUrl: this.$baseImageUrl,
carStatus: '',
@ -181,6 +206,16 @@
baseUrl: this.$baseImageUrl,
goodsId: '',
msg: '3',
radiolist1: [{
name: '接待',
label: 1
},
{
name: '上门取车',
label: 2
}
],
radiovalue1: 1,
tapnum: 0,
fenlist: [],
goodstext: '',
@ -227,6 +262,39 @@
})
}
},
async afterRead(event) {
// multiple true , file
let lists = [].concat(event.file)
let fileListLen = this[`fileList${event.name}`].length
lists.map((item) => {
this[`fileList${event.name}`].push({
...item,
})
})
for (let i = 0; i < lists.length; i++) {
const result = await this.uploadFilePromise(lists[i].url)
console.log(result)
let item = this[`fileList${event.name}`][fileListLen]
this[`fileList${event.name}`].splice(fileListLen, 1, Object.assign(item, {
status: 'success',
message: '',
url: result
}))
fileListLen++
}
},
async uploadFilePromise(url) {
let res = await upload({
url: '/common/upload',
filePath: url,
})
return res.data.url
},
deletePic(event) {
this[`fileList${event.name}`].splice(event.index, 1)
},
handleRadioChange(newValue) {
if (newValue === '0') {
this.recordTime = ''
@ -244,6 +312,9 @@
}
return value
},
groupChange() {
console.log(this.radiovalue1);
},
changeHandler(e) {
const {
columnIndex,
@ -410,9 +481,16 @@
})
},
async getgoodes() {
if (this.carNum == '' || this.carRegisterDate == '') {
if (this.carNum == '' || this.carRegisterDate == '' || !this.buyPhone) {
uni.showToast({
title: '车牌号 车辆注册日期 必填!',
title: '车牌号 车辆注册日期 联系方式 必填!',
icon: 'none'
})
return
}
if (this.fileList1.length == 0) {
uni.showToast({
title: '车辆照片必须上传',
icon: 'none'
})
return
@ -437,6 +515,8 @@
carRegisterDate: this.carRegisterDate,
meetManId: this.meetManId,
appointmentId: this.appointmentId,
content: this.content,
images: this.fileList1.map(item => item.url).join(',')
}
let res = await request({
@ -446,7 +526,8 @@
})
if (res.code == 200) {
uni.showToast({
title: "可以接车了"
title: "接车成功",
icon: "none"
})
}
setTimeout(() => {

View File

@ -32,6 +32,7 @@
</view>
</view>
<view class="jg_top" style="padding: 30rpx;">{{ dateStr || '' }} {{ week || '' }} {{ time || '' }}</view>
<view class="three_" @click="goordercount">
<view class="three_box1">
<view class="">当日订单</view>
@ -49,7 +50,6 @@
</view>
<view class="hang_"></view>
<view class="jg_box">
<view class="jg_top">{{ dateStr || '' }} {{ week || '' }} {{ time || '' }}</view>
<view class="jg_ds">
<view class="jg_ys">
<image src="/static/imgs/jg1.png" mode="" @click="goordermanage"></image>
@ -134,9 +134,7 @@
<u-tag :text="item.skuName" plain size="mini" style=" height: 44rpx; "></u-tag>
<!-- <image src="/static/imgs/ns.png" mode=""></image>-->
</view>
<view style="color:#3c9cff;" @click="goAddOrder(item)" v-if="!item.orderId">
转订单
</view>
</view>
@ -165,12 +163,20 @@
<view class="left_">客户来源</view>
<view class="right_">自来客户</view>
</view>
<view class="bd">
<view class="bd" style="font-size: 30rpx;">
<view class="" style="color:rgb(60, 156, 255);" @click.stop="cancelAppoin(item.id)">取消预约
</view>
<view style="color:#3c9cff;" @click.stop="goAddOrder(item)">
转订单
</view>
</view>
<!-- <view class="bd">
<view class="" style="color:rgb(60, 156, 255);"
@click.stop="previewImage(item.driverLicenesImg)" v-if="item.driverLicenesImg">查看行驶证
</view>
</view>
</view> -->
</view>
</view>
</scroll-view>
@ -386,6 +392,33 @@
loop: true //
});
},
cancelAppoin(id) {
uni.showModal({
title: '提示',
content: '确定将此预约取消吗?',
success: async (res) => {
if (res.confirm) {
try {
request({
url: `/appInspection/goods/delAppointment`,
method: 'POST',
params: {
appointmentId: id
}
}).then(res => {
this.onRefresherrefresh()
})
} catch (error) {
console.error('取消预约:', error);
uni.showToast({
title: '取消',
icon: 'none'
});
}
}
}
});
},
goAddOrder(data) {
this.clearMyInterval()
uni.navigateTo({

View File

@ -45,7 +45,8 @@
<view class="sshi" v-if="item.isPass == '0'">
<image v-if="item.status == 1" :src="imgurl + '/noPass.png'" mode=""></image>
<view v-else class="">
<text>重审中</text>
<text v-if="tapValue == '3'">重检中</text>
<text v-if="tapValue == '4'">复检中</text>
</view>
</view>
<view class="sshi" v-if="item.isPass == '1'">
@ -61,10 +62,21 @@
</text>
</view>
<view class="top-left" v-else>
<view class="dhei">待接车</view>
<view class="dhei" v-if="!item.meetAddress">待接车</view>
<view class="dhei" v-else>上门取车</view>
</view>
<view @click="callUser(item.buyPhone)" class="top-right" v-if="isShowClient">
<image src="../../static/detection/teel.png" mode=""></image>
<!-- <view @click="handleNavigation(item)" class="top-right"
v-if="isShowClient && item.meetAddress">
<image src="../../static/detection/daohang.png" mode=""></image>
</view> -->
<view class="top-right" v-if="isShowClient">
<image src="../../static/detection/teel.png" mode="" style="position: relative;"
@click="callUser(item.buyPhone)">
</image>
<image src="../../static/detection/daohang.png" mode="" v-if="item.meetAddress"
style="position: absolute;right: 120rpx;height: 60rpx;width: 60rpx;"
@click="handleNavigation(item)">
</image>
</view>
</view>
<view class="">
@ -79,6 +91,12 @@
<text>电话</text>
<text>{{ item.buyPhone }}</text>
</view>
<view class="on-input" v-if="item.meetAddress" @click="handleNavigation(item)">
<uni-icons type="map" color="#999999" size="16"></uni-icons>
<text style="width: 170rpx;">接车地址</text>
<text>{{ item.meetAddress }}</text>
</view>
<!-- <view class="on-input">
<uni-icons type="map" color="#999999" size="16"></uni-icons>
<text>客户来源</text>
@ -91,14 +109,14 @@
</view>
</view>
<view class="on-input">
<uni-icons type="map" color="#999999" size="16"></uni-icons>
<uni-icons type="car" color="#999999" size="16"></uni-icons>
<text>车牌号</text>
<text>{{ item.carNum }}</text>
</view>
<view class="on-input" v-if="item.nodeNames">
<uni-icons type="more" color="#999999" size="16"></uni-icons>
<text class="single-line" v-if="!belowStandardShow.includes(tapValue)">检测内容</text>
<text class="single-line" style="color: red;" v-else>重审项目</text>
<text class="single-line" style="color: red;" v-else>复检项目</text>
<text class="multi-line"
:style="belowStandardShow.includes(tapValue) ? 'color:red' : ''">{{ item.nodeNames }}</text>
</view>
@ -323,6 +341,11 @@
value: "0"
},
],
//
selfLocation: {
latitude: '',
longitude: ''
},
}
},
async onLoad() {
@ -338,6 +361,7 @@
})
},
onShow() {
this.getLocation()
// this.getList()
},
onReady() {
@ -368,6 +392,19 @@
tabBar,
},
methods: {
getLocation() {
uni.getLocation({
type: 'wgs84', // 'wgs84'
success: (res) => {
this.selfLocation.latitude = res.latitude
this.selfLocation.longitude = res.longitude
},
fail: (err) => {
console.log('获取位置失败:', err);
}
});
},
calculateScrollHeight() {
//
const screenHeight = uni.getSystemInfoSync().windowHeight;
@ -853,7 +890,105 @@
this.infoDatas = []
this.pageNum = 1
this.getList()
},
handleNavigation(data) {
console.log('执行了 地图 ');
const _this = this;
// if (!this.latitude || !this.longitude || !this.name) return;
// ,
let _mapName = [{
title: '高德地图',
name: 'amap',
androidName: 'com.autonavi.minimap',
iosName: 'iosamap://'
},
{
title: '百度地图',
name: 'baidumap',
androidName: 'com.baidu.BaiduMap',
iosName: 'baidumap://'
},
{
title: '腾讯地图',
name: 'qqmap',
androidName: 'com.tencent.map',
iosName: 'qqmap://'
},
];
//
let buttons = [];
let platform = uni.getSystemInfoSync().platform;
console.log('获取platform', platform);
platform === 'android' && _mapName.forEach(item => {
if (plus.runtime.isApplicationExist({
pname: item.androidName
})) {
buttons.push(item);
}
});
platform === 'ios' && _mapName.forEach(item => {
if (plus.runtime.isApplicationExist({
action: item.iosName
})) {
buttons.push(item);
}
});
if (buttons.length) {
plus.nativeUI.actionSheet({ //
title: "选择地图应用",
cancel: "取消",
buttons: buttons
}, function(e) {
let _map = buttons[e.index - 1];
_this.openURL(_map, platform, data);
});
} else {
uni.showToast({
title: '请安装地图软件',
icon: 'none'
});
return;
}
},
//
openURL(map, platform, data) {
console.log('执行打开地图');
console.log('data', data);
let _defaultUrl = {
'android': {
"amap": `amapuri://route/plan/?sid=&did=&dlat=${data.latitude}&dlon=${data.longitude}&dname=${data.meetAddress}&dev=0&t=0`,
'qqmap': `qqmap://map/routeplan?type=drive&to=${data.meetAddress}&tocoord=${data.latitude},${data.longitude}&referer=fuxishan_uni_client`,
'baidumap': `baidumap://map/direction?origin=${this.selfLocation.latitude},${this.selfLocation.longitude}&destination=name:${data.meetAddress}|latlng:${data.latitude},${data.longitude}&coord_type=wgs84&mode=driving&src=andr.baidu.openAPIdemo`
},
'ios': {
"amap": `iosamap://path?sourceApplication=fuxishan_uni_client&dlat=${data.latitude}&dlon=${data.longitude}&dname=${data.meetAddress}&dev=0&t=0`,
'qqmap': `qqmap://map/routeplan?type=drive&to=${data.name}&tocoord=${data.latitude},${data.longitude}&referer=fuxishan_uni_client`,
// 'baidumap': `baidumap://map/direction?origin=${data.selfLocation.latitude},${data.selfLocation.longitude}&destination=name:${data.name}|latlng:${data.latitude},${data.longitude}&mode=driving&src=ios.baidu.openAPIdemo`
}
};
// URL
let newurl = encodeURI(_defaultUrl[platform][map.name]);
// URL
plus.runtime.openURL(newurl, function(res) {
uni.showModal({
content: '打开地图成功'
});
}, function(err) {
console.log('打开地图失败: ', err);
uni.showModal({
content: '打开地图失败: ' + err.message
});
});
}
}
}
</script>

View File

@ -11,7 +11,9 @@ export async function getDictDataByType(type) {
const response = await request({
url: '/system/dict-data/type',
method: 'get',
params: {type}
params: {
type
}
});
data = response.data;
setStorageWithExpiry(type, data, 3600); // 存储数据并设置过期时间
@ -24,6 +26,9 @@ export async function getDictDataByType(type) {
}
export function formatDate(timestamp) {
if (!timestamp) {
return ""
}
// 将时间戳转换为Date对象
const date = new Date(timestamp);
// 获取年月日时分秒
@ -56,4 +61,3 @@ export function formatDateTimeToMinute(timestamp) {
// 组合成日期时间字符串格式yyyy-MM-dd hh:mm
return `${year}-${month}-${day} ${hours}:${minutes}`;
}