Browse Source

1.规格型号列无值且搜索不生效
2.部分搜索/上下架,界面卡顿
3.库比森销售订单没有运费
4.出库工单-待出库,删除按钮文字修改“撤销生成发货单”
5.添加商品,取消默认全选
6.出库工单,页脚工单数量计数错误
7.编辑状态下,商品订单备注可以编辑
8.发货数量之和不能超过订单数量
9.余额抵扣和应结日期去除
10.出库工单,清空搜索按钮功能修改
11.销售数量可以比库存数量多
12.状态搜索下拉框缺少两个状态值
13.发货数量为空时,提示信息修改
14.已发货或部分发货订单,不可撤销生成确认
15.出库工单 发货数量必须大于0
16.出库工单-待出库,出库数量不要合计
17.销售订单 出库完成以后 销售退货按钮不显示
21.全局路由拦截 新加重复tabs标签不允许跳转

Qukatie 2 months ago
parent
commit
14c55a77d2

+ 3 - 0
src/main.js

@@ -28,6 +28,7 @@ import uploadFile from './components/uploadFile/index';
 import {
     getWorkDicts
 } from '@/api/system/dictbiz'
+import { validatenull } from "@/util/validate";
 import './util/directives.js'
 import Avue from '@smallwei/avue';
 import '@smallwei/avue/lib/index.css';
