Просмотр исходного кода

发货通知单详情列表调整、欠货库存导出

qymljy 2 лет назад
Родитель
Сommit
573f93cd14

+ 2 - 2
src/Form/payvoucher/add.vue

@@ -65,12 +65,12 @@
             </el-col>
             <el-col :span="12">
               <el-form-item label="账户余额:" prop="balance" v-if="form.sa_accountclassid">
-                <el-input v-model="form.balance" placeholder="账户余额"></el-input>
+                <el-input disabled v-model="form.balance" placeholder="账户余额"></el-input>
               </el-form-item>
             </el-col>
             <el-col :span="12">
               <el-form-item label="信用额度:" prop="creditquota" v-if="form.sa_accountclassid">
-                <el-input v-model="form.creditquota" placeholder="信用额度"></el-input>
+                <el-input disabled v-model="form.creditquota" placeholder="信用额度"></el-input>
               </el-form-item>
             </el-col>
             <el-col :span="24">

+ 4 - 1
src/HDrpManagement/Creditbilladj/modules/enterpriseTable/add.vue

@@ -80,7 +80,10 @@
               prop="creditquota"
               label="历史信用额度" >
             <template slot-scope="scope">
-              <el-input type="text" size="small" placeholder="历史额度" v-model.number="scope.row.historyCreditquota"></el-input>
+<!--              <el-input type="text" size="small" placeholder="历史额度" v-model.number="scope.row.historyCreditquota"></el-input>-->
+              <span>
+                {{scope.row.historyCreditquota}}
+              </span>
             </template>
           </el-table-column>
           <el-table-column

+ 11 - 11
src/HDrpManagement/dispatch/details/index.vue

@@ -93,7 +93,7 @@ import defaultInfo from '../modules/defaultInfo.vue'
               switch (that.mainData.STATUS) {
                 case '新建':
                   style = {color:"#000000"}
-                  
+
                   break;
                 case '提交':
                   style = {color:"#d90a0a"}
@@ -143,7 +143,7 @@ import defaultInfo from '../modules/defaultInfo.vue'
         this.queryMainData(this.$route.query.id)
         this.$refs.product && this.$refs.product.listData()
         console.log('触发');
-        
+
         this.$emit('onSuccess')
       },
       onCheck () {
@@ -155,7 +155,7 @@ import defaultInfo from '../modules/defaultInfo.vue'
           const res = await this.$api.requested({
             "id": this.mainData.STATUS === '审核'?20221114135703:20221114135603,
             "version":1,
-            "content": { 
+            "content": {
                 "sa_dispatchid":this.$route.query.id
             }
           })
@@ -166,7 +166,7 @@ import defaultInfo from '../modules/defaultInfo.vue'
           this.$message({
             type: 'info',
             message: '已取消'
-          });          
+          });
         });
       },
       onReCheck() {
@@ -177,7 +177,7 @@ import defaultInfo from '../modules/defaultInfo.vue'
         }).then(async () => {
           const res = await this.$api.requested({
             "id":20221114135803,
-            "content": { 
+            "content": {
               "sa_dispatchid":this.$route.query.id,
               "isrecheck":true
             }
@@ -190,7 +190,7 @@ import defaultInfo from '../modules/defaultInfo.vue'
           this.$message({
             type: 'info',
             message: '已取消'
-          });          
+          });
         });
       },
       async cancelBill () {
@@ -205,7 +205,7 @@ import defaultInfo from '../modules/defaultInfo.vue'
               "sa_dispatchid":this.mainData.sa_dispatchid
             }
           })
-          
+
           this.tool.showMessage(res,()=>{
             this.queryMainData()
           })
@@ -213,7 +213,7 @@ import defaultInfo from '../modules/defaultInfo.vue'
           this.$message({
             type: 'info',
             message: '已取消'
-          });          
+          });
         })
       }
     },
@@ -224,7 +224,7 @@ import defaultInfo from '../modules/defaultInfo.vue'
     }
   }
   </script>
-  
+
   <style scoped>
-  
-  </style>
+
+  </style>

+ 46 - 118
src/HDrpManagement/dispatch/modules/productlist.vue

@@ -6,116 +6,39 @@
           <el-button style="margin-bottom:10px" size="small" type="primary" :disabled="data.STATUS !== '新建'" v-if="type !== 'confirmdate'" @click="drawer = true">{{setcol === 24?'添 加':'取 消'}}</el-button>
           <el-button style="margin-bottom:10px" :disabled="data.STATUS !== '新建' && selection.length == 0" size="small" type="primary" @click="batchDeleteOrderProduct">批量删除</el-button>
         </div>
