Prechádzať zdrojové kódy

入库详情根据入库类型查询全部商品

lizhenhao 2 rokov pred
rodič
commit
e925456aab

+ 7 - 0
src/api/materialManagement/WareHouseService.js

@@ -134,4 +134,11 @@ export default class WareHouseService {
       data: {oldTradeName: oldTradeName, tradeName: tradeName}
     })
   }
+  findTradeByTypeId (typeId) {
+    return request({
+      url: '/material/management/wareHouse/findTradeByTypeId',
+      method: 'get',
+      params: {typeId: typeId}
+    })
+  }
 }

+ 5 - 5
src/views/modules/materialManagement/purchase/PurchaseForm.vue

@@ -124,6 +124,11 @@
               <el-input v-model="scope.row.procurementType" @focus="typePullForm(scope.$rowIndex)"></el-input>
             </template>
           </vxe-table-column>
+          <vxe-table-column align="center" field="tradeName" title="商品名称" :edit-render="{}" :rules="[]">
+            <template v-slot:edit="scope">
+              <el-input @change="ifSameValue" v-model="scope.row.tradeName"></el-input>
+            </template>
+          </vxe-table-column>
           <vxe-table-column align="center" field="supplierName" title="供应商" :edit-render="{}" :rules="[{required: true, message:'请选择供应商', trigger:'blur'}]">
             <template v-slot:edit="scope">
               <vxe-pulldown ref="xDown4" transfer>
@@ -154,11 +159,6 @@
               </vxe-pulldown>
             </template>
           </vxe-table-column>
-          <vxe-table-column align="center" field="tradeName" title="商品名称" :edit-render="{}" :rules="[]">
-            <template v-slot:edit="scope">
-              <el-input @change="ifSameValue" v-model="scope.row.tradeName"></el-input>
-            </template>
-          </vxe-table-column>
           <vxe-table-column align="center" field="tradePrice" title="商品单价(元)" :edit-render="{}" :rules="[]">
             <template v-slot:edit="scope">
 <!--              <el-input @change="changeValue" maxlength="15" v-model="scope.row.tradePrice" @keyup.native="scope.row.tradePrice = twoDecimalPlaces(scope.row.tradePrice)"></el-input>-->

+ 15 - 4
src/views/modules/materialManagement/supplier/SupplierList.vue

@@ -21,7 +21,7 @@
       <vxe-toolbar :refresh="{query: refreshList}" custom>
         <template #buttons>
           <el-button v-if="hasPermission('material:supplier:add')" type="primary" size="small" icon="el-icon-plus" @click="add()">新建</el-button>
-          <el-button v-if="hasPermission('material:supplier:del')" type="danger"   size="small" icon="el-icon-delete" @click="del()" :disabled="$refs.supplierTable && $refs.supplierTable.getCheckboxRecords().length === 0" plain>删除</el-button>
+          <el-button v-if="isAdmin" type="danger"   size="small" icon="el-icon-delete" @click="del()" :disabled="$refs.supplierTable && $refs.supplierTable.getCheckboxRecords().length === 0" plain>删除</el-button>
         </template>
       </vxe-toolbar>
       <div style="height: calc(100% - 90px)">
@@ -53,8 +53,8 @@
           <vxe-column min-width="200" align="center" title="创建时间" field="createDate"></vxe-column>
           <vxe-column title="操作" width="150px" fixed="right" align="center">
             <template  slot-scope="scope">
-              <el-button v-if="hasPermission('material:supplier:edit')" type="text"  size="small" @click="edit(scope.row.id)">修改</el-button>
-              <el-button v-if="hasPermission('material:supplier:del')" type="text"   size="small" @click="del(scope.row.id)">删除</el-button>
+              <el-button v-if="(hasPermission('material:supplier:edit')&&$store.state.user.id === scope.row.createBy.id) || isAdmin" type="text"  size="small" @click="edit(scope.row.id)">修改</el-button>
+              <el-button v-if="(hasPermission('material:supplier:del')&&$store.state.user.id === scope.row.createBy.id) || isAdmin" type="text"   size="small" @click="del(scope.row.id)">删除</el-button>
             </template>
           </vxe-column>
         </vxe-table>
@@ -77,6 +77,7 @@
 <script>
   import SupplierForm from './SupplierForm'
   import SupplierService from '@/api/materialManagement/SupplierService'
