zhujun hace 2 años
padre
commit
0bca6fda9b

+ 71 - 0
src/api/saleManage/accountstatement.js

@@ -0,0 +1,71 @@
+import request from '@/utils/request';
+import { download } from '@/utils/file';
+/**
+ * 获取信息列表
+ */
+export async function getAccountstatementList(params) {
+  const res = await request.get(`/eom/accountstatement/page`, { params });
+  if (res.data.code == 0) {
+    return res.data.data;
+  }
+  return Promise.reject(new Error(res.data.message));
+}
+
+/**
+ * 获取信息详情
+ */
+export async function gettAccountstatementDetail(id) {
+  const res = await request.get(`/eom/accountstatement/getById/${id}`, {});
+  if (res.data.code == 0) {
+    return res.data.data;
+  }
+  return Promise.reject(new Error(res.data.message));
+}
+
+/**
+ * 更新信息
+ */
+export async function UpdatetAccountstatement(data) {
+  const res = await request.put(`/eom/accountstatement/update`, data);
+  if (res.data.code == 0) {
+    return res.data.data;
+  }
+  return Promise.reject(new Error(res.data.message));
+}
+
+/**
+ * 新增信息
+ */
+export async function addtAccountstatement(data) {
+  const res = await request.post(`/eom/accountstatement/save`, data);
+  if (res.data.code == 0) {
+    return res.data.data;
+  }
+  return Promise.reject(new Error(res.data.message));
+}
+
+/**
+ * 删除
+ */
+export async function deletetAccountstatement(data) {
+  const res = await request.delete('/eom/accountstatement/delete', { data });
+  if (res.data.code == 0) {
+    return res.data.data;
+  }
+  return Promise.reject(new Error(res.data.message));
+}
+
+
+
+
+
+/**
+ * 查询待导入的账单明细
+ */
+export async function getsearchDetailListByType(params) {
+    const res = await request.get(`/eom/accountstatement/searchDetailListByType`, {params});
+    if (res.data.code == 0) {
+      return res.data.data;
+    }
+    return Promise.reject(new Error(res.data.message));
+  }

+ 2 - 2
src/views/saleManage/quotation/components/inventoryTable.vue

@@ -121,7 +121,7 @@
       </template>
       <template v-slot:technicalAnswerName="{ row, $index }">
         <el-form-item style="margin-bottom: 20px" :prop="'datasource.' + $index + '.technicalAnswerName'" :rules="{
-          required: true,
+          required: false,
           message: '请输入',
           trigger: 'change'
         }">
@@ -130,7 +130,7 @@
       </template>
       <template v-slot:technicalParams="scope">
         <el-form-item style="margin-bottom: 20px" :prop="'datasource.' + scope.$index + '.technicalParams'" :rules="{
-          required: true,
+          required: false,
           message: '请输入',
           trigger: 'change'
         }">

+ 456 - 0
src/views/saleManage/saleOrder/accountstatement/components/addAccountDialog.vue

