zhujun 2 лет назад
Родитель
Сommit
05be5258c1

+ 1 - 0
src/enum/dict.js

@@ -27,6 +27,7 @@ export default {
   商机阶段:'business_stage_code',
   合同类型:'contract_type',
   销售类型:'sale_type',
+  退货类型:'sale_return_type',
   客户联系人状态: 'contact_link_status'
 };
 

+ 1 - 0
src/store/getters.js

@@ -13,6 +13,7 @@ export default {
     ) || {},
   // 根据字典enumName  和 dictCode 获取字典 值(名称
   getDictValue: (state) => (enumName, dictCode) => {
+    console.log(state,dictEnum[enumName],'00000000000')
     const obj = (state.dict[dictEnum[enumName]] || []).find((item) => {
       return item.dictCode === dictCode;
     });

+ 2 - 0
src/store/index.js

@@ -8,6 +8,7 @@ import dict from './modules/dict';
 import user from './modules/user';
 import concact from './modules/concact'
 import order from './modules/order'
+import returnGoods from './modules/returnGoods'
 import selectCache from './modules/selectCache';
 import theme from './modules/theme';
 import createPersistedState from 'vuex-persistedstate';
@@ -28,6 +29,7 @@ export default new Vuex.Store({
     dict,
     user,
     concact,
+    returnGoods,
     order,
     selectCache,
     theme

+ 31 - 0
src/store/modules/returnGoods.js

@@ -0,0 +1,31 @@
+// 数据缓存
+import Vue from 'vue';
+const state = {
+  allcountAmount:0.00,
+  isDefaultPayableAmount:true,    //控制是否显示默认应付金额
+};
+
+const mutations = {
+   // 设置金额
+   setAllcountAmount(state, val) {
+    state.allcountAmount = val;
+  },
+ // 设置是否显示
+ setIsDefaultPayableAmount(state, val) {
+  state.isDefaultPayableAmount = val;
+},
+  //清空
+  clearUserData(){
+    state.allcountAmount = 0.00;
+    state.isDefaultPayableAmount = true;
+  }
+};
+
+const actions = {};
+
+export default {
+  namespaced: true,
+  state,
+  mutations,
+  actions
+};

+ 15 - 12
src/views/saleManage/saleOrder/components/detailDialog.vue

@@ -371,18 +371,25 @@
           slot: 'specification'
         },
        
-        {
-          width: 160,
-          prop: 'singlePrice',
-          label: '单价',
-          slot: 'singlePrice'
-        },
+       
         {
           width: 120,
           prop: 'totalCount',
           label: '数量',
           slot: 'totalCount'
         },
+        {
+          width: 120,
+          prop: 'measuringUnit',
+          label: '计量单位',
+          slot: 'measuringUnit'
+        },
+        {
+          width: 160,
+          prop: 'singlePrice',
+          label: '单价',
+          slot: 'singlePrice'
+        },
         {
           width: 120,
           prop: 'totalPrice',
@@ -392,12 +399,7 @@
               return _row.totalPrice+'元'
             }
         },
-        {
-          width: 120,
-          prop: 'measuringUnit',
-          label: '计量单位',
-          slot: 'measuringUnit'
-        },
+       
         {
           width: 120,
           prop: 'deliveryDays',
@@ -477,6 +479,7 @@
           const data = await getSaleOrderDetail(id);
           this.loading = false;
           if (data) {
+            this.form = data;
             this.detailData = data;
             
           }

+ 7 - 6
src/views/saleManage/saleOrder/components/inventoryTable.vue

@@ -362,12 +362,7 @@ export default {
           slot: 'specification'
         },
        
-        {
-          width: 160,
-          prop: 'singlePrice',
-          label: '单价',
-          slot: 'singlePrice'
-        },
+        
         {
           width: 80,
           prop: 'totalCount',
@@ -380,6 +375,12 @@ export default {
           label: '计量单位',
           slot: 'measuringUnit'
         },
+        {
+          width: 160,
+          prop: 'singlePrice',
+          label: '单价',
+          slot: 'singlePrice'
+        },
         {
           width: 120,
           prop: 'totalPrice',

+ 9 - 1
src/views/saleManage/saleOrder/index.vue

@@ -107,7 +107,7 @@
           <invoice></invoice>
         </div>
         <div v-if="activeComp == 'returnorder'" class="returnorder">
-        
+        <return-goods></return-goods>
         </div>
          
       </div>
@@ -116,6 +116,7 @@
 
     <add-dialog ref="addDialogRef"  @done="reload"></add-dialog>
     <add-invoice-dialog ref="invoiceDialogRef"  @done="reload"></add-invoice-dialog>
+    <add-return-goods-dialog ref="addReturnGoodsRef"  @done="reload"></add-return-goods-dialog>
     <contractr-detail ref="contractDetailRef"></contractr-detail>
     <detail-dialog ref="contactDetailDialogRef"></detail-dialog>
 <!-- 多选删除弹窗 -->
@@ -130,9 +131,11 @@ import invoice from './invoice/index.vue';
 import detailDialog from './components/detailDialog.vue';
 import contractrDetail from "@/views/contractManage/contractBook/components/detailDialog.vue";
 import addInvoiceDialog from '@/views/saleManage/saleOrder/invoice/components/addInvoiceDialog';
+import addReturnGoodsDialog from '@/views/saleManage/saleOrder/returnGoods/components/addReturnGoodsDialog';
 import popModal from '@/components/pop-modal';
 import {deliveryStatusOptions,orderStatusOptions,payStatusOptions} from '@/enum/dict';
 import {contactTypeTree} from '@/api/saleManage/contact';
+import returnGoods from './returnGoods/index.vue'
 import {getTableList, getDetail, UpdateInformation, addInformation,deleteInformation} from '@/api/saleManage/saleorder';
 import dictMixins from '@/mixins/dictMixins';
 
@@ -141,8 +144,10 @@ export default {
     mixins: [dictMixins],
     components: {
       searchTable,
+      returnGoods,
       popModal,
       contractrDetail,
+      addReturnGoodsDialog,
       addInvoiceDialog,
       invoice,
       addDialog,
@@ -286,6 +291,9 @@ export default {
         if(command==='invoice'){
          this.$refs.invoiceDialogRef.open( 'add',{}, row.id)
         }
+        if(command==='returnOrder'){
+          this.$refs.addReturnGoodsRef.open( 'add',{})
+        }
       },
       //点击左边分类
       handleNodeClick(data, node) {

+ 15 - 12
src/views/saleManage/saleOrder/invoice/components/detailDialog.vue

@@ -244,18 +244,25 @@
           slot: 'specification'
         },
        
-        {
-          width: 160,
-          prop: 'singlePrice',
-          label: '单价',
-          slot: 'singlePrice'
-        },
+       
         {
           width: 120,
           prop: 'totalCount',
           label: '数量',
           slot: 'totalCount'
         },
+        {
+          width: 120,
+          prop: 'measuringUnit',
+          label: '计量单位',
+          slot: 'measuringUnit'
+        },
+        {
+          width: 160,
+          prop: 'singlePrice',
+          label: '单价',
+          slot: 'singlePrice'
+        },
         {
           width: 120,
           prop: 'totalPrice',
@@ -265,12 +272,7 @@
               return _row.totalPrice+'元'
             }
         },
-        {
-          width: 120,
-          prop: 'measuringUnit',
-          label: '计量单位',
-          slot: 'measuringUnit'
-        },
+       
         {
           width: 120,
           prop: 'deliveryDays',
@@ -350,6 +352,7 @@
           const data = await getSendSaleOrderrecordDetail(id);
           this.loading = false;
           if (data) {
+            this.form = data;
             this.detailData = data;
             
           }

+ 7 - 6
src/views/saleManage/saleOrder/invoice/components/inventoryTable.vue

@@ -257,12 +257,7 @@ export default {
           slot: 'specification'
         },
        
-        {
-          width: 160,
-          prop: 'singlePrice',
-          label: '单价',
-          slot: 'singlePrice'
-        },
+       
         
         {
           width: 120,
@@ -282,6 +277,12 @@ export default {
           label: '计量单位',
           slot: 'measuringUnit'
         },
+        {
+          width: 160,
+          prop: 'singlePrice',
+          label: '单价',
+          slot: 'singlePrice'
+        },
         {
           width: 120,
           prop: 'totalPrice',

+ 32 - 5
src/views/saleManage/saleOrder/invoice/index.vue

@@ -42,8 +42,11 @@
                 <!-- 查看详情列 -->
              
                 <template v-slot:docNo="{ row }">
-                  <el-link type="primary" :underline="false" @click="openorderDetail(row)"> {{ row.docNo }}</el-link>
+                  <el-link type="primary" :underline="false" @click="openorderDetail(row,'docNo')"> {{ row.docNo }}</el-link>
                 </template>
+                <template v-slot:orderNo="{ row }">
+                <el-link type="primary" :underline="false" @click="openorderDetail(row,'orderNo')"> {{ row.orderNo }}</el-link>
+              </template>
                 <!-- 操作列 -->
                 <template v-slot:action="{ row }">
                   
@@ -70,14 +73,23 @@
                       </el-link>
                     </template>
                   </el-popconfirm>
+                  <el-link
+                    type="primary"
+                    :underline="false"
+                    icon="el-icon-edit"
+                    @click="creatReturnGoods('add',row)"
+                  >
+                    创建退货单
+                  </el-link>
                 </template>
               </ele-pro-table>
             </div>
       </el-card>
   
-  
+      <order-detail-dialog  ref="orderDetailDialogRef"></order-detail-dialog>
       <add-invoice-dialog ref="invoiceDialogRef"  @done="reload"></add-invoice-dialog>
       <detail-dialog ref="DetailDialogRef"></detail-dialog>
+      <add-return-goods-dialog ref="addReturnGoodsRef"  @done="reload"></add-return-goods-dialog>
   <!-- 多选删除弹窗 -->
       <pop-modal :visible.sync="delVisible" content="是否确定删除?" @done="commitBtn"/>
     </div>
@@ -89,7 +101,9 @@
   import detailDialog from './components/detailDialog.vue';
   import popModal from '@/components/pop-modal';
   import {reviewStatusEnum} from '@/enum/dict';
+  import orderDetailDialog from '@/views/saleManage/saleOrder/components/detailDialog.vue'
   import {contactTypeTree} from '@/api/saleManage/contact';
+  import addReturnGoodsDialog from '@/views/saleManage/saleOrder/returnGoods/components/addReturnGoodsDialog';
   import {getTableList, getDetail, UpdateInformation, addInformation,deleteInformation} from '@/api/saleManage/saleorder';
   import {getSendTableList, getSendSaleOrderrecordDetail, UpdateSendInformation, addSendInformation,deleteSendInformation} from '@/api/saleManage/saleordersendrecord';
   import dictMixins from '@/mixins/dictMixins';
@@ -100,6 +114,8 @@
       components: {
         searchTable,
         popModal,
+        addReturnGoodsDialog,
+        orderDetailDialog,
         addInvoiceDialog,
         detailDialog,
       },
@@ -140,8 +156,9 @@
             },
             {
               prop: 'orderNo',
-              label: '订单编码',
+              label: '销售订单编码',
               align: 'center',
+              slot: 'orderNo',
               showOverflowTooltip: true,
               minWidth: 200
             }, 
@@ -206,6 +223,10 @@
           });
         },
       
+        //创建退货单
+        creatReturnGoods(type,row){
+          this.$refs.addReturnGoodsRef.open(type,{},row.id)
+        },
     
         /* 刷新表格 */
         reload(where) {
@@ -240,8 +261,14 @@
         },
   
       //查看详情
-      openorderDetail(row){
-          this.$refs.DetailDialogRef.open(row);
+      openorderDetail(row,type){
+        
+          if(type==='docNo'){
+            this.$refs.DetailDialogRef.open(row);
+      }
+      if(type==='orderNo'){
+        this.$refs.orderDetailDialogRef.open({id:row.orderId});
+      }
         },
   
       }

+ 120 - 180
src/views/saleManage/saleOrder/returnGoods/components/addInvoiceDialog.vue → src/views/saleManage/saleOrder/returnGoods/components/addReturnGoodsDialog.vue

@@ -12,103 +12,59 @@
   
   <el-form ref="form" :model="form" :rules="rules" label-width="120px">
    
-      <headerTitle title="货信息"></headerTitle>
+      <headerTitle title="退货信息"></headerTitle>
         <el-row>
          
           <el-col :span="12">
             <el-form-item
-              label="选择订单"
-              prop="orderNo"
+              label="发货单"
+              prop="sendNo"
               style="margin-bottom: 22px"
             >
             <el-input
                 clearable
-                v-model="form.orderNo"
+                v-model="form.sendNo"
                 @click.native="handleOrderBtn"
                 placeholder="请输入"
               />
             </el-form-item>
+         
             <el-form-item
-              label="客户名称"
-              prop="contactName"
-              style="margin-bottom: 22px"
-            >
-            <span>{{form.contactName}}</span>
-            </el-form-item>
-            <el-form-item
-              label="客户联系人"
-              prop="linkName"
+              label="退货备注"
+              prop="remark"
               style="margin-bottom: 22px"
             >
             <el-input
                 clearable
-                v-model="form.linkName"
+                v-model="form.remark"
+                type="textarea"
                 placeholder="请输入"
               />
             </el-form-item>
-          
-            <el-form-item prop="sendFiles" label="发货附件">
-                <fileUpload
-                  v-model="form.sendFiles"
-                  module="main"
-                  :showLib="false"
-                  :limit="10"
-                />
-              </el-form-item>
-           
-           
-          
           </el-col>
 
 
 
 
           <el-col :span="12">
-          
-              <el-form-item
-              label="车辆号"
-              prop="carNo"
-              style="margin-bottom: 22px"
-            >
-              <el-input
-                clearable
-                v-model="form.carNo"
-                placeholder="请输入"
-              />
-            </el-form-item>
-        
-            <!-- <el-form-item
-              label="订单编码"
-              prop="orderNo"
-              style="margin-bottom: 22px"
-            >
-            <span>{{form.orderNo}}</span>
-              
-            </el-form-item> -->
 
-           
-              <el-form-item
-              label="客户电话"
-              prop="linkPhone"
-              style="margin-bottom: 22px"
-            >
-            <el-input
-                clearable
-                v-model="form.linkPhone"
-                placeholder="请输入"
-              />
-            </el-form-item>
-              <el-form-item
-              label="客户收货地址"
-              prop="receiveAddress"
+            <el-form-item
+              label="客户名称"
+              prop="contactName"
               style="margin-bottom: 22px"
             >
-            <el-input
-                clearable
-                v-model="form.receiveAddress"
-                placeholder="请输入"
-              />
+            {{form.contactName}}
             </el-form-item>
+
+            <el-form-item prop="returnFiles" label="退货附件">
+                <fileUpload
+                  v-model="form.returnFiles"
+                  module="main"
+                  :showLib="false"
+                  :limit="10"
+                />
+              </el-form-item>
+            
           </el-col>
         </el-row>
 
@@ -117,49 +73,39 @@
       
     
       <headerTitle title="产品清单" style="margin-top:30px;"></headerTitle>
-        <ele-pro-table ref="table" :needPage="false" :columns="competAnalysisListcolumns"  :toolkit="[]" :datasource="form.productList" row-key="id">
-          <!-- <template v-slot:toolbar>
-        <div class="headbox">
-        <span class="amount">总计:{{form.totalAmount}}元</span>
-        <span class="amount">应付金额:{{form.payAmount}}元</span>
-      </div>
-      </template> -->
-          <template v-slot:technicalDrawings="{ row }">
-            <div v-if="row.technicalDrawings && row.technicalDrawings?.length">
-            <el-link 
-            v-for="link in row.technicalDrawings" :key="link.id"
-                         type="primary" :underline="false"
-                         @click="downloadFile(link)"> {{ link.name }}</el-link>
-                        </div>
-                        </template>
-          <template v-slot:remark="{ row }">
-            <el-input
-                clearable
-                v-model="row.remark"
-                type="textarea"
-                placeholder="请输入"
-              />
-          </template>
-         <!-- 操作列 -->
-      <template v-slot:action="{ row }">
-        <el-popconfirm class="ele-action" title="确定要删除吗?" @confirm="remove(row)">
-          <template v-slot:reference>
-            <el-link type="danger" :underline="false" icon="el-icon-delete">
-              删除
-            </el-link>
-          </template>
-        </el-popconfirm>
-      </template>
-                     
-          </ele-pro-table>
-       
+      <inventoryTable  ref="inventoryTableref" :sendId="form.sendId"></inventoryTable>
+      <el-row style="margin-top:20px">
+         <el-col :span="12">
+           <el-form-item
+             label="订单总金额"
+             prop="totalPrice"
+             style="margin-bottom: 22px"
+           >
+          {{ totalAmount}}元
+           </el-form-item>
+           </el-col>
+           <el-col :span="12">
+           <el-form-item
+             label="应付金额"
+             prop="payAmount"
+             style="margin-bottom: 22px"
+           >
+           <el-input
+               clearable
+               v-model="form.payAmount"
+               placeholder="请输入"
+             />
+           </el-form-item>
+           </el-col>
+      </el-row>
     </el-form>
 
     <div slot="footer" class="footer">
       <el-button type="primary" @click="save">保存</el-button>
       <el-button @click="cancel">返回</el-button>
     </div>
-    <orderListDialog ref="orderListDialogRef" @changeParent="changeOrder"></orderListDialog>
+    <sendListDialog ref="sendListDialogRef" @changeParent="changeOrder"></sendListDialog>
+
   </ele-modal>
 </template>
 
@@ -171,12 +117,10 @@ import dictMixins from '@/mixins/dictMixins';
 import deptSelect from '@/components/CommomSelect/dept-select.vue';
 import personSelect from '@/components/CommomSelect/person-select.vue';
 import parentList from '@/views/saleManage/contact/components/parentList.vue'
-import { getDetail} from '@/api/contractManage/contractBook';
-import { getSaleOrderDetail, UpdateInformation, addInformation,deleteInformation,updateStatus} from '@/api/saleManage/saleorder';
-import { addSendInformation,UpdateSendInformation,getSendSaleOrderrecordDetail} from '@/api/saleManage/saleordersendrecord';
-import {getcontactlink} from '@/api/saleManage/businessFollow';
-import {listOrganizations} from '@/api/system/organization';
-import orderListDialog from './orderListDialog.vue';
+import {getReturnTableList, getReturnSaleOrderrecordDetail, UpdateReturnInformation, addReturnInformation,deleteReturnInformation} from '@/api/saleManage/returnGoods';
+import {getSendSaleOrderrecordDetail } from '@/api/saleManage/saleordersendrecord';
+import inventoryTable from './inventoryTable.vue';
+import sendListDialog from './sendListDialog.vue';
 import {copyObj} from '@/utils/util';
 
 
@@ -185,26 +129,24 @@ export default {
     components: {
       fileUpload,
       deptSelect,
-      orderListDialog,
+      sendListDialog,
+      inventoryTable,
       parentList,
       personSelect
     },
     data() {
       let formDef = {
           id:'',
-          contractId: '',
-          sendFiles:[],
-          contractName: '',
-          receiveAddress:'',
-          carNo:'',
-          carId:'',
-          linkName:'',
-          linkPhone:'',
-          orderNo:'',
-          orderId:''
+          payAmount: '',
+          returnFiles:[],
+          remark:'',
+          sendId:'',
+          sendNo:'',
+          totalAmount:''
         };
    
       return {
+        
         detailData:{},   
         payWayOptions:[],
         delDetailIds:[],
@@ -225,6 +167,10 @@ export default {
           partaName: [
             { required: true, message: '请选择客户名称', trigger: 'change' }
           ],
+          payAmount:[
+          {required: true, pattern: numberReg, message: '请输入数字', trigger: 'blur' }
+          ]
+         
         },
         competAnalysisListcolumns: [
         
@@ -366,9 +312,14 @@ export default {
       };
     },
     computed: {
-     
-      allcountAmount(){
-        return this.$store.state.order.allcountAmount
+    
+      totalAmount(){
+        let allcountAmount=this.$store.state.returnGoods.allcountAmount
+        if(!this.$store.state.isDefaultPayableAmount){
+          this.form.payAmount=allcountAmount
+        }
+       
+        return allcountAmount
       }
     },
    
@@ -384,29 +335,15 @@ export default {
   
        //选择订单回调
        changeOrder(obj){
-        this.form = Object.assign({},this.form,{
-          orderId: obj.id,
-          orderNo: obj.orderNo,
-        })
-        this.getSaleOrderDetail(obj.id)
+        // this.form = Object.assign({},this.form,{
+        //   orderId: obj.orderId,
+        //   sendNo: obj.docNo,
+        //   sendId:obj.id
+        // })
+        this.getSendSaleOrderDetail(obj.id)
         
       },
-      //获取订单详情
-      async getSaleOrderDetail(id){
-        this.loading = true;
-        const data = await getSaleOrderDetail(id);
-        this.loading = false;
-        console.log(this.form,'9999999')
-        if (data) {
-          this.$nextTick(()=>{
-            let {partaId,partaName,partaTel,orderNo,id,partaLinkName,receiveAddress,productList,totalAmount,payAmount}=data
-            this.form =Object.assign({}, this.form,{contactId:partaId,contactName:partaName,linkName:partaLinkName,linkPhone:partaTel,orderNo,orderId:id,receiveAddress,productList,totalAmount,payAmount}) ;
-         console.log(this.form,'7777777777777777')
-          })
-          
-          
-        }
-      },
+   
 
       //发货单详情
       async getSendSaleOrderDetail(id){
@@ -415,61 +352,57 @@ export default {
         this.loading = false;
         if (data) {
           this.$nextTick(()=>{
-            this.form = data;
+            this.form = Object.assign({},this.form,{
+             orderId: data.orderId,
+             sendNo: data.docNo,
+             sendId:data.id,
+             contactName:data.contactName
+           })
+            this.$refs.inventoryTableref&&this.$refs.inventoryTableref.putTableValue(data.productList)
           })          
         }
       },
 
-   //更新联系人数据
-   async getLinkInfo(contactId) {
-      const data = await getcontactlink({contactId});
-         if(data&&data?.length){
-           this.linkNameOptions=data
-         }
-    },
-      selectFocus(){
-   if(this.linkNameOptions.length===0){
-    return this.$message.error('请先选择名称')
-   }
-    },
 
- 
-  
-    handHead(){
-      
-      let item={
-          id:this.form.partbLinkId
+      //获取退货单详情
+      async getReturnSaleOrderrecordDetail(id){
+        this.loading = true;
+        const data = await getReturnSaleOrderrecordDetail(id);
+        this.loading = false;
+        if (data) {
+          this.$nextTick(()=>{
+            this.form =data
+            this.$refs.inventoryTableref&&this.$refs.inventoryTableref.putTableValue(data.productList)
+          })          
         }
-        this.$refs.headRef.open(item)
-     },
-
+      },
 
 
-  
-    
-
     
       //选择订单弹框
        handleOrderBtn(){
          let item = {
-           id: this.form.orderId
+           id: this.form.sendId
       }
-        this.$refs.orderListDialogRef.open(item)
+        this.$refs.sendListDialogRef.open(item)
     },
 
     
       //打开新增编辑弹框
-      async open(type, row,orderId) {
+      async open(type, row,sendId) {
         this.title = type==='add'?'新增':'修改';
         this.row = row;
         this.visible = true;
-        if(orderId){
-          this.getSaleOrderDetail(orderId)
+        this.$store.commit('returnGoods/clearUserData');
+        if(type==='add'){
+          this.$store.commit('returnGoods/setIsDefaultPayableAmount', false);  // 设置标志变量为 false,应付金额将跟随订单金额同步
         }
         if(row&&row?.id){
-          this.getSendSaleOrderDetail(row?.id)
+          this.getReturnSaleOrderrecordDetail(row?.id)
+        }
+        if(sendId){
+          this.getSendSaleOrderDetail(sendId)
         }
-        
         if (type == 'add') {
           this.isUpdate = false;
         } else {
@@ -515,10 +448,17 @@ export default {
         if (!this.isUpdate) {
           delete this.form.id;
         } 
-       
+       let productList=this.$refs.inventoryTableref.getTableValue()
+       if(productList.length===0) {
+        return this.$message.error('至少选择一个退货产品')
+       }
+        let commitData=Object.assign({},this.form,{
+          totalAmount:Number(this.totalAmount),
+          productList
+        })
 
         if (this.isUpdate) {
-          UpdateSendInformation(this.form)
+          UpdateReturnInformation(commitData)
             .then((res) => {
               this.loading = false;
               this.$message.success("修改成功");
@@ -529,7 +469,7 @@ export default {
               //this.loading = false;
             });
         } else {
-          addSendInformation(this.form)
+          addReturnInformation(commitData)
             .then((res) => {
               this.loading = false;
               this.$message.success("新增成功");

+ 93 - 71
src/views/saleManage/saleOrder/returnGoods/components/detailDialog.vue

@@ -12,7 +12,7 @@
  
         <el-form ref="form" :model="form" :rules="rules" label-width="120px">
     
-     <headerTitle title="货信息"></headerTitle>
+     <headerTitle title="退货信息"></headerTitle>
        <el-row>
         <el-col :span="12">
             <el-form-item
@@ -22,73 +22,66 @@
             >
             {{form.contactName}}
             </el-form-item>
+           
+           
+          
             <el-form-item
-              label="客户联系人:"
-              prop="linkName"
+              label="应付金额:"
+              prop="payAmount"
               style="margin-bottom: 16px"
             >
-            {{form.linkName}}
+            {{form.payAmount}}元
             </el-form-item>
             <el-form-item
-              label="客户电话:"
-              prop="linkPhone"
+              label="订单总金额:"
+              prop="totalAmount"
               style="margin-bottom: 16px"
             >
-            {{form.linkPhone}}
+            {{form.totalAmount}}元
             </el-form-item>
-       
             <el-form-item
-              label="客户地址:"
-              prop="partaAddress"
+              label="备注:"
+              prop="remark"
               style="margin-bottom: 16px"
             >
-            {{form.receiveAddress}}
+            {{form.remark}}
             </el-form-item>
             <el-form-item
-              label="发货附件:"
-              prop="sendFiles"
+              label="创建时间:"
+              prop="createTime"
               style="margin-bottom: 16px"
             >
-            <div v-if="detailData.sendFiles && detailData.sendFiles?.length">
-               <el-link v-for="link in detailData.sendFiles" :key="link.id"
-                         type="primary" :underline="false"
-                         @click="downloadFile(link)"> {{ link.name }}</el-link> 
-                        </div>
+            {{form.createTime}}
             </el-form-item>
-          </el-col>
-
-
-
-
-          <el-col :span="12">
             <el-form-item
-              label="车牌号:"
-              prop="carNo"
+              label="制单人:"
+              prop="makerName"
               style="margin-bottom: 16px"
             >
-            {{form.carNo}}
+            {{form.makerName}}
             </el-form-item>
+          </el-col>
+          <el-col :span="12">
             <el-form-item
-              label="发货单据编码:"
-              prop="docNo"
+              label="退货编码:"
+              prop="returnNo"
               style="margin-bottom: 16px"
             >
-            {{form.docNo}}
+            {{form.returnNo}}
             </el-form-item>
             <el-form-item
-              label="制单人:"
-              prop="makerName"
+              label="发货编码:"
+              prop="sendNo"
               style="margin-bottom: 16px"
             >
-            {{form.makerName}}
+            {{form.sendNo}}
             </el-form-item>
             <el-form-item prop="orderNo" label="订单编码:" >
               {{form.orderNo}}
               </el-form-item>
-              <el-form-item prop="replied" label="是否回执:">
-                {{form.replied==1?'是':'否'}}
-              </el-form-item>
-
+           
+           
+             
               <el-form-item
               label="审核状态:"
               prop="reviewStatus"
@@ -96,7 +89,17 @@
             >
             {{reviewStatusEnum[form.reviewStatus].label}}
             </el-form-item>
-
+            <el-form-item
+              label="发货附件:"
+              prop="returnFiles"
+              style="margin-bottom: 16px"
+            >
+            <div v-if="detailData.returnFiles && detailData.returnFiles?.length">
+               <el-link v-for="link in detailData.returnFiles" :key="link.id"
+                         type="primary" :underline="false"
+                         @click="downloadFile(link)"> {{ link.name }}</el-link> 
+                        </div>
+            </el-form-item>
            
           </el-col>
        </el-row>
@@ -121,8 +124,8 @@
                          @click="downloadFile(link)"> {{ link.name }}</el-link>
                         </div>
                         </template>
-                     
           </ele-pro-table>
+
        
       <div slot="footer" class="footer">
         <el-button @click="cancel">返回</el-button>
@@ -131,7 +134,8 @@
   </template>
   
   <script>
-  import { getSendSaleOrderrecordDetail} from '@/api/saleManage/saleordersendrecord';
+  import { getReturnSaleOrderrecordDetail} from '@/api/saleManage/returnGoods';
+  import { getByCode } from '@/api/system/dictionary-data';
   import {getFile} from '@/api/system/file';
   import dictMixins from '@/mixins/dictMixins';
   import {download } from '@/utils/file';
@@ -144,6 +148,7 @@
       data() {
       
         return {
+          codeData:[],
           reviewStatusEnum,
           visible: false,
           detailId:'',
@@ -246,31 +251,49 @@
         },
        
         {
-          width: 160,
-          prop: 'singlePrice',
-          label: '单价',
-          slot: 'singlePrice'
+          width: 120,
+          prop: 'sendTotalCount',
+          label: '发货单数量',
+          slot: 'sendTotalCount'
         },
+        
+       
         {
           width: 120,
           prop: 'totalCount',
-          label: '数量',
+          label: '退货数量',
           slot: 'totalCount'
         },
+        {
+          width: 80,
+          prop: 'measuringUnit',
+          label: '计量单位',
+          slot: 'measuringUnit'
+        },
+        {
+          width: 160,
+          prop: 'singlePrice',
+          label: '退货单价',
+          slot: 'singlePrice'
+        },
         {
           width: 120,
           prop: 'totalPrice',
-          label: '销售总金额',
-          slot: 'totalPrice',
-          formatter: (_row, _column, cellValue) => {
-              return _row.totalPrice+'元'
-            }
+          label: '退货总金额',
+          slot: 'totalPrice'
+        },
+               
+         {
+          width: 200,
+          prop: 'returnReason',
+          label: '退货原因',
+          slot: 'returnReason'
         },
         {
-          width: 120,
-          prop: 'measuringUnit',
-          label: '计量单位',
-          slot: 'measuringUnit'
+          width: 140,
+          prop: 'returnTypeName',
+          label: '退货类型',
+          slot: 'returnTypeName'
         },
         {
           width: 120,
@@ -278,21 +301,6 @@
           label: '交期(天)',
           slot: 'deliveryDays'
         },
-        {
-          width: 200,
-          prop: 'guaranteePeriod',
-          label: '质保期',
-          slot: 'guaranteePeriod',
-          formatter: (_row, _column, cellValue) => {
-              return _row.guaranteePeriod+_row.guaranteePeriodUnitName
-            }
-        },
-        // {
-        //   width: 120,
-        //   prop: 'guaranteePeriodUnitCode',
-        //   label: '',
-        //   slot: 'guaranteePeriodUnitCode'
-        // },
          {
           width: 120,
           prop: 'technicalAnswerName',
@@ -323,9 +331,15 @@
         }
            ],
         };
+      },
+      created(){
+       
       },
       methods: {
-     
+      async getcode(code){
+        const res = await getByCode(code);
+        this.codeData=res.data
+       },
         async open(row) {
           this.form = row;
           this.visible = true;
@@ -348,9 +362,17 @@
       },
         async getDetailData (id) {
           this.loading = true;
-          const data = await getSendSaleOrderrecordDetail(id);
+          await this.getcode('sale_return_type')
+          const data = await getReturnSaleOrderrecordDetail(id);
           this.loading = false;
           if (data) {
+            let productList=data.productList;
+            productList.forEach(r=>{
+              let foundObject=this.codeData.find(obj=>obj[r.returnType]!=undefined)
+              if(foundObject){
+                r.returnTypeName=foundObject[r.returnType]
+              }
+            })
             this.detailData = data;
             
           }

+ 414 - 0
src/views/saleManage/saleOrder/returnGoods/components/inventoryTable.vue

@@ -0,0 +1,414 @@
+<template>
+  <el-form ref="form" :model="form" :rules="rules">
+
+    <ele-pro-table ref="table" :needPage="false" :columns="columns" :toolkit="[]" :datasource="form.datasource"
+      cache-key="systemRoleTable17" class="time-form">
+      <!-- 表头工具栏 -->
+      <template v-slot:toolbar>
+        <div class="headbox" v-if="sendId">
+        <el-button size="small" type="primary" icon="el-icon-plus" class="ele-btn-icon" @click="handlAdd">
+          新增
+        </el-button>
+       
+      </div>
+      </template>
+      <template v-slot:technicalDrawings="{ row,$index }">
+        <el-form-item style="margin-bottom: 20px;" :prop="'datasource.' + $index + '.technicalDrawings'">
+            <div v-if="row.technicalDrawings && row.technicalDrawings?.length">
+            <el-link 
+            v-for="link in row.technicalDrawings" :key="link.id"
+                         type="primary" :underline="false"
+                         @click="downloadFile(link)"> {{ link.name }}</el-link>
+                        </div>
+                      </el-form-item>
+           </template>
+      <template v-slot:returnReason="{ row, $index }">
+        <el-form-item style="margin-bottom: 20px;" :prop="'datasource.' + $index + '.returnReason'">
+          <el-input
+                clearable
+                v-model="row.returnReason"
+                type="textarea"
+                placeholder="请输入"
+              />
+        </el-form-item>
+      </template>
+      <template v-slot:returnType="{ row, $index }">
+        <el-form-item style="margin-bottom: 20px;" :prop="'datasource.' + $index + '.returnType'">
+          <DictSelection
+                  dictName="退货类型"
+                  clearable
+                  v-model="row.returnType"
+                />
+        </el-form-item>
+      </template>
+      <template v-slot:totalCount="scope">
+        <el-form-item style="margin-bottom: 20px" :prop="'datasource.' + scope.$index + '.totalCount'" :rules="[
+                  { required: true, message: '请输入数字', trigger: 'blur' },
+                  { validator: validateTotalCount(scope.row), trigger: 'blur' }
+              ]">
+          <el-input v-model="scope.row.totalCount" @input="(val)=>changeNum(val,scope.$index)"></el-input>
+        </el-form-item>
+      </template>
+     
+    
+     
+      <!-- 操作列 -->
+      <template v-slot:action="{ row }">
+        <el-popconfirm class="ele-action" title="确定要删除吗?" @confirm="remove(row)">
+          <template v-slot:reference>
+            <el-link type="danger" :underline="false" icon="el-icon-delete">
+              删除
+            </el-link>
+          </template>
+        </el-popconfirm>
+      </template>
+    </ele-pro-table>
+    <product-list ref="productListRef" :sendId="sendId"  @changeParent="changeParent"></product-list>
+  </el-form>
+</template>
+<script>
+import { emailReg, phoneReg,numberReg } from 'ele-admin';
+import dictMixins from '@/mixins/dictMixins';
+import productList from './product-list.vue'
+import store from '@/store';
+export default {
+  mixins: [dictMixins],
+  props:{
+    sendId:String
+  },
+  components: {
+    productList,
+    },
+  data() {
+    const defaultForm = {
+      key: null,
+      endTime: '',
+      isFirst: 0,
+      name: '',
+      startTime: '',
+      workHour: '',
+      technicalDrawings:[]
+    };
+    return {
+      discountTotalPrice:0.00,
+      allPrice:0.00,
+      numberReg,
+      defaultForm,
+      form: {
+        datasource: []
+      },
+      rules: {},
+   
+      columns: [
+        {
+          width: 45,
+          type: 'index',
+          columnKey: 'index',
+          align: 'center',
+          fixed: 'left'
+        },
+        {
+          width: 200,
+          prop: 'productName',
+          label: '名称',
+          slot: 'productName'
+        },
+        {
+          width: 120,
+          prop: 'productCode',
+          label: '编码',
+          slot: 'productCode'
+        },
+        {
+          width: 200,
+          prop: 'productCategoryName',
+          label: '类型',
+          slot: 'productCategoryName'
+        },
+        {
+          width: 160,
+          prop: 'productBrand',
+          label: '牌号',
+          slot: 'productBrand'
+        },
+        {
+          width: 120,
+          prop: 'modelType',
+          label: '型号',
+          slot: 'modelType'
+        },
+        {
+          width: 120,
+          prop: 'specification',
+          label: '规格',
+          slot: 'specification'
+        },
+        {
+          width: 120,
+          prop: 'sendTotalCount',
+          label: '发货单数量',
+          slot: 'sendTotalCount'
+        },
+        
+       
+        {
+          width: 120,
+          prop: 'totalCount',
+          label: '退货数量',
+          slot: 'totalCount'
+        },
+        {
+          width: 80,
+          prop: 'measuringUnit',
+          label: '计量单位',
+          slot: 'measuringUnit'
+        },
+        {
+          width: 160,
+          prop: 'singlePrice',
+          label: '退货单价',
+          slot: 'singlePrice'
+        },
+        {
+          width: 120,
+          prop: 'totalPrice',
+          label: '退货总金额',
+          slot: 'totalPrice'
+        },
+         {
+          width: 200,
+          prop: 'returnReason',
+          label: '退货原因',
+          slot: 'returnReason'
+        },
+        {
+          width: 140,
+          prop: 'returnType',
+          label: '退货类型',
+          slot: 'returnType'
+        },
+       
+        
+       
+        {
+          width: 80,
+          prop: 'deliveryDays',
+          label: '交期(天)',
+          slot: 'deliveryDays'
+        },
+        {
+          width: 200,
+          prop: 'guaranteePeriod',
+          label: '质保期',
+          slot: 'guaranteePeriod'
+        },
+       
+         {
+          width: 130,
+          prop: 'technicalAnswerName',
+          label: '技术答疑人',
+          slot: 'technicalAnswerName'
+        },
+        {
+          width: 220,
+          prop: 'technicalParams',
+          label: '技术参数',
+          slot: 'technicalParams'
+        },
+        {
+          width:240,
+          prop: 'technicalDrawings',
+          label: '技术图纸',
+          slot: 'technicalDrawings'
+        },
+        {
+          width: 220,
+          prop: 'remark',
+          label: '备注',
+          slot: 'remark'
+        },
+        {
+          columnKey: 'action',
+          label: '操作',
+          width: 120,
+          align: 'center',
+          resizable: false,
+          slot: 'action',
+          fixed:'right',
+          showOverflowTooltip: true
+        }
+      ],
+    };
+  },
+  computed: {
+   
+    contractId(){
+      return this.$store.state.order.contractId
+    }
+  },
+  methods: {
+    //修改数量更新合计
+    changeNum(val,index){
+      this.$set(this.form.datasource[index], 'totalPrice', (Number(this.form.datasource[index].singlePrice)*val).toFixed(2));
+      this.$store.commit('returnGoods/setIsDefaultPayableAmount', false); 
+       this.gettotalAmount()
+    },
+    //获取订单总金额
+    gettotalAmount() {
+      let productData=this.form.datasource;
+      if(productData.length){
+        let sum=productData.reduce((sum,item)=>{
+          return sum+Number(item.totalPrice)
+        },0).toFixed(2)
+        this.$store.commit('returnGoods/setAllcountAmount', sum);
+      }else{
+        this.$store.commit('returnGoods/setAllcountAmount', 0);
+      }
+    },
+      //选择产品回调
+      changeParent(obj,idx) {
+        console.log(obj,'9999')  
+        obj.orderTotalCount=obj.totalCount
+        this.$set(this.form.datasource, this.form.datasource.length, obj);
+      },
+    validateTotalCount(row) {
+         return (rule, value, callback) => {
+           if (isNaN(value) || Number(value) <= 0) {
+            this.$message.error('请输入大于0的数')
+             callback(new Error('请输入大于0的数字'));
+           } else if (Number(value) > row.orderTotalCount) {
+            this.$message.error('输入的数字不能大于最大发货值')
+             callback(new Error('输入的数字不能大于最大发货值'));
+           } else {
+             callback();
+           }
+         }
+       },
+      // 返回列表数据
+      getTableValue(){
+        let comitDatasource=this.form.datasource
+        if(comitDatasource.length===0) return []
+        comitDatasource.forEach(v=>{
+          v.totalCount=Number(v.totalCount)
+          v.technicalDrawings=Array.isArray(v.technicalDrawings)?v.technicalDrawings:[]
+        })
+         return comitDatasource
+      },
+      getPrice(){
+        return [this.allPrice]
+      },
+
+   
+      //修改回显
+      putTableValue(data){
+        if(data&&data?.length){
+            data.forEach(v=>{
+              v.returnReason=v.returnReason||''
+              v.returnType= v.returnType||''
+              v.sendTotalCount=v.totalCount
+            })
+            this.form.datasource=data
+            this.gettotalAmount()
+        }
+      },
+    //选择产品
+    handParent(row,index) {
+      let item={
+          id:row.productCode
+        }
+        this.$refs.productListRef.open(item,index)
+      },
+//选择技术人回调
+changeAnswer(obj,idx) {
+        this.$set( this.form.datasource[idx], 'technicalAnswerId',  obj.id)
+        this.$set(this.form.datasource[idx], 'technicalAnswerName',  obj.name)
+      },
+      handHead(row,index){
+        let item={
+          id:row.technicalAnswerId
+        }
+        this.$refs.headRef.open(item,index)
+      },
+
+    remove(row) {
+      let index = this.form.datasource.findIndex((n) => n.key == row.key);
+      if (index !== -1) {
+        this.form.datasource.splice(index, 1);
+        this.setSort();
+        this.gettotalAmount()
+      }
+    },
+    // 清空表格
+    restTable() {
+      this.form.datasource = [];
+    },
+    // 重新排序
+    setSort() {
+      this.form.datasource.forEach((n, index) => {
+        n.key = index + 1;
+      });
+    },
+    // 添加
+    handlAdd() {
+      if(!this.sendId) return this.$message.error('请先选择订单')
+      this.$refs.productListRef.open(this.form.datasource )
+    },
+
+    validateForm (callback) {
+        //开始表单校验
+        this.$refs.form.validate((valid) => {
+          callback(valid);
+        });
+      },
+ 
+  }
+};
+</script>
+<style lang="scss" scoped>
+.headbox{
+  display: flex;
+  justify-content: space-between;
+  align-items: center;
+  .amount{
+    font-size: 14px;
+    font-weight: bold;
+    padding-right: 30px;
+  }
+}
+.time-form .el-form-item {
+  margin-bottom: 0 !important;
+}
+
+::v-deep .period{
+display: flex;
+.borderleftnone{
+  .el-input--medium .el-input__inner{
+    border-top-right-radius: 0;
+    border-bottom-right-radius: 0;
+  }
+}
+.borderrightnone{
+  .el-input--medium .el-input__inner{
+    border-top-left-radius: 0;
+    border-bottom-left-radius: 0;
+  }
+}
+ 
+}
+
+::v-deep .time-form tbody > tr:hover>td {
+  background-color: transparent !important;
+}
+::v-deep .time-form .el-table tr{
+  background-color: #ffffff;
+}
+
+.pricebox{
+  display: flex;
+  justify-content: flex-start;
+  align-items: center;
+  font-weight: bold;
+}
+
+
+</style>

+ 212 - 0
src/views/saleManage/saleOrder/returnGoods/components/product-list.vue

@@ -0,0 +1,212 @@
+<template>
+    <el-dialog title="选择产品" :visible.sync="visible" :before-close="handleClose" :close-on-click-modal="false"  top="5vh"
+        :close-on-press-escape="false" append-to-body width="80%">
+        <el-card shadow="never">
+            <ele-pro-table ref="table" :columns="columns" :datasource="datasource" row-key="id"
+                        height="calc(100vh - 350px)" class="dict-table" @cell-click="cellClick">
+                        <!-- 表头工具栏 -->
+                        <template v-slot:action="{ row }">
+                            <el-radio class="radio" v-model="radio" :label="row.id"><i></i></el-radio>
+                        </template>
+                    </ele-pro-table>
+        </el-card>
+
+        <div class="btns">
+            <el-button type="primary" size="small" @click="selected">选择</el-button>
+            <el-button size="small" @click="handleClose">关闭</el-button>
+        </div>
+
+    </el-dialog>
+</template>
+  
+<script>
+import { addSendInformation,UpdateSendInformation,getSendSaleOrderrecordDetail} from '@/api/saleManage/saleordersendrecord';
+export default {
+   props:{
+    sendId:String
+   },
+    data() {
+        return {
+            visible: false,
+            currentIndex:null,
+            currentData:[],   //已经存在的产品
+            datasource:[],
+             columns: [
+
+                {
+                    action: 'action',
+                    slot: 'action',
+                    align: 'center',
+                    label: '选择'
+                },
+                {
+          columnKey: 'index',
+          type: 'index',
+          width: 50,
+          align: 'center',
+          showOverflowTooltip: true,
+          label: '序号'
+        },
+        {
+        width: 200,
+        prop: 'productName',
+        label: '名称',
+        slot: 'productName'
+      },
+      {
+        width: 120,
+        prop: 'productCode',
+        label: '编码',
+        slot: 'productCode'
+      },
+      {
+        width: 200,
+        prop: 'productCategoryName',
+        label: '类型',
+        slot: 'productCategoryName'
+      },
+      {
+        width: 160,
+        prop: 'productBrand',
+        label: '牌号',
+        slot: 'productBrand'
+      },
+      {
+        width: 120,
+        prop: 'modelType',
+        label: '型号',
+        slot: 'modelType'
+      },
+      {
+        width: 120,
+        prop: 'specification',
+        label: '规格',
+        slot: 'specification'
+      },
+     
+      {
+        width: 160,
+        prop: 'singlePrice',
+        label: '单价',
+        slot: 'singlePrice'
+      },
+      {
+        width: 120,
+        prop: 'totalCount',
+        label: '数量',
+        slot: 'totalCount'
+      },
+      {
+        width: 120,
+        prop: 'totalPrice',
+        label: '销售总金额',
+        slot: 'totalPrice',
+        formatter: (_row, _column, cellValue) => {
+            return _row.totalPrice+'元'
+          }
+      },
+     ],
+
+            radio: null,
+        }
+    },
+
+    watch: {
+        sendId(id){
+            this.getSendSaleOrderrecordDetail(id)
+        }
+    },
+    methods: {
+        open(data) {
+            this.currentData = data||[]           
+            this.visible = true
+        },
+ //获取订单详情
+ async getSendSaleOrderrecordDetail(id){
+        this.loading = true;
+        const data = await getSendSaleOrderrecordDetail(id);
+        this.loading = false;
+        if (data) {
+          this.$nextTick(()=>{
+            let {partaId,partaName,partaTel,orderNo,id,partaLinkName,receiveAddress,productList,totalAmount,payAmount}=data
+             this.datasource=productList
+          })
+          
+          
+        }
+      },
+
+        /* 刷新表格 */
+        reload(where) {
+            this.$refs.table.reload({ pageNum: 1, where: where  });
+        },
+
+        handleNodeClick(data, node) {
+            this.curNodeData = data;
+            this.reload({ categoryLevelId: data.id });
+        },
+
+
+        // 单击获取id
+        cellClick(row) {
+            this.current = row
+            this.radio = row.id
+        },
+        handleClose() {
+            this.visible = false
+            this.current = null
+            this.radio = ''
+        },
+
+        selected() {
+            if (!this.current) {
+                return this.$message.warning('请至少选择一条数据')
+            }
+           let index=  this.currentData.findIndex(r=>r.id==this.current.id)
+           if(index!=-1){
+            return this.$message.error('选择的产品已经存在列表了')
+           }
+            this.$emit('changeParent', this.current,this.currentIndex)
+            this.handleClose()
+        },
+
+
+
+
+
+    }
+}
+</script>
+  
+<style lang="scss" scoped>
+.tree_col {
+    border: 1px solid #eee;
+    padding: 10px 0;
+    box-sizing: border-box;
+    height: 500px;
+    overflow: auto;
+}
+
+.table_col {
+    padding-left: 10px;
+
+    ::v-deep .el-table th.el-table__cell {
+        background: #f2f2f2;
+    }
+}
+
+.pagination {
+    text-align: right;
+    padding: 10px 0;
+}
+
+.btns {
+    text-align: center;
+    padding: 10px 0;
+}
+
+.topsearch {
+    margin-bottom: 15px;
+}
+</style>
+  

+ 8 - 11
src/views/saleManage/saleOrder/returnGoods/components/searchTable.vue

@@ -8,11 +8,11 @@
   >
     <el-row :gutter="15">
       <el-col v-bind="styleResponsive ? { lg: 6, md: 12 } : { span: 6 }">
-        <el-form-item label="发货单编码:" prop="docNo">
+        <el-form-item label="退货单编码:" prop="returnNo">
           <el-input
             clearable
             placeholder="请输入"
-            v-model.trim="params.docNo"
+            v-model.trim="params.returnNo"
           ></el-input>
         </el-form-item>
         <el-form-item label="订单编码:" prop="orderNo">
@@ -24,15 +24,12 @@
         </el-form-item>
       </el-col>
        <el-col v-bind="styleResponsive ? { lg:6, md: 12 } : { span:6 }">
-        <el-form-item label="是否回执:" prop="replied">
-          <el-select v-model="params.replied" placeholder="请选择" class="w100" clearable>
-            <el-option
-              v-for="item in repliedOptions"
-              :key="item.value"
-              :label="item.label"
-              :value="item.value"
-            ></el-option>
-          </el-select>
+        <el-form-item label="发货单编码:" prop="sendNo">
+          <el-input
+            clearable
+            placeholder="请输入"
+            v-model.trim="params.sendNo"
+          ></el-input>
         </el-form-item>
         <el-form-item label="审核状态:" prop="reviewStatus">
           <el-select v-model="params.reviewStatus" placeholder="请选择" class="w100" clearable>

+ 54 - 93
src/views/saleManage/saleOrder/returnGoods/components/orderListDialog.vue → src/views/saleManage/saleOrder/returnGoods/components/sendListDialog.vue

@@ -1,5 +1,5 @@
 <template>
-      <el-dialog title="选择单"  custom-class="ele-dialog-form long-dialog-form" :visible.sync="visible" :before-close="handleClose" :close-on-click-modal="false" top="5vh"
+      <el-dialog title="选择发货单"  custom-class="ele-dialog-form long-dialog-form" :visible.sync="visible" :before-close="handleClose" :close-on-click-modal="false" top="5vh"
         :close-on-press-escape="false" append-to-body width="80%">
         <el-card shadow="never">
             <searchTable @search="reload"></searchTable>
@@ -24,12 +24,11 @@
 
 
 import {contactTypeTree} from '@/api/saleManage/contact';
-import searchTable from '@/views/saleManage/saleOrder/components/searchTable.vue';
-import {getTableList} from '@/api/saleManage/saleorder';
-import AssetTree from '@/components/AssetTree';
+import searchTable from '@/views/saleManage/saleOrder/invoice/components/searchTable.vue';
+import {getSendTableList} from '@/api/saleManage/saleordersendrecord';
+import {reviewStatusEnum} from '@/enum/dict';
 export default {
     components: {
-        AssetTree,
         searchTable
     },
  
@@ -55,93 +54,55 @@ export default {
                    
                 },
              
-          {
-            prop: 'orderNo',
-            label: '订单编码',
-            align: 'center',
-            slot: 'orderNo',
-            showOverflowTooltip: true,
-            minWidth: 200
-          }, 
-          {
-            prop: 'contractName',
-            label: '合同名称',
-            align: 'center',
-            slot: 'contractName',
-            showOverflowTooltip: true,
-            minWidth: 200
-          },
-          {
-            prop: 'deliveryDate',
-            label: '交货日期',
-            align: 'center',
-            showOverflowTooltip: true,
-            minWidth: 200
-          },
-          {
-            prop: 'saleTypeName',
-            label: '销售类型',
-            align: 'center',
-            showOverflowTooltip: true,
-            minWidth: 140
-          },
-          {
-            prop: 'partaName',
-            label: '客户名称',
-            align: 'center',
-            showOverflowTooltip: true,
-            minWidth: 180,
-          },
-          {
-            prop: 'partaLinkName',
-            label: '客户联系人',
-            align: 'center',
-            showOverflowTooltip: true,
-            minWidth: 130,
-          },
-         
-          {
-            prop: 'partaTel',
-            label: '客户联系电话',
-            align: 'center',
-            showOverflowTooltip: true,
-            minWidth: 130,
-          },
-          {
-            prop: 'partbName',
-            label: '售出方名称',
-            align: 'center',
-            showOverflowTooltip: true,
-            minWidth: 130,
-          },
-          {
-            prop: 'partbLinkName',
-            label: '售出方联系人',
-            align: 'center',
-            showOverflowTooltip: true,
-            minWidth: 130,
-          },
-          {
-            prop: 'partbTel',
-            label: '售出方联系电话',
-            align: 'center',
-            showOverflowTooltip: true,
-            minWidth: 130,
-          },
-          {
-            prop: 'payAmount',
-            label: '应付金额(元)',
-            align: 'center',
-            showOverflowTooltip: true,
-            minWidth: 170
-          },
-          {
-            prop: 'createTime',
-            label: '创建时间',
-            align: 'center',
-            showOverflowTooltip: true,
-            minWidth: 170
-          },
+                {
+              prop: 'docNo',
+              label: '发货编码',
+              align: 'center',
+              slot: 'docNo',
+              showOverflowTooltip: true,
+              minWidth: 200
+            },
+            {
+              prop: 'orderNo',
+              label: '订单编码',
+              align: 'center',
+              showOverflowTooltip: true,
+              minWidth: 200
+            }, 
+            {
+              prop: 'contactName',
+              label: '客户名称',
+              align: 'center',
+              showOverflowTooltip: true,
+              minWidth: 180,
+            },
+            {
+              prop: 'replied',
+              label: '是否回执',
+              align: 'center',
+              showOverflowTooltip: true,
+              minWidth: 200,
+              formatter: (_row, _column, cellValue) => {
+              return _row.replied==1?'是':'否';
+            }
+            },
+            {
+              prop: 'reviewStatus',
+              label: '状态',
+              align: 'center',
+              showOverflowTooltip: true,
+              minWidth: 200,
+              formatter: (_row, _column, cellValue) => {
+              return reviewStatusEnum[_row.reviewStatus].label;
+            }
+            },
+            {
+              prop: 'createTime',
+              label: '创建时间',
+              align: 'center',
+              showOverflowTooltip: true,
+              minWidth: 170
+            },
                ],
 
             radio: null,
@@ -161,7 +122,7 @@ export default {
 
         /* 表格数据源 */
         datasource({ page, limit, where, order }) {
-            return getTableList({
+            return getSendTableList({
                 pageNum: page,
                 size: limit,
                 ...where

+ 36 - 21
src/views/saleManage/saleOrder/returnGoods/index.vue

@@ -41,8 +41,14 @@
 
               <!-- 查看详情列 -->
            
-              <template v-slot:docNo="{ row }">
-                <el-link type="primary" :underline="false" @click="openorderDetail(row)"> {{ row.docNo }}</el-link>
+              <template v-slot:returnNo="{ row }">
+                <el-link type="primary" :underline="false" @click="openorderDetail(row,'returnNo')"> {{ row.returnNo }}</el-link>
+              </template>
+              <template v-slot:sendNo="{ row }">
+                <el-link type="primary" :underline="false" @click="openorderDetail(row,'sendNo')"> {{ row.sendNo }}</el-link>
+              </template>
+              <template v-slot:orderNo="{ row }">
+                <el-link type="primary" :underline="false" @click="openorderDetail(row,'orderNo')"> {{ row.orderNo }}</el-link>
               </template>
               <!-- 操作列 -->
               <template v-slot:action="{ row }">
@@ -76,7 +82,9 @@
     </el-card>
 
 
-    <add-invoice-dialog ref="invoiceDialogRef"  @done="reload"></add-invoice-dialog>
+    <add-return-goods-dialog ref="invoiceDialogRef"  @done="reload"></add-return-goods-dialog>
+    <send-detail-dialog  ref="sendDetailDialogRef"></send-detail-dialog>
+    <order-detail-dialog  ref="orderDetailDialogRef"></order-detail-dialog>
     <detail-dialog ref="DetailDialogRef"></detail-dialog>
 <!-- 多选删除弹窗 -->
     <pop-modal :visible.sync="delVisible" content="是否确定删除?" @done="commitBtn"/>
@@ -85,13 +93,14 @@
 
 <script>
 import searchTable from './components/searchTable.vue';
-import addInvoiceDialog from './components/addInvoiceDialog.vue';
+import addReturnGoodsDialog from './components/addReturnGoodsDialog.vue';
 import detailDialog from './components/detailDialog.vue';
+import sendDetailDialog from '@/views/saleManage/saleOrder/invoice/components/detailDialog.vue'
+import orderDetailDialog from '@/views/saleManage/saleOrder/components/detailDialog.vue'
 import popModal from '@/components/pop-modal';
 import {reviewStatusEnum} from '@/enum/dict';
 import {contactTypeTree} from '@/api/saleManage/contact';
-import {getTableList, getDetail, UpdateInformation, addInformation,deleteInformation} from '@/api/saleManage/saleorder';
-import {getReturnTableList,deleteReturnInformation} from '@/api/saleManage/returnGoods';
+import {getReturnTableList, getReturnSaleOrderrecordDetail, UpdateReturnInformation, addReturnInformation,deleteReturnInformation} from '@/api/saleManage/returnGoods';
 import dictMixins from '@/mixins/dictMixins';
 
 
@@ -99,8 +108,10 @@ export default {
     mixins: [dictMixins],
     components: {
       searchTable,
+      sendDetailDialog,
+      orderDetailDialog,
       popModal,
-      addInvoiceDialog,
+      addReturnGoodsDialog,
       detailDialog,
     },
     data() {
@@ -139,17 +150,18 @@ export default {
             minWidth: 200
           },
           {
-            prop: 'discountAmount',
-            label: '退货金额',
+            prop: 'sendNo',
+            label: '发货编码',
             align: 'center',
-            slot: 'discountAmount',
+            slot: 'sendNo',
             showOverflowTooltip: true,
             minWidth: 200
           },
           {
             prop: 'orderNo',
-            label: '订单编码',
+            label: '销售订单编码',
             align: 'center',
+            slot: 'orderNo',
             showOverflowTooltip: true,
             minWidth: 200
           }, 
@@ -164,15 +176,9 @@ export default {
             prop: 'payAmount',
             label: '应付金额',
             align: 'center',
+            slot: 'payAmount',
             showOverflowTooltip: true,
-            minWidth: 180,
-          },
-          {
-            prop: 'totalAmount',
-            label: '订单总金额',
-            align: 'center',
-            showOverflowTooltip: true,
-            minWidth: 180,
+            minWidth: 200
           },
           {
             prop: 'reviewStatus',
@@ -239,7 +245,7 @@ export default {
       
       //删除接口
       remove(delData) {
-          deleteSendInformation(delData).then((res) => {
+        deleteReturnInformation(delData).then((res) => {
           this.$message.success('删除成功!');
           this.reload();
         });
@@ -252,8 +258,17 @@ export default {
       },
 
     //查看详情
-    openorderDetail(row){
+    openorderDetail(row,type){
+      if(type==='returnNo'){
         this.$refs.DetailDialogRef.open(row);
+      }
+      if(type==='sendNo'){
+        this.$refs.sendDetailDialogRef.open({id:row.sendId});
+      }
+      if(type==='orderNo'){
+        this.$refs.orderDetailDialogRef.open({id:row.orderId});
+      }
+       
       },
 
     }