-    <el-table
-      ref="multipleTable"
-      :data="tableData"
-      height="500px"
-      style="width: 100%;"
-      size="small"
-      stripe
-      border
-      @selection-change="handleSelectionChange">
-      <el-table-column
-        type="selection"
-        width="55">
-      </el-table-column>
-      <el-table-column
-        prop="sonum"
-        width="150"
-        label="订单号"
-      fixed>
-      </el-table-column>
-      <el-table-column
-        prop="itemname"
-        label="品名"
-        width="240"
-        fixed="left">
-      </el-table-column>
-      <el-table-column
-        prop="itemno"
-        label="品号"
-        width="100"
-        fixed="left">
-      </el-table-column>
-       <el-table-column
-        prop="erpitemno"
-        label="erp编码"
-        width="150">
-      </el-table-column>
-      <el-table-column
-        prop="unitname"
-        label="单位"
-        width="90">
-      </el-table-column>
-      <el-table-column
-          prop="qty"
-          label="数量"
-          width="180">
-        <template slot-scope="scope">
-          <el-input-number :controls="true" controls-position='right' v-if="data.STATUS === '新建'" size="mini" v-model="scope.row.qty" label="输入数量" @change="rowChange(scope.row,scope.$index)" :precision="2"></el-input-number>
-          <span v-else>{{scope.row.qty}}</span>
-        </template>
-      </el-table-column>
-      <el-table-column
-        prop="batchno"
-        label="批号"
-        width="180">
-        <template slot-scope="scope">
-          <el-select :disabled="data.STATUS !== '新建'" v-if="scope.row.batchcontrol == 1" v-model="scope.row.batchno" placeholder="请选择" @visible-change="visibleChange(scope.row)" size="mini" @change="rowChange(scope.row,scope.$index)">
-            <el-option
-              v-for="item in options"
-              :key="item.fbatchno"
-              :label="item.fbatchno + ':数量' + item.fqty"
-              :value="item.fbatchno">
-            </el-option>
-          </el-select>
-          <span v-else>{{scope.row.batchno}}</span>
-        </template>
-      </el-table-column>
-      <el-table-column
-        prop="undeliqty"
-        label="未发货数量"
-        width="100px">
-      </el-table-column>
-      <el-table-column
-          label="备注"
-          width="300"
-          prop="remarks">
-        <template slot-scope="scope">
-          <el-input v-if="data.STATUS === '新建'" v-model="scope.row.remarks" placeholder="输入订单备注" size="mini" @change="rowChange(scope.row,scope.$index)"></el-input>
-          <p v-else>{{scope.row.remarks}}</p>
-        </template>
-      </el-table-column>
-      <el-table-column
-        prop="invbalqty"
-        width="120px"
-        label="erp即时库存"
-        fixed="right">
-      </el-table-column>
-      <el-table-column
-        prop="delinvbalqty"
-        width="120px"
-        label="预估库存可用量"
-        fixed="right">
-      </el-table-column>
-      <el-table-column
-        prop="outwarehouseqty"
-        width="120px"
-        label="实际已出库"
-        fixed="right">
-      </el-table-column>
-      <el-table-column label="操作"  width="90" fixed="right">
-        <template slot-scope="scope">
-          <el-button type="text" size="mini" class="inline-16" @click="deleteOrderProduct(scope.row)" :disabled="data.STATUS !== '新建'">删 除</el-button>
-          <el-popconfirm
-            title="确定关闭当前行吗?"
-            @confirm="cancelRow(scope.row)"
-          >
-            <el-button slot="reference" type="text" size="mini" :disabled="data.STATUS !== '复核'">关闭</el-button>
-          </el-popconfirm>
-        </template>
-      </el-table-column>
-    </el-table>
+        <tableLayout :layout="tablecols" checkbox="true"  :data="tableData" :opwidth="200" height="calc(100vh - 550px)" :width="true" :custom="true" fixedName="offerPrice amount" @selectionChange="handleSelectionChange">
+          <template v-slot:customcol="scope">
+            <p v-if="scope.column.columnname == 'qty'">
+              <el-input-number :controls="true" controls-position='right' v-if="data.STATUS === '新建'" size="mini" v-model="scope.column.data.qty" label="输入数量" @change="rowChange(scope.column.data,scope.column.data.$index)" :precision="2"></el-input-number>
+              <span v-else>{{scope.column.data.qty}}</span>
+            </p>
+            <p v-else-if="scope.column.columnname == 'batchno'">
+              <el-select :disabled="data.STATUS !== '新建'" v-if="scope.column.data.batchcontrol == 1" v-model="scope.column.data.batchno" placeholder="请选择" @visible-change="visibleChange(scope.column.data)" size="mini" @change="rowChange(scope.column.data,scope.column.data.$index)">
+                <el-option
+                    v-for="item in options"
+                    :key="item.fbatchno"
+                    :label="item.fbatchno + ':数量' + item.fqty"
+                    :value="item.fbatchno">
+                </el-option>
+              </el-select>
+              <span v-else>{{scope.column.data.batchno}}</span>
+            </p>
+            <p v-else-if="scope.column.columnname == 'remarks'">
+              <el-input v-if="data.STATUS === '新建'" v-model="scope.column.data.remarks" placeholder="输入订单备注" size="mini" @change="rowChange(scope.column.data,scope.column.data.$index)"></el-input>
+              <span v-else>{{scope.column.data.remarks}}</span>
+            </p>
+            <p v-else>{{scope.column.data[scope.column.columnname]}}</p>
+          </template>
+          <template v-slot:opreation="scope">
+            <el-button type="text" size="mini" class="inline-16" @click="deleteOrderProduct(scope.data)" :disabled="data.STATUS !== '新建'">删 除</el-button>
+            <el-popconfirm
+                title="确定关闭当前行吗?"
+                @confirm="cancelRow(scope.data)"
+            >
+              <el-button slot="reference" type="text" size="mini" :disabled="data.STATUS !== '复核'">关闭</el-button>
+            </el-popconfirm>
+          </template>
+        </tableLayout>
     <div style="margin-top:16px;text-align:right">
       <el-pagination
         background
