Browse Source

调整客户搜索功能

qymljy 2 years ago
parent
commit
69e51e1345
20 changed files with 725 additions and 227 deletions
  1. 1 1
      src/HDrpManagement/Creditbilladj/modules/enterpriseTable/index.vue
  2. 2 0
      src/HDrpManagement/competitor/detail/modules/competeProjects/list.vue
  3. 7 1
      src/HDrpManagement/contractManage/components/itemClass/index.vue
  4. 3 1
      src/HDrpManagement/contractManage/components/productClassList/productClassList.vue
  5. 4 1
      src/HDrpManagement/contractManage/components/productDetailList/productDetailList.vue
  6. 1 1
      src/HDrpManagement/contractManage/components/productList/productBillno.vue
  7. 1 1
      src/HDrpManagement/contractManage/components/toolList/toolList.vue
  8. 2 1
      src/HDrpManagement/contractManage/modules/detail.vue
  9. 2 0
      src/HDrpManagement/publicCustomer/modules/detail/addressManage/list.vue
  10. 2 0
      src/HDrpManagement/publicCustomer/modules/detail/contacts/list.vue
  11. 2 1
      src/HDrpManagement/publicManage/index.vue
  12. 16 10
      src/HDrpManagement/serveBill/modules/detail.vue
  13. 2 2
      src/HManagement/saleForecastCount/index.vue
  14. 18 93
      src/HManagement/salesForecastTemplate/modules/product.vue
  15. 256 0
      src/HManagement/salesForecastTemplate/modules/productCopy.vue
  16. 1 0
      src/SDrpManagement/salerPrivatecustomer/detail/modules/addressManage/list.vue
  17. 1 0
      src/SDrpManagement/salerPrivatecustomer/detail/modules/contacts/list.vue
  18. 1 0
      src/SDrpManagement/salerPrivatecustomer/detail/modules/financialInfo/index.vue
  19. 32 114
      src/SManagement/sales_forecast/modules/product.vue
  20. 371 0
      src/SManagement/sales_forecast/modules/productCopy.vue

+ 1 - 1
src/HDrpManagement/Creditbilladj/modules/enterpriseTable/index.vue

@@ -20,7 +20,7 @@
           </div>
           <div v-else-if="scope.column.columnname == 'creditquota'">
             <el-input size="mini" v-if="currentEdit.sa_creditbilldetailid == scope.column.data.sa_creditbilldetailid" v-model="scope.column.data.creditquota"></el-input>
-            <p v-else>{{scope.column.data[scope.column.columnname]}}</p>
+            <p v-else>{{tool.formatAmount(scope.column.data[scope.column.columnname],2)}}</p>
           </div>
           <div v-else-if="scope.column.columnname == 'remarks'">
             <el-input size="mini" v-if="currentEdit.sa_creditbilldetailid == scope.column.data.sa_creditbilldetailid" v-model.number="scope.column.data.remarks"></el-input>

+ 2 - 0
src/HDrpManagement/competitor/detail/modules/competeProjects/list.vue

