lilei 2 tahun lalu
induk
melakukan
a3e86e2903

+ 125 - 0
src/config/router.config.js

@@ -582,6 +582,131 @@ export const asyncRouterMap = [
                  }
                }
              ]
+           },
+           {
+             path: '/salesReturnManagement/billOfLading',
+             redirect: '/salesReturnManagement/billOfLading/list',
+             name: 'billOfLading',
+             component: BlankLayout,
+             meta: {
+               title: '提货单列表',
+               icon: 'fund',
+               // permission: 'M_billOfLadingList'
+             },
+             hideChildrenInMenu: true,
+             children: [
+               {
+                 path: 'list',
+                 name: 'billOfLadingList',
+                 component: () => import(/* webpackChunkName: "salesReturnManagement" */ '@/views/salesReturnManagement/billOfLading/list.vue'),
+                 meta: {
+                   title: '提货单列表',
+                   icon: 'fund',
+                   hidden: true,
+                   // permission: 'M_billOfLadingList'
+                 }
+               },
+               {
+                 path: 'detail/:sn',
+                 name: 'billOfLadingDetail',
+                 component: () => import(/* webpackChunkName: "salesReturnManagement" */ '@/views/salesReturnManagement/billOfLading/detail.vue'),
+                 meta: {
+                   title: '提货单详情',
+                   icon: 'fund',
+                   hidden: true
+                 }
+               },
+               {
+                 path: 'add',
+                 name: 'billOfLadingAdd',
+                 component: () => import(/* webpackChunkName: "salesReturnManagement" */ '@/views/salesReturnManagement/billOfLading/add.vue'),
+                 meta: {
+                   title: '新增提货单',
+                   icon: 'fund',
+                   hidden: true
+                 }
+               },
+               {
+                 path: 'edit/:sn',
+                 name: 'billOfLadingEdit',
+                 component: () => import(/* webpackChunkName: "salesReturnManagement" */ '@/views/salesReturnManagement/billOfLading/add.vue'),
+                 meta: {
+                   title: '编辑提货单',
+                   icon: 'fund',
+                   hidden: true
+                 }
+               },
+             ]
+           },
+           {
+             path: '/salesReturnManagement/pickUp',
+             redirect: '/salesReturnManagement/pickUp/list',
+             name: 'pickUp',
+             component: BlankLayout,
+             meta: {
+               title: '仓库提货',
+               icon: 'fund',
+               // permission: 'M_pickUpList'
+             },
+             hideChildrenInMenu: true,
+             children: [
+               {
+                 path: 'list',
+                 name: 'pickUpList',
+                 component: () => import(/* webpackChunkName: "salesReturnManagement" */ '@/views/salesReturnManagement/pickUp/list.vue'),
+                 meta: {
+                   title: '仓库提货列表',
+                   icon: 'fund',
+                   hidden: true,
+                   // permission: 'M_pickUpList'
+                 }
+               },
+             ]
+           },
+           {
+             path: '/salesReturnManagement/receiveCheck',
+             redirect: '/salesReturnManagement/receiveCheck/list',
+             name: 'receiveCheck',
+             component: BlankLayout,
+             meta: {
+               title: '收货品检',
+               icon: 'fund',
+               // permission: 'M_receiveCheckist'
+             },
+             hideChildrenInMenu: true,
+             children: [
+               {
+                 path: 'list',
+                 name: 'receiveCheckList',
+                 component: () => import(/* webpackChunkName: "salesReturnManagement" */ '@/views/salesReturnManagement/receiveCheck/list.vue'),
+                 meta: {
+                   title: '收货品检列表',
+                   icon: 'fund',
+                   hidden: true,
+                   // permission: 'M_receiveCheckList'
+                 }
+               },
+               {
+                 path: 'receiving',
+                 name: 'receiving',
+                 component: () => import(/* webpackChunkName: "salesReturnManagement" */ '@/views/salesReturnManagement/receiveCheck/receiving.vue'),
+                 meta: {
+                   title: '收货',
+                   icon: 'fund',
+                   hidden: true,
+                 }
+               },
+               {
+                 path: 'checking',
+                 name: 'checking',
+                 component: () => import(/* webpackChunkName: "salesReturnManagement" */ '@/views/salesReturnManagement/receiveCheck/checking.vue'),
+                 meta: {
+                   title: '品检',
+                   icon: 'fund',
+                   hidden: true,
+                 }
+               },
+             ]
            }
         ]
       },

+ 464 - 0
src/views/salesReturnManagement/billOfLading/add.vue