@@ -0,0 +1,456 @@
+<template>
+  <ele-modal
+  custom-class="ele-dialog-form long-dialog-form"
+    :centered="true"
+    v-if="visible"
+    :visible.sync="visible"
+    :title="title"
+    :close-on-click-modal="false"
+    width="80%"
+    @close="cancel"
+  >
+  
+  <el-form ref="form" :model="form" :rules="rules" label-width="120px">
+   
+      <headerTitle title="对账单信息"></headerTitle>
+        <el-row>
+         
+          <el-col :span="12">
+            <el-form-item
+              label="选择订单"
+              prop="orderNo"
+              style="margin-bottom: 22px"
+            >
+            <el-input
+                clearable
+                v-model="form.orderNo"
+                @click.native="handleOrderBtn"
+                placeholder="请输入"
+              />
+            </el-form-item>
+            <el-form-item
+              label="客户名称"
+              prop="contactName"
+              style="margin-bottom: 22px"
+            >
+            <el-input
+                clearable
+                v-model="form.contactName"
+                disabled
+              />
+            </el-form-item>
+            <el-form-item
+              label="项目名称"
+              prop="projectName"
+              style="margin-bottom: 22px"
+            >
+            <el-input
+                clearable
+                v-model="form.projectName"
+                disabled
+              />
+            </el-form-item>
+            <el-form-item
+              label="备注"
+              prop="remark"
+              style="margin-bottom: 22px"
+            >
+            <el-input
+                clearable
+                v-model="form.remark"
+                type="textarea"
+                placeholder="请输入"
+              />
+            </el-form-item>
+          </el-col>
+
+          <el-col :span="12">
+          
+              <el-form-item
+              label="账期"
+              prop="accountPeriod"
+              style="margin-bottom: 22px"
+            >
+                <el-date-picker
+                   v-model="form.accountPeriod"
+                   value-format="yyyy-MM"
+                   type="month"
+                   placeholder="选择月">
+                 </el-date-picker>
+            </el-form-item>
+
+           
+              <el-form-item
+              label="开始日期"
+              prop="startDate"
+              style="margin-bottom: 22px"
+            >
+                 <el-date-picker
+                 v-model="form.startDate"
+                 type="date"
+                 value-format="yyyy-MM-dd"
+                 placeholder="选择日期">
+               </el-date-picker>
+            </el-form-item>
+            <el-form-item
+              label="结束日期"
+              prop="endDate"
+              style="margin-bottom: 22px"
+            >
+                 <el-date-picker
+                 v-model="form.endDate"
+                 type="date"
+                 value-format="yyyy-MM-dd"
+                 placeholder="选择日期">
+               </el-date-picker>
+            </el-form-item>
+            <el-form-item
+              label=""
+              prop=""
+              style="margin-bottom: 22px"
+            >
+            <el-button type="primary" @click="seachAccountDetail">查询明细</el-button>
+            </el-form-item>
+           
+          </el-col>
+        </el-row>
+        
+
+
+      
+
+      
+    
+      <headerTitle title="对账明细" style="margin-top:30px;"></headerTitle>
+     <inventoryTable  ref="inventoryTableref" ></inventoryTable>
+        
+    </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>
+  </ele-modal>
+</template>
+
+<script>
+import { emailReg, phoneReg,numberReg } from 'ele-admin';
+import {acceptUnpackoptions} from '@/enum/dict';
+import fileUpload from '@/components/upload/fileUpload';
+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 { addtAccountstatement,UpdatetAccountstatement,gettAccountstatementDetail,getsearchDetailListByType} from '@/api/saleManage/accountstatement';
+import {getcontactlink} from '@/api/saleManage/businessFollow';
+import inventoryTable from './inventoryTable.vue';
+import {listOrganizations} from '@/api/system/organization';
+import orderListDialog from './orderListDialog.vue';
+import {copyObj} from '@/utils/util';
+
+
+export default {
+    mixins: [dictMixins],
+    components: {
+      fileUpload,
+      deptSelect,
+      inventoryTable,
+      orderListDialog,
+      parentList,
+      personSelect
+    },
+    data() {
+      let formDef = {
+          id:'',
+          contractId: '',
+          contractName: '',
+          type:1,
+          orderNo:'',
+          orderId:'',
+          orderNum:null,
+          productNum:null,
+          projectName:'',
+          projectId:'',
+          remark:'',
+          startDate:'',
+          endDate:'',
+          totalPrice:null
+        };
+   
+      return {
+        detailData:{},   
+        payWayOptions:[],
+        delDetailIds:[],
+        linkNameOptions:[],
+        acceptUnpackoptions,
+        visible: false,
+        title: '',
+        row: {},
+        activeName: 'base',
+        formDef,
+        form: copyObj(formDef),
+        tableBankData: [],
+        tableLinkData: [],
+     // 组织机构树形结构数据
+       groupTreeData: [],
+       groupData:[],
+        rules: {        
+          orderNo: [
+            { required: true, message: '请选择订单', trigger: 'change' }
+          ],
+          accountPeriod: [
+            { required: true, message: '请选择账期', trigger: 'change' }
+          ],
+          startDate: [
+            { required: true, message: '请选择正确的开始日期',validator: this.validateStartDate, trigger: 'change' }
+          ],
+          endDate: [
+            { required: true, message: '请选择正确的结束日期',validator: this.validateEndDate, trigger: 'change' }
+          ],
+        },
+     
+        // 提交状态
+        loading: false,
+        // 是否是修改
+        isUpdate: false,
+      };
+    },
+    computed: {
+     
+      allcountAmount(){
+        return this.$store.state.order.allcountAmount
+      }
+    },
+   
+    methods: {
+ //开始日期验证
+ validateStartDate(rule, value, callback) {
+      if (this.form.endDate && value > this.form.endDate) {
+        callback(new Error('开始日期不能大于结束日期'));
+      } else {
+        callback();
+      }
+    },
+    //结束日期验证
+    validateEndDate(rule, value, callback) {
+      if (this.form.endDate&&this.form.startDate && value < this.form.startDate) {
+        callback(new Error('结束日期不能小于开始日期'));
+      } else {
+        callback();
+      }
+    },
+       //查询对账单明细
+       async seachAccountDetail(){
+        let {orderId,endDate,startDate}=this.form
+        try {
+          await this.getValidate();
+          let parms={
+          type:1,    //1销售订单2采购
+          orderId,
+          startDate,
+          endDate
+        }
+        const data = await getsearchDetailListByType(parms);
+        if(data&&data.length===0){
+          return this.$message.error('没有数据')
+        }
+        this.$refs.inventoryTableref&&this.$refs.inventoryTableref.putTableValue(data)
+
+        } catch (error) {
+          
+        }
+       
+        
+     
+       },
+       //选择订单回调
+       changeOrder(obj){
+        this.form = Object.assign({},this.form,{
+          orderId: obj.id,
+          orderNo: obj.orderNo,
+          contactId:obj.partaId,
+          contactName:obj.partaName,
+          projectName:obj.projectName,
+          projectId:obj.projectId
+        })
+        
+      },
+
+
+      //对账单详情
+      async gettAccountstatementDetail(id){
+        this.loading = true;
+        const data = await gettAccountstatementDetail(id);
+        this.loading = false;
+        if (data) {
+          this.form = data;
+            this.$refs.inventoryTableref&&this.$refs.inventoryTableref.putTableValue(data.detailList)
+          this.$nextTick(()=>{
+            this.$refs.form.validate();
+          })          
+        }
+      },
+
+   //更新联系人数据
+   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
+        }
+        this.$refs.headRef.open(item)
+     },
+
+
+
+  
+    
+
+    
+      //选择订单弹框
+       handleOrderBtn(){
+         let item = {
+           id: this.form.orderId
+      }
+        this.$refs.orderListDialogRef.open(item)
+    },
+
+    
+      //打开新增编辑弹框
+      async open(type, row,orderId) {
+        this.title = type==='add'?'新增发货单':'修改';
+        this.row = row;
+        this.visible = true;
+        if(row&&row?.id){
+          this.gettAccountstatementDetail(row?.id)
+        }
+        
+        if (type == 'add') {
+          this.isUpdate = false;
+        } else {
+          this.isUpdate = true;
+         
+        }
+      },
+
+      salesmanChange(val, info){
+        this.otherForm.salesmanName = info.name;
+      },
+      settlementModeChange(info){
+        this.form.settlementModeName = info.dictValue;
+      },
+      ifChiefChange(value, idx){
+        if(value === 1){
+          this.tableLinkData.forEach(e => e.ifChief = 0);
+          this.tableLinkData[idx].ifChief = 1;
+        }
+      },
+ 
+    
+     getValidate() {
+        return Promise.all([
+            new Promise((resolve, reject) => {
+              this.$refs.form.validate((valid) => {
+                if (!valid) {
+                  reject(false);
+                } else {
+                  resolve(true);
+                }
+              });
+            })
+          
+          ]);
+     },
+      async save() {
+        try {
+           await this.getValidate();
+           // 表单验证通过,执行保存操作
+           this.loading = true;
+      
+        if (!this.isUpdate) {
+          delete this.form.id;
+        } 
+        let [detailList,amountData]=this.$refs.inventoryTableref.getTableValue()
+        let commitData=Object.assign({},this.form,{
+          detailList,
+          ...amountData
+        })
+
+        if (this.isUpdate) {
+          UpdatetAccountstatement(commitData)
+            .then((res) => {
+              this.loading = false;
+              this.$message.success("修改成功");
+              this.cancel();
+              this.$emit('done');
+            })
+            .catch((e) => {
+              //this.loading = false;
+            });
+        } else {
+          addtAccountstatement(commitData)
+            .then((res) => {
+              this.loading = false;
+              this.$message.success("新增成功");
+              this.cancel();
+              this.$emit('done');
+            })
+            .catch((e) => {
+              //this.loading = false;
+            });
+          }
+        } catch (error) {
+          console.log(error)
+          // 表单验证未通过,不执行保存操作
+        }
+       
+      },
+      cancel() {
+        this.$nextTick(() => {
+          this.activeName = 'base';
+          // 关闭后,销毁所有的表单数据
+          this.$refs['otherForm'] &&  this.$refs['otherForm'].resetFields();
+          this.$refs['formRef'] &&  this.$refs['formRef'].resetFields();
+          this.$store.commit('order/clearUserData');
+          this.form = copyObj(this.formDef)
+          this.visible = false;
+        })
+      },
+ 
+    
+
+    }
+  };
+</script>
+<style scoped lang="scss">
+.TotalAmount{
+  font-size: 16px;
+  padding-right: 30px;
+}
+
+.headbox{
+  display: flex;
+  justify-content: flex-start;
+  align-items: center;
+  .amount{
+    font-size: 14px;
+    font-weight: bold;
+    margin-right: 20px;
+  }
+}
+</style>

