yangan
2024-05-30 29014207a8882df16d4372ef20e0d79e6e5df6d1
pages/driver-page/drvier-my/drvier-my.vue
@@ -1,12 +1,12 @@
<template>
   <view class="driver-my">
      <view class=""
         style="height: 446rpx;width: 100%;">
         style="height: 540rpx;width: 100%;">
         <view class="driver-banner">
            <view class="navgation">我的</view>
            <view class="avatar">
               <view class="avatar-imgage"
                  style="background: url('https://mx.jzeg.cn:9095/appimg/image/banner/driverava.png')no-repeat;background-size: cover;">
                  style="background: url('https://mx.jzeg.cn:9096/appimg/image/banner/driverava.png')no-repeat;background-size: cover;">
               </view>
               <view class="avatar-name">{{ userInfo.name || '' }}</view>
               <view class="edit-button"><u-button type="primary"
@@ -16,13 +16,29 @@
            </view>
         </view>
      </view>
      <view class="process-state">
      <view class="process-state"
         v-if="userInfo.isRegister!==2">
         <view class="state-text">
            审核状态
         </view>
         <u--text :type="userInfo.isRegister===0?'primary':userInfo.isRegister===1?'error':'success'"
            :text="userInfo.isRegister===0?'待审核':userInfo.isRegister===1?'未通过':'已审核'"
         <u--text :type="userInfo.isRegister===0?'primary':'error'"
            :text="userInfo.isRegister===0?'待审核':'未通过'"
            size="32"></u--text>
      </view>
      <view class="car-type">
         <view ><u-button type="primary"
               @click="editDocClick"
               shape="circle"
               plain>编辑证件信息</u-button></view>
      </view>
      <view class="process-tran"
         >
      </view>
      <view class="tran-type">
         <view ><u-button type="primary"
               @click="editTranClick"
               shape="circle"
               plain>添加运输证</u-button></view>
      </view>
      <view class="information-block">
         <view class="personal-information">
@@ -31,17 +47,17 @@
                  <view class="information-line"
                     @click="">
                     <view class="line-label">
                        <image src="https://mx.jzeg.cn:9095/appimg/image/banner/personalicon.png"
                        <image src="https://mx.jzeg.cn:9096/appimg/image/banner/personalicon.png"
                           mode="widthFix"></image>
                        <view class="label-text">身份证号</view>
                     </view>
                     <view class="information-value">
                        {{ userInfo.idCard || '' }}
                        {{ idCard || '' }}
                     </view>
                  </view>
                  <view class="information-line">
                     <view class="line-label">
                        <image src="https://mx.jzeg.cn:9095/appimg/image/banner/phonenum.png"
                        <image src="https://mx.jzeg.cn:9096/appimg/image/banner/phonenum.png"
                           mode="widthFix"></image>
                        <view class="label-text">手机号</view>
                     </view>
@@ -51,7 +67,7 @@
                  </view>
                  <view class="information-line">
                     <view class="line-label">
                        <image src="https://mx.jzeg.cn:9095/appimg/image/banner/carnum.png"
                        <image src="https://mx.jzeg.cn:9096/appimg/image/banner/carnum.png"
                           mode="widthFix"></image>
                        <view class="label-text">车牌号</view>
                     </view>
@@ -61,7 +77,7 @@
                  </view>
                  <view class="information-line">
                     <view class="line-label">
                        <image src="https://mx.jzeg.cn:9095/appimg/image/banner/axisnum.png"
                        <image src="https://mx.jzeg.cn:9096/appimg/image/banner/axisnum.png"
                           mode="widthFix"></image>
                        <view class="label-text">车轴数</view>
                     </view>
@@ -69,9 +85,9 @@
                        {{ userInfo.axleNum || '' }}
                     </view>
                  </view>
                  <view class="information-line last">
                  <view class="information-line">
                     <view class="line-label">
                        <image src="https://mx.jzeg.cn:9095/appimg/image/banner/weighnum.png"
                        <image src="https://mx.jzeg.cn:9096/appimg/image/banner/weighnum.png"
                           mode="widthFix"></image>
                        <view class="label-text">体重</view>
                     </view>
@@ -79,7 +95,76 @@
                        {{ userInfo.weight || '' }}
                     </view>
                  </view>
                  <view class="information-line"
                     @click="modifyPrint">
                     <!-- 由于是自定义icon  非设计图icon 所以要加上这个style="margin-left: 1.5%;"
                       icon 下载格式为18x18-->
                     <view class="line-label"
                        style="margin-left: 1.5%;">
                        <image src="https://mx.jzeg.cn:9096/appimg/image/banner/printer.png"
                           mode="widthFix"
                           style="width: 18px;"></image>
                        <view class="label-text">磅单样式</view>
                     </view>
                     <view class="information-value">
                        <view class="">
                           {{ currentSelectedPrintStyle===1?'一页两联':'一页四联'}}
                        </view>
                        <u-icon name="arrow-right"
                           size="36"></u-icon>
                     </view>
                  </view>
                  <!-- <view class="information-line"
                     @click="addressManageHandle">
                     <view class="line-label"
                        style="margin-left: 1.5%;">
                        <image src="https://mx.jzeg.cn:9096/appimg/image/banner/address.png"
                           mode="widthFix"
                           style="width: 18px;"></image>
                        <view class="label-text"
                           style="width:220rpx ;">送货客户管理</view>
                     </view>
                     <view class="">
                        <u-icon name="arrow-right"
                           size="36"></u-icon>
                     </view>
                  </view> -->
                  <view class="information-line last"
                     @click="scoreDetail">
                     <view class="line-label"
                        style="margin-left: 1.5%;">
                        <image src="https://mx.jzeg.cn:9096/appimg/image/banner/score.png"
                           mode="widthFix"
                           style="width: 36rpx;position: relative;left: 8rpx;"></image>
                        <view class="label-text">我的积分</view>
                     </view>
                     <view class="information-value">
                        <view class="">
                           {{ userInfo.integral || '' }}
                        </view>
                        <view class="">
                           <u-icon name="arrow-right"
                              size="36"></u-icon>
                        </view>
                     </view>
                  </view>
               </view>
            </view>
         </view>
      </view>
      <view class="car-information" v-if="certificateData.length>0">
         <view class="roadTransportCertificate">
            <view class="information-body">
               <view class="certificate" v-for="item in certificateData" :key="item.id">
                  <view class="certificate-left">
                     产品:{{item.productName}}
                  </view>
                  <view class="certificate-right">
                     {{item.status==0?'未审核':item.status==1?'通过':item.status==2?'过期':item.status==-1?"未通过":null}}
                  </view>
               </view>
               {{}}
            </view>
         </view>
      </view>