@@ -0,0 +1,464 @@
+<template>
+  <div class="billOfLadingEdit-wrap">
+    <a-spin :spinning="spinning" tip="Loading...">
+      <a-page-header :ghost="false" :backIcon="false" class="billOfLadingEdit-cont" >
+        <!-- 自定义的二级文字标题 -->
+        <template slot="subTitle">
+          <a id="billOfLadingEdit-back-btn" href="javascript:;" @click="handleBack"><a-icon type="left" /> 返回列表</a>
+        </template>
+      </a-page-header>
+      <a-form-model
+        id="billOfLadingEdit-form"
+        ref="ruleForm"
+        :model="form"
+        :rules="rules"
+        :label-col="formItemLayout.labelCol"
+        :wrapper-col="formItemLayout.wrapperCol">
+        <a-card :bordered="false" class="billOfLadingEdit-cont">
+          <a-row>
+            <a-col :xs="24" :sm="24" :md="12" :lg="12" :xl="12">
+              <a-form-model-item label="申请人" prop="applyPersonSn">
+                <employee style="width: 100%;" id="billOfLading-Employee" v-model="queryParam.applyPersonSn"></employee>
+              </a-form-model-item>
+            </a-col>
+            <a-col :xs="24" :sm="24" :md="12" :lg="12" :xl="12">
+              <a-form-model-item label="产品编码" prop="code">
+                <a-input
+                  id="billOfLadingEdit-code"
+                  :maxLength="100"
+                  :disabled="form.state&&form.state!='WAIT'"
+                  v-model.trim="form.code"
+                  placeholder="请输入产品编码(最多100个字符)"
+                  allowClear />
+              </a-form-model-item>
+            </a-col>
+            <a-col :xs="24" :sm="24" :md="12" :lg="12" :xl="12">
+              <a-form-model-item label="原厂编码" prop="origCode">
+                <a-input
+                  id="billOfLadingEdit-origCode"
+                  :maxLength="200"
+                  v-model.trim="form.origCode"
+                  placeholder="请输入(最多200个字符,多个编码用逗号隔开)"
+                  allowClear />
+              </a-form-model-item>
+            </a-col>
+            <a-col :xs="24" :sm="24" :md="12" :lg="12" :xl="12">
+              <a-form-model-item label="其他编码" prop="otherCode">
+                <a-input
+                  id="billOfLadingEdit-otherCode"
+                  :maxLength="60"
+                  v-model.trim="form.otherCode"
+                  placeholder="请输入(最多60个字符,多个编码用逗号隔开)"
+                  allowClear />
+              </a-form-model-item>
+            </a-col>
+            <a-col :xs="24" :sm="24" :md="12" :lg="12" :xl="12">
+              <a-form-model-item label="产品品牌" prop="productBrandSn">
+                <a-select
+                  id="billOfLadingEdit-productBrand"
+                  placeholder="请选择产品品牌"
+                  allowClear
+                  v-model="form.productBrandSn"
+                  :showSearch="true"
+                  option-filter-prop="children"
+                  :filter-option="filterOption">
+                  <a-select-option v-for="item in productBrandList" :key="item.brandSn" :value="item.brandSn" :disabled="item.enabledFlag==0">{{ item.brandName }}</a-select-option>
+                </a-select>
+              </a-form-model-item>
+            </a-col>
+            <a-col :xs="24" :sm="24" :md="12" :lg="12" :xl="12">
+              <a-form-model-item label="产品分类" prop="productType">
+                <a-cascader
+                  :disabled="form.state&&form.state!='WAIT'"
+                  expand-trigger="hover"
+                  @change="changeProductType"
+                  :options="productTypeList"
+                  :fieldNames="{ label: 'productTypeName', value: 'productTypeSn', children: 'children' }"
+                  id="billOfLadingEdit-productType"
+                  placeholder="请选择产品分类"
+                  allowClear
+                  v-model="form.productType" />
+              </a-form-model-item>
+            </a-col>
+            <a-col :xs="24" :sm="24" :md="12" :lg="12" :xl="12">
+              <a-form-model-item label="单位" prop="unit">
+                <v-select
+                  code="PRODUCT_UNIT"
+                  id="billOfLadingEdit-unit"
+                  v-model="form.unit"
+                  allowClear
+                  placeholder="请选择单位"
+                ></v-select>
+              </a-form-model-item>
+            </a-col>
+            <a-col :xs="24" :sm="24" :md="12" :lg="12" :xl="12">
+              <a-form-model-item label="包装数" prop="packQty" :label-col="{span:4}" :wrapper-col="{span:16}">
+                <a-input-number
+                  id="billOfLadingEdit-packQty"
+                  v-model="form.packQty"
+                  :precision="0"
+                  :min="1"
+                  :max="999999"
+                  placeholder="请输入"
+                />
+                <span style="margin: 0 5px;">/</span>
+                <v-select
+                  code="PRODUCT_PACK_UNIT"
+                  id="productLevelEdit-packQtyUnit"
+                  v-model="form.packQtyUnit"
+                  allowClear
+                  style="width: 100px;"
+                  placeholder="单位"
+                ></v-select>
+              </a-form-model-item>
+            </a-col>
+            <a-col :xs="24" :sm="24" :md="12" :lg="12" :xl="12">
+              <a-form-model-item label="箭冠产品" prop="arrowFalg">
+                <v-select
+                  code="ARROW_FALG"
+                  id="billOfLadingEdit-arrowFalg"
+                  v-model="form.arrowFalg"
+                  allowClear
+                  placeholder="请选择"
+                ></v-select>
+              </a-form-model-item>
+            </a-col>
+            <a-col :xs="24" :sm="24" :md="12" :lg="12" :xl="12">
+              <a-form-model-item label="条形码" prop="qrCode">
+                <a-input
+                  id="billOfLadingEdit-qrCode"
+                  :maxLength="50"
+                  v-model.trim="form.qrCode"
+                  placeholder="请输入条形码(最多50个字符)"
+                  allowClear />
+              </a-form-model-item>
+            </a-col>
+          </a-row>
+          <a-row>
+            <a-col :xs="24" :sm="24" :md="12" :lg="12" :xl="12">
+              <a-form-model-item label="产品尺寸" prop="size">
+                <a-input
+                  v-model.trim="form.size"
+                  id="billOfLadingEdit-size"
+                  :maxLength="50"
+                  allowClear
+                  placeholder="请输入产品尺寸(最多50个字符)" />
+              </a-form-model-item>
+            </a-col>
+            <a-col :xs="24" :sm="24" :md="12" :lg="12" :xl="12">
+              <a-form-model-item label="产品重量" prop="weight">
+                <a-input
+                  v-model.trim="form.weight"
+                  id="billOfLadingEdit-weight"
+                  :maxLength="50"
+                  allowClear
+                  placeholder="请输入产品重量(最多50个字符)" />
+              </a-form-model-item>
+            </a-col>
+            <a-col :xs="24" :sm="24" :md="12" :lg="12" :xl="12">
+              <a-form-model-item label="颜色" prop="color">
+                <a-input
+                  v-model.trim="form.color"
+                  id="productLevelEdit-color"
+                  :maxLength="50"
+                  allowClear
+                  placeholder="请输入颜色(最多50个字符)" />
+              </a-form-model-item>
+            </a-col>
+            <a-col :xs="24" :sm="24" :md="12" :lg="12" :xl="12">
+              <a-form-model-item label="产品内盒尺寸" prop="boxSize">
+                <a-input
+                  v-model.trim="form.boxSize"
+                  id="billOfLadingEdit-boxSize"
+                  :maxLength="50"
+                  allowClear
+                  placeholder="请输入产品内盒尺寸(最多50个字符)" />
+              </a-form-model-item>
+            </a-col>
+          </a-row>
+        </a-card>
+      </a-form-model>
+    </a-spin>
+    <div class="affix-cont">
+      <a-button
+        type="primary"
+        class="button-primary"
+        :disabled="spinning"
+        id="billOfLadingEdit-submit-btn"
+        size="large"
+        @click="handleSubmit"
+        style="padding: 0 60px;">保存</a-button>
+    </div>
+  </div>
+</template>
+
+<script>
+import { commonMixin } from '@/utils/mixin'
+import { STable, VSelect, Upload } from '@/components'
+import { productSave, productSnDetail } from '@/api/product'
+import { productTypeQueryAll } from '@/api/productType'
+import { productBrandQuery } from '@/api/productBrand'
+import employee from '../../expenseManagement/expenseReimbursement/employee.js'
+export default {
+  name: 'ProductInfoEdit',
+  mixins: [commonMixin],
+  components: { VSelect, Upload, STable, employee },
+  data () {
+    return {
+      spinning: false,
+      formItemLayout: {
+        labelCol: { span: 4 },
+        wrapperCol: { span: 16 }
+      },
+      form: {
+        name: '', // 产品名称
+        code: '', //  产品编码
+        origCode: '', //  原厂编码
+        otherCode: '', // 其他编码
+        productBrandSn: undefined, //  产品品牌
+        productTypeSn1: '', //  产品一级分类
+        productTypeSn2: '', //  产品二级分类
+        productTypeSn3: '', //  产品三级分类
+        productType: [], //  产品分类
+        unit: undefined, //  单位
+        packQty: '', // 包装数
+        packQtyUnit: undefined, // 包装数单位
+        arrowFalg: undefined, // 是否箭冠产品
+        qrCode: '',
+        productMsg: '', //  产品图片
+        size: '', // 产品尺寸
+        weight: '', // 产品重量
+        color: undefined, // 颜色
+        boxSize: '', // 内核尺寸
+        description: '', // 产品说明
+        otherDesc: '' // 其他说明
+      },
+      rules: {
+        name: [
+          { required: true, message: '请输入产品名称', trigger: 'blur' }
+        ],
+        code: [
+          { required: true, message: '请输入产品编码', trigger: 'blur' }
+        ],
+        productBrandSn: [
+          { required: true, message: '请选择产品品牌', trigger: 'change' }
+        ],
+        productType: [
+          { required: true, message: '请选择产品分类', trigger: 'change' }
+        ],
+        unit: [
+          { required: true, message: '请选择单位', trigger: 'change' }
+        ],
+        // packQty: [
+        //   { required: true, message: '请输入包装数', trigger: 'blur' }
+        // ],
+        arrowFalg: [
+          { required: true, message: '请选择是否为箭冠产品', trigger: 'change' }
+        ],
+        qrCode: [
+          { required: false, message: '请输入条形码', trigger: 'blur' },
+          { validator: this.validateQrCode }
+        ]
+      },
+      productBrandList: [], //  品牌下拉数据
+      productTypeList: [] //  分类下拉数据
+    }
+  },
+  methods: {
+    //  详情
+    getDetail () {
+      productSnDetail({ sn: this.$route.params.sn }).then(res => {
+        if (res.status == 200) {
+          const data = res.data
+          this.form = Object.assign(this.form, data)
+          this.form.productType = [ this.form.productTypeSn1, this.form.productTypeSn2, this.form.productTypeSn3 ]
+          if (res.data.productPicList && res.data.productPicList.length > 0) {
+            let str = ''
+            res.data.productPicList.map(item => {
+              if (item.imageUrl) {
+                str += item.imageUrl + ','
+              }
+            })
+            str = str.substr(0, str.length - 1)
+            this.$refs.productMsg.setFileList(str)
+            this.form.productMsg = str
+          } else {
+            this.$refs.productMsg.setFileList('')
+            this.form.productMsg = ''
+          }
+          this.$refs.editor.setHtml(res.data.description)
+          this.$refs.otherDesc.setHtml(res.data.otherDesc)
+        } else {
+          this.$refs.ruleForm.resetFields()
+        }
+      })
+    },
+    // 提交
+    handleSubmit (e) {
+      e.preventDefault()
+      const _this = this
+      if (!this.form.productTypeSn3) {
+        this.$message.warning('产品分类未选到第三级,请修改后再提交!')
+        return
+      }
+      this.$refs.ruleForm.validate(valid => {
+        if (valid) {
+          const form = JSON.parse(JSON.stringify(_this.form))
+          form.id = _this.$route.params.id ? _this.$route.params.id : undefined
+          form.productPicList = []
+          if (form.productMsg) {
+            const arr = form.productMsg.split(',')
+            arr.map(item => {
+              form.productPicList.push({ imageUrl: item })
+            })
+          }
+          delete form.productMsg
+          delete form.productType
+          delete form.updateDate
+          _this.spinning = true
+          productSave(form).then(res => {
+            if (res.status == 200) {
+              _this.$message.success(res.message)
+              setTimeout(() => {
+                _this.handleBack()
+                _this.spinning = false
+              }, 1000)
+            } else {
+              _this.spinning = false
+            }
+          })
+        } else {
+          console.log('error submit!!')
+          return false
+        }
+      })
+    },
+    // 返回
+    handleBack () {
+      this.$router.push({ path: '/productManagement/productInfo/list', query: { closeLastOldTab: true } })
+    },
+    // 产品图片上传
+    changeImage (file) {
+      this.form.productMsg = file
+    },
+    validateQrCode (rule, value, callback) {
+      const reg = /^[0-9a-zA-Z]+$/
+      if (value && !reg.test(value)) {
+        callback('条形码由大小写英文字母和数字组成')
+      } else {
+        callback()
+      }
+    },
+    // 产品说明 文本编辑器
+    editorDescriptionChange (html, text) {
+      this.form.description = html
+    },
+    //  其他说明 文本编辑器
+    editorOtherChange (html, text) {
+      this.form.otherDesc = html
+    },
+    //  产品分类  change
+    changeProductType (val, opt) {
+      this.form.productTypeSn1 = val[0] ? val[0] : ''
+      this.form.productTypeSn2 = val[1] ? val[1] : ''
+      this.form.productTypeSn3 = val[2] ? val[2] : ''
+    },
+    //  产品品牌  列表
+    getProductBrand () {
+      productBrandQuery({}).then(res => {
+        if (res.status == 200) {
+          this.productBrandList = res.data
+        } else {
+          this.productBrandList = []
+        }
+      })
+    },
+    //  产品分类  列表
+    getProductType () {
+      productTypeQueryAll({}).then(res => {
+        if (res.status == 200) {
+          if (res.data && res.data.length > 0) {
+            //  递归处理disabled禁用
+            this.recursionFun(res.data, false)
+            this.productTypeList = res.data
+          } else {
+            this.productTypeList = []
+          }
+        } else {
+          this.productTypeList = []
+        }
+      })
+    },
+    //  递归函数
+    recursionFun (data, state) {
+      if (data) {
+        data.map((item, index) => {
+          // enabledFlag为0表示禁用,父级禁用则子级也为禁用
+          if ((item.enabledFlag && item.enabledFlag == 0) || state) {
+            item.disabled = true
+          } else {
+            item.disabled = false
+          }
+          if (item.children && item.children.length == 0) {
+            delete item.children
+          } else {
+            this.recursionFun(item.children, item.disabled)
+          }
+        })
+      }
+    },
+    filterOption (input, option) {
+      return (
+        option.componentOptions.children[0].text.toLowerCase().indexOf(input.toLowerCase()) >= 0
+      )
+    },
+    pageInit () {
+      this.$refs.productMsg.setFileList('')
+      this.$refs.editor.setHtml('')
+      this.$refs.otherDesc.setHtml('')
+      this.$refs.ruleForm.resetFields()
+      this.form.packQtyUnit = undefined
+      this.getProductBrand()
+      this.getProductType()
+      if (this.$route.params.id) { //  编辑页
+        this.getDetail()
+      }
+    }
+  },
+  mounted () {
+    if (!this.$store.state.app.isNewTab) { // 页签刷新时调用
+      this.pageInit()
+    }
+  },
+  activated () {
+    // 如果是新页签打开或者进入新的子页(例:存在列表第2条数据编辑页页签时再打开第4条数据的编辑页),则重置当前页面
+    if (this.$store.state.app.isNewTab || !this.$store.state.app.isNewSubTab) {
+      this.pageInit()
+    }
+  },
+  beforeRouteEnter (to, from, next) {
+    next(vm => {})
+  }
+}
+</script>
+
+<style lang="less">
+  .billOfLadingEdit-wrap{
+    position: relative;
+    height: 100%;
+    padding-bottom: 51px;
+    box-sizing: border-box;
+    >.ant-spin-nested-loading{
+      overflow-y: scroll;
+      height: 100%;
+    }
+    .billOfLadingEdit-cont{
+      margin-bottom: 10px;
+    }
+    .affix{
+      .ant-affix{
+        z-index: 101;
+      }
+    }
+  }
+</style>