+ 295 - 0
src/views/saleManage/saleOrder/accountstatement/components/detailDialog.vue

@@ -0,0 +1,295 @@
+<template>
+    <ele-modal
+    custom-class="ele-dialog-form long-dialog-form"
+      :centered="true"
+      v-if="visible"
+      :visible.sync="visible"
+      :title="title"
+      :close-on-click-modal="false"
+      width="80%"
+      @close="cancel"
+    >
+ 
+        <el-form ref="form" :model="form" :rules="rules" label-width="120px">
+    
+     <headerTitle title="对账单信息"></headerTitle>
+       <el-row>
+        <el-col :span="12">
+          <el-form-item
+              label="对账单编码:"
+              prop="statementNo"
+              style="margin-bottom: 16px"
+            >
+            {{form.statementNo}}
+            </el-form-item>
+            <el-form-item prop="orderNo" label="销售订单编码:" >
+              {{form.orderNo}}
+              </el-form-item>
+            <el-form-item
+              label="客户名称:"
+              prop="contactName"
+              style="margin-bottom: 16px"
+            >
+            {{form.contactName}}
+            </el-form-item>
+            <el-form-item
+              label="订单量:"
+              prop="orderNum"
+              style="margin-bottom: 16px"
+            >
+            {{form.orderNum}}
+            </el-form-item>
+            <el-form-item
+              label="产品总数量:"
+              prop="productNum"
+              style="margin-bottom: 16px"
+            >
+            {{form.productNum}}
+            </el-form-item>
+            <el-form-item
+              label="产品总金额:"
+              prop="totalPrice"
+              style="margin-bottom: 16px"
+            >
+            {{form.totalPrice}}元
+            </el-form-item>
+           
+          </el-col>
+
+        <el-col :span="12">
+            <el-form-item
+              label="账期:"
+              prop="accountPeriod"
+              style="margin-bottom: 16px"
+            >
+            {{form.accountPeriod}}
+            </el-form-item>
+            <el-form-item
+              label="开始日期:"
+              prop="startDate"
+              style="margin-bottom: 16px"
+            >
+            {{form.startDate}}
+            </el-form-item>
+            <el-form-item
+              label="结束日期:"
+              prop="endDate"
+              style="margin-bottom: 16px"
+            >
+            {{form.endDate}}
+            </el-form-item>
+              <el-form-item
+              label="审核状态:"
+              prop="reviewStatus"
+              style="margin-bottom: 16px"
+            >
+            {{reviewStatusEnum[form.reviewStatus].label}}
+            </el-form-item>
+            <el-form-item
+              label="备注:"
+              prop="remark"
+              style="margin-bottom: 16px"
+            >
+            {{form.remark}}
+            </el-form-item>
+           
+          </el-col>
+       </el-row>
+
+   </el-form>
+
+
+       
+        <headerTitle title="对账单明细"></headerTitle>
+        <ele-pro-table ref="table" :needPage="false" :columns="competAnalysisListcolumns"  :toolkit="[]" :datasource="detailData.detailList" row-key="id">
+    
+          <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>
+                     
+          </ele-pro-table>
+       
+      <div slot="footer" class="footer">
+        <el-button @click="cancel">返回</el-button>
+      </div>
+    </ele-modal>
+  </template>
+  
+  <script>
+  import {getFile} from '@/api/system/file';
+  import dictMixins from '@/mixins/dictMixins';
+  import {download } from '@/utils/file';
+  import {reviewStatusEnum} from '@/enum/dict';
+  import {copyObj} from '@/utils/util';
+  import { gettAccountstatementDetail} from '@/api/saleManage/accountstatement';
+  
+  export default {
+      mixins: [dictMixins],
+      data() {
+      
+        return {
+          reviewStatusEnum,
+          visible: false,
+          detailId:'',
+          title: '详情',
+          row: {},
+          activeName: 'base',
+          form:{
+            orderFiles:[{name:'222'}]
+          },
+          rules:{},
+          detailData:{},
+         
+          competAnalysisListcolumns: [
+        
+          {
+          width: 45,
+          type: 'index',
+          columnKey: 'index',
+          align: 'center',
+          fixed: 'left'
+        },
+        {
+          width: 200,
+          prop: 'orderNo',
+          label: '主单据编码',
+          slot: 'orderNo'
+        },
+        {
+          width: 200,
+          prop: 'orderType',
+          label: '主单据类型',
+          slot: 'orderType',
+          formatter: (_row, _column, cellValue) => {
+                  return _row.orderType===1?'销售发货':'销售退货'
+            }
+        },
+        {
+          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: 'totalCount',
+          label: '数量',
+          slot: 'totalCount'
+        },
+        {
+          width: 120,
+          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+'元'
+            }
+        }
+           ],
+        };
+      },
+      methods: {
+     
+        async open(row) {
+          this.form = row;
+          this.visible = true;
+          this.getDetailData(row.id)
+          this.detailId=row.id
+        },
+  
+        cancel() {
+          this.$nextTick(() => {
+            // 关闭后,销毁所有的表单数据
+            this.form = copyObj(this.formDef),
+            this.otherForm = copyObj(this.otherFormDef),
+            this.tableBankData = []
+            this.tableLinkData = []
+            this.visible = false;
+          })
+        },
+        downloadFile(file){
+        getFile({ objectName: file.storePath }, file.name);
+      },
+        async getDetailData (id) {
+          this.loading = true;
+          const data = await gettAccountstatementDetail(id);
+          this.loading = false;
+          if (data) {
+            this.form = data;
+            this.detailData = data;
+            
+          }
+        },
+  
+      }
+    };
+  </script>
+  
+  <style scoped lang="scss">
+  .ele-dialog-form{
+    .el-form-item{
+      margin-bottom: 10px;
+    }
+  }
+
+  .headbox{
+  display: flex;
+  justify-content: flex-start;
+  align-items: center;
+  .amount{
+    font-size: 14px;
+    font-weight: bold;
+    margin-right: 20px;
+  }
+}
+  </style>
+  

+ 349 - 0
src/views/saleManage/saleOrder/accountstatement/components/inventoryTable.vue

