2025-06-19 17:33:18 +08:00

445 lines
12 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

// pages/vehicleMaintenance/maintainSend/maintainSend.ts
import { getAction, postAction } from '../../../../api/base';
const dayjs = require('dayjs');
Page({
/**
* 页面的初始数据
*/
data: {
selectProject: null as any, // 项目所选
selectCar: null as any, // 项目所选
projectOptions: [], // 项目数据
carOptions: [] as any,
filterCarOptions: [] as any, // 过滤后的车辆数据
filterProjectOptions: [] as any, // 过滤后的项目数据
repairPeople: '', // 报修人
phone: '', // 联系电话
classifyOptions: [] as any, // 报修分类数据
selectedClassify: [] as any, // 选择的报修分类
repairContent: '', // 报修内容
uploadUrl: 'api/vehicles/repair/fileUpload', // 上传图片地址
repairImgUrl: '' as any, //报修副屏
repairTimeShow: false, // 展示报修时间选择框
repairTime: '', // 报修时间
repairTimestamp: new Date().getTime(),
plateNumberShow: false, //展示车牌号选择框
projectShow: false, //展示项目选择框
plateNumberSearchVal: '', // 查找车牌号输入值
projectSearchVal: '' // 查找项目输入值
},
// 选着报修分类
selectClassify(e: any) {
let index = null;
this.data.selectedClassify.forEach((item: any, idx: number) => {
if (item == e.currentTarget.dataset.inf.value) index = idx;
});
// 如果已经选择,清除
if (index != null) {
this.data.selectedClassify.splice(index, 1);
let data = this.data.classifyOptions;
data[e.currentTarget.dataset.index].selected = false;
this.setData({
classifyOptions: data
});
}
// 如果没有选择,则添加
else {
this.data.selectedClassify.push(e.currentTarget.dataset.inf.value);
let data = this.data.classifyOptions;
data[e.currentTarget.dataset.index].selected = true;
this.setData({
classifyOptions: data
});
}
},
// 输入报修人
getRepairPeople(e: any) {
this.setData({
repairPeople: e.detail.value
});
},
// 输入联系电话
getPhone(e: any) {
this.setData({
phone: e.detail.value
});
},
checkPhone() {
let res = this.checkMobilephone();
if (!res) {
wx.showToast({
title: '联系电话格式不正确',
icon: 'none'
});
return false;
} else return true;
},
// 手机号校验方法
checkMobilephone() {
const regex = /^(?:(?:\+|00)86)?1[3-9]\d{9}$/;
if (this.data.phone == '') {
return true;
} else {
if (!regex.test(this.data.phone)) {
return false;
} else {
return true;
}
}
},
// 输入报修内容
textareaInput(e: any) {
this.setData({
repairContent: e.detail.value
});
},
// 上传图片回显
returnPic(e: any) {
let list = [] as any;
e.detail.photoList.forEach((item: any) => {
list.push(item.fileUrl);
});
this.setData({
repairImgUrl: list
});
},
// 提交申请
submit() {
// 联系电话格式校验
let checkPhone = this.checkPhone();
// 校验必填
let checkProject, checkCar, checkClassify, checkTextarea;
this.data.selectProject?.projectId
? (checkProject = true)
: (checkProject = false);
this.data.selectCar?.id ? (checkCar = true) : (checkCar = false);
this.data.selectedClassify.length > 0
? (checkClassify = true)
: (checkClassify = false);
this.data.repairContent ? (checkTextarea = true) : (checkTextarea = false);
if (!checkProject) {
wx.showToast({
title: '请选择所属项目',
icon: 'none'
});
return;
}
if (!checkCar) {
wx.showToast({
title: '请选择所属车辆',
icon: 'none'
});
return;
}
if (!this.data.repairTime) {
wx.showToast({
title: '请选择报修时间',
icon: 'none'
});
return;
}
if (!checkClassify) {
wx.showToast({
title: '请选择报修分类',
icon: 'none'
});
return;
}
if (!checkTextarea) {
wx.showToast({
title: '请填写报修内容',
icon: 'none'
});
return;
}
if (!checkPhone) {
return;
}
let params = {
id: null, //id《新建的仅保存及提交为null编辑进来的带上数据id》
flowStatus: 2, //流程状态《仅保存传值1。提交传值2》
projectId: this.data.selectProject?.projectId, //所属项目
plateNumber: this.data.selectCar?.plateNumber, //车牌号
deliveryTime: this.data.selectCar?.deliveryTime, //交车时间
frameNumber: this.data.selectCar?.frameNumber, //车架号
vehicleBrand: this.data.selectCar?.vehicleBrand, //车辆品牌
vehicleModel: this.data.selectCar?.vehicleModel, //车辆型号
vehicleType: this.data.selectCar?.vehicleType, //车辆种类
vinCode: this.data.selectCar?.vinCode, //VIN码
engineNumber: this.data.selectCar?.engineNumber, //发动机码
repairPeople: this.data.repairPeople, //报修人
phone: this.data.phone, //联系电话
repairTime: this.data.repairTime, //报修时间
repairClass: this.data.selectedClassify.join(','), //报修分类
repairContent: this.data.repairContent, //报修内容
repairImgUrl: this.data.repairImgUrl
? this.data.repairImgUrl.join(',')
: '' //报修图片
};
wx.showLoading({
title: '加载中',
mask: true
});
postAction('api/vehicles/repair/addOrEdit', params)
.then((res: any) => {
if (res.code == 200) {
wx.hideLoading();
wx.showToast({
title: '提交成功',
icon: 'none'
});
wx.setStorageSync('message', {
projectName: this.data.selectProject?.projectName,
plateNumber: this.data.selectCar?.plateNumber,
date: dayjs().format('YYYY-MM-DD HH:mm:ss'),
id: res.message,
flowStatus: 1
});
wx.redirectTo({
url: '../message/message',
fail: e => {
console.log(e);
}
});
} else {
wx.hideLoading();
wx.showToast({
title: res.message,
icon: 'none'
});
}
})
.catch((err: any) => {
wx.hideLoading();
wx.showToast({
title: err.message,
icon: 'none'
});
});
},
// 获取项目数据
getProjects() {
getAction('api/vehicles/repair/queryProjects')
.then((res: any) => {
if (res.code == 200) {
let data = [] as any;
res.result.forEach((el: any) => {
el.value = el.projectId;
el.text = el.projectName;
});
data = res.result;
this.setData({
projectOptions: data,
filterProjectOptions: data
});
} else {
wx.showToast({
title: res.message,
icon: 'none'
});
}
})
.catch((err: any) => {
wx.showToast({
title: err.message,
icon: 'none'
});
});
},
// 获取报修分类
getRepairClass() {
getAction('api/vehicles/repair/getRepairClass')
.then((res: any) => {
if (res.code == 200) {
let data = res.result;
data.forEach((item: any) => {
item.selected = false;
});
this.setData({
classifyOptions: data
});
} else {
wx.showToast({
title: res.message,
icon: 'none'
});
}
})
.catch((err: any) => {
wx.showToast({
title: err.message,
icon: 'none'
});
});
},
// 展示选择框
pickerChange(event: any) {
//下拉框切换是否展示
let fieldName: any = event.currentTarget.dataset.fieldname;
let data: any = { ...this.data };
data[fieldName] = true;
this.setData(data);
},
// 隐藏展示框
hidePicker() {
this.setData({
repairTimeShow: false,
plateNumberShow: false,
projectShow: false
});
},
// 选择器点击确认
pickerConfirm(event: any) {
let { fieldname } = event.currentTarget.dataset;
let detail = event.detail;
// 选择报修时间
if (fieldname == 'repairTime') {
this.setData({
repairTime: dayjs(detail).format('YYYY-MM-DD'),
repairTimestamp: detail
});
}
// 选择车牌号
else if (fieldname == 'plateNumber') {
this.setData({
selectCar: event.detail.value
});
}
// 选择项目
else if (fieldname == 'project') {
this.setData({
selectProject: event.detail.value
});
if (event.detail.value.projectId) {
// 获取车辆数据
getAction(
`api/vehicles/repair/queryVehicleInfoByProjectId?projectId=${event.detail.value.projectId}`
)
.then((res: any) => {
if (res.code == 200) {
// 清空当前所选的车辆数据
this.setData({
selectCar: null
});
let data = [] as any;
res.result.forEach((el: any) => {
el.value = el.plateNumber;
el.text = el.plateNumber;
});
data = res.result;
this.setData({
carOptions: data,
filterCarOptions: data
});
} else {
wx.showToast({
title: res.message,
icon: 'none'
});
}
})
.catch((err: any) => {
wx.showToast({
title: err.message,
icon: 'none'
});
});
}
}
this.hidePicker();
},
// 清空数据
resetData(event: any) {
let { fieldname } = event.currentTarget.dataset;
if (fieldname == 'repairPeople') {
this.setData({
repairPeople: ''
});
} else if (fieldname == 'phone') {
this.setData({
phone: ''
});
}
},
// 过滤车牌号
filterPlateNumber(event: any) {
let list = [] as any;
this.data.carOptions.forEach((item: any) => {
if (
item.plateNumber.toLowerCase().indexOf(event.detail.toLowerCase()) >= 0
) {
list.push(item);
}
});
this.setData({
filterCarOptions: list,
plateNumberSearchVal: event.detail
});
},
// 过滤项目
filterProject(event: any) {
let list = [] as any;
this.data.projectOptions.forEach((item: any) => {
if (
item.projectName.toLowerCase().indexOf(event.detail.toLowerCase()) >= 0
) {
list.push(item);
}
});
this.setData({
filterProjectOptions: list,
projectSearchVal: event.detail
});
},
/**
* 生命周期函数--监听页面加载
*/
onLoad() {},
/**
* 生命周期函数--监听页面初次渲染完成
*/
onReady() {
this.getProjects();
this.getRepairClass();
},
/**
* 生命周期函数--监听页面显示
*/
onShow() {
// 不放onReady 是因为有可能切出去然后状态改了得跳转到别的页面
// 默认报修人为当前用户
let userInfo = wx.getStorageSync('userInfo');
this.setData({
repairPeople: userInfo.realname
});
},
/**
* 生命周期函数--监听页面隐藏
*/
onHide() {},
/**
* 生命周期函数--监听页面卸载
*/
onUnload() {},
/**
* 页面相关事件处理函数--监听用户下拉动作
*/
onPullDownRefresh() {},
/**
* 页面上拉触底事件的处理函数
*/
onReachBottom() {},
/**
* 用户点击右上角分享
*/
onShareAppMessage() {}
});