@@ -146,10 +69,11 @@
 </template>
 
 <script>
-import addProduct from '@/template/invoiceCanUseProduct/index.vue'
+import addProduct from '@/template/invoiceCanUseProduct/index1.vue'
+import tableLayout from '@/components/table/index5.vue'
 export default {
   props:['type','data'],
-  components:{addProduct},
+  components:{addProduct,tableLayout},
   data () {
     return {
       tableData:[],
@@ -170,7 +94,8 @@ export default {
       currentPage:0,
       time: null,
       options:[],
-      selection:[]
+      selection:[],
+      tablecols:[],
     }
   },
   methods:{
@@ -181,7 +106,7 @@ export default {
       this.total = res.total
       this.currentPage = res.pageNumber
       console.log(res.data);
-      
+
     },
     handleSizeChange(val) {
       // console.log(`每页 ${val} 条`);
@@ -227,9 +152,9 @@ export default {
         this.$message({
           type: 'info',
           message: '已取消删除'
-        });          
+        });
       });
-      
+
     },
     async updateOrderProduct (val) {
       const res  = await this.$api.requested({
@@ -308,7 +233,7 @@ export default {
         message:res.msg,
         type:'error'
       })
-      
+
     },
     // 批次查询
     async visibleChange (row) {
@@ -340,9 +265,12 @@ export default {
   },
   mounted () {
     this.listData()
+  },
+  created() {
+    this.tablecols = this.tool.tabelCol(this.$route.name).detailsTable.tablecols
   }
 }
 
 </script>
 <style>
-</style>
+</style>

+ 348 - 0
src/HDrpManagement/dispatch/modules/productlistCopy1.vue

@@ -0,0 +1,348 @@
+<template>
+  <div>
+    <el-row :gutter="10">
+      <el-col :span="setcol">
+        <div class="flex-align-center">
+          <el-button style="margin-bottom:10px" size="small" type="primary" :disabled="data.STATUS !== '新建'" v-if="type !== 'confirmdate'" @click="drawer = true">{{setcol === 24?'添 加':'取 消'}}</el-button>
+          <el-button style="margin-bottom:10px" :disabled="data.STATUS !== '新建' && selection.length == 0" size="small" type="primary" @click="batchDeleteOrderProduct">批量删除</el-button>
+        </div>
+    <el-table
+      ref="multipleTable"
+      :data="tableData"
+      height="500px"
+      style="width: 100%;"
+      size="small"
+      stripe
+      border
+      @selection-change="handleSelectionChange">
+      <el-table-column
+        type="selection"
+        width="55">
+      </el-table-column>
+      <el-table-column
+        prop="sonum"
+        width="150"
+        label="订单号"
+      fixed>
+      </el-table-column>
+      <el-table-column
+        prop="itemname"
+        label="品名"
+        width="240"
+        fixed="left">
+      </el-table-column>
+      <el-table-column
+        prop="itemno"
+        label="品号"
+        width="100"
+        fixed="left">
+      </el-table-column>
+       <el-table-column
+        prop="erpitemno"
+        label="erp编码"
+        width="150">
+      </el-table-column>
+      <el-table-column
+        prop="unitname"
+        label="单位"
+        width="90">
+      </el-table-column>
+      <el-table-column
+          prop="qty"
+          label="数量"
+          width="180">
+        <template slot-scope="scope">
+          <el-input-number :controls="true" controls-position='right' v-if="data.STATUS === '新建'" size="mini" v-model="scope.row.qty" label="输入数量" @change="rowChange(scope.row,scope.$index)" :precision="2"></el-input-number>
+          <span v-else>{{scope.row.qty}}</span>
+        </template>
+      </el-table-column>
+      <el-table-column
+        prop="batchno"
+        label="批号"
+        width="180">
+        <template slot-scope="scope">
+          <el-select :disabled="data.STATUS !== '新建'" v-if="scope.row.batchcontrol == 1" v-model="scope.row.batchno" placeholder="请选择" @visible-change="visibleChange(scope.row)" size="mini" @change="rowChange(scope.row,scope.$index)">
+            <el-option
+              v-for="item in options"
+              :key="item.fbatchno"
+              :label="item.fbatchno + ':数量' + item.fqty"
+              :value="item.fbatchno">
+            </el-option>
+          </el-select>
+          <span v-else>{{scope.row.batchno}}</span>
+        </template>
+      </el-table-column>
+      <el-table-column
+        prop="undeliqty"
+        label="未发货数量"
+        width="100px">
+      </el-table-column>
+      <el-table-column
+          label="备注"
+          width="300"
+          prop="remarks">
+        <template slot-scope="scope">
+          <el-input v-if="data.STATUS === '新建'" v-model="scope.row.remarks" placeholder="输入订单备注" size="mini" @change="rowChange(scope.row,scope.$index)"></el-input>
+          <p v-else>{{scope.row.remarks}}</p>
+        </template>
+      </el-table-column>
+      <el-table-column
+        prop="invbalqty"
+        width="120px"
+        label="erp即时库存"
+        fixed="right">
+      </el-table-column>
+      <el-table-column
+        prop="delinvbalqty"
+        width="120px"
+        label="预估库存可用量"
+        fixed="right">
+      </el-table-column>
+      <el-table-column
+        prop="outwarehouseqty"
+        width="120px"
+        label="实际已出库"
+        fixed="right">
+      </el-table-column>
+      <el-table-column label="操作"  width="90" fixed="right">
+        <template slot-scope="scope">
+          <el-button type="text" size="mini" class="inline-16" @click="deleteOrderProduct(scope.row)" :disabled="data.STATUS !== '新建'">删 除</el-button>
+          <el-popconfirm
+            title="确定关闭当前行吗?"
+            @confirm="cancelRow(scope.row)"
+          >
+            <el-button slot="reference" type="text" size="mini" :disabled="data.STATUS !== '复核'">关闭</el-button>
+          </el-popconfirm>
+        </template>
+      </el-table-column>
+    </el-table>
+    <div style="margin-top:16px;text-align:right">
+      <el-pagination
+        background
+        small
+        @size-change="handleSizeChange"
+        @current-change="handleCurrentChange"
+        :current-page="currentPage"
+        :page-size="param.content.pageSize"
+        layout="total, prev, pager, next, jumper"
+        :total="total">
+      </el-pagination>
+    </div>
+      </el-col>
+      <el-col :span="24 - setcol">
+        <el-drawer
+            title="添加产品"
+            :visible.sync="drawer"
+            append-to-body
+            size="80%"
+            direction="rtl">
+          <div class="drawer__panel">
+            <addProduct :drawer="drawer" :data="data" @onConfirm="onConfirm"></addProduct>
+          </div>
+        </el-drawer>
+      </el-col>
+    </el-row>
+  </div>
+</template>
+
+<script>
+import addProduct from '@/template/invoiceCanUseProduct/index.vue'
+export default {
+  props:['type','data'],
+  components:{addProduct},
+  data () {
+    return {
+      tableData:[],
+      drawer:false,
+      setcol:24,
+      param:{
+        "id": 20221115104703,
+        "content": {
+          "sa_orderid": 0,
+          "pageNumber": 1,
+          "pageSize": 100,
+          "where": {
+              "condition": ""
+          }
+        },
+      },
+      total:0,
+      currentPage:0,
+      time: null,
+      options:[],
+      selection:[]
+    }
+  },
+  methods:{
+    async listData () {
+      this.param.content.sa_dispatchid = this.$route.query.id
+      const res = await this.$api.requested(this.param)
+      this.tableData = res.data
+      this.total = res.total
+      this.currentPage = res.pageNumber
+      console.log(res.data);
+      
+    },
+    handleSizeChange(val) {
+      // console.log(`每页 ${val} 条`);
+      this.params.content.pageSize = val
+      this.listData()
+    },
+    handleCurrentChange(val) {
+      // console.log(`当前页: ${val}`);
+      this.params.content.pageNumber = val
+      this.listData()
+    },
+    async deleteOrderProduct (row) {
+      const res = await this.$api.requested({
+        "id": 20221115104803,
+        "content": {
+          "sa_dispatch_itemsids": [row.sa_dispatch_itemsid]
+        },
+      })
+      this.tool.showMessage(res,()=>{
+        this.listData()
+        this.$emit('onSuccess')
+      })
+    },
+    batchDeleteOrderProduct () {
+      this.$confirm('当前选中' + this.selection.length + '条数据,是否确定删除?', '提示', {
+        confirmButtonText: '确定',
+        cancelButtonText: '取消',
+        type: 'warning'
+      }).then(async () => {
+        const res = await this.$api.requested({
+          "id": 20221115104803,
+          "content": {
+            "sa_dispatch_itemsids": this.selection.map(e=>{
+              return e.sa_dispatch_itemsid
+            })
+          },
+        })
+        this.tool.showMessage(res,()=>{
+          this.listData()
+          this.$emit('onSuccess')
+        })
+      }).catch(() => {
+        this.$message({
+          type: 'info',
+          message: '已取消删除'
+        });          
+      });
+      
+    },
+    async updateOrderProduct (val) {
+      const res  = await this.$api.requested({
+        "id": 20221110145302,
+        "content": val
+      })
+    },
+    qtyChange (val,index) {
+      let that = this
+      this.$set(this.tableData,index,val)
+      // console.log(val,this.tableData)
+      // // 防抖
+      if(this.time !== null){
+        clearTimeout(this.time);
+      }
+      this.time = setTimeout(() => {
+        that.updateOrderProduct({
+          "sa_orderitemsid":val.sa_orderitemsid,
+          "sa_orderid":this.$route.query.id,//订单ID
+          "itemid":val.itemid,//产品ID
+          "type":"数量",//调整类型,目前只支持数量
+          "oldvalue":val.qty,//原值
+          "newvalue":val.qty,//调整后值
+          "remarks":val.remarks
+        })
+      },500)
+    },
+    // 订单添加产品
+    async onConfirm (data) {
+      const res = await this.$api.requested({
+        "id": 20221115104603,
+        "content": {
+          "sa_dispatchid": this.$route.query.id, //订单ID
+          "iteminfos":data.map(e=>{
+            e.sa_dispatch_itemsid = 0
+            e.qty=e.undeliqty
+            e.remarks = e.remarks
+            return e
+          })
+        },
+      })
+      this.tool.showMessage(res,()=>{
+        this.drawer = false
+        this.listData()
+        this.$emit('onSuccess')
+      })
+    },
+    rowChange(val,index){
+      let that = this
+      this.$set(this.tableData,index,val)
+      // // 防抖
+      if(this.time !== null){
+        clearTimeout(this.time);
+      }
+      this.time = setTimeout(() => {
+        that.updateOrder({
+          "sa_dispatchid": this.$route.query.id, //订单ID
+          "iteminfos": [{
+            "sa_dispatch_itemsid": val.sa_dispatch_itemsid,//0表示新增
+            "qty": val.qty, //数量
+            "remarks":val.remarks,
+            "batchno":val.batchno
+          }]
+        },()=>{
+          this.listData()
+        })
+      },500)
+    },
+    async updateOrder (val,fn) {
+      const res  = await this.$api.requested({
+        "id": 20221115104603,
+        "content": val
+      })
+      this.$emit('onSuccess')
+      res.code === 1?fn():this.$message({
+        message:res.msg,
+        type:'error'
+      })
+      
+    },
+    // 批次查询
+    async visibleChange (row) {
+      const res = await this.$api.requested({
+        "id": "20230427101303",
+        "content": {
+          "itemnos":[row.itemno]
+        }
+      })
+      this.options = res.data
+    },
+    handleSelectionChange (val) {
+      this.selection = val
+    },
+    async cancelRow (row) {
+      const res = await this.$api.requested({
+        id: 20230522093703,
+        content:{
+          sa_dispatch_itemsids:[row.sa_dispatch_itemsid]
+        }
+      })
+      this.tool.showMessage({
+        code:res.code,
+        msg:res.data[0].errmsg
+      },()=>{
+        this.listData()
+      })
+    }
+  },
+  mounted () {
+    this.listData()
+  }
+}
+
+</script>
+<style>
+</style>

+ 26 - 5
src/HDrpManagement/productStore/index.vue

@@ -1,13 +1,17 @@
 
 <template>
   <div>
-    <basicLayout 
-      ref="list" 
-      tableName="storeList" 
+    <basicLayout
+      ref="list"
+      tableName="storeList"
       :apiId="{query:20230408091703}"
       :autoQuery="false"
       :options="options"
+      :isExport="false"
       :hideSearch="true">
+      <template #titleRight>
+        <el-button type="primary" size="small" @click="onExport" plain>导 出</el-button>
+      </template>
       <template #custom>
         <el-form :inline="true" class="demo-form-inline" size="small">
           <el-form-item label="产品名称">
@@ -27,7 +31,7 @@
           <el-form-item label="经销商信息">
              <el-input v-model="agentinfo" placeholder="输入经销商信息"></el-input>
           </el-form-item>
-          
+
           <el-form-item>
             <el-button type="primary" @click="onSubmit(false)">查询</el-button>
             <!-- <el-button type="primary" @click="onSubmit(true)">一键查询全部</el-button> -->
@@ -108,6 +112,23 @@ export default {
         }
       }
       this.$refs['list'].listData()
