import { getAction } from '../../../../api/base'; const dayjs = require('dayjs'); Page({ /** * 页面的初始数据 */ data: { upKeepObject: null as any, // 保养单数据 selectProject: null as any, // 项目所选 selectCar: null as any, // 车辆所选 selectOption: null as any, // 选择的维修厂 projectOptions: [], // 项目数据 options: [] as any, // 维修厂数据 carOptions: [] as any, // 车辆数据 filterCarOptions: [] as any, // 过滤后的车辆数据 filterProjectOptions: [] as any, // 过滤后的项目数据 filterOptions: [] as any, // 维修厂过滤后数据 lastMileage: '', // 上次保养里程 predictMileage: '', // 预计保养里程 content: '', // 保养内容 uploadUrl: 'api/vehicles/repair/fileUpload', // 上传图片地址 attachmentList: [] as any, //附件 lastTimeShow: false, // 展示上次保养时间选择框 predictTimeShow: false, // 展示预计保养时间选择框 startTimeShow: false, // 展示实际保养开始时间选择框 endTimeShow: false, // 展示实际保养结束时间选择框 repairShopShow: false, // 展示维修厂选择框 lastTime: '', // 上传保养时间 predictTime: '', // 预计保养时间 startTime: '', // 实际保养开始时间 endTime: '', // 实际保养结束时间 lastTimestamp: new Date().getTime(), predictTimestamp: new Date().getTime(), startTimestamp: new Date().getTime(), endTimestamp: new Date().getTime(), plateNumberShow: false, //展示车牌号选择框 projectShow: false, //展示项目选择框 plateNumberSearchVal: '', // 查找车牌号输入值 projectSearchVal: '', // 查找项目输入值 repairShopSearchVal: '', // 维修厂查询过滤输入值 echoFile: null as any, // 回显附件 contactPhone: '', // 维修厂联系电话 contact: '' // 联系人 }, // 输入保养里程 getMileage(e: any) { let { fieldname } = e.currentTarget.dataset; let res = null as any; e.detail.value = Number(Number(e.detail.value).toFixed(2)); if (e.detail.value > 99999999) { res = 99999999; wx.showToast({ title: '保养里程不能大于99999999', icon: 'none' }); } else if (e.detail.value < 0) { res = 0; wx.showToast({ title: '保养里程不能小于0', icon: 'none' }); } else res = e.detail.value; if (fieldname == 'lastMileage') { this.setData({ lastMileage: res }); } else if (fieldname == 'predictMileage') { this.setData({ predictMileage: res }); } }, // 输入保养内容 textareaInput(e: any) { this.setData({ content: e.detail.value }); }, // 维修厂联系人 getContactPerson(e: any) { this.setData({ contact: e.detail.value }); }, // 维修厂联系电话 getTel(e: any) { this.setData({ contactPhone: e.detail.value }); }, // 上传图片回显 returnPic(e: any) { let list = [] as any; e.detail.photoList.forEach((item: any) => { list.push(item); }); this.setData({ attachmentList: list }); }, // 提交申请 submit() { // 校验必填 let checkProject, checkCar, checkTextarea; this.data.selectProject?.projectId ? (checkProject = true) : (checkProject = false); this.data.selectCar?.id ? (checkCar = true) : (checkCar = false); this.data.content ? (checkTextarea = true) : (checkTextarea = false); if (!checkProject) { wx.showToast({ title: '请选择所属项目', icon: 'none' }); return; } if (!checkCar) { wx.showToast({ title: '请选择所属车辆', icon: 'none' }); return; } if (!this.data.lastTime) { wx.showToast({ title: '请选择上次保养时间', icon: 'none' }); return; } if (this.data.lastMileage === '') { wx.showToast({ title: '请输入上次保养里程', icon: 'none' }); return; } if (!this.data.predictTime) { wx.showToast({ title: '请选择预计保养时间', icon: 'none' }); return; } if (this.data.predictMileage === '') { wx.showToast({ title: '请输入预计保养里程', icon: 'none' }); return; } if (!this.data.startTime) { wx.showToast({ title: '请选择保养开始时间', icon: 'none' }); return; } if (!this.data.endTime) { wx.showToast({ title: '请选择保养结束时间', icon: 'none' }); return; } if (!checkTextarea) { wx.showToast({ title: '请填写保养内容', icon: 'none' }); return; } if (!this.data.selectOption) { wx.showToast({ title: '请选择维修厂', icon: 'none' }); return; } let checkPhone2 = this.checkPhoneTwo(); if (!checkPhone2) return; let upkeepBill = { id: null, //id 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, //发动机码 lastMileage: this.data.lastMileage, //上次保养里程 lastTime: this.data.lastTime, //上次保养时间 predictMileage: this.data.predictMileage, //上次保养里程 predictTime: this.data.predictTime, //上次保养时间 startTime: this.data.startTime, //上次保养时间 endTime: this.data.endTime, //上次保养时间 content: this.data.content, //保养内容 attachmentList: this.data.attachmentList // 附件 }; let upkeepAssign = { repairShop: this.data.selectOption.repairShop, //维修厂id contact: this.data.contact, //联系人 contactPhone: this.data.contactPhone //联系电话 }; let params = { upkeepBill, upkeepAssign }; wx.setStorageSync('paramsInfo', params); wx.navigateTo({ url: '../dataEntryTwo/dataEntryTwo', fail: e => { console.log(e); } }); }, // 获取项目数据 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' }); }); }, // 获取维修厂信息 getRepairShop() { getAction('api/vehicles/repair/getRepairShop') .then((res: any) => { if (res.code == 200) { let data = [] as any; res.result.forEach((el: any) => { el.value = el.repairShop; el.text = el.repairShop_dictText; }); data = res.result; this.setData({ options: data, filterOptions: 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({ lastTimeShow: false, predictTimeShow: false, startTimeShow: false, endTimeShow: false, plateNumberShow: false, projectShow: false, repairShopShow: false }); }, // 选择器点击确认 pickerConfirm(event: any) { let { fieldname } = event.currentTarget.dataset; let detail = event.detail; // 选择保养时间 if (fieldname == 'lastTime') { this.setData({ lastTime: dayjs(detail).format('YYYY-MM-DD'), lastTimestamp: detail }); } else if (fieldname == 'predictTime') { this.setData({ predictTime: dayjs(detail).format('YYYY-MM-DD'), predictTimestamp: detail }); } else if (fieldname == 'startTime') { this.setData({ startTime: dayjs(detail).format('YYYY-MM-DD HH:mm:ss'), startTimestamp: detail }); } else if (fieldname == 'endTime') { this.setData({ endTime: dayjs(detail).format('YYYY-MM-DD HH:mm:ss'), endTimestamp: 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) { this.getCarFn(event.detail.value.projectId); } } // 选择维修厂 else if (fieldname == 'repairShop') { this.setData({ selectOption: detail.value, contact: detail.value.contact, contactPhone: detail.value.contactPhone }); } this.hidePicker(); }, // 获取车辆数据 getCarFn(projectId: any) { getAction( `api/vehicles/repair/queryVehicleInfoByProjectId?projectId=${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' }); }); }, // 清空数据 resetData(event: any) { let { fieldname } = event.currentTarget.dataset; if (fieldname == 'contact') { this.setData({ contact: '' }); } else if (fieldname == 'contactPhone') { this.setData({ contactPhone: '' }); } }, // 过滤车牌号 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 }); }, // 过滤维修厂 filterRepairShop(event: any) { let list = [] as any; this.data.options.forEach((item: any) => { if ( item.repairShop_dictText .toLowerCase() .indexOf(event.detail.toLowerCase()) >= 0 ) { list.push(item); } }); this.setData({ filterOptions: list, repairShopSearchVal: event.detail }); }, // 删除回显图片 delImg(e: any) { let that = this; let { index } = e.currentTarget.dataset; let { echoFile } = this.data; wx.showModal({ title: '提示', content: '是否删除当前照片', success(res) { if (res.confirm) { echoFile.splice(index, 1); that.setData({ echoFile: echoFile }); } } }); }, // 图片预览 showImage(event: any) { let { index, image } = event.currentTarget.dataset; let list = [] as any; if (image == 'echoFile') { this.data.echoFile.forEach((item: any) => { list.push(item.fileUrl); }); } wx.previewImage({ current: list[index | 0], // 当前显示图片的http链接 默认urls[0] urls: list // 需要预览的图片http链接列表 }); }, // 手机号校验方法 checkMobilephone(target: any) { const regex = /^(?:(?:\+|00)86)?1[3-9]\d{9}$/; if (target == '') { return true; } else { if (!regex.test(target)) { return false; } else { return true; } } }, // 维修厂联系人电话 checkPhoneTwo() { let res = this.checkMobilephone(this.data.contactPhone); if (!res) { wx.showToast({ title: '维修厂联系人联系电话格式不正确', icon: 'none' }); return false; } else return true; }, /** * 生命周期函数--监听页面加载 */ onLoad() {}, /** * 生命周期函数--监听页面初次渲染完成 */ onReady() {}, /** * 生命周期函数--监听页面显示 */ onShow() { // 不放onReady 是因为有可能切出去然后状态改了得跳转到别的页面 // 默认保养人为当前用户 // let userInfo = wx.getStorageSync('userInfo'); this.getProjects(); this.getRepairShop(); }, /** * 生命周期函数--监听页面隐藏 */ onHide() {}, /** * 生命周期函数--监听页面卸载 */ onUnload() {}, /** * 页面相关事件处理函数--监听用户下拉动作 */ onPullDownRefresh() {}, /** * 页面上拉触底事件的处理函数 */ onReachBottom() {}, /** * 用户点击右上角分享 */ onShareAppMessage() {} });