@@ -88,7 +173,7 @@
            <view class="information-body">
               <view class="car-img">
                  <view class="label-title">
                     <image src="https://mx.jzeg.cn:9095/appimg/image/banner/carimg.png"
                     <image src="https://mx.jzeg.cn:9096/appimg/image/banner/carimg.png"
                        mode="widthFix"></image>
                     <view class="label-text">车辆照片</view>
                  </view>
@@ -105,7 +190,7 @@
               </view>
               <view class="car-img">
                  <view class="label-title">
                     <image src="https://mx.jzeg.cn:9095/appimg/image/banner/cardimg.png"
                     <image src="https://mx.jzeg.cn:9096/appimg/image/banner/cardimg.png"
                        mode="widthFix"></image>
                     <view class="label-text">行驶证照片</view>
                  </view>
@@ -120,15 +205,27 @@
                     </u--image>
                  </view>
               </view>
               <view class="car-img">
                  <view class="label-title">
                     <image src="https://mx.jzeg.cn:9096/appimg/image/banner/cardimg.png"
                        mode="widthFix"></image>
                     <view class="label-text">车辆类型照片</view>
                  </view>
                  <view class="img-container">
                     <u--image :showLoading="true"
                        :src="userInfo.inventoryImg != null ? BaseUrl + userInfo.drivingImg : ''"
                        width="80px"
                        height="80px"
                        @click="imageClick(3)">
                        <view slot="error"
                           style="font-size: 24rpx;">加载失败</view>
                     </u--image>
                  </view>
               </view>
            </view>
         </view>
      </view>
      <view class="loginout">
         <view class="loginout-main"><u-button text="重置密码"
               type="primary"
               @click="initPwd"
               shape="circle"
               plain></u-button></view>
         <view class="loginout-main"><u-button text="退出登录"
               type="primary"
               @click="logout"
@@ -136,24 +233,7 @@
               plain></u-button></view>
      </view>
      <!-- 引导页 -->
      <view class="noob-tour"
         style="margin-top: 80rpx;">
         <combined-title title="操作指引"></combined-title>
         <u-cell-group>
            <u-cell title="新手指引"
               name='1'
               :clickable="true"
               @click="noobTour">
               <u-badge type="primary"
                  value="01"
                  slot='icon'></u-badge>
               <u-icon slot="value"
                  name="arrow-right"
                  size="30"
                  color="#b8b8b8"></u-icon>
            </u-cell>
         </u-cell-group>
      </view>
      <noob-tour isPersonCenter></noob-tour>
      <!-- 图片预览弹出框 -->
      <view class="previewImage-container">
         <u-popup :show="previewImageShow"
@@ -164,12 +244,6 @@
               width="400px"
               height="400px"></u--image>
         </u-popup>
      </view>
      <!-- 引导图片弹出 -->
      <view class="previewImage-container">
         <previewImage ref="previewImage"
            :imgs="driverTourImgList"
            :saveBtn='false'></previewImage>
      </view>
      <!-- 修改弹出框 -->
      <view class="editDriverPopup-container">
@@ -192,22 +266,22 @@
                        border="none"
                        inputAlign="left"></u--input>
                  </u-form-item>
                  <u-form-item labelWidth="20%"
                  <!-- <u-form-item labelWidth="20%"
                     label="密码"
                     prop="password"
                     required>
                     <u--input v-model="editUserInfo.password"
                        border="none"
                        inputAlign="left"></u--input>
                  </u-form-item>
                  <u-form-item labelWidth="20%"
                  </u-form-item> -->
                  <!-- <u-form-item labelWidth="20%"
                     label="身份证号"
                     prop="idCard"
                     required>
                     <u--input v-model="editUserInfo.idCard"
                        border="none"
                        inputAlign="left"></u--input>
                  </u-form-item>
                  </u-form-item> -->
                  <u-form-item labelWidth="20%"
                     label="手机号"
                     prop="phone"
@@ -241,6 +315,24 @@
                        border="none"
                        inputAlign="left"></u--input>
                  </u-form-item>
                  <u-form-item labelWidth="20%"
                     label="车辆类型"
                     borderBottom
                     required
                     prop="countryNumberCar">
                     <u-radio-group v-model="editUserInfo.countryNumberCar"
                        placement="row"
                        size="30"
                        shape="circle"
                        iconSize="20">
                        <u-radio labelSize="14px"
                           size="20px"
                           v-for="(item, index) in countryNumberCarList"
                           :key="index"
                           :label="item.label"
                           :name="item.name"></u-radio>
                     </u-radio-group>
                  </u-form-item>
                  <u-form-item labelWidth="25%"
                     label="车辆照片"
                     @click="beforeRead"