@@ -0,0 +1,349 @@
+<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: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: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>
+  
+    <el-row style="margin:20px 0 0 30px">
+             <el-col :span="6">
+              <el-form-item
+              label="订单量:"
+              prop="orderNum"
+              style="margin-bottom: 22px"
+            >
+             {{amountData.orderNum}}
+            </el-form-item>
+             </el-col>
+             <el-col :span="6">
+              <el-form-item
+              label="产品总数量:"
+              prop="productNum"
+              style="margin-bottom: 22px"
+            >
+             {{amountData.productNum}}
+            </el-form-item>
+             </el-col>
+             <el-col :span="6">
+              <el-form-item
+              label="产品总金额:"
+              prop="totalPrice"
+              style="margin-bottom: 22px"
+            >
+             {{amountData.totalPrice}}元
+            </el-form-item>
+             </el-col>
+        </el-row>
+  </el-form>
+  
+</template>
+<script>
+import { emailReg, phoneReg,numberReg } from 'ele-admin';
+import dictMixins from '@/mixins/dictMixins';
+import store from '@/store';
+export default {
+  mixins: [dictMixins],
+  components: {
+    },
+  data() {
+    const defaultForm = {
+      key: null,
+      endTime: '',
+      isFirst: 0,
+      name: '',
+      startTime: '',
+      workHour: '',
+      technicalDrawings:[]
+    };
+    return {
+      amountData:{
+        orderNum:null,
+      totalPrice:null,
+      productNum:null,
+      },
+     
+      numberReg,
+      defaultForm,
+      form: {
+        datasource: []
+      },
+      rules: {},
+     
+      columns: [
+        {
+          width: 45,
+          type: 'index',
+          columnKey: 'index',
+          align: 'center',
+          fixed: 'left'
+        },
+        {
+          width: 160,
+          prop: 'orderNo',
+          label: '主单据编码',
+          slot: 'orderNo'
+        },
+        {
+          width: 140,
+          prop: 'orderType',
+          label: '主单据类型',
+          slot: 'orderType',
+          formatter: (_row, _column, cellValue) => {
+                  return _row.orderType===1?'销售发货':'销售退货'
+            }
+        },
+        {
+          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: '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'
+        },
+       
+       
+        {
+          columnKey: 'action',
+          label: '操作',
+          width: 120,
+          align: 'center',
+          resizable: false,
+          slot: 'action',
+          fixed:'right',
+          showOverflowTooltip: true
+        }
+      ],
+    };
+  },
+  computed: {
+    canHandl() {
+      return this.form.datasource.length;
+    },
+    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));
+    },
+      //选择产品回调
+      changeParent(obj,idx) {
+        console.log(obj,'9999')  
+        obj.orderTotalCount=obj.totalCount
+        this.$set(this.form.datasource, this.form.datasource.length, obj);
+      },
+  
+      // 返回列表数据
+      getTableValue(){
+         return [this.form.datasource,this.amountData]
+      },
+      getPrice(){
+        return [this.allPrice]
+      },
+
+   
+      //修改回显
+      putTableValue(data){
+        if(data){
+           data.forEach(v=>{
+            if(v.orderType===2){
+              v.totalPrice=-v.totalPrice
+            }
+           })
+           this.form.datasource=data
+            this.getamountData(data)
+        }
+      },
+
+      //更新总数量
+      getamountData(data){
+        let orderNum=0,totalPrice=0,productNum=0,orderArr=[];
+           data.forEach(v=>{
+            if(v.orderType===2){
+              v.totalPrice=-v.totalPrice
+            }
+            if(!orderArr.includes(v.orderId)){
+              orderArr.push(v.orderId)
+            }
+            totalPrice+=v.totalPrice
+           })
+           this.amountData.productNum=data.length;
+           this.amountData.totalPrice=totalPrice
+           this.amountData.orderNum=orderArr.length
+      },
+    //选择产品
+    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.getamountData(this.form.datasource)
+        this.setSort();
+      }
+    },
+    // 清空表格
+    restTable() {
+      this.form.datasource = [];
+    },
+    // 重新排序
+    setSort() {
+      this.form.datasource.forEach((n, index) => {
+        n.key = index + 1;
+      });
+    },
+   
+
+    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>

+ 240 - 0
src/views/saleManage/saleOrder/accountstatement/components/orderListDialog.vue

