Browse Source

提交代码

wangxiaogang 3 years ago
parent
commit
7c5842f524

+ 1 - 1
.env

@@ -1,5 +1,5 @@
 VUE_APP_ADMIN_TOKEN_NAME = 'admin_token'
 VUE_APP_ADMIN_TOKEN_NAME = 'admin_token'
-VUE_APP_API_URL_PREFIX = '/api/admin/'
+VUE_APP_API_URL_PREFIX = 'http://webdev-qmx_admin.jydev.jianyu360.com/api/admin/'
 VUE_APP_API_ACTION_NAME = '_action'
 VUE_APP_API_ACTION_NAME = '_action'
 VUE_APP_API_TOKEN_NAME = '_token'
 VUE_APP_API_TOKEN_NAME = '_token'
 VUE_APP_INDEX_URL = '/index'
 VUE_APP_INDEX_URL = '/index'

File diff suppressed because it is too large
+ 0 - 0
qmx_page/css/app.3d8387a8.css


File diff suppressed because it is too large
+ 0 - 0
qmx_page/css/app.8732bde8.css


+ 1 - 1
qmx_page/index.html

@@ -1 +1 @@
-<!DOCTYPE html><html><head><meta charset=utf-8><meta http-equiv=X-UA-Compatible content="IE=edge"><meta name=viewport content="width=device-width,initial-scale=1"><link rel=icon href=/favicon.ico><title>管理后台</title><link href=/css/app.3d8387a8.css rel=preload as=style><link href=/css/chunk-vendors.146ef057.css rel=preload as=style><link href=/js/app.eca03044.js rel=preload as=script><link href=/js/chunk-vendors.dbdfae2e.js rel=preload as=script><link href=/css/chunk-vendors.146ef057.css rel=stylesheet><link href=/css/app.3d8387a8.css rel=stylesheet></head><body><noscript><strong>We're sorry but doesn't work properly without JavaScript enabled. Please enable it to continue.</strong></noscript><div id=loading><div class=spinner><div class=rect1></div><div class=rect2></div><div class=rect3></div><div class=rect4></div><div class=rect5></div></div></div><div id=app></div><script src=/js/chunk-vendors.dbdfae2e.js></script><script src=/js/app.eca03044.js></script></body></html>
+<!DOCTYPE html><html><head><meta charset=utf-8><meta http-equiv=X-UA-Compatible content="IE=edge"><meta name=viewport content="width=device-width,initial-scale=1"><link rel=icon href=/favicon.ico><title>管理后台</title><link href=/css/app.8732bde8.css rel=preload as=style><link href=/css/chunk-vendors.146ef057.css rel=preload as=style><link href=/js/app.9b1b4db5.js rel=preload as=script><link href=/js/chunk-vendors.dbdfae2e.js rel=preload as=script><link href=/css/chunk-vendors.146ef057.css rel=stylesheet><link href=/css/app.8732bde8.css rel=stylesheet></head><body><noscript><strong>We're sorry but doesn't work properly without JavaScript enabled. Please enable it to continue.</strong></noscript><div id=loading><div class=spinner><div class=rect1></div><div class=rect2></div><div class=rect3></div><div class=rect4></div><div class=rect5></div></div></div><div id=app></div><script src=/js/chunk-vendors.dbdfae2e.js></script><script src=/js/app.9b1b4db5.js></script></body></html>

File diff suppressed because it is too large
+ 0 - 0
qmx_page/js/app.9b1b4db5.js


File diff suppressed because it is too large
+ 0 - 0
qmx_page/js/app.eca03044.js


+ 18 - 0
src/assets/css/common.css

@@ -613,6 +613,21 @@ textarea:-ms-input-placeholder {
 .contract-model .ivu-modal, .piao-model .ivu-modal, .tui-model .ivu-modal {
 .contract-model .ivu-modal, .piao-model .ivu-modal, .tui-model .ivu-modal {
   width: 520px!important;
   width: 520px!important;
 }
 }
+.contract-model .ivu-modal-body {
+  padding: 32px;
+}
+.invoice-model .ivu-modal-footer {
+  display: block;
+}
+.invoice-model .ivu-modal-footer div {
+  display: flex;
+  align-items: center;
+  justify-content: space-between;
+}
+.invoice-model .ivu-modal-footer .ivu-btn {
+  width: 65px;
+  height: 35px;
+}
 .ivu-modal .ivu-modal-content .ivu-modal-footer button+button {
 .ivu-modal .ivu-modal-content .ivu-modal-footer button+button {
   margin-left: 20px!important;
   margin-left: 20px!important;
 }
 }
@@ -743,4 +758,7 @@ textarea:-ms-input-placeholder {
 }
 }
 .drop-infor .t-area:focus, .drop-infor .t-area:active {
 .drop-infor .t-area:focus, .drop-infor .t-area:active {
   border: 1px solid #dcdee2;
   border: 1px solid #dcdee2;
+}
+.cas-self-list .ivu-cascader-not-found-tip {
+  padding: 5px 10px;
 }
 }

+ 53 - 0
src/components/cascader.vue

@@ -0,0 +1,53 @@
+<template>
+  <Cascader :placeholder="placeholderType" :data="dictData" v-model="values" @on-change="onChange" @on-visible-change="onVisiChange" transfer-class-name="cas-self-list" class="doms-width"></Cascader>
+</template>
+
+<script>
+export default {
+  props: {
+    placeholderType: String,
+    reqType: String,
+    type: String
+  },
+  data() {
+    return {
+      values: [],
+      dictData: [],
+      flage: true
+    }
+  },
+  methods: {
+    getDictItem() {
+      let url = this.type == '1' ? '/order/getSalesChannelItem' : '/order/getDictItem'
+      this.$request(url).data({
+        name: this.reqType
+      }).success((res) => {
+        if (res.data.data) {
+          this.dictData = res.data.data.map(v => {
+            let arrs = {}
+            if (v.children) {
+              arrs = v.children.map(s => {return { label: s.item_name, value: s.item_code }})
+            }
+            return v.children ? { label: v.item_name, value: v.item_code, children: arrs} : { label: v.item_name, value: v.item_code}
+          })
+          console.log(this.dictData)
+          this.flage = false
+        }
+      }).post()
+    },
+    onVisiChange(val) {
+      if (val && this.flage) {
+        this.getDictItem()
+      }
+    },
+    onChange(val) {
+      console.log(val)
+      this.$emit('levelChange', val)
+    }
+  }
+}
+</script>
+
+<style lang="scss" scoped>
+
+</style>

+ 2 - 1
src/components/tableLists.vue

