xiebaomin 1 vuosi sitten
vanhempi
commit
bcc1785abb

+ 1 - 14
.env.development

@@ -2,7 +2,7 @@
 NODE_ENV = 'development'
 
 # 网站地址
-LOCALHOSE = 'https://zp-b.caimei365.com'
+LOCALHOSE = 'sell-b.caimei365.com'
 
 # 接口api地址
 #VUE_APP_URL = 'http://192.168.2.103:18002'
@@ -13,16 +13,3 @@ STATIC_URL = 'https://static.caimei365.com/app/mini-distribution'
 
 # 图片上传
 CIMEI_LOCAL = 'https://core-b.caimei365.com'
-
-# 项目运行地址
-# HOST = "localhost"
-
-# 项目端口号
-# PORT = '8080'
-
-# HTTPS flag
-HTTPS = false
-
-# OSS 上传目录
-# UPLOAD_DIR = 'dev/authFile/'
-UPLOAD_DIR = 'beta/authFile/'

+ 2 - 2
.env.production

@@ -2,10 +2,10 @@
 NODE_ENV = 'production'
 
 # 网站地址
-LOCALHOSE = 'https://zp.caimei365.com'
+LOCALHOSE = 'sell.caimei365.com'
 
 # 接口api地址
-BASE_URL = 'https://zplma.caimei365.com'
+BASE_URL = ''
 
 # 静态资源文件地址
 STATIC_URL = 'https://static.caimei365.com/app/mini-distribution'

+ 1 - 0
public/index.html

@@ -3,6 +3,7 @@
   <head>
     <meta charset="utf-8">
     <meta http-equiv="X-UA-Compatible" content="IE=edge">
+    <meta name="referrer" content="never">
     <meta name="viewport" content="width=device-width,initial-scale=1.0">
     <link rel="icon" href="<%= BASE_URL %>favicon.ico">
     <title><%= htmlWebpackPlugin.options.title %></title>

+ 6 - 2
src/Layout/TabItem/index.vue

@@ -1,11 +1,15 @@
 <template>
   <div class="tabbar">
     <van-tabbar-item
-      :icon="menu.icon || 'home-o'"
       v-for="(menu, index) in menuList"
       :key="index"
       @click.stop="$ApiRouter(`${menu.link}`)"
-      >{{ menu.name }}</van-tabbar-item>
+      >
+      <span>{{ menu.name }}</span>
+      <template #icon="props">
+        <img :src="props.active ? menu.active : menu.inactive" />
+      </template>
+    </van-tabbar-item>
   </div>
 </template>
 

+ 8 - 2
src/Layout/index.vue

@@ -20,14 +20,20 @@ export default {
     return {
       menuList: [
         {
+          id: 0,
           name: '商城',
           icon: '',
-          link: '/shopping-mall'
+          link: '/shopping-mall',
+          active: 'https://static.caimei365.com/app/mini-distribution/home.png',
+          inactive: 'https://static.caimei365.com/app/mini-distribution/dis-home.png'
         },
         {
+          id: 1,
           name: '我的',
           icon: '',
-          link: '/mine'
+          link: '/mine',
+          active: 'https://static.caimei365.com/app/mini-distribution/my.png',
+          inactive: 'https://static.caimei365.com/app/mini-distribution/dis-my.png'
         }
       ]
     }

+ 9 - 0
src/api/institutionApi/order.js

@@ -98,3 +98,12 @@ export const shareCodeCheck = (params) => http({
     isToken: true
   }
 })
+
+export const orderLogistics = (params) => http({
+  url: '/order/club/logistics',
+  params,
+  method: 'GET',
+  headers: {
+    isToken: true
+  }
+})

+ 4 - 3
src/api/userApi/login.js

@@ -68,11 +68,12 @@ export const getSmsCode = params => http({
   }
 })
 