+ 8 - 0
src/views/salesReturnManagement/billOfLading/detail.vue

@@ -0,0 +1,8 @@
+<template>
+</template>
+
+<script>
+</script>
+
+<style>
+</style>

+ 349 - 0
src/views/salesReturnManagement/billOfLading/list.vue

@@ -0,0 +1,349 @@
+<template>
+  <a-card size="small" :bordered="false" class="billOfLading-wrap">
+    <a-spin :spinning="spinning" tip="Loading...">
+      <!-- 搜索条件 -->
+      <div ref="tableSearch" class="table-page-search-wrapper">
+        <a-form layout="inline" @keyup.enter.native="$refs.table.refresh(true)">
+          <a-row :gutter="15">
+            <a-col :md="6" :sm="24">
+              <a-form-item label="创建时间">
+                <rangeDate ref="rangeCreateDate" :value="createDate" @change="dateCreateChange" />
+              </a-form-item>
+            </a-col>
+            <a-col :md="6" :sm="24">
+              <a-form-item label="提货单号">
+                <a-input id="billOfLading-billNo" v-model.trim="queryParam.purchaseReturnBillNo" allowClear placeholder="请输入客户采退申请单号"/>
+              </a-form-item>
+            </a-col>
+            <a-col :md="6" :sm="24">
+              <a-form-item label="关联销退单号">
+                <a-input id="billOfLading-salesReturnBillNo" v-model.trim="queryParam.salesReturnBillNo" allowClear placeholder="请输入总部销退单号"/>
+              </a-form-item>
+            </a-col>
+            <a-col :md="6" :sm="24">
+              <a-form-item label="申请人">
+                <employee style="width: 100%;" id="billOfLading-Employee" v-model="queryParam.applyPersonSn"></employee>
+              </a-form-item>
+            </a-col>
+            <template v-if="advanced">
+              <a-col :md="6" :sm="24">
+                <a-form-item label="物流点">
+                  <employee style="width: 100%;" id="billOfLading-Employee2" v-model="queryParam.applyPersonSn"></employee>
+                </a-form-item>
+              </a-col>
+              <a-col :md="6" :sm="24">
+                <a-form-item label="发货方">
+                  <dealerSubareaScopeList ref="dealerSubareaScopeList" id="billOfLading-buyerSn" @change="custChange" />
+                </a-form-item>
+              </a-col>
+              <a-col :md="6" :sm="24">
+                <a-form-item label="审核时间">
+                  <rangeDate ref="rangeExamineDate" @change="dateExamineChange" />
+                </a-form-item>
+              </a-col>
+              <a-col :md="6" :sm="24">
+                <a-form-item label="状态">
+                  <v-select
+                    v-model="queryParam.billStatus"
+                    ref="billStatus"
+                    id="billOfLading-billStatus"
+                    code="SALES_RETURN_BILL_STATUS"
+                    placeholder="请选择状态"
+                    allowClear></v-select>
+                </a-form-item>
+              </a-col>
+            </template>
+            <a-col :md="6" :offset="18" :sm="24">
+              <span class="table-page-search-submitButtons" style="float:right;">
+                <a-button type="primary" :disabled="disabled" @click="$refs.table.refresh(true)">查询</a-button>
+                <a-button style="margin-left: 8px" :disabled="disabled" @click="resetSearchForm()">重置</a-button>
+                <a @click="advanced=!advanced" style="margin-left: 8px">
+                  {{ advanced ? '收起' : '展开' }}
+                  <a-icon :type="advanced ? 'up' : 'down'"/>
+                </a>
+              </span>
+            </a-col>
+          </a-row>
+        </a-form>
+      </div>
+      <!-- 操作按钮 -->
+      <div class="table-operator">
+        <a-button type="primary" class="button-error" v-if="$hasPermissions('B_salesReturnNew')" @click="handleAdd">新增</a-button>
+      </div>
+      <!-- 列表 -->
+      <s-table
+        class="sTable fixPagination"
+        ref="table"
+        :style="{ height: tableHeight+64.5+'px' }"
+        size="small"
+        :rowKey="(record) => record.id"
+        :columns="columns"
+        :data="loadData"
+        :scroll="{ y: tableHeight }"
+        :defaultLoadData="false"
+        bordered>
+        <!-- 单号 -->
+        <template slot="salesReturnBillNo" slot-scope="text, record">
+          <div v-if="$hasPermissions('B_salesReturnDetail')">
+            <span class="link-bule" @click="handleDetail(record)">{{ record.salesReturnBillNo }}</span>
+          </div>
+          <div v-else>{{ record.salesReturnBillNo }}</div>
+        </template>
+        <!-- 操作 -->
+        <template slot="action" slot-scope="text, record">
+          <a-button
+            size="small"
+            type="link"
+            class="button-warning"
+            v-if="record.billStatus == 'WAIT_AUDIT'"
+            @click="handleEexamine(record)"
+            id="billOfLading-eexamine-btn">审核进度</a-button>
+          <a-button
+            size="small"
+            type="link"
+            class="button-warning"
+            v-if="record.billStatus == 'AUDIT_REJECT'"
+            @click="handleAginEdit(record)"
+            id="billOfLading-eexamine-btn">再次编辑</a-button>
+          <a-button
+            size="small"
+            v-if="record.billStatus == 'WAIT_SUBMIT'"
+            type="link"
+            class="button-info"
+            @click="handleEdit(record)"
+            id="billOfLading-edit-btn">编辑</a-button>
+          <a-button
+            size="small"
+            v-if="record.billStatus == 'WAIT_SUBMIT'"
+            type="link"
+            class="button-error"
+            @click="handleDel(record)"
+            id="billOfLading-del-btn">删除</a-button>
+          <span v-if="record.billStatus == 'FINISH'">
+            --
+          </span>
+        </template>
+      </s-table>
+    </a-spin>
+  </a-card>
+</template>
+
+<script>
+import { commonMixin } from '@/utils/mixin'
+import { STable, VSelect } from '@/components'
+import dealerSubareaScopeList from '@/views/common/dealerSubareaScopeList.vue'
+import employee from '../../expenseManagement/expenseReimbursement/employee.js'
+import rangeDate from '@/views/common/rangeDate.vue'
+import { salesReturnList, salesReturnDel } from '@/api/salesReturn'
+import moment from 'moment'
+import getDate from '@/libs/getDate.js'
+export default {
+  name: 'BillOfLadingList',
+  mixins: [commonMixin],
+  components: {
+    STable,
+    VSelect,
+    dealerSubareaScopeList,
+    employee,
+    rangeDate
+  },
+  data () {
+    return {
+      spinning: false,
+      // 高级搜索 展开/关闭
+      advanced: false,
+      tableHeight: 0,
+      disabled: false, //  查询、重置按钮是否可操作
+      createDate: [
+        moment(getDate.getThreeMonthDays().starttime, 'YYYY-MM-DD'),
+        moment(getDate.getCurrMonthDays().endtime, 'YYYY-MM-DD')
+      ], //  创建时间
+      // 查询参数
+      queryParam: {
+        beginDate: getDate.getThreeMonthDays().starttime,
+        endDate: getDate.getCurrMonthDays().endtime,
+        beginAuditDate: '',
+        endAuditDate: '',
+        buyerSn: undefined, //  客户名称
+        salesReturnBillNo: undefined, //  总部销退单号
+        purchaseReturnBillNo: '',
+        billStatus: undefined, // 业务状态
+        shippingAddrProvinceSn: undefined,
+        salesReturnBillSource: undefined
+      },
+      // 加载数据方法 必须为 Promise 对象
+      loadData: parameter => {
+        this.disabled = true
+        this.spinning = true
+        return salesReturnList(Object.assign(parameter, this.queryParam)).then(res => {
+          let data
+          if (res.status == 200) {
+            data = res.data
+            const no = (data.pageNo - 1) * data.pageSize
+            for (var i = 0; i < data.list.length; i++) {
+              data.list[i].no = no + i + 1
+            }
+            this.disabled = false
+          }
+          this.spinning = false
+          return data
+        })
+      },
+      visibleAudit: false,
+      auditInfo: null,
+      spinningAudit: false
+    }
+  },
+  computed: {
+    columns () {
+      const arr = [
+        { title: '编号', dataIndex: 'no', width: '4%', align: 'center', customRender: function (text) { return text || '--' } },
+        { title: '创建时间', dataIndex: 'createDate', width: '8%', align: 'center', customRender: function (text) { return text || '--' } },
+        { title: '提货单号', scopedSlots: { customRender: 'salesReturnBillNo' }, width: '10%', align: 'center' },
+        { title: '关联销退单', dataIndex: 'salesReturnBillSourceDictValue', width: '6%', align: 'center', customRender: function (text) { return text || '--' } },
+        { title: '申请人', dataIndex: 'purchaseReturnBillNo', width: '6%', align: 'center', customRender: function (text) { return text || '--' } },
+        { title: '主题', dataIndex: 'buyerName', width: '10%', align: 'left', customRender: function (text) { return text || '--' }, ellipsis: true },
+        { title: '物流公司', dataIndex: 'buyerName', width: '10%', align: 'left', customRender: function (text) { return text || '--' }, ellipsis: true },
+        { title: '物流点', dataIndex: 'buyerName', width: '10%', align: 'left', customRender: function (text) { return text || '--' }, ellipsis: true },
+        { title: '发货方', dataIndex: 'purchaseReturnBillNo', width: '8%', align: 'center', customRender: function (text) { return text || '--' } },
+        { title: '收货人', dataIndex: 'purchaseReturnBillNo', width: '6%', align: 'center', customRender: function (text) { return text || '--' } },
+        { title: '审核时间', dataIndex: 'auditTime', width: '8%', align: 'center', customRender: function (text) { return text || '--' } },
+        { title: '状态', dataIndex: 'billStatusDictValue', width: '8%', align: 'center', customRender: function (text) { return text || '--' } },
+        { title: '操作', scopedSlots: { customRender: 'action' }, width: '6%', align: 'center' }
+      ]
+      return arr
+    }
+  },
+  methods: {
+    //  创建时间  change
+    dateCreateChange (date) {
+      this.queryParam.beginDate = date[0]
+      this.queryParam.endDate = date[1]
+    },
+    //  审核时间  change
+    dateExamineChange (date) {
+      this.queryParam.beginAuditDate = date[0]
+      this.queryParam.endAuditDate = date[1]
+    },
+    custChange (val) {
+      this.queryParam.buyerSn = val.key
+    },
+    // 新增
+    handleAdd () {
+      this.$router.push({ name: 'billOfLadingAdd' })
+    },
+    // 编辑
+    handleEdit (row) {
+      this.$router.push({ name: 'billOfLadingEdit', params: { sn: row.salesReturnBillSn } })
+    },
+    // 详情
+    handleDetail (row) {
+      this.$router.push({ name: 'billOfLadingDetail', params: { sn: row.salesReturnBillSn } })
+    },
+    // 删除
+    handleDel (row) {
+      const _this = this
+      this.$confirm({
+        title: '提示',
+        content: '确认要删除吗?',
+        centered: true,
+        onOk () {
+          _this.spinning = true
+          salesReturnDel({ salesReturnBillSn: row.salesReturnBillSn }).then(res => {
+            if (res.status == 200) {
+              _this.$message.success(res.message)
+              _this.$refs.table.refresh()
+              _this.spinning = false
+            } else {
+              _this.spinning = false
+            }
+          })
+        }
+      })
+    },
+    //  审核进度
+    handleEexamine (row) {
+      this.auditInfo = row
+      this.visibleAudit = true
+    },
+    // 再次编辑
+    handleAginEdit (row) {
+    },
+    resetSearchForm () {
+      this.$refs.rangeCreateDate.resetDate()
+      this.$refs.rangeExamineDate.resetDate()
+      this.queryParam.beginDate = getDate.getThreeMonthDays().starttime
+      this.queryParam.endDate = getDate.getCurrMonthDays().endtime
+      this.queryParam.beginAuditDate = ''
+      this.queryParam.endAuditDate = ''
+      this.queryParam.buyerSn = undefined
+      this.$refs.dealerSubareaScopeList.resetForm()
+      this.queryParam.salesReturnBillNo = ''
+      this.queryParam.purchaseReturnBillNo = ''
+      this.queryParam.billStatus = undefined
+      this.queryParam.salesReturnBillSource = undefined
+      this.queryParam.shippingAddrProvinceSn = undefined
+      this.$refs.table.refresh(true)
+    },
+    filterOption (input, option) {
+      return (
+        option.componentOptions.children[0].text.toLowerCase().indexOf(input.toLowerCase()) >= 0
+      )
+    },
+    pageInit () {
+      const _this = this
+      this.$nextTick(() => { // 页面渲染完成后的回调
+        _this.setTableH()
+      })
+    },
+    setTableH () {
+      const tableSearchH = this.$refs.tableSearch.offsetHeight
+      this.tableHeight = window.innerHeight - tableSearchH - 215
+    }
+  },
+  watch: {
+    advanced (newValue, oldValue) {
+      const _this = this
+      this.$nextTick(() => { // 页面渲染完成后的回调
+        _this.setTableH()
+      })
+    },
+    '$store.state.app.winHeight' (newValue, oldValue) { //  窗口变更时,需同时更改表格高度
+      this.setTableH()
+    }
+  },
+  mounted () {
+    if (!this.$store.state.app.isNewTab) { // 页签刷新时调用
+      this.pageInit()
+      this.resetSearchForm()
+    }
+  },
+  activated () {
+    // 如果是新页签打开,则重置当前页面
+    if (this.$store.state.app.isNewTab) {
+      this.pageInit()
+      this.resetSearchForm()
+    }
+    // 仅刷新列表,不重置页面
+    if (this.$store.state.app.updateList) {
+      this.pageInit()
+      this.$refs.table.refresh()
+    }
+  },
+  beforeRouteEnter (to, from, next) {
+    next(vm => {})
+  }
+}
+</script>
+<style lang="less">
+  .billOfLading-wrap{
+    .sTable{
+      .badge-con-t{
+        .ant-badge-count{
+          transform: scale(0.8);
+          font-size: 13px;
+        }
+      }
+    }
+  }
+</style>