+    },
+    async onExport(){
+      const res = await this.$api.requested({
+        "id":"20230408091703",
+        "version":1,
+        "content":{
+          "all":true,
+          "itemclassids":[],
+          "itemname":"",
+          "agentinfo":"",
+          "pageSize":100,
+          "where":{},
+          "itemno":"",
+          "isExport":1
+        }
+      })
+      window.open(res.data[0].url)
     }
   },
   mounted () {
@@ -117,4 +138,4 @@ export default {
 
 </script>
 <style>
-</style>
+</style>

+ 10 - 10
src/components/normal-basic-layout/index.vue

@@ -22,7 +22,7 @@
                 <el-button :type="selection.length === 0?'':'primary'" :disabled="selection.length === 0" size="small" @click="deleteData">删 除</el-button>
               </el-button-group> -->
               <!-- <el-button class="inline-16" size="small" type="primary" plain>导 入</el-button> -->
-              <excel class="inline-16" :tablecols="layout" :param="param" :total="total" :specialKey="specialKey" :excelTitle="routerName"></excel>
+              <excel v-if="isExport !== false" class="inline-16" :tablecols="layout" :param="param" :total="total" :specialKey="specialKey" :excelTitle="routerName"></excel>
               <reportCenter class="inline-16" position="detail" size="small" :data="reportCenterLsit.filter(item => item.type == 'datainfo')" v-if="reportCenterLsit.filter(item => item.type == 'datainfo').length > 0 && systemappid != 163" @onClose="onClose">
                 <template v-slot:print="scope2">
                   <el-button @click="printBtn({},scope2.data)" type="text" size="mini">打 印</el-button>
@@ -51,7 +51,7 @@
              <template v-slot:temp="scope">
               <slot name="tempChild" :data="scope.data"></slot>
             </template>
-            
+
             <template v-slot:customcol="scope">
               <slot :data="scope" name="tbList"></slot>
             </template>
@@ -82,7 +82,7 @@
             </div>
             <slot name="footerLeft"></slot>
           </div>
-          
+
         </div>
       </div>
     </div>
@@ -95,7 +95,7 @@
 import {mapGetters} from 'vuex'
 export default {
   componentName:'normalTable',
-  props:['tableName','idName','tableData','apiId','formPath','oldFormPath','options','autoQuery','detailPath','customTitle','hidePagination','hideSearch','statusHideDetailBtn','specialKey','drawerWidth','tableClassName','fixRightData','fixLeftData'],
+  props:['tableName','idName','tableData','apiId','formPath','oldFormPath','options','autoQuery','detailPath','customTitle','hidePagination','hideSearch','statusHideDetailBtn','specialKey','drawerWidth','tableClassName','fixRightData','fixLeftData','isExport'],
   components:{
     tableTemp: () => import('./modules/table.vue'),
     setColumn: () => import('./modules/setColumn.vue'),
@@ -216,12 +216,12 @@ export default {
           this.listData()
         })
       }).catch((err) => {
-        
+
         console.log(err)
         this.$message({
           type: 'info',
           message: '已取消删除'
-        });          
+        });
       });
     },
     onFixedClick (right,left) {
@@ -259,7 +259,7 @@ export default {
       } else {
         return true
       }
-			
+
 		},
     onHeaderSearch (key,val) {
       this.param.content.pageNumber = 1
@@ -288,7 +288,7 @@ export default {
         }
       })
       this.tool.showMessage(res,() => {
-        window.open(this.tool.getBaseUrl() + res.data + `&${this.idName}=${data[this.idName]}`)  
+        window.open(this.tool.getBaseUrl() + res.data + `&${this.idName}=${data[this.idName]}`)
       })
     },
     clearSearchValue () {
@@ -312,7 +312,7 @@ export default {
     } catch (error) {
       console.log(error)
     }
-   
+
   }
 }
 