-export const setPassword = params => http({
+export const setPassword = data => http({
   url: '/user/distribution/setPassword',
   method: 'POST',
-  params,
+  data,
   headers: {
-    isToken: false
+    isToken: false,
+    'Content-Type': 'application/x-www-form-urlencoded'
   }
 })

+ 9 - 0
src/api/userApi/order-sale.js

@@ -17,3 +17,12 @@ export const orderSaleDetail = params => http({
     isToken: true
   }
 })
+
+export const orderSaleSettle = params => http({
+  url: '/commodity/reportingClub/updateSplitSettleStatus',
+  method: 'GET',
+  params,
+  headers: {
+    isToken: true
+  }
+})

+ 19 - 9
src/components/field-image-code.vue

@@ -79,14 +79,18 @@ export default {
         return /\d{6}/.test(val)
       }
     },
-    async fetchVerification () {
-      getCode({ mobile: this.mobile }).then(async () => {
+    fetchVerification () {
+      getCode({ mobile: this.mobile }).then(() => {
         this.showImageCode = true
-        this.dataImage = await getImageCode({ platformType: 1 })
+        getImageCode({ platformType: 1 }).then((data) => {
+          this.dataImage = data
+          setTimeout(() => {
+            Toast.clear()
+          }, 1000)
+        }).catch(e => {
+          console.log(e)
+        })
       })
-      setTimeout(() => {
-        Toast.clear()
-      }, 1000)
     },
     validatorImgCode (val) {
       if (!val) return false
@@ -116,8 +120,14 @@ export default {
         this.errMsg = ''
         this.showImageCode = false
         this.handlerCodeTime()
-      }).catch((err) => {
-        this.errMsg = err.msg
+      }).catch(() => {
+        this.errMsg = '验证码输入错误'
+        getImageCode({ platformType: 1 }).then((data) => {
+          this.dataImage = data
+          setTimeout(() => {
+            Toast.fail('验证码输入错误')
+          }, 1000)
+        })
       })
     }
   }
@@ -152,7 +162,7 @@ export default {
   }
 }
 .get-code {
-  width: 90% !important;
+  width: 100% !important;
   height: 10vw !important;
 }
 .img-code {

+ 1 - 1
src/components/order-goods-info.vue

@@ -8,7 +8,7 @@
       <van-image :src="productInfo.image"></van-image>
       <div class="goods-info">
         <div class="goods-name">{{ productInfo.name }}</div>
-        <div class="sku">规格:{{ productInfo.unit }}</div>
+        <div class="sku">规格:{{ productInfo.unit || productInfo.productUnit }}</div>
         <div class="price-num">
           <div class="price">¥{{ productInfo.price }}</div>
           <div class="num">x{{ productInfo.number || productInfo.num }}</div>

+ 1 - 1
src/components/order-report-card.vue

@@ -49,7 +49,7 @@ export default {
   },
   computed: {
     statusImage () {
-      return this.odRpCd.orderstatus === 1
+      return this.odRpCd.orderstatus * 1 === 1
         ? 'https://static.caimei365.com/app/mini-distribution/order-success.png'
         : ''
     }

+ 3 - 1
src/components/sales-card-list.vue

@@ -49,7 +49,9 @@ export default {
     }
   },
   methods: {
-    handlerSelect () { }
+    handlerSelect () {
+      this.$emit('handlerSelect', this.result)
+    }
   }
 }
 </script>

+ 5 - 1
src/plugin/vant.js

@@ -36,7 +36,9 @@ import {
   Area,
   AddressEdit,
   ShareSheet,
-  Switch
+  Switch,
+  Step,
+  Steps
 } from 'vant'
 
 Vue.use(Button)
@@ -76,3 +78,5 @@ Vue.use(Area)
 Vue.use(AddressEdit)
 Vue.use(ShareSheet)
 Vue.use(Switch)
+Vue.use(Step)
+Vue.use(Steps)

+ 8 - 0
src/router/index.js

@@ -278,6 +278,14 @@ const routes = [
     meta: {
       title: '线上支付'
     }
+  },
+  {
+    path: '/orderLogistics',
+    name: 'orderLogistics',
+    component: () => import('@/views/order-list/orderLogistics.vue'),
+    meta: {
+      title: '查看物流'
+    }
   }
 ]
 

+ 13 - 9
src/util/http.js