@@ -113,6 +113,8 @@ export default {
     },
     clearData(){
       this.search = ""
+      this.params.content.where.condition = this.search
+      this.listData()
     },
     queryClick(){
       this.params.content.where.condition = this.search

+ 7 - 1
src/HDrpManagement/contractManage/components/itemClass/index.vue

@@ -18,16 +18,22 @@
     <div class="produtMag-panel">
       <el-table
           ref="multipleTable"
-          height="calc(100vh - 500px)"
           :data="list"
           style="width: 100%"
+          height="calc(100vh - 500px)"
           :header-cell-style="{height:'50px',color:'#606266',fontWeight:'400'}"
           :cell-style="{height:'50px',color:'#666666',fontWeight:'400'}"
+          border
       >
         <!--        <el-table-column
                     type="selection"
                     width="55">
                 </el-table-column>-->
+        <el-table-column
+            prop="itemclassnum"
+            label="编号"
+            width="0">
+        </el-table-column>
         <el-table-column
             prop="itemclassfullname"
             label="产品类别名称"

+ 3 - 1
src/HDrpManagement/contractManage/components/productClassList/productClassList.vue

@@ -5,7 +5,9 @@
         <el-input size="small" style="width:200px;margin-right:10px" v-model="params.content.where.condition" placeholder="输入搜索内容" @clear="listData(params.content.pageNumber = 1)" @keyup.native.enter="listData(params.content.pageNumber = 1)" clearable></el-input>
         <slot name="addProduct"/>
       </div>
-      <tableLayout :layout="tablecols" :data="list" :opwidth="200" :width="false" height="calc(100vh - 550px)" :custom="true" fixedName="operation discountrate" >
+      <tableLayout :layout="tablecols" :data="list" :opwidth="200" :width="false"  :custom="true" fixedName="operation discountrate" height="calc(100vh - 500px)"
+                   :header-cell-style="{height:'50px',color:'#606266',fontWeight:'400'}"
+                   :cell-style="{height:'50px',color:'#666666',fontWeight:'400'}">
         <template v-slot:customcol="scope">
           <div v-if="scope.column.columnname == 'discountrate'">
             <el-input size="mini" v-if="currentEdit.sa_contract_itemsaleclassid == scope.column.data.sa_contract_itemsaleclassid" v-model="scope.column.data.discountrate" @input="discountrateChange($event,scope.column.data)"></el-input>

+ 4 - 1
src/HDrpManagement/contractManage/components/productDetailList/productDetailList.vue

@@ -20,7 +20,7 @@
                      ref="addProduct"
         ></addProduct>
       </div>
-      <tableLayout :layout="tablecols" :data="list" :opwidth="200" height="calc(100vh - 550px)" :width="true" :custom="true" fixedName="operation qty marketprice discountrate price countPrice" >
+      <tableLayout :layout="tablecols" :data="list" :opwidth="200" height="calc(100vh - 550px)" :width="true" :custom="true" fixedName="operation amount" >
         <template v-slot:customcol="scope">
           <div v-if="scope.column.columnname == 'qty'">
             <el-input-number size="mini" v-if="editIndex == scope.column.data.sa_contract_itemsid" v-model="scope.column.data.qty" @change="qtyChange" :min="1" label="描述文字"></el-input-number>
@@ -59,6 +59,9 @@
           <div v-else-if="scope.column.columnname == 'marketprice'">
             <p>{{tool.formatAmount((scope.column.data.marketprice),2)}}</p>
           </div>
+          <div v-else-if="scope.column.columnname == 'amount'">
+            <p>{{tool.formatAmount((scope.column.data.amount),2)}}</p>
+          </div>
           <div v-else-if="scope.column.columnname == 'brand'">
             {{scope.column.data[scope.column.columnname][0] && scope.column.data[scope.column.columnname][0].brandname}}
           </div>

+ 1 - 1
src/HDrpManagement/contractManage/components/productList/productBillno.vue

@@ -19,7 +19,7 @@
             type="del"
         ></uploadAllData>
       </div>
-      <tableLayout :layout="tablecols" :data="list" :width="true" :opwidth="200" height="calc(100vh - 550px)" :custom="true" fixedName="operation qty marketprice discountrate price countPrice" >
+      <tableLayout :layout="tablecols" :data="list" :width="true" :opwidth="200" height="calc(100vh - 550px)" :custom="true" fixedName="operation countPrice" >
         <template v-slot:customcol="scope">
           <div v-if="scope.column.columnname == 'qty'">
             <el-input-number size="mini" v-if="editIndex == scope.column.data.sa_contract_itemsid" v-model="scope.column.data.qty" @change="qtyChange" :min="1" label="描述文字"></el-input-number>

+ 1 - 1
src/HDrpManagement/contractManage/components/toolList/toolList.vue

@@ -19,7 +19,7 @@
             type="del"
         ></uploadAllData>
       </div>
-      <tableLayout :layout="tablecols" :data="list" :opwidth="200" height="calc(100vh - 550px)" :custom="true" fixedName="operation qty marketprice discountrate price countPrice" >
+      <tableLayout :layout="tablecols" :data="list" :opwidth="200" height="calc(100vh - 550px)" :custom="true" fixedName="operation  countPrice" >
         <template v-slot:customcol="scope">
           <div v-if="scope.column.columnname == 'qty'">
             <el-input-number size="mini" v-if="editIndex == scope.column.data.sa_contract_itemsid" v-model="scope.column.data.qty" @change="qtyChange($event,scope.column.data,scope.column.data.index)" :min="1" label="描述文字"></el-input-number>

+ 2 - 1
src/HDrpManagement/contractManage/modules/detail.vue

@@ -17,9 +17,10 @@
       </div>
       <div slot="customOperation">
         <editBtn class="inline-16" :modelList="modelList" v-if="tool.checkAuth($route.name,'update')" :disabled="mainData.status != '新建' || !isLeader" @onSuccess="queryMainData();$refs.billno && $refs.billno.listData()" :data="mainData" />
+        <revoke class="inline-16" @onSuccess="queryMainData()" :data="mainData" v-if="tool.checkAuth($route.name,'revoke') && mainData.status === '已提交' && isLeader" ></revoke>
         <submit-check class="inline-16"  :disabled="!isLeader" ref="submit" :data="mainData" @onSuccess="queryMainData" />
         <reverseCheck class="inline-16" @onSuccess="queryMainData()" :data="mainData" v-if="tool.checkAuth($route.name,'reverseCheck') && mainData.status === '审核'"  />
-        <revoke class="inline-16" @onSuccess="queryMainData()" :data="mainData" v-if="tool.checkAuth($route.name,'revoke') && mainData.status === '已提交' && isLeader" ></revoke>
+<!--        <revoke class="inline-16" @onSuccess="queryMainData()" :data="mainData" v-if="tool.checkAuth($route.name,'revoke') && mainData.status === '已提交' && isLeader" ></revoke>-->
         <contractOver class="inline-16" v-if="tool.checkAuth($route.name,'contractOver') && mainData.status != '已终止' && mainData.status != '审核' && isLeader" :disabled="!isLeader" :id="mainData.sa_contractid" @onSuccess="queryMainData" />
         <Del class="inline-16" :idName="20221121202502" :id="mainData.sa_contractid" idKey="sa_contractids"  v-if="tool.checkAuth($route.name,'toVoid') && (mainData.status == '新建' || mainData.status == '已终止') && isLeader"/>
       </div>

+ 2 - 0
src/HDrpManagement/publicCustomer/modules/detail/addressManage/list.vue

@@ -104,6 +104,8 @@ export default {
     },
     clearData(){
       this.search = ""
+      this.params.content.where.condition = this.search
+      this.listData()
     },
     queryClick(){
       this.params.content.where.condition = this.search

+ 2 - 0
src/HDrpManagement/publicCustomer/modules/detail/contacts/list.vue

@@ -97,6 +97,8 @@ export default {
     },
     clearData(){
       this.search = ""
+      this.params.content.where.condition = this.search
+      this.listData()
     },
     queryClick(){
       this.params.content.where.condition = this.search

+ 2 - 1
src/HDrpManagement/publicManage/index.vue

@@ -17,8 +17,9 @@ vue
       </template>
       <template v-slot:tbOpreation="scope">
 <!--        <delete-btn class="inline-16" @deleteSuccess="$refs.basicLayout.listData()" :id="scope.data.data.sa_customerpoolid" nameId="20221009100602" nameKey="sa_customerpoolids" />-->
-        <delBtn class="inline-16" :data="scope.data.data" @delSuccess="$refs.basicLayout.listData()"  ></delBtn>
+
         <editTemp class="inline-16" :data="scope.data.data" @onSuccess="$refs.basicLayout.listData()"></editTemp>
+        <delBtn class="inline-16" :data="scope.data.data" @delSuccess="$refs.basicLayout.listData()"  ></delBtn>
       </template>
     </basicLayout>
   </div>

+ 16 - 10
src/HDrpManagement/serveBill/modules/detail.vue

@@ -111,7 +111,7 @@ export default {
     changeDataStructure() {
       let that = this
       this.mainAreaData = [
-        {label:'单号',value:this.mainData.billno ? this.mainData.billno : ''},
+       /* {label:'单号',value:this.mainData.billno ? this.mainData.billno : ''},*/
         {label:'单据日期',value:this.mainData.billdate ? this.mainData.billdate : ''},
         {label:'状态',value:this.mainData.status ? this.mainData.status : '',
           style:function () {
@@ -142,21 +142,27 @@ export default {
             
           }  
         },
-        {label:'经销商编号',value:this.mainData.agentnum ? this.mainData.agentnum : ''},
-        {label:'经销商',value:this.mainData.enterprisename ? this.mainData.enterprisename : ''},
+       /* {label:'经销商编号',value:this.mainData.agentnum ? this.mainData.agentnum : ''},*/
+        {label:'客户',value:this.mainData.enterprisename ? this.mainData.enterprisename : ''},
         {label:'省市县',value:`${this.mainData.province}-${this.mainData.city}-${this.mainData.county}`},
         {label:'地址',value:this.mainData.address ? this.mainData.address : ''},
-        {label:'关联订单',value:this.mainData.sonum ? this.mainData.sonum : ''},
+        {label:'需求服务开始日期',value:this.mainData.begdate ? this.mainData.begdate : ''},
+        {label:'需求服务结束日期',value:this.mainData.enddate ? this.mainData.enddate : ''},
         {label:'服务分类',value:this.mainData.servicetype ? this.mainData.servicetype : ''},
-        {label:'服务联系人',value:this.mainData.scenecontact ? this.mainData.scenecontact : ''},
-        {label:'联系人角色',value:this.mainData.scenecontactrole ? this.mainData.scenecontactrole : ''},
-        {label:'服务联系电话',value:this.mainData.scenecontactphonenumber ? this.mainData.scenecontactphonenumber : ''},
         {label:'应用系统',value:this.mainData.class1 ? this.mainData.class1 : ''},
         {label:'客诉大类',value:this.mainData.class2 ? this.mainData.class2 : ''},
-        {label:'需求服务开始日期',value:this.mainData.begdate ? this.mainData.begdate : ''},
-        {label:'需求服务结束日期',value:this.mainData.enddate ? this.mainData.enddate : ''},
         {label:'申请原因',value:this.mainData.reason ? this.mainData.reason : ''},
-        {label:'备注',value:this.mainData.remarks ? this.mainData.remarks : ''},
+       /*
+        {label:'关联订单',value:this.mainData.sonum ? this.mainData.sonum : ''},
+
+        {label:'服务联系人',value:this.mainData.scenecontact ? this.mainData.scenecontact : ''},
+        {label:'联系人角色',value:this.mainData.scenecontactrole ? this.mainData.scenecontactrole : ''},
+        {label:'服务联系电话',value:this.mainData.scenecontactphonenumber ? this.mainData.scenecontactphonenumber : ''},
+
+
+
+
+        {label:'备注',value:this.mainData.remarks ? this.mainData.remarks : ''},*/
       ]
       this.detailInfo = [
         {

+ 2 - 2
src/HManagement/saleForecastCount/index.vue

@@ -6,7 +6,6 @@
         tableName="saleForecastCountTable" 
         idName="userid" 
         :apiId="{query:20221209163203}"
-        :options="options"
         @listData="list">
         <div slot="custom">
           <div class="inline-24">
@@ -48,7 +47,7 @@
         <div slot="footerLeft" style="font-size:14px">
           总金额:<span style="color:red">{{allCount}}</span>
         </div>
-        <template v-slot:tbList="scope">
+        <template v-slot:tbList="scope"  >
           <div>
             {{scope.data.column.data[[scope.data.column.columnname]]?scope.data.column.data[[scope.data.column.columnname]]:'--'}}
           </div>
@@ -135,6 +134,7 @@ import { log } from '@antv/g2plot/lib/utils'
     mounted () {
       this.querydepartment()
       this.query_hrList()
+      this.$refs.basicLayout.fixRightData = ['outamount']
     }
   }
   

+ 18 - 93
src/HManagement/salesForecastTemplate/modules/product.vue

@@ -34,101 +34,22 @@
       </div>
       <div class="drawer__panel">
         <el-input class="mt-10" style="width:200px" suffix-icon="el-icon-search" size="small" placeholder="搜索" v-model="param.content.where.condition" @keyup.native.enter="listData(param.content.pageNumber = 1)" @clear="listData(param.content.pageNumber = 1)" clearable></el-input>
-        <el-table
-          ref="multipleTable"
-          :data="list"
-          style="width: 100%"
-          size="mini"
-          border>
-        <el-table-column
-            prop="itemno"
-            label="产品编号"
-            width="180">
-        </el-table-column>
-        <el-table-column
-            prop="itemname"
-            label="产品名称"
-            width="180">
-        </el-table-column>
-        <el-table-column
-            label="型号"
-            width="180">
-          <template slot-scope="scope">
-            <p><span>{{scope.row.model}}</span></p>
+        <tableLayout :layout="tablecols" :data="list" :opwidth="200" height="calc(100vh - 550px)" :custom="true" fixedName="outamount" >
+          <template v-slot:customcol="scope">
+            <div v-if="scope.column.columnname == 'marketprice'">
+              <p>{{tool.formatAmount((scope.column.data.marketprice),2)}}</p>
+            </div>
+            <div v-else-if="scope.column.columnname == 'price'">
+              <p>{{tool.formatAmount((scope.column.data.price),2)}}</p>
+            </div>
+            <div v-else-if="scope.column.columnname == 'outamount'">
+              <p>{{tool.formatAmount((scope.column.data.outamount),2)}}</p>
+            </div>
+            <p v-else>{{scope.column.data[scope.column.columnname]}}</p>
           </template>
-        </el-table-column>
-        <el-table-column
-              label="规格"
-              width="180">
-            <template slot-scope="scope">
-              <p><span>{{scope.row.spec}}</span></p>
-            </template>
-        </el-table-column>
-        <el-table-column
-            prop="caliber"
-            label="口径"
-            width="180">
-        </el-table-column>
-        <el-table-column
-            prop="pressure"
-            label="压力"
-            width="180">
-        </el-table-column>
-        <el-table-column
-            prop="material"
-            label="材质"
-            width="180">
-        </el-table-column>
-        <el-table-column
-            prop="brand"
-            label="品牌"
-            width="180">
-          <template slot-scope="scope">
-            <p v-for="(item,index) in scope.row.brand" :key="index">
-              <span style="float: left" v-if="index === scope.row.brand.length -1">{{item?item.brandname+'':'--'}}</span>
-              <span style="float: left" v-else>{{item?item.brandname+',':'--'}}</span>
-            </p>
+          <template v-slot:opreation="scope">
           </template>
-        </el-table-column>
-        <el-table-column
-            prop="itemclass"
-            label="类别"
-            width="180">
-          <template slot-scope="scope">
-            <p v-for="(item,index) in scope.row.itemclass" :key="index">
-              <span style="float: left" v-if="index === scope.row.itemclass.length -1">{{item?item.itemclassname+'':'--'}}</span>
-              <span style="float: left" v-else>{{item?item.itemclassname+',':'--'}}</span>
-            </p>
-          </template>
-        </el-table-column>
-        <el-table-column
-            prop="unitid"
-            label="计量单位"
-            width="100">
-          <template slot-scope="scope">
-            <el-tag size="mini" type="info" effect="plain">{{scope.row.unitname}}/{{scope.row.axunitname}}</el-tag>
-          </template>
-        </el-table-column>
-        <el-table-column
-          label="数量"
-          width="180"
-          fixed="right">
-          <template slot-scope="scope">
-            {{scope.row.outqty}}
-          </template>
-        </el-table-column>
-        <el-table-column
-            prop="marketprice"
-            label="牌价"
-            width="100">
-        </el-table-column>
-        <el-table-column
-            prop="outamount"
-            label="金额"
-            width="100"
-            fixed="right">
-        </el-table-column>
-        </el-table>
+        </tableLayout>
         <div class="container normal-panel flex-align-center flex-between">
           <p v-if="list[0]" class="topTile">金额合计(元):{{list[0].sumamount}}</p>
           <p v-else class="topTile">金额合计(元):0</p>
@@ -157,6 +78,7 @@ export default {
   data () {
     return {
       drawer:false,
+      tablecols:[],
       param:{
         "id": 20220906154703,
         "content": {
@@ -243,6 +165,9 @@ export default {
       })
     }
   },
+  created() {
+    this.tablecols = this.tool.tabelCol(this.$route.name).projectItemTable.tablecols
+  },
   mounted () {
   }
 }

+ 256 - 0
src/HManagement/salesForecastTemplate/modules/productCopy.vue

@@ -0,0 +1,256 @@
+<template>
+  <div>
+    <el-button size="small" type="text" @click="onshow">产品清单</el-button>
+    <el-drawer
+      title="产品清单"
+      :visible.sync="drawer"
+      append-to-body
+      direction="rtl"
+      :show-close="false"
+      size="80%">
+      <div style="border-top:1px solid #eeeeee; padding:20px 16px; margin-bottom:0px">
+        <el-row :gutter="10">
+          <el-col :span="4">
+            <span class="search__label">项目编号:</span>
+            <span class="topTile">{{data.projectnum}}</span>
+          </el-col>
+          <el-col :span="4">
+            <span class="search__label">项目名称:</span>
+            <span class="topTile">{{data.projectname}}</span>
+          </el-col>
+          <el-col :span="4">
+            <span class="search__label">项目类型:</span>
+            <span class="topTile">{{data.projecttype}}</span>
+          </el-col>
+          <el-col :span="8">
+            <span class="search__label">项目地址:</span>
+            <span class="topTile">{{data.address}}</span>
+          </el-col>
+          <el-col :span="4">
+            <span class="search__label">预测金额(元):</span>
+            <span class="topTile">{{data.sumprojectamount}}</span>
+          </el-col>
+        </el-row>
+      </div>
+      <div class="drawer__panel">
+        <el-input class="mt-10" style="width:200px" suffix-icon="el-icon-search" size="small" placeholder="搜索" v-model="param.content.where.condition" @keyup.native.enter="listData(param.content.pageNumber = 1)" @clear="listData(param.content.pageNumber = 1)" clearable></el-input>
+        <el-table
+          ref="multipleTable"
+          :data="list"
+          style="width: 100%"
+          size="mini"
+          border>
+        <el-table-column
+            prop="itemno"
+            label="产品编号"
+            width="180">
+        </el-table-column>
+        <el-table-column
+            prop="itemname"
+            label="产品名称"
+            width="180">
+        </el-table-column>
+        <el-table-column
+            label="型号"
+            width="180">
+          <template slot-scope="scope">
+            <p><span>{{scope.row.model}}</span></p>
+          </template>
+        </el-table-column>
+        <el-table-column
+              label="规格"
+              width="180">
+            <template slot-scope="scope">
+              <p><span>{{scope.row.spec}}</span></p>
+            </template>
+        </el-table-column>
+        <el-table-column
+            prop="caliber"
+            label="口径"
+            width="180">
+        </el-table-column>
+        <el-table-column
+            prop="pressure"
+            label="压力"
+            width="180">
+        </el-table-column>
+        <el-table-column
+            prop="material"
+            label="材质"
+            width="180">
+        </el-table-column>
+        <el-table-column
+            prop="brand"
+            label="品牌"
+            width="180">
+          <template slot-scope="scope">
+            <p v-for="(item,index) in scope.row.brand" :key="index">
+              <span style="float: left" v-if="index === scope.row.brand.length -1">{{item?item.brandname+'':'--'}}</span>
+              <span style="float: left" v-else>{{item?item.brandname+',':'--'}}</span>
+            </p>
+          </template>
+        </el-table-column>
+        <el-table-column
+            prop="itemclass"
+            label="类别"
+            width="180">
+          <template slot-scope="scope">
+            <p v-for="(item,index) in scope.row.itemclass" :key="index">
+              <span style="float: left" v-if="index === scope.row.itemclass.length -1">{{item?item.itemclassname+'':'--'}}</span>
+              <span style="float: left" v-else>{{item?item.itemclassname+',':'--'}}</span>
+            </p>
+          </template>
+        </el-table-column>
+        <el-table-column
+            prop="unitid"
+            label="计量单位"
+            width="100">
+          <template slot-scope="scope">
+            <el-tag size="mini" type="info" effect="plain">{{scope.row.unitname}}/{{scope.row.axunitname}}</el-tag>
+          </template>
+        </el-table-column>
+        <el-table-column
+          label="数量"
+          width="180"
+          fixed="right">
+          <template slot-scope="scope">
+            {{scope.row.outqty}}
+          </template>
+        </el-table-column>
+        <el-table-column
+            prop="marketprice"
+            label="牌价"
+            width="100">
+        </el-table-column>
+        <el-table-column
+            prop="outamount"
+            label="金额"
+            width="100"
+            fixed="right">
+        </el-table-column>
+        </el-table>
+        <div class="container normal-panel flex-align-center flex-between">
+          <p v-if="list[0]" class="topTile">金额合计(元):{{list[0].sumamount}}</p>
+          <p v-else class="topTile">金额合计(元):0</p>
+          <el-pagination
+            background
+            @size-change="handleSizeChange"
+            @current-change="handleCurrentChange"
+            :current-page="currentPage"
+            :page-sizes="[20, 50, 100, 200]"
+            layout="total,sizes, prev, pager, next, jumper"
+            :total="total">
+          </el-pagination>
+        </div>
+      </div>
+    </el-drawer>
+  </div>
+</template>
+
+<script>
+import previewImage from '@/components/previewImage/index.vue'
+export default {
+  props:['id','sa_salesforecastbillid','data'],
+  components:{
+    previewImage
+  },
+  data () {
+    return {
+      drawer:false,
+      param:{
+        "id": 20220906154703,
+        "content": {
+          "sa_salesforecastbillid":'',
+          "where":{
+            "sa_projectid":'',
+            "condition":""
+          }
+        }
+      },
+      list:[],
+      currentPage:0,
+      total:0
+    }
+  },
+  methods:{
+    onshow(){
+      this.drawer = true
+      console.log("接收数据")
+      console.log(this.id,this.sa_salesforecastbillid,this.data)
+      this.listData(this.id)
+    },
+    async listData (sa_projectid) {
+      this.param.content.sa_salesforecastbillid = this.sa_salesforecastbillid
+      this.param.content.where.sa_projectid = sa_projectid
+      const res = await this.$api.requested(this.param)
+      this.list = res.data
+      this.total = res.total
+      this.currentPage = res.pageNumber
+    },
+    handleSizeChange(val) {
+      // console.log(`每页 ${val} 条`);
+      this.param.content.pageSize = val
+      this.listData()
+    },
+    handleCurrentChange(val) {
+      // console.log(`当前页: ${val}`);
+      this.param.content.pageNumber = val
+      this.listData()
+    },
+    async qtyChange () {
+      this.list = this.list.filter(e=>{
+        e.outamount = e.outqty * e.marketprice
+        return e
+      })
+      const res = await this.$api.requested({
+        "id": 20220906155003,
+        "version":1,
+        "content": {
+          "sa_salesforecastmodelid":this.mainData.sa_salesforecastmodelid,
+          "sa_salesforecastbillid":this.$route.query.id,
+          "sa_projectid": this.param.content.where.sa_projectid,
+          "itemclassinfos": this.list.map(e=>{
+            return {
+              "sa_salesforecastid":e.sa_salesforecastid,
+              "itemclassnum": e.itemclassnum,
+              "orderqty": e.orderqty,
+              "orderamount": e.orderamount,
+              "invoiceqty": e.invoiceqty,
+              "invoiceamount": e.invoiceamount,
+              "outqty": e.outqty,
+              "outamount": e.outamount,
+              "itemid":e.itemid
+            }
+          })
+        }
+      })
+      this.tool.showMessage(res,()=>{
+
+      })
+    },
+    async deleteProduct (row) {
+      const res = await this.$api.requested({
+        "id": 20220906155103,
+        "version":1,
+        "content": {
+            "sa_salesforecastid":row.sa_salesforecastid,
+            "sa_projectid":0,
+            "sa_salesforecastbillid":this.$route.query.id
+        }
+      })
+      this.tool.showMessage(res,()=>{
+        this.listData()
+      })
+    }
+  },
+  mounted () {
+  }
+}
+
+</script>
+<style>
+  .topTile{
+    font-size: 14px;
+    color: #666666
+  }
+</style>

+ 1 - 0
src/SDrpManagement/salerPrivatecustomer/detail/modules/addressManage/list.vue

@@ -106,6 +106,7 @@ export default {
     },
     clearData(){
       this.search = ""
+      this.queryClick()
     },
     queryClick(){
       this.params.content.where.condition = this.search

+ 1 - 0
src/SDrpManagement/salerPrivatecustomer/detail/modules/contacts/list.vue

@@ -99,6 +99,7 @@ export default {
     },
     clearData(){
       this.search = ""
+      this.queryClick()
     },
     queryClick(){
       this.params.content.where.condition = this.search

+ 1 - 0
src/SDrpManagement/salerPrivatecustomer/detail/modules/financialInfo/index.vue

@@ -147,6 +147,7 @@ export default {
     },
     clearData(){
       this.search = ""
+      this.queryClick()
     },
     queryClick(){
       this.params.content.where.condition = this.search

+ 32 - 114
src/SManagement/sales_forecast/modules/product.vue

@@ -5,122 +5,26 @@
       <label class="search__label">折扣(%):</label>
       <el-input style="width: 100px;" v-model="discountrate" size="small"   label="默认折扣"  @change="discountrateChange"></el-input>
     </div>
-    <el-table
-      ref="multipleTable"
-      :data="list"
-      style="width: 100%"
-      size="mini"
-      border>
-    <el-table-column
-        prop="itemno"
-        label="产品编号"
-        width="180">
-    </el-table-column>
-    <el-table-column
-        prop="itemname"
-        label="产品名称"
-        width="180">
-    </el-table-column>
-    <el-table-column
-        label="型号"
-        width="180">
-      <template slot-scope="scope">
-        <p><span>{{scope.row.model}}</span></p>
+    <tableLayout :layout="tablecols" :data="list" :opwidth="200" height="calc(100vh - 850px)" :custom="true" fixedName="operation  outamount" >
+      <template v-slot:customcol="scope">
+        <div v-if="scope.column.columnname == 'price'">
+          <el-input :disabled="!checkDateOut" size="mini" v-model="scope.column.data.price" @change="priceChange"></el-input>
+        </div>
+        <div v-else-if="scope.column.columnname == 'outqty'">
+          <el-input-number :disabled="!checkDateOut" :controls="true" :step-strictly="true" size="mini" v-model="scope.column.data.outqty" @change="qtyChange" label="输入数量"></el-input-number>
+        </div>
+        <div v-else-if="scope.column.columnname == 'marketprice'">
+          <p>{{tool.formatAmount((scope.column.data.marketprice),2)}}</p>
+        </div>
+        <div v-else-if="scope.column.columnname == 'outamount'">
+          <p>{{tool.formatAmount((scope.column.data.outamount),2)}}</p>
+        </div>
+        <p v-else>{{scope.column.data[scope.column.columnname]}}</p>
       </template>
-    </el-table-column>
-    <el-table-column
-        label="规格"
-        width="180">
-      <template slot-scope="scope">
-        <p><span>{{scope.row.spec}}</span></p>
+      <template v-slot:opreation="scope">
+        <el-button :disabled="!checkDateOut" type="text" size="small" @click="deleteProduct(scope.data)">删 除</el-button>
       </template>
-    </el-table-column>
-    <el-table-column
-        prop="caliber"
-        label="口径"
-        width="180">
-    </el-table-column>
-    <el-table-column
-        prop="pressure"
-        label="压力"
-        width="180">
-    </el-table-column>
-    <el-table-column
-        prop="material"
-        label="材质"
-        width="180">
-    </el-table-column>
-    <el-table-column
-        prop="brand"
-        label="品牌"
-        width="180">
-      <template slot-scope="scope">
-        <p v-for="(item,index) in scope.row.brand" :key="index">
-          <span style="float: left" v-if="index === scope.row.brand.length -1">{{item?item.brandname+'':'--'}}</span>
-          <span style="float: left" v-else>{{item?item.brandname+',':'--'}}</span>
-        </p>
-      </template>
-    </el-table-column>
-    <el-table-column
-        prop="itemclass"
-        label="类别"
-        width="180">
-      <template slot-scope="scope">
-        <p v-for="(item,index) in scope.row.itemclass" :key="index">
-          <span style="float: left" v-if="index === scope.row.itemclass.length -1">{{item?item.itemclassname+'':'--'}}</span>
-          <span style="float: left" v-else>{{item?item.itemclassname+',':'--'}}</span>
-        </p>
-      </template>
-    </el-table-column>
-    <el-table-column
-        prop="unitid"
-        label="计量单位"
-        width="100">
-      <template slot-scope="scope">
-        <el-tag size="mini" type="info" effect="plain">{{scope.row.unitname}}/{{scope.row.axunitname}}</el-tag>
-      </template>
-    </el-table-column>
-    <el-table-column
-        prop="marketprice"
-        label="牌价"
-        width="100"
-        fixed="right">
-    </el-table-column>
-     <el-table-column
-      label="数量"
-      width="180"
-      fixed="right">
-      <template slot-scope="scope">
-        <el-input-number :disabled="!checkDateOut" :controls="true" :step-strictly="true" size="mini" v-model="scope.row.outqty" @change="qtyChange" label="输入数量"></el-input-number>
-      </template>
-    </el-table-column>
-    <el-table-column
-        prop="price"
-        label="单价"
-        width="100"
-        fixed="right">
-      <template slot-scope="scope">
-        <el-input :disabled="!checkDateOut"  size="mini" v-model="scope.row.price" @change="priceChange" label="输入单价"></el-input>
-      </template>
-    </el-table-column>
-    <el-table-column
-        prop="outamount"
-        label="金额"
-        width="100"
-        fixed="right">
-<!--      <template slot-scope="scope">
-        <el-input :disabled="!checkDateOut" :controls="true" :step-strictly="true" size="mini" v-model="scope.row.outqty" @change="amountChange" label="输入金额"></el-input>
-      </template>-->
-    </el-table-column>
-    <el-table-column
-        label="操作"
-        width="90"
-        fixed="right">
-      <template slot-scope="scope">
-        <el-button :disabled="!checkDateOut" type="text" size="small" @click="deleteProduct(scope.row)">删 除</el-button>
-      </template>
-    </el-table-column>
-    </el-table>
+    </tableLayout>
     <div class="container normal-panel flex-align-center flex-between">
       <p v-if="list[0]">金额合计(元): {{list[0].sumamount}}</p>
       <p v-else>金额合计(元): 0</p>
@@ -158,6 +62,7 @@ export default {
         }
       },
       list:[],
+      tablecols:[],
       currentPage:0,
       total:0,
       checkDateOut:false,
@@ -348,6 +253,15 @@ export default {
       this.tool.showMessage(res,()=>{
         this.listData(this.param.content.where.sa_projectid,this.discountrate)
       })
+    },
+    queryMainData (val) {
+      let date = new Date(this.mainData.periodend)
+      let now = Date.now()
+      if (date.getTime() < now) {
+        this.checkDateOut =  false
+      } else {
+        this.checkDateOut = true
+      }
     }
   },
   watch:{
@@ -361,8 +275,12 @@ export default {
       }
     }
   },
+  created() {
+    this.tablecols = this.tool.tabelCol(this.$route.name).projectItemTable.tablecols
+  },
   mounted () {
     console.log(this.mainData,"mainData")
+    this.queryMainData()
   }
 }
 

+ 371 - 0
src/SManagement/sales_forecast/modules/productCopy.vue

@@ -0,0 +1,371 @@
+<template>
+  <div>
+    <el-input class="mt-10" style="width:200px" prefix-icon="el-icon-search" size="small" placeholder="搜索产品名称" v-model="param.content.where.condition" @keyup.native.enter="search()" @clear="search()" clearable></el-input>
+    <div style="float: right">
+      <label class="search__label">折扣(%):</label>
+      <el-input style="width: 100px;" v-model="discountrate" size="small"   label="默认折扣"  @change="discountrateChange"></el-input>
+    </div>
+    <el-table
+      ref="multipleTable"
+      :data="list"
+      style="width: 100%"
+      size="mini"
+      border>
+    <el-table-column
+        prop="itemname"
+        label="商品名称"
+        width="180">
+    </el-table-column>
+      <el-table-column
+          prop="itemno"
+          label="编码"
+          width="180">
+      </el-table-column>
+    <el-table-column
+        label="型号"
+        width="180">
+      <template slot-scope="scope">
+        <p><span>{{scope.row.model}}</span></p>
+      </template>
+    </el-table-column>
+    <el-table-column
+        label="规格"
+        width="180">
+      <template slot-scope="scope">
+        <p><span>{{scope.row.spec}}</span></p>
+      </template>
+    </el-table-column>
+    <el-table-column
+        prop="caliber"
+        label="口径"
+        width="180">
+    </el-table-column>
+    <el-table-column
+        prop="pressure"
+        label="压力"
+        width="180">
+    </el-table-column>
+    <el-table-column
+        prop="material"
+        label="材质"
+        width="180">
+    </el-table-column>
+    <el-table-column
+        prop="brand"
+        label="品牌"
+        width="180">
+      <template slot-scope="scope">
+        <p v-for="(item,index) in scope.row.brand" :key="index">
+          <span style="float: left" v-if="index === scope.row.brand.length -1">{{item?item.brandname+'':'--'}}</span>
+          <span style="float: left" v-else>{{item?item.brandname+',':'--'}}</span>
+        </p>
+      </template>
+    </el-table-column>
+    <el-table-column
+        prop="itemclass"
+        label="类别"
+        >
+      <template slot-scope="scope">
+        <p v-for="(item,index) in scope.row.itemclass" :key="index">
+          <span style="float: left" v-if="index === scope.row.itemclass.length -1">{{item?item.itemclassname+'':'--'}}</span>
+          <span style="float: left" v-else>{{item?item.itemclassname+',':'--'}}</span>
+        </p>
+      </template>
+    </el-table-column>
+    <el-table-column
+        prop="unitid"
+        label="计量单位"
+        >
+      <template slot-scope="scope">
+        <el-tag size="mini" type="info" effect="plain">{{scope.row.unitname}}/{{scope.row.axunitname}}</el-tag>
+      </template>
+    </el-table-column>
+    <el-table-column
+        prop="marketprice"
+        label="牌价"
+        width="100"
+        >
+    </el-table-column>
+     <el-table-column
+      label="数量"
+      width="180"
+      >
+      <template slot-scope="scope">
+        <el-input-number :disabled="!checkDateOut" :controls="true" :step-strictly="true" size="mini" v-model="scope.row.outqty" @change="qtyChange" label="输入数量"></el-input-number>
+      </template>
+    </el-table-column>
+    <el-table-column
+        prop="price"
+        label="单价"
+        width="100"
+        >
+      <template slot-scope="scope">
+        <el-input :disabled="!checkDateOut"  size="mini" v-model="scope.row.price" @change="priceChange" label="输入单价"></el-input>
+      </template>
+    </el-table-column>
+    <el-table-column
+        prop="outamount"
+        label="金额"
+        width="100"
+        fixed="right">
+<!--      <template slot-scope="scope">
+        <el-input :disabled="!checkDateOut" :controls="true" :step-strictly="true" size="mini" v-model="scope.row.outqty" @change="amountChange" label="输入金额"></el-input>
+      </template>-->
+    </el-table-column>
+    <el-table-column
+        label="操作"
+        width="90"
+        fixed="right">
+      <template slot-scope="scope">
+        <el-button :disabled="!checkDateOut" type="text" size="small" @click="deleteProduct(scope.row)">删 除</el-button>
+      </template>
+    </el-table-column>
+    </el-table>
+    <div class="container normal-panel flex-align-center flex-between">
+      <p v-if="list[0]">金额合计(元): {{list[0].sumamount}}</p>
+      <p v-else>金额合计(元): 0</p>
+      <el-pagination
+        background
+        @size-change="handleSizeChange"
+        @current-change="handleCurrentChange"
+        :current-page="currentPage"
+        :page-sizes="[20, 50, 100, 200]"
+        layout="total,sizes, prev, pager, next, jumper"
+        :total="total">
+      </el-pagination>
+    </div>
+  </div>
+</template>
+
+<script>
+import previewImage from '@/components/previewImage/index.vue'
+export default {
+  props:['id','mainData'],
+  components:{
+    previewImage
+  },
+  data () {
+    return {
+      param:{
+        "id": 20220906154703,
+        "version":1,
+        "content": {
+          "sa_salesforecastbillid":this.$route.query.id,
+          "where":{
+            "sa_projectid":'',
+            "condition":""
+          }
+        }
+      },
+      list:[],
+      currentPage:0,
+      total:0,
+      checkDateOut:false,
+      time:null,
+      discountrate:0
+    }
+  },
+  methods:{
+    async listData (sa_projectid,discountrate) {
+      this.discountrate = discountrate
+      this.param.content.where.sa_projectid = sa_projectid
+      const res = await this.$api.requested(this.param)
+      this.list = res.data
+      this.total = res.total
+      this.currentPage = res.pageNumber
+    },
+    async search () {
+      this.param.content.pageNumber = 1
+      this.listData(this.param.content.where.sa_projectid,this.discountrate)
+    },
+    handleSizeChange(val) {
+      // console.log(`每页 ${val} 条`);
+      this.param.content.pageSize = val
+      this.listData(this.param.content.where.sa_projectid,this.discountrate)
+    },
+    handleCurrentChange(val) {
+      // console.log(`当前页: ${val}`);
+      this.param.content.pageNumber = val
+      this.listData(this.param.content.where.sa_projectid,this.discountrate)
+    },
+    qtyChange () {
+      console.log(this.list)
+      this.list = this.list.filter(e=>{
+        e.outamount = e.outqty * e.price
+        return e
+      })
+      if(this.time !== null){
+        clearTimeout(this.time);
+      }
+      this.time = setTimeout(async () => {
+        console.log(this.list)
+        const res = await this.$api.requested({
+          "id": 20220906155003,
+          "content": {
+            "sa_salesforecastmodelid":this.mainData.sa_salesforecastmodelid,
+            "sa_salesforecastbillid":this.$route.query.id,
+            "sa_projectid": this.param.content.where.sa_projectid,
+            "itemclassinfos": this.list.map(e=>{
+              return {
+                /*"sa_salesforecastid":e.sa_salesforecastid,
+                "itemclassnum": e.itemclassnum,
+                "orderqty": e.orderqty,
+                "orderamount": e.orderamount,
+                "invoiceqty": e.invoiceqty,
+                "invoiceamount": e.invoiceamount,
+                "outqty": e.outqty,
+                "outamount": e.outamount,
+                "itemid":e.itemid*/
+                "sa_salesforecastid":e.sa_salesforecastid,
+                "itemid": e.itemid,
+                "orderqty": e.orderqty,
+                "orderamount": e.orderamount,
+                "invoiceqty": e.invoiceqty,
+                "invoiceamount": e.invoiceamount,
+                "outqty": e.outqty,
+                "price":e.price
+              }
+            })
+          }
+        })
+        console.log(this.param.content.where.sa_projectid)
+        this.listData(this.param.content.where.sa_projectid,this.discountrate)
+        this.$emit('onSuccess',this.param.content.where.sa_projectid)
+        /*this.tool.showMessage(res,()=>{
+          this.listData()
+          this.$emit('onSuccess')
+        })*/
+      },300)
+    },
+    priceChange(){
+      this.list = this.list.filter(e=>{
+        e.outamount = e.outqty * e.price
+        return e
+      })
+      if(this.time !== null){
+        clearTimeout(this.time);
+      }
+      this.time = setTimeout(async () => {
+        console.log(this.list)
+        const res = await this.$api.requested({
+          "id": 20220906155003,
+          "content": {
+            "sa_salesforecastmodelid":this.mainData.sa_salesforecastmodelid,
+            "sa_salesforecastbillid":this.$route.query.id,
+            "sa_projectid": this.param.content.where.sa_projectid,
+            "itemclassinfos": this.list.map(e=>{
+              return {
+                /*"sa_salesforecastid":e.sa_salesforecastid,
+                "itemclassnum": e.itemclassnum,
+                "orderqty": e.orderqty,
+                "orderamount": e.orderamount,
+                "invoiceqty": e.invoiceqty,
+                "invoiceamount": e.invoiceamount,
+                "outqty": e.outqty,
+                "outamount": e.outamount,
+                "itemid":e.itemid*/
+                "sa_salesforecastid":e.sa_salesforecastid,
+                "itemid": e.itemid,
+                "orderqty": e.orderqty,
+                "orderamount": e.orderamount,
+                "invoiceqty": e.invoiceqty,
+                "invoiceamount": e.invoiceamount,
+                "outqty": e.outqty,
+                "price":e.price
+              }
+            })
+          }
+        })
+        console.log(this.param.content.where.sa_projectid)
+        this.listData(this.param.content.where.sa_projectid,this.discountrate)
+        this.$emit('onSuccess',this.param.content.where.sa_projectid)
+        /*this.tool.showMessage(res,()=>{
+          this.listData()
+          this.$emit('onSuccess')
+        })*/
+      },300)
+    },
+    discountrateChange(){
+      if (this.discountrate > 100){
+        this.discountrate = 100
+      }else if(this.discountrate < 0){
+        this.discountrate = 0
+      }else {
+       this.discountrate = Math.round(this.discountrate * 100)/100
+      }
+      this.$emit('discountrateSet',this.discountrate)
+    },
+    /*amountChange (){
+      this.list = this.list.filter(e=>{
+        e.outamount = e.outqty * e.marketprice
+        return e
+      })
+      if(this.time !== null){
+        clearTimeout(this.time);
+      }
+      this.time = setTimeout(async () => {
+        const res = await this.$api.requested({
+          "id": 20220906155003,
+          "version":1,
+          "content": {
+            "sa_salesforecastmodelid":this.mainData.sa_salesforecastmodelid,
+            "sa_salesforecastbillid":this.$route.query.id,
+            "sa_projectid": this.param.content.where.sa_projectid,
+            "itemclassinfos": this.list.map(e=>{
+              return {
+                "sa_salesforecastid":e.sa_salesforecastid,
+                "itemclassnum": e.itemclassnum,
+                "orderqty": e.orderqty,
+                "orderamount": e.orderamount,
+                "invoiceqty": e.invoiceqty,
+                "invoiceamount": e.invoiceamount,
+                "outqty": e.outqty,
+                "outamount": e.outamount,
+                "itemid":e.itemid
+              }
+            })
+          }
+        })
+        console.log(this.param.content.where.sa_projectid)
+        this.listData(this.param.content.where.sa_projectid)
+        this.$emit('onSuccess',this.param.content.where.sa_projectid)
+        /!*this.tool.showMessage(res,()=>{
+          this.listData()
+          this.$emit('onSuccess')
+        })*!/
+      },1000)
+    },*/
+    async deleteProduct (row) {
+      const res = await this.$api.requested({
+        "id": 20220906155103,
+        "version":1,
+        "content": {
+            "sa_salesforecastid":row.sa_salesforecastid,
+            "sa_projectid":0,
+            "sa_salesforecastbillid":this.$route.query.id
+        }
+      })
+      this.tool.showMessage(res,()=>{
+        this.listData(this.param.content.where.sa_projectid,this.discountrate)
+      })
+    }
+  },
+  watch:{
+    mainData (val) {
+      let date = new Date(this.mainData.periodend)
+      let now = Date.now()
+      if (date.getTime() < now) {
+        this.checkDateOut =  false
+      } else {
+        this.checkDateOut = true
+      }
+    }
+  },
+  mounted () {
+    console.log(this.mainData,"mainData")
+  }
+}
+
+</script>
+<style>
+</style>