<template> <view class="content"> <view class="top-heder"> <view class="t-left" @click="getback()"> <uni-icons type="left" size="18"></uni-icons> </view> <view class="t-title"> <text>检测详情</text> </view> <view class="t-you"></view> </view> <view class="x-box"> <view class="box-top"> <view style=" width: 100%;"> <view class="touxiang" v-if="!detailData.workerAvatar"> <image src="../../static/detection/touxiang.png" mode=""></image> </view> <view v-else> <image :src="baseUrl+detailData.workerAvatar" mode=""></image> </view> <view class="sanniu"> <text>{{detailData.workerName}}</text> </view> </view> </view> <view class="box-dis"> <view class="shop-img"> <image :src="baseUrl+detailData.goodsImage" mode=""></image> </view> <view class="ds-right"> <view class="h-title">{{detailData.goodsName}} </view> <view class="dis-hui"> <text>预约人:</text> <text>{{detailData.buyUserName}}</text> </view> <view class="dis-hui"> <text>手机号:</text> <text>{{detailData.buyUserPhone}}</text> </view> <view class="dis-hui"> <text>车型:</text> <text>{{detailData.carType}}</text> </view> <view class="dis-hui"> <text>车牌号:</text> <text>{{detailData.carNum}}</text> </view> <view class="dis-hui"> <text>商品价格:</text> <text>{{detailData.goodsPrice/100}}元</text> </view> </view> </view> <view class="bd-tel" @click="callUser(detailData.buyUserPhone)"> <uni-icons type="phone" color="#0D2E8D" size="16"></uni-icons> <text>联系用户</text> </view> </view> <view class="x-box"> <view class="h-title">订单详情</view> <view class="on-input"> <view class="o-left">订单编号:</view> <view class="o-right">{{detailData.orderNo}}</view> </view> <view class="on-input"> <view class="o-left">折扣:</view> <view class="o-right">{{detailData.reduceMoney/100}}</view> </view> <view class="on-input"> <view class="o-left">优惠金额:</view> <view class="o-right">{{detailData.couponDiscount/100}}</view> </view> <view class="on-input"> <view class="o-left">核销人:</view> <view class="o-right">{{detailData.validationRealName}}</view> </view> <view class="on-input"> <view class="o-left">核销时间:</view> <view class="o-right">{{detailData.validationTime}}</view> </view> <view class="bottomxx" v-if="isOnline&&isOnline==0&&orderStatus&&orderStatus==0" @click="xling = true"> <view class="">结算</view> </view> <view class="bottom-input"> <view class="o-left">实付金额:</view> <view class="o-zui">{{(detailData.payMoney+detailData.balance)/100}}元</view> </view> </view> <view class="x-box" v-for="(item,index) in detailData.stepInfos"> <view class="h-title" style="display: flex;align-items: center;justify-content: space-between;"> <text>{{item.title}} </text> <text class="times">{{item.createTime}}</text> </view> <view class=""> <text>{{item.content}}</text> </view> <!-- <view class="imgs-warp"> <view class="imgss" v-for="(item,index) in item.images.split(',')" :key="index"> <image :src="baseUrl+item" mode=""></image> </view> </view> --> </view> <view class="annniu" v-if="detailData.status&&detailData.status == 0" @click="hge = true"> <view class="">结束检测</view> </view> <view class="annniu" v-if="detailData.status&&detailData.status == 1&&detailData.isPass&&detailData.isPass ==1&&detailData.makeCert!=1" @click="dialogToggle" > <view class="">制证完成</view> </view> <u-picker :show="show" :columns="columns" keyName="label" @close="close" @confirm="confirm" @change="change" @cancel="cancel"></u-picker> <u-popup :show="hge" @close="closehge" :round="10" @open="openxl"> <view class="popup-box"> <view class="t-title">是否合格</view> <view class="on-inputx"> <view class="anniu" :class="{'an':geindex == index}" v-for="(item,index) in sfou" :key="index" @click="Nnimamadewen(item.value,index)"> <text>{{item.text}}</text> </view> </view> <view class="t-title" v-if="geindex == 1">重审/退办</view> <view class="on-inputx" v-if="geindex == 1"> <view class="anniu" :class="{'an':isRetrial == item.value}" v-for="(item,index) in cstb" :key="index" @click="shenmowanyi(item.value,index)"> <text>{{item.text}}</text> </view> </view> <view class="on-inputx"> <text>说明:</text> <!-- <input type="text" placeholder="请输入内容"> --> </view> <u--textarea v-model="remark" placeholder="请输入内容" border="bottom"></u--textarea> <view class="bottomx" @click="submit()" > <uni-icons type="compose" color="#0D2E8D" size="20"></uni-icons> <text>提交</text> </view> </view> </u-popup> <u-popup :show="xling" @close="closexl" :round="10" @open="openxl"> <view class="popup-box"> <view class="t-title">线下订单</view> <view class="on-inputx"> <text>商品价格:</text> <text>{{detailData.goodsPrice/100}}元</text> </view> <view class="on-inputx"> <text>优惠金额:</text> <input type="number" v-model="reduceMoney" @input="jisuan" placeholder="请输入优惠金额"> </view> <view class="on-inputx"> <text>实付金额:</text> <input type="number" v-model="payMoney" placeholder="请输入实付金额"> </view> <view class="on-inputx"> <text>付款方式:</text> </view> <view class="warp-box"> <view class="lan-box" :class=" {'lantong':payType == item.value } " v-for="(item,index) in shelist" :key="index" @click="xuanxiaolan(item)"> {{item.label}} </view> </view> <view class="on-inputx"> <text>收款账号:</text> <input type="text" v-model="receivablesAccount" placeholder="请输入收款账号"> </view> <view class="on-inputx"> <text>备注:</text> </view> <u--textarea v-model="payRemark" placeholder="如果存在组合付款方式,请在备注中描述清楚" border="bottom"></u--textarea> <view class="bottomx" @click="tiijiao()" style="margin-top: 10px;"> <uni-icons type="compose" color="#0D2E8D" size="20"></uni-icons> <text>提交</text> </view> </view> </u-popup> <uni-popup ref="alertDialog" type="dialog"> <uni-popup-dialog :type="msgType" cancelText="关闭" confirmText="确定" title="通知" content="您确定制证完成吗" @confirm="dialogConfirm" @close="dialogClose"></uni-popup-dialog> </uni-popup> </view> </template> <script> import config from '@/config' import request from '../../utils/request'; import upload from '@/utils/upload.js' export default { data() { return { reduceMoney:null, payMoney:null, payType:'', receivablesAccount:'', orderStatus:null, payRemark:'', isRetrial:1, isOnline:1, hge:false, show:false, xling:false, baseUrl:this.$baseUrl, geindex:0, detailData:{}, inspectionInfoId:'', stepInfo:{isPass:"0"}, lei:'请选择车辆类型', columns: [], cph:'', fileList1:[], fileList2:[], shelist:[], isPass:"1", remark:'', sfou:[ {text:'合格',value:"1"}, {text:'不合格',value:"0"}, ], cstb:[ {text:'重审',value:"1"}, {text:'退办理',value:"0"}, ] } }, onLoad(option) { this.inspectionInfoId = option.inspectionInfoId }, onShow() { this.getindex() }, methods:{ dialogToggle() { this.$refs.alertDialog.open() }, async dialogConfirm() { let data = { inspectionId:this.inspectionId } let res = await request({ url:'/partnerOwn/partner/makeCertOk', method: 'post', params:data }) if(res.code == 200){ uni.showToast({ title:'操作成功' }) this.getindex() this.$refs.alertDialog.close() } }, dialogClose() { this.$refs.alertDialog.close() }, jisuan(){ if(this.reduceMoney>(this.detailData.goodsPrice/100)){ this.reduceMoney = this.detailData.goodsPrice/100 } this.payMoney = (this.detailData.goodsPrice/100)- this.reduceMoney }, async tiijiao(){ if( !this.payMoney ||!this.payType){ uni.showToast({ title:'实付金额与付款方式不能为空!', icon:'none' }) return } let data = { reduceMoney:this.reduceMoney?this.reduceMoney*100:0, payMoney:this.payMoney*100, payType:this.payType, receivablesAccount:this.receivablesAccount, payRemark:this.payRemark, inspectionId:this.inspectionId, } let res = await request({ url:'/partnerOwn/partner/offlineCharging', method: 'post', data:data }) if(res.code = 200){ uni.showToast({ title:"提交成功" }) this.getindex() this.xling = false } }, callUser(phone){ uni.makePhoneCall({ phoneNumber: phone //仅为示例 }); }, async submit(){ let inspectionInfo = { id:this.inspectionInfoId, isPass:this.isPass, isRetrial:this.isRetrial, remark:this.remark } let res = await request({ url:'/partnerOwn/partner/stopInspection', method: 'post', data:inspectionInfo }) if(res.code == 200){ this.getindex() uni.showToast({ title:"成功", }) uni.navigateBack(); } if(res.code == 500){ uni.navigateBack(); } }, closehge(){ this.hge = false }, async addStepInfo(){ this.stepInfo.images = this.fileList2.join(",") this.stepInfo.inspectionInfoId = this.inspectionInfoId let res = await request({ url:'/partnerOwn/partner/addStepInfo', method: 'post', data:this.stepInfo }) if(res.code == 200){ this.fileList1 =[] this.fileList2 =[] this.stepInfo = {} this.xling = false uni.showToast({ title:"成功", }) this.getindex() uni.reLaunch({ url:'/pages/index/ordermanage' }) } if(res.code == 500){ uni.showToast({ title:"已结束", }) uni.reLaunch({ url:'/pages/index/ordermanage' }) } }, async getindex(){ let res = await request({ url:'/partnerOwn/partner/inspectionDetail', method: 'get', params:{ inspectionInfoId:this.inspectionInfoId } }) this.detailData = res.data this.inspectionId = res.data.inspectionId this.isOnline = res.data.isOnline this.orderStatus = res.data.orderStatus this.payMoney = res.data.goodsPrice/100 let she = await request({ url:'/system/dict/data/type/pay_type', method: 'get', }) this.shelist = she.data }, xuanxiaolan(item){ this.payType = item.value }, getback(){ uni.navigateBack() }, Nnimamadewen(value,index){ this.isPass = value this.geindex = index }, shenmowanyi(value,index){ this.tbindex = value this.isRetrial = value }, closexl(e){ this.xling = false }, openxl(e){ }, close(e){ }, confirm(e){ this.show = false, this.lei = e.value[0].label }, change(e){ }, cancel(e){ this.show = false }, // 删除图片 deletePic(event) { this[`fileList${event.name}`].splice(event.index, 1) }, // 新增图片 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) let item = this[`fileList${event.name}`][fileListLen] this[`fileList${event.name}`].splice(fileListLen, 1, Object.assign(item, { status: 'success', message: '', url: result })) fileListLen++ } }, uploadFilePromise(url) { upload({ url:'/common/upload', filePath: url, }).then((res)=>{ // this.newsCover = res.fileName this.fileList2.push(res.fileName) }) }, deletePic1(event) { this[`fileList${event.name}`].splice(event.index, 1) }, } } </script> <style scoped lang="scss"> image{ width: 100%; height: 100%; } .lantong{ background-color: #0D2E8D !important; color: white; } .lan-box{ font-size: 14px; margin: 5px 10px; padding: 5px; box-sizing: border-box; background-color: #F4F4F4; border-radius: 4px; } .warp-box{ width: 100%; display: flex; align-items: center; flex-wrap: wrap; } .content { box-sizing: border-box; width: 100%; height: 100%; background: #F4F4F4; } .top-heder{ width: 100%; // height: 46px; background: white; display: flex; align-items: center; justify-content: space-between; box-sizing: border-box; padding: 5px 15px; padding-top: 45px; padding-bottom: 15px; margin-bottom: 10px; } .t-title{ font-size: 17px; font-weight: bold; color: #333333; } .t-left{ width: 10%; } .t-you{ height: 100%; width: 10%; } .x-box{ width: 95%; margin: 10px auto; background: #FFFFFF; border-radius: 8px; box-sizing: border-box; padding: 10px; background: white; // display: flex; // align-items: center; // justify-content: center; } .bottomx{ margin: 0 auto; width: 225px; height: 46px; border-radius: 6px 6px 6px 6px; opacity: 1; border: 1px solid #0D2E8D; display: flex; align-items: center; justify-content: center; color: #0D2E8D; } .bottomxx{ position: fixed; right: 10px; bottom: 150px; width: 46px; height: 46px; border-radius:50%; opacity: 1; border: 1px solid #0D2E8D; background: #0D2E8D; display: flex; align-items: center; justify-content: center; color: white; } .touxiang{ width: 50px; height: 50px; border-radius: 50%; overflow: hidden; margin: 10px auto; } .sanniu{ width: 105px; height: 35px; background: #0D2E8D; border-radius: 50px; display: flex; align-items: center; justify-content: center; font-size: 15px; font-weight: 400; color: #FFFFFF; line-height: 15px; margin: 0 auto; } .xiamxia{ width: 30%; height: 30px; background: linear-gradient(180deg, #3F61C0 0%, #0D2E8D 100%); border-radius: 50px; display: flex; align-items: center; justify-content: center; font-size: 15px; font-weight: 400; color: #FFFFFF; line-height: 15px; margin: 15px auto; } .annniu{ width: 90%; height: 45px; background: linear-gradient(180deg, #3F61C0 0%, #0D2E8D 100%); border-radius: 50px; display: flex; align-items: center; justify-content: center; font-size: 15px; font-weight: 400; color: #FFFFFF; line-height: 15px; margin: 15px auto; } .banniu{ width: 20%; height: 30px; background: linear-gradient(180deg, #3F61C0 0%, #0D2E8D 100%); border-radius: 50px; display: flex; align-items: center; justify-content: center; font-size: 15px; font-weight: 400; color: #FFFFFF; } .box{ } .box-dis{ box-sizing: border-box; padding: 15px; // border-bottom: 1px solid #EEEEEE; display: flex; align-items: center; } .shop-img{ width: 125px; height: 125px; border-radius: 8px; overflow: hidden; margin-right: 10px; } .dis-hui{ width: 100%; display: flex; align-items: center; font-size: 15px; font-weight: 400; color: #999999; margin-bottom: 5px; } .times{ font-size: 15px; font-weight: 400; color: #999999; margin-left: 25px; } .h-title{ font-size: 16px; font-weight: bold; color: #333333; margin-bottom: 5px; } .box-top{ box-sizing: border-box; padding: 15px; border-bottom: 1px solid #EEEEEE; width: 100%; display: flex; align-items: center; justify-content: space-around; } .t-input{ width: 90%; margin: 20px auto; border: 1px solid #0D2E8D; border-radius: 6px; box-sizing: border-box; padding: 2px 5px ; } .on-input{ width: 100%; display: flex; justify-content: space-between; align-items: center; margin: 15px auto; } .on-inputx{ width: 100%; display: flex; align-items: center; margin: 15px auto; } .bottom-input{ border-top: 1px solid #F4F4F4; box-sizing: border-box; padding-top: 20px; display: flex; justify-content: space-between; width: 100%; } .o-left{ font-size: 15px; font-weight: 400; color: #666666; } .o-right{ font-size: 15px; font-weight: 400; color: #333333; } .o-zui{ font-size: 20px; font-weight: 500; color: #333333; } .popup-box{ overflow: hidden; border-radius: 8px; box-sizing: border-box; padding: 15px; width: 100%; background-color: white; } .sousuo{ width: 95%; margin: 0 auto; margin-left: 0px; height: 30px; background: #F0F0F0; border-radius: 50px; color: #999999; box-sizing: border-box; padding:0 10px; display: flex; align-items: center; justify-content: space-between; input{ width: 80%; } } .list-box{ width: 100%; height: 300px; overflow: hidden; box-sizing: border-box; } .list_scroll{ height: 100%; // 需设置高度 display: flex; flex-direction: column; } .list-qiu{ width: 95%; border-bottom: 1px solid #EEEEEE; box-sizing: border-box; padding: 10px 5px; display: flex; justify-content: space-between; align-items: center; } .tel{ margin-left: 5px; font-size: 15px; font-weight: 400; color: #666666; } .bd-tel{ width: 100%; border-top:1px solid #EEEEEE; box-sizing: border-box; padding-top: 10px; display: flex; align-items: center; justify-content: center; color: #0D2E8D; } .imgs-warp{ width: 100%; display: flex; align-items: center; justify-content: space-between; margin-top: 10px; } .imgss{ width: 32%; height: 110px; overflow: hidden; image{ width: 100%; height: 100%; } } .anniu{ box-sizing: border-box; padding: 2px 10px; margin: 0px 10px; // background: linear-gradient(180deg, #3F61C0 0%, #0D2E8D 100%); border: 1px solid #0D2E8D; border-radius: 23px; font-size: 15px; color: #0D2E8D; display: flex; align-items: center; justify-content: center; } .an{ box-sizing: border-box; padding: 2px 10px; margin: 0px 10px; background: linear-gradient(180deg, #3F61C0 0%, #0D2E8D 100%) !important; border-radius: 23px; font-size: 15px; color: white !important; display: flex; align-items: center; justify-content: center; } </style>