+  import UserService from '@/api/sys/UserService'
   export default {
     data () {
       return {
@@ -92,12 +93,15 @@
           pageSize: 10,
           orders: []
         },
-        loading: false
+        loading: false,
+        isAdmin: false
       }
     },
     supplierService: null,
+    userService: null,
     created () {
       this.supplierService = new SupplierService()
+      this.userService = new UserService()
     },
     components: {
       SupplierForm
@@ -109,6 +113,12 @@
       this.refreshList()
     },
     methods: {
+      // 查询当前用户是否是管理员用户
+      checkIsAdmin () {
+        this.userService.is().then(({data}) => {
+          this.isAdmin = data
+        })
+      },
       // 新增
       add () {
         this.$refs.supplierForm.init('add', 'false')
@@ -137,6 +147,7 @@
           this.tablePage.total = data.total
           this.loading = false
         })
+        this.checkIsAdmin()
       },
       // 当前页
       currentChangeHandle ({ currentPage, pageSize }) {

+ 72 - 33
src/views/modules/materialManagement/wareHouse/WareHouseAddForm.vue

@@ -4,7 +4,7 @@
       :title="title"
       :close-on-click-modal="false"
       v-dialogDrag
-      width="1300px"
+      width="1500px"
       @close="close"
       @keyup.enter.native="doSubmit"
       :visible.sync="visible">
@@ -161,6 +161,24 @@
                 <el-input v-model="scope.row.wareHouseType" @focus="typePullForm(scope.$rowIndex)"></el-input>
               </template>
             </vxe-table-column>
+            <vxe-table-column min-width="180px" align="center" field="tradeName" title="商品名称" :edit-render="{}">
+              <template v-slot:edit="scope">
+                <vxe-pulldown ref="xDown1" transfer>
+                  <template #default>
+                    <vxe-input v-model="scope.row.tradeName" placeholder="请输入商品名称" maxlength="64"
+                               @focus="focusEvent1(scope.row)"
+                               @input="keyupEvent1(scope.row)"></vxe-input>
+                  </template>
+                  <template #dropdown>
+                    <div class="my-dropdown1">
+                      <div class="list-item1" v-for="item in scope.row.tradeNameData" :key="item.id" @click="selectEvent1(scope.row, item)">
+                        <span>{{ item.tradeName }}</span>
+                      </div>
+                    </div>
+                  </template>
+                </vxe-pulldown>
+              </template>
+            </vxe-table-column>
             <vxe-table-column min-width="100px" align="center" field="supplierName" title="供应商" :edit-render="{}">
               <template v-slot:edit="scope">
                 <vxe-pulldown ref="xDown4" transfer>
@@ -192,12 +210,6 @@
                 </vxe-pulldown>
               </template>
             </vxe-table-column>
-            <vxe-table-column min-width="180px" align="center" field="tradeName" title="商品名称" :edit-render="{}">
-              <template v-slot:edit="scope">
-                <el-input @change="ifSameValue" maxlength="64" v-model="scope.row.tradeName"></el-input>
-              </template>
-            </vxe-table-column>
-
             <vxe-table-column min-width="80px" align="center" field="tradeNumber" title="商品数量" :edit-render="{}">
               <template v-slot:edit="scope">
                 <el-input @change="changeValue2" v-model="scope.row.tradeNumber" @blur="scope.row.tradeNumber = twoDecimalPlaces2(scope.row.tradeNumber)" maxlength="10"></el-input>
@@ -539,19 +551,6 @@
       getProgramForType (rows) {
         this.inputForm.wareHouse[this.indexRow].wareHouseTypeId = rows.id
         this.inputForm.wareHouse[this.indexRow].wareHouseType = rows.name
-        let i = this.inputForm.wareHouse.length
-        for (let j = 0; j < i; j++) {
-          for (let k = j + 1; k < i; k++) {
-            if (this.inputForm.wareHouse[j].wareHouseTypeId === this.inputForm.wareHouse[k].wareHouseTypeId) {
-              if (this.commonJS.isNotEmpty(this.inputForm.wareHouse[j].tradeName) &&
-                this.commonJS.isNotEmpty(this.inputForm.wareHouse[k].tradeName) && this.inputForm.wareHouse[j].tradeName === this.inputForm.wareHouse[k].tradeName) {
-                // parseFloat(item.account).toFixed(2)
-                this.inputForm.wareHouse.splice(k, 1)
-                this.$message.warning(`同种入库类型的商品名称只能输入一条信息!`)
-              }
-            }
-          }
-        }
         // this.inputForm.detailInfos[this.indexRow].procurementType = rows.name
         this.indexRow = ''
         this.$forceUpdate()
@@ -746,6 +745,20 @@
                   return
                 }
               }
