Procházet zdrojové kódy

添加附件和校验数据功能

songyang před 2 roky
rodič
revize
19654bb35f

+ 2 - 0
src/libs/update-columns/index.js

@@ -142,6 +142,7 @@ export default {
     {updateField: 'skuCode', valueFiled: 'skuCode'},
     {updateField: 'whName', valueFiled: 'whName'},
     {updateField: 'invQty', valueFiled: 'invQty'},
+    {updateField: 'usableQty', valueFiled: 'usableQty'},
   ],
 
   /**
@@ -157,6 +158,7 @@ export default {
     {updateField: 'skuCode', valueFiled: 'skuCode'},
     {updateField: 'oWhName', valueFiled: 'whName'},
     {updateField: 'oInvQty', valueFiled: 'invQty'},
+    {updateField: 'usableQty', valueFiled: 'usableQty'},
     {updateField: 'oWhId', valueFiled: 'whId'},
     {updateField: 'oNonStdCode', valueFiled: 'nonStdCode'},
     {updateField: 'priceInto', valueFiled: 'priceInto'},

+ 34 - 1
src/view/ivt/ivt-check/form.vue

@@ -49,7 +49,7 @@
           <EditTable ref="goodsTable" :data="formData.itemList" showFooter
                      major-field="itemId"
                      control-id="invId"
-                     :new-row-flag="true" :height="tableHeight+65"
+                     :new-row-flag="true" :height="tableHeight"
                      :operate-flag="formData.whId==null?false:true"
                      :newRowFlag="formData.whId==null?false:true"
                      @changeValue="changeValueLoss"
@@ -57,6 +57,13 @@
           ></EditTable>
         </div>
       </DkPanel>
+      <!--附件-->
+      <DkPanel prop="files">
+        <div id="search-cond-div-files-info" ref="search-cond-div-files-info" slot="content">
+          <DkPicWall v-model="formData.annexPaths"
+                     :table="$config.tables.check" :accept="$config.uploadFileConfig.acceptPicType"></DkPicWall>
+        </div>
+      </DkPanel>
     </DkCollapse>
     <!--      下部分按钮区域-->
     <DkSaveButton ref="saveButton" :loading="loading" @save="save(true)" @close="close">
@@ -91,6 +98,7 @@ export default {
         whId: null,
         whName: null,
         flgLock: null,
+        annexPaths: null, //附件
         remarks: null,
         itemList: [],
         deleteItemList:[],// 删除明细
@@ -368,6 +376,31 @@ export default {
       }
     },
 
+    /**
+     * @desc   : 校验数据
+     * @author : 宋扬
+     * @date   : 2024/4/7 11:10
+     */
+    validData(val){
+      let itemTable = this.$refs['goodsTable'].getTableDataFilter();
+      for (let it of itemTable) {
+        if(val){
+          if (it.balanceQty > 0 && (!it.priceInto || it.priceInto === '' || it.priceInto===0)) {
+            this.$Message.warning(this.$t('W_042', {'param': '盘盈时入库单价'}))
+            return false;
+          }else if(it.balanceQty < 0){
+            if(!it.dutyStaff){
+              this.$Message.warning(this.$t('W_042', {'param': '负责人'}))
+              return false;
+            }else if(!it.lossReason){
+              this.$Message.warning(this.$t('W_042', {'param': '盘亏原因'}))
+              return false;
+            }
+          }
+        }
+      }
+    }
+
   },
   /**
    * @desc   : 在实例创建完成后被立即同步调用

+ 48 - 3
src/view/ivt/ivt-check/index.vue

@@ -36,7 +36,7 @@
                  ref="table-select"
                  :data="tableData"
                  showFooter
-                 :height="this.tableHeight * split"
+                 :height="this.tableHeight * split - 35"
                  primaryKey="checkId"
                  @pageChange="pageSizeChange"
                  :page-total="pageInfo.total"
@@ -57,8 +57,10 @@
           <DkTableColumn field="remarks"/>
     </DkTable>
       </div>
-      <!-- 货物明细-->
       <div slot="bottom">
+        <DkTabs v-model="detailModel" :options="detailOptions" @on-click="detailTabsClick"></DkTabs>
+        <!--盘点明细-->
+        <div v-show="visGoodsDetailFlag">
         <DkTable :id="'table-'+$options.name" ref="detail-select" :data="goodsDetailData" showFooter
                  :height="this.tableHeight * split" primaryKey="itemId" name="table">
           <!-- 商品型号-->
@@ -92,6 +94,15 @@
           <DkTableColumn field="flgValid" type="switch"/>
           <DkTableColumn field="remarks"/>
         </DkTable>
+        </div>
+        <!--附件-->
+        <div v-show="visFilesDetailFlag">
+          <DkTable :pageFlag="false" :pageTotalFlag="false" :id="'table-'+$options.name"
+                   name="table" ref="file-select" :data="tableDataDetail_files" :height="this.tableHeight * (1-split)">
+            <DkTableColumn field="name" :title="$t('fileName')" />
+            <DkTableColumn field="path" :imageUrl="$config.imgUrl" type="image" :title="$t('yuLan')"/>
+          </DkTable>
+        </div>
       </div>
     </DkSplit>>
   </div>
@@ -105,10 +116,17 @@ export default {
   data() {
     let self = this
     return {
+      detailModel: 'goodsDetailData',
+      detailOptions: [{label: self.$t('freezeGoodsDetail'), name: 'freezeGoodsDetail'}, //货物明细
+        {label: self.$t('filesDetail'), name: 'filesDetail'}, //附件明细
+      ],
       tableData: [],
       goodsDetailData: [],
+      tableDataDetail_files: [],  // 用于存放附件
       // 是否显示编辑按钮
       flgEdit: true,
+      visGoodsDetailFlag: true,
+      visFilesDetailFlag: false,
       searchContent:
         [
           {
@@ -268,8 +286,35 @@ export default {
         if (res.code === this.$config.SUCCESS_CODE) {
           this.goodsDetailData = res.data.list;
         }
-        this.loading = false
       })
+      //附件
+      this.tableDataDetail_files = row.annexPaths
+      this.loading = false
+    },
+
+    /**
+     * @desc   : 点击Tab进行切换
+     * @author : 宋扬
+     * @date   : 2024/4/3 16:24
+     */
+    detailTabsClick(val) {
+      console.log('ttt',val,this.visGoodsDetailFlag,this.visFilesDetailFlag)
+      if (val === 'freezeGoodsDetail') {
+        this.visGoodsDetailFlag = true
+        this.visFilesDetailFlag = false
+      } else if (val === 'filesDetail') {
+        this.visGoodsDetailFlag = false
+        this.visFilesDetailFlag = true
+      }
+    },
+
+    /**
+     * @desc   : 打开附件
+     * @author : 宋扬
+     * @date   : 2024/4/3 16:25
+     */
+    openFile(row) {
+      window.open(this.$config.imgUrl + row.url)
     },
 
   },