@@ -6,7 +6,6 @@ import {
 import {
   Toast
 } from 'vant'
-import router from '@/router'
 
 // 请求池-用于存储请求接口-防止重复提交
 const pendingRequestPool = new Map()
@@ -20,14 +19,12 @@ const request = axios.create({
   timeout: 15000 // 60s
 })
 
-request.defaults.headers['Content-Type'] = 'multipart/form-data'
-
 // Axios请求拦截器
 request.interceptors.request.use(
   (config) => {
     // 在发送请求之前做些什么
-    const isToken = Boolean((config.headers || {}).isToken) // 根据请求配置是否需要为请求头添加token
-    const isRepeated = Boolean((config.headers || {}).isRepeated) // 根据请求配置判断是否需要防止重复提交请求
+    const isToken = Boolean((config.headers).isToken) // 根据请求配置是否需要为请求头添加token
+    const isRepeated = Boolean((config.headers).isRepeated) // 根据请求配置判断是否需要防止重复提交请求
     Vue.$showLoading = true
     Toast.loading({
       message: '加载中...',
@@ -40,6 +37,10 @@ request.interceptors.request.use(
       // 添加token到请求头
       config.headers['X-Token'] = getToken()
     }
+    // console.log(config)
+    if (!config.headers['Content-Type']) {
+      config.headers['Content-Type'] = 'multipart/form-data'
+    }
     if (isRepeated) {
       // 防止重复提交请求
       const requestObject = {
@@ -90,9 +91,9 @@ request.interceptors.response.use(
     } = response.data
     // 判断状态码
     if (code === -99) {
-      window.sessionStorage.clear() // 移除Cookie中的缓存Token信息
-
-      router.redirect('/')
+      window.sessionStorage.removeItem('MyUsersStore') // 移除sessionStorage中的缓存
+      window.sessionStorage.clear()
+      window.location.href = '/pwlogin'
       Toast.fail('会话过期,请重新登陆')
       return Promise.reject(new Error('会话过期,请重新登陆'))
     } else if (code === 500) {
@@ -108,7 +109,10 @@ request.interceptors.response.use(
 
       return Promise.reject(new Error('未知错误,请联系管理员!'))
     } else {
-      Toast.success(msg)
+      Toast.loading({
+        message: '加载中...',
+        forbidClick: true
+      })
       return Promise.resolve(data)
     }
   },

+ 9 - 4
src/views/goods-information/components/infoCell.vue

@@ -16,16 +16,16 @@
             </div>
           </div>
           <div v-if="infoType === 2" class="video">
-            <video :src="item.fileUrl" width="100%" height="100%"></video>
+            <video :src="item.fileUrl" width="100%" height="100%" controls webkit-playsinline="true" playsinline="true"></video>
           </div>
           <div v-if="infoType === 3" class="fileList">
             <div class="list">
-              <van-image></van-image>
+              <van-image :src="'https://static.caimei365.com/app/mini-distribution/PDF.png'"></van-image>
               <div class="file-info">
                 <div class="file-name">{{ item.fileName }}</div>
                 <div class="file-time">
                   <span>{{ item.addTime }}</span>
-                  <span>预览文件</span>
+                  <span @click="handlerPreviewFile(item)">预览文件</span>
                 </div>
               </div>
             </div>
@@ -65,6 +65,11 @@ export default {
       }
       return infoType[this.infoType]
     }
+  },
+  methods: {
+    handlerPreviewFile (item) {
+      window.location.href = item.fileUrl
+    }
   }
 }
 </script>
@@ -137,7 +142,7 @@ export default {
             height: 8.8vw;
           }
           .file-info {
-            width: 58.4vw;
+            width: 80.4vw;
             .file-name {
               height: 8.8vw;
               width: 100%;

+ 23 - 3
src/views/goods-information/detail.vue

@@ -2,7 +2,7 @@
   <div>
     <nav-bar title="商品资料" @click-left="$router.back()"/>
     <div class="title">
-      <van-image :src="productImage"></van-image>
+      <van-image :src="productInfo.imageList[0].image"></van-image>
       <div class="store-title">
         {{productName}}
       </div>
@@ -17,7 +17,8 @@
 </template>
 
 <script>
-import { archiveDetail } from '../../api/userApi/goods-information'
+import { archiveDetail } from '@/api/userApi/goods-information'
+import { productDetail } from '@/api/institutionApi/product'
 import infoCell from './components/infoCell.vue'
 export default {
   components: {
@@ -29,20 +30,39 @@ export default {
       imageArchiveList: [],
       videoArchiveList: [],
       productImage: '',
-      productName: ''
+      productName: '',
+      productInfo: {}
     }
   },
   computed: {
     queryId () {
       return this.$route.query.archiveId
+    },
+    productId () {
+      return this.$route.query.productId
+    },
+    formData () {
+      return {
+        productId: this.productId,
+        typeId: 0,
+        userId: this.$store.getters.userId
+      }
     }
   },
+  mounted () {
+    this.archiveDetail()
+  },
   methods: {
     async archiveDetail () {
       const data = await archiveDetail({ userId: this.$store.getters.userId, archiveId: this.queryId })
+      this.productDetail()
       this.fileArchiveList = data.fileArchiveList
       this.imageArchiveList = data.imageArchiveList
       this.videoArchiveList = data.videoArchiveList
+    },
+    async productDetail () {
+      const data = await productDetail(this.formData)
+      this.productInfo = data
     }
   }
 }

+ 61 - 56
src/views/goods-information/index.vue

@@ -1,56 +1,61 @@
-<template>
-  <div class="goods_info">
-    <div style="position: sticky;top: 0;z-index: '66';">
-      <nav-bar title="商品资料" @click-left="$router.back()"/>
-      <van-search v-model="formData.productName" placeholder="请输入搜索关键词" />
-    </div>
-    <div class="content" v-for="good, index in goodsList" :key="index">
-      <goods-card @handlerEmit="handlerEmit" :storeInfo="good"/>
-    </div>
-  </div>
-</template>
-
-<script>
-import { getArchiveList } from '../../api/userApi/goods-information'
-
-export default {
-  data () {
-    return {
-      formData: {
-        productName: '',
-        pageNum: 1,
-        pageSize: 10
-      },
-      hasNextPage: false,
-      goodsList: []
-    }
-  },
-  mounted () {
-    this.getArchiveList()
-  },
-  methods: {
-    handlerEmit ($event) {
-      this.$router.push(`/goods-information-detail?archiveId=${$event.archiveId}`)
-    },
-    async getArchiveList () {
-      const { data: results, hasNextPage } = await getArchiveList(this.formData)
-      this.hasNextPage = hasNextPage
-      this.goodsList = results
-    }
-  }
-}
-</script>
-
-<style scoped lang="scss">
-::v-deep .van-search__content {
-  background: #fff;
-  border: 1px solid #B2B2B2;
-}
-.goods_info {
-  background: #fff;
-  .content {
-    padding: 0 3.2vw;
-  }
-}
-
-</style>
+<template>
+  <div class="goods_info">
+    <div style="position: sticky;top: 0;z-index: '66';">
+      <nav-bar title="商品资料" @click-left="$router.back()"/>
+      <van-search v-model="formData.productName" placeholder="请输入搜索关键词" />
+    </div>
+    <div class="content" v-for="good, index in goodsList" :key="index">
+      <goods-card @handlerEmit="handlerEmit" :storeInfo="good"/>
+    </div>
+  </div>
+</template>
+
+<script>
+import { getArchiveList } from '../../api/userApi/goods-information'
+
+export default {
+  data () {
+    return {
+      formData: {
+        productName: '',
+        pageNum: 1,
+        pageSize: 10
+      },
+      hasNextPage: false,
+      goodsList: []
+    }
+  },
+  mounted () {
+    this.getArchiveList()
+  },
+  methods: {
+    handlerEmit ($event) {
+      this.$router.push(`/goods-information-detail?archiveId=${$event.archiveId}&productId=${$event.productId}`)
+    },
+    async getArchiveList () {
+      const j = this.$store.getters.isManage ? { id: this.$store.getters.userInfo.id } : { parentId: this.$store.getters.userInfo.id }
+      const form = {
+        ...this.formData,
+        ...j
+      }
+      const data = await getArchiveList(form)
+      this.hasNextPage = data.hasNextPage
+      this.goodsList = data.results
+    }
+  }
+}
+</script>
+
+<style scoped lang="scss">
+::v-deep .van-search__content {
+  background: #fff;
+  border: 1px solid #B2B2B2;
+}
+.goods_info {
+  background: #fff;
+  .content {
+    padding: 0 3.2vw;
+  }
+}
+
+</style>

+ 1 - 2
src/views/ins-intention-report/detail.vue

@@ -31,8 +31,7 @@
       class="detail-btn"
       v-if="
         resultInfo.cmReportingClub &&
-        !isReportDeal(resultInfo.cmReportingClub.orderStatus) &&
-        isReportAuditStatus(resultInfo.auditStatus)
+        isReportAuditStatus(resultInfo.auditStatus) && !isReportLock(resultInfo.cmReportingClub.lockStatus)
       "
     >
       <van-button color="#FF5B00" v-if="isLock === 1" @click="handlerPlaceOrder(resultInfo.cmReportingClub)">下单</van-button>

+ 7 - 4
src/views/ins-intention-report/index.vue

@@ -21,12 +21,15 @@
             <div>审核状态:<span style="color: #333333">{{ item.auditStatus | isAuditStatus }}</span></div>
             <div>锁定状态:<span style="color: #ff9100">{{ data.lockStatus | isLockStatus }}</span></div>
           </div>
-          <div v-if="!isReportDeal(data.orderStatus) && active === 0">
-            <div class="detail-btn" v-if="!isReportAuditStatus(item.auditStatus)">
+          <div v-if="active === 0">
+            <div class="change-btn" v-if="isReportAuditStatus(item.auditStatus) && !isReportLock(data.lockStatus)">
+              <van-button @click="handlerPlaceOrder(item.cmReportingClub)">下单</van-button>
               <van-button @click="handlerDetail(item)">查看详情</van-button>
             </div>
-            <div class="change-btn" v-else>
-              <van-button @click="handlerPlaceOrder(item.cmReportingClub)" v-if="isReportLock(data.lockStatus)">下单</van-button>
+            <div class="detail-btn" v-if="isReportAuditStatus(item.auditStatus) && isReportLock(data.lockStatus)">
+              <van-button @click="handlerDetail(item)">查看详情</van-button>
+            </div>
+            <div class="detail-btn" v-else>
               <van-button @click="handlerDetail(item)">查看详情</van-button>
             </div>
           </div>

+ 8 - 1
src/views/login/account-settings.vue

@@ -1,5 +1,5 @@
 <template>
-  <div>
+  <div class="setPass">
     <nav-bar title="账户设置" @click-left="$router.back()"/>
     <order-type-list :obj-cell="ObjCellLink" />
   </div>
@@ -25,3 +25,10 @@ export default {
   }
 }
 </script>
+
+<style scoped lang="scss">
+.setPass {
+  min-height: 100vh;
+  background: #fff;
+}
+</style>

+ 4 - 0
src/views/login/forgotPW.vue

@@ -30,6 +30,7 @@
 
 <script>
 import { setPassword } from '@/api/userApi/login.js'
+import { Toast } from 'vant'
 export default {
   data () {
     return {
@@ -58,8 +59,11 @@ export default {
   },
   methods: {
     async changePW () {
+      if (this.disabled) return
       try {
         await setPassword(this.formData)
+        this.$router.back()
+        Toast.success('修改成功')
       } catch (e) {
         console.log(e)
       }

+ 1 - 1
src/views/order-list/components/order-btn-type.vue

@@ -188,7 +188,7 @@ export default {
     },
     orderQuery () {
       console.log('查看物流')
-      // this.$emit('orderQuery')
+      this.$router.push('/orderLogistics?shopOrderId=' + this.productInfo.shopOrderId)
     },
     orderPay ($event) {
       console.log('支付订单')

+ 11 - 6
src/views/order-list/index.vue

@@ -34,7 +34,7 @@
           </div>
           <div class="order-team" v-if="activeBtn !== 2 && !isIns">
             <div class="order-name">{{ item.clubName }}</div>
-            <div class="order-author">{{ item.userName }}</div>
+            <div class="order-author">{{ item.linkMan }}</div>
           </div>
         </template>
         <template #order-foot>
@@ -126,7 +126,8 @@ export default {
         groupServiceId: 0,
         listType: this.$route.query.active || 0,
         orderSubmitType: 1,
-        type: 2
+        type: 2,
+        orderState: 0
       },
       dataList: []
     }
@@ -151,9 +152,9 @@ export default {
       this.activeBtn = id
       this.formData.orderSubmitType = id
       const j =
-        id === 1
-          ? { id: this.$store.getters.userInfo.id }
-          : { parentId: this.$store.getters.userInfo.id }
+      id === 1
+        ? { id: this.$store.getters.userInfo.id }
+        : { parentId: this.$store.getters.userInfo.id }
       const form = {
         ...this.formData,
         ...j
@@ -175,7 +176,11 @@ export default {
       const data = await orderList(form)
       this.dataList = data
     },
-    handlerOrderStatus () {
+    handlerOrderStatus ($event) {
+      if (this.isIns) {
+        this.formData.orderState = $event
+        return this.orderInsList()
+      }
       this.handlerManage(this.activeBtn)
     },
     orderCancel () {

+ 222 - 0
src/views/order-list/orderLogistics.vue

@@ -0,0 +1,222 @@
+<template>
+  <div>
+    <nav-bar title="查看物流" @click-left="$router.back()" />
+    <div class="store-club">
+      <div class="store">
+        <van-image :src="shopOrderList[0].shopLogo"></van-image>
+        <div class="title">{{ shopOrderList[0].shopName }}</div>
+      </div>
+      <div class="goods-card">
+        <van-image :src="shopOrderList[0].logisticsRecordList[0].image"></van-image>
+        <div class="info">
+          <div class="name">{{ shopOrderList[0].logisticsRecordList[0].productName }}</div>
+          <div class="sum">购买数量:{{ shopOrderList[0].logisticsRecordList[0].buyNum }}</div>
+          <div class="good-sum">已发货数量:{{ shopOrderList[0].logisticsRecordList[0].num }}</div>
+        </div>
+      </div>
+    </div>
+    <div class="logisticInfo">
+      <div class="title">物流信息</div>
+      <div class="logisticInfo-no" @click="active = !active" :class="active ? 'activeLogisticInfo' : ''">
+        <div class="label">{{ logisticsInformationList[0].logisticsCompanyName }}:</div>
+        <div class="shopNo">{{ logisticsInformationList[0].nu }}</div>
+        <van-button color="#FFEEE4" @click.stop="handlerCopy">复制</van-button>
+      </div>
+      <div class="logisticInfo-time">
+        <div class="label">发货时间:</div>
+        <div class="shopNo">{{ logisticsInformationList[0].updateDate }}</div>
+      </div>
+      <div class="line"></div>
+    </div>
+    <div class="logistic-content" v-if="active">
+      <van-steps direction="vertical" :active="0" active-color="#333333" inactive-color="#999999" v-if="logisticsInformationList[0].routerList">
+        <van-step v-for="i in logisticsInformationList[0].routerList" :key="i">
+          <div>{{ r.desc }}</div>
+          <div>{{ i.time }}</div>
+        </van-step>
+      </van-steps>
+      <div class="empty" v-else>暂无物流信息</div>
+    </div>
+  </div>
+</template>
+
+<script>
+import { Toast } from 'vant'
+import { orderLogistics } from '@/api/institutionApi/order'
+export default {
+  data () {
+    return {
+      logisticsInformationList: [],
+      shopOrderList: [],
+      active: false
+    }
+  },
+  computed: {
+    shopOrderId () {
+      return this.$route.query.shopOrderId
+    }
+  },
+  mounted () {
+    this.orderLogistics()
+  },
+  methods: {
+    async orderLogistics () {
+      const data = await orderLogistics({ shopOrderId: this.shopOrderId })
+      this.logisticsInformationList = data[0].logisticsInformationList
+      this.shopOrderList = data[0].shopOrderList
+    },
+    handlerCopy () {
+      const ele = document.createElement('input')
+      ele.value = this.logisticsInformationList[0].nu
+      document.body.appendChild(ele)
+      ele.select()
+      document.execCommand('copy')
+      Toast.success('复制成功')
+      document.body.removeChild(ele)
+      this.$emit('handlerShowDialog', false)
+    }
+  }
+}
+</script>
+
+<style lang="scss" scoped>
+.store-club {
+  padding: 5.3vw 3.2vw 0 3.2vw;
+  box-sizing: border-box;
+  background: #fff;
+  .store {
+    display: flex;
+    align-items: center;
+    .van-image {
+      width: 7.5vw;
+      height: 7.5vw;
+    }
+    .title {
+      margin-left: 2vw;
+      font-size: 4.3vw;
+      font-weight: 600;
+      color: #333333;
+    }
+  }
+}
+.goods-card {
+  padding: 3.3vw 0 8vw 0;
+  background: #fff;
+  display: flex;
+  justify-content: space-between;
+  ::v-deep .van-image {
+    width: 24vw;
+    height: 24vw;
+    border-radius: 1.1vw;
+  }
+  .info {
+    width: 67.3vw;
+    .name {
+      color: #333333;
+      font-size: 3.7vw;
+      @include webkit-line-clamp(2)
+    }
+    .sum {
+      font-size: 3.2vw;
+      color: #999;
+      margin-top: 3.7vw;
+    }
+    .good-sum {
+      font-size: 3.2vw;
+      color: #999;
+      margin-top: 1vw;
+    }
+  }
+}
+.logisticInfo {
+  margin-top: 2.7vw;
+  padding: 5.3vw 3.2vw 0 3.2vw;
+  box-sizing: border-box;
+  background: #fff;
+  .title {
+    color: #333;
+    font-weight: 600;
+    font-size: 3.7vw;
+    margin-bottom: 3.2vw;
+  }
+  .logisticInfo-no, .logisticInfo-time {
+    margin-bottom: 3.2vw;
+    font-size: 3.7vw;
+    display: flex;
+    align-items: center;
+  }
+  .logisticInfo-no {
+    position: relative;
+    .van-button {
+      width: 10.7vw;
+      height: 5.3vw;
+      border-radius: 1.2vw;
+      font-size: 3.2vw;
+      color: #FF5B00 !important;
+      white-space: nowrap;
+      line-height: 5.3vw;
+      margin-left: 4vw;
+    }
+    &::after {
+      transition: .3s all;
+      content: '';
+      position: absolute;
+      right: 4.3vw;
+      top: 0;
+      width: 6.4vw;
+      height: 6.4vw;
+      background: url('https://static.caimei365.com/app/mini-distribution/bottom.png');
+      background-size: 100% 100%;
+      transform: rotate(90deg);
+    }
+  }
+  .activeLogisticInfo {
+    &::after {
+      transform: rotate(-90deg);
+    }
+  }
+  .logisticInfo-time {
+    padding-bottom: 3.2vw;
+  }
+  .label {
+    color: #999;
+  }
+  .line {
+    height: 1px;
+    width: 100%;
+    background: #E1E1E1;
+  }
+}
+.logistic-content {
+  background: #fff;
+  transition: .3s all;
+}
+.logistic-content {}
+::v-deep .van-step__icon--active {
+  width: 3.7vw;
+  height: 3.7vw;
+  background: #FFDCC8;
+  border-radius: 50%;
+  position: relative;
+  &::before {
+    content: '';
+    width: 1.6vw;
+    height: 1.6vw;
+    border-radius: 50%;
+    background: #FF5B00;
+    position: absolute;
+    right: 0;
+    bottom: 0;
+    transform: translate(-60%, -60%);
+  }
+}
+.empty {
+  padding: 5.3vw 3.2vw;
+  box-sizing: border-box;
+  font-size: 3.7vw;
+  color: #999;
+}
+::v-deep .van-step__line {
+  background: #E1E1E1 !important;
+}
+</style>

+ 6 - 4
src/views/order-report/detail.vue

@@ -17,7 +17,7 @@
         </div>
       </div>
       <van-form @submit="searchNum">
-         <van-field placeholder="请输入订单编号" v-model="formData.number"/>
+         <van-field placeholder="请输入订单编号" v-model="formData.shopOrderNo"/>
          <div class="search-btn">
           <van-button color="#FF5B00" native-type="submit">搜索</van-button>
          </div>
@@ -53,7 +53,7 @@ export default {
   data () {
     return {
       formData: {
-        number: ''
+        shopOrderNo: ''
       },
       orderList: [],
       form: {}
@@ -68,9 +68,11 @@ export default {
     }
   },
   methods: {
-    searchNum () {},
+    searchNum () {
+      this.orderReportDetail()
+    },
     compile ($event) {
-      orderReportSettle({ id: $event.id, settleStatus: 1 }).then(() => {
+      orderReportSettle({ id: $event.id, settleStatus: 3 }).then(() => {
         this.orderReportDetail()
       })
     },

+ 1 - 1
src/views/order-report/index.vue

@@ -60,7 +60,7 @@ export default {
           name: '3'
         }
       ],
-      activeName: '1',
+      activeName: '2',
       allSub: [
         {
           title: '订单数量',

+ 14 - 5
src/views/order-sales/detail.vue

@@ -1,7 +1,7 @@
 <template>
   <div class="report-detail">
     <div style="position: sticky; top: 0; z-index: 999">
-      <nav-bar title="订单报备佣金详情" @click-left="$router.back()" />
+      <nav-bar title="订单销售佣金详情" @click-left="$router.back()" />
       <div class="report-card">
         <div class="card-item">
           <div>成员姓名:<span>{{ distributionInfo.linkMan }}</span></div>
@@ -43,7 +43,7 @@
       <div class="line"></div>
     </div>
     <div style="padding-bottom: 20vw;">
-      <sales-card-list v-for="item in dataList" :key="item.id" :isChecked="isChecked" :tabListInfo="item"/>
+      <sales-card-list v-for="item in dataList" :key="item.id" :isChecked="isChecked" :tabListInfo="item" @handlerSelect="handlerSelect"/>
     </div>
     <van-popup v-model="showStartPicker" position="bottom">
       <van-datetime-picker
@@ -71,7 +71,7 @@
 </template>
 
 <script>
-import { orderSaleDetail } from '@/api/userApi/order-sale.js'
+import { orderSaleDetail, orderSaleSettle } from '@/api/userApi/order-sale.js'
 export default {
   data () {
     return {
@@ -97,7 +97,7 @@ export default {
       return this.$route.query.status
     },
     isChecked () {
-      return this.status * 1 === 1
+      return this.status * 1 === 0
     },
     id () {
       return this.$route.query.id
@@ -114,7 +114,7 @@ export default {
       return year + '年' + month + '月' + day + '日'
     },
     searchNum () {
-      console.log(this.formData)
+      this.orderSaleDetail()
     },
     onConfirm ($event, type) {
       if (type === 1) {
@@ -129,6 +129,15 @@ export default {
       const data = await orderSaleDetail(Object.assign(this.formData, { id: this.id }))
       this.distributionInfo = data.cmDistribution
       this.dataList = data.paginationVo.results
+    },
+    async handlerSelect ($event) {
+      console.log($event)
+      try {
+        await orderSaleSettle({ ids: $event.map(e => e.id) })
+        this.orderSaleDetail()
+      } catch (error) {
+        console.log(error)
+      }
     }
   }
 }

+ 1 - 1
src/views/order-sales/index.vue

@@ -62,7 +62,7 @@ export default {
         {
           id: 2,
           title: '待确认',
-          name: '1'
+          name: '0'
         },
         {
           id: 3,

+ 1 - 1
src/views/pay/components/bankLinkVue.vue

@@ -36,7 +36,7 @@ export default {
   },
   methods: {
     handlerCopy () {
-      var ele = document.createElement('input')
+      const ele = document.createElement('input')
       ele.value = this.bankLink
       document.body.appendChild(ele)
       ele.select()