Browse Source

Merge branch 'orangeUrgent' into testToMerge

qymljy 2 months ago
parent
commit
a383a8ffa5

+ 7 - 3
src/HDrpManagement/contractManage/components/addContract.vue

@@ -977,7 +977,7 @@
             <el-col :span="24">
               <el-form-item
                   :label="$t(`合同`) + ':'"
-                prop="ascription_title"
+                prop="ascription_title_new"
                 :rules="{ required: true, message: $t('请选择合同'), trigger: 'change' }"
               >
                 <el-popover placement="left" trigger="focus" v-model="contractVisible" width="700">
@@ -992,7 +992,7 @@
                     slot="reference"
                     size="small"
                     @focus="showChange('contractVisible')"
-                    v-model="form.ascription_title"
+                    v-model="form.ascription_title_new"
                     :placeholder="$t(`请选择合同`)"
                   ></el-input>
                 </el-popover>
@@ -1262,6 +1262,7 @@ export default {
         productdiscount: "",
         orderratio: "",
         ascription_title: "",
+        ascription_title_new:"",
         ascription_contractid: "",
         receiptName: "",
         rec_contactsid: "", //收货联系人
@@ -1278,7 +1279,7 @@ export default {
         sys_enterpriseid: [
           { required: true, message: this.$t("请选择客户"), trigger: "change" },
         ],
-        ascription_title: [
+        ascription_title_new: [
           {
             required: true,
             message: this.$t("请选择项目合同"),
@@ -1475,6 +1476,7 @@ export default {
       productdiscount: "",
       orderratio: "",
       ascription_title: "",
+      ascription_title_new:'',
       ascription_contractid: "",
       receiptName: "",
       rec_contactsid: "", //收货联系人
@@ -1621,6 +1623,7 @@ export default {
         productdiscount: "",
         orderratio: "",
         ascription_title: "",
+        ascription_title_new:"",
         ascription_contractid: "",
         receiptName: "",
         rec_contactsid: "", //收货联系人
@@ -1764,6 +1767,7 @@ export default {
     concratChange(data) {
       this.centerEnterpriseList = data.parties;
       this.form.ascription_title = data.title;
+      this.form.ascription_title_new = data.title ? data.billno + '-' +  data.title : data.billno
       this.form.ascription_contractid = data.sa_contractid;
       this.form.projectname = data.projectname;
       this.form.projectnum = data.projectnum;

+ 6 - 4
src/HDrpManagement/contractManage/components/editContract.vue

@@ -475,14 +475,14 @@
               </el-form-item>
             </el-col>
             <el-col :span="24">
-              <el-form-item :label="$t(`合同`)+':'" prop="ascription_title" :rules="{ required: true, message: this.$t('请选择合同'), trigger: 'change' }">
+              <el-form-item :label="$t(`合同`)+':'" prop="ascription_title_new" :rules="{ required: true, message: this.$t('请选择合同'), trigger: 'change' }">
                 <el-popover
                   placement="left"
                   trigger="focus"
                   v-model="contractVisible"
                   width="700">
                   <selectContract ref="contractRef" @onSelect="concratChange" @onCanel="contractVisible=false"></selectContract>
-                  <el-input readonly type="text" slot="reference" size="small" @focus="showChange('contractVisible')" v-model="form.ascription_title"></el-input>
+                  <el-input readonly type="text" slot="reference" size="small" @focus="showChange('contractVisible')" v-model="form.ascription_title_new"></el-input>
                 </el-popover>
               </el-form-item>
             </el-col>
@@ -655,6 +655,7 @@ export default {
         "productdiscount":'',
         "orderratio":'',
         "ascription_title":'',
+        "ascription_title_new":'',
         'ascription_contractid':'',
         'name':'',
         "rec_contactsid":'',//收货联系人
@@ -671,7 +672,7 @@ export default {
         sys_enterpriseid: [
           { required: true, message: this.$t('请选择合作伙伴'), trigger: 'blur' },
         ],
-        ascription_title: [
+        ascription_title_new: [
           { required: true, message: this.$t('请选择项目合同'), trigger: 'change' },
         ],
         begdate: [
@@ -801,8 +802,8 @@ export default {
       if (this.$route.query.type == '居间'){
         this.form.enterprisename = this.data.ascription_enterprisename
         this.form.customername = this.data.enterprisename
+        this.form.ascription_title_new = this.data.ascription_title ? this.data.billno + '-' +  this.data.ascription_title : this.data.billno
       }
-
       this.drawer = true
       if (!this.form.reminddays){
         let siteid = JSON.parse(sessionStorage.getItem('active_account')).siteid
@@ -1045,6 +1046,7 @@ export default {
     },
     concratChange (data) {
       this.form.ascription_title = data.title
+      this.form.ascription_title_new = data.title ? data.billno + '-' +  data.title : data.billno
       this.form.ascription_contractid = data.sa_contractid
       this.form.projectname = data.projectname
       this.form.projectnum = data.projectnum

+ 4 - 1
src/HDrpManagement/contractManage/components/priceDifference/addPriceDiff.vue

@@ -35,7 +35,7 @@
             </el-col>
             <el-col :span="24">
               <el-form-item :label="$t(`合同`)+':'" prop="ascription_contractid" :rules="{ required: true, message: $t('请输入合同'), trigger: 'change' }">
-                <el-input v-model="ascription.ascription_title" :placeholder="$t(`合同`)" disabled></el-input>
+                <el-input v-model="ascription.ascription_title_new" :placeholder="$t(`合同`)" disabled></el-input>
               </el-form-item>
             </el-col>
             <el-col :span="24">
@@ -156,6 +156,7 @@ export default {
       ascription:{
         "enterprisename":"",
         "ascription_title":"",
+        "ascription_title_new":"",
         "projectname":"",
         "projectnum":"",
         "customername":"",
@@ -216,6 +217,7 @@ export default {
       this.form.signdate = this.data.signdate
       this.ascription = {
         "ascription_title":this.data.title,
+        "ascription_title_new":this.data.title ? this.data.billno + '-' +  this.data.title : this.data.billno,
         "projectname":this.data.projectname,
         "projectnum":this.data.projectnum,
         "customername":this.data.enterprisename,
@@ -238,6 +240,7 @@ export default {
       this.form.remarks = data.remarks
       this.ascription = {
         "ascription_title":this.data.title,
+        "ascription_title_new":this.data.title ? this.data.billno + '-' +  this.data.title : this.data.billno,
         "enterprisename":data.sys_enterpriseid == -1  ? '':data.enterprisename,
         "projectname":this.data.projectname,
         "projectnum":this.data.projectnum,

+ 6 - 4
src/HDrpManagement/projectChange/modules/modules/contract/components/add.vue

@@ -240,14 +240,14 @@
               </el-form-item>
             </el-col>
             <el-col :span="24">
-              <el-form-item :label="$t(`合同`)+':'" prop="ascription_title">
+              <el-form-item :label="$t(`合同`)+':'" prop="ascription_title_new">
                 <el-popover
                     placement="bottom"
                     trigger="manual"
                     v-model="concratVisible"
                     width="600">
                   <seleteProjectContract type="3" ref="project" @onSelect="concratChange" @onCanel="concratVisible=false" ></seleteProjectContract>
-                  <el-input readonly type="text" slot="reference" size="small" @focus="showChange('concratVisible')" v-model="form.ascription_title"></el-input>
+                  <el-input readonly type="text" slot="reference" size="small" @focus="showChange('concratVisible')" v-model="form.ascription_title_new"></el-input>
                 </el-popover>
               </el-form-item>
             </el-col>
@@ -394,6 +394,7 @@ export default {
         "productdiscount":'',
         "orderratio":'',
         "ascription_title":'',
+        "ascription_title_new":'',
         'ascription_contractid':'',
         'receiptName':'',
         "rec_contactsid":'',//收货联系人
@@ -409,7 +410,7 @@ export default {
         sys_enterpriseid: [
           { required: true, message: this.$t('请选择客户'), trigger: 'change' },
         ],
-        ascription_title: [
+        ascription_title_new: [
           { required: true, message: this.$t('请选择项目合同'), trigger: 'change' },
         ],
         begdate: [
@@ -652,7 +653,8 @@ export default {
     },
     concratChange (data) {
       this.centerEnterpriseList = data.parties
-      this.form.ascription_title = data.projectname
+      this.form.ascription_title = data.title
+      this.form.ascription_title_new = data.title ? data.billno + '-' +  data.title : data.billno
       this.form.ascription_contractid = data.sa_contractid
       this.form.projectname = data.projectname
       this.form.projectnum = data.projectnum

+ 6 - 6
src/HDrpManagement/projectChange/modules/modules/contract/components/seleteProjectContract.vue

@@ -16,15 +16,15 @@
             width="180">
           </el-table-column>
           <el-table-column
-            prop="projectname"
-            :label="$t('合同名称')"
-            width="180">
+              prop="title"
+              :label="$t(`合同标题`)">
           </el-table-column>
           <el-table-column
-            prop="title"
-            :label="$t(`标题`)">
+            prop="projectname"
+            :label="$t('项目名称')"
+            width="180">
           </el-table-column>
-          <el-table-column>
+          <el-table-column :label="$t(`操作`)">
             <template slot-scope="scope">
               <el-button size="mini" type="text" @click="rowClick(scope.row)">{{$t('选 择')}}</el-button>
             </template>

+ 2 - 2
src/components/attachment_list/index.vue

@@ -64,7 +64,7 @@
             >{{$t(`编 辑`)}}</el-button>
             <el-popconfirm :title="$t(`确定删除当前附件吗`)+'?'" :confirm-button-text="$t('确定')" :cancel-button-text="$t('取消')" @confirm="deleteAttachment(scope.row)">
               <el-button
-                :disabled="onlyread || status === '已失败' || status === '已结案' || scope.row.usetype === 'undelete' || attachmentDisabled || disabled || ($route.path == '/serveBillDetail' && status != '新建') || ($route.path == '/serveBillMagDetail' && status != '新建')"
+                :disabled="onlyread || status === '已失败' || status === '已结案' || scope.row.usetype === 'undelete' || attachmentDisabled || disabled || ($route.path == '/serveBillDetail' && status != '新建') || ($route.path == '/serveBillMagDetail' && status != '新建') || issalehr"
                 v-if="!onlyread && status !== '已失败' && status !== '已结案' && scope.row.usetype !== 'undelete' && !attachmentDisabled"
                 slot="reference"
                 size="small"
@@ -82,7 +82,7 @@
 <script>
 import SeeFile from "@/components/file-block/components/SeeFile1";
 export default {
-  props: ["attinfos", "onlyread", "status","attachmentDisabled","disabled","minWidth"],
+  props: ["attinfos", "onlyread", "status","attachmentDisabled","disabled","minWidth","issalehr"],
   data() {
     return {
       actid: null,

+ 58 - 0
src/components/export_file/index7.vue

@@ -0,0 +1,58 @@
+<template>
+  <div>
+    <el-button type="primary" size="small" @click="exportData" plain>{{$t(btnTitle)}}</el-button>
+  </div>
+</template>
+
+<script>
+export default {
+  props: ["btnTitle","param", "type", "columns", "columnsIndex", "fileName", "dataid","oldParam"],
+  data() {
+    return {
+      columnsData: [],
+    };
+  },
+  methods: {
+    async exportData() {
+      let rs = [];
+      if (this.oldParam){
+        // this.param.content.type = this.oldParam.content.type
+        // this.param.content.dataid = this.oldParam.content.dataid
+        // this.param.content.where.uninvicetype = this.oldParam.content.where.uninvicetype
+        // this.param.content.where.isleave = this.oldParam.content.where.isleave
+        this.param.content = this.oldParam.content
+      }
+      this.columnsData = JSON.parse(JSON.stringify(this.columns));
+      if (this.columnsData) {
+        this.columns.filter((p) => {
+          rs.push({
+            fieldlabel: p.title,
+            fieldname: p.columnname,
+          });
+        });
+      }
+      this.param.content.exportFields = rs;
+      this.param.content.isExport = 1;
+      /*导出数据*/
+      const res = await this.$api.requested(this.param);
+      this.downFile(res.data[0].url, this.fileName);
+      this.param.content.isExport = 0;
+    },
+    downFile(url, fileName) {
+      const x = new XMLHttpRequest();
+      x.open("GET", url, true);
+      x.responseType = "blob";
+      x.onload = function () {
+        const url = window.URL.createObjectURL(x.response);
+        const a = document.createElement("a");
+        a.href = url;
+        a.download = fileName;
+        a.click();
+      };
+      x.send();
+    },
+  },
+};
+</script>
+<style>
+</style>

+ 20 - 1
src/components/normal-basic-layout-new/details/modules/tabs/tab.vue

@@ -16,7 +16,7 @@
       <followTable :ownertable="ownertable" :disabled="disabled" @newFollow="newFollow" ref="followRef"></followTable>
     </div>
     <div v-show="activeName === 'file'">
-      <attachmentList v-if="activeName === 'file'" :status="status" :attinfos="attinfo_attachment" @onSuccess="queryAttments" @cancelEdit="queryAttments">
+      <attachmentList v-if="activeName === 'file'" :status="status" :attinfos="attinfo_attachment" @onSuccess="queryAttments" @cancelEdit="queryAttments" :issalehr="issalehr">
         <upload slot="upload" :folderid="folderid" :status="status"
           :bindData="{ ownertable: ownertable, ownerid: editData[idname], usetype: 'default' }"
           @onSuccess="queryAttments" :hidemediastock="hidemediastock"></upload>
@@ -48,6 +48,9 @@ export default {
       attinfo_attachment:[],
       folderid:JSON.parse(sessionStorage.getItem('folderid')).appfolderid,
       hidemediastock:!JSON.parse(sessionStorage.getItem('activeApp')).selectfileinattachment,
+      hrid:JSON.parse(sessionStorage.getItem('active_account')).hrid,
+      issalehr:false,
+      siteid:JSON.parse(sessionStorage.getItem('active_account')).siteid
     }
   },
   methods:{
@@ -72,6 +75,21 @@ export default {
     },
     newFollow(){
       this.$emit('newFollow')
+    },
+    /*判断是否业务员*/
+    async isSalesman(){
+      const res = await this.$api.requested({
+        classname: "webmanage.hr.hr",
+        content: {
+          hrid: this.hrid
+        },
+        method: "query_hrMain"
+      })
+      if (res.code == 0){
+        this.issalehr = false
+      }else {
+        res.data.issalehr && (this.siteid == 'HY' || this.siteid == 'YOSTEST1')?this.issalehr = true : this.issalehr = false
+      }
     }
   },
   mounted () {
@@ -80,6 +98,7 @@ export default {
         this.activeName = 'tab0'
       }
     }, 1000);
+    this.isSalesman()
   },
   watch: {
     activeName (val) {

+ 20 - 1
src/components/normal-basic-layout/details/modules/tabs/tab.vue

@@ -16,7 +16,7 @@
       <followTable :ownertable="ownertable" :disabled="disabled" @newFollow="newFollow" ref="followRef"></followTable>
     </div>
     <div v-show="activeName === 'file'">
-      <attachmentList v-if="activeName === 'file'" :disabled="$route.path == '/contractDetail'?false:disabled" :status="status" :attachmentDisabled="$route.path == '/contractDetail'?false:attachmentDisabled"  :attinfos="attinfo_attachment" @onSuccess="queryAttments" @cancelEdit="queryAttments">
+      <attachmentList v-if="activeName === 'file'" :disabled="$route.path == '/contractDetail'?false:disabled" :status="status" :attachmentDisabled="$route.path == '/contractDetail'?false:attachmentDisabled"  :attinfos="attinfo_attachment" @onSuccess="queryAttments" @cancelEdit="queryAttments" :issalehr="issalehr">
         <upload slot="upload" :folderid="folderid" :status="status" :attachmentDisabled="$route.path == '/contractDetail'?false:attachmentDisabled" :disabled="$route.path == '/contractDetail'?false:disabled"
           :bindData="{ ownertable: ownertable, ownerid: editData[idname], usetype: 'default' }"
           @onSuccess="queryAttments" :hidemediastock="hidemediastock"></upload>
@@ -48,6 +48,9 @@ export default {
       attinfo_attachment:[],
       folderid:JSON.parse(sessionStorage.getItem('folderid')).appfolderid,
       hidemediastock:!JSON.parse(sessionStorage.getItem('activeApp')).selectfileinattachment,
+      hrid:JSON.parse(sessionStorage.getItem('active_account')).hrid,
+      issalehr:false,
+      siteid:JSON.parse(sessionStorage.getItem('active_account')).siteid
     }
   },
   methods:{
@@ -70,6 +73,21 @@ export default {
     },
     newFollow(){
       this.$emit('newFollow')
+    },
+    /*判断是否业务员*/
+    async isSalesman(){
+      const res = await this.$api.requested({
+        classname: "webmanage.hr.hr",
+        content: {
+          hrid: this.hrid
+        },
+        method: "query_hrMain"
+      })
+      if (res.code == 0){
+        this.issalehr = false
+      }else {
+        res.data.issalehr && (this.siteid == 'HY' || this.siteid == 'YOSTEST1')  ?  this.issalehr = true : this.issalehr = false
+      }
     }
   },
   mounted () {
@@ -78,6 +96,7 @@ export default {
         this.activeName = 'tab0'
       }
     }, 1000);
+    this.isSalesman()
   },
   watch: {
     activeName (val) {

+ 318 - 1
src/views/salesData/components/boxLine.vue

@@ -51,7 +51,7 @@
             ></el-progress>
           </div>
         </div>
-        <div style="width: 20%; height: 150px; margin-left: 16px">
+        <div style="width: 20%; height: 150px; margin-left: 16px" @click="onClick">
           <div style="display: inline-block; height: 120px; margin-top: 16px">
             <p class="box-title">{{ $t("实际金额") }}</p>
             <p style="font-size: 26px; color: #4f7bfd">
@@ -300,13 +300,121 @@
         </div>
       </div>
     </div>
+    <el-drawer
+        :title="$t(this.typeDate) + '_' + $t(this.title) + $t('明细')"
+        :visible.sync="visibleShow"
+        size="90%"
+        direction="rtl"
+        append-to-body
+        @close="onClose"
+    >
+      <div class="drawer__panel_new">
+        <div>
+          <div class="mt-10 inline-16">
+            <span class="search__label" >{{$t('部门')}}:</span>
+            <el-cascader disabled :placeholder="$t('请选择')" class="inline-16" ref="selectdep" size="small" v-model="depment" :options="deplist" :props="{emitPath:true,expandTrigger:'hover',checkStrictly:true,label:'label',value:'departmentid',children:'children'}"  @change="selectDep" ></el-cascader>
+          </div>
+          <div class="mt-10 inline-16">
+            <span class="search__label" >{{$t('业务员')}}:</span>
+            <el-select disabled class="inline-16" v-model="person" filterable :placeholder="$t('请选择')" size="small"  @change="selectPerson" >
+              <el-option
+                  v-for="item in personnelList"
+                  :key="item.index"
+                  :label="$t(item.name)"
+                  :value="item.userid">
+              </el-option>
+            </el-select>
+          </div>
+          <div class="mt-10 inline-16">
+            <span class="search__label" >{{$t('订单类型')}}:</span>
+            <el-select class="inline-16" v-model="orderType" filterable :placeholder="$t('请选择')" size="small" clearable   @change="selectOrderType" >
+              <el-option
+                  v-for="item in orderTypes"
+                  :key="item.index"
+                  :label="$t(item.value)"
+                  :value="item.value">
+              </el-option>
+            </el-select>
+          </div>
+          <div class="mt-10 inline-16">
+            <span class="search__label" >{{$t('领域')}}:</span>
+            <el-select class="inline-16" v-model="tradefield" filterable :placeholder="$t('请选择')" size="small" clearable  @focus="queryTradefield"  @change="selectTradefield" >
+              <el-option
+                  v-for="item in tradefieldList"
+                  :key="item.index"
+                  :label="$t(item.value)"
+                  :value="item.value">
+              </el-option>
+            </el-select>
+          </div>
+          <div class="mt-10 inline-16">
+            <el-input style="width:200px;!important;" :placeholder="$t(`搜索`)" :suffix-icon="paramDetail.content.where.condition?paramDetail.content.where.condition.length > 0?'':'':'el-icon-search'" v-model="paramDetail.content.where.condition" @keyup.native.enter="listDataInfo(paramDetail.content.pageNUmber = 1)" @clear="listDataInfo(paramDetail.content.pageNUmber = 1)" size="small" class="input-with-select inline-16 layout_search__panel" clearable>
+            </el-input>
+          </div>
+          <div class="mt-10 inline-16">
+            <exportFile :param="paramDetail" :columns="tablecols" :fileName="$t(this.typeDate) + '_' + $t(this.title) + $t('明细')"></exportFile>
+          </div>
+        </div>
+        <tableTemplate style="margin-top: 10px" ref="table" :layout="tablecols" :data="listInfo" :opwidth="200" :custom="true" :height="height" fixedName="operation">
+          <template v-slot:customcol="scope">
+            <div v-if="scope.column.columnname === 'nominalpressure'">
+              {{tool.nominalPressureSet(scope.column.data.nominalpressure)}}
+            </div>
+            <div v-else-if="scope.column.columnname === 'marketprice'">
+              {{scope.column.data[scope.column.columnname]?tool.formatAmount(scope.column.data[scope.column.columnname],2,'¥'):'¥0.00'}}
+            </div>
+            <div v-else-if="scope.column.columnname === 'price'">
+              {{scope.column.data[scope.column.columnname]?tool.formatAmount(scope.column.data[scope.column.columnname],2,'¥'):'¥0.00'}}
+            </div>
+            <div v-else-if="scope.column.columnname === 'amount'">
+              {{scope.column.data[scope.column.columnname]?tool.formatAmount(scope.column.data[scope.column.columnname],2,'¥'):'¥0.00'}}
+            </div>
+            <div v-else-if="scope.column.columnname === 'invoiceamount'">
+              {{scope.column.data[scope.column.columnname]?tool.formatAmount(scope.column.data[scope.column.columnname],2,'¥'):'¥0.00'}}
+            </div>
+            <div v-else-if="scope.column.columnname === 'writeoffamount'">
+              {{scope.column.data[scope.column.columnname]?tool.formatAmount(scope.column.data[scope.column.columnname],2,'¥'):'¥0.00'}}
+            </div>
+            <div v-else-if="scope.column.columnname === 'returnamount'">
+              {{scope.column.data[scope.column.columnname]?tool.formatAmount(scope.column.data[scope.column.columnname],2,'¥'):'¥0.00'}}
+            </div>
+            <div v-else-if="scope.column.columnname === 'logisticsamount'">
+              {{scope.column.data[scope.column.columnname]?tool.formatAmount(scope.column.data[scope.column.columnname],2,'¥'):'¥0.00'}}
+            </div>
+            <div v-else-if="scope.column.columnname === 'uninvoiceamount'">
+              {{scope.column.data[scope.column.columnname]?tool.formatAmount(scope.column.data[scope.column.columnname],2,'¥'):'¥0.00'}}
+            </div>
+            <div v-else-if="scope.column.columnname === 'unwriteoffamount'">
+              {{scope.column.data[scope.column.columnname]?tool.formatAmount(scope.column.data[scope.column.columnname],2,'¥'):'¥0.00'}}
+            </div>
+            <div v-else>{{scope.column.data[scope.column.columnname]?$t(scope.column.data[scope.column.columnname]):'--'}}</div>
+          </template>
+        </tableTemplate>
+        <div  class="container normal-panel" style="text-align:right;float: right">
+          <el-pagination
+              background
+              @size-change="handleSizeChange"
+              @current-change="handleCurrentChange"
+              :current-page="currentPage"
+              :pager-count="5"
+              :page-sizes="[100,150, 200]"
+              :page-size="100"
+              layout="total,sizes, prev, pager, next, jumper"
+              :total="total">
+          </el-pagination>
+        </div>
+      </div>
+    </el-drawer>
   </div>
 </template>
 
 <script>
+import tableTemplate from './table';
+import exportFile from '@/components/export_file/index5'
 export default {
   name: "boxLine",
   props: ["title", "typeDate", "index"],
+  components:{tableTemplate,exportFile},
   data() {
     return {
       list: [],
@@ -323,6 +431,57 @@ export default {
           },
         },
       },
+      visibleShow:false,
+      depmentid:'',
+      deplist:[],
+      personnelList:[],
+      depment:'',
+      person:'',
+      depParam:{
+        "id": 20230620102004,
+        "content": {
+        }
+      },
+      orderTypes:[
+        {
+          value:'标准订单'
+        },
+        {
+          value:'特殊订单'
+        },
+        {
+          value:'项目订单'
+        },
+        {
+          value:'促销订单'
+        },
+        {
+          value:'工具订单'
+        }
+      ],
+      orderType:'',
+      tradefield:'',
+      tradefieldList:[],
+      paramDetail:{
+        "id": 2025032613405702,
+        "content": {
+          "type": "1",
+          "dataid": 58,
+          "dateType": "去年", //去年,本年,本季,本月
+          "pageNumber":1,
+          "pageSize":100,
+          "where": {
+            "condition": "",
+            "type": "",
+            "tradefield": ""
+          }
+        }
+      },
+      tablecols:[],
+      listInfo:[],
+      height:'calc(100vh - 195px)',
+      currentPage:0,
+      total:0
     };
   },
   methods: {
@@ -341,6 +500,164 @@ export default {
       this.list = res.data;
       this.percentage = Math.round(this.list.wcamount * 100 * 100) / 100;
     },
+    onClick(){
+      console.log('点击',this.title)
+      this.orderType = ''
+      this.tradefield = ''
+      this.paramDetail.content.where.condition = ''
+      this.paramDetail.content.pageNUmber = 1
+      this.paramDetail.content.where.type = ''
+      this.paramDetail.content.where.tradefield = ''
+      this.visibleShow = true
+      if (this.title == '订单'){
+        this.tablecols = this.tool.tabelCol(this.$route.name).orderDetailsTable.tablecols
+      }else if (this.title == '出货'){
+        this.tablecols = this.tool.tabelCol(this.$route.name).shippingDetailsTable.tablecols
+      }else if (this.title == '开票'){
+        this.tablecols = this.tool.tabelCol(this.$route.name).billingDetailsTable.tablecols
+      }else if (this.title == '回款'){
+        this.tablecols = this.tool.tabelCol(this.$route.name).paymentScheduleTable.tablecols
+      }
+      this.queryDep()
+      this.paramDetail.content.pageNUmber = 1
+      this.listDataInfo()
+    },
+    onClose(){
+      this.visibleShow = false
+    },
+    /*获取部门*/
+    async queryDep(){
+      const res = await this.$api.requested(this.depParam)
+      this.deplist = this.createMenu(res.data.dep)
+      this.personnelList = res.data.hr
+      const usertype = JSON.parse(sessionStorage.getItem('active_account')).usertype
+      const userName = JSON.parse(sessionStorage.getItem('active_account')).name
+      const userid = JSON.parse(sessionStorage.getItem('active_account')).userid
+      if (this.param.content.type == 1){
+        this.depment = this.param.content.dataid
+        this.person = ''
+      }else {
+        console.log(usertype,userName,'eeeeee',userid,this.param.content.dataid)
+        this.person = userid === this.param.content.dataid?userName:this.param.content.dataid
+        console.log(this.person,'person')
+        this.depment = ''
+      }
+    },
+    createMenu (array) {
+      var that = this
+      let arr = []
+      function convertToElementTree(node) {
+        // 新节点
+        if (node.subdep.length === 0){
+          var elNode = {
+            label: node["depname"],
+            parentid:node['parentid'],
+            parentname:node['parentname'],
+            departmentid:node["departmentid"],
+            value:node["departmentid"],
+            remarks:node["remarks"],
+            isused:node["isused"],
+            changedate:node['changedate'],
+            changeby:node['changeby'],
+            createdate:node['createdate'],
+            createby:node['createby'],
+            depno:node['depno'],
+            disabled:that.pageOnlyRead,
+          }
+        }else {
+          var elNode = {
+            label: node["depname"],
+            parentid:node['parentid'],
+            parentname:node['parentname'],
+            departmentid:node["departmentid"],
+            value:node["departmentid"],
+            remarks:node["remarks"],
+            isused:node["isused"],
+            changedate:node['changedate'],
+            changeby:node['changeby'],
+            createdate:node['createdate'],
+            createby:node['createby'],
+            depno:node['depno'],
+            disabled:that.pageOnlyRead,
+            children: []
+          }
+        }
+        if (node.subdep && node.subdep.length > 0) {
+          // 如果存在子节点
+          for (var index = 0; index < node.subdep.length; index++) {
+            // 遍历子节点, 把每个子节点看做一颗独立的树, 传入递归构造子树, 并把结果放回到新node的children中
+            elNode.children.push(convertToElementTree(node.subdep[index]));
+          }
+        }
+        return elNode;
+      }
+      array.forEach((element) => {
+        arr.push(convertToElementTree(element))
+      });
+      return arr
+    },
+    /*选择部门*/
+    selectDep(val){
+      this.person = ''
+      this.depmentid = val[val.length -1]
+      this.param.content.pageNumber = 1
+      this.listData(1,val[val.length -1],this.nowEndDate)
+    },
+    /*选择业务员*/
+    selectPerson(val){
+      this.depment = ''
+      this.depmentid = val
+      this.param.content.pageNumber = 1
+      this.listData(0,val,this.nowEndDate)
+    },
+    /*选择订单类型*/
+    selectOrderType(){
+      this.paramDetail.content.pageNUmber = 1
+      this.paramDetail.content.type = this.orderType
+      this.listDataInfo()
+    },
+    async queryTradefield(){
+      if (this.tradefieldList.length < 1){
+        const res = await this.$store.dispatch('optiontypeselect','tradefield')
+        this.tradefieldList = res.data
+      }
+    },
+    /*选择领域*/
+    selectTradefield(){
+      this.paramDetail.content.pageNUmber = 1
+      this.listDataInfo()
+    },
+    async listDataInfo(){
+      if (this.title == '订单'){
+        this.paramDetail.id = 2025032613405702
+      }else if (this.title == '出货'){
+        this.paramDetail.id = 2025032615330102
+      }else if (this.title == '开票'){
+        this.paramDetail.id = 2025032616343302
+      }else if (this.title == '回款'){
+        this.paramDetail.id = 2025032616352402
+      }
+      this.paramDetail.content.type = this.param.content.type
+      this.paramDetail.content.dataid = this.param.content.dataid
+      this.paramDetail.content.dateType = this.param.content.dateType
+      this.paramDetail.content.where.type = this.orderType
+      this.paramDetail.content.where.tradefield = this.tradefield
+      const res = await this.$api.requested(this.paramDetail)
+      this.listInfo = res.data
+      this.total = res.total
+      this.currentPage = res.pageNumber
+      console.log(res.data,'数据1111')
+    },
+    handleSizeChange(val) {
+      // console.log(`每页 ${val} 条`);
+      this.paramDetail.content.pageSize = val
+      this.listDataInfo()
+    },
+    handleCurrentChange(val) {
+      // console.log(`当前页: ${val}`);
+      this.paramDetail.content.pageNumber = val
+      this.listDataInfo()
+    },
   },
 };
 </script>

+ 5 - 2
src/views/salesData/index.vue

@@ -32,7 +32,7 @@
             </div>
           </div>
           <!--  数字看板      -->
-          <digitalSigns ref="digitalSigns" :windowWidth="windowWidth"></digitalSigns>
+          <digitalSigns ref="digitalSigns" :windowWidth="windowWidth" :depment="depment" :person="person" ></digitalSigns>
           <!--  客户账户余额分析      -->
           <customerAccountBalanceAnalysis ref="customerAccountBalanceAnalysis" :dataid="departmentid" :windowWidth="windowWidth" :scrollHeight="scrollData" @backFull="backFull" ></customerAccountBalanceAnalysis>
           <!--  客户业务员销售      -->
@@ -66,6 +66,8 @@
           <invoiceAmountAnalysis ref="invoiceAmountAnalysis" :dataid="departmentid" :windowWidth="windowWidth" :scrollHeight="scrollData" @backFull="backFull"></invoiceAmountAnalysis>
           <!--  近12月出货未开票金额趋势分析      -->
           <uninvoiceAmountAnalysis ref="uninvoiceAmountAnalysis" :dataid="departmentid" :windowWidth="windowWidth" :scrollHeight="scrollData" @backFull="backFull"></uninvoiceAmountAnalysis>
+          <!--  已下单未出货分析      -->
+          <orderUnshippedGoods ref="delayedShipmentAnalysis" :dataid="departmentid" :windowWidth="windowWidth" :scrollHeight="scrollData" @backFull="backFull"></orderUnshippedGoods>
           <!--  出货未开票分析      -->
           <shippingUninvoiceAnalysis ref="shippingUninvoiceAnalysis" :scrollHeight="scrollData" :windowWidth="windowWidth" @backFull="backFull"></shippingUninvoiceAnalysis>
           <!--  财务回款分析      -->
@@ -94,11 +96,12 @@ import financialCollectionAnalysis from "@/views/salesData/modules/financialColl
 import customerAccountBalanceAnalysis from "@/views/salesData/modules/customerAccountBalanceAnalysis";
 import unshippedExtensionAnalysis from './modules/unshippedExtensionAnalysis'
 import normalLayout from '@/components/normal-basic-layout/normalNew'
+import orderUnshippedGoods from './modules/orderUnshippedGoods'
 export default {
   name: "index",
   components:{normalLayout,digitalSigns,customerSales,salespersonSales,quotationAnalysis,orderTrendAnalysis,orderType,orderProductCategory,
     shippingTrendAnalysis,delayedShipmentAnalysis,invoiceAmountAnalysis,uninvoiceAmountAnalysis,shippingUninvoiceAnalysis,
-    financialCollectionAnalysis,customerAccountBalanceAnalysis,unshippedExtensionAnalysis
+    financialCollectionAnalysis,customerAccountBalanceAnalysis,unshippedExtensionAnalysis,orderUnshippedGoods
   },
   data(){
     return {

+ 5 - 5
src/views/salesData/modules/digitalSigns.vue

@@ -11,10 +11,10 @@
       </el-button-group>
     </div>
     <div class="container-div">
-      <boxLine :title="$t(`订单`)" ref="order"  :style="{width:windowWidth > 1880? '49%':'100%',marginRight: windowWidth > 1880?'1%':'0',marginBottom:windowWidth > 1880?'16px':'16px'}"></boxLine>
-      <boxLine :title="$t(`出货`)" ref="shipment"  :style="{width:windowWidth > 1880? '50%':'100%',marginBottom:windowWidth > 1880?'16px':'16px'}"></boxLine>
-      <boxLine :title="$t(`开票`)" ref="invoicing"  :style="{width:windowWidth > 1880? '49%':'100%',marginRight: windowWidth > 1880?'1%':'0',marginBottom:windowWidth > 1880?'0':'16px'}"></boxLine>
-      <boxLine :title="$t(`回款`)" ref="returned"  :style="{width:windowWidth > 1880? '50%':'100%'}"></boxLine>
+      <boxLine :title="$t(`订单`)" ref="order"   :typeDate="dataType"  :style="{width:windowWidth > 1880? '49%':'100%',marginRight: windowWidth > 1880?'1%':'0',marginBottom:windowWidth > 1880?'16px':'16px'}"></boxLine>
+      <boxLine :title="$t(`出货`)" ref="shipment"  :typeDate="dataType" :style="{width:windowWidth > 1880? '50%':'100%',marginBottom:windowWidth > 1880?'16px':'16px'}"></boxLine>
+      <boxLine :title="$t(`开票`)" ref="invoicing"  :typeDate="dataType" :style="{width:windowWidth > 1880? '49%':'100%',marginRight: windowWidth > 1880?'1%':'0',marginBottom:windowWidth > 1880?'0':'16px'}"></boxLine>
+      <boxLine :title="$t(`回款`)" ref="returned"  :typeDate="dataType" :style="{width:windowWidth > 1880? '50%':'100%'}"></boxLine>
     </div>
   </div>
 </template>
@@ -24,7 +24,7 @@ import boxLine from "@/views/salesData/components/boxLine";
 export default {
   name: "digitalSigns",
   components:{boxLine},
-  props:['windowWidth'],
+  props:['windowWidth',"depment","person"],
   data(){
     return {
       dataType:'本年',

+ 20 - 2
src/views/salesData/modules/financialCollectionAnalysis.vue

@@ -17,6 +17,9 @@
               <el-option :label="$t('离职')" value="2"></el-option>
             </el-select>
           </div>
+          <div class="inline-15 mt-10">
+            <exportFileInfo  :param="exportParam" :oldParam="tableParam" :columns="tool.tabelCol(this.$route.name).financialCollectioDetailTable.tablecols" fileName="财务回款分析明细" btnTitle="导出明细"></exportFileInfo>
+          </div>
           <div class="inline-15 mt-10">
             <exportFile  :param="tableParam" :columns="tablecols" fileName="财务回款分析" :dataid="tableParam.content.dataid"></exportFile>
           </div>
@@ -77,6 +80,7 @@ import financialCollectionDetail from "@/views/salesData/components/financialCol
 import fullScreen from "@/views/salesData/components/fullScreen";
 import tableTemplate from '@/views/salesData/components/table';
 import exportFile from '@/components/export_file/index'
+import exportFileInfo from '@/components/export_file/index7'
 import {Bar, G2} from "@antv/g2plot";
 const G = G2.getEngine('canvas');
 export default {
@@ -87,7 +91,8 @@ export default {
     tableTemplate,
     financialCollectionDetail,
     fullScreen,
-    exportFile
+    exportFile,
+    exportFileInfo
   },
   data(){
     return {
@@ -124,7 +129,20 @@ export default {
       heightChart:'98%',
       heightTable:'403px',
       height:'356px',
-      isFull:false
+      isFull:false,
+      exportParam:{
+        "id": 2025033114042802,
+        "content": {
+          "type": 1,
+          "dataid": 58,
+          "unwriteoffamounttype": "订单",
+          "pageNumber": 1,
+          "pageSize": 20,
+          "where": {
+            "isleave": "1"
+          }
+        },
+      }
     }
   },
   methods:{

+ 282 - 0
src/views/salesData/modules/orderUnshippedGoods.vue

@@ -0,0 +1,282 @@
+<template>
+  <div class="div-box-new-margin">
+    <div class="div-border-box" id="orderUnshippedGoodsFull">
+      <div class="out">
+        <div>
+          <div class="div-line div-line-right"></div>
+          <div class="title" style="min-width: 220px;">{{$t(`已下单未出货分析`)}}</div>
+        </div>
+        <div class="in">
+          <div class="inline-16 mt-10">
+            <departmentSalesperson ref="departmentSalesperson"  @depSelect="depSelect" @personSelect="personSelect" :isFull="isFull"></departmentSalesperson>
+          </div>
+          <div class="mt-10 inline-16">
+            <p class="search__label">{{$t('状态')}}:</p>
+            <el-select v-model="param.content.where.isleave" clearable style="margin-right:10px" size="small" :placeholder="$t('请选择状态')" @change="queryModel(param.content.dataid,param.content.where.isleave,'状态')" >
+              <el-option :label="$t('在职')" value="1"></el-option>
+              <el-option :label="$t('离职')" value="2"></el-option>
+            </el-select>
+          </div>
+          <div class="mt-10 inline-16">
+            <span class="search__label inline-16">{{$t('分析日期')}}:</span>
+            <el-date-picker
+                :append-to-body="!isFull"
+                v-model="param.content.enddate"
+                type="date"
+                :clearable="false"
+                @change="changeDate"
+                format="yyyy-MM-dd"
+                value-format="yyyy-MM-dd"
+                size="small"
+                :range-separator="$t('至')"
+                :start-placeholder="$t('开始月份')"
+                :end-placeholder="$t('结束月份')">
+            </el-date-picker>
+          </div>
+          <div class="inline-15 mt-10">
+            <exportFile  :param="param" :columns="tablecols" fileName="已下单未出货分析" :dataid="param.content.dataid"></exportFile>
+          </div>
+          <fullScreen domId="orderUnshippedGoodsFull" @onFull="onFull" @backFull="backFull"></fullScreen>
+        </div>
+      </div>
+      <div class="chart">
+        <div id="orderUnshippedGoodsChart" :style="{height: heightChart}"></div>
+      </div>
+      <div style="font-size: 16px;color: #333333;margin: 10px 0 10px 0">{{param.content.dateType?param.content.dateType:'全部'}}</div>
+      <div :style="{height: heightTable}">
+        <tableTemplate  ref="table" :layout="tablecols" :data="list" :opwidth="200" :custom="true" :height="height">
+          <template v-slot:customcol="scope">
+            <p v-if="scope.column.columnname === 'province'">
+              {{scope.column.data.province+scope.column.data.city+scope.column.data.county}}
+            </p>
+            <p v-else-if="scope.column.columnname === 'marketprice'">
+                <span v-if="scope.column.data[scope.column.columnname]">
+                  ¥{{tool.formatAmount(scope.column.data[scope.column.columnname],2)}}
+                </span>
+              <span v-else>--</span>
+            </p>
+            <p v-else-if="scope.column.columnname === 'defaultprice'">
+                <span v-if="scope.column.data[scope.column.columnname]">
+                  ¥{{tool.formatAmount(scope.column.data[scope.column.columnname],2)}}
+                </span>
+              <span v-else>--</span>
+            </p>
+            <p v-else-if="scope.column.columnname === 'defaultamount'">
+                <span v-if="scope.column.data[scope.column.columnname]">
+                  ¥{{tool.formatAmount(scope.column.data[scope.column.columnname],2)}}
+                </span>
+              <span v-else>--</span>
+            </p>
+            <p v-else-if="scope.column.columnname === 'price'">
+                <span v-if="scope.column.data[scope.column.columnname]">
+                  ¥{{tool.formatAmount(scope.column.data[scope.column.columnname],2)}}
+                </span>
+              <span v-else>--</span>
+            </p>
+            <p v-else-if="scope.column.columnname === 'amount'">
+                <span v-if="scope.column.data[scope.column.columnname]">
+                  ¥{{tool.formatAmount(scope.column.data[scope.column.columnname],2)}}
+                </span>
+              <span v-else>--</span>
+            </p>
+            <p v-else-if="scope.column.columnname === 'returnamount'">
+              <span>¥{{tool.formatAmount(scope.column.data[scope.column.columnname],2)}}</span>
+            </p>
+            <div v-else-if="scope.column.columnname === 'nominalpressure'">
+              {{tool.nominalPressureSet(scope.column.data.nominalpressure)}}
+            </div>
+            <p v-else>{{scope.column.data[scope.column.columnname]?$t(scope.column.data[scope.column.columnname]):'--'}}</p>
+          </template>
+        </tableTemplate>
+        <div  class="container normal-panel" style="text-align:right;float: right;">
+          <el-pagination
+              background
+              @size-change="handleSizeChange"
+              @current-change="handleCurrentChange"
+              :current-page="currentPage"
+              :pager-count="7"
+              :page-sizes="[20, 50,100, 200]"
+              :page-size="20"
+              layout="total,sizes, prev, pager, next, jumper"
+              :total="total">
+          </el-pagination>
+        </div>
+      </div>
+    </div>
+  </div>
+</template>
+
+<script>
+import { Bar } from '@antv/g2plot';
+import departmentSalesperson from "@/views/salesData/components/departmentSalesperson";
+import tableTemplate from '@/views/salesData/components/table';
+import fullScreen from "@/views/salesData/components/fullScreen";
+import exportFile from '@/components/export_file/index'
+export default {
+  name: "orderUnshippedGoods",
+  props:['dataid','scrollHeight','windowWidth'],
+  components:{departmentSalesperson,tableTemplate,fullScreen,exportFile},
+  data(){
+    return {
+      chartBar:null,
+      param:{
+        "id": 2025040113445202,
+        "content": {
+          "type": 0,
+          "dataid": '',
+          "enddate": new Date().getFullYear() + '-' +  (new Date().getMonth() + 1) + '-' + new Date().getDate(),//分析日期
+          "dateType": "",//图标联动  一周 一月 一季 一季以上 可不传 不传默认查全部
+          "pageSize":20,
+          "pageNumber":1,
+          "where":{
+            'isleave':'1'
+          }
+        }
+      },
+      list:[],
+      chartData:[],
+      tablecols:[],
+      currentPage:0,
+      total:0,
+      enddate:new Date().getFullYear() + '-' +  (new Date().getMonth() + 1) + '-' + new Date().getDate(),
+      hoverData:[],
+      heightChart:'100%',
+      heightTable:'403px',
+      height:'356px',
+      isFull:false
+    }
+  },
+  methods:{
+    async listData(val){
+      this.renderPie(val)
+    },
+    async queryModel(val,isleave,state){
+      if (state == '状态'){
+        this.$refs.departmentSalesperson.person = ''
+        this.param.content.dataid = this.param.content.type == 0?-1:val
+      }else {
+        this.param.content.dataid = val?val : this.dataid
+      }
+      this.param.content.where.isleave = isleave
+      const res = await this.$api.requested(this.param)
+      if (res.data.length === 1){
+        if (res.data[0].isEmpty == 1){
+          this.list = []
+          this.total = 0
+          this.currentPage = 0
+        }else {
+          this.list = res.data
+          this.total = res.total
+          this.currentPage = res.data.currentPage
+        }
+      }else {
+        this.list = res.data
+        this.total = res.total
+        this.currentPage = res.data.currentPage
+      }
+      this.chartData = res.data[0].trend.map(item=>{
+        return {
+          "sequence": item.sequence,
+          "value": item.value,
+          "key": item.key,
+          "type":'订单行数'
+        }
+      })
+      this.chartBar.changeData(this.chartData)
+      state == '状态' ? this.personData() : ''
+    },
+    renderPie(val){
+      this.chartBar = new Bar('orderUnshippedGoodsChart', {
+        data:this.chartData,
+        xField: 'value',
+        yField: 'key',
+        seriesField: 'type',
+        label:{
+          position:top
+        },
+        legend: {
+          position: 'top-left',
+        },
+        interactions: [{ type: 'element-single-selected' }]
+      });
+      this.chartBar.on('plot:click',ev=>{
+        const states = this.chartBar.getStates()
+        this.param.content.dateType = states.length === 0 ?'':ev.data.data.key
+        this.param.content.pageNumber = 1
+        this.queryTable(this.param.content.dataid,this.param.content.where.isleave)
+      })
+      this.chartBar.render();
+      this.queryModel(val,this.param.content.where.isleave)
+    },
+    async queryTable(val,isleave){
+      this.param.content.dataid = val || this.dataid
+      this.param.content.where.isleave = isleave
+      const res = await this.$api.requested(this.param)
+      this.list = res.data
+      this.total = res.total
+      this.currentPage = res.pageNumber
+    },
+    changeDate(){
+      this.queryModel(this.param.content.dataid,this.param.content.where.isleave)
+    },
+    /*选择部门*/
+    depSelect(val){
+      this.param.content.type = 1
+      this.param.content.dataid = val
+      this.queryModel(val,this.param.content.where.isleave)
+    },
+    /*选择业务员*/
+    personSelect(val){
+      this.param.content.type = 0
+      this.param.content.dataid = val
+      this.queryModel(val,this.param.content.where.isleave)
+    },
+    /*获取新的业务员列表*/
+    async personData(){
+      let param = {
+        id: 20230620102004,
+        content: {
+          isleave:this.param.content.where.isleave
+        },
+      }
+      const res = await this.$api.requested(param)
+      this.$refs.departmentSalesperson.personnelList = res.data.hr
+    },
+    handleSizeChange(val) {
+      // console.log(`每页 ${val} 条`);
+      this.param.content.pageSize = val
+      this.queryTable(this.param.content.dataid,this.param.content.where.isleave)
+    },
+    handleCurrentChange(val) {
+      // console.log(`当前页: ${val}`);
+      this.param.content.pageNumber = val
+      this.queryTable(this.param.content.dataid,this.param.content.where.isleave)
+    },
+    /*全屏*/
+    onFull(){
+      /*this.heightChart = 'calc(100vh - 85px)'*/
+      this.heightChart = '98%'
+      /* this.heightTable = '883px'
+       this.height = '886px'*/
+      this.heightTable = 'calc(100vh - 800px)'
+      this.height = this.windowWidth > 1205 ? 'calc(100vh - 555px)' :'calc(100vh - 620px)'
+      this.isFull = true
+    },
+    /*退出全屏*/
+    backFull(val){
+      this.heightChart = '100%'
+      this.heightTable = '403px'
+      this.height = '356px'
+      this.isFull = false
+      this.$emit('backFull',val)
+    }
+  },
+  created() {
+    this.tablecols = this.tool.tabelCol(this.$route.name).delayedShipmentTable.tablecols
+  }
+}
+</script>
+
+<style scoped>
+
+</style>

+ 20 - 3
src/views/salesData/modules/shippingUninvoiceAnalysis.vue

@@ -17,6 +17,9 @@
               <el-option :label="$t('离职')" value="2"></el-option>
             </el-select>
           </div>
+          <div class="inline-15 mt-10">
+            <exportFileInfo  :param="exportParam" :oldParam="param" :columns="tool.tabelCol(this.$route.name).shipmentUninvoicedDetailTable.tablecols" fileName="出货未开票分析明细" btnTitle="导出明细"></exportFileInfo>
+          </div>
           <div class="inline-15 mt-10">
             <exportFile  :param="param" :columns="tablecols" fileName="出货未开票分析" :dataid="param.content.dataid"></exportFile>
           </div>
@@ -63,7 +66,7 @@
             <p v-else>{{scope.column.data[scope.column.columnname]?$t(scope.column.data[scope.column.columnname]):'--'}}</p>
           </template>
           <template v-slot:opreation="scope">
-            <shippingUninvoiceDetail :dataid="param.content.dataid" :type="param.content.type" :sys_enterpriseid="scope.data.sys_enterpriseid" :data="scope.data" :isFull="isFull"></shippingUninvoiceDetail>
+            <shippingUninvoiceDetail ref="shippingUninvoiceDetail" :dataid="param.content.dataid" :type="param.content.type" :sys_enterpriseid="scope.data.sys_enterpriseid" :data="scope.data" :isFull="isFull"></shippingUninvoiceDetail>
           </template>
         </tableTemplate>
         <div  class="container normal-panel" style="text-align:right;float: right;">
@@ -91,11 +94,12 @@ import tableTemplate from '@/views/salesData/components/table';
 import shippingUninvoiceDetail from "@/views/salesData/components/shippingUninvoiceDetail";
 import fullScreen from "@/views/salesData/components/fullScreen";
 import exportFile from '@/components/export_file/index'
+import exportFileInfo from '@/components/export_file/index7'
 import {Bar} from "@antv/g2plot";
 export default {
   name: "shippingUninvoiceAnalysis",
   props:['scrollHeight','windowWidth'],
-  components:{tableTemplate,departmentSalesperson,shippingUninvoiceDetail,fullScreen,exportFile},
+  components:{tableTemplate,departmentSalesperson,shippingUninvoiceDetail,fullScreen,exportFile,exportFileInfo},
   data(){
     return {
       chartBar:null,
@@ -121,7 +125,20 @@ export default {
       heightChart:'98%',
       heightTable:'403px',
       height:'356px',
-      isFull:false
+      isFull:false,
+      exportParam:{
+        "id": 2025033114030502,
+        "content": {
+          "type": 1,
+          "dataid": 58,
+          "pageNumber": 1,
+          "pageSize": 20,
+          "where": {
+            "uninvicetype": "",
+            "isleave": "1"
+          }
+        },
+      }
     }
   },
   methods:{