@@ -81,6 +82,8 @@ Object.keys(urls).forEach(key => {
 Vue.prototype.website = website;
 // 业务字典
 Vue.prototype.getWorkDicts = getWorkDicts
+//判断是否为空
+Vue.prototype.validatenull=validatenull
 // 动态加载阿里云字体库
 iconfontVersion.forEach(ele => {
     loadStyle(iconfontUrl.replace('$key', ele));

+ 25 - 6
src/permission.js

@@ -4,26 +4,39 @@
  */
 import router from './router/router'
 import store from './store'
-import {validatenull} from '@/util/validate'
-import {getToken} from '@/util/auth'
+import { validatenull } from '@/util/validate'
+import { getToken } from '@/util/auth'
 import NProgress from 'nprogress' // progress bar
 import 'nprogress/nprogress.css' // progress bar style
-NProgress.configure({showSpinner: false});
+NProgress.configure({ showSpinner: false });
 const lockPage = store.getters.website.lockPage; //锁屏页
+import {
+  getStore
+} from '@/util/store'
+import { MessageBox } from 'element-ui';
 router.beforeEach((to, from, next) => {
+  // if (lastRoute && 
+  //     to.path === lastRoute.path && 
+  //     JSON.stringify(to.query) === JSON.stringify(lastRoute.query) &&
+  //     JSON.stringify(to.params) === JSON.stringify(lastRoute.params)) {
+  //   // 重复路由,阻止跳转
+  //   console.log('重复路由跳转已被阻止:', to.path)
+  //   return
+  // }
+  // 更新上一次路由信息
   const meta = to.meta || {};
   const isMenu = meta.menu === undefined ? to.query.menu : meta.menu;
   store.commit('SET_IS_MENU', isMenu === undefined);
   if (getToken()) {
     if (store.getters.isLock && to.path !== lockPage) { //如果系统激活锁屏,全部跳转到锁屏页
-      next({path: lockPage})
+      next({ path: lockPage })
     } else if (to.path === '/login') { //如果登录成功访问登录页跳转到主页
-      next({path: '/'})
+      next({ path: '/' })
     } else {
       //如果用户信息为空则获取用户信息,获取用户信息失败,跳转到登录页
       if (store.getters.token.length === 0) {
         store.dispatch('FedLogOut').then(() => {
-          next({path: '/login'})
+          next({ path: '/login' })
         })
       } else {
         const value = to.query.src || to.fullPath;
@@ -48,6 +61,12 @@ router.beforeEach((to, from, next) => {
             })(),
             group: router.$avueRouter.group || []
           });
+          let tagList = getStore({
+            name: 'tagList'
+          })
+          if (tagList.filter(item => item.label == to.name).length > 1) {
+            return MessageBox.alert(`请关闭重复的${to.name}标签,否则无法进行操作!`,'警告', { type: 'error' });
+          }
         }
         next()
       }

+ 7 - 3
src/router/axios.js

@@ -40,8 +40,8 @@ axios.interceptors.request.use(config => {
   if (getToken() && !isToken) {
     config.headers[website.tokenHeader] = 'bearer ' + getToken()
   }
-    //安全请求header
-    config.headers['Blade-Requested-With'] = 'BladeHttpRequest';
+  //安全请求header
+  config.headers['Blade-Requested-With'] = 'BladeHttpRequest';
   //headers中配置text请求
   if (config.text === true) {
     config.headers["Content-Type"] = "text/plain";
@@ -82,7 +82,11 @@ axios.interceptors.response.use(res => {
   //如果是401则跳转到登录页面
   if (status === 401) store.dispatch('FedLogOut').then(() => router.push({ path: '/login' }));
   if (status === 601) {
-      return res
+     Message({
+      message: message,
+      type: 'error'
+    });
+    return Promise.reject(new Error(message))
   }
   // 如果请求为非200否者默认统一处理
   if (status !== 200) {

+ 1 - 1
src/router/views/index.js

@@ -558,7 +558,7 @@ export default [
         hidden: true,
         children: [{
             path: '/inventory/detail',
-            name: '库存查询',
+            name: '明细账',
             meta: {
                 i18n: '/inventory/detail',
                 keepAlive: true,

+ 4 - 2
src/store/modules/tags.js

@@ -3,10 +3,11 @@ import {
   getStore
 } from '@/util/store'
 import {
-  diff
+  diff, tabsDiff
 } from '@/util/util'
 import website from '@/config/website'
-import {delTabsKey,delAllTabsKey} from '@/util/keyData'
+import { delTabsKey, delAllTabsKey } from '@/util/keyData'
+import { MessageBox } from 'element-ui';
 const isFirstPage = website.isFirstPage;
 const tagWel = website.fistPage;
 const tagObj = {
@@ -53,6 +54,7 @@ const navs = {
         content: state.tag
       })
       if (state.tagList.some(ele => diff(ele, action))) return
+      // if(state.tagList.some(ele => tabsDiff(ele, action))) return MessageBox.alert(`存在重复的标签,请关闭${action.label}再进行操作`,'警告', { type: 'error' });
       state.tagList.push(action)
       setFistTag(state.tagList);
       setStore({

+ 10 - 1
src/util/util.js

@@ -1,4 +1,4 @@
-import {validatenull} from './validate'
+import { validatenull } from './validate'
 //表单序列化
 export const serialize = data => {
   let list = [];
@@ -222,6 +222,15 @@ export const diff = (obj1, obj2) => {
   return true;
 }
 /**
+ * 标签tabs是否相等
+ */
+export const tabsDiff = (obj1, obj2) => {
+  if (obj1.label == obj2.label) {
+    return true;
+  }
+  return false
+}
+/**
  * 根据字典的value显示label
  */
 export const findByvalue = (dic, value) => {

+ 24 - 30
src/views/inventory/index.vue

@@ -203,7 +203,7 @@ export default {
           },
           {
             label: "规格型号",
-            prop: "typeno",
+            prop: "typeNo",
             search: true,
             overHidden: true,
             width: 100,
@@ -266,18 +266,6 @@ export default {
             width: 100,
           },
           {
-            label: "结余数量(融资)",
-            prop: "balanceQuantityFinancing",
-            overHidden: true,
-            width: 120,
-          },
-          {
-            label: "结余数量(自有)",
-            prop: "balanceQuantityHave",
-            overHidden: true,
-            width: 120,
-          },
-          {
             label: "库存单价",
             prop: "inventoryCostPrice",
             overHidden: true,
@@ -670,22 +658,29 @@ export default {
     },
     //点击可用库存打开
     storeInventoryOpen(row) {
-      console.log(this.$store.getters.inventoryAccount);
-      if (this.$store.getters.inventoryAccount) {
-        this.$alert("明细账已存在,请保存关闭明细账再进行操作", "温馨提示", {
-          confirmButtonText: "确定",
-          type: "warning",
-          callback: (action) => {
-            console.log(action);
-          },
-        });
-      } else {
-        console.log(row);
-        this.params.corpId = row.corpId;
-        this.params.itemId = row.goodsId;
-        this.params.storageId = row.storageId;
-        this.$router.$avueRouter.closeTag("/tirePartsMall/inventory/detail");
-        this.$router.push({
+      // if (this.$store.getters.tagList.filter(item=>item.value.includes("/inventory/detail")).length>0) {
+      //   this.$alert("明细账已存在,请关闭明细账再进行操作", "温馨提示", {
+      //     confirmButtonText: "确定",
+      //     type: "warning",
+      //     callback: (action) => {
+      //       console.log(action);
+      //     },
+      //   });
+      // } else {
+      //   this.params.corpId = row.corpId;
+      //   this.params.itemId = row.goodsId;
+      //   this.params.storageId = row.storageId;
+      //   this.$router.$avueRouter.closeTag("/inventory/detail");
+      //   this.$router.push({
+      //     path: "/inventory/detail",
+      //     query: {
+      //       stockId: row.storageId,
+      //       goodsId: row.goodsId,
+      //       dot: row.dot,
+      //     },
+      //   });
+      // }
+      this.$router.push({
           path: "/inventory/detail",
           query: {
             stockId: row.storageId,
@@ -693,7 +688,6 @@ export default {
             dot: row.dot,
           },
         });
-      }
     },
   },
 };

+ 9 - 10
src/views/listingManagement/index.vue

@@ -48,7 +48,7 @@
             </template>
             <template slot-scope="{ row, index }" slot="priceOne">
               <el-input-number
-                v-if="row.upAndDownShelves == 0"
+                v-if="row.upAndDownShelves == 0&&!loading"
                 v-model="row.priceOne"
                 label="请输入售价"
                 :controls="false"
@@ -60,7 +60,7 @@
             </template>
             <template slot-scope="{ row, index }" slot="priceTwo">
               <el-input-number
-                v-if="row.upAndDownShelves == 0"
+                v-if="row.upAndDownShelves == 0&&!loading"
                 v-model="row.priceTwo"
                 label="请输入售价"
                 :controls="false"
@@ -72,7 +72,7 @@
             </template>
             <template slot-scope="{ row, index }" slot="priceThree">
               <el-input-number
-                v-if="row.upAndDownShelves == 0"
+                v-if="row.upAndDownShelves == 0&&!loading"
                 v-model="row.priceThree"
                 label="请输入售价"
                 :controls="false"
@@ -84,7 +84,7 @@
             </template>
             <template slot-scope="{ row, index }" slot="priceFour">
               <el-input-number
-                v-if="row.upAndDownShelves == 0"
+                v-if="row.upAndDownShelves == 0&&!loading"
                 v-model="row.priceFour"
                 label="请输入售价"
                 :controls="false"
@@ -307,7 +307,7 @@ export default {
       dataList: [],
       selectionList: [],
       page: {
-        pageSize: 20,
+        pageSize: 10,
         currentPage: 1,
         total: 0,
         pageSizes: [10, 20, 30, 40, 50, 100, 200, 300, 400, 500],
@@ -1034,11 +1034,10 @@ export default {
         .then((res) => {
           this.dataList = res.data.data.records;
           this.page.total = res.data.data.total;
-          this.pageList.total = res.data.data.total;
-          this.$nextTick(() => {
-            this.$refs.crud.doLayout();
-          });
-          this.loading = false;
+          // this.pageList.total = res.data.data.total;
+          // this.$nextTick(() => {
+          //   this.$refs.crud.doLayout();
+          // });
         })
         .finally(() => {
           this.loading = false;

+ 42 - 22
src/views/outboundWorkOrder/detailsPage.vue

@@ -94,6 +94,7 @@
                   v-model="row.sendNum"
                   :precision="numberDecimal"
                   :controls="false"
+                  :min="1"
                   :max="Number(row.goodsNum)"
                   style="width: 100%"
                 ></el-input-number>
@@ -379,10 +380,10 @@ export default {
         saveBtn: false, // 表格弹窗保存按钮
         cellBtn: false, // 行编辑
         sumColumnList: [
-          {
-            name: "goodsNum",
-            type: "sum",
-          },
+          // {
+          //   name: "goodsNum",
+          //   type: "sum",
+          // },
           {
             name: "sendNum",
             type: "sum",
@@ -398,40 +399,39 @@ export default {
           },
           {
             label: "商品编码",
-            disabled: true,
+            overHidden: true,
             prop: "goodsNo",
             width: 100,
           },
           {
             label: "品牌",
             prop: "brandName",
-            disabled: true,
             width: 100,
             overHidden: true,
           },
           {
             label: "规格型号",
             prop: "propertyName",
-            disabled: true,
+            overHidden: true,
             width: 100,
           },
           {
             label: "花纹",
             prop: "pattern",
-            disabled: true,
+            overHidden: true,
             width: 100,
           },
           {
             label: "商品描述",
             prop: "goodsDescription",
-            disabled: true,
+            overHidden: true,
           },
           {
             label: "批次号",
             prop: "dot",
             cell: true,
             type: "select",
-            disabled: true,
+            overHidden: true,
             dicData: [],
             props: {
               label: "dot",
@@ -443,7 +443,7 @@ export default {
             label: "单位",
             prop: "units",
             type: "select",
-            disabled: true,
+            overHidden: true,
             props: {
               label: "dictValue",
               value: "dictValue",
@@ -454,39 +454,35 @@ export default {
             label: "仓库",
             prop: "storageName",
             width: 100,
+            overHidden: true,
           },
           {
             label: "库区",
             prop: "reservoirArea",
             width: 100,
+            overHidden: true,
           },
           {
             label: "库存",
             prop: "inventory",
+            overHidden: true,
           },
           {
             label: "订单数量",
             prop: "goodsNum",
-            disabled: false,
+            overHidden: true,
           },
           {
             label: "发货数量",
             prop: "sendNum",
-            disabled: false,
+            overHidden: true,
           },
           {
             label: "备注",
             prop: "remarks",
-          },
-          {
-            label: "自有数",
-            prop: "sendNumHave",
-            overHidden: true,
-          },
-          {
-            label: "代采数",
-            prop: "sendNumFinancing",
+            width: 200,
             overHidden: true,
+            cell: true,
           },
         ],
       },
@@ -664,6 +660,16 @@ export default {
       this.$refs["form"].validate((valid, done) => {
         done();
         if (valid) {
+          let sum = 0;
+          for (let item of this.form.shipItemsList) {
+            if (!item.sendNum) {
+              return this.$message.error("发货数量请输入正整数");
+            }
+            sum += Number(item.sendNum);
+          }
+          if (sum > this.form.goodsTotalNum) {
+            return this.$message.error("发货数量之和不能超过订单数量:" + this.form.goodsTotalNum);
+          }
           const loading = this.$loading({
             lock: true,
             text: "加载中",
@@ -733,6 +739,16 @@ export default {
       this.$refs["form"].validate((valid, done) => {
         done();
         if (valid) {
+          let sum = 0;
+          for (let item of this.form.shipItemsList) {
+            if (!item.sendNum) {
+              return this.$message.error("发货数量请输入正整数");
+            }
+            sum += Number(item.sendNum);
+          }
+          if (sum > this.form.goodsTotalNum) {
+            return this.$message.error("发货数量之和不能超过订单数量:" + this.form.goodsTotalNum);
+          }
           const loading = this.$loading({
             lock: true,
             text: "加载中",
@@ -740,6 +756,7 @@ export default {
             background: "rgba(255,255,255,0.7)",
           });
           console.log(this.form);
+
           // 判断处理
           // if (this.form.statusName != '已出库') {
           //   for (let index in this.form.shipItemsList) {
@@ -916,4 +933,7 @@ export default {
 ::v-deep .el-form-item {
   margin-bottom: 8px !important;
 }
+::v-deep .avue-crud .el-form-item {
+  margin-bottom: 0px !important;
+}
 </style>

+ 19 - 11
src/views/outboundWorkOrder/index.vue

@@ -60,7 +60,7 @@
             :disabled="row.statusName != '待出库'"
             :type="type"
             @click="$refs.crud.rowDel(row, index)"
-            >删除</el-button
+            >撤销生成发货单</el-button
           >
         </template>
         <template slot="corpNameSearch">
@@ -160,7 +160,6 @@
               :min="0"
               size="small"
               style="width: 100%"
-              @blur="sendNumChange(row, index)"
             ></el-input-number>
           </template>
         </avue-crud>
@@ -251,9 +250,7 @@ export default {
       courierList: [],
       detailsOpen: false,
       loading: false,
-      search: {
-        statusName: "待出库",
-      },
+      search: {},
       query: {},
       form: {},
       dataList: [],
@@ -348,7 +345,7 @@ export default {
         searchMenuPosition: "right",
         align: "center",
         size: "small",
-        menuWidth: 100,
+        menuWidth: 120,
         searchSpan: 8,
         searchIcon: true,
         searchIndex: 2,
@@ -566,11 +563,21 @@ export default {
             overHidden: true,
           },
           {
-            label: "数量",
+            label: "订单数量",
             prop: "goodsNum",
             overHidden: true,
           },
           {
+            label: "已出库数量",
+            prop: "outGoodsTotalShipNum",
+            overHidden: true,
+          },
+          {
+            label: "未出库数量",
+            prop: "sendNum",
+            overHidden: true,
+          },
+          {
             label: "商品名称",
             prop: "goodsName",
             overHidden: true,
@@ -667,10 +674,10 @@ export default {
     handleClick(tab, event) {
       console.log(tab.name, event);
       if (tab.name == "待生成") {
-        this.query.statusName = tab.name;
+        // this.query.statusName = tab.name;
         this.onLoad2(this.page2, this.query);
       } else {
-        this.search.statusName = tab.name;
+        // this.search.statusName = tab.name;
         this.onLoad(this.page, this.search);
       }
     },
@@ -682,6 +689,7 @@ export default {
         size: page.pageSize,
         bizTypeName: "FHGD",
         ...Object.assign(params, this.search),
+        statusName:this.activeName==3?'':this.activeName,
       };
       this.loading = true;
       this.dataList.forEach((item) => {
@@ -842,8 +850,8 @@ export default {
       for (let item of this.generateData) {
         sum += Number(item.sendNum);
       }
-      if (sum > this.generateForm.goodsNum){
-        return this.$message.error("发货数量合计不能超过订单数量:"+this.generateForm.goodsNum);
+      if (sum > this.generateForm.sendNum){
+        return this.$message.error("发货数量合计不能超过订单数量:"+this.generateForm.sendNum);
       }
       let obj = {
         ...this.generateForm,

+ 25 - 50
src/views/saleOrder/detailsPage.vue

@@ -54,12 +54,12 @@
           撤销订单确认
         </el-button>
         <el-button
-          v-if="form.status == '已发货'"
+          v-if="form.status == '已发货' || form.status == '已收货'"
           class="el-button--small-yh"
           style="margin-left: 6px"
           type="info"
           size="small"
-          :disabled="form.status != '已发货' || form.returnsNumber == form.goodsTotalNum || editButton"
+          :disabled="editButton"
           @click="getReturns"
         >
           销售退货
@@ -240,9 +240,7 @@
                   v-model="row.goodsNum"
                   :precision="numberDecimal"
                   :controls="false"
-                  @change="goodsNumblurfun(row)"
                   :min="1"
-                  :max="Number(row.inventory)"
                   style="width: 100%"
                 ></el-input-number>
                 <span v-else>{{ row.goodsNum }}</span>
@@ -465,7 +463,6 @@
                   :min="1"
                   :controls="false"
                   :precision="numberDecimal"
-                  @input="amountChange($event, row)"
                   style="width: 100%"
                 />
               </template>
@@ -924,7 +921,6 @@ export default {
         orderItemsList: [],
         paymentRecordsList: [],
         outboundRecordsList: [],
-        freight: 5,
       },
       excelOption: {
         submitBtn: false,
@@ -1115,22 +1111,11 @@ export default {
             disabled: true,
           },
           {
-            label: "运费",
-            prop: "freight",
-            disabled: true,
-          },
-          {
             label: "总金额",
             prop: "totalMoney",
             disabled: true,
           },
           {
-            label: "余额抵扣",
-            prop: "paymentRecoveredBalance",
-            overHidden: true,
-            disabled: true,
-          },
-          {
             label: "已收金额",
             prop: "paymentAmountTl",
             disabled: true,
@@ -1168,8 +1153,8 @@ export default {
             prop: "remarks",
             type: "textarea",
             disabled: false,
-            span: 16,
-            minRows: 1,
+            span: 12,
+            minRows: 2,
           },
         ],
       },
@@ -1600,7 +1585,7 @@ export default {
       },
     };
   },
-  components: { SearchQuery, dicSelect,reportDialog},
+  components: { SearchQuery, dicSelect, reportDialog },
   props: {
     onLoad: Object,
     detailData: Object,
@@ -1753,10 +1738,6 @@ export default {
       this.isSaveBtn = false;
       this.viewDisabled = false;
       this.form.businessSource = "内部销售";
-      isProcurement({ param: "freight" }).then((res) => {
-        // res.data.data === '1'
-        this.form.freight = res.data.data;
-      });
     }
     if (this.detailData.check) {
       this.isExamineBtn = false;
@@ -1948,19 +1929,20 @@ export default {
     },
     //生成退货单
     getReturns() {
-      this.$confirm("您确定要退货吗?", {
-        confirmButtonText: "确定",
-        cancelButtonText: "取消",
-        type: "warning",
-      }).then(() => {
-        this.$router.push({
-          path: "/salesService/returns/index",
-          query: {
-            bsType: "TKXS",
-            id: this.form.id,
-          },
-        });
-      });
+       this.$message.error("开发中");
+      // this.$confirm("您确定要退货吗?", {
+      //   confirmButtonText: "确定",
+      //   cancelButtonText: "取消",
+      //   type: "warning",
+      // }).then(() => {
+      //   this.$router.push({
+      //     path: "/salesService/returns/index",
+      //     query: {
+      //       bsType: "TKXS",
+      //       id: this.form.id,
+      //     },
+      //   });
+      // });
     },
     // 店铺名称监听
     KHcorpChange(value) {
@@ -2069,7 +2051,7 @@ export default {
       done();
     },
     resetChange() {
-      this.treeDeptId=null
+      this.treeDeptId = null;
       this.$refs.tree.setCurrentKey(null);
     },
     dicChange(name, row) {
@@ -2095,11 +2077,11 @@ export default {
     },
     // 商品信息价格计算
     amountChange(value, row) {
-      if (value > 0) {
-        this.$refs.crud.toggleRowSelection(row, true);
-      } else {
-        this.$refs.crud.toggleRowSelection(row, false);
-      }
+      // if (value > 0) {
+      //   this.$refs.crud.toggleRowSelection(row, true);
+      // } else {
+      //   this.$refs.crud.toggleRowSelection(row, false);
+      // }
       // 价格
       // if (!row.price) {
       //     row.price = 0;
@@ -2274,13 +2256,6 @@ export default {
         }
       }
     },
-    // 数量失焦触发
-    goodsNumblurfun(row) {
-      if (Number(row.goodsNum) > Number(row.inventory)) {
-        this.$message.warning("不能大于库存数量");
-        return;
-      }
-    },
     editBtn(row, index) {
       this.confirmEditing();
       this.$refs.formContacts.rowEdit(row, index);

File diff suppressed because it is too large
+ 423 - 383
src/views/saleOrder/index.vue


Some files were not shown because too many files changed in this diff