@@ -343,4 +343,4 @@ export default {
   color: orange !important;
   flex-direction: row-reverse;
 }
-</style>
+</style>

+ 63 - 0
src/components/table/index5.vue

@@ -0,0 +1,63 @@
+<template>
+  <div>
+    <!-- :header-cell-style="{background:'#EEEEEE',color:'#333'}" -->
+    <el-table ref="table" :row-class-name="tableClassName" highlight-current-row :data="data"  size="mini" :height="height ? height : data.length <= 4?'260px':data.length <= 20?'calc(100vh - 420px)':'calc(100vh - 420px)'"  @row-click="rowClick" style="width:100%;min-height:260px;max-height: calc(100vh - 420px)" :header-cell-style="{height:'40px',color:'#606266',fontWeight:'400',fontSize:'14px'}"
+              :cell-style="{height:'40px',color:'#666666',fontWeight:'400'}" border @selection-change="selectionChange">
+      <el-table-column
+          type="selection"
+          width="35" fixed v-if="checkbox">
+      </el-table-column>
+      <el-table-column v-for="col in layout" :key="col.tablecolid" :prop="col.columnname" :label="col.title" :width="width" :fixed="fixedName ? fixedName.indexOf(col.columnname)!= -1?redirect ? redirect : 'right' :false : false">
+        <template slot-scope="scope">
+          <div class="table-panel">
+            <!-- 自定义表格显示内容 -->
+            <slot v-if="custom" name="customcol" :column="{data:scope.row,columnname:col.columnname}"></slot>
+            <!-- 否则就是默认 -->
+            <span v-else>{{scope.row[col.columnname]}}</span>
+            <!-- 操作结构内容 -->
+            <slot v-if="col.columnname === 'operation'" name="opreation" :data="scope.row"></slot>
+          </div>
+        </template>
+      </el-table-column>
+    </el-table>
+  </div>
+</template>
+
+<script>
+import {mapGetters} from "vuex"
+export default {
+  /*
+    layout:表结构数据;
+    data:表渲染数据;
+    custom:是否启用自定义结构;
+    opwidth:操作列宽度
+  */
+  props:['layout','data','custom','height','fixedName','width','checkbox','redirect'],
+  data () {
+    return {
+      list:[],
+    }
+  },
+  computed:{
+    ...mapGetters({
+      loading:'loading'
+    })
+  },
+  methods:{
+    rowClick (row) {
+      this.$emit('rowClick',row)
+    },
+    tableClassName ({row,rowIndex}) {
+      row.index = rowIndex
+    },
+    selectionChange(row){
+      this.$emit('selectionChange',row)
+    }
+  },
+  mounted () {
+  }
+}
+
+</script>
+<style>
+</style>