@@ -272,10 +364,396 @@
                        height="150"
                        :previewFullImage="true"></u-upload>
                  </u-form-item>
                  <u-form-item labelWidth="25%"
                     label="道路运输证"
                     ref="item1"
                     @click="beforeRead"
                     prop="roadTransportImg"
                     required>
                     <u-upload :fileList="fileList3"
                        @afterRead="afterRead"
                        @delete="deletePic"
                        name="3"
                        multiple
                        :maxCount="1"
                        width="250"
                        height="150"
                        :previewFullImage="true"></u-upload>
                  </u-form-item>
                  <u-form-item labelWidth="25%"
                     label="从业资格证"
                     ref="item1"
                     @click="beforeRead"
                     prop="tradeQualificationImg"
                     required>
                     <u-upload :fileList="fileList4"
                        @afterRead="afterRead"
                        @delete="deletePic"
                        name="4"
                        multiple
                        :maxCount="1"
                        width="250"
                        height="150"
                        :previewFullImage="true"></u-upload>
                  </u-form-item>
                  <u-form-item prop="inventoryImg"
                     label="环保清单"
                     labelWidth="24%"
                     borderBottom
                     @click="beforeRead">
                     <u-upload :fileList="fileList5"
                        deletable
                        @afterRead="afterRead"
                        @delete="deletePic"
                        name="5"
                        multiple
                        :maxCount="3"
                        width="250"
                        height="150"
                        :previewFullImage="true">
                     </u-upload>
                  </u-form-item>
               </u--form>
               <u-button text="提交"
                  @click="updateUser"
                  type="primary"></u-button>
               <view class="person-utils">
                  <u-button text="修改密码"
                     @click="modifyPassword"
                     type="primary"></u-button>
                  <u-button text="提交"
                     @click="updateUser"
                     type="primary"></u-button>
               </view>
            </view>
         </u-popup>
      </view>
      <!-- 修改证件弹出 -->
      <view class="editDriverPopup-container">
         <u-popup :show="editDocShow"
            mode="bottom"
            @close="editDocClose"
            @open="editDocOpen"
            :closeable="true">
            <combined-title title="修改证件信息"
               style="margin-left:20rpx"></combined-title>
            <view class="editDriverPopup-container-box">
               <u--form labelPosition="left"
                  :model="registerFormModel"
                  ref="editRef">
                  <u-form-item prop="cardImg1"
                     label="身份证正面"
                     labelWidth="20%"
                     borderBottom
                     required
                     @click="beforeRead">
                     <u-upload :fileList="fileList6"
                        deletable
                        @afterRead="afterRead"
                        @delete="deletePic"
                        name="6"
                        multiple
                        :maxCount="1"
                        width="250"
                        height="150"
                        :previewFullImage="true">
                     </u-upload>
                  </u-form-item>
                  <u-form-item prop="cardImg2"
                     label="身份证反面"
                     labelWidth="20%"
                     borderBottom
                     required
                     @click="beforeRead">
                     <u-upload :fileList="fileList7"
                        deletable
                        @afterRead="afterRead"
                        @delete="deletePic"
                        name="7"
                        multiple
                        :maxCount="1"
                        width="250"
                        height="150"
                        :previewFullImage="true">
                     </u-upload>
                  </u-form-item>
                  <u-form-item prop="expirationTimeIdcard"
                     label="身份证过期时间"
                     labelWidth="20%"
                     borderBottom>
                     <uni-datetime-picker v-model="registerFormModel.expirationTimeIdcard" type="datetime"  />
                  </u-form-item>
                  <u-form-item prop="drivingImg"
                     label="行驶证"
                     labelWidth="20%"
                     borderBottom
                     required
                     @click="beforeRead">
                     <u-upload :fileList="fileList2"
                        deletable
                        @afterRead="afterRead"
                        @delete="deletePic"
                        name="2"
                        multiple
                        :maxCount="1"
                        width="250"
                        height="150"
                        :previewFullImage="true">
                     </u-upload>
                  </u-form-item>
                  <u-form-item prop="expirationTimeDriving"
                     label="行驶证过期时间"
                     labelWidth="20%"
                     borderBottom>
                     <uni-datetime-picker v-model="registerFormModel.expirationTimeDriving" type="datetime"  />
                  </u-form-item>
                  <u-form-item prop="driverImg"
                     label="驾驶证"
                     labelWidth="24%"
                     borderBottom
                     required
                     @click="beforeRead">
                     <u-upload :fileList="fileList8"
                        deletable
                        @afterRead="afterRead"
                        @delete="deletePic"
                        name="8"
                        multiple
                        :maxCount="1"
                        width="250"
                        height="150"
                        :previewFullImage="true">
                     </u-upload>
                  </u-form-item>
                  <u-form-item prop="expirationTimeDriver"
                     label="驾驶证过期时间"
                     labelWidth="20%"
                     borderBottom>
                     <uni-datetime-picker v-model="registerFormModel.expirationTimeDriver" type="datetime"  />
                  </u-form-item>
                  <u-form-item prop="tradeQualificationImg"
                     label="从业资格证"
                     labelWidth="24%"
                     borderBottom
                     v-if="registerFormModel.type == 3||registerFormModel.type == 4"
                     required
                     @click="beforeRead">
                     <u-upload :fileList="fileList4"
                        deletable
                        @afterRead="afterRead"
                        @delete="deletePic"
                        name="4"
                        multiple
                        :maxCount="1"
                        width="250"
                        height="150"
                        :previewFullImage="true">
                     </u-upload>
                  </u-form-item>
                  <u-form-item prop="expirationTimeTradequalification"
                     label="从业资格过期时间"
                     labelWidth="20%"
                     borderBottom
                     v-if="registerFormModel.type == 3||registerFormModel.type == 4">
                     <uni-datetime-picker v-model="registerFormModel.expirationTimeTradequalification" type="datetime"  />
                  </u-form-item>
               </u--form>
               <view class="person-utils">
                  <u-button text="提交证件修改"
                     @click="updateDoc"
                     type="primary"></u-button>
               </view>
            </view>
         </u-popup>
      </view>
      <!-- 添加道路运输证 -->
      <view class="editDriverPopup-container">
         <u-popup :show="editTranShow"
            mode="bottom"
            @close="editTranClose"
            @open="editTranOpen"
            :closeable="true">
            <combined-title title="运输证"
               style="margin-left:20rpx"></combined-title>
            <view class="editDriverPopup-container-box">
               <u--form labelPosition="left"
                  :model="tranSportForm"
                  :rule="sportRules"
                  ref="sportRef">
                  <u-form-item labelWidth="20%"
                     label="运输证号"
                     prop="certificateNo"
                     required>
                     <u--input v-model="tranSportForm.certificateNo"
                        border="none"
                        inputAlign="left"></u--input>
                  </u-form-item>
                  <u-form-item labelWidth="20%"
                     label="车牌号"
                     prop="carNo"
                     required>
                     <u--input v-model="tranSportForm.carNo"
                        border="none"
                        inputAlign="left"></u--input>
                  </u-form-item>
                  <u-form-item labelWidth="20%"
                     label="产品"
                     ref="item1"
                     @click="treeOpen"
                     prop='productId'>
                     <u--input placeholder="请选择产品"
                        v-model="productName"
                        class="input"
                        type="text"></u--input>
                     <qian-tree ref="tkitree"
                        :range="productData"
                        rangeKey='productName'
                        confirmColor="#4e8af7"
                        :selectParent="true"
                        title="选择部门"
                        @confirm="treeChooseValue" />
                  </u-form-item>
                  <view class="customer-name">
                     <view class="customer-name_label">
                        选择客户
                     </view>
                     <view class="customer-name_block"
                        @click="selfDeliver">
                        <input class="customer-name_block-input"
                           type="text"
                           placeholder="请选择客户"
                           v-model="customerName"
                           @focus="selfDeliver"
                           ref="selectCustomer" />
                     </view>
                  </view>
                  <u-form-item prop="certificateImg"
                     label="运输证"
                     labelWidth="20%"
                     borderBottom
                     required
                     @click="beforeRead">
                     <u-upload :fileList="fileList9"
                        deletable
                        @afterRead="afterRead"
                        @delete="deletePic"
                        name="9"
                        multiple
                        :maxCount="1"
                        width="250"
                        height="150"
                        :previewFullImage="true">
                     </u-upload>
                  </u-form-item>
                  <u-form-item prop="expirationTime"
                     label="运输证过期时间"
                     labelWidth="20%"
                     borderBottom>
                     <uni-datetime-picker v-model="tranSportForm.expirationTime" type="datetime"  />
                  </u-form-item>
                  <view class="adddelete">
                     <u-button text="添加驾驶员"
                        @click="addDriver"
                        type="primary"></u-button>
                     <u-button text="删除驾驶员"
                        @click="deleteDriver"
                        type="error"></u-button>
                  </view>
                  <view class="superList" v-for="(item,index) in driverList" :key="index">
                     <u-form-item labelWidth="20%"
                        label="姓名"
                        prop="driverName"
                        required>
                        <u--input v-model="item.driverName"
                           border="none"
                           inputAlign="left"></u--input>
                     </u-form-item>
                     <u-form-item labelWidth="20%"
                        label="身份证"
                        prop="driverIdcard"
                        required>
                        <u--input v-model="item.driverIdcard"
                           border="none"
                           inputAlign="left"></u--input>
                     </u-form-item>
                  </view>
                  <view class="adddelete">
                     <u-button text="添加押运员"
                        @click="addSupercar"
                        type="primary"></u-button>
                     <u-button text="删除押运员"
                        @click="deleteSupercar"
                        type="error"></u-button>
                  </view>
                  <view class="superList" v-for="(item,index) in supercargoList" :key="index">
                     <u-form-item labelWidth="20%"
                        label="姓名"
                        prop="driverName"
                        required>
                        <u--input v-model="item.driverName"
                           border="none"
                           inputAlign="left"></u--input>
                     </u-form-item>
                     <u-form-item labelWidth="20%"
                        label="身份证"
                        prop="driverIdcard"
                        required>
                        <u--input v-model="item.driverIdcard"
                           border="none"
                           inputAlign="left"></u--input>
                     </u-form-item>
                     <u-form-item labelWidth="20%"
                        label="手机号"
                        prop="driverPhone"
                        required>
                        <u--input v-model="item.driverPhone"
                           border="none"
                           inputAlign="left"></u--input>
                     </u-form-item>
                  </view>
                  <u-form-item labelWidth="20%"
                     label="备注"
                     prop="remarks">
                     <u--input v-model="tranSportForm.remarks"
                        border="none"
                        inputAlign="left"></u--input>
                  </u-form-item>
               </u--form>
               <view class="person-utils">
                  <u-button text="提交道路运输证"
                     @click="updateRoad"
                     type="primary"></u-button>
               </view>
            </view>
         </u-popup>
         <u-popup :closeable='true'
            :round="30"
            mode='bottom'
            :show="selfDeliverShow"
            @close="selfDeliverClose"
            @open="selfDeliverOpen">
            <view class="name-list-section">
               <view class="name-list_title">
                  选择客户
               </view>
               <view class="name-list_container">
                  <u-empty mode="data"
                     icon="http://cdn.uviewui.com/uview/empty/data.png"
                     text="暂无数据"
                     textSize="30"
                     iconSize="1000"
                     v-if="customerNameList.length===0"></u-empty>
                  <view class="name-list_container_item"
                     v-for="(item,index) in customerNameList" :key="index"
                     @click="selectCustomer(item)">
                     <view class="item-image">
                        <image src="https://mx.jzeg.cn:9096/appimg/image/banner/address.png"
                           mode="widthFix"
                           style="width: 18px;"></image>
                     </view>
                     <view class="item-customerName">
                        {{item.customerName}}
                     </view>
                  </view>
               </view>
            </view>
         </u-popup>
      </view>