+              for (let j = 0; j < i; j++) {
+                for (let k = j + 1; k < i; k++) {
+                  if (this.inputForm.wareHouse[j].wareHouseTypeId === this.inputForm.wareHouse[k].wareHouseTypeId) {
+                    if (this.commonJS.isNotEmpty(this.inputForm.wareHouse[j].tradeName) &&
+                      this.commonJS.isNotEmpty(this.inputForm.wareHouse[k].tradeName) && this.inputForm.wareHouse[j].tradeName === this.inputForm.wareHouse[k].tradeName) {
+                      // parseFloat(item.account).toFixed(2)
+                      // this.inputForm.wareHouse.splice(k, 1)
+                      this.$message.warning(`入库详情中,同种入库类型的商品名称只能输入一条信息`)
+                      this.loading = false
+                      throw new Error('入库详情中,同种入库类型的商品名称只能输入一条信息')
+                    }
+                  }
+                }
+              }
             }
             this.inputForm.files = this.$refs.uploadComponent.getDataList()
             this.wareHouseService.save(this.inputForm).then(({data}) => {
@@ -841,19 +854,6 @@
           isSupplier: this.inputForm.detailInfos[index].isSupplier
         }
         this.inputForm.wareHouse.push(param)
-        let i = this.inputForm.wareHouse.length
-        for (let j = 0; j < i; j++) {
-          for (let k = j + 1; k < i; k++) {
-            if (this.inputForm.wareHouse[j].wareHouseTypeId === this.inputForm.wareHouse[k].wareHouseTypeId) {
-              if (this.commonJS.isNotEmpty(this.inputForm.wareHouse[j].tradeName) &&
-                this.commonJS.isNotEmpty(this.inputForm.wareHouse[k].tradeName) && this.inputForm.wareHouse[j].tradeName === this.inputForm.wareHouse[k].tradeName) {
-                // parseFloat(item.account).toFixed(2)
-                this.inputForm.wareHouse.splice(k, 1)
-                this.$message.warning(`同种入库类型的商品名称只能输入一条信息!`)
-              }
-            }
-          }
-        }
       },
       focusEvent4 (rowIndex) {
         this.$refs.xDown4.showPanel()
@@ -893,6 +893,28 @@
           this.tablePage4.total = data.total
           this.loading4 = false
         })
+      },
+      focusEvent1 (row) {
+        row.tradeNameList = []
+        row.tradeNameData = []
+        if (this.commonJS.isNotEmpty(row.wareHouseTypeId)) {
+          this.wareHouseService.findTradeByTypeId(row.wareHouseTypeId).then(({data}) => {
+            row.tradeNameList = JSON.parse(JSON.stringify(data))
+            row.tradeNameData = JSON.parse(JSON.stringify(data))
+            this.$refs.xDown1.showPanel()
+          }).catch(() => {
+            this.$refs.xDown1.showPanel()
+          })
+        } else {
+          this.$refs.xDown1.showPanel()
+        }
+      },
+      keyupEvent1 (row) {
+        row.tradeNameData = this.commonJS.isNotEmpty(row.tradeName) ? row.tradeNameList.filter(item => item.tradeName.indexOf(row.tradeName) > -1) : row.tradeNameList
+      },
+      selectEvent1 (row, item) {
+        row.tradeName = item.tradeName
+        this.$refs.xDown1.hidePanel()
       }
     }
   }
@@ -905,4 +927,21 @@
   .vxe-pulldown--panel {
     z-index: 9997 !important
   }
+
+  /*.my-dropdown1、.list-item1、.list-item1:hover  为商品名称下拉选择框样式*/
+  .my-dropdown1 {
+    height: 155px;
+    overflow: auto;
+    border-radius: 4px;
+    border: 1px solid #dcdfe6;
+    background-color: #fff;
+  }
+  .list-item1 {
+    line-height: 30px;
+    text-align: center;
+    border-bottom: #c4c7cc73 1px solid;
+  }
+  .list-item1:hover {
+    background-color: #f5f7fa;
+  }
 </style>

+ 2 - 1
src/views/modules/materialManagement/wareHouse/WareHouseHi.vue