+ 122 - 0
src/template/invoiceCanUseProduct/index1.vue

@@ -0,0 +1,122 @@
+<template>
+<div>
+  <div class="flex-align-center flex-between mt-10">
+    <el-input style="width:200px" size="small"  suffix-icon="el-icon-search" v-model="params.content.where.condition" placeholder="品名,编号" @keyup.enter.native="listData(params.content.pageNumber = 1)" @clear="listData(params.content.pageNumber = 1)" clearable></el-input>
+    <el-button type="primary" size="small" :disabled="tableSelectData.length === 0" @click="onConfirm">添加选中产品</el-button>
+  </div>
+  <div>
+    <tableLayout :layout="tablecols" checkbox="true"  :data="tableData" :opwidth="200" height="calc(100vh - 550px)" :width="true" :custom="true" fixedName="offerPrice amount" @selectionChange="selectionChange">
+      <template v-slot:customcol="scope">
+        <p v-if="scope.column.columnname == 'unit'">
+          <el-tag size="mini" type="info" effect="plain">{{scope.column.data.unit}}/{{scope.column.data.auxunit}}</el-tag>
+        </p>
+        <p v-else>{{scope.column.data[scope.column.columnname]}}</p>
+      </template>
+    </tableLayout>
+    <div style="margin-top:16px;text-align:right">
+      <el-pagination
+        background
+        small
+        @size-change="handleSizeChange"
+        @current-change="handleCurrentChange"
+        :current-page="currentPage"
+        :page-size="params.content.pageSize"
+        layout="total, prev, pager, next, jumper"
+        :total="total">
+      </el-pagination>
+    </div>
+  </div>
+</div>
+</template>
+
+<script>
+import uploadFile from '@/components/upload/hw_obs_upload'
+import previewImage from '@/components/previewImage/index'
+import tableLayout from '@/components/table/index5.vue'
+export default {
+  props:['data','drawer'],
+  data () {
+    return {
+      params:{
+        "id": 20221114170003,
+        "content": {
+          "pageSize":9999,
+          "where":{
+            "sa_orderid":'',
+            "condition":""
+          }
+        }
+      },
+      tableSelectData:[],
+      tableData: [],
+      total:0,
+      currentPage:0,
+      tablecols:[],
+    }
+  },
+  components:{
+    uploadFile,
+    previewImage,
+    tableLayout
+  },
+  methods:{
+    async listData () {
+      this.params.content.where.sa_orderid = this.data.sa_orderid == 0 ? '':this.data.sa_orderid
+      this.params.content.sa_dispatchid = this.$route.query.id
+      this.params.content.sys_enterpriseid = this.data.sys_enterpriseid
+      const res = await this.$api.requested(this.params)
+      this.tableData = res.data
+      this.total = res.total
+      this.currentPage = res.pageNumber
+    },
+    handleSizeChange(val) {
+      // console.log(`每页 ${val} 条`);
+      this.params.content.pageSize = val
+      this.listData()
+    },
+    handleCurrentChange(val) {
+      // console.log(`当前页: ${val}`);
+      this.params.content.pageNumber = val
+      this.listData()
+    },
+    selectionChange (val) {
+      this.tableSelectData = val
+    },
+    onConfirm () {
+      this.$emit('onConfirm',this.tableSelectData)
+    },
+    clearSelection () {
+      this.$refs.multipleTable.clearSelection();
+    }
+  },
+  mounted () {
+    this.listData()
+  },
+  created() {
+    this.tablecols = this.tool.tabelCol(this.$route.name).addDetailsTable.tablecols
+  },
+  watch:{
+    drawer (val) {
+      val?this.listData():''
+    }
+  }
+}
+
+</script>
+<style>
+</style>
+<style scoped>
+.produtMag-panel{
+  /* margin: 30px; */
+  padding:0 10px 10px 10px;
+  background: #fff;
+  border-radius:5px;
+  overflow: hidden;
+  border:1px solid rgb(0 0 0 / 5%)
+  /* box-shadow: 0 5px 5px rgb(0 0 0 / 10%);
+  transform: translate3d(0,-2px,0); */
+}
+.image {
+  width:40px;height:40px;margin:0px auto;
+}
+</style>