@@ -287,14 +765,8 @@
            @confirm="logoutConfirm"
            @cancel="logoutCancel"></u-modal>
      </view>
      <view class="initPwdModal">
         <u-modal :show="initPwdShow"
            title="重置密码"
            showCancelButton
            content="初始密码将变更为123456,是否确认重置"
            @confirm="initPwdConfirm"
            @cancel="initPwdCancel"></u-modal>
      </view>
      <printerStyle ref="printerStyleRef"
         @selectedPrintStyle='selectedPrintStyleHandle' />
   </view>
</template>
@@ -302,19 +774,20 @@
   import { redirectLogin } from '@/utils/status';
   import { BaseUrl } from '@/api/publicInterface.js';
   import previewImage from '@/components/kxj-previewImage/kxj-previewImage.vue';
   import noobTour from '@/components/noobTour/noobTour.vue'
   import printerStyle from '@/pages/driver-page/driver-index/bill-of-lading-details/printerStyle/printerStyle.vue'
   import { mapMutations, mapState } from 'vuex';
   import qianTree from '@/components/qian-tree/qian-tree.vue';
   export default {
      components: { previewImage },
      computed: {
         ...mapState(['driverTourImgList']),
         roleType() {
            return uni.getStorageSync('roleType');
         },
      },
      components: { previewImage, noobTour, printerStyle,qianTree },
      data() {
         return {
            selfDeliverShow: false,
            customerNameList:[],
            customerName:"",
            // 获取的司机详情
            userInfo: {},
            productName:"",
            // 修改司机详情
            editUserInfo: {
               phone: '',
@@ -329,7 +802,57 @@
               weight: '',
               userId: '',
               password: "",
               isRegister: ''
               isRegister: 0,
               tradeQualificationImg: '',
               roadTransportImg: '',
               inventoryImg: '',
               countryNumberCar: 0
            },
            registerFormModel:{},
            tranSportForm:{
               carNo:"",
               productId:"",
               customerId:""
            },
            countryNumberCarList: [{
                  name: 1,
                  label: '国五',
               },
               {
                  name: 2,
                  label: '国六',
               }
            ],
            sportRules:{
               certificateNo: {
                  type: 'string',
                  required: true,
                  message: '请填写运输证号',
                  trigger: ['blur', 'change']
               },
               expirationTime: {
                  type: 'string',
                  required: true,
                  message: '请选择运输证过期时间',
                  trigger: ['blur', 'change']
               },
               carNo: [{
                     type: 'string',
                     required: true,
                     message: '请输入车牌号',
                     trigger: ['blur', 'change']
                  },
                  {
                     transform(value) {
                        return String(value);
                     },
                     validator: (rule, value, callback) => {
                        return uni.$u.test.carNo(value);
                     },
                     message: '请输入正确的车牌号',
                     trigger: ['change', 'blur']
                  }
               ],
            },
            rules: {
               name: {
@@ -407,10 +930,11 @@
                     return Number(value);
                  },
                  validator: (rule, value, callback) => {
                     return value <= 10;
                     return value <= 10 && value > 0;
                  },
                  message: '请输入正确的车轴数',
                  trigger: ['change', 'blur']
                  trigger: ['change', 'blur'],
                  required: true,
               }],
               carImg: {
                  type: 'string',
@@ -423,13 +947,47 @@
                  required: true,
                  message: '请上传行驶证照片',
                  trigger: ['blur', 'change']
               }
               },
               countryNumberCar: {
                  type: 'number',
                  required: true,
                  message: '请选择车辆类型',
                  trigger: ['blur', 'change']
               },
               roadTransportImg: {
                  type: 'string',
                  required: true,
                  message: '请上传道路运输证照片',
                  trigger: ['blur', 'change']
               },
               tradeQualificationImg: {
                  type: 'string',
                  required: true,
                  message: '请上传从业资格证照片',
                  trigger: ['blur', 'change']
               },
            },
            src: '',
            fileList1: [],
            fileList2: [],
            fileList3: [],
            fileList4: [],
            fileList5: [],
            fileList6: [],
            fileList7: [],
            fileList8: [],
            fileList9: [],
            productData:[],
            certificateData:[],
            driverList:[{
               driverName:"",
               driverIdcard:""
            }],
            supercargoList:[],
            // 修改信息弹出框
            editDriverPopupShow: false,
            editDocShow:false,
            editTranShow:false,
            // previewImage
            previewImageShow: false,
            previewImageSrc: '',