+ 25 - 1
src/view/ivt/ivt-freeze/form.vue

@@ -70,7 +70,6 @@
           ></EditTable>
         </div>
       </DkPanel>
-
       <!--附件-->
       <DkPanel prop="files">
         <div id="search-cond-div-files-info" ref="search-cond-div-files-info" slot="content">
@@ -143,6 +142,12 @@ export default {
           field: 'invQty',
           type: 'disabled',
         },
+        //可用数量
+        {
+          field: 'usableQty',
+          type: 'disabled',
+        },
+
         //冻结数量
         {
           field: 'freezeQty',
@@ -334,6 +339,25 @@ export default {
         return true;
       }
     },
+
+    /**
+     * @desc   : 校验数据
+     * @author : 宋扬
+     * @date   : 2024/4/7 11:32
+     */
+    validData(){
+      let itemTable = this.$refs['goodsTable'].getTableDataFilter();
+      for (let it of itemTable)
+      {
+        if (this.type === this.$config.formMode.add && it.usableQty<it.freezeQty){
+          this.$Message.warning(this.$t('W_008', {'param1': '冻结量'},{'param2':'可用量'}))
+          return false;
+        }else if(this.type === this.$config.formMode.unFreeze && it.unfreezeQty<it.surplusQty ){
+          this.$Message.warning(this.$t('W_008', {'param1': '解冻量'},{'param2':'剩余解冻量'}))
+          return false;
+        }
+      }
+    }
   },
   /**
    * @desc   : 在实例创建完成后被立即同步调用

+ 5 - 6
src/view/ivt/ivt-freeze/index.vue

@@ -32,7 +32,7 @@
                  ref="table-select"
                  :data="tableData"
                  showFooter
-                 :height="this.tableHeight * split"
+                 :height="this.tableHeight * split - 35 "
                  primaryKey="freezeId"
                  @pageChange="pageSizeChange"
                  :page-total="pageInfo.total"
@@ -101,7 +101,7 @@ export default {
   data() {
     let self = this
     return {
-      detailModel: 'goodsDetail',
+      detailModel: 'goodsDetailData',
       detailOptions: [{label: self.$t('freezeGoodsDetail'), name: 'freezeGoodsDetail'}, //货物明细
         {label: self.$t('filesDetail'), name: 'filesDetail'}, //附件明细
       ],
@@ -284,10 +284,10 @@ export default {
         if (res.code === this.$config.SUCCESS_CODE) {
           this.goodsDetailData = res.data.list;
         }
-        this.loading = false
       })
       //附件
       this.tableDataDetail_files = row.annexPaths
+      this.loading = false
     },
 
     /**
@@ -296,13 +296,12 @@ export default {
      * @date   : 2024/4/3 16:24
      */
     detailTabsClick(val) {
-      if (val === 'goodsDetail') {
+      console.log('ttt',val,this.visGoodsDetailFlag,this.visFilesDetailFlag)
+      if (val === 'freezeGoodsDetail') {
         this.visGoodsDetailFlag = true
-        this.visCollectionDetailFlag = false
         this.visFilesDetailFlag = false
       } else if (val === 'filesDetail') {
         this.visGoodsDetailFlag = false
-        this.visCollectionDetailFlag = false
         this.visFilesDetailFlag = true
       }
     },

+ 36 - 0
src/view/ivt/ivt-transfer/form.vue

@@ -62,6 +62,13 @@
           ></EditTable>
         </div>
       </DkPanel>
+      <!--附件-->
+      <DkPanel prop="files">
+        <div id="search-cond-div-files-info" ref="search-cond-div-files-info" slot="content">
+          <DkPicWall v-model="formData.annexPaths"
+                     :table="$config.tables.transfer" :accept="$config.uploadFileConfig.acceptPicType"></DkPicWall>
+        </div>
+      </DkPanel>
     </DkCollapse>
     <!--      下部分按钮区域-->
     <DkSaveButton ref="saveButton" :loading="loading" @save="save(true)" @close="close"/>
@@ -94,6 +101,7 @@ export default {
         whName: null,
         oNonStdCode:null,
         nonStdCode:null,
+        annexPaths: null, //附件
         remarks: null,
         itemList: [],
       },
@@ -129,6 +137,11 @@ export default {
           field: 'oInvQty',
           type: 'disabled',
         },
+        //原库存可用数量
+        {
+          field: 'usableQty',
+          type: 'disabled',
+        },
         //目标仓库
         {
           field: 'whName',
@@ -204,6 +217,11 @@ export default {
           field: 'oInvQty',
           type: 'disabled',
         },
+        //原库存可用数量
+        {
+          field: 'usableQty',
+          type: 'disabled',
+        },
         //原非标号
         {
           field: 'oNonStdCode',
@@ -398,6 +416,24 @@ export default {
       }
     },
 
+    /**
+     * @desc   : 校验数据
+     * @author : 宋扬
+     * @date   : 2024/4/7 13:10
+     */
+    validData(){
+      let itemTable = this.$refs['goodsTable'].getTableDataFilter();
+      for (let it of itemTable)
+      {
+        if ( it.usableQty<it.transferQty){
+          this.$Message.warning(this.$t('W_008', {'param1': '调整量'},{'param2':'可用量'}))
+          return false;
+        }
+      }
+    },
+
+
+
   },
   /**
    * @desc   : 在实例创建完成后被立即同步调用

+ 48 - 3
src/view/ivt/ivt-transfer/index.vue

@@ -36,7 +36,7 @@
                  ref="table-select"
                  :data="tableData"
                  showFooter
-                 :height="this.tableHeight * split"
+                 :height="this.tableHeight * split - 35 "
                  primaryKey="transferId"
                  @pageChange="pageSizeChange"
                  :page-total="pageInfo.total"
@@ -60,8 +60,10 @@
           <DkTableColumn field="remarks"/>
         </DkTable>
       </div>
-      <!-- 货物明细-->
       <div slot="bottom">
+        <DkTabs v-model="detailModel" :options="detailOptions" @on-click="detailTabsClick"></DkTabs>
+        <!-- 调整明细-->
+        <div v-show="visGoodsDetailFlag">
         <DkTable :id="'table-'+$options.name" ref="detail-select" :data="goodsDetailData" showFooter
                  :height="this.tableHeight * split" primaryKey="itemId" name="table">
           <!-- 商品型号-->
@@ -85,6 +87,15 @@
           <DkTableColumn field="flgValid" type="switch"/>
           <DkTableColumn field="remarks"/>
         </DkTable>
+        </div>
+        <!--附件-->
+        <div v-show="visFilesDetailFlag">
+          <DkTable :pageFlag="false" :pageTotalFlag="false" :id="'table-'+$options.name"
+                   name="table" ref="file-select" :data="tableDataDetail_files" :height="this.tableHeight * (1-split)">
+            <DkTableColumn field="name" :title="$t('fileName')" />
+            <DkTableColumn field="path" :imageUrl="$config.imgUrl" type="image" :title="$t('yuLan')"/>
+          </DkTable>
+        </div>
       </div>
     </DkSplit>
   </div>
@@ -99,8 +110,15 @@ export default {
   data() {
     let self = this
     return {
+      detailModel: 'goodsDetailData',
+      detailOptions: [{label: self.$t('freezeGoodsDetail'), name: 'freezeGoodsDetail'}, //货物明细
+        {label: self.$t('filesDetail'), name: 'filesDetail'}, //附件明细
+      ],
       tableData: [],
       goodsDetailData: [],
+      tableDataDetail_files: [],  // 用于存放附件
+      visGoodsDetailFlag: true,
+      visFilesDetailFlag: false,
       searchContent:
         [
           {
@@ -256,8 +274,35 @@ export default {
         if (res.code === this.$config.SUCCESS_CODE) {
           this.goodsDetailData = res.data.list;
         }
-        this.loading = false
       })
+      //附件
+      this.tableDataDetail_files = row.annexPaths
+      this.loading = false
+    },
+
+    /**
+     * @desc   : 点击Tab进行切换
+     * @author : 宋扬
+     * @date   : 2024/4/3 16:24
+     */
+    detailTabsClick(val) {
+      console.log('ttt',val,this.visGoodsDetailFlag,this.visFilesDetailFlag)
+      if (val === 'freezeGoodsDetail') {
+        this.visGoodsDetailFlag = true
+        this.visFilesDetailFlag = false
+      } else if (val === 'filesDetail') {
+        this.visGoodsDetailFlag = false
+        this.visFilesDetailFlag = true
+      }
+    },
+
+    /**
+     * @desc   : 打开附件
+     * @author : 宋扬
+     * @date   : 2024/4/3 16:25
+     */
+    openFile(row) {
+      window.open(this.$config.imgUrl + row.url)
     },
   },
   created() {