| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278 |
- <template>
- <view class=" ">
- <view class=" page dis f-c" id="panelcanvas" style="position: relative;">
- <image class="back" :src="detailbackimg" mode=""></image>
- <uni-NavBar headerTitle="订单详情" background="transparent" :isSlot="false" :rightSlot="true">
- <template #rightSlot>
- <view class="dis f-c a-c mr-3" @click="getWechatCustomer">
- <image src="/static/icon/customerService.png" mode="" style="width: 48rpx;height: 48rpx;">
- </image>
- <text style="font-size: 20rpx;color: #333;">客服</text>
- </view>
- <view class="dis f-c a-c " @click="share">
- <image src="/static/icon/share.png" mode="" style="width: 48rpx;height: 48rpx;"></image>
- <text style="font-size: 20rpx;color: #333;">分享</text>
- </view>
- </template>
- </uni-NavBar>
- <view class="statusFeedbackArea" v-for="(item,index) in statusList" :key="index"
- v-if="item.value==orderStatus">
- <view class="dis f-c a-start">
- <text>{{item.text}}</text>
- <div class="dis a-c mt-2" v-if="orderStatus==3">
- <text class="text mr-2">核保时间可能较长,如长时间无结果</text>
- <u-icon name="reload" color="#333" size="18"></u-icon>
- <text style="font-size: 28rpx;" @click="refreshUnderwriting">点此刷新</text>
- </div>
- <div class="dis a-c mt-2" v-if="orderStatus==4">
- <text class="text mr-2">已经完成支付</text>
- <u-icon name="reload" color="#333" size="18"></u-icon>
- <text style="font-size: 28rpx;" @click="refreshPayment">点此刷新</text>
- </div>
- </view>
- </view>
- <view class="details-content">
- <view class="company-header dis a-c j-s">
- <view class="dis a-c">
- <image class="logo mr-1" :src="insCompanyVo.logo" mode=""></image>
- <text class="title">{{companyName}}</text>
- </view>
- <view class="price dis a-c">
- <text class="mr-1">保费合计</text>
- <text>¥{{costs.sumPremium}}</text>
- </view>
- </view>
- <view class="contentTabs">
- <u-tabs :list="contentTabslist" @click="click" :activeStyle="{color:'#333',fontWeight:'bold'}"
- :inactiveStyle="{color:'#999'}" :current="current" :scrollable="false" lineColor="#FDE935"
- lineWidth="60rpx"></u-tabs>
- <view class="scroll-content">
- <template v-if="current==0">
- <carViewVue title="车辆信息" :info="carInfoVo" :infoB="carInfoVo1"></carViewVue>
- <userViewVue title="车主信息" :info="ownersInfo"
- :headerStyle="{background:'linear-gradient( 180deg, #FFF8F8 0%, #FFFFFF 100%)'}">
- </userViewVue>
- <userViewVue title="投保人信息" :info="policyHolderInfo"
- :headerStyle="{background:'linear-gradient( 180deg, #F3F9FF 0%, #FFFFFF 100%)'}">
- </userViewVue>
- <userViewVue title="被保人信息" :info="insuredPersonInfo"
- :headerStyle="{background:'linear-gradient( 180deg, #F9F6FF 0%, #FFFFFF 100%)'}">
- </userViewVue>
- </template>
- <insuranceInfoVue v-if="current==1" @viewDiscount="viewDiscountShow=true"
- @vvTaxDetails="vvTaxDetailsShow=true" costs :ciRiskInfoVo="ciRiskInfoVo"
- :biRiskInfoVo="biRiskInfoVo" :costs="costs" :policy="policy" :scoreVo="scoreVo"
- :accidentalDrivings="accidentalDrivings" :kindInfoVo="kindInfoVo"
- :vehicleAndVesselTaxVo="vehicleAndVesselTaxVo" :insFeeOrders="insFeeOrders"
- :costRatio="costRatio" :car_tax_codeoptions="car_tax_codeoptions"
- @updateDiscount="updateDiscountShow=true" @customerRightsDetail="customerRightsDetail">
- </insuranceInfoVue>
- <template v-if="current==2">
- <imageDataVue @previewImage="previewImage" @delCheckImage="delCheckImage"
- :imageCollection="imageCollection" @chooseImage="chooseImage"></imageDataVue>
- </template>
- </view>
- </view>
- </view>
- </view>
- <view class="footer dis ">
- <view class="btn dis a-c j-c " @click="modificationPlan" v-if="['1'].includes(orderStatus)">
- <text>修改方案</text>
- </view>
- <view class="btn dis a-c j-c " @click="toCarInfo" v-if="['1'].includes(orderStatus)">
- <text>修改信息</text>
- </view>
- <view class="btn dis a-c j-c" v-if="['1'].includes(orderStatus)" @click="underwritingShow = true">
- <text>立即核保</text>
- </view>
- <view class="btn dis a-c j-c " v-if="['3'].includes(orderStatus)">
- <text>删除订单</text>
- </view>
- <view class="btn dis a-c j-c " v-if="['4'].includes(orderStatus)" @click="revokePaymentCode">
- <text>撤销支付码</text>
- </view>
- <view class="btn dis a-c j-c" @tap="payNow" v-if="['4'].includes(orderStatus)">
- <text>立即支付</text>
- </view>
- <view class="btn dis a-c j-c" v-if="['7'].includes(orderStatus)">
- <uni-cloudPopup text="更多操作" color="#1f1f1f" size="17" :buttons="['修改方案','修改信息','删除订单']"
- @click="cloudPopupChange"></uni-cloudPopup>
- </view>
- <view class="btn dis a-c j-c " v-if="['8','7'].includes(orderStatus)">
- <text>重新报价</text>
- </view>
- <view class="btn dis a-c j-c " v-if="['7'].includes(orderStatus)" @click="underwritingShow = true">
- <text>重新核保</text>
- </view>
- <view class="btn dis a-c j-c " @click="ePolicy" v-if="['5'].includes(orderStatus)">
- <text>下载电子保单</text>
- </view>
- </view>
- <uni-Popup :show="viewDiscountShow" @close='viewDiscountShow=false' headerTitle="商业险折扣系数" overflow="auto"
- :headerStyle="{fontSize:'36rpx'}" maxHeight="580rpx">
- <template #content>
- <view class="viewDiscount">
- <view class="dis a-c j-s top mb-2">
- <text>313213</text>
- <text>321321321</text>
- </view>
- <view class="center">
- <view class="dis a-c j-s">
- <text>NCD系数</text>
- <text>0.8</text>
- </view>
- <view class="dis a-c j-s">
- <text>交通违法系数</text>
- <text>0.8</text>
- </view>
- <view class="dis a-c j-s">
- <text>自主定价系数</text>
- <text>0.8</text>
- </view>
- <view class="dis a-c j-s">
- <text>自主渠道系数</text>
- <text>0.8</text>
- </view>
- </view>
- <text class="formula">商业险折扣系数 = NCD系数 * 交通违法系数 * 自主定价系数 * 自主渠道系数。</text>
- </view>
- </template>
- </uni-Popup>
- <uni-Popup :show="updateDiscountShow" @close="updateDiscountShow=false" :closeable="false"
- headerTitle="商业险折扣系数修改" overflow="auto" :headerStyle="{fontSize:'36rpx'}" maxHeight="980rpx" mode="center"
- width="90%">
- <template #content>
- <view class="updateDiscount">
- <text class="text ">商业险折扣系数和自主定价系数只能修改一个,修改后系统会重新报价,计算修改后的保费</text>
- <u-radio-group v-model="value" placement="column" class="mt-3 " activeColor="#FDE935"
- iconColor='#333'>
- <u-radio label="明月几时有" style="align-items: baseline;">
- <view class="dis f-c " style="width: 100%;">
- <view class="dis a-start input mb-1">
- <text>商业险折扣系数</text>
- <text>(0.8521252)</text>
- </view>
- <u--input placeholder="请输入内容" clearable></u--input>
- </view>
- </u-radio>
- <u-radio label="明月几时有" class="mt-3" style="align-items: baseline;">
- <view class="dis f-c " style="width: 100%;">
- <view class="dis a-c input mb-1">
- <text>自主定价系数</text>
- <text>(0.8)</text>
- </view>
- <u--input placeholder="输入1—100的数字" clearable></u--input>
- </view>
- </u-radio>
- </u-radio-group>
- <view class="btn dis mt-3">
- <u-button class="mr-2" type="primary" shape="circle" :plain="true" text="关闭" color="#DDDDDD"
- @click="updateDiscountShow=false" :customStyle="{color:'#333'}"></u-button>
- <u-button type="primary" shape="circle" text="确定" color="#FDE935"
- :customStyle="{color:'#1f1f1f'}"></u-button>
- </view>
- </view>
- </template>
- </uni-Popup>
- <!-- 右上角分享功能 -->
- <uni-share :show="shareShow" @close="shareShow=false" @weixin="weixin" @userSmsShare="userSmsShare"
- @copyLink="copyLink" @saveToAlbum="saveToAlbum" @closeModal="closeShareModal">
- </uni-share>
- <!-- 确认核保提示 -->
- <uni-PopupMessage :show="underwritingShow" @close='underwritingShow=false' @cancelEvent='underwritingShow=false'
- @confirmEvent="underwritingEvent">
- <template #content>
- <view class="dis a-c j-c ">
- 是否确认提交核保
- </view>
- </template>
- </uni-PopupMessage>
- <!-- 取消核保提示 -->
- <uni-PopupMessage :show="cancelUnderwritingShow" @close='cancelUnderwritingShow=false'
- @cancelEvent='cancelUnderwritingShow=false' @confirmEvent="cancelUnderwritingEvent">
- <template #content>
- <view class="dis a-c j-c ">
- 您将取消核保,请确认是否继续该操作
- </view>
- </template>
- </uni-PopupMessage>
- <!-- 删除订单提示 -->
- <uni-PopupMessage :show="deleteOrderShow" @close='deleteOrderShow=false' @cancelEvent='deleteOrderEvent'
- headerTitle="删除订单确认" @confirmEvent="deleteOrderShow=false" cancelText="确认删除" confirmText="关闭">
- <template #content>
- <view class="dis a-c j-c ">
- 删除订单后,订单核保请求将取消,订单以及报价记录将清楚不可见,是否确认继续操作
- </view>
- </template>
- </uni-PopupMessage>
- <!-- 撤销支付码提示 -->
- <uni-PopupMessage :show="revokePaymentShow" @close='revokePaymentShow=false' @cancelEvent='revokePaymentEvent'
- headerTitle="撤销支付码" @confirmEvent="revokePaymentShow=false" cancelText="确认撤销" confirmText="关闭">
- <template #content>
- <view class="dis a-c j-c ">
- 撤销支付码后,订单将关闭,不再支持进行任何操作,请确认是否撤销?
- </view>
- </template>
- </uni-PopupMessage>
- <uni-Popup :show="vvTaxDetailsShow" @close='vvTaxDetailsShow=false' headerTitle="车船税" overflow="auto"
- maxHeight="580rpx">
- <template #content>
- <view class="vvTaxDetails-cell dis f-c ">
- <view class="cell-item dis a-c j-s">
- <text>车船税</text>
- <text>{{taxRelifFlagName}}</text>
- </view>
- <template>
- <view class="cell-item dis a-c j-s"
- v-if="vehicleAndVesselTaxVo.taxRelifFlag == 2 || vehicleAndVesselTaxVo.taxRelifFlag == 3">
- <text>减免税凭证号</text>
- <text>{{vehicleAndVesselTaxVo.extendChar2}}</text>
- </view>
- <view class="cell-item dis a-c j-s" v-if="vehicleAndVesselTaxVo.taxRelifFlag == 4">
- <text>完税凭证号</text>
- <text>{{vehicleAndVesselTaxVo.paidFreeCertificate}}</text>
- </view>
- <view class="cell-item dis a-c j-s"
- v-if="vehicleAndVesselTaxVo.taxRelifFlag == 2 || vehicleAndVesselTaxVo.taxRelifFlag == 3">
- <text>减免税原因</text>
- <text>{{vehicleAndVesselTaxVo.relifReason}}</text>
- </view>
- <view class="cell-item dis a-c j-s" v-if="vehicleAndVesselTaxVo.taxRelifFlag == 3">
- <text>减税比例</text>
- <text>{{vehicleAndVesselTaxVo.taxRelief}}</text>
- </view>
- <view class="cell-item dis a-c j-s" v-if="vehicleAndVesselTaxVo.taxRelifFlag !=1">
- <text>税务机关代码</text>
- <text>{{vehicleAndVesselTaxVo.taxComCode}}</text>
- </view>
- <view class="cell-item dis a-c j-s" v-if="vehicleAndVesselTaxVo.taxRelifFlag !=1">
- <text>税务机关名称</text>
- <text>{{vehicleAndVesselTaxVo.taxComName}}</text>
- </view>
- <view class="cell-item dis a-c j-s" v-if="vehicleAndVesselTaxVo.taxRelifFlag ==4">
- <text>完税凭证填发日期</text>
- <text>{{vehicleAndVesselTaxVo.taxDocumentDate}}</text>
- </view>
- <view class="cell-item dis a-c j-s" v-if="vehicleAndVesselTaxVo.taxRelifFlag ==4">
- <text>完税凭证地区</text>
- <text>{{vehicleAndVesselTaxVo.taxPaidAreaCode}}</text>
- </view>
- </template>
- </view>
- </template>
- </uni-Popup>
- <!-- 图片预览组件 -->
- <previewImage ref="previewImage" :opacity="0.8" :circular="true" :imgs="previewImgs"></previewImage>
- <u-loading-page :loading="loading" style="z-index: 999999;" loading-text="核保中" bg-color="rgb(0 ,0 ,0 ,0.4)"
- color="#fff"></u-loading-page>
- <!-- 自定义加载动画 -->
- <global-loading :show="loadingShow" :text="loadingText"></global-loading>
- </view>
- </template>
- <script>
- import store from '@/store';
- import carViewVue from './modules/carView.vue'; //车辆信息
- import userViewVue from './modules/userView.vue'; //人员信息
- import insuranceInfoVue from './modules/insuranceInfo.vue'; //投保人信息
- import imageDataVue from './modules/imageData.vue'; //影像信息
- import previewImage from '@/components/previewImage/previewImage.vue'; //引用插件
- import {
- pathToBase64,
- base64ToPath
- } from '@/common/pdf.js'
- import {
- turnBase64Image,
- dictionaryMatch
- } from '@/plugins/utils.js';
- export default {
- components: {
- carViewVue,
- userViewVue,
- insuranceInfoVue,
- imageDataVue,
- previewImage
- },
- data() {
- return {
- loadingShow: false,
- loadingText: '加载中', //加载提示文字
- loading: false,
- insCompanyVo: {}, //保险公司信息
- vvTaxDetailsShow: false, //车船税详情弹窗
- //车船税form
- vehicleAndVesselTaxVo: {
- taxRelifFlag: "1", //类型
- identifyNumber: "", //纳税人识别号
- taxpayerIdentifier: "01", //纳税人证件类型
- taxpayerName: "", //纳税人名称
- extendChar2: "", //减免税凭证号
- paidFreeCertificate: "", //完税凭证号
- relifReason: "", //减免税原因
- taxComCode: "", //税务机关代码
- taxComName: "", ///税务机关名称
- taxDocumentDate: "", //完税日期
- taxPaidAreaCode: "", //完税凭证地区代码
- taxRelief: "", //减税比例
- },
- underwritingShow: false, //确认核保弹窗
- cancelUnderwritingShow: false, //取消核保弹窗
- deleteOrderShow: false, //删除订单弹窗
- revokePaymentShow: false, //撤销支付弹窗
- underwritingTitle: '提示',
- underwritingContent: '',
- previewImgs: [], //图片预览数组
- ordersNo: "",
- quoteNo: "",
- costs: {},
- companyName: "",
- policy: {}, //保单号信息
- ciRiskInfoVo: {}, //交强险
- biRiskInfoVo: {}, //商业险
- kindInfoVo: [], //险别信息
- accidentalDrivings: [], //驾意险
- carInfoVo: {}, //车辆信息
- carInfoVo1: {}, //车辆信息
- ownersInfo: {}, //车主信息
- policyHolderInfo: {}, //投保人信息
- insuredPersonInfo: {}, //被保人信息
- scoreVo: {}, //保费因素
- insFeeOrders: {}, //费用信息
- costRatio: {}, //费用比例信息
- insOrderRightsInfoVo: {}, //权益信息
- order: {},
- detailbackimg: "", //背景图
- value: "",
- posterUrl: "", //页面截图
- shareShow: false, //分享弹窗
- viewDiscountShow: false, //折扣系数弹窗查看
- updateDiscountShow: false, //折扣系数修改弹窗
- contentTabslist: [{
- name: '基本信息'
- }, {
- name: '投保信息'
- }, {
- name: '影像资料'
- }],
- current: 0,
- orderStatus: '',
- statusList: [{
- label: '订单已提交',
- value: 0,
- text: "订单已完成报价"
- },
- {
- label: '待核保',
- value: 1,
- text: "订单已完成报价"
- },
- {
- label: '核保中',
- value: 2,
- text: "订单核保中,请耐心等待"
- },
- {
- label: '人工处理',
- value: 3,
- text: "订单核保中,请耐心等待"
- },
- {
- label: '待缴费',
- value: 4,
- text: "订单核保已通过,请尽快支付!"
- },
- {
- label: '已承保',
- value: 5,
- text: "订单已承保"
- },
- {
- label: '报价失败',
- value: 6,
- text: ""
- },
- {
- label: '核保失败',
- value: 7,
- text: "核保不通过"
- },
- {
- label: '已关闭',
- value: 8,
- text: "订单已关闭"
- },
- ],
- //字典
- car_nature_codeoptions: [], //使用性质
- vehicle_use_code01options: [], //营业
- vehicle_use_code02options: [], //非营业
- car_kind_codeoptions: [], //车辆种类
- energy_type_codeoptions: [], //能源类型
- car_type_codeoptions: [], //车辆类型
- car_tax_codeoptions: [], //车船税类型
- taxpayerIdentifieroptions: [], //车船税类型
- car_tax_reason_codeoptions: [], //减免税原因
- imgList1: [],
- imgList2: [],
- imgList3: [],
- imgList4: [],
- imgList5: [],
- imgList6: [],
- imgList7: [],
- imgList8: [],
- carImageListId: [],
- ownerImageListId: [],
- policyHolderImageListId: [],
- insuredPersonImageListId: [],
- imageCollection: {}, //影像集合
- id: "",
- cnName: "",
- quotableCompanyList: [],
- }
- },
- async onLoad(options) {
- this.loadingShow = true;
- try {
- if (options) {
- await this.getDicType("car_tax_code"); //车船税类型
- await this.getDicType("taxpayerIdentifier"); //纳税人证件类型
- await this.getDicType("car_tax_reason_code"); //减免税原因代码
- await this.getDicType("car_nature_code"); //使用性质
- await this.getDicType("vehicle_use_code", "01"); //营业
- await this.getDicType("vehicle_use_code", "02"); //非营业
- await this.getDicType("car_kind_code"); //车辆种类
- await this.getDicType("energy_type_code"); //能源类型
- await this.getDicType("car_type_code"); //车辆类型
- let res = await this.$http.get('/supplementOrder/getOrderDetail?ordersNo=' + options.ordersNo);
- if (res.code == 200) {
- this.insCompanyVo = res.data.insCompanyVo[0]; //保险公司信息
- this.orderStatus = res.data.order.orderStatus; //订单状态
- this.companyName = res.data.order.companyName; //保险公司简称
- this.ordersNo = res.data.order.ordersNo; //订单号
- this.quoteNo = res.data.order.quoteNo; //报价号
- this.ciRiskInfoVo = res.data.ciRiskInfoVo; //交强大类
- this.biRiskInfoVo = res.data.biRiskInfoVo; //商业大类
- this.costs = res.data.costs; //报价金额信息
- this.policy = res.data.policy; //保单号信息
- this.kindInfoVo = res.data.kindInfoVo; //商业险险别
- this.accidentalDrivings = res.data.accidentalDrivings; //驾意险
- this.carInfoVo = res.data.carInfoVo; //车辆信息
- this.ownersInfo = res.data.ownersInfo; //车主信息
- this.policyHolderInfo = res.data.policyHolderInfo; //投保人信息
- this.insuredPersonInfo = res.data.insuredPersonInfo; //被保人信息
- this.scoreVo = res.data.scoreVo; //保费因素
- this.insFeeOrders = res.data.insFeeOrders; //费用信息
- this.costRatio = res.data.costRatio; //比例信息
- this.insOrderRightsInfoVo = res.data.insOrderRightsInfoVo; //权益信息
- this.vehicleAndVesselTaxVo = res.data.vehicleAndVesselTaxVo; //车船税信息
- this.order = res.data.order;
- // 去掉this.kindInfoVo中的交强险
- this.kindInfoVo = this.kindInfoVo.filter(item => item.kindCode != 'J1')
- this.carInfoVo1.carNatureCode = dictionaryMatch(this.car_nature_codeoptions, res
- .data.carInfoVo
- .carNatureCode)
- if (res.data.carInfoVo.carNatureCode == '01') {
- this.carInfoVo1.vehicleUseCode = dictionaryMatch(this
- .vehicle_use_code01options,
- res.data
- .carInfoVo
- .vehicleUseCode)
- } else {
- this.carInfoVo1.vehicleUseCode = dictionaryMatch(this
- .vehicle_use_code02options,
- res.data
- .carInfoVo
- .vehicleUseCode)
- }
- this.carInfoVo1.carTypeCode = dictionaryMatch(this.car_type_codeoptions, res.data
- .carInfoVo
- .carTypeCode)
- this.carInfoVo1.carKindCode = dictionaryMatch(this.car_kind_codeoptions, res.data
- .carInfoVo
- .carKindCode)
- this.carInfoVo1.energyTypeCode = dictionaryMatch(this.energy_type_codeoptions, res
- .data
- .carInfoVo
- .energyTypeCode)
- if (this.quoteNo) {
- this.imageEcho(this.quoteNo) // 影像获取完毕
- }
- }
- this.loadingShow = false;
- }
- } catch (error) {
- this.loadingShow = false;
- }
- },
- async mounted() {
- this.detailbackimg = await turnBase64Image('/static/image/detailback.png');
- },
- computed: {
- //获取车船税类型
- taxRelifFlagName() {
- let info = this.car_tax_codeoptions.find(ele => ele.value === this.vehicleAndVesselTaxVo.taxRelifFlag)
- return info?.description;
- }
- },
- methods: {
- // 权益详情
- customerRightsDetail() {
- let params = {
- ownersInfo: this.ownersInfo, //车主
- policyHolderInfo: this.policyHolderInfo, //投保人
- insuredPersonInfo: this.insuredPersonInfo, //被保人
- insFeeOrders: this.insFeeOrders,
- ordersNo: this.ordersNo,
- insOrderRightsInfoVo: this.insOrderRightsInfoVo,
- }
- uni.navigateTo({
- url: '/pages/reward/customerBenefit?info=' + JSON.stringify(params) + '&readOnly=1'
- })
- },
- //更多操作
- cloudPopupChange(index) {
- switch (index) {
- case 0: //修改方案
- this.modificationPlan();
- break;
- case 1: //修改信息
- this.toCarInfo();
- break;
- case 2: //删除订单
- break;
- default:
- }
- },
- //撤销二维码
- async revokePaymentCode() {
- let res = await this.$http.post('/order/qrCode/destroyQrCode', {
- orderNo: this.ordersNo,
- })
- if (res.code == 200) {
- uni.showToast({
- icon: 'none',
- title: '撤销成功'
- })
- }
- },
- //修改信息
- toCarInfo() {
- uni.navigateTo({
- url: '/pages/quote/quoteInfo',
- success: (res) => {
- res.eventChannel.emit(
- "acceptData", {
- carInfo: this
- .carInfoVo, //车辆信息
- ownerInfo: this
- .ownersInfo, //车主信息
- policyHolderInfo: this
- .policyHolderInfo, //投保人信息
- insuredPersonInfo: this
- .insuredPersonInfo, //被保人信息
- carImageListId: this
- .carImageListId, //车辆
- ownerImageListId: this
- .ownerImageListId, //车主
- policyHolderImageListId: this
- .policyHolderImageListId, //投保
- insuredPersonImageListId: this
- .insuredPersonImageListId, //被保人
- productId: this.order.productId, //险种id
- productName: this.order.productsName, //险种名称
- quoteno: this.quoteNo, //报价号
- })
- }
- }, "navigateTo", true);
- },
- //修改方案
- modificationPlan() {
- uni.navigateTo({
- url: '/pages/quote/chooseOption',
- success: (res) => {
- res.eventChannel.emit("acceptData", {
- params: {
- companyId: this.insCompanyVo.id,
- productId: this.order.productId,
- },
- nameSimple: this.insCompanyVo.nameSimple,
- cnName: this.insCompanyVo.cnName,
- jqstartDate: this.ciRiskInfoVo?.startDate,
- jqendDate: this.ciRiskInfoVo?.endDate,
- systartDate: this.biRiskInfoVo?.startDate,
- syendDate: this.biRiskInfoVo?.endDate,
- productName: this.order.productsName,
- quotableCompanyList: this.quotableCompanyList,
- identifyNumber: this.policyHolderInfo.identifyNumber,
- taxpayerName: this.policyHolderInfo.name,
- })
- }
- }, "navigateTo", true);
- },
- //跳转微信客服
- async getWechatCustomer() {
- let res = await this.$http.get('/organization/wechat/customerService/manage/find/link')
- if (res.code == 200) {
- if (plus) { // 确保在App环境下
- plus.runtime.openURL(res.data);
- }
- }
- },
- //操作类型匹配
- matchOperationType(optType) {
- const Operation = {
- 0: '订单创建',
- 1: '报价',
- 2: '补传影像',
- 3: '调整特约',
- 4: '修改折扣系数',
- 5: '核保',
- 6: '获取支付码',
- 7: '撤销支付码',
- 8: '下载电子保单',
- 9: '同步订单',
- 10: '订单编辑',
- }
- return Operation[optType] || ''
- },
- //订单轨迹展开收起
- toggleCollapse(item) {
- item.isCollapsed = !item.isCollapsed
- },
- //确认核保
- async underwritingEvent() {
- this.underwritingShow = false;
- this.loading = true;
- let images = await this.$http.post('/unify/order/imagesUpload', {
- order: this.order,
- });
- if (images.code == '200') {
- let underwriting = await this.$http.post('/unify/order/underwriting', {
- order: {
- ordersNo: this.ordersNo,
- }
- });
- if (underwriting.code == '200') {
- let res = await this.$http.get('/supplementOrder/getOrderDetail?ordersNo=' + this.id);
- if (res.code == '200') {
- this.orderStatus = res.data.order.orderStatus; //订单状态
- }
- this.loading = false;
- uni.showToast({
- icon: 'none',
- title: '核保成功'
- })
- } else {
- this.loading = false;
- uni.showToast({
- icon: 'none',
- title: underwriting.msg
- })
- }
- } else {
- this.loading = false;
- uni.showToast({
- icon: 'none',
- title: images.msg
- })
- }
- },
- //取消核保
- cancelUnderwritingEvent() {
- //
- },
- //删除订单
- deleteOrderEvent() {
- //
- },
- // 撤销支付码
- revokePaymentEvent() {
- //
- },
- //核保状态刷新
- async refreshUnderwriting() {
- let OrderStatus = await this.$http.post('/unify/order/getOrderStatus', {
- order: {
- ordersNo: this.ordersNo,
- },
- });
- if (OrderStatus.code == '200') {
- let res = await this.$http.get('/supplementOrder/getOrderDetail?ordersNo=' + this.ordersNo);
- if (res.code == '200') {
- this.orderStatus = res.data.order.orderStatus; //订单状态
- }
- }
- },
- //支付状态刷新
- async refreshPayment() {
- let OrderStatus = await this.$http.post('/unify/order/getOrderStatus', {
- order: {
- ordersNo: this.ordersNo,
- },
- });
- if (OrderStatus.code == '200') {
- let res = await this.$http.get('/supplementOrder/getOrderDetail?ordersNo=' + this.ordersNo);
- if (res.code == '200') {
- this.orderStatus = res.data.order.orderStatus; //订单状态
- }
- }
- },
- //影像预览
- previewImage(e, type) {
- this.previewImgs = this[type];
- var current = e;
- this.$refs.previewImage.open(current); // 传入当前选中的图片地址或序号
- },
- //删除图片
- delCheckImage(param, IdList, srcList) {
- this[IdList].map((ele, index) => {
- if (param.imageId === ele.imageId) {
- this[IdList].splice(index, 1);
- }
- return ele;
- });
- this[srcList].map((ele, index) => {
- if (param.imageId === ele.imageId) {
- this[srcList].splice(index, 1);
- }
- return ele;
- });
- },
- //影像查询
- async imageEcho(quotenos) {
- this.imgList1 = [];
- this.imgList2 = [];
- this.imgList3 = [];
- this.imgList4 = [];
- this.imgList5 = [];
- this.imgList6 = [];
- this.imgList7 = [];
- this.imgList8 = [];
- let res = await this.$http.get('/order/taskImages/selectByQuoteNo?quoteNo=' + quotenos);
- if (res.code == "200") {
- res.data.images.forEach((keys) => {
- if (keys.downloadUrl) {
- switch (keys.imageType) {
- case 'C01':
- this.carImageListId.push({
- imageBase64List: [{
- imageId: keys.imageId
- }],
- imageCode: keys.imageType,
- })
- this.imgList1.push(keys);
- break;
- case 'D01':
- this.carImageListId.push({
- imageBase64List: [{
- imageId: keys.imageId
- }],
- imageCode: keys.imageType,
- })
- this.imgList2.push(keys);
- break;
- case 'C02':
- this.ownerImageListId.push({
- imageBase64List: [{
- imageId: keys.imageId
- }],
- imageCode: keys.imageType,
- })
- this.imgList3.push(keys);
- break;
- case 'D02':
- this.ownerImageListId.push({
- imageBase64List: [{
- imageId: keys.imageId
- }],
- imageCode: keys.imageType,
- })
- this.imgList4.push(keys);
- break;
- case 'C03':
- this.policyHolderImageListId.push({
- imageBase64List: [{
- imageId: keys.imageId
- }],
- imageCode: keys.imageType,
- })
- this.imgList5.push(keys);
- break;
- case 'D03':
- this.policyHolderImageListId.push({
- imageBase64List: [{
- imageId: keys.imageId
- }],
- imageCode: keys.imageType,
- })
- this.imgList6.push(keys);
- break;
- case 'C04':
- this.insuredPersonImageListId.push({
- imageBase64List: [{
- imageId: keys.imageId
- }],
- imageCode: keys.imageType,
- })
- this.imgList7.push(keys);
- break;
- case 'D04':
- this.insuredPersonImageListId.push({
- imageBase64List: [{
- imageId: keys.imageId
- }],
- imageCode: keys.imageType,
- })
- this.imgList8.push(keys);
- break;
- default:
- break;
- }
- }
- });
- this.imageCollection = {
- imgList1: this.imgList1,
- imgList2: this.imgList2,
- imgList3: this.imgList3,
- imgList4: this.imgList4,
- imgList5: this.imgList5,
- imgList6: this.imgList6,
- imgList7: this.imgList7,
- imgList8: this.imgList8,
- }
- }
- },
- //数据字典
- async getDicType(type, vehicle) {
- if (vehicle) {
- let res = await this.$http.get(`/dict/get?dictCode=${type}&parentValue=${vehicle}`);
- this[type + vehicle + "options"] = res.data;
- } else {
- let res = await this.$http.get('/dict/get?dictCode=' + type);
- this[type + "options"] = res.data;
- }
- },
- //去支付
- payNow() {
- uni.navigateTo({
- url: '/pages/quote/paymentCode?ordersNo=' + this.ordersNo,
- })
- },
- //跳转电子保单页面
- ePolicy() {
- uni.navigateTo({
- url: '/pages/quote/ePolicy?ordersNo=' + this.ordersNo,
- })
- },
- //分享微信
- weixin() {
- uni.share({
- provider: "weixin",
- scene: "WXSceneSession",
- type: 0,
- href: "http://uniapp.dcloud.io/",
- title: "京AG***12025年的车险报价",
- summary: "平安车险报价完成,保费:2563元,点击查看详情",
- imageUrl: "/static/image/zgcx.png",
- success: function(res) {},
- fail: function(err) {}
- });
- },
- //短信分享
- userSmsShare() {
- var msg = plus.messaging.createMessage(plus.messaging.TYPE_SMS);
- msg.to = ["13546347757"]; //投保人手机号
- msg.body =
- `【掌柜车险】尊敬的【京NH***7】车主,平安保险2025年车险报价:4562.23元;联系人:修封 18805520001,点击链接查看详情或电话咨询联系人 https://app.axure.cloud/app/project/jl0lf9/`;
- plus.messaging.sendMessage(msg);
- },
- //复制链接
- copyLink() {
- uni.setClipboardData({
- data: '2321321321321', //要被复制的内容
- success: () => { //复制成功的回调函数
- uni.showToast({ //提示
- icon: 'none',
- title: '链接已复制'
- })
- }
- });
- },
- //取消
- closeShareModal() {
- this.shareShow = false;
- },
- //保存相册
- saveToAlbum() {
- base64ToPath(this.posterUrl)
- .then(path => {
- uni.saveImageToPhotosAlbum({ //保存图片到系统相册。
- filePath: path, //图片文件路径
- success: function() {
- uni.showToast({
- title: '已保存到相册',
- icon: 'none',
- });
- },
- fail: function(e) {
- uni.showToast({
- title: '图片保存失败',
- icon: 'none',
- });
- }
- });
- })
- },
- //页面截图转路径
- receiveRenderData(val) {
- this.posterUrl = val.replace(/[\r\n]/g, ''); // 去除base64位中的空格
- },
- showLoading() {
- uni.showLoading({
- title: '正在生成图片'
- });
- },
- hideLoading() {
- uni.hideLoading();
- },
- //右上角分享icon
- share() {
- this.shareShow = true;
- },
- click(item) {
- this.current = item.index;
- },
- //影像资料上传
- async chooseImage(type, imageIdList, imgurl) {
- let [chooseImageErr, chooseImageRes] = await uni.chooseImage({
- count: 1,
- sizeType: ['compressed']
- });
- if (chooseImageRes) {
- uni.uploadFile({
- url: this.$base.baseUrl + '/file/upload',
- filePath: chooseImageRes.tempFilePaths[0],
- name: "file",
- formData: {
- 'type': 'image',
- },
- header: {
- Authorization: store.state.token,
- system_code: store.state.system_code ? store.state.system_code : ''
- },
- success: async (imgRes) => {
- let data = JSON.parse(imgRes.data);
- if (data.code == "200") {
- if (this[imageIdList].some(v => v.imageType == type)) {
- this[imageIdList].map(val => {
- if (val.imageType == type) {
- val.imageId = data.data.id;
- }
- })
- } else {
- this[imageIdList].push({
- imageId: data.data.id,
- imageType: type,
- })
- }
- this[imgurl].push(data.data)
- this.modificationFlag = true;
- }
- }
- });
- }
- },
- }
- }
- </script>
- <script module="canvasImage" lang="renderjs">
- import html2canvas from 'html2canvas'
- export default {
- data() {
- return {
- }
- },
- mounted() {
- // #ifdef APP-PLUS
- setTimeout(() => {
- this.canvasImage.generateImage()
- }, 1000);
- // #endif
- },
- methods: {
- generateImage() {
- setTimeout(() => {
- this.$ownerInstance.callMethod('showLoading')
- const dom = document.getElementById('panelcanvas') // 需要生成图片内容的 dom 节点
- html2canvas(dom, {
- width: dom.clientWidth, //dom 原始宽度
- height: dom.clientHeight,
- scrollY: 0, // html2canvas默认绘制视图内的页面,需要把scrollY,scrollX设置为0
- scrollX: 0,
- useCORS: true, //支持跨域
- // allowTaint: false,
- scale: 2, // 设置生成图片的像素比例,默认是1,如果生成的图片模糊的话可以开启该配置项
- }).then((canvas) => {
- // 生成成功
- this.$ownerInstance.callMethod('hideLoading')
- this.$ownerInstance.callMethod('receiveRenderData', canvas.toDataURL('image/png'))
- }).catch(err => {
- // 生成失败 弹出提示弹窗
- this.$ownerInstance.callMethod('_errAlert', `【生成图片失败,请重试】${err}`)
- })
- }, 300)
- }
- },
- }
- </script>
- <style lang="scss" scoped>
- /* 基础设置 */
- page {
- height: 100vh;
- background-color: #f8f8f8;
- }
- .page {
- height: 100vh;
- position: relative;
- background-color: #f8f8f8;
- }
- /* 背景图 */
- .back {
- width: 100%;
- height: 492rpx;
- position: absolute;
- top: 0;
- left: 0;
- z-index: 0;
- }
- /* 状态区域 */
- .statusFeedbackArea {
- position: relative;
- padding: 20rpx 30rpx 20rpx;
- font-size: 36rpx;
- color: #333;
- font-weight: bold;
- z-index: 1;
- background: transparent;
- .text {
- font-size: 28rpx;
- color: rgba(51, 51, 51, 0.7);
- font-weight: 500;
- }
- }
- /* 主要内容容器 */
- .details-content {
- flex: 1;
- position: relative;
- background: rgba(255, 255, 255, 0.9);
- border-radius: 40rpx 40rpx 0 0;
- padding: 30rpx;
- box-sizing: border-box;
- backdrop-filter: blur(100rpx);
- display: flex;
- flex-direction: column;
- overflow: hidden;
- z-index: 2;
- /* 头部样式 */
- .company-header {
- .logo {
- width: 40rpx;
- height: 40rpx;
- }
- .title {
- font-weight: bold;
- color: #333;
- font-size: 32rpx;
- }
- .price {
- text:first-child {
- font-size: 28rpx;
- color: #333;
- }
- text:last-child {
- font-size: 32rpx;
- color: #FF540A;
- font-weight: bold;
- }
- }
- }
- /* 选项卡容器 */
- .contentTabs {
- flex: 1;
- display: flex;
- flex-direction: column;
- height: 100%;
- background: #FFFFFF;
- box-shadow: 0rpx 0rpx 16rpx 0rpx rgba(0, 0, 0, 0.05);
- border-radius: 20rpx 20rpx 10rpx 10rpx;
- margin-top: 28rpx;
- /* 滚动区域 */
- .scroll-content {
- flex: 1;
- overflow-y: auto;
- padding: 20rpx 0 200rpx;
- /* 增加底部留白 */
- box-sizing: border-box;
- /* 确保padding计入高度 */
- }
- }
- }
- //底部样式
- .footer {
- position: fixed;
- bottom: 0;
- left: 0;
- background: linear-gradient(0, #FFFFFF 0%, rgba(255, 254, 245, 0.8) 100%);
- backdrop-filter: blur(40rpx);
- z-index: 9;
- width: 100%;
- padding: 25rpx 20rpx;
- box-sizing: border-box;
- .btn {
- color: #1f1f1f;
- font-size: 34rpx;
- background: rgba(253, 233, 53, 0.2);
- border-radius: 58rpx 58rpx 58rpx 58rpx;
- padding: 19rpx 0;
- box-sizing: border-box;
- border: 1rpx solid #FDE935;
- width: 100%;
- margin: 0 10rpx;
- }
- .btn:last-child {
- background: #FDE935;
- }
- }
- //折扣系数查看弹窗
- .viewDiscount {
- padding: 40rpx;
- box-sizing: border-box;
- .top {
- font-size: 32rpx;
- color: #333;
- font-weight: bold;
- }
- .center {
- background: #FAFAFA;
- border-radius: 10rpx 10rpx 10rpx 10rpx;
- padding: 10rpx 20rpx;
- box-sizing: border-box;
- margin-bottom: 20rpx;
- >view {
- margin-bottom: 20rpx;
- >text:first-child {
- font-size: 30rpx;
- color: #666;
- position: relative;
- padding-left: 20rpx;
- ::before {
- content: "";
- width: 8rpx;
- height: 8rpx;
- border-radius: 50%;
- background-color: #666;
- position: absolute;
- top: 50%;
- transform: translateY(-50%);
- left: 0;
- }
- }
- }
- }
- .formula {
- font-size: 30rpx;
- color: #333;
- }
- }
- // 商业险折扣系数样式
- .updateDiscount {
- padding: 40rpx;
- box-sizing: border-box;
- .text {
- font-size: 28rpx;
- color: #666;
- }
- .input {
- font-size: 32rpx;
- color: #333;
- text:last-child {
- color: #999;
- margin-left: 10rpx;
- }
- }
- .btn {}
- }
- // 车船税弹窗
- .vvTaxDetails-cell {
- padding: 40rpx;
- box-sizing: border-box;
- .cell-item {
- font-size: 30rpx;
- color: #333;
- margin-bottom: 30rpx;
- text:last-child {
- font-weight: bold;
- }
- }
- .cell-item:last-child {
- margin-bottom: 0;
- }
- }
- </style>
|