@@ -438,19 +996,30 @@
            logoutTitle: '提示',
            logoutContent: '是否确认退出',
            BaseUrl,
            initPwdShow: false
            selectedPrintStyle: null
         };
      },
      computed: {
         currentSelectedPrintStyle() {
            return this.selectedPrintStyle ? this.selectedPrintStyle : uni.getStorageSync('selectedPrintStyle')
         },
         idCard() {
            return this.userInfo.idCard.slice(0, 6) + '********' + this.userInfo.idCard.slice(-4)
         }
      },
      onShow() {
         // this.init();
      },
      onReady() {
         this.$refs.editRef.setRules(this.rules);
         this.$refs.sportRef.setRules(this.sportRules);
      },
      methods: {
         ...mapMutations(['changeisUploadimg']),
         init() {
            this.$reqGet('getProductTree').then(res => {
               this.productData = res.data;
            });
            this.getUserEntity();
         },
         getUserEntity() {
@@ -460,23 +1029,73 @@
            this.$reqGet('getUserEntity').then(res => {
               uni.hideLoading();
               this.userInfo = res.data;
               this.$reqGetId('getDriverListById', this.userInfo.userId).then(res => {
                  this.certificateData = res.data;
                  console.log(this.certificateData)
               });
               // this.userInfo.idCard = this.userInfo.idCard.slice(0, 6) + '********' + this.userInfo.idCard
               //    .slice(-4)
               uni.setStorageSync('carImg', this.userInfo.carImg);
               uni.setStorageSync('drivingImg', this.userInfo.drivingImg);
               if (this.fileList1.length == 0) {
               uni.setStorageSync('roadTransportImg', this.userInfo.roadTransportImg);
               uni.setStorageSync('tradeQualificationImg', this.userInfo.tradeQualificationImg);
               if (this.fileList1.length == 0 && this.userInfo.carImg) {
                  this.fileList1.push({
                     url: `${BaseUrl}${this.userInfo.carImg}`
                  });
               }
               if (this.fileList2.length == 0) {
               if (this.fileList2.length == 0 && this.userInfo.drivingImg) {
                  this.fileList2.push({
                     url: `${BaseUrl}${this.userInfo.drivingImg}`
                  });
               }
               Object.keys(this.editUserInfo).map(item => {
                  if (res.data[item]) {
                     this.editUserInfo[item] = res.data[item];
               if (this.fileList3.length == 0 && this.userInfo.roadTransportImg) {
                  this.fileList3.push({
                     url: `${BaseUrl}${this.userInfo.roadTransportImg}`
                  });
               }
               if (this.fileList4.length == 0 && this.userInfo.tradeQualificationImg) {
                  this.fileList4.push({
                     url: `${BaseUrl}${this.userInfo.tradeQualificationImg}`
                  });
               }
               if (this.fileList5.length == 0 && this.userInfo.inventoryImg) {
                  this.fileList5.push({
                     url: `${BaseUrl}${this.userInfo.inventoryImg}`
                  });
               }
               Object.assign(this.editUserInfo, res.data)
               this.registerFormModel={
                  customerid:res.data.userId,
                  idCardImg:res.data.idCardImg,
                  expirationTimeIdcard:res.data.expirationTimeIdcard,
                  drivingImg:res.data.drivingImg,
                  expirationTimeDriving:res.data.expirationTimeDriving,
                  driverImg:res.data.driverImg,
                  expirationTimeDriver:res.data.expirationTimeDriver,
                  tradeQualificationImg:res.data.tradeQualificationImg,
                  expirationTimeTradequalification:res.data.expirationTimeTradequalification,
                  type:res.data.carType
               }
               if(this.registerFormModel.idCardImg){
                  if (this.fileList6.length == 0 && this.registerFormModel.idCardImg.split(",")[0]) {
                     this.fileList6.push({
                        url: `${BaseUrl}${this.registerFormModel.idCardImg.split(",")[0]}`
                     });
                  }
               });
                  if (this.fileList7.length == 0 && this.registerFormModel.idCardImg.split(",")[1]) {
                     this.fileList7.push({
                        url: `${BaseUrl}${this.registerFormModel.idCardImg.split(",")[1]}`
                     });
                  }
                  if (this.fileList8.length == 0 && this.userInfo.driverImg) {
                     this.fileList8.push({
                        url: `${BaseUrl}${this.userInfo.driverImg}`
                     });
                  }
                  this.registerFormModel.cardImg1=this.registerFormModel.idCardImg.split(",")[1]
                  this.registerFormModel.cardImg2=this.registerFormModel.idCardImg.split(",")[1]
                 }
               this.editUserInfo.password = ''
            });
         },
@@ -484,13 +1103,20 @@
         editBtnClick() {
            this.editDriverPopupShow = true;
         },
         editDocClick(){
            this.editDocShow = true;
         },
         editTranClick(){
            this.getShipToList()
            this.editTranShow = true;
         },
         imageClick(index) {
            // 通过index切换图片
            console.log('切换图片', index);
            if (index == 1) {
               this.previewImageSrc = this.userInfo.carImg;
            } else {
            } else if (index == 2) {
               this.previewImageSrc = this.userInfo.drivingImg;
            } else {
               this.previewImageSrc = this.userInfo.inventoryImg;
            }
            this.$nextTick(() => {
               this.previewImageShow = true;
@@ -543,13 +1169,46 @@
                  success: res => {
                     if (num == 1) {
                        this.editUserInfo.carImg = JSON.parse(res.data).data.url;
                        this.registerFormModel.carImg = JSON.parse(res.data).data.url;
                        uni.setStorageSync('carImg', JSON.parse(res.data).data.url);
                        resolve(`${BaseUrl}${JSON.parse(res.data).data.url}`);
                     } else if (num == 2) {
                        this.registerFormModel.drivingImg = JSON.parse(res.data).data.url;
                        this.editUserInfo.drivingImg = JSON.parse(res.data).data.url;
                        uni.setStorageSync('drivingImg', JSON.parse(res.data).data.url);
                        resolve(`${BaseUrl}${JSON.parse(res.data).data.url}`);
                     } else if (num == 3) {
                        this.editUserInfo.roadTransportImg = JSON.parse(res.data).data.url;
                        uni.setStorageSync('roadTransportImg', JSON.parse(res.data).data.url);
                        resolve(`${BaseUrl}${JSON.parse(res.data).data.url}`);
                     } else if (num == 4) {
                        this.editUserInfo.tradeQualificationImg = JSON.parse(res.data).data
                           .url;
                        uni.setStorageSync('tradeQualificationImg', JSON.parse(res.data).data
                           .url);
                        resolve(`${BaseUrl}${JSON.parse(res.data).data.url}`);
                     } else if (num == 5) {
                        this.editUserInfo.inventoryImg = JSON.parse(res.data).data
                           .url;
                        resolve(`${BaseUrl}${JSON.parse(res.data).data.url}`);
                     }else if(num==6){
                        this.registerFormModel.cardImg1 = JSON.parse(res.data)
                           .data.url;
                        resolve(`${BaseUrl}${JSON.parse(res.data).data.url}`);
                     }else if(num==7){
                        this.registerFormModel.cardImg2 = JSON.parse(res.data)
                           .data.url;
                        resolve(`${BaseUrl}${JSON.parse(res.data).data.url}`);
                     }else if(num==8){
                        this.registerFormModel.driverImg = JSON.parse(res.data)
                           .data.url;
                        resolve(`${BaseUrl}${JSON.parse(res.data).data.url}`);
                     }else if(num==9){
                        this.tranSportForm.certificateImg = JSON.parse(res.data)
                           .data.url;
                        resolve(`${BaseUrl}${JSON.parse(res.data).data.url}`);
                     }
                  }
               });
            });
@@ -560,17 +1219,169 @@
         previewImageClose() {
            this.previewImageShow = false;
         },
         previewImageOpen() {
            console.log('preview open');
         },
         previewImageOpen() {},
         /**
          * @editPopup 修改弹出框事件
          */
         editDriverPopupClose() {
            this.editDriverPopupShow = false;
         },
         editDriverPopupOpen() {
            console.log('打开了');
         editDocClose(){
            this.editDocShow = false;
         },
         editTranClose(){
            this.editTranShow = false;
         },
         editDriverPopupOpen() {},
         editDocOpen(){},
         editTranOpen(){},
         modifyPassword() {
            this.$store.commit('changeisLogin', false)
            this.$store.dispatch('websocketOnClose')
            uni.reLaunch({
               url: '/pages/login/forgetPassword/forgetPassword'
            })
         },
         updateRoad(){
            this.$refs.sportRef
               .validate()
               .then(res => {
                  if (this.tranSportForm.productId == '' ) {
                     uni.showToast({
                        title: '请选择产品!',
                        icon: 'error',
                        duration: 2000
                     });
                  }else if(this.tranSportForm.customerId == ''){
                     uni.showToast({
                        title: '请选择客户!',
                        icon: 'error',
                        duration: 2000
                     });
                  }
                  let idcardtext=/^([1-6][1-9]|50)\d{4}(18|19|20)\d{2}((0[1-9])|10|11|12)(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$/
                  if(this.driverList.length>0){
                     this.driverList.forEach((item,index)=>{
                        if(!item.driverName){
                           uni.showToast({
                              title: `请填写驾驶姓名!`,
                              icon: 'error',
                              duration: 2000
                           });
                        }
                        if(!item.driverIdcard){
                           uni.showToast({
                              title: `请填写驾驶身份证!`,
                              icon: 'error',
                              duration: 2000
                           });
                        }else if(!idcardtext.test(item.driverIdcard)){
                           uni.showToast({
                              title: `请检验驾驶员身份证!`,
                              icon: 'error',
                              duration: 2000
                           });
                        }
                     })
                  }
                  if(this.supercargoList.length>0){
                     this.supercargoList.forEach((item,index)=>{
                        if(!item.driverName){
                           uni.showToast({
                              title: `请填写押运姓名!`,
                              icon: 'error',
                              duration: 2000
                           });
                        }
                        if(!item.driverIdcard){
                           uni.showToast({
                              title: `请填写押运身份证!`,
                              icon: 'error',
                              duration: 2000
                           });
                        }else if(!idcardtext.test(item.driverIdcard)){
                           uni.showToast({
                              title: `请检验押运身份证!`,
                              icon: 'error',
                              duration: 2000
                           });
                        }
                        if(!item.driverPhone){
                           uni.showToast({
                              title: `请填写押运手机号!`,
                              icon: 'error',
                              duration: 2000
                           });
                        }else if( !/^1[23456789]\d{9}$/.test(item.driverPhone)){
                           uni.showToast({
                              title: `请检验押运手机号!`,
                              icon: 'error',
                              duration: 2000
                           });
                        }
                     })
                  }
                  let driverName=""
                  let driverIdcard=""
                  let supercargoInfo=''
                  driverName = this.driverList.map((item, index) => {
                          return item.driverName;
                        }).join(",");
                  driverIdcard = this.driverList.map((item, index) => {
                         return item.driverIdcard;
                        }).join(",");
                  supercargoInfo = this.supercargoList.map((item, index) => {
                      return item.driverName+ '|'+item.driverIdcard+"|"+item.driverPhone
                     }).join(",");
                     if(this.tranSportForm.expirationTime){
                        this.tranSportForm.expirationTime=this.tranSportForm.expirationTime.slice(0,16)
                     }
                  this.$reqPost('addJcroadtransport', {
                     userId:this.registerFormModel.customerid,
                     ...this.tranSportForm,
                     driverName:driverName,
                     driverIdcard:driverIdcard,
                     supercargoInfo:supercargoInfo
                  }, 'json').then(res => {
                     this.editTranShow = false;
                     if (res.code == 0) {
                        this.$u.toast('修改成功');
                        this.init();
                     } else {
                        uni.showToast({
                           title: res.msg,
                           icon: 'none',
                           duration: 2000
                        });
                     }
                  })
               })
         },
         // 修改证件信息
         updateDoc(){
            this.$reqPost('saveDriverDocs', {
               userId:this.registerFormModel.customerid,
               idCardImg:this.registerFormModel.cardImg1+","+this.registerFormModel.cardImg2,
               expirationTimeIdcard:this.registerFormModel.expirationTimeIdcard.slice(0,16),
               drivingImg:this.registerFormModel.drivingImg,
               expirationTimeDriving:this.registerFormModel.expirationTimeDriving.slice(0,16),
               driverImg:this.registerFormModel.driverImg,
               expirationTimeDriver:this.registerFormModel.expirationTimeDriver.slice(0,16),
               tradeQualificationImg:this.registerFormModel.tradeQualificationImg,
               expirationTimeTradequalification:this.registerFormModel.expirationTimeTradequalification,
            }, 'json').then(res => {
               this.editDocShow = false;
               if (res.code == 0) {
                  this.$u.toast('修改成功');
                  this.init();
               } else {
                  uni.showToast({
                     title: res.msg,
                     icon: 'none',
                     duration: 2000
                  });
               }
            })
         },
         // 修改用户信息
         updateUser() {
@@ -578,13 +1389,12 @@
               ...this.editUserInfo,
               carImg: uni.getStorageSync('carImg'),
               drivingImg: uni.getStorageSync('drivingImg'),
               isRegister: 0
               isRegister: '0'
            };
            this.$refs.editRef
               .validate()
               .then(res => {
                  this.$reqPost('updateUser', this.editUserInfo, 'json').then(res => {
                     console.log('更新数据', res);
                     this.editDriverPopupShow = false;
                     if (res.code == 0) {
                        this.$u.toast('修改成功');
@@ -602,35 +1412,6 @@
                  this.$u.toast('修改失败');
               });
         },
         initPwd() {
            this.initPwdShow = true
         },
         initPwdConfirm() {
            this.initPwdShow = false
            uni.showLoading({
               title: '加载中...'
            });
            this.editUserInfo.password = '123456';
            this.editUserInfo.carImg = uni.getStorageSync('carImg');
            this.editUserInfo.drivingImg = uni.getStorageSync('drivingImg')
            this.$reqPost('updateUser', this.editUserInfo, 'json').then(res => {
               uni.hideLoading()
               if (res.code == 0) {
                  uni.showToast({
                     title: '重置成功',
                     duration: 2000,
                     icon: 'success'
                  })
               } else {
                  this.$u.toast(res.msg ? res.msg : '修改失败');
               }
            }).catch(err => {
               this.$u.toast('修改失败');
            });
         },
         initPwdCancel() {
            this.initPwdShow = false
         },
         logout() {
            this.logoutShow = true;
         },
@@ -642,14 +1423,100 @@
         logoutCancel() {
            this.logoutShow = false;
         },
         // 跳转发运统计页面
         statistics() {
            uni.navigateTo({
               url: '/pages/customer-page/customer-my/faYunstatistics/faYunstatistics'
            });
         //修改磅单打印样式
         modifyPrint() {
            this.$nextTick(() => {
               this.$refs.printerStyleRef.init()
            })
         },
         noobTour() {
            this.$refs.previewImage.open('https://mx.jzeg.cn:9096/appimg/image/tour/driver/sj1.png')
         // 积分详情
         scoreDetail() {
            uni.navigateTo({
               url: '/pages/driver-page/drvier-my/scoreDetail/scoreDetail'
            })
         },
         addressManageHandle() {
            uni.navigateTo({
               url: '/pages/driver-page/drvier-my/addressMange/addressMange'
            })
         },
         selectedPrintStyleHandle(val) {
            this.selectedPrintStyle = val
         },
         findNameById(tree, idArr) {
            let result = [];
            function traverse(node, idArr) {
               if (!node) return;
               if (idArr.includes(node.id)) {
                  result.push({name:node.productName,id:node.id});
               }
               if (node.children && node.children.length > 0) {
                  node.children.forEach(child => {
                     traverse(child, idArr);
                  });
               }
            }
            tree.forEach(node => {
               traverse(node, idArr);
            });
            return result;
         },
         // 打开产品表
         treeOpen() {
            this.$refs.tkitree._show();
         },
         treeClose() {
            this.$refs.tkitree._hide();
         },
         treeChooseValue(v) {
            this.$refs.tkitree._hide();
            let data=this.findNameById(this.productData, v)[0]
            this.tranSportForm.productId = data.id;
            this.productName=data.name
         },
         // 获取客户
         getShipToList() {
            this.$reqGet('getShipToList', { deptId: this.editUserInfo.deptId, productName: this.editUserInfo.productName })
               .then(res => {
                  if (res.code == 0) {
                     this.customerNameList = res.data
                  }else {
                  this.$u.toast('加载失败')
               }
            })
         },
         selfDeliver() {
            this.selfDeliverShow = true
         },
         selfDeliverClose() {
            this.selfDeliverShow = false
         },
         selfDeliverOpen() {
            this.selfDeliverShow = true
         },
         selectCustomer(value) {
            this.tranSportForm.customerId = value.customerId
            this.customerName = value.customerName
            this.selfDeliverShow = false
         },
         addSupercar(){
            this.supercargoList.push({
               driverName:"",
               driverIdcard:"",
               driverPhone:""
            })
         },
         addDriver(){
            this.driverList.push({
               driverName:"",
               driverIdcard:""
            })
         },
         deleteSupercar(){
            this.supercargoList.splice(this.supercargoList.length - 1, 1)
         },
         deleteDriver(){
            this.driverList.splice(this.driverList.length - 1, 1);
         },
      }
   };
@@ -736,6 +1603,41 @@
            margin-right: vww(6);
         }
      }
      .process-tran{
         width: 300rpx;
         height: 50rpx;
         margin: 0 auto;
         position: fixed;
         top: 390rpx;
         left: 37rpx;
         display: flex;
         align-items: center;
         .state-text {
            margin-right: vww(6);
         }
      }
      .car-type {
         position: fixed;
         top: 284rpx;
         right: 20rpx;
         width: 100%;
         height: 50rpx;
         display: flex;
         align-items: center;
         justify-content: flex-end;
      }
      .tran-type{
         position: fixed;
         top: 390rpx;
         right: 20rpx;
         width: 100%;
         height: 50rpx;
         display: flex;
         align-items: center;
         justify-content: flex-end;
      }
      .information-block {
         width: 100%;
@@ -749,7 +1651,7 @@
            &-block {
               width: 690rpx;
               height: 478rpx;
               height: 680rpx;
               background: #ffffff;
               box-shadow: 0rpx 0rpx 14rpx 0rpx rgba(73, 120, 240, 0.14), 0rpx 7rpx 45rpx 0rpx rgba(73, 120, 240, 0.12);
               border-radius: 20rpx;
@@ -763,25 +1665,28 @@
               }
               .information-line {
                  @include flex width: 636rpx;
                  @include flex;
                  width: 636rpx;
                  height: vww(45);
                  border-bottom: 1rpx solid #f0f1f6;
                  .line-label {
                     width: 188rpx;
                     width: 50%;
                     height: 90rpx;
                     @include flex;
                     @include flex image {
                     image {
                        width: 50rpx;
                        height: 50rpx;
                     }
                     .label-text {
                        width: 120rpx;
                        flex: 0.8;
                        font-size: 30rpx;
                        font-weight: 400;
                        color: #000000;
                        line-height: 85rpx;
                        text-align: left;
                     }
                  }
@@ -797,19 +1702,49 @@
               .last {
                  border-bottom: 0;
                  .information-value {
                     justify-content: space-between;
                  }
               }
            }
         }
      }
      .car-information {
         margin-top: 30rpx;
         width: 100%;
         position: relative;
         @include flex justify-content: center;
         .roadTransportCertificate{
            width: 690rpx;
            background: #ffffff;
            box-shadow: 0rpx 0rpx 14rpx 0rpx rgba(73, 120, 240, 0.14), 0rpx 7rpx 45rpx 0rpx rgba(73, 120, 240, 0.12);
            border-radius: 20rpx;
            .information-body {
               width: 636rpx;
               margin: vww(15) vww(14);
               @include flex flex-direction: column;
               .certificate {
                  display: flex;
                  justify-content: space-between;
                  align-items: center;
                  width: 636rpx;
                  height: 90rpx;
                  border-bottom: 1rpx solid #f0f1f6;
                  .certificate-left{
                     margin-left: 20rpx;
                  }
                  .certificate-right{
                     margin-right: 20rpx;
                  }
               }
            }
         }
         .information-main {
            width: 690rpx;
            height: 552rpx;
            height: 800rpx;
            background: #ffffff;
            box-shadow: 0rpx 0rpx 14rpx 0rpx rgba(73, 120, 240, 0.14), 0rpx 7rpx 45rpx 0rpx rgba(73, 120, 240, 0.12);
            border-radius: 20rpx;
@@ -818,7 +1753,6 @@
               width: 636rpx;
               margin: vww(15) vww(14);
               @include flex flex-direction: column;
               .car-img {
                  height: 246rpx;
                  width: 100%;
@@ -828,7 +1762,7 @@
                  .label-title {
                     @include flex;
                     width: 220rpx;
                     width: 300rpx;
                     height: 100rpx;
                     .label-text {
@@ -858,6 +1792,18 @@
         .loginout-main {
            width: 84%;
         }
      }
      .person-utils {
         width: 98%;
         margin: vww(10) auto;
         display: flex;
         justify-content: space-between;
         .u-button {
            width: 45%;
            letter-spacing: vww(4);
         }
      }
@@ -892,7 +1838,7 @@
                  .editDriverPopup-container-box {
                     width: 90%;
                     margin: 0 auto;
                     margin: vww(10) auto;
                  }
                  //closeIcon
@@ -909,5 +1855,15 @@
            }
         }
      }
      .superList{
         margin: 10rpx;
         padding: 10rpx;
         border: 1px solid  #f0f1f6;
      }
      .adddelete{
         display: flex;
         justify-content: space-around;
         margin: 10rpx;
      }
   }
</style>