@@ -100,6 +100,7 @@
             <vxe-column min-width="100" align="center" field="procurementOffice" title="采购部门" ></vxe-column>
             <vxe-column min-width="100" align="center" field="procurementType" title="采购类型" ></vxe-column>
             <vxe-column min-width="220" align="center" field="tradeName"  title="商品名称" ></vxe-column>
+            <vxe-column min-width="130px" align="center" field="supplierName" title="供应商" ></vxe-column>
             <vxe-column min-width="100" align="center" field="tradePrice" title="商品单价(元)" ></vxe-column>
             <vxe-column min-width="80" align="center" field="tradeNumber" title="商品数量" ></vxe-column>
             <vxe-column min-width="100" align="center" field="priceSum" title="商品总价" ></vxe-column>
@@ -140,8 +141,8 @@
           </vxe-column>
           <vxe-column min-width="100px" align="center" field="wareHouseManOffice" title="入库部门"></vxe-column>
           <vxe-column min-width="100px" align="center" field="wareHouseType" title="入库类型"></vxe-column>
-          <vxe-column min-width="130px" align="center" field="supplierName" title="供应商" ></vxe-column>
           <vxe-column min-width="180px" align="center" field="tradeName" title="商品名称" ></vxe-column>
+          <vxe-column min-width="130px" align="center" field="supplierName" title="供应商" ></vxe-column>
           <vxe-column min-width="80px" align="center" field="tradeNumber" title="商品数量" ></vxe-column>
           <vxe-column min-width="80px" align="center" field="company" title="单位"></vxe-column>
           <vxe-column min-width="80px" align="center" field="tradePrice" title="商品单价(元)" ></vxe-column>

+ 74 - 8
src/views/modules/materialManagement/wareHouse/WareHouseUpdateForm.vue

@@ -90,8 +90,8 @@
             <vxe-column min-width="100" align="center" field="purchaserAgent" title="采购人" ></vxe-column>
             <vxe-column min-width="100" align="center" field="procurementOffice" title="采购部门" ></vxe-column>
             <vxe-column min-width="100" align="center" field="procurementType" title="采购类型" ></vxe-column>
-            <vxe-column min-width="100" align="center" field="supplierName" title="供应商" ></vxe-column>
             <vxe-column min-width="220" align="center" field="tradeName"  title="商品名称" ></vxe-column>
+            <vxe-column min-width="100" align="center" field="supplierName" title="供应商" ></vxe-column>
             <vxe-column min-width="100" align="center" field="tradePrice" title="商品单价(元)" ></vxe-column>
             <vxe-column min-width="80" align="center" field="tradeNumber" title="商品数量" ></vxe-column>
             <vxe-column min-width="100" align="center" field="priceSum" title="商品总价" ></vxe-column>
@@ -132,8 +132,8 @@
           </vxe-column>
           <vxe-column min-width="100px" align="center" field="wareHouseManOffice" title="入库部门"></vxe-column>
           <vxe-column min-width="100px" align="center" field="wareHouseType" title="入库类型"></vxe-column>
-          <vxe-column min-width="150px" align="center" field="supplierName" title="商品名称" ></vxe-column>
           <vxe-column min-width="180px" align="center" field="tradeName" title="商品名称" ></vxe-column>
+          <vxe-column min-width="150px" align="center" field="supplierName" title="供应商" ></vxe-column>
           <vxe-column min-width="80px" align="center" field="tradeNumber" title="商品数量" ></vxe-column>
           <vxe-column min-width="80px" align="center" field="company" title="单位"></vxe-column>
           <vxe-column min-width="80px" align="center" field="tradePrice" title="商品单价(元)" ></vxe-column>
@@ -178,6 +178,26 @@
               <el-input v-model="scope.row.wareHouseType" @focus="typePullForm(scope.$rowIndex)"></el-input>
             </template>
           </vxe-table-column>