@@ -0,0 +1,240 @@
+<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"
+        :close-on-press-escape="false" append-to-body width="80%">
+        <el-card shadow="never">
+            <searchTable @search="reload"></searchTable>
+            <ele-pro-table ref="table" :columns="columns" :datasource="datasource" row-key="id"
+                        height="calc(100vh - 500px)" 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" slot="footer">
+            <el-button type="primary" size="small" @click="selected">选择</el-button>
+            <el-button size="small" @click="handleClose">关闭</el-button>
+        </div>
+
+    </el-dialog>
+</template>
+  
+<script>
+
+
+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';
+export default {
+    components: {
+        AssetTree,
+        searchTable
+    },
+ 
+    data() {
+        return {
+            visible: false,
+            currentIndex:null,
+             columns: [
+                {
+            columnKey: 'index',
+            label: '序号',
+            type: 'index',
+            width: 55,
+            align: 'center',
+            showOverflowTooltip: true,
+            fixed: 'left'
+          },
+          {
+                    action: 'action',
+                    slot: 'action',
+                    align: 'center',
+                    label: '选择',
+                   
+                },
+             
+          {
+            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
+          },
+               ],
+
+            radio: null,
+        }
+    },
+
+    methods: {
+        open(item,currentIndex) {
+            this.currentIndex = currentIndex
+            if (item&&item.id) {
+                this.radio = item.id
+            }
+           
+            this.visible = true
+        },
+
+
+        /* 表格数据源 */
+        datasource({ page, limit, where, order }) {
+            return getTableList({
+                pageNum: page,
+                size: limit,
+                ...where
+            });
+        },
+
+        /* 刷新表格 */
+        reload(where) {
+            this.$refs.table.reload({ pageNum: 1, where: where  });
+        },
+
+        handleNodeClick(data, node) {
+            this.reload({ categoryId: data.id });
+        },
+
+
+        // 单击获取id
+        cellClick(row) {
+            this.current = row
+            console.log(row)
+            this.radio = row.id
+        },
+        handleClose() {
+            this.visible = false
+            this.current = null
+            this.radio = ''
+        },
+
+        selected() {
+            if (!this.current) {
+                return this.$message.warning('请至少选择一条数据')
+            }
+            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>
+  

+ 213 - 0
src/views/saleManage/saleOrder/accountstatement/components/product-list.vue

@@ -0,0 +1,213 @@
+<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 { getSaleOrderDetail, UpdateInformation, addInformation,deleteInformation,updateStatus} from '@/api/saleManage/saleorder';
+export default {
+   props:{
+    orderId: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: {
+        orderId(id){
+            this.getSaleOrderDetail(id)
+        }
+    },
+    methods: {
+        open(data) {
+            this.currentData = data||[]           
+            this.visible = true
+        },
+ //获取订单详情
+ async getSaleOrderDetail(id){
+        this.loading = true;
+        const data = await getSaleOrderDetail(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>
+  

+ 123 - 0
src/views/saleManage/saleOrder/accountstatement/components/searchTable.vue

@@ -0,0 +1,123 @@
+<!-- 搜索表单 -->
+<template>
+  <el-form
+    label-width="100px"
+    class="ele-form-search"
+    @keyup.enter.native="search"
+    @submit.native.prevent
+  >
+    <el-row :gutter="15">
+      <el-col v-bind="styleResponsive ? { lg: 6, md: 12 } : { span: 6 }">
+        <el-form-item label="对账单编码:" prop="statementNo">
+          <el-input
+            clearable
+            placeholder="请输入"
+            v-model.trim="params.statementNo"
+          ></el-input>
+        </el-form-item>
+        <el-form-item label="创建时间:" prop="createTimeStart">
+          <el-date-picker
+      v-model="createTime"
+      @change="changeDate"
+      type="daterange"
+      style="width:292px"
+      value-format="yyyy-MM-dd"
+      start-placeholder="开始时间"
+      end-placeholder="结束时间"
+      :default-time="['00:00:00', '23:59:59']">
+    </el-date-picker>
+        </el-form-item>
+      </el-col>
+       <el-col v-bind="styleResponsive ? { lg:6, md: 12 } : { span:6 }">
+        <el-form-item label="项目名称:" prop="projectName">
+          <el-input
+          placeholder="请输入"
+          style="max-width:320px"
+           v-model.trim="params.projectName" controls-position="right" >
+          </el-input>
+         
+        </el-form-item>
+      </el-col>  
+      <el-col v-bind="styleResponsive ? { lg:6, md: 12 } : { span:6 }">
+       
+        <el-form-item label="客户名称:" prop="contactName">
+          <el-input
+          placeholder="请输入"
+          style="max-width:320px"
+           v-model.trim="params.contactName" controls-position="right" >
+          </el-input>
+         
+        </el-form-item>
+       
+      </el-col> 
+      <el-col v-bind="styleResponsive ? { lg:6, md: 12 } : { span:4 }">
+      
+        <div class="ele-form-actions">
+          <el-button
+            type="primary"
+            icon="el-icon-search"
+            class="ele-btn-icon"
+            @click="search"
+          >
+            查询
+          </el-button>
+          <el-button @click="reset">重置</el-button>
+        </div>
+      </el-col>
+    </el-row>
+  </el-form>
+</template>
+<script>
+import {reviewStatusEnum} from '@/enum/dict';
+const repliedOptions=[
+  {value:0,label:'否'},
+  {value:1,label:'是'},
+]
+  export default {
+    data () {
+      // 默认表单数据
+      const defaultParams = {
+        contactName: '',
+        statementNo:'',
+        projectId:'',
+        projectName:'',
+        createTimeEnd:'',
+        createTimeStart:''
+      };
+      return {
+        reviewStatusEnum,
+        defaultParams,
+        repliedOptions,
+        createTime:[],
+        // 表单数据
+        params: { ...defaultParams }
+      };
+    },
+    computed: {
+      // 是否开启响应式布局
+      styleResponsive () {
+        return this.$store.state.theme.styleResponsive;
+      }
+    },
+    methods: {
+      //选择时间
+      changeDate(e){
+       this.createTime=e
+      },
+      /* 搜索 */
+      search () {
+        let [createTimeStart,createTimeEnd]=this.createTime
+        this.params=Object.assign({},this.params,{createTimeStart,createTimeEnd})
+        this.$emit('search', {
+          ...this.params
+        });
+      },
+      /*  重置 */
+      reset () {
+        this.createTime=[]
+        this.params = Object.assign({},{ ...this.defaultParams });
+        this.search();
+      }
+    }
+  };
+</script>

+ 338 - 0
src/views/saleManage/saleOrder/accountstatement/index.vue

@@ -0,0 +1,338 @@
+<template>
+    <div class="ele-body">
+      <el-card shadow="never" v-loading="loading">
+           <div class="ele-border-lighter form-content" v-loading="loading">
+              <search-table @search="reload"> </search-table>
+  
+              <!-- 数据表格 -->
+              <ele-pro-table
+                ref="table"
+                :columns="columns"
+                :datasource="datasource"
+                height="calc(100vh - 385px)"
+                full-height="calc(100vh - 116px)"
+                tool-class="ele-toolbar-form"
+                :selection.sync="selection"
+                cache-key="eomContactPageTable"
+              >
+                <!-- 表头工具栏 -->
+                <template v-slot:toolbar>
+                  <el-button
+                    size="small"
+                    type="primary"
+                    icon="el-icon-plus"
+                    class="ele-btn-icon"
+                    @click="openEdit('add',{})"
+                  >
+                    新建
+                  </el-button>
+                
+                  <el-button
+                    size="small"
+                    type="danger"
+                    el-icon-delete
+                    class="ele-btn-icon"
+                    @click="allDelBtn"
+                    :disabled="selection?.length===0"
+                  >
+                    批量删除
+                  </el-button>
+                </template>
+  
+                <!-- 查看详情列 -->
+             
+                <template v-slot:statementNo="{ row }">
+                  <el-link type="primary" :underline="false" @click="openorderDetail(row,'statementNo')"> {{ row.statementNo }}</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 }">
+                  
+                  <el-link
+                    type="primary"
+                    :underline="false"
+                    icon="el-icon-edit"
+                    @click="openEdit('edit',row)"
+                  >
+                    修改
+                  </el-link>
+                  <el-popconfirm
+                    class="ele-action"
+                    title="确定要删除此信息吗?"
+                    @confirm="remove([row.id])"
+                  >
+                    <template v-slot:reference>
+                      <el-link
+                        type="danger"
+                        :underline="false"
+                        icon="el-icon-delete"
+                      >
+                        删除
+                      </el-link>
+                    </template>
+                  </el-popconfirm>
+               
+                </template>
+              </ele-pro-table>
+            </div>
+      </el-card>
+  
+      <order-detail-dialog  ref="orderDetailDialogRef"></order-detail-dialog>
+      <add-account-dialog ref="accountDialogRef"  @done="reload"></add-account-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>
+  </template>
+  
+  <script>
+  import searchTable from './components/searchTable.vue';
+  import addAccountDialog from './components/addAccountDialog.vue';
+  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 {getAccountstatementList, gettAccountstatementDetail, UpdatetAccountstatement, addtAccountstatement,deletetAccountstatement} from '@/api/saleManage/accountstatement';
+  import dictMixins from '@/mixins/dictMixins';
+  
+  
+  export default {
+      mixins: [dictMixins],
+      components: {
+        searchTable,
+        popModal,
+        addReturnGoodsDialog,
+        orderDetailDialog,
+        addAccountDialog,
+        detailDialog,
+      },
+      data() {
+        return {
+          activeComp: 'saleorder',
+          tabOptions: [
+            { key: 'saleorder', name: '销售订单' },
+            { key: 'invoice', name: '发货单' },
+            { key: 'returnorder', name: '退货单' }
+          ],
+          selection:[],   //单选中集合
+          delVisible:false,  //批量删除弹框状态
+          loading: false,  // 加载状态
+          columns: [
+            {
+               width: 45,
+               type: 'selection',
+               columnKey: 'selection',
+               align: 'center'
+            },
+            {
+              columnKey: 'index',
+              label: '序号',
+              type: 'index',
+              width: 55,
+              align: 'center',
+              showOverflowTooltip: true,
+              fixed: 'left'
+            },
+            {
+              prop: 'statementNo',
+              label: '对账单编码',
+              align: 'center',
+              slot: 'statementNo',
+              showOverflowTooltip: true,
+              minWidth: 200
+            },
+            {
+              prop: 'orderNo',
+              label: '销售订单编码',
+              align: 'center',
+              slot: 'orderNo',
+              showOverflowTooltip: true,
+              minWidth: 200
+            },
+            {
+              prop: 'contactName',
+              label: '客户名称',
+              align: 'center',
+              showOverflowTooltip: true,
+              minWidth: 180,
+            },
+            {
+              prop: 'projectName',
+              label: '项目名称',
+              align: 'center',
+              showOverflowTooltip: true,
+              minWidth: 200,
+            },
+            {
+              prop: 'accountPeriod',
+              label: '账期',
+              align: 'center',
+              slot: 'accountPeriod',
+              showOverflowTooltip: true,
+              minWidth: 200
+            },
+            {
+              prop: 'orderNum',
+              label: '订单量',
+              align: 'center',
+              showOverflowTooltip: true,
+              minWidth: 200,
+            },
+            {
+              prop: 'productNum',
+              label: '产品总数量',
+              align: 'center',
+              showOverflowTooltip: true,
+              minWidth: 200,
+            },
+            {
+              prop: 'totalPrice',
+              label: '产品总金额',
+              align: 'center',
+              showOverflowTooltip: true,
+              minWidth: 200,
+            },
+            {
+              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
+            },
+           
+            {
+              columnKey: 'action',
+              label: '操作',
+              width: 230,
+              align: 'center',
+              resizable: false,
+              slot: 'action',
+              showOverflowTooltip: true,
+              fixed: 'right',
+            }
+          ]
+        };
+      },
+      computed: {},
+   
+      methods: {
+      
+      
+        /* 表格数据源 */
+        datasource({ page, limit, where, order }) {
+          return getAccountstatementList({
+            pageNum: page,
+            size: limit,
+            ...where
+          });
+        },
+      
+     
+    
+        /* 刷新表格 */
+        reload(where) {
+          this.$refs.table.reload({ page: 1, where });
+        },
+        
+        //新增编辑
+        openEdit(type,row) {
+          this.$refs.accountDialogRef.open( type,row);
+          this.$refs.accountDialogRef.$refs.form &&
+          this.$refs.accountDialogRef.$refs.form.clearValidate();
+        },
+       
+        //批量删除
+        allDelBtn(){
+          if(this.selection.length===0) return
+          this.delVisible=true
+        },
+        
+        //删除接口
+        remove(delData) {
+          deletetAccountstatement(delData).then((res) => {
+            this.$message.success('删除成功!');
+            this.reload();
+          });
+        },
+  
+      //删除弹框确定
+        commitBtn(){
+          const dataId=this.selection.map(v=>v.id)
+          this.remove(dataId)
+        },
+  
+      //查看详情
+      openorderDetail(row,type){
+        
+          if(type==='statementNo'){
+            this.$refs.DetailDialogRef.open(row);
+      }
+      if(type==='orderNo'){
+        this.$refs.orderDetailDialogRef.open({id:row.orderId});
+      }
+        },
+  
+      }
+    };
+  </script>
+  
+  <style lang="scss" scoped>
+  .ele-body{
+    padding-top:0;
+    padding-bottom: 0;
+  }
+ :deep .el-card__body{
+  padding: 0;
+}
+  :deep(.el-link--inner){
+    margin-left: 0px !important;
+  }
+  
+  .sys-organization-list {
+    height: calc(100vh - 264px);
+    box-sizing: border-box;
+    border-width: 1px;
+    border-style: solid;
+    overflow: auto;
+  }
+  .sys-organization-list :deep(.el-tree-node__content) {
+    height: 40px;
+    & > .el-tree-node__expand-icon {
+      margin-left: 10px;
+    }
+  }
+  
+  .switch_left ul .active{
+    border-top: 4px solid var(--color-primary);
+      color: var(--color-primary-5);
+  }
+  .switch{
+    padding-bottom: 20px;
+  }
+  
+  .el-dropdown-link {
+      cursor: pointer;
+      color: var(--color-primary-5);
+    }
+    .el-icon-arrow-down {
+      font-size: 12px;
+    }
+  </style>
+  

+ 46 - 4
src/views/saleManage/saleOrder/components/detailDialog.vue

@@ -9,10 +9,25 @@
       width="80%"
       @close="cancel"
     >
- 
+    <div class="switch">
+        <div class="switch_left">
+          <ul>
+            <li
+              v-for="item in tabOptions"
+              :key="item.key"
+              :class="{ active: activeComp == item.key }"
+              @click="activeComp = item.key"
+            >
+              {{ item.name }}
+            </li>
+          </ul>
+        </div>
+      </div>
+      <div v-if="activeComp=='order'">
         <el-form ref="form" :model="form" :rules="rules" label-width="120px">
-         
-     <headerTitle title="订单信息"></headerTitle>
+     <headerTitle title="订单信息">
+    
+     </headerTitle>
      <el-row>
           <el-col :span="12">
             
@@ -251,7 +266,10 @@
                         </template>
                      
           </ele-pro-table>
-       
+        </div>
+      <div v-if="activeComp=='invoice'">
+      <invoiceList :orderId="detailId"></invoiceList>
+      </div>
       <div slot="footer" class="footer">
         <el-button @click="cancel">返回</el-button>
       </div>
@@ -260,6 +278,7 @@
   
   <script>
   import { getSaleOrderDetail} from '@/api/saleManage/saleorder';
+  import invoiceList from '@/views/saleManage/saleOrder/orderAssociation/invoiceList.vue'
   import {getFile} from '@/api/system/file';
   import dictMixins from '@/mixins/dictMixins';
   import {download } from '@/utils/file';
@@ -268,9 +287,19 @@
   
   export default {
       mixins: [dictMixins],
+      components:{
+        invoiceList
+      },
       data() {
       
         return {
+          activeComp:'order',
+          tabOptions: [
+          { key: 'order', name: '订单详情' },
+          { key: 'invoice', name: '发货列表' },
+          { key: 'returnorder', name: '退货列表' },
+          { key: 'accountstatement', name: '对账列表' }
+        ],
           visible: false,
           detailId:'',
           title: '详情',
@@ -506,5 +535,18 @@
     margin-right: 20px;
   }
 }
+
+.switch_left ul .active{
+   border-top: 4px solid var(--color-primary);
+     color: var(--color-primary-5);
+ }
+
+ .switch{
+  padding-bottom: 20px;
+}
+
+ :deep .divider .content{
+  justify-content: flex-start;
+ }
   </style>
   

+ 8 - 4
src/views/saleManage/saleOrder/index.vue

@@ -109,6 +109,9 @@
         <div v-if="activeComp == 'returnorder'" class="returnorder">
         <return-goods></return-goods>
         </div>
+        <div v-if="activeComp == 'accountstatement'">
+        <accountstatement></accountstatement>
+        </div>
          
       </div>
     </el-card>
@@ -133,10 +136,9 @@ import contractrDetail from "@/views/contractManage/contractBook/components/deta
 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 accountstatement from './accountstatement/index.vue'
 import returnGoods from './returnGoods/index.vue'
-import {getTableList, getDetail, UpdateInformation, addInformation,deleteInformation} from '@/api/saleManage/saleorder';
+import {getTableList,deleteInformation} from '@/api/saleManage/saleorder';
 import dictMixins from '@/mixins/dictMixins';
 
 
@@ -145,6 +147,7 @@ export default {
     components: {
       searchTable,
       returnGoods,
+      accountstatement,
       popModal,
       contractrDetail,
       addReturnGoodsDialog,
@@ -159,7 +162,8 @@ export default {
         tabOptions: [
           { key: 'saleorder', name: '销售订单' },
           { key: 'invoice', name: '发货单' },
-          { key: 'returnorder', name: '退货单' }
+          { key: 'returnorder', name: '退货单' },
+          { key: 'accountstatement', name: '对账单' }
         ],
         selection:[],   //单选中集合
         delVisible:false,  //批量删除弹框状态

+ 0 - 0
src/views/saleManage/saleOrder/orderAssociation/accountstatementList.vue


+ 384 - 0
src/views/saleManage/saleOrder/orderAssociation/components/detailDialog.vue

@@ -0,0 +1,384 @@
+<template>
+    <ele-modal
+    custom-class="ele-dialog-form long-dialog-form"
+      :centered="true"
+      v-if="visible"
+      :visible.sync="visible"
+      :title="title"
+      :close-on-click-modal="false"
+      :append-to-body="true"
+      width="80%"
+      @close="cancel"
+    >
+ 
+        <el-form ref="form" :model="form" :rules="rules" label-width="120px">
+    
+     <headerTitle title="发货信息"></headerTitle>
+       <el-row>
+        <el-col :span="12">
+            <el-form-item
+              label="客户名称:"
+              prop="contactName"
+              style="margin-bottom: 16px"
+            >
+            {{form.contactName}}
+            </el-form-item>
+            <el-form-item
+              label="客户联系人:"
+              prop="linkName"
+              style="margin-bottom: 16px"
+            >
+            {{form.linkName}}
+            </el-form-item>
+            <el-form-item
+              label="客户电话:"
+              prop="linkPhone"
+              style="margin-bottom: 16px"
+            >
+            {{form.linkPhone}}
+            </el-form-item>
+       
+            <el-form-item
+              label="客户地址:"
+              prop="partaAddress"
+              style="margin-bottom: 16px"
+            >
+            {{form.receiveAddress}}
+            </el-form-item>
+            <el-form-item
+              label="发货附件:"
+              prop="sendFiles"
+              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>
+            </el-form-item>
+          </el-col>
+
+
+
+
+          <el-col :span="12">
+            <el-form-item
+              label="车牌号:"
+              prop="carNo"
+              style="margin-bottom: 16px"
+            >
+            {{form.carNo}}
+            </el-form-item>
+            <el-form-item
+              label="发货单据编码:"
+              prop="docNo"
+              style="margin-bottom: 16px"
+            >
+            {{form.docNo}}
+            </el-form-item>
+            <el-form-item
+              label="制单人:"
+              prop="makerName"
+              style="margin-bottom: 16px"
+            >
+            {{form.makerName}}
+            </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"
+              style="margin-bottom: 16px"
+            >
+            {{reviewStatusEnum[form.reviewStatus].label}}
+            </el-form-item>
+
+           
+          </el-col>
+       </el-row>
+
+   </el-form>
+
+
+       
+        <headerTitle title="产品清单"></headerTitle>
+        <ele-pro-table ref="table" :needPage="false" :columns="competAnalysisListcolumns"  :toolkit="[]" :datasource="detailData.productList" row-key="id">
+          <!-- <template v-slot:toolbar>
+        <div class="headbox">
+        <span class="amount">总计:{{detailData.totalAmount}}元</span>
+        <span class="amount">应付金额:{{detailData.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>
+                     
+          </ele-pro-table>
+       
+      <div slot="footer" class="footer">
+        <el-button @click="cancel">返回</el-button>
+      </div>
+    </ele-modal>
+  </template>
+  
+  <script>
+  import {getFile} from '@/api/system/file';
+  import dictMixins from '@/mixins/dictMixins';
+  import {download } from '@/utils/file';
+  import {reviewStatusEnum} from '@/enum/dict';
+  import {copyObj} from '@/utils/util';
+  import { getSendSaleOrderrecordDetail} from '@/api/saleManage/saleordersendrecord';
+  
+  export default {
+      mixins: [dictMixins],
+      data() {
+      
+        return {
+          reviewStatusEnum,
+          visible: false,
+          detailId:'',
+          title: '详情',
+          row: {},
+          activeName: 'base',
+          form:{
+            orderFiles:[{name:'222'}]
+          },
+          rules:{},
+          detailData:{},
+          receiptPaymentListcolumns:[
+          {
+          width: 45,
+          type: 'index',
+          columnKey: 'index',
+          align: 'center',
+          fixed: 'left'
+        },
+        {
+          width: 200,
+          prop: 'moneyName',
+          label: '款项名称',
+          slot: 'moneyName'
+        },
+        {
+          width: 100,
+          prop: 'price',
+          label: '金额',
+          slot: 'price',
+          formatter: (_row, _column, cellValue) => {
+              return _row.price+'元'
+            }
+        },
+        {
+          width: 100,
+          prop: 'ratio',
+          label: '比例',
+          slot: 'ratio',
+          formatter: (_row, _column, cellValue) => {
+              return _row.ratio+'%'
+            }
+        },
+        {
+          width: 160,
+          prop: 'deadLine',
+          label: '截止日期',
+          slot: 'deadLine'
+        },
+        {
+          prop: 'remark',
+          label: '	说明',
+          slot: 'remark'
+        }
+          ],
+          competAnalysisListcolumns: [
+        
+          {
+          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: 'totalCount',
+          label: '数量',
+          slot: 'totalCount'
+        },
+        {
+          width: 120,
+          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+'元'
+            }
+        },
+       
+        {
+          width: 120,
+          prop: 'deliveryDays',
+          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',
+          label: '技术答疑人',
+          slot: 'technicalAnswerName'
+        },
+        {
+          width: 220,
+          prop: 'technicalParams',
+          label: '技术参数',
+          slot: 'technicalParams'
+        },
+        {
+          width:240,
+          prop: 'technicalDrawings',
+          label: '技术图纸',
+          slot: 'technicalDrawings',
+          formatter: (_row, _column, cellValue) => {
+              return _row.guaranteePeriod+_row.guaranteePeriodUnitName
+            }
+
+        },
+        {
+          width: 220,
+          prop: 'remark',
+          label: '备注',
+          slot: 'remark'
+        }
+           ],
+        };
+      },
+      methods: {
+     
+        async open(row) {
+          this.form = row;
+          this.visible = true;
+          this.getDetailData(row.id)
+          this.detailId=row.id
+        },
+  
+        cancel() {
+          this.$nextTick(() => {
+            // 关闭后,销毁所有的表单数据
+            this.form = copyObj(this.formDef),
+            this.otherForm = copyObj(this.otherFormDef),
+            this.tableBankData = []
+            this.tableLinkData = []
+            this.visible = false;
+          })
+        },
+        downloadFile(file){
+        getFile({ objectName: file.storePath }, file.name);
+      },
+        async getDetailData (id) {
+          this.loading = true;
+          const data = await getSendSaleOrderrecordDetail(id);
+          this.loading = false;
+          if (data) {
+            this.form = data;
+            this.detailData = data;
+            
+          }
+        },
+  
+      }
+    };
+  </script>
+  
+  <style scoped lang="scss">
+  .ele-dialog-form{
+    .el-form-item{
+      margin-bottom: 10px;
+    }
+  }
+
+  .headbox{
+  display: flex;
+  justify-content: flex-start;
+  align-items: center;
+  .amount{
+    font-size: 14px;
+    font-weight: bold;
+    margin-right: 20px;
+  }
+}
+  </style>
+  

+ 218 - 0
src/views/saleManage/saleOrder/orderAssociation/invoiceList.vue

@@ -0,0 +1,218 @@
+<template>
+    <div class="ele-body">
+      <el-card shadow="never" v-loading="loading">
+           <div class="ele-border-lighter form-content" v-loading="loading">
+              <!-- 数据表格 -->
+              <ele-pro-table
+                ref="table"
+                :columns="columns"
+                :datasource="datasource"
+                height="calc(100vh - 385px)"
+                full-height="calc(100vh - 116px)"
+                tool-class="ele-toolbar-form"
+                :selection.sync="selection"
+                cache-key="eomContactPageTable"
+              >
+                <!-- 查看详情列 -->
+             
+                <template v-slot:docNo="{ row }">
+                  <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>
+              
+              </ele-pro-table>
+            </div>
+      </el-card>
+  
+      <orderDetailDialog  ref="orderDetailDialogRef"></orderDetailDialog>
+      <detail-dialog ref="DetailDialogRef"></detail-dialog>
+      <addReturnGoodsDialog ref="addReturnGoodsRef"  @done="reload"></addReturnGoodsDialog>
+    </div>
+  </template>
+  
+  <script>
+  import detailDialog from './components/detailDialog.vue';
+  import {reviewStatusEnum} from '@/enum/dict';
+  import orderDetailDialog from '@/views/saleManage/saleOrder/components/detailDialog.vue'
+  import addReturnGoodsDialog from '@/views/saleManage/saleOrder/returnGoods/components/addReturnGoodsDialog';
+  import {getSendTableList} from '@/api/saleManage/saleordersendrecord';
+  import dictMixins from '@/mixins/dictMixins';
+  
+  
+  export default {
+      mixins: [dictMixins],
+      props:{
+        orderId:String
+      },
+      components: {
+        addReturnGoodsDialog,
+        orderDetailDialog,
+        detailDialog,
+      },
+      data() {
+        return {
+          activeComp: 'saleorder',
+          tabOptions: [
+            { key: 'saleorder', name: '销售订单' },
+            { key: 'invoice', name: '发货单' },
+            { key: 'returnorder', name: '退货单' }
+          ],
+          selection:[],   //单选中集合
+          delVisible:false,  //批量删除弹框状态
+          loading: false,  // 加载状态
+          columns: [
+            {
+               width: 45,
+               type: 'selection',
+               columnKey: 'selection',
+               align: 'center'
+            },
+            {
+              columnKey: 'index',
+              label: '序号',
+              type: 'index',
+              width: 55,
+              align: 'center',
+              showOverflowTooltip: true,
+              fixed: 'left'
+            },
+            {
+              prop: 'docNo',
+              label: '发货编码',
+              align: 'center',
+              slot: 'docNo',
+              showOverflowTooltip: true,
+              minWidth: 200
+            },
+            {
+              prop: 'orderNo',
+              label: '销售订单编码',
+              align: 'center',
+              slot: 'orderNo',
+              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
+            }
+          ]
+        };
+      },
+      computed: {},
+   
+      methods: {
+      
+      
+        /* 表格数据源 */
+        datasource({ page, limit, where, order }) {
+          return getSendTableList({
+            pageNum: page,
+            size: limit,
+            orderId:this.orderId,
+            ...where
+          });
+        },
+      
+        
+    
+        /* 刷新表格 */
+        reload(where) {
+          this.$refs.table.reload({ page: 1, where });
+        },
+        
+      
+    
+     
+  
+  
+      //查看详情
+      openorderDetail(row,type){
+        
+          if(type==='docNo'){
+            this.$refs.DetailDialogRef.open(row);
+      }
+      if(type==='orderNo'){
+        this.$refs.orderDetailDialogRef.open({id:row.orderId});
+      }
+        },
+  
+      }
+    };
+  </script>
+  
+  <style lang="scss" scoped>
+  .ele-body{
+    padding-top:0;
+    padding-bottom: 0;
+  }
+ :deep .el-card__body{
+  padding: 0;
+}
+  :deep(.el-link--inner){
+    margin-left: 0px !important;
+  }
+  
+  .sys-organization-list {
+    height: calc(100vh - 264px);
+    box-sizing: border-box;
+    border-width: 1px;
+    border-style: solid;
+    overflow: auto;
+  }
+  .sys-organization-list :deep(.el-tree-node__content) {
+    height: 40px;
+    & > .el-tree-node__expand-icon {
+      margin-left: 10px;
+    }
+  }
+  
+  .switch_left ul .active{
+    border-top: 4px solid var(--color-primary);
+      color: var(--color-primary-5);
+  }
+  .switch{
+    padding-bottom: 20px;
+  }
+  
+  .el-dropdown-link {
+      cursor: pointer;
+      color: var(--color-primary-5);
+    }
+    .el-icon-arrow-down {
+      font-size: 12px;
+    }
+  </style>
+  

+ 0 - 0
src/views/saleManage/saleOrder/orderAssociation/returnGoodsList.vue