@@ -143,7 +143,8 @@
                     if (this.bott) {
                     if (this.bott) {
                         const arr1 = []
                         const arr1 = []
                         r.data.lists.forEach(v => {
                         r.data.lists.forEach(v => {
-                            if (v.return_status !== 0 || v.company_name == '') {
+                            let source = JSON.parse(v.filter).source
+                            if (v.return_status == 1 || v.company_name == '' || source == '' && v.pay_way !== 'transferAccounts') {
                                 v._disabled = true
                                 v._disabled = true
                             }
                             }
                             arr1.push(v)
                             arr1.push(v)

+ 1 - 0
src/plugins/request.js

@@ -59,6 +59,7 @@ class ActionRequest {
     _tipError = true
     _tipError = true
     _dataType = 'json'
     _dataType = 'json'
     _contentType = 'application/x-www-form-urlencoded'
     _contentType = 'application/x-www-form-urlencoded'
+    // _contentType = 'multipart/form-data;boundary=WebAppBoundary'
     _success = null
     _success = null
     _error = null
     _error = null
     _complete = null
     _complete = null

+ 361 - 33
src/views/order/components/batchOrder.vue

@@ -1,10 +1,63 @@
 <template>
 <template>
   <div class="two-child">
   <div class="two-child">
-    <Modal title="回款流水" v-model="hShow" class-name="order-model other-model" :mask-closable="false" @on-visible-change="visibleChange">
+    <!-- 新增回款信息 -->
+    <Modal title="新增回款信息" v-model="asdShow" class-name="order-model other-model" :mask-closable="false" @on-visible-change="visibleChange">
+      <Form ref="returnCash" :model="returnCash" :rules="ruleValidate" :show-message="false" :label-width="110">
+        <h3>关联订单回款明细</h3>
+        <FormItem label="支付方式" prop="payType">
+          <Select v-model="returnCash.payType" placeholder="请选择支付方式">
+            <Option v-for="item in payCashStatus" :value="item.v" :key="item.v">{{ item.n }}</Option>
+          </Select>
+        </FormItem>
+        <FormItem label="银行流水号" prop="serialNumber">
+          <Input v-model="returnCash.serialNumber" placeholder="请选择银行流水号" @click.native="serialChange" readonly></Input>
+        </FormItem>
+        <div v-if="returnCash.serialNumber">
+          <FormItem label="回款时间" prop="returnTime">
+            <Input v-model="returnCash.returnTime" readonly></Input>
+          </FormItem>
+          <FormItem label="回款银行" prop="returnBank">
+            <Input v-model="returnCash.returnBank" readonly></Input>
+          </FormItem>
+          <FormItem label="流水金额(元)" prop="serialCash">
+            <Input v-model="returnCash.serialCash" readonly></Input>
+          </FormItem>
+          <FormItem label="支付凭证" prop="serialCash">
+            <b-upload 
+              ref="uploadRef1"
+              @fileData="fileData" 
+              :placeholdered="'请上传凭证'"
+              :accepted="'.jpg,.png,.jpeg'"
+              :formated="['jpg','png','jpeg']"
+              :multipled="false"
+            ></b-upload>
+          </FormItem>
+          <h3>关联订单回款明细</h3>
+          <Table 
+            ellipsis
+            size="small"
+            class="batch-tab-b"
+            :loading="loading2" 
+            :columns="columns2" 
+            :data="selectData"
+            v-if="!hShow"
+          ></Table>
+          <FormItem label="回款说明" style="margin-top:20px">
+            <Input type="textarea" v-model="returnCash.remark" placeholder="无回款说明" :autosize="{minRows: 2,maxRows: 5}" readonly></Input>
+          </FormItem>
+        </div>
+      </Form>
+      <div slot="footer">
+        <Button type="primary" size="large" @click="batchConfirm" :disabled="isDisable">确定</Button>
+        <Button size="large" @click="visibleChange(false)">取消</Button>
+      </div>
+    </Modal>
+    <!-- 回款流水弹框 -->
+    <Modal title="回款流水" v-model="hShow" class-name="order-model other-model" :mask-closable="false">
+      <Input search enter-button="搜索" class="inpt-sear" @on-search="onSearch" placeholder="请输入户名查询回款流水" />
       <Table 
       <Table 
         ellipsis 
         ellipsis 
         :loading="loading1" 
         :loading="loading1" 
-        ref="selection" 
         :columns="columns" 
         :columns="columns" 
         :data="selectList"
         :data="selectList"
         :border="false"
         :border="false"
@@ -17,39 +70,149 @@
         v-show="total > 10"
         v-show="total > 10"
       />
       />
       <div slot="footer">
       <div slot="footer">
-        <Button type="primary" size="large" @click="batchConfirm" :disabled="isDisable">确定</Button>
-        <Button size="large" @click="visibleChange(false)">取消</Button>
+        <Button type="primary" size="large" @click="onConfirm" :disabled="isDisable">确定</Button>
+        <Button size="large" @click="hShow = false">取消</Button>
       </div>
       </div>
     </Modal>
     </Modal>
   </div>
   </div>
 </template>
 </template>
 
 
 <script>
 <script>
+import bUpload from '@/components/uploadFile.vue'
 export default {
 export default {
   props: {
   props: {
-    selectName: {},
     selectData: {},
     selectData: {},
-    status: Boolean
+    status: Boolean,
+    type: String
+  },
+  components: {
+    bUpload
   },
   },
-  created() {},
   methods: {
   methods: {
-    getData() {
+    fixedNum(val) {
+      return val ? Number(parseFloat(val * 100).toFixed(0)) : 0
+    },
+    inited() {
+      Object.keys(this.returnCash).forEach(key => {
+        if (key == 'payType') {
+          return
+        } else {
+          this.returnCash[key] = ''
+        }
+      })
+    },
+    init() {
+      if (this.type == 'single') {
+        this.selectName = this.selectData.company_name
+        this.selectId = this.selectData.id
+        this.selectOrderId.push({
+          orderId: this.selectData.id
+        })
+      } else {
+        const arr1 = [], arr2 = [], arr3 = []
+        this.selectData.forEach(v => {
+          if (v.company_name || v.id) {
+            arr1.push(v.company_name) 
+            arr2.push(v.id) 
+            arr3.push({
+              orderId: v.id
+            }) 
+          }
+        })
+        this.selectName = arr1[0]
+        this.selectId = arr2
+        this.selectOrderId = arr3
+      }
+    },
+    localed(val) {
+      return val.toLocaleString('zh', { style:'currency', currency:'CNY' })
+    },
+    surplusData() {
+      this.init()
+      this.$request('/order/surplusPrice').data(
+        {
+          orderArr: this.selectOrderId
+        }
+      ).success((res) => {
+        if (res.data) {
+          if (this.type == 'single') {
+            console.log(this.selectData)
+            if (this.returnCash.serialCash * 100 == res.data.price) {
+              this.selectData.monery = res.data.orderArr[0].money
+              this.selectData._readonly = true
+            } else if (this.returnCash.serialCash * 100 > res.data.price) {
+              this.selectData.monery = ''
+              this.selectData._readonly = false
+            }
+          } else {
+            this.selectData.forEach((v, i) => {
+              if (this.returnCash.serialCash * 100 == res.data.price) {
+                res.data.orderArr.forEach(s => {
+                  if (String(s.orderId) === String(v.id)) {
+                    v.monery = ''
+                    v.monery += (s.money / 100).toString()
+                  } else {
+                    v.monery += ''
+                  }
+                })
+                v._readonly = true
+              } else if (this.returnCash.serialCash * 100 > res.data.price) {
+                let arrs = this.selectData.length, sums = 0
+                if (this.selectData.length > 1 && arrs == i + 1) {
+                  res.data.orderArr.forEach(s => {
+                    if (String(s.orderId) !== String(this.selectData[i].id)) {
+                      sums += s.money
+                    }
+                  })
+                  console.log(sums)
+                  this.selectData[i]._readonly = true
+                  this.selectData[i].monery = (this.returnCash.serialCash * 100 - sums) / 100
+                } else {
+                  v.monery = ''
+                  v._readonly = false
+                }
+              }
+            })
+          }
+        }
+      }).post()
+    },
+    getData(val) {
+      this.init()
       this.loading1 = true
       this.loading1 = true
       let obj = {
       let obj = {
-          offset: (this.page - 1) * this.pageSize,
-          pageSize: this.pageSize,
-          corporateName: String(this.selectName)
+        offset: (this.page - 1) * this.pageSize,
+        pageSize: this.pageSize,
+        corporateName: val ? val : this.selectName
       }
       }
       this.$request('/order/collectionFlow').data(obj).success((res) => {
       this.$request('/order/collectionFlow').data(obj).success((res) => {
-          if (res.data.list) {
-            this.selectList = res.data.list
-            this.total = res.data.total
-            this.loading1 = false
-            this.hShow = true
-          }
+        if (res.data.list) {
+          this.selectList = res.data.list
+          this.total = res.data.total
+          this.loading1 = false
+          this.hShow = true
+          this.flage = false
+        }
       }).post()
       }).post()
     },
     },
-    batchConfirm() {
+    onSearch(val) {
+      this.getData(val)
+    },
+    serialChange() {
+      if (this.flage) {
+        this.getData()
+      } else {
+        if (this.selectList.length == 0) {
+          this.hShow = false
+        } else {
+          this.hShow = true
+        }
+      }
+    },
+    fileData(val) {
+      this.returnCash.returnVoucherUrl = val
+    },
+    onConfirm() {
       if (this.huiIds.length == 0) {
       if (this.huiIds.length == 0) {
         this.$Notice.warning({
         this.$Notice.warning({
           title: '警告提示',
           title: '警告提示',
@@ -58,22 +221,43 @@ export default {
         })
         })
         return
         return
       }
       }
-      let url = '', obj = {}
-      if (this.status) {
-        url = '/order/relationReturnRecord'
-        obj = {
-          orderCode: String(this.selectData),
-          id: String(this.huiIds.id)
-        }
-      } else {
-        url = '/order/editBatchReturnMoneyInfo'
-        obj = {
-          transactionId: String(this.huiIds.id),
-          orderIds: String(this.selectData)
-        }
+      console.log(this.huiIds)
+      this.surplusData()
+      this.returnCash.serialNumber = this.huiIds.BNKFLW
+      this.returnCash.returnTime = this.huiIds.BNKTIM
+      this.returnCash.returnBank = this.huiIds.BNKNAM
+      this.returnCash.serialCash = this.huiIds.TRSBAL
+      this.returnCash.remark = this.huiIds.NUSAGE
+      setTimeout(() => {
+        this.hShow = false
+      }, 500)
+    },
+    batchConfirm() {
+      const arr1 = [], arr2 = []
+      this.selectData.forEach(v => {
+        arr1.push(this.fixedNum(v.monery))
+        arr2.push({
+          orderId: v.id,
+          money: this.fixedNum(v.monery),
+        })
+      })
+      if (arr1.indexOf(0) > -1) {
+        this.$Notice.warning({
+          title: '警告提示',
+          desc: "请输入关联订单回款金额!"
+        })
+        return
+      }
+       
+      let obj = {
+        transactionId: String(this.huiIds.id),
+        orderArr: arr2,
+        returnVoucherUrl: this.returnCash.returnVoucherUrl
       }
       }
-      this.$request(url).data(obj).success((res) => {
+      console.log(obj)
+      this.$request('/order/editBatchReturnMoneyInfo').data(obj).success((res) => {
         this.hShow = false
         this.hShow = false
+        this.asdShow = false
         this.huiIds = []
         this.huiIds = []
         this.$Notice.success({
         this.$Notice.success({
           title: '回款结果',
           title: '回款结果',
@@ -90,14 +274,17 @@ export default {
     },
     },
     visibleChange(val) {
     visibleChange(val) {
       if (val) {
       if (val) {
+        this.flage = true
         return
         return
       } else {
       } else {
         this.hShow = false
         this.hShow = false
+        this.asdShow = false
         this.huiIds = []
         this.huiIds = []
         this.page = 1
         this.page = 1
         this.pageSize = 10
         this.pageSize = 10
         setTimeout(() => {
         setTimeout(() => {
           this.selectList = []
           this.selectList = []
+          this.inited()
         }, 300)
         }, 300)
       }
       }
     }
     }
@@ -105,13 +292,32 @@ export default {
   data () {
   data () {
     return {
     return {
       hShow: false,
       hShow: false,
+      asdShow: false,
       loading1: false,
       loading1: false,
+      loading2: false,
       isDisable: false,
       isDisable: false,
       page: 1,
       page: 1,
+      flage: true,
       pageSize: 10,
       pageSize: 10,
       total: 0,
       total: 0,
+      selectId: [],
+      selectOrderId: [],
+      selectName: [],
       selectList: [],
       selectList: [],
       huiIds: [],
       huiIds: [],
+      returnCash: {
+        payType: '1',
+        serialNumber: '',
+        returnTime: '',
+        returnBank: '',
+        serialCash: '',
+        returnVoucherUrl: '',
+        remark: ''
+      },
+      ruleValidate: {},
+      payCashStatus: [
+        {v: '1', n: '对公转账'}
+      ],
       columns: [
       columns: [
         {
         {
           title: '#',
           title: '#',
@@ -138,7 +344,7 @@ export default {
           }
           }
         },
         },
         {
         {
-            title: '金额',
+            title: '金额(元)',
             key: 'TRSBAL',
             key: 'TRSBAL',
             align: 'center'
             align: 'center'
         },
         },
@@ -151,6 +357,115 @@ export default {
             title: '到账时间',
             title: '到账时间',
             key: 'BNKTIM',
             key: 'BNKTIM',
             align: 'center'
             align: 'center'
+        },
+        {
+            title: '银行流水号',
+            key: 'BNKFLW',
+            align: 'center',
+            render: (h, {row}) => {
+              return h('span', row.BNKFLW ? row.BNKFLW : '-')
+            }
+        }
+      ],
+      columns2: [
+        {
+          title: '序号',
+          type: 'index',
+          width: 80,
+          align: 'center',
+        },
+        {
+            title: '关联订单编号',
+            key: 'order_code',
+            align: 'center'
+        },
+        {
+          title: '产品类型',
+          key: 'product_type',
+          width: '170',
+          align: 'center',
+          render: (h, {row}) => {
+            let words = row.product_type
+            // 超级订阅
+            let vipType = ''
+            let vipT = row.vip_type
+            if (vipT == 0) {
+                vipType = '(试用)'
+            } else if (vipT == 1) {
+                vipType = '(续费)'
+            } else if (vipT == 2) {
+                vipType = '(升级)'
+            } else if (vipT == null) {
+                if (row.pay_way == "trial") {
+                    vipType = '(试用)'
+                } else {
+                    vipType = '(购买)'
+                }
+            }
+            // 大会员
+            let bigVip = ''
+            let levels = JSON.parse(row.filter).level
+            if (levels == 1) {
+                bigVip = '(专家版)'
+            } else if (levels == 2) {
+                bigVip = '(智慧版)'
+            } else if (levels == 3) {
+                bigVip = '(商机版)'
+            } else if (levels == 4) {
+                bigVip = '(试用版)'
+            } else if (levels == 6) {
+                bigVip = '(商机版2.0)'
+            } else if (levels == 7) {
+                bigVip = '(专家版2.0)'
+            }
+            // 省份订阅包
+            let bookType = ''
+            let book = row.vip_type
+            if (book == 1) {
+                bookType = '(续费)'
+            } else if (book == 2) {
+                bookType = '(升级)'
+            } else {
+                bookType = '(购买)'
+            }
+            if (words == 'VIP订阅' || words == 'vip订阅') {
+                return h('span', '超级订阅' + vipType)
+            } else if (words == '大会员') {
+                return h('span', '大会员' + bigVip)
+            } else if (words == '省份订阅包') {
+                return h('span', '省份订阅包' + bookType)
+            } else {
+                return h('span', row.product_type)
+            } 
+          }
+        },
+        {
+          title: '回款金额(元)',
+          key: 'monery',
+          align: 'center',
+          render: (h, {row, index}) => {
+            return h('Input', {
+              props: {
+                elementId: 're-moey',
+                placeholder: '请输入关联订单回款金额',
+                value: row.monery,
+                readonly: row._readonly
+              },
+              on:{
+                'on-change':(event) => {
+                  if (this.type == 'single') {
+                    this.selectData.monery = event.currentTarget.value
+                  } else {
+                    this.selectData.forEach(v => {
+                      if (row.id == v.id) {
+                          v.monery = event.currentTarget.value
+                      }
+                    })
+                  }
+                }
+              }
+            })
+          }
         }
         }
       ]
       ]
     }
     }
@@ -163,4 +478,17 @@ export default {
   text-align: right;
   text-align: right;
   margin-top: 20px;
   margin-top: 20px;
 }
 }
+h3 {
+  margin-bottom: 20px;
+  color: rgb(54, 163, 247);
+  font-weight: 700;
+}
+::v-deep #re-moey {
+  text-align: center;
+}
+.inpt-sear {
+  width: 500px;
+  margin: 0 auto;
+  margin-bottom: 14px;
+}
 </style>
 </style>

+ 63 - 23
src/views/order/components/bigOrder.vue

@@ -2,6 +2,12 @@
     <div class="two-child">
     <div class="two-child">
         <Modal title="创建大会员订单" v-model="bShow" class-name="order-model" :mask-closable="false" @on-visible-change="visibleChange">
         <Modal title="创建大会员订单" v-model="bShow" class-name="order-model" :mask-closable="false" @on-visible-change="visibleChange">
             <Form ref="member" :model="member" :rules="ruleValidate" :show-message="false" :label-width="121">
             <Form ref="member" :model="member" :rules="ruleValidate" :show-message="false" :label-width="121">
+                <FormItem label="销售渠道" prop="salesChannel">
+                    <v-cascader placeholderType="请选择销售渠道" reqType="销售渠道" @levelChange="salesChange"></v-cascader>
+                </FormItem>
+                <FormItem label="下单渠道" prop="orderChannel">
+                    <v-cascader placeholderType="请选择下单渠道" reqType="下单渠道" @levelChange="channelChange"></v-cascader>
+                </FormItem>
                 <FormItem label="订单时间" prop="createTime">
                 <FormItem label="订单时间" prop="createTime">
                     <date-sigle ref="sigleRef2" :dateType="'datetime'" :placeholderd="'请选择订单时间'" @startDate="orderDate" :overTime="0"></date-sigle>
                     <date-sigle ref="sigleRef2" :dateType="'datetime'" :placeholderd="'请选择订单时间'" @startDate="orderDate" :overTime="0"></date-sigle>
                 </FormItem>
                 </FormItem>
@@ -204,6 +210,9 @@
                             <Option v-for="item in agreeStatus" :value="item.v" :key="item.v">{{ item.n }}</Option>
                             <Option v-for="item in agreeStatus" :value="item.v" :key="item.v">{{ item.n }}</Option>
                         </Select>
                         </Select>
                     </FormItem>
                     </FormItem>
+                    <FormItem label="签约主体" prop="paybackChange">
+                        <v-cascader placeholderType="签约主体" reqType="签约主体" @levelChange="paybackChange"></v-cascader>
+                    </FormItem>
                     <FormItem label="协议签订时间" v-show="member.agreementStatus == '1'">
                     <FormItem label="协议签订时间" v-show="member.agreementStatus == '1'">
                         <date-sigle ref="sigleRef" :dateType="'date'" :placeholderd="'请选择协议签订时间'" @startDate="agreeDate" :overTime="0"></date-sigle>
                         <date-sigle ref="sigleRef" :dateType="'date'" :placeholderd="'请选择协议签订时间'" @startDate="agreeDate" :overTime="0"></date-sigle>
                     </FormItem>
                     </FormItem>
@@ -211,17 +220,17 @@
                         <Input v-model="member.agreementNumber" type="text" placeholder="请输入协议编号"></Input>
                         <Input v-model="member.agreementNumber" type="text" placeholder="请输入协议编号"></Input>
                     </FormItem>
                     </FormItem>
                     <FormItem label="合同" class="chuan-pay">
                     <FormItem label="合同" class="chuan-pay">
-                        <b-upload 
-                            ref="uploadRef" 
-                            @fileData="contractFile" 
-                            :placeholdered="'请上传合同'" 
+                        <b-upload
+                            ref="uploadRef"
+                            @fileData="contractFile"
+                            :placeholdered="'请上传合同'"
                             :accepted="'.doc,.pdf,.docx,.rar,.zip,.jpg,.png,.jpeg'"
                             :accepted="'.doc,.pdf,.docx,.rar,.zip,.jpg,.png,.jpeg'"
                             :formated="['doc','pdf','docx','rar','zip','jpg','png','jpeg']"
                             :formated="['doc','pdf','docx','rar','zip','jpg','png','jpeg']"
                             :multipled="false"
                             :multipled="false"
                         ></b-upload>
                         ></b-upload>
                     </FormItem>
                     </FormItem>
                     <FormItem label="公司名称" prop="companyName">
                     <FormItem label="公司名称" prop="companyName">
-                        <Input v-model="member.companyName" type="text" :maxlength="40" placeholder="请输入公司名称"></Input>
+                        <Input v-model.trim="member.companyName" type="text" :maxlength="40" placeholder="请输入公司名称"></Input>
                     </FormItem>
                     </FormItem>
                     <FormItem label="备注">
                     <FormItem label="备注">
                         <Input v-model="member.remark" type="text" :maxlength="40" placeholder="请输入备注"></Input>
                         <Input v-model="member.remark" type="text" :maxlength="40" placeholder="请输入备注"></Input>
@@ -239,10 +248,12 @@
 <script>
 <script>
 import { ChangeDate } from '@/assets/js/date'
 import { ChangeDate } from '@/assets/js/date'
 import dateSigle from '@/components/dateSigle'
 import dateSigle from '@/components/dateSigle'
+import vCascader from '@/components/cascader'
 import bUpload from '@/components/uploadFile.vue'
 import bUpload from '@/components/uploadFile.vue'
 import { getDateSub } from '@/assets/js/dateSub'
 import { getDateSub } from '@/assets/js/dateSub'
 export default {
 export default {
-    components: { 
+    components: {
+        vCascader,
         dateSigle,
         dateSigle,
         bUpload
         bUpload
     },
     },
@@ -285,6 +296,9 @@ export default {
             this.member.cycleType = ''
             this.member.cycleType = ''
             this.member.commission = '0'
             this.member.commission = '0'
             this.member.proceduresMoney = '0'
             this.member.proceduresMoney = '0'
+            this.member.salesChannel = ''
+            this.member.orderChannel = ''
+            this.member.paybackCompany = ''
             this.sumSel = []
             this.sumSel = []
             this.sPrice = 0
             this.sPrice = 0
             this.strItems = []
             this.strItems = []
@@ -334,6 +348,15 @@ export default {
                 this.member.phone = ''
                 this.member.phone = ''
             }
             }
         },
         },
+        salesChange(val) {
+            this.member.salesChannel = val[0]
+        },
+        channelChange(val) {
+            this.member.orderChannel = val[0]
+        },
+        paybackChange(val) {
+            this.member.paybackCompany = val[0]
+        },
         reged() {
         reged() {
             this.spinShow = true
             this.spinShow = true
             this.initialized()
             this.initialized()
@@ -628,7 +651,6 @@ export default {
                     }
                     }
                     if (v.i_ispackage == 1) {
                     if (v.i_ispackage == 1) {
                         this.pacData.push(v)
                         this.pacData.push(v)
-                        console.log(this.pacData)
                     }
                     }
                 })
                 })
                 let arr1 = {
                 let arr1 = {
@@ -1331,6 +1353,9 @@ export default {
                 this.supplyDis = false
                 this.supplyDis = false
             }
             }
         },
         },
+        fixedNum(val) {
+            return val ? Number(parseFloat(val * 100).toFixed(0)) : 0
+        },
         urlReq(url, obj) {
         urlReq(url, obj) {
             this.isDisable = true
             this.isDisable = true
             this.$request(url).data(
             this.$request(url).data(
@@ -1387,26 +1412,29 @@ export default {
                     startTime: this.member.createType == 3 ? '' : this.member.beginTime,
                     startTime: this.member.createType == 3 ? '' : this.member.beginTime,
                     paySub: this.member.paySub,
                     paySub: this.member.paySub,
                     freeSub: this.member.freeSub,
                     freeSub: this.member.freeSub,
-                    bigMoney: parseInt(this.member.bigMoney * 100),
-                    subMoney: parseInt(this.member.subMoney * 100),
-                    supplyMoney: parseInt(this.member.supplyMoney * 100),
+                    bigMoney: this.fixedNum(this.member.bigMoney),
+                    subMoney: this.fixedNum(this.member.subMoney),
+                    supplyMoney: this.fixedNum(this.member.supplyMoney),
                     orderMoney: 0,
                     orderMoney: 0,
                     contractUrl: this.member.contractUrl,
                     contractUrl: this.member.contractUrl,
                     isAll: this.isAll ? 1 : this.member.contractUrl ? 3 : 2,
                     isAll: this.isAll ? 1 : this.member.contractUrl ? 3 : 2,
-                    bigPayMoney: this.member.billingMode == 0?0:parseInt(this.member.bigPayMoney * 1000 / 10),
-                    subPayMoney: this.member.billingMode == 0?0:parseInt(this.member.subPayMoney * 1000 / 10),
-                    supplyPayMoney: this.member.billingMode == 0?0:parseInt(this.member.supplyPayMoney * 1000 / 10),
+                    bigPayMoney: this.member.billingMode == 0?0:this.fixedNum(this.member.bigPayMoney),
+                    subPayMoney: this.member.billingMode == 0?0:this.fixedNum(this.member.subPayMoney),
+                    supplyPayMoney: this.member.billingMode == 0?0:this.fixedNum(this.member.supplyPayMoney),
                     createType: this.nums == 0?this.member.createType:'1',
                     createType: this.nums == 0?this.member.createType:'1',
                     comboId: this.combo_id.id,
                     comboId: this.combo_id.id,
                     serversId: this.nums == 0?String(serId):'',
                     serversId: this.nums == 0?String(serId):'',
                     serversName: this.nums == 0?String(serName):'',
                     serversName: this.nums == 0?String(serName):'',
                     serversArr: serveData,
                     serversArr: serveData,
-                    commission: parseInt(this.member.commission * 1000 / 10),
-                    proceduresMoney: parseInt(this.member.proceduresMoney * 1000 / 10),
+                    commission: this.fixedNum(this.member.commission),
+                    proceduresMoney: this.fixedNum(this.member.proceduresMoney),
                     companyName: this.member.companyName,
                     companyName: this.member.companyName,
                     agreementStatus: this.member.agreementStatus =='0'||this.member.agreementStatus =='1'?this.member.agreementStatus:999,
                     agreementStatus: this.member.agreementStatus =='0'||this.member.agreementStatus =='1'?this.member.agreementStatus:999,
                     agreementTime: this.member.agreementStatus!==''?this.member.agreementTime:'',
                     agreementTime: this.member.agreementStatus!==''?this.member.agreementTime:'',
                     agreementNumber: this.member.agreementStatus!==''?this.member.agreementNumber:'',
                     agreementNumber: this.member.agreementStatus!==''?this.member.agreementNumber:'',
+                    salesChannel: this.member.salesChannel,
+                    orderChannel: this.member.orderChannel,
+                    paybackCompany: this.member.paybackCompany,
                     remark: this.member.remark
                     remark: this.member.remark
                 }
                 }
                 console.log(obj)
                 console.log(obj)
@@ -1420,16 +1448,19 @@ export default {
                     salesperson: this.member.salesperson,
                     salesperson: this.member.salesperson,
                     paySub: this.member.paySub,
                     paySub: this.member.paySub,
                     freeSub: this.member.freeSub,
                     freeSub: this.member.freeSub,
-                    orderMoney: parseInt(this.member.orderMoney * 1000 / 10),
+                    orderMoney: this.fixedNum(this.member.orderMoney),
                     contractUrl: this.member.contractUrl,
                     contractUrl: this.member.contractUrl,
                     isAll: this.isAll ? 1 : this.member.contractUrl ? 3 : 2,
                     isAll: this.isAll ? 1 : this.member.contractUrl ? 3 : 2,
-                    payMoney: parseInt(this.member.payMoney * 1000 / 10),
-                    commission: parseInt(this.member.commission * 1000 / 10),
-                    proceduresMoney: parseInt(this.member.proceduresMoney * 1000 / 10),
+                    payMoney: this.fixedNum(this.member.payMoney),
+                    commission: this.fixedNum(this.member.commission),
+                    proceduresMoney: this.fixedNum(this.member.proceduresMoney),
                     companyName: this.member.companyName,
                     companyName: this.member.companyName,
                     agreementStatus: this.member.agreementStatus =='0'||this.member.agreementStatus =='1'?this.member.agreementStatus:999,
                     agreementStatus: this.member.agreementStatus =='0'||this.member.agreementStatus =='1'?this.member.agreementStatus:999,
                     agreementTime: this.member.agreementStatus!==''?this.member.agreementTime:'',
                     agreementTime: this.member.agreementStatus!==''?this.member.agreementTime:'',
                     agreementNumber: this.member.agreementStatus!==''?this.member.agreementNumber:'',
                     agreementNumber: this.member.agreementStatus!==''?this.member.agreementNumber:'',
+                    salesChannel: this.member.salesChannel,
+                    orderChannel: this.member.orderChannel,
+                    paybackCompany: this.member.paybackCompany,
                     remark: this.member.remark
                     remark: this.member.remark
                 }
                 }
                 this.urlReq('/order/createSubOrder', obj)
                 this.urlReq('/order/createSubOrder', obj)
@@ -1441,16 +1472,19 @@ export default {
                     billingMode: this.member.billingMode === ''?999:this.member.billingMode,
                     billingMode: this.member.billingMode === ''?999:this.member.billingMode,
                     salesperson: this.member.salesperson,
                     salesperson: this.member.salesperson,
                     serversArr: serveData,
                     serversArr: serveData,
-                    orderMoney: parseInt(this.member.orderMoney * 1000 / 10),
+                    orderMoney: this.fixedNum(this.member.orderMoney),
                     contractUrl: this.member.contractUrl,
                     contractUrl: this.member.contractUrl,
                     isAll: this.isAll ? 1 : this.member.contractUrl ? 3 : 2,
                     isAll: this.isAll ? 1 : this.member.contractUrl ? 3 : 2,
-                    payMoney: parseInt(this.member.payMoney * 1000 / 10),
-                    commission: parseInt(this.member.commission * 1000 / 10),
-                    proceduresMoney: parseInt(this.member.proceduresMoney * 1000 / 10),
+                    payMoney: this.fixedNum(this.member.payMoney),
+                    commission: this.fixedNum(this.member.commission),
+                    proceduresMoney: this.fixedNum(this.member.proceduresMoney),
                     companyName: this.member.companyName,
                     companyName: this.member.companyName,
                     agreementStatus: this.member.agreementStatus =='0'||this.member.agreementStatus =='1'?this.member.agreementStatus:999,
                     agreementStatus: this.member.agreementStatus =='0'||this.member.agreementStatus =='1'?this.member.agreementStatus:999,
                     agreementTime: this.member.agreementStatus!==''?this.member.agreementTime:'',
                     agreementTime: this.member.agreementStatus!==''?this.member.agreementTime:'',
                     agreementNumber: this.member.agreementStatus!==''?this.member.agreementNumber:'',
                     agreementNumber: this.member.agreementStatus!==''?this.member.agreementNumber:'',
+                    salesChannel: this.member.salesChannel,
+                    orderChannel: this.member.orderChannel,
+                    paybackCompany: this.member.paybackCompany,
                     remark: this.member.remark
                     remark: this.member.remark
                 }
                 }
                 this.urlReq('/order/createSupplyOrder', obj)
                 this.urlReq('/order/createSupplyOrder', obj)
@@ -1555,6 +1589,9 @@ export default {
                 commission: '0',
                 commission: '0',
                 proceduresMoney: '0',
                 proceduresMoney: '0',
                 companyName: '',
                 companyName: '',
+                salesChannel: '',
+                orderChannel: '',
+                paybackCompany: '',
                 remark: ''
                 remark: ''
             },
             },
             isAll: false,
             isAll: false,
@@ -1575,6 +1612,9 @@ export default {
                 {v: '1', n: '天'}
                 {v: '1', n: '天'}
             ],
             ],
             ruleValidate: {
             ruleValidate: {
+                salesChannel: [{ required: true }],
+                orderChannel: [{ required: true }],
+                paybackCompany: [{ required: true }],
                 phone: [{ required: true }],
                 phone: [{ required: true }],
                 level: [{ required: true }],
                 level: [{ required: true }],
                 billingMode: [{ required: true }],
                 billingMode: [{ required: true }],

+ 60 - 0
src/views/order/components/codeModel.vue

@@ -0,0 +1,60 @@
+<template>
+  <!-- 发票记录详情 -->
+  <Modal title="发票记录详情" v-model="codeShow" class-name="order-model" :mask-closable="false" :footer-hide="true">
+    <div class="classfity">
+      <span><p>发票编号:</p><i>{{codeDetail.invoice_serialnum ? codeDetail.invoice_serialnum : '--'}}</i></span>
+      <span><p>公司名称:</p><i>{{codeDetail.order_company ? codeDetail.order_company : '--'}}</i></span>
+      <span><p>申请开票日期:</p><i>{{codeDetail.apply_invoice_date ? codeDetail.apply_invoice_date : '--'}}</i></span>
+      <span><p>开票渠道:</p><i>{{codeDetail.source ? codeDetail.source : '--'}}</i></span>
+      <span><p>发票状态:</p><i>{{codeDetail.invoice_status ? codeDetail.invoice_status : '--'}}</i></span>
+      <span><p>关联订单:</p><i>{{codeDetail.order_code ? codeDetail.order_code : '--'}}</i></span>
+      <span><p>发票号码:</p><i>{{codeDetail.invoice_number ? codeDetail.invoice_number : '--'}}</i></span>
+      <span><p>开票金额:</p><i>{{codeDetail.invoice_money ? codeDetail.invoice_money : '--'}}</i></span>
+      <span><p>关联订单开票金额:</p><i>{{codeDetail.invoice_order_money ? localed(codeDetail.invoice_order_money) : '--'}}</i></span>
+      <span><p>开票日期:</p><i>{{codeDetail.billing_time ? codeDetail.billing_time : '--'}}</i></span>
+      <span><p>发票内容:</p><i>{{codeDetail.invoice_content ? codeDetail.invoice_content : '--'}}</i></span>
+      <span><p>发票类型:</p><i>{{codeDetail.invoice_variety ? codeDetail.invoice_variety : '--'}}</i></span>
+      <span><p>开票主体:</p><i>{{codeDetail.invoicing_entity ? codeDetail.invoicing_entity : '--'}}</i></span>
+      <span><p>发票抬头:</p><i>{{codeDetail.invoice_type ? codeDetail.invoice_type : '--'}}</i></span>
+      <span><p>抬头名称:</p><i>{{codeDetail.company_name ? codeDetail.company_name : '--'}}</i></span>
+      <span><p>纳税人识别号:</p><i>{{codeDetail.taxpayer_identnum ? codeDetail.taxpayer_identnum : '--'}}</i></span>
+      <span><p>邮箱地址:</p><i>{{codeDetail.mail ? codeDetail.mail : '--'}}</i></span>
+      <span><p>联系人电话:</p><i>{{codeDetail.phone ? codeDetail.phone : '--'}}</i></span>
+      <span><p>发票附件:</p>
+        <i>
+          <a :href="codeDetail?codeDetail.url:'*'" target="_blank">{{codeDetail.url?"点击查看":'--'}}</a>
+        </i>
+      </span>
+      <span><p>备注:</p><i>{{codeDetail.remark ? codeDetail.remark : '--'}}</i></span>
+      <span><p>创建人:</p><i>{{codeDetail.operator ? codeDetail.operator : '--'}}</i></span>
+      <span><p>创建时间:</p><i>{{codeDetail.create_time ? codeDetail.create_time : '--'}}</i></span>
+    </div>
+  </Modal>
+</template>
+
+<script>
+export default {
+  props: {
+    codeDetail: {}
+  },
+  data () {
+    return {
+      codeShow: false
+    }
+  },
+  methods: {
+    localed(val) {
+      return val.toLocaleString('zh', { style:'currency', currency:'CNY' })
+    }
+  }
+}
+</script>
+
+<style lang="scss" scoped>
+.classfity {
+  span {
+    display: flex;
+    line-height: 28px;
+  }
+}
+</style>

+ 6 - 3
src/views/order/components/detailModel.vue

@@ -219,13 +219,16 @@ export default {
     startDate(val) {
     startDate(val) {
       this.returned.returnTime = val
       this.returned.returnTime = val
     },
     },
+    fixedNum(val) {
+      return val ? Number(parseFloat(val * 100).toFixed(0)) : 0
+    },
     backSave() {// 新增回款信息提交
     backSave() {// 新增回款信息提交
       let obj = {
       let obj = {
         id: parseInt(this.orderDetail.id),
         id: parseInt(this.orderDetail.id),
         orderCode: this.orderDetail.order_code,
         orderCode: this.orderDetail.order_code,
         return_status: parseInt(this.backed.return_status?this.backed.return_status:0),
         return_status: parseInt(this.backed.return_status?this.backed.return_status:0),
         returnTime: this.returned.returnTime,
         returnTime: this.returned.returnTime,
-        returnMoney: parseInt(this.returned.returnMoney?this.returned.returnMoney * 1000 / 10:0),
+        returnMoney: this.fixedNum(this.returned.returnMoney),
         returnRemark: this.returned.returnRemark,
         returnRemark: this.returned.returnRemark,
         returnType: parseInt(this.returned.returnType?this.returned.returnType:0),
         returnType: parseInt(this.returned.returnType?this.returned.returnType:0),
         returnCode: this.returned.returnCode,
         returnCode: this.returned.returnCode,
@@ -292,7 +295,7 @@ export default {
     audFunc(num) {
     audFunc(num) {
       this.isDisable = true
       this.isDisable = true
       this.$request('/order/orderList/transferAccounts').data({
       this.$request('/order/orderList/transferAccounts').data({
-          pay_money: parseInt(this.funds.sum* 1000 / 10),
+          pay_money: this.fixedNum(this.funds.sum),
           order_code: this.orderDetail.order_code,
           order_code: this.orderDetail.order_code,
           courseStatus: num
           courseStatus: num
       }).showSuccessTip().success(() => {
       }).showSuccessTip().success(() => {
@@ -336,7 +339,7 @@ export default {
       }
       }
       let obj = {
       let obj = {
         orderCode: this.orderDetail.order_code,
         orderCode: this.orderDetail.order_code,
-        refundMoney: parseInt(this.models.refundMoney * 1000 / 10),
+        refundMoney: this.fixedNum(this.models.refundMoney),
         refundReason: this.models.refundReason,
         refundReason: this.models.refundReason,
         isOffline: this.isStatus == 'qmx'? 1 : 0,
         isOffline: this.isStatus == 'qmx'? 1 : 0,
         refundStatus: this.qmxed()
         refundStatus: this.qmxed()

+ 71 - 50
src/views/order/components/details.vue

@@ -43,6 +43,9 @@
                         </div>
                         </div>
                     </span>
                     </span>
                     <span><p>公司名称:</p>{{orDetails?orDetails.company_name?orDetails.company_name:'--':'--'}}</span>
                     <span><p>公司名称:</p>{{orDetails?orDetails.company_name?orDetails.company_name:'--':'--'}}</span>
+                    <span><p>签约主体:</p>{{orDetails?orDetails.return_commpany?orDetails.return_commpany:'--':'--'}}</span>
+                    <span><p>销售渠道:</p>{{orDetails?orDetails.sales_channel?orDetails.sales_channel:'--':'--'}}</span>
+                    <span><p>下单渠道:</p>{{orDetails?orDetails.order_channel_new?orDetails.order_channel_new:'--':'--'}}</span>
                     <span><p>订单类型:</p>{{orDetails?orDetails.dis_word ? '分销' : '直销':'--'}}</span>
                     <span><p>订单类型:</p>{{orDetails?orDetails.dis_word ? '分销' : '直销':'--'}}</span>
                     <span><p>订单时间:</p>{{orDetails?orDetails.create_time:'--'}}</span>
                     <span><p>订单时间:</p>{{orDetails?orDetails.create_time:'--'}}</span>
                     <span><p>录入时间:</p>{{orDetails?orDetails.entry_time?orDetails.entry_time:'--':'--'}}</span>
                     <span><p>录入时间:</p>{{orDetails?orDetails.entry_time?orDetails.entry_time:'--':'--'}}</span>
@@ -263,7 +266,7 @@
                     </span>
                     </span>
                     <span v-if="orderType == 10"><p>服务列表:</p>
                     <span v-if="orderType == 10"><p>服务列表:</p>
                         <ul v-if="orDetails.product_type == '大会员-补充包'">
                         <ul v-if="orDetails.product_type == '大会员-补充包'">
-                            <li v-for="item in supplysData" :key="item.id">{{item.name + '(补充包)'}}</li>
+                            <li v-for="(item, index) in supplysData" :key="index">{{item.name + '(补充包)'}}</li>
                         </ul>
                         </ul>
                         <ul v-else-if="orDetails.product_type == '大会员-招标文件解读'">
                         <ul v-else-if="orDetails.product_type == '大会员-招标文件解读'">
                             <li>招标文件解读(补充包)</li>
                             <li>招标文件解读(补充包)</li>
@@ -349,7 +352,7 @@
                     <span><p>支付时间:</p><i v-if="orDetails">{{orDetails.pay_time?orDetails.pay_time:'--'}}</i></span>
                     <span><p>支付时间:</p><i v-if="orDetails">{{orDetails.pay_time?orDetails.pay_time:'--'}}</i></span>
                     <span><p>支付方式:</p><i v-if="orDetails">{{orDetails.pay_way?orDetails.pay_way:'--'}}</i></span>
                     <span><p>支付方式:</p><i v-if="orDetails">{{orDetails.pay_way?orDetails.pay_way:'--'}}</i></span>
                     <span v-if="orderType == 7||orderType == 9||orderType == 10"><p>订单金额:</p>
                     <span v-if="orderType == 7||orderType == 9||orderType == 10"><p>订单金额:</p>
-                        <i :class="orDetails.order_money" v-if="orDetails">{{orDetails.order_money?localed(orDetails.order_money):localed(0.00)}}</i>
+                        <i v-if="orDetails">{{orDetails.order_money?localed(orDetails.order_money):localed(0.00)}}</i>
                     </span>
                     </span>
                     <span v-if="orderType == 1"><p>实付数量:</p>
                     <span v-if="orderType == 1"><p>实付数量:</p>
                         <i v-if="orDetails">{{orDetails.original_price?orDetails.original_price:'--'}}</i>
                         <i v-if="orDetails">{{orDetails.original_price?orDetails.original_price:'--'}}</i>
@@ -421,11 +424,14 @@
                     <i v-if="returnResed" style="color:#888">暂无回款交易详情</i>
                     <i v-if="returnResed" style="color:#888">暂无回款交易详情</i>
                     <div v-for="(item,index) in returnRes" :key="item.id" v-else>
                     <div v-for="(item,index) in returnRes" :key="item.id" v-else>
                         <p style="font-weight:700">回款 {{index + 1}}. </p>
                         <p style="font-weight:700">回款 {{index + 1}}. </p>
-                        <span><p>回款时间:</p>{{item.return_time.split(':')[0].split(' ')[0]}}</span>
+                        <span><p>回款时间:</p>{{item.return_time}}</span>
                         <span><p>回款金额:</p>{{item.return_money?localed(item.return_money/100):'--'}}</span>
                         <span><p>回款金额:</p>{{item.return_money?localed(item.return_money/100):'--'}}</span>
+                        <span><p>回款银行:</p>{{item.bank_name?item.bank_name:'--'}}</span>
                         <span><p>回款说明:</p>{{item.return_remark?item.return_remark:'--'}}</span>
                         <span><p>回款说明:</p>{{item.return_remark?item.return_remark:'--'}}</span>
                         <span><p>支付方式:</p>{{item.return_type?backpayType(item.return_type):'--'}}</span>
                         <span><p>支付方式:</p>{{item.return_type?backpayType(item.return_type):'--'}}</span>
                         <span><p>支付单号:</p>{{item.return_code?item.return_code:'--'}}</span>
                         <span><p>支付单号:</p>{{item.return_code?item.return_code:'--'}}</span>
+                        <span><p>银行流水号:</p>{{item.bank_flow?item.bank_flow:'--'}}</span>
+                        <span><p>流水金额:</p>{{item.flow_money?localed(item.flow_money/100*100):'--'}}</span>
                         <span><p>支付凭证:</p>
                         <span><p>支付凭证:</p>
                             <a 
                             <a 
                                 :href="item.return_voucher_url?item.return_voucher_url:'*'" 
                                 :href="item.return_voucher_url?item.return_voucher_url:'*'" 
@@ -442,47 +448,24 @@
             </div>
             </div>
             <Divider />
             <Divider />
         </div>
         </div>
+        <!-- 发票信息 -->
         <div class="infor-card">
         <div class="infor-card">
             <div class="cont">
             <div class="cont">
                 <div class="tit">发票信息</div>
                 <div class="tit">发票信息</div>
-                <div class="classfity">
-                    <span><p>发票类型:</p>
-                        <i v-if="orDetails">{{orDetails.applybill_status == '已开具'?orDetails.invoice?orDetails.invoice.invoice_type:'--':'--'}}</i>
-                        <i v-else>--</i>
-                    </span>
-                    <span><p>发票内容:</p>
-                        <i v-if="orDetails && (orDetails.applybill_status == '已申请' || orDetails.applybill_status == 1)">明细</i>
-                        <i v-else>--</i>
-                    </span>
-                    <span><p>发票抬头:</p>
-                        <i v-if="orDetails">{{orDetails.applybill_status=="已开具"?'--':orderType == 1?orDetails.invoice?orDetails.invoice.invoice_rise:'--':orDetails.invoice?orDetails.invoice.invoice_type:'--'}}</i>
-                        <i v-else>--</i>
-                    </span>
-                    <span v-if="orDetails.invoice?orDetails.invoice.invoice_rise=='单位' || orDetails.invoice.invoice_type=='单位':''">开票单位名称: &nbsp;<i v-if="orDetails">{{orDetails.invoice?orDetails.invoice.company_name?orDetails.invoice.company_name:'--':'--'}}</i></span>
-                    <span v-if="orDetails.invoice?orDetails.invoice.invoice_rise=='单位' || orDetails.invoice.invoice_type=='单位':''">纳税人识别号: &nbsp;<i v-if="orDetails">{{orDetails.invoice?orDetails.invoice.taxpayer_identnum || orDetails.invoice.apply_tinumber:'--'}}</i></span>
-                    <span><p>邮箱地址:</p>
-                        <i v-if="orDetails">{{orDetails.invoice?((orDetails.invoice.mail?orDetails.invoice.mail:'--') || (orDetails.invoice.email?orDetails.invoice.email:'--')):'--'}}</i>
-                    </span>
-                    <span v-if="orderType == 1"><p>发票状态:</p>
-                        <i :class="orDetails.applybill_status | invoiceColor" v-if="orDetails">{{orDetails.applybill_status | invoiceStas}}</i>
-                    </span>
-                    <span v-else><p>发票状态:</p>
-                        <i :class="orDetails.applybill_status | applyClor" v-if="orDetails">{{orDetails.applybill_status}}</i>
-                    </span>
-                    <span><p>发票查看:</p>
-                        <i v-if="orDetails && (orDetails.applybill_status == '已申请' || orDetails.applybill_status == 1)">
-                            <a :href="orDetails.invoice?orDetails.invoice.url:'*'" target="_blank" v-if="orDetails.invoice">{{orDetails.invoice.url?"点击查看":'--'}}</a>
-                            <i v-else>--</i>
-                        </i>
-                        <i v-else>--</i>
-                    </span>
-                    <span v-if="orDetails.applybill_status == '已开具'"><p>操作人员:</p>
-                        <i>{{orDetails.invoice?orDetails.invoice.operator:'--'}}</i>
-                    </span>
-                    <span v-if="orDetails.applybill_status == '已开具'"><p>操作时间:</p>
-                        <i>{{orDetails.invoice?orDetails.invoice.operable_time:'--'}}</i>
-                    </span>
+                <div class="classfity" v-if="invoiceed.length > 0">
+                    <ul>
+                        <li class="invoice-list" v-for="(item, index) in invoiceed" :key="index">
+                            <div class="top-words">
+                                <p>创建时间:{{item.create_time ? item.create_time : '--'}}</p>
+                                <p>创建人:{{item.operator ? item.operator : '--'}}</p>
+                            </div>
+                            <p>发票编号:<i class="code-blue" @click="invoiceCode(item)">{{item.invoice_serialnum ? item.invoice_serialnum : '--'}}</i></p>
+                            <p>关联订单开票金额:{{item.invoice_order_money ? localed(item.invoice_order_money / 100) : '--'}}</p>
+                            <p>发票状态:<i :class="item.invoice_status | applyClor">{{item.invoice_status ? item.invoice_status : '--'}}</i></p>
+                        </li>
+                    </ul>
                 </div>
                 </div>
+                <div v-else style="color:#888;line-height:40px;font-size:16px">暂无发票信息</div>
             </div>
             </div>
             <Divider />
             <Divider />
         </div>
         </div>
@@ -518,14 +501,14 @@
             <Divider />
             <Divider />
         </div>
         </div>
         <div class="bot-btn">
         <div class="bot-btn">
+            <!-- <Button class="piao-btn" type="success" size="large" disabled v-if="orDetails.return_status == 1 || orDetails.company_name == '' || book.source == '' && orDetails.pay_way !== 'transferAccounts'">批量回款</Button>
             <Button
             <Button
                 class="piao-btn" 
                 class="piao-btn" 
                 type="success" 
                 type="success" 
                 size="large"
                 size="large"
                 @click="relation"
                 @click="relation"
-                v-if="orDetails.return_status !== 1"
-            >关联回款</Button>
-            <Button class="piao-btn" type="success" size="large" disabled v-else>关联回款</Button>
+                v-else
+            >批量回款</Button> -->
             <Button 
             <Button 
                 class="ping-btn" 
                 class="ping-btn" 
                 type="success" 
                 type="success" 
@@ -574,15 +557,20 @@
             :payMoney="orDetails.pay_money"
             :payMoney="orDetails.pay_money"
         ></d-model>
         ></d-model>
         <!-- 关联回款弹框 -->
         <!-- 关联回款弹框 -->
-        <b-collect ref="batchModel" :selectName="orDetails.company_name" :selectData="orDetails.order_code" :status="true" @onChange="onChange"></b-collect>
+        <!-- <b-collect ref="batchModel" :selectName="orDetails.company_name" :selectData="orDetails.order_code" :status="true" @onChange="onChange"></b-collect> -->
+        <!-- 发票编号弹框 -->
+        <code-model ref="codeRef" :codeDetail="codeDetail"></code-model>
+        <!-- 批量回款弹框 -->
+        <b-collect ref="batchModel" :selectData="orDetails" @onChange="onChange" type="single"></b-collect>
     </div>
     </div>
 </template>
 </template>
 
 
 <script>
 <script>
 import dModel from './detailModel'
 import dModel from './detailModel'
 import bCollect from './batchOrder.vue'
 import bCollect from './batchOrder.vue'
+import codeModel from './codeModel.vue'
 import dateSigle from '@/components/dateSigle'
 import dateSigle from '@/components/dateSigle'
-import { ChangeDate, ChangeDate1 } from '../../../assets/js/date.js'
+import { ChangeDate, ChangeDate1, ChangeDate4 } from '@/assets/js/date.js'
 export default {
 export default {
     props:{
     props:{
         orderType: String
         orderType: String
@@ -590,6 +578,8 @@ export default {
     components: {
     components: {
         dModel,
         dModel,
         dateSigle,
         dateSigle,
+        bCollect,
+        codeModel,
         bCollect
         bCollect
     },
     },
     computed: {
     computed: {
@@ -740,8 +730,10 @@ export default {
             }
             }
         },
         },
         vouched(val) {
         vouched(val) {
-            const urls = this.$router.resolve(val)
-            window.open(urls.href,'_blank')
+            if (val) {
+                const urls = this.$router.resolve(val)
+                window.open(urls.href,'_blank')
+            }
         },
         },
         ordered() {
         ordered() {
             let rout = this.$route.query
             let rout = this.$route.query
@@ -750,7 +742,13 @@ export default {
                 type: rout.proType
                 type: rout.proType
             }).success((r) => {
             }).success((r) => {
                 this.orders = r.data
                 this.orders = r.data
-                this.orDetails = r.data.res;
+                if (r.data.res.invoice.length > 0) {
+                    r.data.res.invoice.forEach(v => {
+                        v.create_time = ChangeDate4(v.create_time)
+                    })
+                    this.invoiceed = r.data.res.invoice
+                }
+                this.orDetails = r.data.res
                 this.salesMen = r.data.res.salesperson?r.data.res.salesperson:'--'
                 this.salesMen = r.data.res.salesperson?r.data.res.salesperson:'--'
                 this.bigPhone = r.data.res.user_phone?r.data.res.user_phone:'--'
                 this.bigPhone = r.data.res.user_phone?r.data.res.user_phone:'--'
                 this.contractData = r.data.contractRes;
                 this.contractData = r.data.contractRes;
@@ -794,6 +792,10 @@ export default {
                 }
                 }
             }
             }
         },
         },
+        invoiceCode(item) {
+            this.codeDetail = item
+            this.$refs.codeRef.codeShow = true
+        },
         inptBtn() {
         inptBtn() {
             this.isSales = true
             this.isSales = true
             setTimeout(() => {
             setTimeout(() => {
@@ -945,7 +947,7 @@ export default {
             this.$refs.backRef.pShow = true
             this.$refs.backRef.pShow = true
         },
         },
         relation() {
         relation() {
-            this.$refs.batchModel.getData()
+            this.$refs.batchModel.asdShow = true
         },
         },
         onChange() {
         onChange() {
             this.ordered()
             this.ordered()
@@ -1071,7 +1073,8 @@ export default {
             returnInfo: [],
             returnInfo: [],
             returnRes: [],
             returnRes: [],
             refundRes: [],
             refundRes: [],
-            orders: [],
+            orders: {},
+            codeDetail: [],
             salesMen: '',
             salesMen: '',
             beginTime: '',
             beginTime: '',
             saleTime: '',
             saleTime: '',
@@ -1087,6 +1090,7 @@ export default {
             isDisable: false,
             isDisable: false,
             isTime: false,
             isTime: false,
             isTimes: false,
             isTimes: false,
+            invoiceed: [],
             uploadData: {
             uploadData: {
                 type: 'transferAccounts'
                 type: 'transferAccounts'
             }
             }
@@ -1200,6 +1204,23 @@ export default {
                         width: 100%!important;
                         width: 100%!important;
                     }
                     }
                 }
                 }
+                .invoice-list {
+                    background: #f5f5f5;
+                    padding-left: 10px;
+                    .top-words {
+                        display: flex;
+                        p {
+                            width: 80%;
+                        }
+                    }
+                    .code-blue {
+                        color: #36a3f7;
+                        cursor: pointer;
+                    }
+                }
+                .invoice-list:not(:first-child) {
+                    margin-top: 20px;
+                }
             }
             }
         }
         }
     }
     }

+ 54 - 6
src/views/order/components/otherOrder.vue

@@ -2,6 +2,12 @@
   <div class="two-child">
   <div class="two-child">
       <Modal title="创建其他订单" v-model="oShow" class-name="order-model other-model" :mask-closable="false" @on-visible-change="visibleChange">
       <Modal title="创建其他订单" v-model="oShow" class-name="order-model other-model" :mask-closable="false" @on-visible-change="visibleChange">
           <Form ref="others" :model="others" :rules="ruleValidate" :show-message="false" :label-width="110">
           <Form ref="others" :model="others" :rules="ruleValidate" :show-message="false" :label-width="110">
+              <FormItem label="销售渠道" prop="salesChannel">
+                <v-cascader placeholderType="请选择销售渠道" reqType="销售渠道" @levelChange="salesChange"></v-cascader>
+              </FormItem>
+              <FormItem label="下单渠道" prop="orderChannel">
+                <v-cascader placeholderType="请选择下单渠道" reqType="下单渠道" @levelChange="channelChange"></v-cascader>
+              </FormItem>
               <FormItem label="订单时间" prop="createTime">
               <FormItem label="订单时间" prop="createTime">
                   <date-sigle ref="sigleRef3" :dateType="'datetime'" :placeholderd="'请选择订单时间'" @startDate="orderDate" :overTime="0"></date-sigle>
                   <date-sigle ref="sigleRef3" :dateType="'datetime'" :placeholderd="'请选择订单时间'" @startDate="orderDate" :overTime="0"></date-sigle>
               </FormItem>
               </FormItem>
@@ -36,7 +42,7 @@
                   <Input v-model="others.salesPerson" type="text" :maxlength="12" placeholder="请输入销售人员姓名"></Input>
                   <Input v-model="others.salesPerson" type="text" :maxlength="12" placeholder="请输入销售人员姓名"></Input>
               </FormItem>
               </FormItem>
               <FormItem label="公司名称" prop="companyName">
               <FormItem label="公司名称" prop="companyName">
-                  <Input v-model="others.companyName" type="text" :maxlength="40" placeholder="请输入公司名称"></Input>
+                  <Input v-model.trim="others.companyName" type="text" :maxlength="40" placeholder="请输入公司名称"></Input>
               </FormItem>
               </FormItem>
               <FormItem label="客户名称">
               <FormItem label="客户名称">
                   <Input v-model="others.customerName" type="text" :maxlength="40" placeholder="请输入客户名称"></Input>
                   <Input v-model="others.customerName" type="text" :maxlength="40" placeholder="请输入客户名称"></Input>
@@ -91,6 +97,9 @@
                     <Option v-for="item in agreeStatus" :value="item.v" :key="item.v">{{ item.n }}</Option>
                     <Option v-for="item in agreeStatus" :value="item.v" :key="item.v">{{ item.n }}</Option>
                   </Select>
                   </Select>
               </FormItem>
               </FormItem>
+              <FormItem label="签约主体" prop="paybackCompany">
+                  <v-cascader placeholderType="请选择签约主体" reqType="签约主体" @levelChange="paybackChange"></v-cascader>
+              </FormItem>
               <FormItem label="协议签订时间" v-if="others.contractStatus == '1'">
               <FormItem label="协议签订时间" v-if="others.contractStatus == '1'">
                   <date-sigle ref="sigleRef2" :dateType="'date'" :placeholderd="'请选择协议签订时间'" @startDate="agreeDate" :overTime="0"></date-sigle>
                   <date-sigle ref="sigleRef2" :dateType="'date'" :placeholderd="'请选择协议签订时间'" @startDate="agreeDate" :overTime="0"></date-sigle>
               </FormItem>
               </FormItem>
@@ -193,12 +202,14 @@
 <script>
 <script>
 import { ChangeDate } from '@/assets/js/date'
 import { ChangeDate } from '@/assets/js/date'
 import dateSigle from '@/components/dateSigle'
 import dateSigle from '@/components/dateSigle'
+import vCascader from '@/components/cascader'
 import fDate from '@/components/dateSection'
 import fDate from '@/components/dateSection'
 import bUpload from '@/components/uploadFile.vue'
 import bUpload from '@/components/uploadFile.vue'
 import citySelect from "@/components/citySelect"
 import citySelect from "@/components/citySelect"
 export default {
 export default {
   components: { 
   components: { 
       dateSigle,
       dateSigle,
+      vCascader,
       fDate,
       fDate,
       bUpload,
       bUpload,
       citySelect
       citySelect
@@ -217,6 +228,9 @@ export default {
         this.others.area = ''
         this.others.area = ''
         this.others.commission = '0'
         this.others.commission = '0'
         this.others.proceduresMoney = '0'
         this.others.proceduresMoney = '0'
+        this.others.salesChannel = ''
+        this.others.orderChannel = ''
+        this.others.paybackCompany = ''
         setTimeout(() => {
         setTimeout(() => {
           let sigs1 = this.$refs.sigleRef1
           let sigs1 = this.$refs.sigleRef1
           let sigs2 = this.$refs.sigleRef2
           let sigs2 = this.$refs.sigleRef2
@@ -423,6 +437,16 @@ export default {
       endsData(val) {
       endsData(val) {
         this.others.endTime = val
         this.others.endTime = val
       },
       },
+      salesChange(val) {
+        console.log(val)
+        this.others.salesChannel = val[0]
+      },
+      channelChange(val) {
+        this.others.orderChannel = val[0]
+      },
+      paybackChange(val) {
+        this.others.paybackCompany = val[0]
+      },
       numHandler() {
       numHandler() {
         this.others.dataNum=this.others.dataNum.replace(/[^\d]+/g,'')
         this.others.dataNum=this.others.dataNum.replace(/[^\d]+/g,'')
       },
       },
@@ -432,8 +456,19 @@ export default {
       contractFile(val) {
       contractFile(val) {
         this.others.contract_file_url = val
         this.others.contract_file_url = val
       },
       },
+      fixedNum(val) {
+        return val ? Number(parseFloat(val * 100).toFixed(0)) : 0
+      },
       otherConfirm() {
       otherConfirm() {
+        if (!this.others.salesChannel) {
+          this.$Notice.warning({title: '请选择销售渠道'})
+          return
+        }
         if (!this.others.createTime) {
         if (!this.others.createTime) {
+          this.$Notice.warning({title: '请选择下单渠道'})
+          return
+        }
+        if (!this.others.orderChannel) {
           this.$Notice.warning({title: '请选择订单时间'})
           this.$Notice.warning({title: '请选择订单时间'})
           return
           return
         }
         }
@@ -459,6 +494,10 @@ export default {
           this.$Notice.warning({title: '请选择协议状态'})
           this.$Notice.warning({title: '请选择协议状态'})
           return
           return
         }
         }
+        if (!this.others.paybackCompany) {
+          this.$Notice.warning({title: '请选择签约主体'})
+          return
+        }
         if (this.others.productType == '3') {
         if (this.others.productType == '3') {
           if (!this.others.personNum) {
           if (!this.others.personNum) {
             this.$Notice.warning({title: '购买人数不能为空'})
             this.$Notice.warning({title: '购买人数不能为空'})
@@ -554,7 +593,7 @@ export default {
           contractStatus: parseInt(this.others.contractStatus),
           contractStatus: parseInt(this.others.contractStatus),
           contractTime: this.others.contractStatus == '1' ? this.others.contractTime : '',
           contractTime: this.others.contractStatus == '1' ? this.others.contractTime : '',
           contractCode: this.others.contractStatus == '1' ? this.others.contractCode : '',
           contractCode: this.others.contractStatus == '1' ? this.others.contractCode : '',
-          contractMoney: parseInt(this.others.contractMoney * 1000 / 10),
+          contractMoney: this.fixedNum(this.others.contractMoney),
           product: this.others.productType == '2'?this.others.product:'',
           product: this.others.productType == '2'?this.others.product:'',
           startTime: this.others.productType!=='5'?this.others.startTime:'',
           startTime: this.others.productType!=='5'?this.others.startTime:'',
           endTime:  this.others.productType!=='5'?this.others.endTime:'',
           endTime:  this.others.productType!=='5'?this.others.endTime:'',
@@ -562,10 +601,13 @@ export default {
           dataNum: this.others.productType == '2'||this.others.productType == '4'?parseInt(this.others.dataNum?this.others.dataNum:0):'',
           dataNum: this.others.productType == '2'||this.others.productType == '4'?parseInt(this.others.dataNum?this.others.dataNum:0):'',
           dataType: this.others.productType == '2'||this.others.productType == '4'?this.others.dataType:'',
           dataType: this.others.productType == '2'||this.others.productType == '4'?this.others.dataType:'',
           personNum: this.others.productType == '3'?this.others.personNum:'',
           personNum: this.others.productType == '3'?this.others.personNum:'',
-          commission: parseInt(this.others.commission * 1000 / 10),
-          proceduresMoney: parseInt(this.others.proceduresMoney * 1000 / 10),
-          orderMoney: parseInt(this.others.orderMoney * 1000 / 10),
+          commission: this.fixedNum(this.others.commission),
+          proceduresMoney: this.fixedNum(this.others.proceduresMoney),
+          orderMoney: this.fixedNum(this.others.orderMoney),
           contract_file_url: this.others.contract_file_url,
           contract_file_url: this.others.contract_file_url,
+          salesChannel: this.others.salesChannel,
+          orderChannel: this.others.orderChannel,
+          paybackCompany: this.others.paybackCompany,
           remark: this.others.remark
           remark: this.others.remark
         }
         }
         console.log(obj)
         console.log(obj)
@@ -640,7 +682,10 @@ export default {
               vipStartTime: '',
               vipStartTime: '',
               commission: '0',
               commission: '0',
               proceduresMoney: '0',
               proceduresMoney: '0',
-              orderMoney: ''
+              orderMoney: '',
+              salesChannel: '',
+              orderChannel: '',
+              paybackCompany: ''
           },
           },
           ruleValidate: {
           ruleValidate: {
               phone: [{ required: true}],
               phone: [{ required: true}],
@@ -658,6 +703,9 @@ export default {
               personNum: [{required: true}],
               personNum: [{required: true}],
               companyName: [{required: true}],
               companyName: [{required: true}],
               orderMoney: [{required: true}],
               orderMoney: [{required: true}],
+              salesChannel: [{required: true}],
+              orderChannel: [{required: true}],
+              paybackCompany: [{required: true}]
           },
           },
           otherPro: [
           otherPro: [
               {v: '1', n: '广告'},
               {v: '1', n: '广告'},

+ 152 - 0
src/views/order/components/uploadInvoice.vue

@@ -0,0 +1,152 @@
+<template>
+  <div>
+    <!-- 导入发票 -->
+    <Modal title="导入发票" v-model="importShow" class-name="order-model contract-model invoice-model" :mask-closable="false">
+      <div class="inpt-t">
+        <Input type="text" v-model="payText" placeholder="请上传发票" readonly></Input>
+        <input class="f-change" type="file" name="file" ref="inptRef" @change="fileChange" accept="xlsx,xls"/>
+        <i class="i-lan">浏览</i>
+      </div>
+      <p class="tips">支持拓展名:xlsx和xls,请先下载数据模板,按照数据模板填充数据后,再进行导入。</p>
+      <div slot="footer">
+        <a href="/static/上传发票模板.xlsx" download>下载数据模板</a>
+        <span class="btn-group">
+          <Button size="large" @click="importShow = false">取消</Button>
+          <Button type="primary" size="large" @click="importSub" :disabled="isDisable">导入</Button>
+        </span>
+      </div>
+    </Modal>
+    <!-- 导入发票完成 -->
+    <Modal title="导入发票完成" v-model="finishShow" class-name="order-model contract-model invoice-model" :mask-closable="false">
+      <p>共识别 <span class="word1">{{finishData.recordCount}}</span> 条数据</p>
+      <p><span class="word2">{{finishData.successCount}}</span> 条数据导入成功</p>
+      <p><span class="word3">{{finishData.errCount}}</span> 条数据导入失败</p>
+      <div slot="footer">
+        <a href=""></a>
+        <span class="btn-group">
+          <Button type="primary" size="large" @click="finished">完成</Button>
+        </span>
+      </div>
+    </Modal>
+  </div>
+</template>
+
+<script>
+import bUpload from '@/components/uploadFile.vue'
+import { actionUrl } from '../../../helper'
+export default {
+  components: {
+    bUpload
+  },
+  data () {
+    return {
+      importShow: false,
+      finishShow: false,
+      isDisable: true,
+      importFiles: '',
+      finishData: {},
+      files: {},
+      payText: ''
+    }
+  },
+  methods: {
+    fileChange() {
+      let inputDOM = this.$refs.inptRef
+      let name = inputDOM.value
+      let fileName = name.substring(name.lastIndexOf(".") + 1).toLowerCase()
+      let fileSize = inputDOM.files[0].size
+      if(fileName !="xls" && fileName !="xlsx"){
+        this.$Notice.warning({
+          title: '错误提示',
+          desc: '请选择execl格式文件上传!'
+        })
+        this.$refs.inptRef.value = ''
+        this.payText = ''
+        this.isDisable = true
+        return
+      }
+      if (fileSize > 10485760) {
+        this.$Notice.warning({
+          title: '错误提示',
+          desc: '上传文件内存应小于10M!'
+        })
+        this.$refs.inptRef.value = ''
+        this.payText = ''
+        this.isDisable = true
+        return
+      }
+      this.payText = inputDOM.files[0].name
+      this.isDisable = false
+      console.log(inputDOM.files)
+      this.files = inputDOM.files
+    },
+    importSub() {
+      let fileFormData = new FormData();
+      fileFormData.append("file", this.files[0])
+      const _this = this
+      $.ajax({
+        type: 'POST',
+        url: actionUrl('/order/importInvoice'),//上传地址
+        data: fileFormData,
+        contentType: false,
+        processData: false,
+        success: function(res) {
+          if (JSON.parse(res).status == 'success') {
+            _this.finishData = JSON.parse(res).data
+            _this.importShow = false
+            _this.finishShow = true
+          } else {
+            _this.$Notice.warning({
+              title: '错误提示',
+              desc: JSON.parse(res).info
+            })
+          }
+        }
+      })
+    },
+    finished() {
+      this.finishShow = false
+      this.files = {}
+      this.$refs.inptRef.value = ''
+      this.payText = ''
+    }
+  }
+}
+</script>
+
+<style lang="scss" scoped>
+.tips {
+  margin-top: 16px;
+  font-size: 12px;
+  color: rgb(244, 81, 108);
+}
+.word1, .word2 {
+  color: rgb(52, 191, 163);
+}
+.word3 {
+  color: rgb(244, 81, 108);
+}
+.inpt-t {
+  display: flex;
+  align-items: center;
+  .f-change {
+    opacity: 0;
+    filter: alpha(opacity=0);
+    z-index: 2;
+    cursor: pointer;
+  }
+  .i-lan {
+    position: absolute;
+    right: 32px;
+    border: 1px solid #dcdee2;
+    background: #eee;
+    border-radius: 4px;
+    padding: 6.5px 10px;
+    z-index: 1;
+    cursor: pointer;
+  }
+  ::v-deep .ivu-input {
+    width: 402px;
+  }
+}
+</style>

+ 31 - 12
src/views/order/orderList.vue

@@ -20,6 +20,7 @@
                     <Icon :class="{'arrowTransform': !flag, 'arrowTransformReturn': flag}" type="ios-arrow-down" />
                     <Icon :class="{'arrowTransform': !flag, 'arrowTransformReturn': flag}" type="ios-arrow-down" />
                 </span>
                 </span>
                 <div class="right-msg">
                 <div class="right-msg">
+                    <Button type="primary" @click="importInvoiced" class="create-order">导入发票</Button>
                     <Button type="primary" @click="batchCollected" class="create-order">批量回款</Button>
                     <Button type="primary" @click="batchCollected" class="create-order">批量回款</Button>
                     <Button type="primary" @click="otherCreated" class="create-order">创建其他订单</Button>
                     <Button type="primary" @click="otherCreated" class="create-order">创建其他订单</Button>
                     <Button type="primary" @click="orderCreated" class="create-order">创建大会员订单</Button>
                     <Button type="primary" @click="orderCreated" class="create-order">创建大会员订单</Button>
@@ -32,9 +33,9 @@
             <Select placeholder="产品类型" clearable v-model="filter.productType" @on-change="proChge" style="width:100px;margin:0 10px 10px 0">
             <Select placeholder="产品类型" clearable v-model="filter.productType" @on-change="proChge" style="width:100px;margin:0 10px 10px 0">
                 <Option v-for="item in proType" :value="item.v" :key="item.v">{{ item.n }}</Option>
                 <Option v-for="item in proType" :value="item.v" :key="item.v">{{ item.n }}</Option>
             </Select>
             </Select>
-            <Select placeholder="订单类型" clearable v-model="filter.orderType" style="width:100px;margin:0 10px 10px 0">
-                <Option v-for="item in orderTips" :value="item.v" :key="item.v">{{ item.n }}</Option>
-            </Select>
+            <div class="cas-div">
+               <v-cascader placeholderType="销售渠道" type="1" @levelChange="levelChange"></v-cascader> 
+            </div>
             <Select placeholder="订单状态" clearable v-model="filter.orderStatus" style="width:100px;margin:0 10px 10px 0">
             <Select placeholder="订单状态" clearable v-model="filter.orderStatus" style="width:100px;margin:0 10px 10px 0">
                 <Option v-for="item in orderStas" :value="item.v" :key="item.v">{{ item.n }}</Option>
                 <Option v-for="item in orderStas" :value="item.v" :key="item.v">{{ item.n }}</Option>
             </Select>
             </Select>
@@ -66,7 +67,7 @@
             </Select>
             </Select>
             <Input 
             <Input 
                 type="text" 
                 type="text" 
-                v-model="filter.companyName" 
+                v-model.trim="filter.companyName" 
                 placeholder="公司名称" 
                 placeholder="公司名称" 
                 clearable
                 clearable
                 style="width:130px;height:36px;margin: 0 10px 10px 2px;" 
                 style="width:130px;height:36px;margin: 0 10px 10px 2px;" 
@@ -159,8 +160,10 @@
             </div>
             </div>
         </template>
         </template>
     </table-lists>
     </table-lists>
+    <!-- 导入发票弹框 -->
+    <i-invoice ref="importModel"></i-invoice>
     <!-- 批量回款弹框 -->
     <!-- 批量回款弹框 -->
-    <b-collect ref="batchModel" :selectName="selectName[0]" :selectData="selectData" @onChange="onChange"></b-collect>
+    <b-collect ref="batchModel" :selectData="selectData" @onChange="onChange" type="multiple"></b-collect>
     <!-- 创建其他订单弹框 -->
     <!-- 创建其他订单弹框 -->
     <o-model ref="otherModel"></o-model>
     <o-model ref="otherModel"></o-model>
     <!-- 创建大会员订单弹框 -->
     <!-- 创建大会员订单弹框 -->
@@ -171,13 +174,17 @@
 import bCollect from './components/batchOrder.vue'
 import bCollect from './components/batchOrder.vue'
 import oModel from './components/otherOrder.vue'
 import oModel from './components/otherOrder.vue'
 import cModel from './components/bigOrder.vue'
 import cModel from './components/bigOrder.vue'
+import iInvoice from './components/uploadInvoice.vue'
 import vDate from '@/components/dateSection'
 import vDate from '@/components/dateSection'
+import vCascader from '@/components/cascader'
 export default {
 export default {
     components: {
     components: {
         bCollect,
         bCollect,
         oModel,
         oModel,
         cModel,
         cModel,
-        vDate
+        iInvoice,
+        vDate,
+        vCascader
     },
     },
     watch: {
     watch: {
         'filter.productType': {
         'filter.productType': {
@@ -292,7 +299,7 @@ export default {
             val.forEach(v => {
             val.forEach(v => {
                 if (v.company_name || v.id) {
                 if (v.company_name || v.id) {
                    arr1.push(v.company_name) 
                    arr1.push(v.company_name) 
-                   arr2.push(v.id) 
+                   arr2.push(v) 
                 }
                 }
             })
             })
             this.selectName = arr1
             this.selectName = arr1
@@ -307,6 +314,9 @@ export default {
                 return true
                 return true
             }
             }
         },
         },
+        importInvoiced() {
+            this.$refs.importModel.importShow = true
+        },
         batchCollected() {
         batchCollected() {
             if (this.selectName.length == 0) {
             if (this.selectName.length == 0) {
                 this.$Notice.warning({
                 this.$Notice.warning({
@@ -317,7 +327,7 @@ export default {
             } else {
             } else {
                 let bool = this.isAllEqual(this.selectName)
                 let bool = this.isAllEqual(this.selectName)
                 if (bool) {
                 if (bool) {
-                    this.$refs.batchModel.getData()
+                    this.$refs.batchModel.asdShow = true
                 } else {
                 } else {
                     this.$Notice.warning({
                     this.$Notice.warning({
                         title: '警告提示',
                         title: '警告提示',
@@ -330,6 +340,10 @@ export default {
         onChange() {
         onChange() {
             this.reload()
             this.reload()
         },
         },
+        levelChange(val) {
+            this.filter.orderType = val[0]
+            this.filter.salesSecondLevel = val[1]
+        },
         startsData(val) {
         startsData(val) {
             this.filter.orderTimeStart = val
             this.filter.orderTimeStart = val
         },
         },
@@ -545,7 +559,8 @@ export default {
                 refundStatus: '',
                 refundStatus: '',
                 contractStatus: '',
                 contractStatus: '',
                 companyName: '',
                 companyName: '',
-                adSource: ''
+                adSource: '',
+                salesSecondLevel: ''
             },
             },
             sear: {
             sear: {
                 keyword: ''
                 keyword: ''
@@ -625,12 +640,11 @@ export default {
                     }
                     }
                 },
                 },
                 {
                 {
-                    title: '订单类型',
+                    title: '销售渠道',
                     key: 'dis_word',
                     key: 'dis_word',
                     align: 'center',
                     align: 'center',
                     render: (h, {row}) => {
                     render: (h, {row}) => {
-                        let word = row.dis_word
-                        return h('span', word ? '分销' : '直销')
+                        return h('span', row.distribution_channel ? row.distribution_channel : '-')
                     }
                     }
                 },
                 },
                 {
                 {
@@ -937,5 +951,10 @@ export default {
     ::v-deep .ivu-table .ivu-table-body tr td .ivu-table-cell {
     ::v-deep .ivu-table .ivu-table-body tr td .ivu-table-cell {
         overflow: unset;
         overflow: unset;
     }
     }
+    .cas-div {
+        display: inline-block;
+        margin:0 10px 10px 0;
+        vertical-align: middle;
+    }
 }
 }
 </style>
 </style>

Some files were not shown because too many files changed in this diff