+ 8 - 0
src/views/salesReturnManagement/pickUp/list.vue

@@ -0,0 +1,8 @@
+<template>
+</template>
+
+<script>
+</script>
+
+<style>
+</style>

+ 8 - 0
src/views/salesReturnManagement/receiveCheck/checking.vue

@@ -0,0 +1,8 @@
+<template>
+</template>
+
+<script>
+</script>
+
+<style>
+</style>

+ 8 - 0
src/views/salesReturnManagement/receiveCheck/list.vue

@@ -0,0 +1,8 @@
+<template>
+</template>
+
+<script>
+</script>
+
+<style>
+</style>

+ 8 - 0
src/views/salesReturnManagement/receiveCheck/receiving.vue

@@ -0,0 +1,8 @@
+<template>
+</template>
+
+<script>
+</script>
+
+<style>
+</style>

+ 2 - 2
src/views/salesReturnManagement/salesReturn/list.vue

@@ -100,7 +100,7 @@
       <s-table
         class="sTable fixPagination"
         ref="table"
-        :style="{ height: tableHeight+84.5+'px' }"
+        :style="{ height: tableHeight+64.5+'px' }"
         size="small"
         :rowKey="(record) => record.id"
         :columns="columns"
@@ -401,7 +401,7 @@ export default {
     },
     setTableH () {
       const tableSearchH = this.$refs.tableSearch.offsetHeight
-      this.tableHeight = window.innerHeight - tableSearchH - 270
+      this.tableHeight = window.innerHeight - tableSearchH - 215
     }
   },
   watch: {