Browse Source

修改bug

QuKatie 3 năm trước cách đây
mục cha
commit
3a9b7cd43f

+ 1 - 2
src/api/basicData/salesContract.js

@@ -1,5 +1,4 @@
 import request from '@/router/axios';
-
 export const getList = (current, size, params) => {
   return request({
     url: '/api/blade-purchase-sales/exportOrder/page',
@@ -84,4 +83,4 @@ export function getPorts() {
     url: '/api/blade-client/port/listPort',
     method: 'get',
   })
-}
+}

+ 1 - 1
src/api/exportTrade/purchaseContract.js

@@ -84,7 +84,7 @@ export function getPorts() {
 //获取系统号
 export function getSysNo() {
   return request({
-    url: '/api/trade-purchase/purchase-order/getSysNo?prefix=CK',
+    url: '/api/trade-purchase/purchase-order/getSysNo?prefix=CK-CG',
     method: 'get',
   })
 }

+ 0 - 2
src/components/fee-info/config/feeInfo.json

@@ -38,7 +38,6 @@
       "prop": "unit",
       "index": 4,
       "minWidth": 100,
-      "cell": false,
       "overHidden": true
     },
     {
@@ -53,7 +52,6 @@
       "prop": "amount",
       "index": 6,
       "minWidth": 100,
-      "cell": false,
       "overHidden": true
     },
     {

+ 14 - 3
src/components/fee-info/main.vue

@@ -47,7 +47,7 @@
             oninput='this.value=this.value.replace(/[^(\d.)]/g,"").replace(/^(\d+)\.(\d\d).*$/, "$1.$2")'
             @change="priceChange(row)"
           ></el-input>
-          <span v-else>{{ row.price }}</span>
+          <span v-else>{{ row.price | micrometerFormat }}</span>
         </template>
         <template slot="quantity" slot-scope="{ row }">
           <el-input
@@ -59,6 +59,9 @@
           ></el-input>
           <span v-else>{{ row.quantity }}</span>
         </template>
+        <template slot="amount" slot-scope="{ row }">
+          <span>{{ row.amount | micrometerFormat }}</span>
+        </template>
         <template slot="exchangeRate" slot-scope="{ row }">
           <el-input
             v-if="row.$cellEdit"
@@ -68,7 +71,7 @@
             @change="rateChange(row)"
             placeholder="请输入"
           ></el-input>
-          <span v-else>{{ row.exchangeRate }}</span>
+          <span v-else>{{ row.exchangeRate | isPercentage }}</span>
         </template>
       </avue-crud>
     </basic-container>
@@ -95,7 +98,6 @@
           </div>
         </el-col>
         <el-col :span="19">
-          {{reData}}
           <avue-crud
             :option="option"
             :table-loading="loading"
@@ -130,6 +132,7 @@ import feeOption from "./config/feeInfo.json";
 import option from "./config/feeList.json";
 import { getDeptLazyTree, customerList } from "@/api/basicData/basicFeesDesc";
 import { delItem } from "@/api/feeInfo/fee-info";
+import { isPercentage, micrometerFormat } from "@/util/validate";
 import _ from "lodash";
 export default {
   name: "feeInfo",
@@ -188,6 +191,14 @@ export default {
       type: String
     }
   },
+  filters: {
+    isPercentage(val) {
+      return isPercentage(val);
+    },
+    micrometerFormat(val) {
+      return micrometerFormat(val);
+    }
+  },
   methods: {
     rowDel(row, index) {
       console.log(row, index);

+ 188 - 163
src/util/validate.js

@@ -1,23 +1,48 @@
 /**
+ * 单数据转千分符
+ *
+ * @export
+ * @param {*} num 数值
+ * @returns
+ */
+export function micrometerFormat(num) {
+  num = num ? Number(num).toFixed(2) : 0.00
+  return (
+    num && num.toString().replace(/\d+/, function (s) {
+      return s.replace(/(\d)(?=(\d{3})+$)/g, '$1,');
+    })
+  );
+}
+// 百分比
+export function isPercentage(val) {
+  const num = val ? Number(val).toFixed(2) : 0.00
+  return num + '%'
+}
+// 折扣
+export function isDiscount(val) {
+  const num = val ? Number(val) : 0
+  return num + '折'
+}
+/**
  * Created by jiachenpan on 16/11/18.
  */
 
 export function isvalidUsername(str) {
-    const valid_map = ['admin', 'editor']
-    return valid_map.indexOf(str.trim()) >= 0
+  const valid_map = ['admin', 'editor']
+  return valid_map.indexOf(str.trim()) >= 0
 }
 
 /* 合法uri*/
 export function validateURL(textval) {
-    const urlregex = /^(https?|ftp):\/\/([a-zA-Z0-9.-]+(:[a-zA-Z0-9.&%$-]+)*@)*((25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9][0-9]?)(\.(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])){3}|([a-zA-Z0-9-]+\.)*[a-zA-Z0-9-]+\.(com|edu|gov|int|mil|net|org|biz|arpa|info|name|pro|aero|coop|museum|[a-zA-Z]{2}))(:[0-9]+)*(\/($|[a-zA-Z0-9.,?'\\+&%$#=~_-]+))*$/
-    return urlregex.test(textval)
+  const urlregex = /^(https?|ftp):\/\/([a-zA-Z0-9.-]+(:[a-zA-Z0-9.&%$-]+)*@)*((25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9][0-9]?)(\.(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])){3}|([a-zA-Z0-9-]+\.)*[a-zA-Z0-9-]+\.(com|edu|gov|int|mil|net|org|biz|arpa|info|name|pro|aero|coop|museum|[a-zA-Z]{2}))(:[0-9]+)*(\/($|[a-zA-Z0-9.,?'\\+&%$#=~_-]+))*$/
+  return urlregex.test(textval)
 }
 /**
  * 邮箱
  * @param {*} s
  */
 export function isEmail(s) {
-    return /^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+((.[a-zA-Z0-9_-]{2,3}){1,2})$/.test(s)
+  return /^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+((.[a-zA-Z0-9_-]{2,3}){1,2})$/.test(s)
 }
 
 /**
@@ -25,7 +50,7 @@ export function isEmail(s) {
  * @param {*} s
  */
 export function isMobile(s) {
-    return /^1[0-9]{10}$/.test(s)
+  return /^1[0-9]{10}$/.test(s)
 }
 
 /**
@@ -33,7 +58,7 @@ export function isMobile(s) {
  * @param {*} s
  */
 export function isPhone(s) {
-    return /^([0-9]{3,4}-)?[0-9]{7,8}$/.test(s)
+  return /^([0-9]{3,4}-)?[0-9]{7,8}$/.test(s)
 }
 
 /**
@@ -41,214 +66,214 @@ export function isPhone(s) {
  * @param {*} s
  */
 export function isURL(s) {
-    return /^http[s]?:\/\/.*/.test(s)
+  return /^http[s]?:\/\/.*/.test(s)
 }
 
 /* 小写字母*/
 export function validateLowerCase(str) {
-    const reg = /^[a-z]+$/
-    return reg.test(str)
+  const reg = /^[a-z]+$/
+  return reg.test(str)
 }
 
 /* 大写字母*/
 export function validateUpperCase(str) {
-    const reg = /^[A-Z]+$/
-    return reg.test(str)
+  const reg = /^[A-Z]+$/
+  return reg.test(str)
 }
 
 /* 大小写字母*/
 export function validatAlphabets(str) {
-    const reg = /^[A-Za-z]+$/
-    return reg.test(str)
+  const reg = /^[A-Za-z]+$/
+  return reg.test(str)
 }
 /*验证pad还是pc*/
-export const vaildatePc = function() {
-        const userAgentInfo = navigator.userAgent;
-        const Agents = ["Android", "iPhone",
-            "SymbianOS", "Windows Phone",
-            "iPad", "iPod"
-        ];
-        let flag = true;
-        for (var v = 0; v < Agents.length; v++) {
-            if (userAgentInfo.indexOf(Agents[v]) > 0) {
-                flag = false;
-                break;
-            }
-        }
-        return flag;
+export const vaildatePc = function () {
+  const userAgentInfo = navigator.userAgent;
+  const Agents = ["Android", "iPhone",
+    "SymbianOS", "Windows Phone",
+    "iPad", "iPod"
+  ];
+  let flag = true;
+  for (var v = 0; v < Agents.length; v++) {
+    if (userAgentInfo.indexOf(Agents[v]) > 0) {
+      flag = false;
+      break;
     }
-    /**
-     * validate email
-     * @param email
-     * @returns {boolean}
-     */
+  }
+  return flag;
+}
+/**
+ * validate email
+ * @param email
+ * @returns {boolean}
+ */
 export function validateEmail(email) {
-    const re = /^(([^<>()\\[\]\\.,;:\s@"]+(\.[^<>()\\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/
-    return re.test(email)
+  const re = /^(([^<>()\\[\]\\.,;:\s@"]+(\.[^<>()\\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/
+  return re.test(email)
 }
 
 /**
  * 判断身份证号码
  */
 export function cardid(code) {
-    let list = [];
-    let result = true;
-    let msg = '';
-    var city = {
-        11: "北京",
-        12: "天津",
-        13: "河北",
-        14: "山西",
-        15: "内蒙古",
-        21: "辽宁",
-        22: "吉林",
-        23: "黑龙江 ",
-        31: "上海",
-        32: "江苏",
-        33: "浙江",
-        34: "安徽",
-        35: "福建",
-        36: "江西",
-        37: "山东",
-        41: "河南",
-        42: "湖北 ",
-        43: "湖南",
-        44: "广东",
-        45: "广西",
-        46: "海南",
-        50: "重庆",
-        51: "四川",
-        52: "贵州",
-        53: "云南",
-        54: "西藏 ",
-        61: "陕西",
-        62: "甘肃",
-        63: "青海",
-        64: "宁夏",
-        65: "新疆",
-        71: "台湾",
-        81: "香港",
-        82: "澳门",
-        91: "国外 "
-    };
-    if (!validatenull(code)) {
-        if (code.length == 18) {
-            if (!code || !/(^\d{18}$)|(^\d{17}(\d|X|x)$)/.test(code)) {
-                msg = "证件号码格式错误";
-            } else if (!city[code.substr(0, 2)]) {
-                msg = "地址编码错误";
-            } else {
-                //18位身份证需要验证最后一位校验位
-                code = code.split('');
-                //∑(ai×Wi)(mod 11)
-                //加权因子
-                var factor = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2];
-                //校验位
-                var parity = [1, 0, 'X', 9, 8, 7, 6, 5, 4, 3, 2, 'x'];
-                var sum = 0;
-                var ai = 0;
-                var wi = 0;
-                for (var i = 0; i < 17; i++) {
-                    ai = code[i];
-                    wi = factor[i];
-                    sum += ai * wi;
-                }
-                if (parity[sum % 11] != code[17]) {
-                    msg = "证件号码校验位错误";
-                } else {
-                    result = false;
-                }
-
-            }
+  let list = [];
+  let result = true;
+  let msg = '';
+  var city = {
+    11: "北京",
+    12: "天津",
+    13: "河北",
+    14: "山西",
+    15: "内蒙古",
+    21: "辽宁",
+    22: "吉林",
+    23: "黑龙江 ",
+    31: "上海",
+    32: "江苏",
+    33: "浙江",
+    34: "安徽",
+    35: "福建",
+    36: "江西",
+    37: "山东",
+    41: "河南",
+    42: "湖北 ",
+    43: "湖南",
+    44: "广东",
+    45: "广西",
+    46: "海南",
+    50: "重庆",
+    51: "四川",
+    52: "贵州",
+    53: "云南",
+    54: "西藏 ",
+    61: "陕西",
+    62: "甘肃",
+    63: "青海",
+    64: "宁夏",
+    65: "新疆",
+    71: "台湾",
+    81: "香港",
+    82: "澳门",
+    91: "国外 "
+  };
+  if (!validatenull(code)) {
+    if (code.length == 18) {
+      if (!code || !/(^\d{18}$)|(^\d{17}(\d|X|x)$)/.test(code)) {
+        msg = "证件号码格式错误";
+      } else if (!city[code.substr(0, 2)]) {
+        msg = "地址编码错误";
+      } else {
+        //18位身份证需要验证最后一位校验位
+        code = code.split('');
+        //∑(ai×Wi)(mod 11)
+        //加权因子
+        var factor = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2];
+        //校验位
+        var parity = [1, 0, 'X', 9, 8, 7, 6, 5, 4, 3, 2, 'x'];
+        var sum = 0;
+        var ai = 0;
+        var wi = 0;
+        for (var i = 0; i < 17; i++) {
+          ai = code[i];
+          wi = factor[i];
+          sum += ai * wi;
+        }
+        if (parity[sum % 11] != code[17]) {
+          msg = "证件号码校验位错误";
         } else {
-            msg = "证件号码长度不为18位";
+          result = false;
         }
 
+      }
     } else {
-        msg = "证件号码不能为空";
+      msg = "证件号码长度不为18位";
     }
-    list.push(result);
-    list.push(msg);
-    return list;
+
+  } else {
+    msg = "证件号码不能为空";
+  }
+  list.push(result);
+  list.push(msg);
+  return list;
 }
 /**
  * 判断手机号码是否正确
  */
 export function isvalidatemobile(phone) {
-    let list = [];
-    let result = true;
-    let msg = '';
-    var isPhone = /^0\d{2,3}-?\d{7,8}$/;
-    //增加134 减少|1349[0-9]{7},增加181,增加145,增加17[678]  
-    if (!validatenull(phone)) {
-        if (phone.length == 11) {
-            if (isPhone.test(phone)) {
-                msg = '手机号码格式不正确';
-            } else {
-                result = false;
-            }
-        } else {
-            msg = '手机号码长度不为11位';
-        }
+  let list = [];
+  let result = true;
+  let msg = '';
+  var isPhone = /^0\d{2,3}-?\d{7,8}$/;
+  //增加134 减少|1349[0-9]{7},增加181,增加145,增加17[678]  
+  if (!validatenull(phone)) {
+    if (phone.length == 11) {
+      if (isPhone.test(phone)) {
+        msg = '手机号码格式不正确';
+      } else {
+        result = false;
+      }
     } else {
-        msg = '手机号码不能为空';
+      msg = '手机号码长度不为11位';
     }
-    list.push(result);
-    list.push(msg);
-    return list;
+  } else {
+    msg = '手机号码不能为空';
+  }
+  list.push(result);
+  list.push(msg);
+  return list;
 }
 /**
  * 判断姓名是否正确
  */
 export function validatename(name) {
-    var regName = /^[\u4e00-\u9fa5]{2,10}$/;
-    console.log(!regName.test(name))
-    if (!regName.test(name)) return true;
-    return false;
+  var regName = /^[\u4e00-\u9fa5]{2,10}$/;
+  console.log(!regName.test(name))
+  if (!regName.test(name)) return true;
+  return false;
 }
 /**
  * 判断是否为整数
  */
 export function validatenum(num, type) {
-    let regName = /[^\d.]/g;
-    if (type == 1) {
-        if (!regName.test(num)) return false;
-    } else if (type == 2) {
-        regName = /[^\d]/g;
-        if (!regName.test(num)) return false;
-    }
-    return true;
+  let regName = /[^\d.]/g;
+  if (type == 1) {
+    if (!regName.test(num)) return false;
+  } else if (type == 2) {
+    regName = /[^\d]/g;
+    if (!regName.test(num)) return false;
+  }
+  return true;
 }
 /**
  * 判断是否为小数
  */
 export function validatenumord(num, type) {
-    let regName = /[^\d.]/g;
-    if (type == 1) {
-        if (!regName.test(num)) return false;
-    } else if (type == 2) {
-        regName = /[^\d.]/g;
-        if (!regName.test(num)) return false;
-    }
-    return true;
+  let regName = /[^\d.]/g;
+  if (type == 1) {
+    if (!regName.test(num)) return false;
+  } else if (type == 2) {
+    regName = /[^\d.]/g;
+    if (!regName.test(num)) return false;
+  }
+  return true;
 }
 /**
  * 判断是否为空
  */
 export function validatenull(val) {
-    if (typeof val == 'boolean') {
-        return false;
-    }
-    if (typeof val == 'number') {
-        return false;
-    }
-    if (val instanceof Array) {
-        if (val.length == 0) return true;
-    } else if (val instanceof Object) {
-        if (JSON.stringify(val) === '{}') return true;
-    } else {
-        if (val == 'null' || val == null || val == 'undefined' || val == undefined || val == '') return true;
-        return false;
-    }
+  if (typeof val == 'boolean') {
     return false;
-}
+  }
+  if (typeof val == 'number') {
+    return false;
+  }
+  if (val instanceof Array) {
+    if (val.length == 0) return true;
+  } else if (val instanceof Object) {
+    if (JSON.stringify(val) === '{}') return true;
+  } else {
+    if (val == 'null' || val == null || val == 'undefined' || val == undefined || val == '') return true;
+    return false;
+  }
+  return false;
+}

+ 50 - 30
src/views/exportTrade/customerInquiry/config/customerContact.json

@@ -5,7 +5,7 @@
   "index": true,
   "viewBtn": false,
   "editBtn": false,
-  "addBtn":false,
+  "addBtn": false,
   "align": "center",
   "menuWidth": 80,
   "refreshBtn": false,
@@ -14,28 +14,28 @@
       "prop": "priceCategory",
       "index": 1,
       "minWidth": 80,
-      "overHidden":true
+      "overHidden": true
     },
     {
       "label": "产品编号",
       "prop": "code",
       "index": 2,
       "minWidth": 80,
-      "overHidden":true
+      "overHidden": true
     },
     {
       "label": "产品名称",
       "prop": "cname",
       "index": 3,
       "minWidth": 80,
-      "overHidden":true
+      "overHidden": true
     },
     {
       "label": "产品属性",
       "prop": "itemProp",
       "index": 4,
       "minWidth": 80,
-      "overHidden":true,
+      "overHidden": true,
       "cell": true,
       "type": "select",
       "dicUrl": "/api/blade-system/dict-biz/dictionary?code=product_properties",
@@ -49,15 +49,15 @@
       "prop": "itemUrl",
       "index": 5,
       "minWidth": 80,
-      "overHidden":true,
-      "hide":true
+      "overHidden": true,
+      "hide": true
     },
     {
       "label": "产品描述",
       "prop": "itemDescription",
       "index": 6,
       "minWidth": 80,
-      "overHidden":true,
+      "overHidden": true,
       "cell": true
     },
     {
@@ -68,18 +68,18 @@
       "cell": true
     },
     {
-      "label": "数量",
-      "prop": "orderQuantity",
+      "label": "单价",
+      "prop": "price",
       "index": 8,
-      "minWidth": 60,
-      "overHidden":true
+      "minWidth": 80,
+      "overHidden": true
     },
     {
       "label": "计价单位",
       "prop": "unit",
       "index": 9,
       "minWidth": 80,
-      "overHidden":true,
+      "overHidden": true,
       "cell": true,
       "type": "select",
       "dicUrl": "/api/blade-system/dict-biz/dictionary?code=unit",
@@ -89,11 +89,18 @@
       }
     },
     {
+      "label": "数量",
+      "prop": "orderQuantity",
+      "index": 10,
+      "minWidth": 80,
+      "overHidden": true
+    },
+    {
       "label": "价格条款",
       "prop": "tradeTerms",
-      "index": 10,
+      "index": 11,
       "minWidth": 80,
-      "overHidden":true,
+      "overHidden": true,
       "cell": true,
       "type": "select",
       "dicUrl": "/api/blade-system/dict-biz/dictionary?code=pricing_terms",
@@ -103,33 +110,46 @@
       }
     },
     {
-      "label": "单价",
-      "prop": "price",
-      "index": 11,
-      "minWidth": 60,
-      "overHidden":true
-    },
-    {
       "label": "金额",
       "prop": "amount",
       "index": 12,
-      "minWidth": 60,
-      "overHidden":true
+      "minWidth": 80,
+      "overHidden": true
     },
     {
       "label": "税率",
       "prop": "taxRate",
       "index": 13,
-      "minWidth": 60,
-      "overHidden":true,
-      "cell": true
+      "minWidth": 80,
+      "overHidden": true
+    },
+    {
+      "label": "保险",
+      "prop": "insurance",
+      "index": 14,
+      "minWidth": 80,
+      "overHidden": true
+    },
+    {
+      "label": "运费",
+      "prop": "freight",
+      "index": 15,
+      "minWidth": 80,
+      "overHidden": true
+    },
+    {
+      "label": "折扣",
+      "prop": "discount",
+      "index": 16,
+      "minWidth": 80,
+      "overHidden": true
     },
     {
       "label": "备注",
       "prop": "remarks",
-      "index": 14,
-      "minWidth": 60,
-      "overHidden":true,
+      "index": 17,
+      "minWidth": 100,
+      "overHidden": true,
       "cell": true
     }
   ]

+ 71 - 48
src/views/exportTrade/customerInquiry/detailsPage.vue

@@ -115,7 +115,10 @@
               oninput='this.value=this.value.replace(/[^(\d.)]/g,"").replace(/^(\d+)\.(\d\d).*$/, "$1.$2")'
               @change="priceChange(row)"
             ></el-input>
-            <span v-else>{{ row.price }}</span>
+            <span v-else>{{ row.price | micrometerFormat }}</span>
+          </template>
+          <template slot="amount" slot-scope="{ row }">
+            <span>{{ row.amount | micrometerFormat }}</span>
           </template>
           <template slot="orderQuantity" slot-scope="{ row }">
             <el-input
@@ -127,6 +130,44 @@
             ></el-input>
             <span v-else>{{ row.orderQuantity }}</span>
           </template>
+          <template slot="discount" slot-scope="{ row }">
+            <el-input
+              v-if="row.$cellEdit"
+              v-model="row.discount"
+              size="small"
+              oninput='this.value=this.value.replace(/[^(\d.)]/g,"").replace(/^(\d+)\.(\d\d).*$/, "$1.$2")'
+              @change="discountChange(row)"
+            ></el-input>
+            <span v-else>{{ row.discount | isDiscount }}</span>
+          </template>
+          <template slot="insurance" slot-scope="{ row }">
+            <el-input
+              v-if="row.$cellEdit"
+              v-model="row.insurance"
+              size="small"
+              oninput='this.value=this.value.replace(/[^(\d.)]/g,"").replace(/^(\d+)\.(\d\d).*$/, "$1.$2")'
+            ></el-input>
+            <span v-else>{{ row.insurance | micrometerFormat }}</span>
+          </template>
+          <template slot="freight" slot-scope="{ row }">
+            <el-input
+              v-if="row.$cellEdit"
+              v-model="row.freight"
+              size="small"
+              oninput='this.value=this.value.replace(/[^(\d.)]/g,"").replace(/^(\d+)\.(\d\d).*$/, "$1.$2")'
+            ></el-input>
+            <span v-else>{{ row.freight | micrometerFormat }}</span>
+          </template>
+          <template slot="taxRate" slot-scope="{ row }">
+            <el-input
+              v-if="row.$cellEdit"
+              v-model="row.taxRate"
+              size="small"
+              oninput='this.value=this.value.replace(/[^(\d.)]/g,"").replace(/^(\d+)\.(\d\d).*$/, "$1.$2")'
+              @change="taxRateChange(row)"
+            ></el-input>
+            <span v-else>{{ row.taxRate | isPercentage }}</span>
+          </template>
         </avue-crud>
       </basic-container>
       <fee-info
@@ -209,35 +250,15 @@ import {
   getPorts
 } from "@/api/basicData/customerInquiry";
 import reportDialog from "@/components/report-dialog/main";
-import { isvalidatemobile, validatename } from "@/util/validate";
+import {
+  isDiscount,
+  isPercentage,
+  micrometerFormat
+} from "@/util/validate";
 import _ from "lodash";
 export default {
   name: "detailsPageEdit",
   data() {
-    const validatePhone = (rule, value, callback) => {
-      if (value != "") {
-        if (isvalidatemobile(value)[0]) {
-          this.$message.error("手机号码格式不正确");
-          callback(new Error(isvalidatemobile(value)[1]));
-        } else {
-          callback();
-        }
-      } else {
-        callback();
-      }
-    };
-    const validateName = (rule, value, callback) => {
-      if (value != "") {
-        if (validatename(value)) {
-          this.$message.error("联系人格式不正确");
-          callback(new Error(validatename(value)));
-        } else {
-          callback();
-        }
-      } else {
-        callback();
-      }
-    };
     return {
       configuration: {
         multipleChoices: false,
@@ -288,13 +309,11 @@ export default {
             label: "联系人",
             prop: "corpAttn",
             span: 8,
-            rules: [{ validator: validateName, trigger: "blur" }]
           },
           {
             label: "电话",
             prop: "corpTel",
             span: 8,
-            rules: [{ validator: validatePhone, trigger: "blur" }]
           },
           {
             label: "起运港",
@@ -460,31 +479,23 @@ export default {
     if (this.detailData.status == 1) {
       this.option.disabled = true;
     }
-    let _this = this;
-    this.tableOption.column.forEach(e => {
-      if (e.prop == "taxRate") {
-        e.formatter = function(row) {
-          return _this.textFormat(
-            Number(row.taxRate ? row.taxRate : 0) / 100,
-            "0.00%"
-          );
-        };
-      }
-      if (e.prop == "amount" || e.prop == "price") {
-        e.formatter = function(row) {
-          return _this.textFormat(
-            Number(row.amount ? row.amount : 0),
-            "#,##0.00"
-          );
-        };
-      }
-    });
     getPorts().then(res => {
       this.findObject(this.option.column, "portOfLoad").dicData = res.data;
       this.findObject(this.option.column, "portOfDestination").dicData =
         res.data;
     });
   },
+  filters: {
+    isDiscount(val) {
+      return isDiscount(val);
+    },
+    isPercentage(val) {
+      return isPercentage(val);
+    },
+    micrometerFormat(val) {
+      return micrometerFormat(val);
+    }
+  },
   methods: {
     priceChange(row) {
       if (!row.price) {
@@ -493,6 +504,18 @@ export default {
         row.amount = _.multiply(row.price, row.orderQuantity).toFixed(2);
       }
     },
+    discountChange(row) {
+      if (row.discount >= 10) {
+        row.discount = 0;
+        this.$message.error("请正确输入折扣");
+      }
+    },
+    taxRateChange(row) {
+      if (row.taxRate > 100) {
+        row.taxRate = 0;
+        this.$message.error("请正确输入税率");
+      }
+    },
     quantityChange(row) {
       if (!row.orderQuantity) {
         row.orderQuantity = 0;
@@ -651,10 +674,10 @@ export default {
             orderFeesList: orderFeesList
           }).then(res => {
             if (res.data.code == 200) {
+              this.$message.success(this.form.id ? "修改成功" : "提交成功");
               this.form = res.data.data;
               this.data = res.data.data.orderItemsList;
               this.orderFeesList = res.data.data.orderFeesList;
-              this.$message.success(this.form.id ? "修改成功" : "提交成功");
             }
           });
         } else {

+ 17 - 0
src/views/exportTrade/customerInquiry/index.vue

@@ -21,6 +21,18 @@
         <template slot="portOfDestinationSearch">
           <port-info v-model="search.portOfDestination" />
         </template>
+        <template slot="businesDateSearch">
+          <el-date-picker
+            v-model="search.businesDate"
+            type="daterange"
+            start-placeholder="开始日期"
+            end-placeholder="结束日期"
+            format="yyyy-MM-dd"
+            value-format="yyyy-MM-dd HH:mm:ss"
+            :default-time="['00:00:00', '23:59:59']"
+          >
+          </el-date-picker>
+        </template>
         <template slot="menuLeft">
           <el-button
             type="primary"
@@ -157,6 +169,11 @@ export default {
     },
     //点击搜索按钮触发
     searchChange(params, done) {
+      if (params.businesDate) {
+        params.orderStartDate = params.businesDate[0];
+        params.orderEndDate = params.businesDate[1];
+      }
+      delete params.businesDate;
       this.page.currentPage = 1;
       this.onLoad(this.page, params);
       done();

+ 1 - 1
src/views/exportTrade/invoice/detailsPage.vue

@@ -574,11 +574,11 @@ export default {
             deliveryFeesList: orderFeesList,
             deliveryFilesList: orderFilesList
           }).then(res => {
+            this.$message.success(this.form.id ? "修改成功" : "提交成功");
             this.form = res.data.data;
             this.data = res.data.data.deliveryItemsList;
             this.orderFeesList = res.data.data.deliveryFeesList;
             this.orderFilesList = res.data.data.deliveryFilesList;
-            this.$message.success(this.form.id ? "修改成功" : "提交成功");
           });
         } else {
           return false;

+ 38 - 2
src/views/exportTrade/invoice/index.vue

@@ -1,6 +1,5 @@
 <template>
   <div>
-    {{ show }}
     <basic-container v-if="show">
       <avue-crud
         ref="crud"
@@ -16,6 +15,33 @@
         @on-load="onLoad"
         :table-loading="loading"
       >
+        <template slot-scope="scope" slot="corpId">
+          {{ scope.row.corpsName }}
+        </template>
+        <template slot="businessDateSearch">
+          <el-date-picker
+            v-model="search.businessDate"
+            type="daterange"
+            start-placeholder="开始日期"
+            end-placeholder="结束日期"
+            format="yyyy-MM-dd"
+            value-format="yyyy-MM-dd HH:mm:ss"
+            :default-time="['00:00:00', '23:59:59']"
+          >
+          </el-date-picker>
+        </template>
+        <template slot="createTimeSearch">
+          <el-date-picker
+            v-model="search.createTime"
+            type="daterange"
+            start-placeholder="开始日期"
+            end-placeholder="结束日期"
+            format="yyyy-MM-dd"
+            value-format="yyyy-MM-dd HH:mm:ss"
+            :default-time="['00:00:00', '23:59:59']"
+          >
+          </el-date-picker>
+        </template>
         <template slot="menuLeft">
           <el-button
             type="primary"
@@ -121,7 +147,7 @@ export default {
   activated() {
     //当页面已打开并无法重新渲染时,用activated重新激活keepalive组件
     setTimeout(() => {
-      if (this.$route.query.pageType == "Generate"&&this.show) {
+      if (this.$route.query.pageType == "Generate" && this.show) {
         this.newAdd();
       }
     }, 100);
@@ -160,6 +186,16 @@ export default {
     },
     //点击搜索按钮触发
     searchChange(params, done) {
+      if (params.businessDate) {
+        params.businessStartDate = params.businessDate[0];
+        params.businessEndDate = params.businessDate[1];
+      }
+      if (params.createTime) {
+        params.createStartTime = params.createTime[0];
+        params.createEndTime = params.createTime[1];
+      }
+      delete params.businessDate;
+      delete params.createTime
       this.page.currentPage = 1;
       this.onLoad(this.page, params);
       done();

+ 2 - 2
src/views/exportTrade/purchaseContract/detailsPage.vue

@@ -494,7 +494,7 @@ export default {
         };
       }
     });
-    if (this.$route.query.pageType == "new") {
+    if (this.detailData.pageType == "new") {
       getSysNo().then(res => {
         this.form.sysNo = res.data.data;
       });
@@ -653,8 +653,8 @@ export default {
             tradeType: "CK",
             billType: "CG"
           }).then(res => {
-            this.form.id = res.data.data;
             this.$message.success(this.form.id ? "修改成功" : "提交成功");
+            this.form.id = res.data.data;
           });
         } else {
           return false;

+ 5 - 2
src/views/exportTrade/purchaseContract/index.vue

@@ -20,7 +20,7 @@
             type="primary"
             icon="el-icon-plus"
             size="small"
-            @click.stop="newAdd()"
+            @click.stop="newAdd('new')"
             >新单</el-button
           >
           <el-button type="success" size="small" disabled>复制新单</el-button>
@@ -215,7 +215,10 @@ export default {
     refreshChange() {
       this.onLoad(this.page, this.search);
     },
-    newAdd() {
+    newAdd(type) {
+      this.detailData = {
+        pageType: type
+      };
       this.show = false;
     },
     goBack() {

+ 1 - 1
src/views/exportTrade/purchaseInquiry/detailsPage.vue

@@ -559,7 +559,7 @@ export default {
       console.log(id);
       detail(id).then(res => {
         this.form = res.data.data;
-        this.data = res.data.data.itemsVOList;
+        this.data = res.data.data.itemsVOList?res.data.data.itemsVOList:[];
         this.configuration.dicData = this.form.corpsName;
       });
     },

+ 17 - 1
src/views/exportTrade/salesContract/index.vue

@@ -37,7 +37,18 @@
         <template slot="portOfDestinationSearch">
           <port-info v-model="search.portOfDestination" />
         </template>
-
+        <template slot="businesDateSearch">
+          <el-date-picker
+            v-model="search.businesDate"
+            type="daterange"
+            start-placeholder="开始日期"
+            end-placeholder="结束日期"
+            format="yyyy-MM-dd"
+            value-format="yyyy-MM-dd HH:mm:ss"
+            :default-time="['00:00:00', '23:59:59']"
+          >
+          </el-date-picker>
+        </template>
         <template slot-scope="scope" slot="corpId">
           {{ scope.row.corpsName }}
         </template>
@@ -162,6 +173,11 @@ export default {
     },
     //点击搜索按钮触发
     searchChange(params, done) {
+      if (params.businesDate) {
+        params.orderStartDate = params.businesDate[0];
+        params.orderEndDate = params.businesDate[1];
+      }
+      delete params.businesDate
       this.page.currentPage = 1;
       this.onLoad(this.page, params);
       done();