+
+          <vxe-table-column min-width="180px" align="center" field="tradeName" title="商品名称" :edit-render="{}" >
+            <template v-slot:edit="scope">
+<!--              <el-input @change="ifSameValue" maxlength="64" v-model="scope.row.tradeName"></el-input>-->
+              <vxe-pulldown ref="xDown1" transfer>
+                <template #default>
+                  <vxe-input v-model="scope.row.tradeName" placeholder="请输入商品名称" maxlength="64"
+                             @focus="focusEvent1(scope.row)"
+                             @input="keyupEvent1(scope.row)"></vxe-input>
+                </template>
+                <template #dropdown>
+                  <div class="my-dropdown1">
+                    <div class="list-item1" v-for="item in scope.row.tradeNameData" :key="item.id" @click="selectEvent1(scope.row, item)">
+                      <span>{{ item.tradeName }}</span>
+                    </div>
+                  </div>
+                </template>
+              </vxe-pulldown>
+            </template>
+          </vxe-table-column>
           <vxe-table-column min-width="100px" align="center" field="supplierName" title="供应商" :edit-render="{}" >
             <template v-slot:edit="scope">
               <vxe-pulldown ref="xDown4" transfer>
@@ -208,12 +228,6 @@
               </vxe-pulldown>
             </template>
           </vxe-table-column>
-          <vxe-table-column min-width="180px" align="center" field="tradeName" title="商品名称" :edit-render="{}" >
-            <template v-slot:edit="scope">
-              <el-input @change="ifSameValue" maxlength="64" v-model="scope.row.tradeName"></el-input>
-            </template>
-          </vxe-table-column>
-
           <vxe-table-column min-width="80px" align="center" field="tradeNumber" title="商品数量" :edit-render="{}">
             <template v-slot:edit="scope">
               <el-input @change="changeValue2" v-model="scope.row.tradeNumber" @blur="scope.row.tradeNumber = twoDecimalPlaces2(scope.row.tradeNumber)" maxlength="10"></el-input>
@@ -712,6 +726,19 @@
                 return
               }
             }
+            // 查询入库详情中是否有 入库类型相同并且商品名称也相同的
+            for (let j = 0; j < i; j++) {
+              for (let k = j + 1; k < i; k++) {
+                if (this.inputForm.wareHouse[j].wareHouseTypeId === this.inputForm.wareHouse[k].wareHouseTypeId) {
+                  if (this.commonJS.isNotEmpty(this.inputForm.wareHouse[j].tradeName) &&
+                    this.commonJS.isNotEmpty(this.inputForm.wareHouse[k].tradeName) && this.inputForm.wareHouse[j].tradeName === this.inputForm.wareHouse[k].tradeName) {
+                    this.$message.warning(`入库详情中,同种入库类型的商品名称只能输入一条信息`)
+                    this.loading = false
+                    throw new Error('入库详情中,同种入库类型的商品名称只能输入一条信息')
+                  }
+                }
+              }
+            }
             this.inputForm.files = this.$refs.uploadComponent.getDataList()
             this.inputForm.status = '2'
             this.wareHouseService.save(this.inputForm).then(({data}) => {
@@ -1064,6 +1091,28 @@
           this.tablePage4.total = data.total
           this.loading4 = false
         })
+      },
+      focusEvent1 (row) {
+        row.tradeNameList = []
+        row.tradeNameData = []
+        if (this.commonJS.isNotEmpty(row.wareHouseTypeId)) {
+          this.wareHouseService.findTradeByTypeId(row.wareHouseTypeId).then(({data}) => {
+            row.tradeNameList = JSON.parse(JSON.stringify(data))
+            row.tradeNameData = JSON.parse(JSON.stringify(data))
+            this.$refs.xDown1.showPanel()
+          }).catch(() => {
+            this.$refs.xDown1.showPanel()
+          })
+        } else {
+          this.$refs.xDown1.showPanel()
+        }
+      },
+      keyupEvent1 (row) {
+        row.tradeNameData = this.commonJS.isNotEmpty(row.tradeName) ? row.tradeNameList.filter(item => item.tradeName.indexOf(row.tradeName) > -1) : row.tradeNameList
+      },
+      selectEvent1 (row, item) {
+        row.tradeName = item.tradeName
+        this.$refs.xDown1.hidePanel()
       }
     }
   }
@@ -1087,4 +1136,21 @@
     /*color: #fff;*/
     font-weight: bold;
   }
+
+  /*.my-dropdown1、.list-item1、.list-item1:hover  为商品名称下拉选择框样式*/
+  .my-dropdown1 {
+    height: 155px;
+    overflow: auto;
+    border-radius: 4px;
+    border: 1px solid #dcdfe6;
+    background-color: #fff;
+  }
+  .list-item1 {
+    line-height: 30px;
+    text-align: center;
+    border-bottom: #c4c7cc73 1px solid;
+  }
+  .list-item1:hover {
+    background-color: #f5f7fa;
+  }
 </style>